<?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>233515</bug_id>
          
          <creation_ts>2021-11-26 00:25:45 -0800</creation_ts>
          <short_desc>GraphicsContextGLANGLE.cpp has platform specific code</short_desc>
          <delta_ts>2021-11-29 12:51:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>WebKit Local 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>
          
          <blocked>221664</blocked>
    
    <blocked>233589</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kkinnunen</reporter>
          <assigned_to name="Kimmo Kinnunen">kkinnunen</assigned_to>
          <cc>annulen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kbr</cc>
    
    <cc>kkinnunen</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>luiz</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1817908</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 00:25:45 -0800</bug_when>
    <thetext>GraphicsContextGLANGLE.cpp has platform specific code

This should be invoked through virtual functions and the code should be moved to the platform specific implementations
This way platform specific implementation like GraphicsContextGLOpenGL Cocoa flavour can be in future be called GraphicsContextGLCocoa, since GraphicsContextGLOpenGL and GraphicsContextGLANGLE would be also separate classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817909</commentid>
    <comment_count>1</comment_count>
      <attachid>445175</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 00:30:35 -0800</bug_when>
    <thetext>Created attachment 445175
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817937</commentid>
    <comment_count>2</comment_count>
      <attachid>445186</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 03:27:56 -0800</bug_when>
    <thetext>Created attachment 445186
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817948</commentid>
    <comment_count>3</comment_count>
      <attachid>445190</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 05:19:18 -0800</bug_when>
    <thetext>Created attachment 445190
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817950</commentid>
    <comment_count>4</comment_count>
      <attachid>445191</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 05:24:15 -0800</bug_when>
    <thetext>Created attachment 445191
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817956</commentid>
    <comment_count>5</comment_count>
      <attachid>445195</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 05:53:35 -0800</bug_when>
    <thetext>Created attachment 445195
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1817957</commentid>
    <comment_count>6</comment_count>
      <attachid>445196</attachid>
    <who name="Kimmo Kinnunen">kkinnunen</who>
    <bug_when>2021-11-26 05:58:21 -0800</bug_when>
    <thetext>Created attachment 445196
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818151</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-29 01:41:26 -0800</bug_when>
    <thetext>Committed r286205 (244587@main): &lt;https://commits.webkit.org/244587@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 445196.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818152</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-29 01:42:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/85803889&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1818419</commentid>
    <comment_count>9</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2021-11-29 12:51:05 -0800</bug_when>
    <thetext>This change broke WinCairo WebGL tests.
Filed: Bug 233589 – REGRESSION(r286205) [WinCairo] WebGL tests are failing</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445175</attachid>
            <date>2021-11-26 00:30:35 -0800</date>
            <delta_ts>2021-11-26 03:27:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233515-20211126103033.patch</filename>
            <type>text/plain</type>
            <size>9861</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2YzJiMzUwZjRjZDY3
ZTc3ZDRmMDQ3YTRhOTRiZTkyYTJiNGJlNy4uZTlmNGE2MzNjY2JjYjM2NjBjYWRkOWE5YTVmYTQ4
OTY4MDdmNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaGFzIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGZvciBtb2RpZnlpbmcKKyAgICAgICAgdGhl
IGRpc3BsYXkgYnVmZmVyIGJhY2tpbmcgc3RvcmFnZSAoSU9TdXJmYWNlIG9uIENvY29hLAorICAg
ICAgICBub3JtYWwgdGV4dHVyZSBvbiBUZXh0dXJlTWFwcGVyIHZhcmlhbnRzKS4KKyAgICAgICAg
VGhpcyBtb2RpZmljYXRpb24gc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgcmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nCisgICAgICAgIG1ldGhvZCBjYWxsIGZvciBhbGwgaW1wbGVtZW50YXRp
b25zLCBzbyB0aGF0IGluIHRoZSBmdXR1cmUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgQU5HTEUgdmFyaWFudCBjYW4gYmUgcmVuYW1lZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFCisg
ICAgICAgIGFuZCBzdGlsbCBpbnZva2UgdGhhdCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOgorCiAyMDIxLTExLTI1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYW5nbGUvR3JhcGhpY3NDb250ZXh0R0xBTkdMRS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcApp
bmRleCA5NjgwZTA2YzJjNjFhODkzMzhlOTY1MmY5Mzk4ZmM3N2Y1MjA0ODlhLi5mZWVmMmVjMGFl
ODQ1MDU5NTNhY2ZmZDE3NmE4YTY3NDYyOWI0NWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRH
TEFOR0xFLmNwcApAQCAtMTIwLDEyICsxMjAsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpyZWxlYXNlVGhyZWFkUmVzb3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aQog
ICAgIHJldHVybiBFR0xfUmVsZWFzZVRocmVhZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09B
KQotdm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVz
b3VyY2VzKCkKLXsKLX0KLSNlbmRpZgotCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAg
UGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVt
dWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JH
QigpIH07CkBAIC0yMDEsNyArMTk1LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVzaGFwZUZCT3MoY29uc3QgSW50U2l6ZSYgc2l6ZSkKICAgICAvLyByZXNpemUgcmVndWxhciBG
Qk8KICAgICBnbDo6QmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKLSNp
ZiBQTEFURk9STShDT0NPQSkKICAgICBpZiAoIXJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygp
KSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKFdlYkdMLCAiRmF0YWw6IFVuYWJsZSB0byBhbGxvY2F0
ZSBiYWNraW5nIHN0b3JlIG9mIHNpemUgJWQgeCAlZCIsIHdpZHRoLCBoZWlnaHQpOwogICAgICAg
ICBmb3JjZUNvbnRleHRMb3N0KCk7CkBAIC0yMjQsMjMgKzIxNyw2IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnJlc2hhcGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAg
IGdsOjpCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9IGVsc2UK
ICAgICAgICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xP
Ul9BVFRBQ0hNRU5UMCwgZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAw
KTsKLSNlbHNlCi0gICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCgpOwotICAgIEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdl
dCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7
Ci0gICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgZ2w6
OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgs
IGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIGdsOjpG
cmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAs
IHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQotICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4
dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRl
eEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwg
aGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGds
OjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJ
bWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhl
aWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBnbDo6
QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgMCk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYgLy8g
UExBVEZPUk0oQ09DT0EpCiAKICAgICBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRl
ZChtX2ludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250
ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dy
YXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggZjIwMWRkY2M5Nzg2MWY2YTg2MjZjYWQyZGFi
ZmNiZjMzNzI1MzZhNC4uNTExMDMyM2RlYTY3YmQ5NGU2MjZhZjRiZjk0MTgyNzRkN2MzMjNkNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhp
Y3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC02MTksNyArNjE5LDcgQEAgYm9v
bCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoKQogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6YmluZERpc3BsYXlCdWZmZXJC
YWNraW5nKHN0ZDo6dW5pcXVlX3B0cjxJT1N1cmZhY2U+IGJhY2tpbmcsIHZvaWQqIHBidWZmZXIp
CiB7CiAgICAgR0NHTGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0KCk7Ci0gICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KGRyYXdpbmdCdWZm
ZXJUZXh0dXJlVGFyZ2V0KCkpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRV
UkVfUkVDVEFOR0xFX0FSQik7CisgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3Rv
cmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0
KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVf
UkVDVEFOR0xFX0FSQik7CiAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fdGV4
dHVyZSk7CiAgICAgaWYgKCFFR0xfQmluZFRleEltYWdlKG1fZGlzcGxheU9iaiwgcGJ1ZmZlciwg
RUdMX0JBQ0tfQlVGRkVSKSkgewogICAgICAgICBFR0xfRGVzdHJveVN1cmZhY2UobV9kaXNwbGF5
T2JqLCBwYnVmZmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKaW5kZXggM2Nk
M2RkZTJiN2Q0NTFjYzZiZTg3ZTFhNTdjNjY3MDJlMTRmOGEwMS4uNjVkMWUzMzgyOGQ5NDdmNzI2
OGM0ZTU2YTY0ODQzMGIxOWYwMzFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmgKQEAgLTU1Miw4ICs1NTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVNdWx0aXNh
bXBsaW5nSWZOZWNlc3NhcnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwogICAgIHZvaWQg
YXR0YWNoRGVwdGhBbmRTdGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0
aFN0ZW5jaWxGb3JtYXQsIGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLSNpZiBQTEFURk9STShD
T0NPQSkKKyNpZiBVU0UoQU5HTEUpCiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tp
bmcoKTsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb2NhdGVBbmRC
aW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFj
a2luZyhzdGQ6OnVuaXF1ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsK
ICAgICBzdGF0aWMgYm9vbCBtYWtlQ3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlz
cGxheSwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFw
cGVyQU5HTEUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dy
YXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zOTMyOWEy
YzE3OWIyZWRkNDBhNTY2NWU4NmY2ODhkN2FlZTQwZjUzCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlckFOR0xFLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmgiCisKKyNpZiBFTkFCTEUoV0VCR0wpICYm
IFVTRShBTkdMRSkgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQorCisjaW5jbHVkZSAiQU5HTEVIZWFk
ZXJzLmgiCisjaW5jbHVkZSAiQU5HTEVVdGlsaXRpZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJh
Y2tpbmcoKQoreworICAgIGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGNv
bnN0IGludCBzaXplID0gZ2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAgICBjb25zdCBp
bnQgd2lkdGggPSBzaXplLndpZHRoKCk7CisgICAgY29uc3QgaW50IGhlaWdodCA9IHNpemUuaGVp
Z2h0KCk7CisgICAgR0x1aW50IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9SR0JBIDog
R0xfUkdCOworICAgIEdMZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVU
YXJnZXQoKTsKKyAgICBHTHVpbnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVUYXJnZXQg
PT0gR0xfVEVYVFVSRV8yRCA/IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9ybWF0Owor
ICAgIFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVm
ZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4
dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkg
eworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4
dHVyZSk7CisgICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFs
Q29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9C
WVRFLCAwKTsKKyAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJt
ZWRpYXRlVGV4dHVyZSk7CisgICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAs
IGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9V
TlNJR05FRF9CWVRFLCAwKTsKKyAgICB9CisjZW5kaWYKKyAgICBnbDo6QmluZFRleHR1cmUodGV4
dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0
LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwg
R0xfVU5TSUdORURfQllURSwgMCk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZS
QU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJl
LCAwKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5H
TDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKK3sKK30KKworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445186</attachid>
            <date>2021-11-26 03:27:56 -0800</date>
            <delta_ts>2021-11-26 05:19:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233515-20211126132754.patch</filename>
            <type>text/plain</type>
            <size>15284</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2YzJiMzUwZjRjZDY3
ZTc3ZDRmMDQ3YTRhOTRiZTkyYTJiNGJlNy4uZTlmNGE2MzNjY2JjYjM2NjBjYWRkOWE5YTVmYTQ4
OTY4MDdmNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaGFzIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGZvciBtb2RpZnlpbmcKKyAgICAgICAgdGhl
IGRpc3BsYXkgYnVmZmVyIGJhY2tpbmcgc3RvcmFnZSAoSU9TdXJmYWNlIG9uIENvY29hLAorICAg
ICAgICBub3JtYWwgdGV4dHVyZSBvbiBUZXh0dXJlTWFwcGVyIHZhcmlhbnRzKS4KKyAgICAgICAg
VGhpcyBtb2RpZmljYXRpb24gc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgcmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nCisgICAgICAgIG1ldGhvZCBjYWxsIGZvciBhbGwgaW1wbGVtZW50YXRp
b25zLCBzbyB0aGF0IGluIHRoZSBmdXR1cmUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgQU5HTEUgdmFyaWFudCBjYW4gYmUgcmVuYW1lZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFCisg
ICAgICAgIGFuZCBzdGlsbCBpbnZva2UgdGhhdCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOgorCiAyMDIxLTExLTI1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2UKaW5kZXggM2YzYzEwMmE1ZmE5NDJmN2JjYWQ2MDJjMmM0YjEzNDFkYjEzYmI1
MS4uNDI0YTZlM2M4MmU0ZTFhN2QxNDUzYWRhYWNjNTU3MzZlOWUyZmQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0xMCw2ICsxMCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlUG9vbC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDk2ODBlMDZjMmM2MWE4OTMzOGU5NjUyZjkzOThmYzc3ZjUyMDQ4OWEuLmIxYzM4
NDc3ZWQyOTE1NThlZjk5Nzc1ODdiZGJhYjg3MzI5YWYzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC03Niw2ICs3Niw0NyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKKworR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKK3sKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCA9PSAtMSkKKyAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihtX2Rpc3BsYXlPYmos
IG1fY29uZmlnT2JqLCBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRSwgJm1fZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQpOworCisgICAgc3dpdGNoIChtX2RyYXdpbmdCdWZmZXJUZXh0
dXJlVGFyZ2V0KSB7CisgICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKKyAgICAgICAgcmV0dXJuIFRF
WFRVUkVfMkQ7CisgICAgY2FzZSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU6CisgICAgICAg
IHJldHVybiBURVhUVVJFX1JFQ1RBTkdMRV9BUkI7CisKKyAgICB9CisgICAgQVNTRVJUX1dJVEhf
TUVTU0FHRShmYWxzZSwgIkludmFsaWQgZW51bSByZXR1cm5lZCBmcm9tIEVHTF9HZXRDb25maWdB
dHRyaWIiKTsKKyAgICByZXR1cm4gMDsKK30KKworR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdD
R0xlbnVtIGRyYXdpbmdUYXJnZXQpCit7CisgICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7Cisg
ICAgY2FzZSBURVhUVVJFXzJEOgorICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HXzJEOwor
ICAgIGNhc2UgVEVYVFVSRV9SRUNUQU5HTEVfQVJCOgorICAgICAgICByZXR1cm4gVEVYVFVSRV9C
SU5ESU5HX1JFQ1RBTkdMRV9BUkI7CisgICAgfQorICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFs
c2UsICJJbnZhbGlkIGRyYXdpbmcgdGFyZ2V0Iik7CisgICAgcmV0dXJuIC0xOworfQorCitHQ0dM
aW50IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCkKK3sKKyAgICBzd2l0Y2gg
KGRyYXdpbmdUYXJnZXQpIHsKKyAgICBjYXNlIFRFWFRVUkVfMkQ6CisgICAgICAgIHJldHVybiBF
R0xfVEVYVFVSRV8yRDsKKyAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKKyAgICAgICAg
cmV0dXJuIEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKKyAgICB9CisgICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShmYWxzZSwgIkludmFsaWQgZHJhd2luZyB0YXJnZXQiKTsKKyAgICByZXR1cm4g
MDsKK30KKwogYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVsZWFzZVRocmVhZFJlc291
cmNlcyhSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciByZWxlYXNlQmVoYXZpb3IpCiB7CiAg
ICAgcGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCk7CkBAIC0xMjAsMTIgKzE2MSw2IEBA
IGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoUmVs
ZWFzZVRocmVhZFJlc291cmNlQmVoYXZpCiAgICAgcmV0dXJuIEVHTF9SZWxlYXNlVGhyZWFkKCk7
CiB9CiAKLSNpZiAhUExBVEZPUk0oQ09DT0EpCi12b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQotewotfQotI2VuZGlmCi0KIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWFkUGl4ZWxz
Rm9yUGFpbnRSZXN1bHRzKCkKIHsKICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBo
YVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwg
RGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCkgfTsKQEAgLTIwMSw3ICsyMzYsNiBAQCBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyhjb25zdCBJbnRTaXplJiBzaXpl
KQogICAgIC8vIHJlc2l6ZSByZWd1bGFyIEZCTwogICAgIGdsOjpCaW5kRnJhbWVidWZmZXIoR0xf
RlJBTUVCVUZGRVIsIG1fZmJvKTsKIAotI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGlmICghcmVz
aGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkpIHsKICAgICAgICAgUkVMRUFTRV9MT0coV2ViR0ws
ICJGYXRhbDogVW5hYmxlIHRvIGFsbG9jYXRlIGJhY2tpbmcgc3RvcmUgb2Ygc2l6ZSAlZCB4ICVk
Iiwgd2lkdGgsIGhlaWdodCk7CiAgICAgICAgIGZvcmNlQ29udGV4dExvc3QoKTsKQEAgLTIyNCwy
MyArMjU4LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29u
c3QgSW50U2l6ZSYgc2l6ZSkKICAgICAgICAgZ2w6OkJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJV
RkZFUiwgbV9mYm8pOwogICAgIH0gZWxzZQogICAgICAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCBkcmF3aW5nQnVmZmVyVGV4
dHVyZVRhcmdldCgpLCBtX3RleHR1cmUsIDApOwotI2Vsc2UKLSAgICBHTGVudW0gdGV4dHVyZVRh
cmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7Ci0gICAgR0x1aW50IGludGVybmFs
Q29sb3JGb3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgPyBjb2xvckZvcm1h
dCA6IG1faW50ZXJuYWxDb2xvckZvcm1hdDsKLSAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgbV90ZXh0dXJlKTsKLSAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBp
bnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5T
SUdORURfQllURSwgMCk7Ci0gICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVG
RkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlLCAwKTsK
LSNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCi0gICAgaWYgKG1fY29tcG9zaXRvclRleHR1
cmUpIHsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRv
clRleHR1cmUpOwotICAgICAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBtX2lu
dGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJ
R05FRF9CWVRFLCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIDAp
OwotICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlhdGVU
ZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgbV9pbnRl
cm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdO
RURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCAwKTsK
LSAgICB9Ci0jZW5kaWYKLSNlbmRpZiAvLyBQTEFURk9STShDT0NPQSkKIAogICAgIGF0dGFjaERl
cHRoQW5kU3RlbmNpbEJ1ZmZlcklmTmVlZGVkKG1faW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQs
IHdpZHRoLCBoZWlnaHQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCBm
MjAxZGRjYzk3ODYxZjZhODYyNmNhZDJkYWJmY2JmMzM3MjUzNmE0Li4xYWU3NTgwY2VhMDVjMGMy
NDVjYzUyYWY3NTY3Yjg3Yzk3ZWNkMjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0KQEAgLTQ2Nyw0NiArNDY3LDYgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCi1H
Q0dMZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXQoKQotewotICAgIGlmIChtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0ID09IC0xKQotICAg
ICAgICBFR0xfR2V0Q29uZmlnQXR0cmliKG1fZGlzcGxheU9iaiwgbV9jb25maWdPYmosIEVHTF9C
SU5EX1RPX1RFWFRVUkVfVEFSR0VUX0FOR0xFLCAmbV9kcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dCk7Ci0KLSAgICBzd2l0Y2ggKG1fZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQpIHsKLSAgICBj
YXNlIEVHTF9URVhUVVJFXzJEOgotICAgICAgICByZXR1cm4gVEVYVFVSRV8yRDsKLSAgICBjYXNl
IEVHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRToKLSAgICAgICAgcmV0dXJuIFRFWFRVUkVfUkVD
VEFOR0xFX0FSQjsKLQotICAgIH0KLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZhbHNlLCAiSW52
YWxpZCBlbnVtIHJldHVybmVkIGZyb20gRUdMX0dldENvbmZpZ0F0dHJpYiIpOwotICAgIHJldHVy
biAwOwotfQotCi1HQ0dMZW51bSBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZl
clRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1Rhcmdl
dCkKLXsKLSAgICBzd2l0Y2ggKGRyYXdpbmdUYXJnZXQpIHsKLSAgICBjYXNlIFRFWFRVUkVfMkQ6
Ci0gICAgICAgIHJldHVybiBURVhUVVJFX0JJTkRJTkdfMkQ7Ci0gICAgY2FzZSBURVhUVVJFX1JF
Q1RBTkdMRV9BUkI6Ci0gICAgICAgIHJldHVybiBURVhUVVJFX0JJTkRJTkdfUkVDVEFOR0xFX0FS
QjsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShmYWxzZSwgIkludmFsaWQgZHJhd2lu
ZyB0YXJnZXQiKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLUdDR0xpbnQgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0w6OkVHTERyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChH
Q0dMZW51bSBkcmF3aW5nVGFyZ2V0KQotewotICAgIHN3aXRjaCAoZHJhd2luZ1RhcmdldCkgewot
ICAgIGNhc2UgVEVYVFVSRV8yRDoKLSAgICAgICAgcmV0dXJuIEVHTF9URVhUVVJFXzJEOwotICAg
IGNhc2UgVEVYVFVSRV9SRUNUQU5HTEVfQVJCOgotICAgICAgICByZXR1cm4gRUdMX1RFWFRVUkVf
UkVDVEFOR0xFX0FOR0xFOwotICAgIH0KLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGZhbHNlLCAi
SW52YWxpZCBkcmF3aW5nIHRhcmdldCIpOwotICAgIHJldHVybiAwOwotfQotCiBib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewogICAgIGlmICghbV9j
b250ZXh0T2JqKQpAQCAtNjE5LDcgKzU3OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OmFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZmZXJCYWNraW5nKCkKIGJvb2wgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OmJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1ZV9wdHI8
SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKQogewogICAgIEdDR0xlbnVtIHRleHR1
cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAgIFNjb3BlZFJlc3Rv
cmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldChkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpKSwgdGV4
dHVyZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworICAg
IFNjb3BlZFJlc3RvcmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVy
VGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVy
ZVRhcmdldCwgdGV4dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOwogICAgIGds
OjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOwogICAgIGlmICghRUdMX0Jp
bmRUZXhJbWFnZShtX2Rpc3BsYXlPYmosIHBidWZmZXIsIEVHTF9CQUNLX0JVRkZFUikpIHsKICAg
ICAgICAgRUdMX0Rlc3Ryb3lTdXJmYWNlKG1fZGlzcGxheU9iaiwgcGJ1ZmZlcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9H
cmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCmluZGV4IDNjZDNkZGUyYjdkNDUxY2M2YmU4N2UxYTU3
YzY2NzAyZTE0ZjhhMDEuLjljNDIzZjc1NTQ1YWIwYzhhZTgyYTdjNGMxNzc1YTA4ZGFmZWE5NGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9HcmFw
aGljc0NvbnRleHRHTE9wZW5HTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9HcmFwaGljc0NvbnRleHRHTE9wZW5HTC5oCkBAIC0xMDYsMTMgKzEwNiwxMyBA
QCBwdWJsaWM6CiAgICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0IG92ZXJy
aWRlOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxh
eSgpIGNvbnN0IHsgcmV0dXJuIG1fZGlzcGxheU9iajsgfQogICAgIFBsYXRmb3JtR3JhcGhpY3ND
b250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdCB7IHJldHVybiBtX2NvbmZpZ09i
ajsgfQotICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5
Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KTsKLSAgICBzdGF0aWMgR0NH
TGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldEZvckRyYXdpbmdUYXJnZXQoR0NHTGVu
dW0gZHJhd2luZ1RhcmdldCk7CiAjZWxzZQogICAgIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5
ZXIoKSBjb25zdCBmaW5hbDsKICNlbmRpZgogI2lmIFVTRShBTkdMRSkKICAgICBHQ0dMZW51bSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKKyAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgZW51bSBjbGFz
cyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciB7CiAgICAgICAgIC8vIFJlbGVhc2VzIGN1
cnJlbnQgY29udGV4dCBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjYWxscyBkb25lIGlu
IHRoZSB0aHJlYWQuCiAgICAgICAgIFJlbGVhc2VDdXJyZW50Q29udGV4dCwKQEAgLTU1Miw4ICs1
NTIsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nh
cnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRT
dGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQs
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBVU0Uo
QU5HTEUpCiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9v
bCBtYWtlQ3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1
cmVNYXBwZXIuY3BwCmluZGV4IGJjZTIyYTlhMTIzMjE4ZGE5Yzc0ZWU1YzE5MmMzNmNkMzIwZjkz
YTcuLmE3NzFmMDdhMDJlZDQ0YTY3ZTA4MmQ0ODExNjhiZjU4OGRmZGNhMTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC00NDEsMTcgKzQ0
MSw2IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxh
eWVyKCkgY29uc3QKICNlbmRpZgogfQogCi0jaWYgVVNFKEFOR0xFKQotR0NHTGVudW0gR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKLXsKLSNpZiBQ
TEFURk9STShXSU4pCi0gICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Ci0jZWxzZQotICAgIHJldHVy
biBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSNlbmRpZgotfQotI2VuZGlmCi0KICNpZiBQ
TEFURk9STShHVEspICYmICFVU0UoQU5HTEUpCiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24mIEdy
YXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM5MzI5YTJjMTc5YjJlZGQ0MGE1NjY1ZTg2ZjY4OGQ3YWVlNDBmNTMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250
ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCIKKworI2lmIEVOQUJMRShX
RUJHTCkgJiYgVVNFKEFOR0xFKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisKKyNpbmNsdWRlICJB
TkdMRUhlYWRlcnMuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2Jvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5
QnVmZmVyQmFja2luZygpCit7CisgICAgYXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7
CisgICAgY29uc3QgaW50IHNpemUgPSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAg
IGNvbnN0IGludCB3aWR0aCA9IHNpemUud2lkdGgoKTsKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0g
c2l6ZS5oZWlnaHQoKTsKKyAgICBHTHVpbnQgY29sb3JGb3JtYXQgPSBhdHRycy5hbHBoYSA/IEdM
X1JHQkEgOiBHTF9SR0I7CisgICAgR0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVy
VGV4dHVyZVRhcmdldCgpOworICAgIEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVy
ZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JG
b3JtYXQ7CisgICAgU2NvcGVkUmVzdG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJn
ZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FS
Qik7CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIGlmIChtX2NvbXBvc2l0b3JU
ZXh0dXJlKSB7CisgICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBv
c2l0b3JUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwg
aW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VO
U0lHTkVEX0JZVEUsIDApOworICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwg
bV9pbnRlcm1lZGlhdGVUZXh0dXJlKTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAgIH0KKyNlbmRpZgorICAgIGdsOjpCaW5kVGV4
dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUpOworICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1
cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9y
Rm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJl
MkQoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlVGFyZ2V0LCBt
X3RleHR1cmUsIDApOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4
dEdMT3BlbkdMOjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorCit9CisK
KyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445190</attachid>
            <date>2021-11-26 05:19:18 -0800</date>
            <delta_ts>2021-11-26 05:38:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233515-20211126151916.patch</filename>
            <type>text/plain</type>
            <size>23828</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2YzJiMzUwZjRjZDY3
ZTc3ZDRmMDQ3YTRhOTRiZTkyYTJiNGJlNy4uZTlmNGE2MzNjY2JjYjM2NjBjYWRkOWE5YTVmYTQ4
OTY4MDdmNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaGFzIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGZvciBtb2RpZnlpbmcKKyAgICAgICAgdGhl
IGRpc3BsYXkgYnVmZmVyIGJhY2tpbmcgc3RvcmFnZSAoSU9TdXJmYWNlIG9uIENvY29hLAorICAg
ICAgICBub3JtYWwgdGV4dHVyZSBvbiBUZXh0dXJlTWFwcGVyIHZhcmlhbnRzKS4KKyAgICAgICAg
VGhpcyBtb2RpZmljYXRpb24gc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgcmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nCisgICAgICAgIG1ldGhvZCBjYWxsIGZvciBhbGwgaW1wbGVtZW50YXRp
b25zLCBzbyB0aGF0IGluIHRoZSBmdXR1cmUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgQU5HTEUgdmFyaWFudCBjYW4gYmUgcmVuYW1lZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFCisg
ICAgICAgIGFuZCBzdGlsbCBpbnZva2UgdGhhdCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOgorCiAyMDIxLTExLTI1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2UKaW5kZXggM2YzYzEwMmE1ZmE5NDJmN2JjYWQ2MDJjMmM0YjEzNDFkYjEzYmI1
MS4uNDI0YTZlM2M4MmU0ZTFhN2QxNDUzYWRhYWNjNTU3MzZlOWUyZmQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0xMCw2ICsxMCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlUG9vbC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDk2ODBlMDZjMmM2MWE4OTMzOGU5NjUyZjkzOThmYzc3ZjUyMDQ4OWEuLmZhNjA1
NGNmOTVkMTJjOTU3N2QxNDhiY2Q0MDQwZGZhMmI3YTUwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC03Niw2ICs3Niw0NyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKKworR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKK3sKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCA9PSAtMSkKKyAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihwbGF0Zm9ybURpc3Bs
YXkoKSwgcGxhdGZvcm1Db25maWcoKSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEUs
ICZtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KTsKKworICAgIHN3aXRjaCAobV9kcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCkgeworICAgIGNhc2UgRUdMX1RFWFRVUkVfMkQ6CisgICAgICAg
IHJldHVybiBURVhUVVJFXzJEOworICAgIGNhc2UgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xF
OgorICAgICAgICByZXR1cm4gVEVYVFVSRV9SRUNUQU5HTEVfQVJCOworCisgICAgfQorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGVudW0gcmV0dXJuZWQgZnJvbSBFR0xf
R2V0Q29uZmlnQXR0cmliIik7CisgICAgcmV0dXJuIDA7Cit9CisKK0dDR0xlbnVtIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2lu
Z1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KQoreworICAgIHN3aXRjaCAoZHJhd2luZ1Rh
cmdldCkgeworICAgIGNhc2UgVEVYVFVSRV8yRDoKKyAgICAgICAgcmV0dXJuIFRFWFRVUkVfQklO
RElOR18yRDsKKyAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKKyAgICAgICAgcmV0dXJu
IFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCOworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGZhbHNlLCAiSW52YWxpZCBkcmF3aW5nIHRhcmdldCIpOworICAgIHJldHVybiAtMTsK
K30KKworR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RUdMRHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpCit7Cisg
ICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7CisgICAgY2FzZSBURVhUVVJFXzJEOgorICAgICAg
ICByZXR1cm4gRUdMX1RFWFRVUkVfMkQ7CisgICAgY2FzZSBURVhUVVJFX1JFQ1RBTkdMRV9BUkI6
CisgICAgICAgIHJldHVybiBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisgICAgfQorICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGRyYXdpbmcgdGFyZ2V0Iik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VU
aHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2
aW9yKQogewogICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOwpAQCAtMTIwLDEy
ICsxNjEsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVz
b3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aQogICAgIHJldHVybiBFR0xfUmVsZWFz
ZVRocmVhZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKLXsKLX0KLSNlbmRp
ZgotCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CkBAIC0yMDEsNyArMjM2
LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICAvLyByZXNpemUgcmVndWxhciBGQk8KICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIXJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HKFdlYkdMLCAiRmF0YWw6IFVuYWJsZSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlIG9mIHNp
emUgJWQgeCAlZCIsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7
CkBAIC0yMjQsMjMgKzI1OCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9IGVsc2UKICAgICAgICAgZ2w6OkZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKLSNlbHNlCi0gICAgR0xlbnVt
IHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAgIEdMdWlu
dCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8g
Y29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0gICAgZ2w6OkJpbmRUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4
dHVyZSwgMCk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBv
c2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBt
X2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdl
dCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJl
VGFyZ2V0LCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50
ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgMCk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAg
ICBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChtX2ludGVybmFsRGVwdGhTdGVu
Y2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0KaW5kZXggZjIwMWRkY2M5Nzg2MWY2YTg2MjZjYWQyZGFiZmNiZjMzNzI1MzZhNC4uMTFiYTEy
MmI3YTM3ZmE3MTc2ZGM1Mzc1NDA3MmM3N2VjYjIxOWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC00NjcsNDYgKzQ2Nyw2IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJU
ZXh0dXJlVGFyZ2V0KCkKLXsKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCA9
PSAtMSkKLSAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihtX2Rpc3BsYXlPYmosIG1fY29uZmln
T2JqLCBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRSwgJm1fZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQpOwotCi0gICAgc3dpdGNoIChtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0
KSB7Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgcmV0dXJuIFRFWFRVUkVfMkQ7
Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU6Ci0gICAgICAgIHJldHVybiBU
RVhUVVJFX1JFQ1RBTkdMRV9BUkI7Ci0KLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShm
YWxzZSwgIkludmFsaWQgZW51bSByZXR1cm5lZCBmcm9tIEVHTF9HZXRDb25maWdBdHRyaWIiKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRy
YXdpbmdUYXJnZXQpCi17Ci0gICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7Ci0gICAgY2FzZSBU
RVhUVVJFXzJEOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HXzJEOwotICAgIGNhc2Ug
VEVYVFVSRV9SRUNUQU5HTEVfQVJCOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkI7Ci0gICAgfQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZh
bGlkIGRyYXdpbmcgdGFyZ2V0Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1HQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldEZvckRyYXdp
bmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCkKLXsKLSAgICBzd2l0Y2ggKGRyYXdpbmdU
YXJnZXQpIHsKLSAgICBjYXNlIFRFWFRVUkVfMkQ6Ci0gICAgICAgIHJldHVybiBFR0xfVEVYVFVS
RV8yRDsKLSAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKLSAgICAgICAgcmV0dXJuIEVH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShmYWxzZSwgIkludmFsaWQgZHJhd2luZyB0YXJnZXQiKTsKLSAgICByZXR1cm4gMDsKLX0KLQog
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTYxOSw3ICs1NzksNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcikKIHsKICAgICBHQ0dM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKLSAgICBT
Y29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXQoKSksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVf
QVJCKTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJh
d2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdl
dCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJC
KTsKICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKICAgICBp
ZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBwYnVmZmVyLCBFR0xfQkFDS19CVUZG
RVIpKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHBidWZmZXIp
OwpAQCAtODQxLDYgKzgwMSwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlU
ZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtRwogfQogI2VuZGlm
CiAKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwbGF0Zm9ybURpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlPYmo7
Cit9CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maWdPYmo7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCmluZGV4IDhkZjlmNzliY2MyZWJiMDVhNzhiZTgz
OWFiZWEwNjVlOWFiZmFjOTAuLjkzYzAyMTRmMzlhODE5MjQyODBmMzczYzlhYzc5Mzg2YmQyMzI0
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcApA
QCAtMTMwLDExICsxMzAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdDR0xBTkdMRUxheWVyOjpBTkdM
RUNvbnRleHQ+IEdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OmNyZWEKICAgICB9CiAgICAg
TE9HKFdlYkdMLCAiR290IEVHTENvbnRleHQiKTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QU5HTEVDb250ZXh0PihuZXcgQU5HTEVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQsIEVHTF9O
T19TVVJGQUNFKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5l
dyBBTkdMRUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkp
OwogfQogCi1HQ0dMQU5HTEVMYXllcjo6QU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlz
cGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSkKK0dD
R0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OkFOR0xFQ29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlKQogICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAt
MTY2LDYgKzE2NywxNiBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEdDR0xBTkdMRUxheWVy
OjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFOR0xFTGF5
ZXI6OkFOR0xFQ29udGV4dDo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kaXNwbGF5OworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdM
RUxheWVyOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb25maWc7Cit9CisKIEdDR0xBTkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKICAgICA6IEdDR0xMYXllcihjb250ZXh0KQogICAg
ICwgbV9hbmdsZUNvbnRleHQoQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KCkpCkBAIC0xODks
NiArMjAwLDE4IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgR0NHTEFOR0xFTGF5ZXI6OnBs
YXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYW5nbGVDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFO
R0xFTGF5ZXI6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVD
b250ZXh0KTsKKyAgICByZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwor
fQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdMRUxheWVyOjpwbGF0
Zm9ybUNvbmZpZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVDb250ZXh0KTsKKyAgICBy
ZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBOaWNvc2lhCiAKICNlbmRpZiAvLyBVU0UoTklDT1NJQSkgJiYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAppbmRleCA3
ZjIxZGE1OTA4MWE4YThkM2Q2NTYyZGYzODI0NTdlYjIxNmU2ZDM1Li43MDU3OWQyOGI4MGJiOTQz
MGU4ODM1OTQ1MzBiMDI1MGY3ODQ1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0NHTEFOR0xFTGF5ZXIuaApAQCAtNjMsMTIgKzYzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Owor
ICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOR0xFQ29udGV4dChFR0xE
aXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKyAgICAgICAgQU5HTEVDb250ZXh0KEVH
TERpc3BsYXksIEVHTENvbmZpZywgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSk7CiAKICAgICAgICAg
RUdMRGlzcGxheSBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgICAgIEVHTENvbmZpZyBtX2Nv
bmZpZyB7IG51bGxwdHIgfTsKICAgICAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQgeyBudWxscHRy
IH07CiAgICAgICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIH07CkBA
IC03OCw3ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkg
b3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBvdmVycmlkZTsKLQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5
IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xD
b25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFOR0xFQ29udGV4dD4gbV9hbmdsZUNvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaAppbmRleCAzY2QzZGRlMmI3ZDQ1MWNjNmJlODdlMWE1N2M2NjcwMmUxNGY4
YTAxLi5lZmFhZDU4OTdjMmI2OTAyNTRmNDI2YzA3NzFlOTEwMDdlMDlmMzcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTAyLDE3ICsxMDIsMTMgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAg
dmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENv
bmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9Ci0gICAg
c3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5n
VGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwotICAgIHN0YXRpYyBHQ0dMaW50IEVHTERy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKLSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwotI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKICAgICBHQ0dMZW51bSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKKyAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7ZwogICAgIGVudW0gY2xh
c3MgUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgewogICAgICAgICAvLyBSZWxlYXNlcyBj
dXJyZW50IGNvbnRleHQgYWZ0ZXIgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgY2FsbHMgZG9uZSBp
biB0aGUgdGhyZWFkLgogICAgICAgICBSZWxlYXNlQ3VycmVudENvbnRleHQsCkBAIC01NTIsOCAr
NTQ4LDEwIEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXNvbHZlTXVsdGlzYW1wbGluZ0lmTmVjZXNz
YXJ5KGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKICAgICB2b2lkIGF0dGFjaERlcHRoQW5k
U3RlbmNpbEJ1ZmZlcklmTmVlZGVkKEdDR0x1aW50IGludGVybmFsRGVwdGhTdGVuY2lsRm9ybWF0
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCisjaWYgVVNF
KEFOR0xFKQogICAgIGJvb2wgcmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCk7CisjZW5kaWYK
KyNpZiBQTEFURk9STShDT0NPQSkKICAgICBib29sIGFsbG9jYXRlQW5kQmluZERpc3BsYXlCdWZm
ZXJCYWNraW5nKCk7CiAgICAgYm9vbCBiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1bmlx
dWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcik7CiAgICAgc3RhdGljIGJv
b2wgbWFrZUN1cnJlbnQoUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXksIFBsYXRmb3Jt
R3JhcGhpY3NDb250ZXh0R0wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcAppbmRleCA1ZDNlZGEyNmJhZTE1MDhl
ZjE3NmM4YjM0NTdkZjM1ZDlmMGVmYjQ5Li4wOGMzNzkwMmY4MTU3OGFmNTc2NTAzMDNhZmExM2M1
MGExZmVmODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvQU5HTEVDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcApAQCAtMTQ3LDExICsxNDcsMTIgQEAgc3RkOjp1
bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4gQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KEVHTENv
bnRleHQgc2hhcmluZ0NvbnQKICAgICB9CiAgICAgTE9HKFdlYkdMLCAiR290IEVHTENvbnRleHQi
KTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8QU5HTEVDb250ZXh0PihuZXcgQU5HTEVD
b250ZXh0KGRpc3BsYXksIGNvbnRleHQsIEVHTF9OT19TVVJGQUNFKSk7CisgICAgcmV0dXJuIHN0
ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5ldyBBTkdMRUNvbnRleHQoZGlzcGxheSwgIGNv
bmZpZywgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UpKTsKIH0KIAotQU5HTEVDb250ZXh0OjpBTkdM
RUNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZh
Y2Ugc3VyZmFjZSkKK0FOR0xFQ29udGV4dDo6QU5HTEVDb250ZXh0KEVHTERpc3BsYXkgZGlzcGxh
eSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMQ29udGV4dCBjb250ZXh0LCBFR0xTdXJmYWNlIHN1cmZh
Y2UpCiAgICAgOiBtX2Rpc3BsYXkoZGlzcGxheSkKKyAgICAsIG1fY29uZmlnKGNvbmZpZykKICAg
ICAsIG1fY29udGV4dChjb250ZXh0KQogICAgICwgbV9zdXJmYWNlKHN1cmZhY2UpCiB7CkBAIC0x
ODMsNiArMTg0LDE2IEBAIEVHTENvbnRleHQgQU5HTEVDb250ZXh0OjpwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdAogICAgIHJldHVybiBtX2NvbnRleHQ7CiB9CiAKK0VHTERpc3BsYXkgQU5HTEVDb250
ZXh0OjpwbGF0Zm9ybURpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXk7Cit9
CisKK0VHTENvbmZpZyBBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9jb25maWc7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5H
TEVDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5H
TEVDb250ZXh0LmgKaW5kZXggOTQyY2MxMDI1ZThmYjI3OWEzOGMzYTBmNmU3YTNiMGM4MTI3MGU0
Zi4uYjE3YzRjOTUxYzk1YzQyNDdlZGE0MzQ3NDk4ZTIzZTg2ODNmOWRiNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQu
aApAQCAtNTEsMTEgKzUxLDEzIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJy
ZW50KCk7CiAgICAgRUdMQ29udGV4dCBwbGF0Zm9ybUNvbnRleHQoKSBjb25zdDsKLQorICAgIEVH
TERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3Q7CisgICAgRUdMQ29uZmlnIHBsYXRmb3Jt
Q29uZmlnKCkgY29uc3Q7CiBwcml2YXRlOgotICAgIEFOR0xFQ29udGV4dChFR0xEaXNwbGF5LCBF
R0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKyAgICBBTkdMRUNvbnRleHQoRUdMRGlzcGxheSwgRUdM
Q29uZmlnLCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKIAogICAgIEVHTERpc3BsYXkgbV9kaXNw
bGF5IHsgbnVsbHB0ciB9OworICAgIEVHTENvbmZpZyBtX2NvbmZpZyB7IG51bGxwdHIgfTsKICAg
ICBFR0xDb250ZXh0IG1fY29udGV4dCB7IG51bGxwdHIgfTsKICAgICBFR0xTdXJmYWNlIG1fc3Vy
ZmFjZSB7IG51bGxwdHIgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRl
eHR1cmVNYXBwZXIuY3BwCmluZGV4IGJjZTIyYTlhMTIzMjE4ZGE5Yzc0ZWU1YzE5MmMzNmNkMzIw
ZjkzYTcuLmE3NzFmMDdhMDJlZDQ0YTY3ZTA4MmQ0ODExNjhiZjU4OGRmZGNhMTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRl
eHRHTFRleHR1cmVNYXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwCkBAIC00NDEsMTcg
KzQ0MSw2IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9y
bUxheWVyKCkgY29uc3QKICNlbmRpZgogfQogCi0jaWYgVVNFKEFOR0xFKQotR0NHTGVudW0gR3Jh
cGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKLXsKLSNp
ZiBQTEFURk9STShXSU4pCi0gICAgcmV0dXJuIEdMX1RFWFRVUkVfMkQ7Ci0jZWxzZQotICAgIHJl
dHVybiBHTF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSNlbmRpZgotfQotI2VuZGlmCi0KICNp
ZiBQTEFURk9STShHVEspICYmICFVU0UoQU5HTEUpCiBFeHRlbnNpb25zR0xPcGVuR0xDb21tb24m
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpnZXRFeHRlbnNpb25zKCkKIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRH
TFRleHR1cmVNYXBwZXJBTkdMRS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjJkY2FkMjAwOGQ2ZGI5NjVmMWNjMzNlZTQ4NzY1OTJkMWUyZGI3NTQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3ND
b250ZXh0R0xUZXh0dXJlTWFwcGVyQU5HTEUuY3BwCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDE5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJHcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuaCIKKworI2lmIEVOQUJM
RShXRUJHTCkgJiYgVVNFKEFOR0xFKSAmJiBVU0UoVEVYVFVSRV9NQVBQRVIpCisKKyNpbmNsdWRl
ICJBTkdMRUhlYWRlcnMuaCIKKyNpbmNsdWRlICJBTkdMRVV0aWxpdGllcy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybURpc3BsYXkoKSBjb25zdAoreworI2lmIFVTRShOSUNP
U0lBKQorICAgIHJldHVybiBtX25pY29zaWFMYXllci0+cGxhdGZvcm1EaXNwbGF5KCk7CisjZWxz
ZQorICAgIHJldHVybiBtX3RleG1hcExheWVyLT5wbGF0Zm9ybURpc3BsYXkoKTsKKyNlbmRpZgor
fQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwbGF0Zm9ybUNvbmZpZygpIGNvbnN0Cit7CisjaWYgVVNFKE5JQ09TSUEpCisgICAgcmV0
dXJuIG1fbmljb3NpYUxheWVyLT5wbGF0Zm9ybUNvbmZpZygpOworI2Vsc2UKKyAgICByZXR1cm4g
bV90ZXhtYXBMYXllci0+cGxhdGZvcm1Db25maWcoKTsKKyNlbmRpZgorfQorCitib29sIEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKQoreworICAg
IGF1dG8gYXR0cnMgPSBjb250ZXh0QXR0cmlidXRlcygpOworICAgIGNvbnN0IGF1dG8gc2l6ZSA9
IGdldEludGVybmFsRnJhbWVidWZmZXJTaXplKCk7CisgICAgY29uc3QgaW50IHdpZHRoID0gc2l6
ZS53aWR0aCgpOworICAgIGNvbnN0IGludCBoZWlnaHQgPSBzaXplLmhlaWdodCgpOworICAgIEdM
dWludCBjb2xvckZvcm1hdCA9IGF0dHJzLmFscGhhID8gR0xfUkdCQSA6IEdMX1JHQjsKKyAgICBH
TGVudW0gdGV4dHVyZVRhcmdldCA9IGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCk7CisgICAg
R0x1aW50IGludGVybmFsQ29sb3JGb3JtYXQgPSB0ZXh0dXJlVGFyZ2V0ID09IEdMX1RFWFRVUkVf
MkQgPyBjb2xvckZvcm1hdCA6IG1faW50ZXJuYWxDb2xvckZvcm1hdDsKKyAgICBTY29wZWRSZXN0
b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdldCksIHRleHR1cmVUYXJnZXQsIHRl
eHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJCKTsKKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCisgICAgaWYgKG1fY29tcG9zaXRvclRleHR1cmUpIHsKKyAgICAgICAgZ2w6
OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1fY29tcG9zaXRvclRleHR1cmUpOworICAgICAg
ICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9yRm9ybWF0LCB3
aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwgMCk7CisgICAg
ICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2ludGVybWVkaWF0ZVRleHR1cmUp
OworICAgICAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENvbG9y
Rm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllURSwg
MCk7CisgICAgfQorI2VuZGlmCisgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1f
dGV4dHVyZSk7CisgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxD
b2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZ
VEUsIDApOworICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJVRkZFUiwgR0xf
Q09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSwgMCk7CisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3ZvaWQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtUmVs
ZWFzZVRocmVhZFJlc291cmNlcygpCit7Cit9CisKK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQ
bGF0Zm9ybUxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCmluZGV4IGY4YjEyNWI1MjQ4Yjkw
NmM1M2FhOGE1Mjg5ODA5ZDlhMjljZjQ4ZjQuLmY0NGM3YTA5MzRhYTBiMmUzMjRhYjM4MzhiODg4
ZGJkMTA3YjBhYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3Jt
TGF5ZXIuY3BwCkBAIC02OCw2ICs2OCwxOCBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIFRl
eHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cGxhdGZvcm1Db250ZXh0KCkgY29ucwogICAg
IHJldHVybiBtX2dsQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiB9CiAKK1BsYXRmb3JtR3Jh
cGhpY3NDb250ZXh0R0xEaXNwbGF5IFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cGxh
dGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9nbENvbnRleHQpOworICAgIHJl
dHVybiBtX2dsQ29udGV4dC0+cGxhdGZvcm1EaXNwbGF5KCk7Cit9CisKK1BsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwbGF0Zm9y
bUNvbmZpZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZ2xDb250ZXh0KTsKKyAgICByZXR1cm4g
bV9nbENvbnRleHQtPnBsYXRmb3JtQ29uZmlnKCk7Cit9CisKICNpZiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiBSZWZQdHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gVGV4dHVy
ZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwcm94eSgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQ
bGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgKaW5kZXggNDA0MjY0YTIzM2YwMGQyYWEy
N2Y1ODZkNWU3ZjMwNGI1OTY1MjJlMC4uYzc0ZTc1NTQyMWUwYzE0ZDY3MTdiZGY5YjA2M2E0N2Q4
ODY0ZjJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIu
aApAQCAtMzksNiArMzksOCBAQCBwdWJsaWM6CiAKICAgICBib29sIG1ha2VDb250ZXh0Q3VycmVu
dCgpOwogICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1Db250ZXh0KCkgY29u
c3Q7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5
KCkgY29uc3Q7CisgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBwbGF0Zm9ybUNv
bmZpZygpIGNvbnN0OwogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIFJlZlB0
cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94eSgpIGNvbnN0IG92ZXJyaWRl
Owo=
</data>
<flag name="commit-queue"
          id="470333"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445191</attachid>
            <date>2021-11-26 05:24:15 -0800</date>
            <delta_ts>2021-11-26 06:23:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233515-20211126152413.patch</filename>
            <type>text/plain</type>
            <size>23827</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2YzJiMzUwZjRjZDY3
ZTc3ZDRmMDQ3YTRhOTRiZTkyYTJiNGJlNy4uZTlmNGE2MzNjY2JjYjM2NjBjYWRkOWE5YTVmYTQ4
OTY4MDdmNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaGFzIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGZvciBtb2RpZnlpbmcKKyAgICAgICAgdGhl
IGRpc3BsYXkgYnVmZmVyIGJhY2tpbmcgc3RvcmFnZSAoSU9TdXJmYWNlIG9uIENvY29hLAorICAg
ICAgICBub3JtYWwgdGV4dHVyZSBvbiBUZXh0dXJlTWFwcGVyIHZhcmlhbnRzKS4KKyAgICAgICAg
VGhpcyBtb2RpZmljYXRpb24gc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgcmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nCisgICAgICAgIG1ldGhvZCBjYWxsIGZvciBhbGwgaW1wbGVtZW50YXRp
b25zLCBzbyB0aGF0IGluIHRoZSBmdXR1cmUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgQU5HTEUgdmFyaWFudCBjYW4gYmUgcmVuYW1lZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFCisg
ICAgICAgIGFuZCBzdGlsbCBpbnZva2UgdGhhdCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOgorCiAyMDIxLTExLTI1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2UKaW5kZXggM2YzYzEwMmE1ZmE5NDJmN2JjYWQ2MDJjMmM0YjEzNDFkYjEzYmI1
MS4uNDI0YTZlM2M4MmU0ZTFhN2QxNDUzYWRhYWNjNTU3MzZlOWUyZmQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0xMCw2ICsxMCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlUG9vbC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDk2ODBlMDZjMmM2MWE4OTMzOGU5NjUyZjkzOThmYzc3ZjUyMDQ4OWEuLmZhNjA1
NGNmOTVkMTJjOTU3N2QxNDhiY2Q0MDQwZGZhMmI3YTUwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC03Niw2ICs3Niw0NyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKKworR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKK3sKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCA9PSAtMSkKKyAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihwbGF0Zm9ybURpc3Bs
YXkoKSwgcGxhdGZvcm1Db25maWcoKSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEUs
ICZtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KTsKKworICAgIHN3aXRjaCAobV9kcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCkgeworICAgIGNhc2UgRUdMX1RFWFRVUkVfMkQ6CisgICAgICAg
IHJldHVybiBURVhUVVJFXzJEOworICAgIGNhc2UgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xF
OgorICAgICAgICByZXR1cm4gVEVYVFVSRV9SRUNUQU5HTEVfQVJCOworCisgICAgfQorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGVudW0gcmV0dXJuZWQgZnJvbSBFR0xf
R2V0Q29uZmlnQXR0cmliIik7CisgICAgcmV0dXJuIDA7Cit9CisKK0dDR0xlbnVtIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2lu
Z1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KQoreworICAgIHN3aXRjaCAoZHJhd2luZ1Rh
cmdldCkgeworICAgIGNhc2UgVEVYVFVSRV8yRDoKKyAgICAgICAgcmV0dXJuIFRFWFRVUkVfQklO
RElOR18yRDsKKyAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKKyAgICAgICAgcmV0dXJu
IFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCOworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGZhbHNlLCAiSW52YWxpZCBkcmF3aW5nIHRhcmdldCIpOworICAgIHJldHVybiAtMTsK
K30KKworR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RUdMRHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpCit7Cisg
ICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7CisgICAgY2FzZSBURVhUVVJFXzJEOgorICAgICAg
ICByZXR1cm4gRUdMX1RFWFRVUkVfMkQ7CisgICAgY2FzZSBURVhUVVJFX1JFQ1RBTkdMRV9BUkI6
CisgICAgICAgIHJldHVybiBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisgICAgfQorICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGRyYXdpbmcgdGFyZ2V0Iik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VU
aHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2
aW9yKQogewogICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOwpAQCAtMTIwLDEy
ICsxNjEsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVz
b3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aQogICAgIHJldHVybiBFR0xfUmVsZWFz
ZVRocmVhZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKLXsKLX0KLSNlbmRp
ZgotCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CkBAIC0yMDEsNyArMjM2
LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICAvLyByZXNpemUgcmVndWxhciBGQk8KICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIXJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HKFdlYkdMLCAiRmF0YWw6IFVuYWJsZSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlIG9mIHNp
emUgJWQgeCAlZCIsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7
CkBAIC0yMjQsMjMgKzI1OCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9IGVsc2UKICAgICAgICAgZ2w6OkZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKLSNlbHNlCi0gICAgR0xlbnVt
IHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAgIEdMdWlu
dCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8g
Y29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0gICAgZ2w6OkJpbmRUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4
dHVyZSwgMCk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBv
c2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBt
X2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdl
dCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJl
VGFyZ2V0LCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50
ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgMCk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAg
ICBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChtX2ludGVybmFsRGVwdGhTdGVu
Y2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0KaW5kZXggZjIwMWRkY2M5Nzg2MWY2YTg2MjZjYWQyZGFiZmNiZjMzNzI1MzZhNC4uMTFiYTEy
MmI3YTM3ZmE3MTc2ZGM1Mzc1NDA3MmM3N2VjYjIxOWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC00NjcsNDYgKzQ2Nyw2IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJU
ZXh0dXJlVGFyZ2V0KCkKLXsKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCA9
PSAtMSkKLSAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihtX2Rpc3BsYXlPYmosIG1fY29uZmln
T2JqLCBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRSwgJm1fZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQpOwotCi0gICAgc3dpdGNoIChtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0
KSB7Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgcmV0dXJuIFRFWFRVUkVfMkQ7
Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU6Ci0gICAgICAgIHJldHVybiBU
RVhUVVJFX1JFQ1RBTkdMRV9BUkI7Ci0KLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShm
YWxzZSwgIkludmFsaWQgZW51bSByZXR1cm5lZCBmcm9tIEVHTF9HZXRDb25maWdBdHRyaWIiKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRy
YXdpbmdUYXJnZXQpCi17Ci0gICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7Ci0gICAgY2FzZSBU
RVhUVVJFXzJEOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HXzJEOwotICAgIGNhc2Ug
VEVYVFVSRV9SRUNUQU5HTEVfQVJCOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkI7Ci0gICAgfQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZh
bGlkIGRyYXdpbmcgdGFyZ2V0Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1HQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldEZvckRyYXdp
bmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCkKLXsKLSAgICBzd2l0Y2ggKGRyYXdpbmdU
YXJnZXQpIHsKLSAgICBjYXNlIFRFWFRVUkVfMkQ6Ci0gICAgICAgIHJldHVybiBFR0xfVEVYVFVS
RV8yRDsKLSAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKLSAgICAgICAgcmV0dXJuIEVH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShmYWxzZSwgIkludmFsaWQgZHJhd2luZyB0YXJnZXQiKTsKLSAgICByZXR1cm4gMDsKLX0KLQog
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTYxOSw3ICs1NzksNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcikKIHsKICAgICBHQ0dM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKLSAgICBT
Y29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXQoKSksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVf
QVJCKTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJh
d2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdl
dCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJC
KTsKICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKICAgICBp
ZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBwYnVmZmVyLCBFR0xfQkFDS19CVUZG
RVIpKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHBidWZmZXIp
OwpAQCAtODQxLDYgKzgwMSwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlU
ZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtRwogfQogI2VuZGlm
CiAKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwbGF0Zm9ybURpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlPYmo7
Cit9CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maWdPYmo7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCmluZGV4IDhkZjlmNzliY2MyZWJiMDVhNzhiZTgz
OWFiZWEwNjVlOWFiZmFjOTAuLjkzYzAyMTRmMzlhODE5MjQyODBmMzczYzlhYzc5Mzg2YmQyMzI0
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcApA
QCAtMTMwLDExICsxMzAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdDR0xBTkdMRUxheWVyOjpBTkdM
RUNvbnRleHQ+IEdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OmNyZWEKICAgICB9CiAgICAg
TE9HKFdlYkdMLCAiR290IEVHTENvbnRleHQiKTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QU5HTEVDb250ZXh0PihuZXcgQU5HTEVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQsIEVHTF9O
T19TVVJGQUNFKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5l
dyBBTkdMRUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkp
OwogfQogCi1HQ0dMQU5HTEVMYXllcjo6QU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlz
cGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSkKK0dD
R0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OkFOR0xFQ29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlKQogICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAt
MTY2LDYgKzE2NywxNiBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEdDR0xBTkdMRUxheWVy
OjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFOR0xFTGF5
ZXI6OkFOR0xFQ29udGV4dDo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kaXNwbGF5OworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdM
RUxheWVyOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb25maWc7Cit9CisKIEdDR0xBTkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKICAgICA6IEdDR0xMYXllcihjb250ZXh0KQogICAg
ICwgbV9hbmdsZUNvbnRleHQoQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KCkpCkBAIC0xODks
NiArMjAwLDE4IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgR0NHTEFOR0xFTGF5ZXI6OnBs
YXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYW5nbGVDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFO
R0xFTGF5ZXI6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVD
b250ZXh0KTsKKyAgICByZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwor
fQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdMRUxheWVyOjpwbGF0
Zm9ybUNvbmZpZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVDb250ZXh0KTsKKyAgICBy
ZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBOaWNvc2lhCiAKICNlbmRpZiAvLyBVU0UoTklDT1NJQSkgJiYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAppbmRleCA3
ZjIxZGE1OTA4MWE4YThkM2Q2NTYyZGYzODI0NTdlYjIxNmU2ZDM1Li43MDU3OWQyOGI4MGJiOTQz
MGU4ODM1OTQ1MzBiMDI1MGY3ODQ1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0NHTEFOR0xFTGF5ZXIuaApAQCAtNjMsMTIgKzYzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Owor
ICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOR0xFQ29udGV4dChFR0xE
aXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKyAgICAgICAgQU5HTEVDb250ZXh0KEVH
TERpc3BsYXksIEVHTENvbmZpZywgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSk7CiAKICAgICAgICAg
RUdMRGlzcGxheSBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgICAgIEVHTENvbmZpZyBtX2Nv
bmZpZyB7IG51bGxwdHIgfTsKICAgICAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQgeyBudWxscHRy
IH07CiAgICAgICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIH07CkBA
IC03OCw3ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkg
b3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBvdmVycmlkZTsKLQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5
IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xD
b25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFOR0xFQ29udGV4dD4gbV9hbmdsZUNvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaAppbmRleCAzY2QzZGRlMmI3ZDQ1MWNjNmJlODdlMWE1N2M2NjcwMmUxNGY4
YTAxLi4yOTRjMGM2YWVhNDYzMTYyMmUwNTdiMDNlOWY5Y2Y4ZjVjYzBmZjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTAyLDE3ICsxMDIsMTMgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAg
dmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENv
bmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9Ci0gICAg
c3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5n
VGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwotICAgIHN0YXRpYyBHQ0dMaW50IEVHTERy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKLSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwotI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKICAgICBHQ0dMZW51bSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKKyAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgZW51bSBjbGFz
cyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciB7CiAgICAgICAgIC8vIFJlbGVhc2VzIGN1
cnJlbnQgY29udGV4dCBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjYWxscyBkb25lIGlu
IHRoZSB0aHJlYWQuCiAgICAgICAgIFJlbGVhc2VDdXJyZW50Q29udGV4dCwKQEAgLTU1Miw4ICs1
NDgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nh
cnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRT
dGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQs
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBVU0Uo
QU5HTEUpCiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9v
bCBtYWtlQ3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCmluZGV4IDVkM2VkYTI2YmFlMTUwOGVm
MTc2YzhiMzQ1N2RmMzVkOWYwZWZiNDkuLjA4YzM3OTAyZjgxNTc4YWY1NzY1MDMwM2FmYTEzYzUw
YTFmZWY4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9BTkdMRUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCkBAIC0xNDcsMTEgKzE0NywxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QU5HTEVDb250ZXh0PiBBTkdMRUNvbnRleHQ6OmNyZWF0ZUNvbnRleHQoRUdMQ29u
dGV4dCBzaGFyaW5nQ29udAogICAgIH0KICAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29udGV4dCIp
OwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5ldyBBTkdMRUNv
bnRleHQoZGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UpKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4obmV3IEFOR0xFQ29udGV4dChkaXNwbGF5LCAgY29u
ZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkpOwogfQogCi1BTkdMRUNvbnRleHQ6OkFOR0xF
Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFj
ZSBzdXJmYWNlKQorQU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5
LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSkKICAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb25maWcoY29uZmlnKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKIHsKQEAgLTE4
Myw2ICsxODQsMTYgQEAgRUdMQ29udGV4dCBBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAorRUdMRGlzcGxheSBBTkdMRUNvbnRl
eHQ6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxheTsKK30K
KworRUdMQ29uZmlnIEFOR0xFQ29udGV4dDo6cGxhdGZvcm1Db25maWcoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NvbmZpZzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdM
RUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdM
RUNvbnRleHQuaAppbmRleCA5NDJjYzEwMjVlOGZiMjc5YTM4YzNhMGY2ZTdhM2IwYzgxMjcwZTRm
Li5iMTdjNGM5NTFjOTVjNDI0N2VkYTQzNDc0OThlMjNlODY4M2Y5ZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5o
CkBAIC01MSwxMSArNTEsMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBFR0xDb250ZXh0IHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0OwotCisgICAgRUdM
RGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdDsKKyAgICBFR0xDb25maWcgcGxhdGZvcm1D
b25maWcoKSBjb25zdDsKIHByaXZhdGU6Ci0gICAgQU5HTEVDb250ZXh0KEVHTERpc3BsYXksIEVH
TENvbnRleHQsIEVHTFN1cmZhY2UpOworICAgIEFOR0xFQ29udGV4dChFR0xEaXNwbGF5LCBFR0xD
b25maWcsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UpOwogCiAgICAgRUdMRGlzcGxheSBtX2Rpc3Bs
YXkgeyBudWxscHRyIH07CisgICAgRUdMQ29uZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9OwogICAg
IEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIEVHTFN1cmZhY2UgbV9zdXJm
YWNlIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggYmNlMjJhOWExMjMyMThkYTljNzRlZTVjMTkyYzM2Y2QzMjBm
OTNhNy4uYTc3MWYwN2EwMmVkNDRhNjdlMDgyZDQ4MTE2OGJmNTg4ZGZkY2ExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ0MSwxNyAr
NDQxLDYgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogI2VuZGlmCiB9CiAKLSNpZiBVU0UoQU5HTEUpCi1HQ0dMZW51bSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKQotewotI2lm
IFBMQVRGT1JNKFdJTikKLSAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKLSNlbHNlCi0gICAgcmV0
dXJuIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOwotI2VuZGlmCi19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKEdUSykgJiYgIVVTRShBTkdMRSkKIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMmRjYWQyMDA4ZDZkYjk2NWYxY2MzM2VlNDg3NjU5MmQxZTJkYjc1NAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIgorCisjaWYgRU5BQkxF
KFdFQkdMKSAmJiBVU0UoQU5HTEUpICYmIFVTRShURVhUVVJFX01BUFBFUikKKworI2luY2x1ZGUg
IkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR3JhcGhpY3ND
b250ZXh0R0xPcGVuR0w6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisjaWYgVVNFKE5JQ09T
SUEpCisgICAgcmV0dXJuIG1fbmljb3NpYUxheWVyLT5wbGF0Zm9ybURpc3BsYXkoKTsKKyNlbHNl
CisgICAgcmV0dXJuIG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtRGlzcGxheSgpOworI2VuZGlmCit9
CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0w6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyNpZiBVU0UoTklDT1NJQSkKKyAgICByZXR1
cm4gbV9uaWNvc2lhTGF5ZXItPnBsYXRmb3JtQ29uZmlnKCk7CisjZWxzZQorICAgIHJldHVybiBt
X3RleG1hcExheWVyLT5wbGF0Zm9ybUNvbmZpZygpOworI2VuZGlmCit9CisKK2Jvb2wgR3JhcGhp
Y3NDb250ZXh0R0xPcGVuR0w6OnJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpCit7CisgICAg
YXV0byBhdHRycyA9IGNvbnRleHRBdHRyaWJ1dGVzKCk7CisgICAgY29uc3QgYXV0byBzaXplID0g
Z2V0SW50ZXJuYWxGcmFtZWJ1ZmZlclNpemUoKTsKKyAgICBjb25zdCBpbnQgd2lkdGggPSBzaXpl
LndpZHRoKCk7CisgICAgY29uc3QgaW50IGhlaWdodCA9IHNpemUuaGVpZ2h0KCk7CisgICAgR0x1
aW50IGNvbG9yRm9ybWF0ID0gYXR0cnMuYWxwaGEgPyBHTF9SR0JBIDogR0xfUkdCOworICAgIEdM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKKyAgICBH
THVpbnQgaW50ZXJuYWxDb2xvckZvcm1hdCA9IHRleHR1cmVUYXJnZXQgPT0gR0xfVEVYVFVSRV8y
RCA/IGNvbG9yRm9ybWF0IDogbV9pbnRlcm5hbENvbG9yRm9ybWF0OworICAgIFNjb3BlZFJlc3Rv
cmVUZXh0dXJlQmluZGluZyByZXN0b3JlQmluZGluZyhkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldCh0ZXh0dXJlVGFyZ2V0KSwgdGV4dHVyZVRhcmdldCwgdGV4
dHVyZVRhcmdldCAhPSBURVhUVVJFX1JFQ1RBTkdMRV9BUkIpOworI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKKyAgICBpZiAobV9jb21wb3NpdG9yVGV4dHVyZSkgeworICAgICAgICBnbDo6
QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9jb21wb3NpdG9yVGV4dHVyZSk7CisgICAgICAg
IGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JGb3JtYXQsIHdp
ZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAwKTsKKyAgICAg
ICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50ZXJtZWRpYXRlVGV4dHVyZSk7
CisgICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFsQ29sb3JG
b3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9CWVRFLCAw
KTsKKyAgICB9CisjZW5kaWYKKyAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90
ZXh0dXJlKTsKKyAgICBnbDo6VGV4SW1hZ2UyRCh0ZXh0dXJlVGFyZ2V0LCAwLCBpbnRlcm5hbENv
bG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1hdCwgR0xfVU5TSUdORURfQllU
RSwgMCk7CisgICAgZ2w6OkZyYW1lYnVmZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9D
T0xPUl9BVFRBQ0hNRU5UMCwgdGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlLCAwKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxl
YXNlVGhyZWFkUmVzb3VyY2VzKCkKK3sKK30KKworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBs
YXRmb3JtTGF5ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKaW5kZXggZjhiMTI1YjUyNDhiOTA2
YzUzYWE4YTUyODk4MDlkOWEyOWNmNDhmNC4uZjQ0YzdhMDkzNGFhMGIyZTMyNGFiMzgzOGI4ODhk
YmQxMDdiMGFjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1M
YXllci5jcHAKQEAgLTY4LDYgKzY4LDE4IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgVGV4
dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwbGF0Zm9ybUNvbnRleHQoKSBjb25zCiAgICAg
cmV0dXJuIG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsKIH0KIAorUGxhdGZvcm1HcmFw
aGljc0NvbnRleHRHTERpc3BsYXkgVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyOjpwbGF0
Zm9ybURpc3BsYXkoKSBjb25zdAoreworICAgIEFTU0VSVChtX2dsQ29udGV4dCk7CisgICAgcmV0
dXJuIG1fZ2xDb250ZXh0LT5wbGF0Zm9ybURpc3BsYXkoKTsKK30KKworUGxhdGZvcm1HcmFwaGlj
c0NvbnRleHRHTENvbmZpZyBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnBsYXRmb3Jt
Q29uZmlnKCkgY29uc3QKK3sKKyAgICBBU1NFUlQobV9nbENvbnRleHQpOworICAgIHJldHVybiBt
X2dsQ29udGV4dC0+cGxhdGZvcm1Db25maWcoKTsKK30KKwogI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBUZXh0dXJl
TWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnByb3h5KCkgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBs
YXRmb3JtTGF5ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaAppbmRleCA0MDQyNjRhMjMzZjAwZDJhYTI3
ZjU4NmQ1ZTdmMzA0YjU5NjUyMmUwLi5jNzRlNzU1NDIxZTBjMTRkNjcxN2JkZjliMDYzYTQ3ZDg4
NjRmMmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5o
CkBAIC0zOSw2ICszOSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50
KCk7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUNvbnRleHQoKSBjb25z
dDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBwbGF0Zm9ybURpc3BsYXko
KSBjb25zdDsKKyAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29u
ZmlnKCkgY29uc3Q7CiAKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgUmVmUHRy
PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7
Cg==
</data>
<flag name="commit-queue"
          id="470337"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445195</attachid>
            <date>2021-11-26 05:53:35 -0800</date>
            <delta_ts>2021-11-26 05:58:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233515-20211126155333.patch</filename>
            <type>text/plain</type>
            <size>23943</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2YzJiMzUwZjRjZDY3
ZTc3ZDRmMDQ3YTRhOTRiZTkyYTJiNGJlNy4uZTlmNGE2MzNjY2JjYjM2NjBjYWRkOWE5YTVmYTQ4
OTY4MDdmNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaGFzIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGZvciBtb2RpZnlpbmcKKyAgICAgICAgdGhl
IGRpc3BsYXkgYnVmZmVyIGJhY2tpbmcgc3RvcmFnZSAoSU9TdXJmYWNlIG9uIENvY29hLAorICAg
ICAgICBub3JtYWwgdGV4dHVyZSBvbiBUZXh0dXJlTWFwcGVyIHZhcmlhbnRzKS4KKyAgICAgICAg
VGhpcyBtb2RpZmljYXRpb24gc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgcmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nCisgICAgICAgIG1ldGhvZCBjYWxsIGZvciBhbGwgaW1wbGVtZW50YXRp
b25zLCBzbyB0aGF0IGluIHRoZSBmdXR1cmUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgQU5HTEUgdmFyaWFudCBjYW4gYmUgcmVuYW1lZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFCisg
ICAgICAgIGFuZCBzdGlsbCBpbnZva2UgdGhhdCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOgorCiAyMDIxLTExLTI1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2UKaW5kZXggM2YzYzEwMmE1ZmE5NDJmN2JjYWQ2MDJjMmM0YjEzNDFkYjEzYmI1
MS4uNDI0YTZlM2M4MmU0ZTFhN2QxNDUzYWRhYWNjNTU3MzZlOWUyZmQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0xMCw2ICsxMCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlUG9vbC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDk2ODBlMDZjMmM2MWE4OTMzOGU5NjUyZjkzOThmYzc3ZjUyMDQ4OWEuLmZhNjA1
NGNmOTVkMTJjOTU3N2QxNDhiY2Q0MDQwZGZhMmI3YTUwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC03Niw2ICs3Niw0NyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKKworR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKK3sKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCA9PSAtMSkKKyAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihwbGF0Zm9ybURpc3Bs
YXkoKSwgcGxhdGZvcm1Db25maWcoKSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEUs
ICZtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KTsKKworICAgIHN3aXRjaCAobV9kcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCkgeworICAgIGNhc2UgRUdMX1RFWFRVUkVfMkQ6CisgICAgICAg
IHJldHVybiBURVhUVVJFXzJEOworICAgIGNhc2UgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xF
OgorICAgICAgICByZXR1cm4gVEVYVFVSRV9SRUNUQU5HTEVfQVJCOworCisgICAgfQorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGVudW0gcmV0dXJuZWQgZnJvbSBFR0xf
R2V0Q29uZmlnQXR0cmliIik7CisgICAgcmV0dXJuIDA7Cit9CisKK0dDR0xlbnVtIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2lu
Z1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KQoreworICAgIHN3aXRjaCAoZHJhd2luZ1Rh
cmdldCkgeworICAgIGNhc2UgVEVYVFVSRV8yRDoKKyAgICAgICAgcmV0dXJuIFRFWFRVUkVfQklO
RElOR18yRDsKKyAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKKyAgICAgICAgcmV0dXJu
IFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCOworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGZhbHNlLCAiSW52YWxpZCBkcmF3aW5nIHRhcmdldCIpOworICAgIHJldHVybiAtMTsK
K30KKworR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RUdMRHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpCit7Cisg
ICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7CisgICAgY2FzZSBURVhUVVJFXzJEOgorICAgICAg
ICByZXR1cm4gRUdMX1RFWFRVUkVfMkQ7CisgICAgY2FzZSBURVhUVVJFX1JFQ1RBTkdMRV9BUkI6
CisgICAgICAgIHJldHVybiBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisgICAgfQorICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGRyYXdpbmcgdGFyZ2V0Iik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VU
aHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2
aW9yKQogewogICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOwpAQCAtMTIwLDEy
ICsxNjEsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVz
b3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aQogICAgIHJldHVybiBFR0xfUmVsZWFz
ZVRocmVhZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKLXsKLX0KLSNlbmRp
ZgotCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CkBAIC0yMDEsNyArMjM2
LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICAvLyByZXNpemUgcmVndWxhciBGQk8KICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIXJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HKFdlYkdMLCAiRmF0YWw6IFVuYWJsZSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlIG9mIHNp
emUgJWQgeCAlZCIsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7
CkBAIC0yMjQsMjMgKzI1OCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9IGVsc2UKICAgICAgICAgZ2w6OkZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKLSNlbHNlCi0gICAgR0xlbnVt
IHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAgIEdMdWlu
dCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8g
Y29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0gICAgZ2w6OkJpbmRUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4
dHVyZSwgMCk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBv
c2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBt
X2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdl
dCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJl
VGFyZ2V0LCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50
ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgMCk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAg
ICBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChtX2ludGVybmFsRGVwdGhTdGVu
Y2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0KaW5kZXggZjIwMWRkY2M5Nzg2MWY2YTg2MjZjYWQyZGFiZmNiZjMzNzI1MzZhNC4uMTFiYTEy
MmI3YTM3ZmE3MTc2ZGM1Mzc1NDA3MmM3N2VjYjIxOWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC00NjcsNDYgKzQ2Nyw2IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJU
ZXh0dXJlVGFyZ2V0KCkKLXsKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCA9
PSAtMSkKLSAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihtX2Rpc3BsYXlPYmosIG1fY29uZmln
T2JqLCBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRSwgJm1fZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQpOwotCi0gICAgc3dpdGNoIChtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0
KSB7Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgcmV0dXJuIFRFWFRVUkVfMkQ7
Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU6Ci0gICAgICAgIHJldHVybiBU
RVhUVVJFX1JFQ1RBTkdMRV9BUkI7Ci0KLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShm
YWxzZSwgIkludmFsaWQgZW51bSByZXR1cm5lZCBmcm9tIEVHTF9HZXRDb25maWdBdHRyaWIiKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRy
YXdpbmdUYXJnZXQpCi17Ci0gICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7Ci0gICAgY2FzZSBU
RVhUVVJFXzJEOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HXzJEOwotICAgIGNhc2Ug
VEVYVFVSRV9SRUNUQU5HTEVfQVJCOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkI7Ci0gICAgfQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZh
bGlkIGRyYXdpbmcgdGFyZ2V0Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1HQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldEZvckRyYXdp
bmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCkKLXsKLSAgICBzd2l0Y2ggKGRyYXdpbmdU
YXJnZXQpIHsKLSAgICBjYXNlIFRFWFRVUkVfMkQ6Ci0gICAgICAgIHJldHVybiBFR0xfVEVYVFVS
RV8yRDsKLSAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKLSAgICAgICAgcmV0dXJuIEVH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShmYWxzZSwgIkludmFsaWQgZHJhd2luZyB0YXJnZXQiKTsKLSAgICByZXR1cm4gMDsKLX0KLQog
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTYxOSw3ICs1NzksNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcikKIHsKICAgICBHQ0dM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKLSAgICBT
Y29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXQoKSksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVf
QVJCKTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJh
d2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdl
dCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJC
KTsKICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKICAgICBp
ZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBwYnVmZmVyLCBFR0xfQkFDS19CVUZG
RVIpKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHBidWZmZXIp
OwpAQCAtODQxLDYgKzgwMSwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlU
ZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtRwogfQogI2VuZGlm
CiAKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwbGF0Zm9ybURpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlPYmo7
Cit9CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maWdPYmo7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCmluZGV4IDhkZjlmNzliY2MyZWJiMDVhNzhiZTgz
OWFiZWEwNjVlOWFiZmFjOTAuLjkzYzAyMTRmMzlhODE5MjQyODBmMzczYzlhYzc5Mzg2YmQyMzI0
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcApA
QCAtMTMwLDExICsxMzAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdDR0xBTkdMRUxheWVyOjpBTkdM
RUNvbnRleHQ+IEdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OmNyZWEKICAgICB9CiAgICAg
TE9HKFdlYkdMLCAiR290IEVHTENvbnRleHQiKTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QU5HTEVDb250ZXh0PihuZXcgQU5HTEVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQsIEVHTF9O
T19TVVJGQUNFKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5l
dyBBTkdMRUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkp
OwogfQogCi1HQ0dMQU5HTEVMYXllcjo6QU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlz
cGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSkKK0dD
R0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OkFOR0xFQ29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlKQogICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAt
MTY2LDYgKzE2NywxNiBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEdDR0xBTkdMRUxheWVy
OjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFOR0xFTGF5
ZXI6OkFOR0xFQ29udGV4dDo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kaXNwbGF5OworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdM
RUxheWVyOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb25maWc7Cit9CisKIEdDR0xBTkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKICAgICA6IEdDR0xMYXllcihjb250ZXh0KQogICAg
ICwgbV9hbmdsZUNvbnRleHQoQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KCkpCkBAIC0xODks
NiArMjAwLDE4IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgR0NHTEFOR0xFTGF5ZXI6OnBs
YXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYW5nbGVDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFO
R0xFTGF5ZXI6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVD
b250ZXh0KTsKKyAgICByZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwor
fQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdMRUxheWVyOjpwbGF0
Zm9ybUNvbmZpZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVDb250ZXh0KTsKKyAgICBy
ZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBOaWNvc2lhCiAKICNlbmRpZiAvLyBVU0UoTklDT1NJQSkgJiYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAppbmRleCA3
ZjIxZGE1OTA4MWE4YThkM2Q2NTYyZGYzODI0NTdlYjIxNmU2ZDM1Li43MDU3OWQyOGI4MGJiOTQz
MGU4ODM1OTQ1MzBiMDI1MGY3ODQ1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0NHTEFOR0xFTGF5ZXIuaApAQCAtNjMsMTIgKzYzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Owor
ICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOR0xFQ29udGV4dChFR0xE
aXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKyAgICAgICAgQU5HTEVDb250ZXh0KEVH
TERpc3BsYXksIEVHTENvbmZpZywgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSk7CiAKICAgICAgICAg
RUdMRGlzcGxheSBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgICAgIEVHTENvbmZpZyBtX2Nv
bmZpZyB7IG51bGxwdHIgfTsKICAgICAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQgeyBudWxscHRy
IH07CiAgICAgICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIH07CkBA
IC03OCw3ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkg
b3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBvdmVycmlkZTsKLQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5
IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xD
b25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFOR0xFQ29udGV4dD4gbV9hbmdsZUNvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaAppbmRleCAzY2QzZGRlMmI3ZDQ1MWNjNmJlODdlMWE1N2M2NjcwMmUxNGY4
YTAxLi4yOTRjMGM2YWVhNDYzMTYyMmUwNTdiMDNlOWY5Y2Y4ZjVjYzBmZjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTAyLDE3ICsxMDIsMTMgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAg
dmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENv
bmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9Ci0gICAg
c3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5n
VGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwotICAgIHN0YXRpYyBHQ0dMaW50IEVHTERy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKLSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwotI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKICAgICBHQ0dMZW51bSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKKyAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgZW51bSBjbGFz
cyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciB7CiAgICAgICAgIC8vIFJlbGVhc2VzIGN1
cnJlbnQgY29udGV4dCBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjYWxscyBkb25lIGlu
IHRoZSB0aHJlYWQuCiAgICAgICAgIFJlbGVhc2VDdXJyZW50Q29udGV4dCwKQEAgLTU1Miw4ICs1
NDgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nh
cnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRT
dGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQs
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBVU0Uo
QU5HTEUpCiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9v
bCBtYWtlQ3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCmluZGV4IDVkM2VkYTI2YmFlMTUwOGVm
MTc2YzhiMzQ1N2RmMzVkOWYwZWZiNDkuLjA4YzM3OTAyZjgxNTc4YWY1NzY1MDMwM2FmYTEzYzUw
YTFmZWY4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9BTkdMRUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCkBAIC0xNDcsMTEgKzE0NywxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QU5HTEVDb250ZXh0PiBBTkdMRUNvbnRleHQ6OmNyZWF0ZUNvbnRleHQoRUdMQ29u
dGV4dCBzaGFyaW5nQ29udAogICAgIH0KICAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29udGV4dCIp
OwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5ldyBBTkdMRUNv
bnRleHQoZGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UpKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4obmV3IEFOR0xFQ29udGV4dChkaXNwbGF5LCAgY29u
ZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkpOwogfQogCi1BTkdMRUNvbnRleHQ6OkFOR0xF
Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFj
ZSBzdXJmYWNlKQorQU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5
LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSkKICAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb25maWcoY29uZmlnKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKIHsKQEAgLTE4
Myw2ICsxODQsMTYgQEAgRUdMQ29udGV4dCBBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAorRUdMRGlzcGxheSBBTkdMRUNvbnRl
eHQ6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxheTsKK30K
KworRUdMQ29uZmlnIEFOR0xFQ29udGV4dDo6cGxhdGZvcm1Db25maWcoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NvbmZpZzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdM
RUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdM
RUNvbnRleHQuaAppbmRleCA5NDJjYzEwMjVlOGZiMjc5YTM4YzNhMGY2ZTdhM2IwYzgxMjcwZTRm
Li5iMTdjNGM5NTFjOTVjNDI0N2VkYTQzNDc0OThlMjNlODY4M2Y5ZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5o
CkBAIC01MSwxMSArNTEsMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBFR0xDb250ZXh0IHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0OwotCisgICAgRUdM
RGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdDsKKyAgICBFR0xDb25maWcgcGxhdGZvcm1D
b25maWcoKSBjb25zdDsKIHByaXZhdGU6Ci0gICAgQU5HTEVDb250ZXh0KEVHTERpc3BsYXksIEVH
TENvbnRleHQsIEVHTFN1cmZhY2UpOworICAgIEFOR0xFQ29udGV4dChFR0xEaXNwbGF5LCBFR0xD
b25maWcsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UpOwogCiAgICAgRUdMRGlzcGxheSBtX2Rpc3Bs
YXkgeyBudWxscHRyIH07CisgICAgRUdMQ29uZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9OwogICAg
IEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIEVHTFN1cmZhY2UgbV9zdXJm
YWNlIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggYmNlMjJhOWExMjMyMThkYTljNzRlZTVjMTkyYzM2Y2QzMjBm
OTNhNy4uYTc3MWYwN2EwMmVkNDRhNjdlMDgyZDQ4MTE2OGJmNTg4ZGZkY2ExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ0MSwxNyAr
NDQxLDYgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogI2VuZGlmCiB9CiAKLSNpZiBVU0UoQU5HTEUpCi1HQ0dMZW51bSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKQotewotI2lm
IFBMQVRGT1JNKFdJTikKLSAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKLSNlbHNlCi0gICAgcmV0
dXJuIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOwotI2VuZGlmCi19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKEdUSykgJiYgIVVTRShBTkdMRSkKIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDg1MzlhN2Q5Mjk4MTE0NWRjMDYwMDFiNTc0Y2E4YzlhNzFmODk1NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIgorCisjaWYgRU5BQkxF
KFdFQkdMKSAmJiBVU0UoQU5HTEUpICYmIFVTRShURVhUVVJFX01BUFBFUikKKworI2luY2x1ZGUg
IkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCisKKyNpZiBVU0Uo
TklDT1NJQSkKKyNpbmNsdWRlICJOaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaCIKKyNlbHNlCisjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyNpZiBVU0UoTklD
T1NJQSkKKyAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXItPnBsYXRmb3JtRGlzcGxheSgpOworI2Vs
c2UKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci0+cGxhdGZvcm1EaXNwbGF5KCk7CisjZW5kaWYK
K30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGxhdGZvcm1Db25maWcoKSBjb25zdAoreworI2lmIFVTRShOSUNPU0lBKQorICAgIHJl
dHVybiBtX25pY29zaWFMYXllci0+cGxhdGZvcm1Db25maWcoKTsKKyNlbHNlCisgICAgcmV0dXJu
IG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtQ29uZmlnKCk7CisjZW5kaWYKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKK3sKKyAg
ICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvIHNpemUg
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgIGNvbnN0IGludCB3aWR0aCA9IHNp
emUud2lkdGgoKTsKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBH
THVpbnQgY29sb3JGb3JtYXQgPSBhdHRycy5hbHBoYSA/IEdMX1JHQkEgOiBHTF9SR0I7CisgICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAg
IEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJF
XzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7CisgICAgU2NvcGVkUmVz
dG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0
ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7CisgICAgICAgIGds
OjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICAg
ICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAg
ICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJl
KTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xv
ckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUs
IDApOworICAgIH0KKyNlbmRpZgorICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBt
X3RleHR1cmUpOworICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFs
Q29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9C
WVRFLCAwKTsKKyAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUsIDApOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJl
bGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dM
UGxhdGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAppbmRleCBmOGIxMjViNTI0OGI5
MDZjNTNhYThhNTI4OTgwOWQ5YTI5Y2Y0OGY0Li5mNDRjN2EwOTM0YWEwYjJlMzI0YWIzODM4Yjg4
OGRiZDEwN2IwYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyLmNwcApAQCAtNjgsNiArNjgsMTggQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBU
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnMKICAg
ICByZXR1cm4gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogfQogCitQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMRGlzcGxheSBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnBs
YXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZ2xDb250ZXh0KTsKKyAgICBy
ZXR1cm4gbV9nbENvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOworfQorCitQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dEdMQ29uZmlnIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cGxhdGZv
cm1Db25maWcoKSBjb25zdAoreworICAgIEFTU0VSVChtX2dsQ29udGV4dCk7CisgICAgcmV0dXJu
IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbmZpZygpOworfQorCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IFRleHR1
cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cHJveHkoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dM
UGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCmluZGV4IDQwNDI2NGEyMzNmMDBkMmFh
MjdmNTg2ZDVlN2YzMDRiNTk2NTIyZTAuLmM3NGU3NTU0MjFlMGMxNGQ2NzE3YmRmOWIwNjNhNDdk
ODg2NGYyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVy
LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtQ29udGV4dCgpIGNv
bnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxh
eSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1D
b25maWcoKSBjb25zdDsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlk
ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>445196</attachid>
            <date>2021-11-26 05:58:21 -0800</date>
            <delta_ts>2021-11-29 01:41:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-233515-20211126155819.patch</filename>
            <type>text/plain</type>
            <size>23943</size>
            <attacher name="Kimmo Kinnunen">kkinnunen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg2MTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU2YzJiMzUwZjRjZDY3
ZTc3ZDRmMDQ3YTRhOTRiZTkyYTJiNGJlNy4uZTlmNGE2MzNjY2JjYjM2NjBjYWRkOWE5YTVmYTQ4
OTY4MDdmNzQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIxLTExLTI2ICBLaW1t
byBLaW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CisKKyAgICAgICAgR3JhcGhpY3NDb250
ZXh0R0xBTkdMRS5jcHAgaGFzIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzUxNQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEdyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwIGhhcyBwbGF0Zm9ybSBzcGVjaWZpYyBjb2RlIGZvciBtb2RpZnlpbmcKKyAgICAgICAgdGhl
IGRpc3BsYXkgYnVmZmVyIGJhY2tpbmcgc3RvcmFnZSAoSU9TdXJmYWNlIG9uIENvY29hLAorICAg
ICAgICBub3JtYWwgdGV4dHVyZSBvbiBUZXh0dXJlTWFwcGVyIHZhcmlhbnRzKS4KKyAgICAgICAg
VGhpcyBtb2RpZmljYXRpb24gc2hvdWxkIGJlIGRvbmUgdGhyb3VnaCB0aGUgcmVzaGFwZURpc3Bs
YXlCdWZmZXJCYWNraW5nCisgICAgICAgIG1ldGhvZCBjYWxsIGZvciBhbGwgaW1wbGVtZW50YXRp
b25zLCBzbyB0aGF0IGluIHRoZSBmdXR1cmUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0R0xPcGVu
R0wgQU5HTEUgdmFyaWFudCBjYW4gYmUgcmVuYW1lZCBHcmFwaGljc0NvbnRleHRHTEFOR0xFCisg
ICAgICAgIGFuZCBzdGlsbCBpbnZva2UgdGhhdCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cywgcmVmYWN0b3IuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hbmds
ZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpyZXNoYXBlRkJPcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENv
Y29hLm1tOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmJpbmRE
aXNwbGF5QnVmZmVyQmFja2luZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3Blbmds
L0dyYXBoaWNzQ29udGV4dEdMT3BlbkdMLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlckFOR0xFLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlC
dWZmZXJCYWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
OjpwbGF0Zm9ybVJlbGVhc2VUaHJlYWRSZXNvdXJjZXMpOgorCiAyMDIxLTExLTI1ICBLaW1tbyBL
aW5udW5lbiAgPGtraW5udW5lbkBhcHBsZS5jb20+CiAKICAgICAgICAgR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuY3BwIGNvbnRhaW5zIE9wZW5HTCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBhbmQg
cGxhdGZvcm0gc3BlY2lmaWMgY29kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vVGV4dHVyZU1hcHBlci5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVN
YXBwZXIuY21ha2UKaW5kZXggM2YzYzEwMmE1ZmE5NDJmN2JjYWQ2MDJjMmM0YjEzNDFkYjEzYmI1
MS4uNDI0YTZlM2M4MmU0ZTFhN2QxNDUzYWRhYWNjNTU3MzZlOWUyZmQxZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4dHVyZU1hcHBlci5jbWFrZQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCkBAIC0xMCw2ICsxMCw3IEBAIGxp
c3QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9C
aXRtYXBUZXh0dXJlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlUG9vbC5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NDb250ZXh0
R0xUZXh0dXJlTWFwcGVyLmNwcAorICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGlj
c0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hbmdsZS9HcmFwaGljc0NvbnRleHRHTEFOR0xFLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUu
Y3BwCmluZGV4IDk2ODBlMDZjMmM2MWE4OTMzOGU5NjUyZjkzOThmYzc3ZjUyMDQ4OWEuLmZhNjA1
NGNmOTVkMTJjOTU3N2QxNDhiY2Q0MDQwZGZhMmI3YTUwOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29udGV4dEdMQU5HTEUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2FuZ2xlL0dyYXBoaWNzQ29u
dGV4dEdMQU5HTEUuY3BwCkBAIC03Niw2ICs3Niw0NyBAQCBzdGF0aWMgdm9pZCB3aXBlQWxwaGFD
aGFubmVsRnJvbVBpeGVscyhpbnQgd2lkdGgsIGludCBoZWlnaHQsIHVuc2lnbmVkIGNoYXIqIHBp
eAogfQogI2VuZGlmCiAKKworR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdp
bmdCdWZmZXJUZXh0dXJlVGFyZ2V0KCkKK3sKKyAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVy
ZVRhcmdldCA9PSAtMSkKKyAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihwbGF0Zm9ybURpc3Bs
YXkoKSwgcGxhdGZvcm1Db25maWcoKSwgRUdMX0JJTkRfVE9fVEVYVFVSRV9UQVJHRVRfQU5HTEUs
ICZtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0KTsKKworICAgIHN3aXRjaCAobV9kcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldCkgeworICAgIGNhc2UgRUdMX1RFWFRVUkVfMkQ6CisgICAgICAg
IHJldHVybiBURVhUVVJFXzJEOworICAgIGNhc2UgRUdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xF
OgorICAgICAgICByZXR1cm4gVEVYVFVSRV9SRUNUQU5HTEVfQVJCOworCisgICAgfQorICAgIEFT
U0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGVudW0gcmV0dXJuZWQgZnJvbSBFR0xf
R2V0Q29uZmlnQXR0cmliIik7CisgICAgcmV0dXJuIDA7Cit9CisKK0dDR0xlbnVtIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2lu
Z1RhcmdldChHQ0dMZW51bSBkcmF3aW5nVGFyZ2V0KQoreworICAgIHN3aXRjaCAoZHJhd2luZ1Rh
cmdldCkgeworICAgIGNhc2UgVEVYVFVSRV8yRDoKKyAgICAgICAgcmV0dXJuIFRFWFRVUkVfQklO
RElOR18yRDsKKyAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKKyAgICAgICAgcmV0dXJu
IFRFWFRVUkVfQklORElOR19SRUNUQU5HTEVfQVJCOworICAgIH0KKyAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKGZhbHNlLCAiSW52YWxpZCBkcmF3aW5nIHRhcmdldCIpOworICAgIHJldHVybiAtMTsK
K30KKworR0NHTGludCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6RUdMRHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpCit7Cisg
ICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7CisgICAgY2FzZSBURVhUVVJFXzJEOgorICAgICAg
ICByZXR1cm4gRUdMX1RFWFRVUkVfMkQ7CisgICAgY2FzZSBURVhUVVJFX1JFQ1RBTkdMRV9BUkI6
CisgICAgICAgIHJldHVybiBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU7CisgICAgfQorICAg
IEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZhbGlkIGRyYXdpbmcgdGFyZ2V0Iik7Cisg
ICAgcmV0dXJuIDA7Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlbGVhc2VU
aHJlYWRSZXNvdXJjZXMoUmVsZWFzZVRocmVhZFJlc291cmNlQmVoYXZpb3IgcmVsZWFzZUJlaGF2
aW9yKQogewogICAgIHBsYXRmb3JtUmVsZWFzZVRocmVhZFJlc291cmNlcygpOwpAQCAtMTIwLDEy
ICsxNjEsNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpyZWxlYXNlVGhyZWFkUmVz
b3VyY2VzKFJlbGVhc2VUaHJlYWRSZXNvdXJjZUJlaGF2aQogICAgIHJldHVybiBFR0xfUmVsZWFz
ZVRocmVhZCgpOwogfQogCi0jaWYgIVBMQVRGT1JNKENPQ09BKQotdm9pZCBHcmFwaGljc0NvbnRl
eHRHTE9wZW5HTDo6cGxhdGZvcm1SZWxlYXNlVGhyZWFkUmVzb3VyY2VzKCkKLXsKLX0KLSNlbmRp
ZgotCiBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6
cmVhZFBpeGVsc0ZvclBhaW50UmVzdWx0cygpCiB7CiAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9y
bWF0IHsgQWxwaGFQcmVtdWx0aXBsaWNhdGlvbjo6VW5wcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1h
dDo6UkdCQTgsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpIH07CkBAIC0yMDEsNyArMjM2
LDYgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZUZCT3MoY29uc3QgSW50
U2l6ZSYgc2l6ZSkKICAgICAvLyByZXNpemUgcmVndWxhciBGQk8KICAgICBnbDo6QmluZEZyYW1l
YnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCBtX2Zibyk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKICAg
ICBpZiAoIXJlc2hhcGVEaXNwbGF5QnVmZmVyQmFja2luZygpKSB7CiAgICAgICAgIFJFTEVBU0Vf
TE9HKFdlYkdMLCAiRmF0YWw6IFVuYWJsZSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlIG9mIHNp
emUgJWQgeCAlZCIsIHdpZHRoLCBoZWlnaHQpOwogICAgICAgICBmb3JjZUNvbnRleHRMb3N0KCk7
CkBAIC0yMjQsMjMgKzI1OCw2IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnJlc2hh
cGVGQk9zKGNvbnN0IEludFNpemUmIHNpemUpCiAgICAgICAgIGdsOjpCaW5kRnJhbWVidWZmZXIo
R0xfRlJBTUVCVUZGRVIsIG1fZmJvKTsKICAgICB9IGVsc2UKICAgICAgICAgZ2w6OkZyYW1lYnVm
ZmVyVGV4dHVyZTJEKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwgZHJhd2lu
Z0J1ZmZlclRleHR1cmVUYXJnZXQoKSwgbV90ZXh0dXJlLCAwKTsKLSNlbHNlCi0gICAgR0xlbnVt
IHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOwotICAgIEdMdWlu
dCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJFXzJEID8g
Y29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7Ci0gICAgZ2w6OkJpbmRUZXh0dXJl
KHRleHR1cmVUYXJnZXQsIG1fdGV4dHVyZSk7Ci0gICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRh
cmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3Jt
YXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgIGdsOjpGcmFtZWJ1ZmZlclRleHR1cmUyRChH
TF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIHRleHR1cmVUYXJnZXQsIG1fdGV4
dHVyZSwgMCk7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotICAgIGlmIChtX2NvbXBv
c2l0b3JUZXh0dXJlKSB7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBt
X2NvbXBvc2l0b3JUZXh0dXJlKTsKLSAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdl
dCwgMCwgbV9pbnRlcm5hbENvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBjb2xvckZvcm1h
dCwgR0xfVU5TSUdORURfQllURSwgMCk7Ci0gICAgICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJl
VGFyZ2V0LCAwKTsKLSAgICAgICAgZ2w6OkJpbmRUZXh0dXJlKHRleHR1cmVUYXJnZXQsIG1faW50
ZXJtZWRpYXRlVGV4dHVyZSk7Ci0gICAgICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQs
IDAsIG1faW50ZXJuYWxDb2xvckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQs
IEdMX1VOU0lHTkVEX0JZVEUsIDApOwotICAgICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRh
cmdldCwgMCk7Ci0gICAgfQotI2VuZGlmCi0jZW5kaWYgLy8gUExBVEZPUk0oQ09DT0EpCiAKICAg
ICBhdHRhY2hEZXB0aEFuZFN0ZW5jaWxCdWZmZXJJZk5lZWRlZChtX2ludGVybmFsRGVwdGhTdGVu
Y2lsRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2Eu
bW0KaW5kZXggZjIwMWRkY2M5Nzg2MWY2YTg2MjZjYWQyZGFiZmNiZjMzNzI1MzZhNC4uMTFiYTEy
MmI3YTM3ZmE3MTc2ZGM1Mzc1NDA3MmM3N2VjYjIxOWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRl
eHRHTENvY29hLm1tCkBAIC00NjcsNDYgKzQ2Nyw2IEBAIFBsYXRmb3JtTGF5ZXIqIEdyYXBoaWNz
Q29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRyYXdpbmdCdWZmZXJU
ZXh0dXJlVGFyZ2V0KCkKLXsKLSAgICBpZiAobV9kcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCA9
PSAtMSkKLSAgICAgICAgRUdMX0dldENvbmZpZ0F0dHJpYihtX2Rpc3BsYXlPYmosIG1fY29uZmln
T2JqLCBFR0xfQklORF9UT19URVhUVVJFX1RBUkdFVF9BTkdMRSwgJm1fZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXQpOwotCi0gICAgc3dpdGNoIChtX2RyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0
KSB7Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV8yRDoKLSAgICAgICAgcmV0dXJuIFRFWFRVUkVfMkQ7
Ci0gICAgY2FzZSBFR0xfVEVYVFVSRV9SRUNUQU5HTEVfQU5HTEU6Ci0gICAgICAgIHJldHVybiBU
RVhUVVJFX1JFQ1RBTkdMRV9BUkI7Ci0KLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FHRShm
YWxzZSwgIkludmFsaWQgZW51bSByZXR1cm5lZCBmcm9tIEVHTF9HZXRDb25maWdBdHRyaWIiKTsK
LSAgICByZXR1cm4gMDsKLX0KLQotR0NHTGVudW0gR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmRy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KEdDR0xlbnVtIGRy
YXdpbmdUYXJnZXQpCi17Ci0gICAgc3dpdGNoIChkcmF3aW5nVGFyZ2V0KSB7Ci0gICAgY2FzZSBU
RVhUVVJFXzJEOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HXzJEOwotICAgIGNhc2Ug
VEVYVFVSRV9SRUNUQU5HTEVfQVJCOgotICAgICAgICByZXR1cm4gVEVYVFVSRV9CSU5ESU5HX1JF
Q1RBTkdMRV9BUkI7Ci0gICAgfQotICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoZmFsc2UsICJJbnZh
bGlkIGRyYXdpbmcgdGFyZ2V0Iik7Ci0gICAgcmV0dXJuIC0xOwotfQotCi1HQ0dMaW50IEdyYXBo
aWNzQ29udGV4dEdMT3BlbkdMOjpFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldEZvckRyYXdp
bmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCkKLXsKLSAgICBzd2l0Y2ggKGRyYXdpbmdU
YXJnZXQpIHsKLSAgICBjYXNlIFRFWFRVUkVfMkQ6Ci0gICAgICAgIHJldHVybiBFR0xfVEVYVFVS
RV8yRDsKLSAgICBjYXNlIFRFWFRVUkVfUkVDVEFOR0xFX0FSQjoKLSAgICAgICAgcmV0dXJuIEVH
TF9URVhUVVJFX1JFQ1RBTkdMRV9BTkdMRTsKLSAgICB9Ci0gICAgQVNTRVJUX1dJVEhfTUVTU0FH
RShmYWxzZSwgIkludmFsaWQgZHJhd2luZyB0YXJnZXQiKTsKLSAgICByZXR1cm4gMDsKLX0KLQog
Ym9vbCBHcmFwaGljc0NvbnRleHRHTE9wZW5HTDo6bWFrZUNvbnRleHRDdXJyZW50KCkKIHsKICAg
ICBpZiAoIW1fY29udGV4dE9iaikKQEAgLTYxOSw3ICs1NzksNyBAQCBib29sIEdyYXBoaWNzQ29u
dGV4dEdMT3BlbkdMOjphbGxvY2F0ZUFuZEJpbmREaXNwbGF5QnVmZmVyQmFja2luZygpCiBib29s
IEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpiaW5kRGlzcGxheUJ1ZmZlckJhY2tpbmcoc3RkOjp1
bmlxdWVfcHRyPElPU3VyZmFjZT4gYmFja2luZywgdm9pZCogcGJ1ZmZlcikKIHsKICAgICBHQ0dM
ZW51bSB0ZXh0dXJlVGFyZ2V0ID0gZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKTsKLSAgICBT
Y29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJhd2luZ0J1ZmZlclRl
eHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQoZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJn
ZXQoKSksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVf
QVJCKTsKKyAgICBTY29wZWRSZXN0b3JlVGV4dHVyZUJpbmRpbmcgcmVzdG9yZUJpbmRpbmcoZHJh
d2luZ0J1ZmZlclRleHR1cmVUYXJnZXRRdWVyeUZvckRyYXdpbmdUYXJnZXQodGV4dHVyZVRhcmdl
dCksIHRleHR1cmVUYXJnZXQsIHRleHR1cmVUYXJnZXQgIT0gVEVYVFVSRV9SRUNUQU5HTEVfQVJC
KTsKICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV90ZXh0dXJlKTsKICAgICBp
ZiAoIUVHTF9CaW5kVGV4SW1hZ2UobV9kaXNwbGF5T2JqLCBwYnVmZmVyLCBFR0xfQkFDS19CVUZG
RVIpKSB7CiAgICAgICAgIEVHTF9EZXN0cm95U3VyZmFjZShtX2Rpc3BsYXlPYmosIHBidWZmZXIp
OwpAQCAtODQxLDYgKzgwMSwxNiBAQCBib29sIEdyYXBoaWNzQ29udGV4dEdMQ29jb2E6OmNvcHlU
ZXh0dXJlRnJvbU1lZGlhKE1lZGlhUGxheWVyJiBwbGF5ZXIsIFBsYXRmb3JtRwogfQogI2VuZGlm
CiAKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IEdyYXBoaWNzQ29udGV4dEdMT3Bl
bkdMOjpwbGF0Zm9ybURpc3BsYXkoKSBjb25zdAoreworICAgIHJldHVybiBtX2Rpc3BsYXlPYmo7
Cit9CisKK1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgR3JhcGhpY3NDb250ZXh0R0xP
cGVuR0w6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jb25maWdPYmo7
Cit9CisKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFHQ0dMQU5HTEVM
YXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1h
cC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuY3BwCmluZGV4IDhkZjlmNzliY2MyZWJiMDVhNzhiZTgz
OWFiZWEwNjVlOWFiZmFjOTAuLjkzYzAyMTRmMzlhODE5MjQyODBmMzczYzlhYzc5Mzg2YmQyMzI0
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEv
dGV4bWFwL05pY29zaWFHQ0dMQU5HTEVMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmNwcApA
QCAtMTMwLDExICsxMzAsMTIgQEAgc3RkOjp1bmlxdWVfcHRyPEdDR0xBTkdMRUxheWVyOjpBTkdM
RUNvbnRleHQ+IEdDR0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OmNyZWEKICAgICB9CiAgICAg
TE9HKFdlYkdMLCAiR290IEVHTENvbnRleHQiKTsKIAotICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9w
dHI8QU5HTEVDb250ZXh0PihuZXcgQU5HTEVDb250ZXh0KGRpc3BsYXksIGNvbnRleHQsIEVHTF9O
T19TVVJGQUNFKSk7CisgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5l
dyBBTkdMRUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkp
OwogfQogCi1HQ0dMQU5HTEVMYXllcjo6QU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlz
cGxheSBkaXNwbGF5LCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSkKK0dD
R0xBTkdMRUxheWVyOjpBTkdMRUNvbnRleHQ6OkFOR0xFQ29udGV4dChFR0xEaXNwbGF5IGRpc3Bs
YXksIEVHTENvbmZpZyBjb25maWcsIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFjZSBzdXJm
YWNlKQogICAgIDogbV9kaXNwbGF5KGRpc3BsYXkpCisgICAgLCBtX2NvbmZpZyhjb25maWcpCiAg
ICAgLCBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fc3VyZmFjZShzdXJmYWNlKQogewpAQCAt
MTY2LDYgKzE2NywxNiBAQCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIEdDR0xBTkdMRUxheWVy
OjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fY29u
dGV4dDsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFOR0xFTGF5
ZXI6OkFOR0xFQ29udGV4dDo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9kaXNwbGF5OworfQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdM
RUxheWVyOjpBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29uZmlnKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jb25maWc7Cit9CisKIEdDR0xBTkdMRUxheWVyOjpHQ0dMQU5HTEVMYXllcihHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTCYgY29udGV4dCkKICAgICA6IEdDR0xMYXllcihjb250ZXh0KQogICAg
ICwgbV9hbmdsZUNvbnRleHQoQU5HTEVDb250ZXh0OjpjcmVhdGVDb250ZXh0KCkpCkBAIC0xODks
NiArMjAwLDE4IEBAIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0wgR0NHTEFOR0xFTGF5ZXI6OnBs
YXRmb3JtQ29udGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYW5nbGVDb250ZXh0LT5wbGF0Zm9y
bUNvbnRleHQoKTsKIH0KIAorUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgR0NHTEFO
R0xFTGF5ZXI6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVD
b250ZXh0KTsKKyAgICByZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOwor
fQorCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIEdDR0xBTkdMRUxheWVyOjpwbGF0
Zm9ybUNvbmZpZygpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fYW5nbGVDb250ZXh0KTsKKyAgICBy
ZXR1cm4gbV9hbmdsZUNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBOaWNvc2lhCiAKICNlbmRpZiAvLyBVU0UoTklDT1NJQSkgJiYgVVNFKFRFWFRVUkVfTUFQ
UEVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3Np
YS90ZXhtYXAvTmljb3NpYUdDR0xBTkdMRUxheWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAppbmRleCA3
ZjIxZGE1OTA4MWE4YThkM2Q2NTYyZGYzODI0NTdlYjIxNmU2ZDM1Li43MDU3OWQyOGI4MGJiOTQz
MGU4ODM1OTQ1MzBiMDI1MGY3ODQ1MzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lh
R0NHTEFOR0xFTGF5ZXIuaApAQCAtNjMsMTIgKzYzLDE1IEBAIHB1YmxpYzoKICAgICAgICAgYm9v
bCBtYWtlQ29udGV4dEN1cnJlbnQoKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgICAgIFBsYXRm
b3JtR3JhcGhpY3NDb250ZXh0R0wgcGxhdGZvcm1Db250ZXh0KCkgY29uc3Q7CisgICAgICAgIFBs
YXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Owor
ICAgICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMQ29uZmlnIHBsYXRmb3JtQ29uZmlnKCkg
Y29uc3Q7CiAjZW5kaWYKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIEFOR0xFQ29udGV4dChFR0xE
aXNwbGF5LCBFR0xDb250ZXh0LCBFR0xTdXJmYWNlKTsKKyAgICAgICAgQU5HTEVDb250ZXh0KEVH
TERpc3BsYXksIEVHTENvbmZpZywgRUdMQ29udGV4dCwgRUdMU3VyZmFjZSk7CiAKICAgICAgICAg
RUdMRGlzcGxheSBtX2Rpc3BsYXkgeyBudWxscHRyIH07CisgICAgICAgIEVHTENvbmZpZyBtX2Nv
bmZpZyB7IG51bGxwdHIgfTsKICAgICAgICAgRUdMQ29udGV4dCBtX2NvbnRleHQgeyBudWxscHRy
IH07CiAgICAgICAgIEVHTFN1cmZhY2UgbV9zdXJmYWNlIHsgbnVsbHB0ciB9OwogICAgIH07CkBA
IC03OCw3ICs4MSw4IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbWFrZUNvbnRleHRDdXJyZW50KCkg
b3ZlcnJpZGU7CiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBwbGF0Zm9ybUNvbnRleHQo
KSBjb25zdCBvdmVycmlkZTsKLQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5
IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xD
b25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKIHByaXZhdGU6CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEFOR0xFQ29udGV4dD4gbV9hbmdsZUNvbnRleHQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0dyYXBoaWNzQ29udGV4dEdMT3BlbkdM
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250
ZXh0R0xPcGVuR0wuaAppbmRleCAzY2QzZGRlMmI3ZDQ1MWNjNmJlODdlMWE1N2M2NjcwMmUxNGY4
YTAxLi4yOTRjMGM2YWVhNDYzMTYyMmUwNTdiMDNlOWY5Y2Y4ZjVjYzBmZjM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvR3JhcGhpY3NDb250ZXh0
R0xPcGVuR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0wuaApAQCAtMTAyLDE3ICsxMDIsMTMgQEAgY2xhc3MgV0VC
Q09SRV9FWFBPUlQgR3JhcGhpY3NDb250ZXh0R0xPcGVuR0wgOiBwdWJsaWMgR3JhcGhpY3NDb250
ZXh0R0wKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmUHRyPEdyYXBoaWNzQ29udGV4dEdMT3BlbkdM
PiBjcmVhdGUoR3JhcGhpY3NDb250ZXh0R0xBdHRyaWJ1dGVzLCBIb3N0V2luZG93Kik7CiAgICAg
dmlydHVhbCB+R3JhcGhpY3NDb250ZXh0R0xPcGVuR0woKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
ICAgICBQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAg
UGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTERpc3BsYXkgcGxhdGZvcm1EaXNwbGF5KCkgY29uc3Qg
eyByZXR1cm4gbV9kaXNwbGF5T2JqOyB9Ci0gICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENv
bmZpZyBwbGF0Zm9ybUNvbmZpZygpIGNvbnN0IHsgcmV0dXJuIG1fY29uZmlnT2JqOyB9Ci0gICAg
c3RhdGljIEdDR0xlbnVtIGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0UXVlcnlGb3JEcmF3aW5n
VGFyZ2V0KEdDR0xlbnVtIGRyYXdpbmdUYXJnZXQpOwotICAgIHN0YXRpYyBHQ0dMaW50IEVHTERy
YXdpbmdCdWZmZXJUZXh0dXJlVGFyZ2V0Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKLSNlbHNlCi0gICAgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IGZpbmFsOwotI2VuZGlmCiAjaWYgVVNFKEFOR0xFKQorICAgIFBsYXRmb3JtR3JhcGhpY3NDb250
ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxheSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhp
Y3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1Db25maWcoKSBjb25zdDsKICAgICBHQ0dMZW51bSBk
cmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAgIHN0YXRpYyBHQ0dMZW51bSBkcmF3aW5n
QnVmZmVyVGV4dHVyZVRhcmdldFF1ZXJ5Rm9yRHJhd2luZ1RhcmdldChHQ0dMZW51bSBkcmF3aW5n
VGFyZ2V0KTsKKyAgICBzdGF0aWMgR0NHTGludCBFR0xEcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdl
dEZvckRyYXdpbmdUYXJnZXQoR0NHTGVudW0gZHJhd2luZ1RhcmdldCk7CiAgICAgZW51bSBjbGFz
cyBSZWxlYXNlVGhyZWFkUmVzb3VyY2VCZWhhdmlvciB7CiAgICAgICAgIC8vIFJlbGVhc2VzIGN1
cnJlbnQgY29udGV4dCBhZnRlciBHcmFwaGljc0NvbnRleHRHTE9wZW5HTCBjYWxscyBkb25lIGlu
IHRoZSB0aHJlYWQuCiAgICAgICAgIFJlbGVhc2VDdXJyZW50Q29udGV4dCwKQEAgLTU1Miw4ICs1
NDgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc29sdmVNdWx0aXNhbXBsaW5nSWZOZWNlc3Nh
cnkoY29uc3QgSW50UmVjdCYgPSBJbnRSZWN0KCkpOwogICAgIHZvaWQgYXR0YWNoRGVwdGhBbmRT
dGVuY2lsQnVmZmVySWZOZWVkZWQoR0NHTHVpbnQgaW50ZXJuYWxEZXB0aFN0ZW5jaWxGb3JtYXQs
IGludCB3aWR0aCwgaW50IGhlaWdodCk7CiAKLSNpZiBQTEFURk9STShDT0NPQSkKKyNpZiBVU0Uo
QU5HTEUpCiAgICAgYm9vbCByZXNoYXBlRGlzcGxheUJ1ZmZlckJhY2tpbmcoKTsKKyNlbmRpZgor
I2lmIFBMQVRGT1JNKENPQ09BKQogICAgIGJvb2wgYWxsb2NhdGVBbmRCaW5kRGlzcGxheUJ1ZmZl
ckJhY2tpbmcoKTsKICAgICBib29sIGJpbmREaXNwbGF5QnVmZmVyQmFja2luZyhzdGQ6OnVuaXF1
ZV9wdHI8SU9TdXJmYWNlPiBiYWNraW5nLCB2b2lkKiBwYnVmZmVyKTsKICAgICBzdGF0aWMgYm9v
bCBtYWtlQ3VycmVudChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHRHTCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCmluZGV4IDVkM2VkYTI2YmFlMTUwOGVm
MTc2YzhiMzQ1N2RmMzVkOWYwZWZiNDkuLjA4YzM3OTAyZjgxNTc4YWY1NzY1MDMwM2FmYTEzYzUw
YTFmZWY4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9BTkdMRUNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9BTkdMRUNvbnRleHQuY3BwCkBAIC0xNDcsMTEgKzE0NywxMiBAQCBzdGQ6OnVu
aXF1ZV9wdHI8QU5HTEVDb250ZXh0PiBBTkdMRUNvbnRleHQ6OmNyZWF0ZUNvbnRleHQoRUdMQ29u
dGV4dCBzaGFyaW5nQ29udAogICAgIH0KICAgICBMT0coV2ViR0wsICJHb3QgRUdMQ29udGV4dCIp
OwogCi0gICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxBTkdMRUNvbnRleHQ+KG5ldyBBTkdMRUNv
bnRleHQoZGlzcGxheSwgY29udGV4dCwgRUdMX05PX1NVUkZBQ0UpKTsKKyAgICByZXR1cm4gc3Rk
Ojp1bmlxdWVfcHRyPEFOR0xFQ29udGV4dD4obmV3IEFOR0xFQ29udGV4dChkaXNwbGF5LCAgY29u
ZmlnLCBjb250ZXh0LCBFR0xfTk9fU1VSRkFDRSkpOwogfQogCi1BTkdMRUNvbnRleHQ6OkFOR0xF
Q29udGV4dChFR0xEaXNwbGF5IGRpc3BsYXksIEVHTENvbnRleHQgY29udGV4dCwgRUdMU3VyZmFj
ZSBzdXJmYWNlKQorQU5HTEVDb250ZXh0OjpBTkdMRUNvbnRleHQoRUdMRGlzcGxheSBkaXNwbGF5
LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFj
ZSkKICAgICA6IG1fZGlzcGxheShkaXNwbGF5KQorICAgICwgbV9jb25maWcoY29uZmlnKQogICAg
ICwgbV9jb250ZXh0KGNvbnRleHQpCiAgICAgLCBtX3N1cmZhY2Uoc3VyZmFjZSkKIHsKQEAgLTE4
Myw2ICsxODQsMTYgQEAgRUdMQ29udGV4dCBBTkdMRUNvbnRleHQ6OnBsYXRmb3JtQ29udGV4dCgp
IGNvbnN0CiAgICAgcmV0dXJuIG1fY29udGV4dDsKIH0KIAorRUdMRGlzcGxheSBBTkdMRUNvbnRl
eHQ6OnBsYXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZGlzcGxheTsKK30K
KworRUdMQ29uZmlnIEFOR0xFQ29udGV4dDo6cGxhdGZvcm1Db25maWcoKSBjb25zdAoreworICAg
IHJldHVybiBtX2NvbmZpZzsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdM
RUNvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9BTkdM
RUNvbnRleHQuaAppbmRleCA5NDJjYzEwMjVlOGZiMjc5YTM4YzNhMGY2ZTdhM2IwYzgxMjcwZTRm
Li5iMTdjNGM5NTFjOTVjNDI0N2VkYTQzNDc0OThlMjNlODY4M2Y5ZGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQU5HTEVDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0FOR0xFQ29udGV4dC5o
CkBAIC01MSwxMSArNTEsMTMgQEAgcHVibGljOgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBFR0xDb250ZXh0IHBsYXRmb3JtQ29udGV4dCgpIGNvbnN0OwotCisgICAgRUdM
RGlzcGxheSBwbGF0Zm9ybURpc3BsYXkoKSBjb25zdDsKKyAgICBFR0xDb25maWcgcGxhdGZvcm1D
b25maWcoKSBjb25zdDsKIHByaXZhdGU6Ci0gICAgQU5HTEVDb250ZXh0KEVHTERpc3BsYXksIEVH
TENvbnRleHQsIEVHTFN1cmZhY2UpOworICAgIEFOR0xFQ29udGV4dChFR0xEaXNwbGF5LCBFR0xD
b25maWcsIEVHTENvbnRleHQsIEVHTFN1cmZhY2UpOwogCiAgICAgRUdMRGlzcGxheSBtX2Rpc3Bs
YXkgeyBudWxscHRyIH07CisgICAgRUdMQ29uZmlnIG1fY29uZmlnIHsgbnVsbHB0ciB9OwogICAg
IEVHTENvbnRleHQgbV9jb250ZXh0IHsgbnVsbHB0ciB9OwogICAgIEVHTFN1cmZhY2UgbV9zdXJm
YWNlIHsgbnVsbHB0ciB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4
dHVyZU1hcHBlci5jcHAKaW5kZXggYmNlMjJhOWExMjMyMThkYTljNzRlZTVjMTkyYzM2Y2QzMjBm
OTNhNy4uYTc3MWYwN2EwMmVkNDRhNjdlMDgyZDQ4MTE2OGJmNTg4ZGZkY2ExMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4
dEdMVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5jcHAKQEAgLTQ0MSwxNyAr
NDQxLDYgQEAgUGxhdGZvcm1MYXllciogR3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OnBsYXRmb3Jt
TGF5ZXIoKSBjb25zdAogI2VuZGlmCiB9CiAKLSNpZiBVU0UoQU5HTEUpCi1HQ0dMZW51bSBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6ZHJhd2luZ0J1ZmZlclRleHR1cmVUYXJnZXQoKQotewotI2lm
IFBMQVRGT1JNKFdJTikKLSAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKLSNlbHNlCi0gICAgcmV0
dXJuIEdMX1RFWFRVUkVfUkVDVEFOR0xFX0FOR0xFOwotI2VuZGlmCi19Ci0jZW5kaWYKLQogI2lm
IFBMQVRGT1JNKEdUSykgJiYgIVVTRShBTkdMRSkKIEV4dGVuc2lvbnNHTE9wZW5HTENvbW1vbiYg
R3JhcGhpY3NDb250ZXh0R0xPcGVuR0w6OmdldEV4dGVuc2lvbnMoKQogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzQ29udGV4dEdM
VGV4dHVyZU1hcHBlckFOR0xFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9HcmFwaGljc0NvbnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMDg1MzlhN2Q5Mjk4MTE0NWRjMDYwMDFiNTc0Y2E4YzlhNzFmODk1NQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0Nv
bnRleHRHTFRleHR1cmVNYXBwZXJBTkdMRS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dEdMVGV4dHVyZU1hcHBlci5oIgorCisjaWYgRU5BQkxF
KFdFQkdMKSAmJiBVU0UoQU5HTEUpICYmIFVTRShURVhUVVJFX01BUFBFUikKKworI2luY2x1ZGUg
IkFOR0xFSGVhZGVycy5oIgorI2luY2x1ZGUgIkFOR0xFVXRpbGl0aWVzLmgiCisKKyNpZiBVU0Uo
TklDT1NJQSkKKyNpbmNsdWRlICJOaWNvc2lhR0NHTEFOR0xFTGF5ZXIuaCIKKyNlbHNlCisjaW5j
bHVkZSAiVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmgiCisjZW5kaWYKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMRGlzcGxheSBHcmFwaGlj
c0NvbnRleHRHTE9wZW5HTDo6cGxhdGZvcm1EaXNwbGF5KCkgY29uc3QKK3sKKyNpZiBVU0UoTklD
T1NJQSkKKyAgICByZXR1cm4gbV9uaWNvc2lhTGF5ZXItPnBsYXRmb3JtRGlzcGxheSgpOworI2Vs
c2UKKyAgICByZXR1cm4gbV90ZXhtYXBMYXllci0+cGxhdGZvcm1EaXNwbGF5KCk7CisjZW5kaWYK
K30KKworUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTENvbmZpZyBHcmFwaGljc0NvbnRleHRHTE9w
ZW5HTDo6cGxhdGZvcm1Db25maWcoKSBjb25zdAoreworI2lmIFVTRShOSUNPU0lBKQorICAgIHJl
dHVybiBtX25pY29zaWFMYXllci0+cGxhdGZvcm1Db25maWcoKTsKKyNlbHNlCisgICAgcmV0dXJu
IG1fdGV4bWFwTGF5ZXItPnBsYXRmb3JtQ29uZmlnKCk7CisjZW5kaWYKK30KKworYm9vbCBHcmFw
aGljc0NvbnRleHRHTE9wZW5HTDo6cmVzaGFwZURpc3BsYXlCdWZmZXJCYWNraW5nKCkKK3sKKyAg
ICBhdXRvIGF0dHJzID0gY29udGV4dEF0dHJpYnV0ZXMoKTsKKyAgICBjb25zdCBhdXRvIHNpemUg
PSBnZXRJbnRlcm5hbEZyYW1lYnVmZmVyU2l6ZSgpOworICAgIGNvbnN0IGludCB3aWR0aCA9IHNp
emUud2lkdGgoKTsKKyAgICBjb25zdCBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQoKTsKKyAgICBH
THVpbnQgY29sb3JGb3JtYXQgPSBhdHRycy5hbHBoYSA/IEdMX1JHQkEgOiBHTF9SR0I7CisgICAg
R0xlbnVtIHRleHR1cmVUYXJnZXQgPSBkcmF3aW5nQnVmZmVyVGV4dHVyZVRhcmdldCgpOworICAg
IEdMdWludCBpbnRlcm5hbENvbG9yRm9ybWF0ID0gdGV4dHVyZVRhcmdldCA9PSBHTF9URVhUVVJF
XzJEID8gY29sb3JGb3JtYXQgOiBtX2ludGVybmFsQ29sb3JGb3JtYXQ7CisgICAgU2NvcGVkUmVz
dG9yZVRleHR1cmVCaW5kaW5nIHJlc3RvcmVCaW5kaW5nKGRyYXdpbmdCdWZmZXJUZXh0dXJlVGFy
Z2V0UXVlcnlGb3JEcmF3aW5nVGFyZ2V0KHRleHR1cmVUYXJnZXQpLCB0ZXh0dXJlVGFyZ2V0LCB0
ZXh0dXJlVGFyZ2V0ICE9IFRFWFRVUkVfUkVDVEFOR0xFX0FSQik7CisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorICAgIGlmIChtX2NvbXBvc2l0b3JUZXh0dXJlKSB7CisgICAgICAgIGds
OjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBtX2NvbXBvc2l0b3JUZXh0dXJlKTsKKyAgICAg
ICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xvckZvcm1hdCwg
d2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIDApOworICAg
ICAgICBnbDo6QmluZFRleHR1cmUodGV4dHVyZVRhcmdldCwgbV9pbnRlcm1lZGlhdGVUZXh0dXJl
KTsKKyAgICAgICAgZ2w6OlRleEltYWdlMkQodGV4dHVyZVRhcmdldCwgMCwgaW50ZXJuYWxDb2xv
ckZvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgY29sb3JGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUs
IDApOworICAgIH0KKyNlbmRpZgorICAgIGdsOjpCaW5kVGV4dHVyZSh0ZXh0dXJlVGFyZ2V0LCBt
X3RleHR1cmUpOworICAgIGdsOjpUZXhJbWFnZTJEKHRleHR1cmVUYXJnZXQsIDAsIGludGVybmFs
Q29sb3JGb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGNvbG9yRm9ybWF0LCBHTF9VTlNJR05FRF9C
WVRFLCAwKTsKKyAgICBnbDo6RnJhbWVidWZmZXJUZXh0dXJlMkQoR0xfRlJBTUVCVUZGRVIsIEdM
X0NPTE9SX0FUVEFDSE1FTlQwLCB0ZXh0dXJlVGFyZ2V0LCBtX3RleHR1cmUsIDApOworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIEdyYXBoaWNzQ29udGV4dEdMT3BlbkdMOjpwbGF0Zm9ybVJl
bGVhc2VUaHJlYWRSZXNvdXJjZXMoKQoreworfQorCit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dM
UGxhdGZvcm1MYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAppbmRleCBmOGIxMjViNTI0OGI5
MDZjNTNhYThhNTI4OTgwOWQ5YTI5Y2Y0OGY0Li5mNDRjN2EwOTM0YWEwYjJlMzI0YWIzODM4Yjg4
OGRiZDEwN2IwYWM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9y
bUxheWVyLmNwcApAQCAtNjgsNiArNjgsMTggQEAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHRHTCBU
ZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnBsYXRmb3JtQ29udGV4dCgpIGNvbnMKICAg
ICByZXR1cm4gbV9nbENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogfQogCitQbGF0Zm9ybUdy
YXBoaWNzQ29udGV4dEdMRGlzcGxheSBUZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXI6OnBs
YXRmb3JtRGlzcGxheSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1fZ2xDb250ZXh0KTsKKyAgICBy
ZXR1cm4gbV9nbENvbnRleHQtPnBsYXRmb3JtRGlzcGxheSgpOworfQorCitQbGF0Zm9ybUdyYXBo
aWNzQ29udGV4dEdMQ29uZmlnIFRleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cGxhdGZv
cm1Db25maWcoKSBjb25zdAoreworICAgIEFTU0VSVChtX2dsQ29udGV4dCk7CisgICAgcmV0dXJu
IG1fZ2xDb250ZXh0LT5wbGF0Zm9ybUNvbmZpZygpOworfQorCiAjaWYgVVNFKENPT1JESU5BVEVE
X0dSQVBISUNTKQogUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+IFRleHR1
cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllcjo6cHJveHkoKSBjb25zdAogewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHQ0dM
UGxhdGZvcm1MYXllci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJHQ0dMUGxhdGZvcm1MYXllci5oCmluZGV4IDQwNDI2NGEyMzNmMDBkMmFh
MjdmNTg2ZDVlN2YzMDRiNTk2NTIyZTAuLmM3NGU3NTU0MjFlMGMxNGQ2NzE3YmRmOWIwNjNhNDdk
ODg2NGYyY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyR0NHTFBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckdDR0xQbGF0Zm9ybUxheWVy
LmgKQEAgLTM5LDYgKzM5LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBtYWtlQ29udGV4dEN1cnJl
bnQoKTsKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dEdMIHBsYXRmb3JtQ29udGV4dCgpIGNv
bnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xEaXNwbGF5IHBsYXRmb3JtRGlzcGxh
eSgpIGNvbnN0OworICAgIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0R0xDb25maWcgcGxhdGZvcm1D
b25maWcoKSBjb25zdDsKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBSZWZQ
dHI8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gcHJveHkoKSBjb25zdCBvdmVycmlk
ZTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>