<?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>267188</bug_id>
          
          <creation_ts>2024-01-06 14:49:11 -0800</creation_ts>
          <short_desc>Introduce enum classes to identify and categorize events</short_desc>
          <delta_ts>2024-04-11 19:52:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>Safari Technology Preview</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>272552</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2003402</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-06 14:49:11 -0800</bug_when>
    <thetext>Introduce enums to identify each event as well as categorize events.
This allows fast comparison compared to a bunch of related AtomString::operator== comparisons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003410</commentid>
    <comment_count>1</comment_count>
      <attachid>469317</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-06 16:00:26 -0800</bug_when>
    <thetext>Created attachment 469317
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003411</commentid>
    <comment_count>2</comment_count>
      <attachid>469318</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-06 16:01:13 -0800</bug_when>
    <thetext>Created attachment 469318
WIP2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003457</commentid>
    <comment_count>3</comment_count>
      <attachid>469322</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-07 00:26:42 -0800</bug_when>
    <thetext>Created attachment 469322
WIP3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003459</commentid>
    <comment_count>4</comment_count>
      <attachid>469324</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-07 00:53:26 -0800</bug_when>
    <thetext>Created attachment 469324
WIP3 with logging</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003460</commentid>
    <comment_count>5</comment_count>
      <attachid>469325</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-07 01:07:14 -0800</bug_when>
    <thetext>Created attachment 469325
WIP3 with logging 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003461</commentid>
    <comment_count>6</comment_count>
      <attachid>469326</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-07 01:37:23 -0800</bug_when>
    <thetext>Created attachment 469326
WIP3 with logging 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003467</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2024-01-07 02:50:04 -0800</bug_when>
    <thetext>Pull request: https://github.com/WebKit/WebKit/pull/22484</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003758</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2024-01-08 23:09:23 -0800</bug_when>
    <thetext>Committed 272801@main (490b4fdda464): &lt;https://commits.webkit.org/272801@main&gt;

Reviewed commits have been landed. Closing PR #22484 and removing active labels.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2003759</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2024-01-08 23:10:16 -0800</bug_when>
    <thetext>&lt;rdar://problem/120693336&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469317</attachid>
            <date>2024-01-06 16:00:26 -0800</date>
            <delta_ts>2024-01-06 16:01:13 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>avoid-dispatch-to-scripts-if-possible-2.patch</filename>
            <type>text/plain</type>
            <size>6552</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50Q29udGV4dC5jcHAKaW5kZXggZWYwZmEyMGNkMjMyLi4xYjk3N2Jm
YTZlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuY3BwCkBAIC00MSw2ICs0MSwxOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEV2ZW50Q29udGV4dDo6fkV2ZW50Q29udGV4dCgpID0g
ZGVmYXVsdDsKIAorYm9vbCBFdmVudENvbnRleHQ6Omhhc01hdGNoaW5nRXZlbnRMaXN0ZW5lcnMo
RXZlbnQmIGV2ZW50KSBjb25zdAoreworICAgIGlmICghbV9jdXJyZW50VGFyZ2V0KQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1fY3VycmVudFRhcmdldC0+aGFzRXZlbnRMaXN0ZW5l
cnMoZXZlbnQudHlwZSgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBsZWdhY3lU
eXBlID0gRXZlbnRUYXJnZXQ6OmxlZ2FjeVR5cGVGb3JFdmVudChldmVudCk7CisgICAgaWYgKCFs
ZWdhY3lUeXBlLmlzTnVsbCgpICYmIG1fY3VycmVudFRhcmdldC0+aGFzRXZlbnRMaXN0ZW5lcnMo
bGVnYWN5VHlwZSkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwogdm9pZCBFdmVudENvbnRleHQ6OmhhbmRsZUxvY2FsRXZlbnRzKEV2ZW50JiBldmVudCwgRXZl
bnRJbnZva2VQaGFzZSBwaGFzZSkgY29uc3QKIHsKICAgICBldmVudC5zZXRUYXJnZXQobV90YXJn
ZXQuY29weVJlZigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaAppbmRleCA4NjgxNzkwMTQ2
NDkuLjJlZmFhM2I4MjUyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50Q29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudENvbnRleHQuaApAQCAtNTYsNiAr
NTYsOCBAQCBwdWJsaWM6CiAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGFyZ2V0LmdldCgpOyB9CiAgICAgaW50IGNsb3NlZFNoYWRvd0RlcHRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbG9zZWRTaGFkb3dEZXB0aDsgfQogCisgICAgYm9vbCBoYXNNYXRjaGluZ0V2ZW50
TGlzdGVuZXJzKEV2ZW50JikgY29uc3Q7CisKICAgICB2b2lkIGhhbmRsZUxvY2FsRXZlbnRzKEV2
ZW50JiwgRXZlbnRJbnZva2VQaGFzZSkgY29uc3Q7CiAKICAgICBib29sIGlzTW91c2VPckZvY3Vz
RXZlbnRDb250ZXh0KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09IFR5cGU6Ok1vdXNlT3JGb2N1
czsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBiMmY4YWRmMjQy
NWIuLjFiZTI4YjAzMGEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlz
cGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAK
QEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChO
b2RlJiBub2RlLCBFdmVudCYgZXZlbnQpCiAgICAgICAgIGlucHV0Rm9yTGVnYWN5UHJlQWN0aXZh
dGlvbkJlaGF2aW9yLT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgY2xpY2tIYW5kbGluZ1N0YXRl
KTsKICAgICB9CiAKLSAgICBpZiAoIWV2ZW50LnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVu
dFBhdGguaXNFbXB0eSgpICYmICFzaG91bGRTdXBwcmVzc0V2ZW50RGlzcGF0Y2hJbkRPTShub2Rl
LCBldmVudCkpIHsKKyAgICBpZiAoIWV2ZW50LnByb3BhZ2F0aW9uU3RvcHBlZCgpICYmICFldmVu
dFBhdGguaXNFbXB0eSgpICYmICFzaG91bGRTdXBwcmVzc0V2ZW50RGlzcGF0Y2hJbkRPTShub2Rl
LCBldmVudCkgJiYgZXZlbnRQYXRoLmhhc01hdGNoaW5nRXZlbnRMaXN0ZW5lcnMoKSkgewogICAg
ICAgICBldmVudC5zZXRFdmVudFBhdGgoZXZlbnRQYXRoKTsKICAgICAgICAgZGlzcGF0Y2hFdmVu
dEluRE9NKGV2ZW50LCBldmVudFBhdGgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50UGF0aC5jcHAK
aW5kZXggMjhmZDBmMzRhMGViLi4xNTkzODQ3ZWVmOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGgu
Y3BwCkBAIC0xMDEsOSArMTAxLDEyIEBAIHZvaWQgRXZlbnRQYXRoOjpidWlsZFBhdGgoTm9kZSYg
b3JpZ2luYWxUYXJnZXQsIEV2ZW50JiBldmVudCkKICAgICAvLyBEZXB0aHMgYXJlIHVzZWQgdG8g
ZGVjaWRlZCB3aGljaCBub2RlcyBhcmUgZXhjbHVkZWQgaW4gZXZlbnQuY29tcG9zZWRQYXRoIHdo
ZW4gdGhlIHRyZWUgaXMgbXV0YXRlZCBkdXJpbmcgZXZlbnQgZGlzcGF0Y2hpbmcuCiAgICAgLy8g
VGhleSBjb3VsZCBiZSBuZWdhdGl2ZSBmb3Igbm9kZXMgb3V0c2lkZSB0aGUgc2hhZG93IHRyZWUg
b2YgdGhlIHRhcmdldCBub2RlLgogICAgIFJlZlB0cjxTaGFkb3dSb290PiBzaGFkb3dSb290Owor
ICAgIG1faGFzTWF0Y2hpbmdFdmVudExpc3RlbmVycyA9IGZhbHNlOwogICAgIHdoaWxlIChub2Rl
KSB7CiAgICAgICAgIHdoaWxlIChub2RlKSB7CiAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKEV2
ZW50Q29udGV4dCB7IGNvbnRleHRUeXBlLCAqbm9kZSwgZXZlbnRUYXJnZXRSZXNwZWN0aW5nVGFy
Z2V0UnVsZXMoKm5vZGUpLCB0YXJnZXQuZ2V0KCksIGNsb3NlZFNoYWRvd0RlcHRoIH0pOworICAg
ICAgICAgICAgaWYgKCFtX2hhc01hdGNoaW5nRXZlbnRMaXN0ZW5lcnMpCisgICAgICAgICAgICAg
ICAgbV9oYXNNYXRjaGluZ0V2ZW50TGlzdGVuZXJzID0gbV9wYXRoLmxhc3QoKS5oYXNNYXRjaGlu
Z0V2ZW50TGlzdGVuZXJzKGV2ZW50KTsKIAogICAgICAgICAgICAgaWYgKFJlZlB0ciBtYXliZVNo
YWRvd1Jvb3QgPSBkeW5hbWljRG93bmNhc3Q8U2hhZG93Um9vdD4oKm5vZGUpKSB7CiAgICAgICAg
ICAgICAgICAgc2hhZG93Um9vdCA9IFdURk1vdmUobWF5YmVTaGFkb3dSb290KTsKQEAgLTExNiw4
ICsxMTksMTEgQEAgdm9pZCBFdmVudFBhdGg6OmJ1aWxkUGF0aChOb2RlJiBvcmlnaW5hbFRhcmdl
dCwgRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGR5
bmFtaWNEb3duY2FzdDxEb2N1bWVudD4oKm5vZGUpOyBkb2N1bWVudCAmJiBldmVudC50eXBlKCkg
IT0gZXZlbnROYW1lcygpLmxvYWRFdmVudCkgewogICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
dGFyZ2V0KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCkgewotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKFJlZlB0ciB3aW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93KCkpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXRoLmFwcGVuZChFdmVudENvbnRleHQgeyBF
dmVudENvbnRleHQ6OlR5cGU6OldpbmRvdywgbm9kZS5nZXQoKSwgd2luZG93LmdldCgpLCB0YXJn
ZXQuZ2V0KCksIGNsb3NlZFNoYWRvd0RlcHRoIH0pOworICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKFJlZlB0ciB3aW5kb3cgPSBkb2N1bWVudC0+ZG9tV2luZG93KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX3BhdGguYXBwZW5kKEV2ZW50Q29udGV4dCB7IEV2ZW50Q29udGV4
dDo6VHlwZTo6V2luZG93LCBub2RlLmdldCgpLCB3aW5kb3cuZ2V0KCksIHRhcmdldC5nZXQoKSwg
Y2xvc2VkU2hhZG93RGVwdGggfSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICghbV9oYXNNYXRjaGluZ0V2ZW50TGlzdGVuZXJzKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hhc01hdGNoaW5nRXZlbnRMaXN0ZW5l
cnMgPSBtX3BhdGgubGFzdCgpLmhhc01hdGNoaW5nRXZlbnRMaXN0ZW5lcnMoZXZlbnQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFBhdGguaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaAppbmRl
eCAzNmFjNGQ3MGVlZDUuLmQzMWU5ODFmNjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50UGF0aC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFBhdGguaApAQCAt
NDMsNiArNDMsOSBAQCBwdWJsaWM6CiAgICAgY29uc3QgRXZlbnRDb250ZXh0JiBjb250ZXh0QXQo
c2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aFtpXTsgfQogICAgIEV2ZW50Q29udGV4dCYg
Y29udGV4dEF0KHNpemVfdCBpKSB7IHJldHVybiBtX3BhdGhbaV07IH0KIAorICAgIC8vIEZJWE1F
OiBUYWtlIGFkanVzdEZvckRpc2FibGVkRm9ybUNvbnRyb2wgYW5kIHNldFJlbGF0ZWRUYXJnZXQg
aW50byBhY2NvdW50LgorICAgIGJvb2wgaGFzTWF0Y2hpbmdFdmVudExpc3RlbmVycygpIGNvbnN0
IHsgcmV0dXJuIG1faGFzTWF0Y2hpbmdFdmVudExpc3RlbmVyczsgfQorCiAgICAgdm9pZCBhZGp1
c3RGb3JEaXNhYmxlZEZvcm1Db250cm9sKCk7CiAKICAgICBWZWN0b3I8UmVmPEV2ZW50VGFyZ2V0
Pj4gY29tcHV0ZVBhdGhVbmNsb3NlZFRvVGFyZ2V0KGNvbnN0IEV2ZW50VGFyZ2V0JikgY29uc3Q7
CkBAIC02MCw2ICs2Myw3IEBAIHByaXZhdGU6CiAjZW5kaWYKIAogICAgIFZlY3RvcjxFdmVudENv
bnRleHQsIDE2PiBtX3BhdGg7CisgICAgYm9vbCBtX2hhc01hdGNoaW5nRXZlbnRMaXN0ZW5lcnMg
eyBmYWxzZSB9OwogfTsKIAogaW5saW5lIE5vZGUqIEV2ZW50UGF0aDo6ZXZlbnRUYXJnZXRSZXNw
ZWN0aW5nVGFyZ2V0UnVsZXMoTm9kZSYgcmVmZXJlbmNlTm9kZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRU
YXJnZXQuY3BwCmluZGV4IDVkNDRmMTc0NTM2Yi4uZmMwMDUwYzRhMTY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKQEAgLTI2MSw3ICsyNjEsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojp1
bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIHsKIH0KIAotc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGxlZ2FjeVR5cGUoY29uc3QgRXZlbnQmIGV2ZW50KQorY29uc3QgQXRvbVN0cmlu
ZyYgRXZlbnRUYXJnZXQ6OmxlZ2FjeVR5cGVGb3JFdmVudChjb25zdCBFdmVudCYgZXZlbnQpCiB7
CiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKICAgICBpZiAo
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMuYW5pbWF0aW9uZW5kRXZlbnQpCkBAIC0zMDcsNyAr
MzA3LDcgQEAgdm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVu
dCwgRXZlbnRJbnZva2VQaGFzZSBwaGFzZSkKICAgICBpZiAoIWV2ZW50LmlzVHJ1c3RlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBsZWdhY3lUeXBlTmFtZSA9
IGxlZ2FjeVR5cGUoZXZlbnQpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5cGVOYW1l
ID0gbGVnYWN5VHlwZUZvckV2ZW50KGV2ZW50KTsKICAgICBpZiAoIWxlZ2FjeVR5cGVOYW1lLmlz
TnVsbCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBsZWdhY3lMaXN0ZW5lcnNWZWN0b3IgPSBkYXRh
LT5ldmVudExpc3RlbmVyTWFwLmZpbmQobGVnYWN5VHlwZU5hbWUpKSB7CiAgICAgICAgICAgICBB
dG9tU3RyaW5nIHR5cGVOYW1lID0gZXZlbnQudHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAppbmRleCBkMDllODc4NTE4NmYuLmM5NWYyYjE3NDk3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKQEAgLTExOSw2ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+
IGV2ZW50VHlwZXMoKSBjb25zdDsKICAgICBjb25zdCBFdmVudExpc3RlbmVyVmVjdG9yJiBldmVu
dExpc3RlbmVycyhjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpOwogCisgICAgc3RhdGljIGNv
bnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5cGVGb3JFdmVudChjb25zdCBFdmVudCYpOworCiAgICAg
ZW51bSBjbGFzcyBFdmVudEludm9rZVBoYXNlIHsgQ2FwdHVyaW5nLCBCdWJibGluZyB9OwogICAg
IHZvaWQgZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiwgRXZlbnRJbnZva2VQaGFzZSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469318</attachid>
            <date>2024-01-06 16:01:13 -0800</date>
            <delta_ts>2024-01-07 00:45:58 -0800</delta_ts>
            <desc>WIP2</desc>
            <filename>event-type-info-early-return-2.patch</filename>
            <type>text/plain</type>
            <size>57176</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZTI4MTRkMWU0NC4uZDk4NzU1ZWYxNDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3MzAsMzggKzU3MzAsNzMgQEAgYm9vbCBEb2N1
bWVudDo6aGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZl
bnRUeXBlKSBjb25zdAogdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJD
b3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLkRPTVN1
YnRyZWVNb2RpZmllZEV2ZW50KQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJ
bmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjpET01TdWJ0cmVlTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTVN1YnRyZWVNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZUluc2VydGVkRXZlbnQpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWQ6CiAgICAgICAgIGFkZExp
c3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRFdmVudCkKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkOgogICAgICAgICBhZGRMaXN0
ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3ZlZCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50OgogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVk
RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01DaGFyYWN0ZXJE
YXRhTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTUNo
YXJhY3RlckRhdGFNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMub3ZlcmZsb3djaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjpvdmVyZmxvd2NoYW5nZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5
cGU6Ok92ZXJmbG93Q2hhbmdlZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuc2Nyb2xsRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpzY3Jv
bGw6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OlNjcm9sbCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdp
bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vm
b3JjZXdpbGxiZWdpbjoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9y
Y2VXaWxsQmVnaW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLndlYmtp
dG1vdXNlZm9yY2VjaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjp3ZWJraXRtb3VzZWZvcmNlY2hhbmdlZDoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExp
c3RlbmVyVHlwZTo6Rm9yY2VDaGFuZ2VkKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy53ZWJraXRtb3VzZWZvcmNlZG93bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vmb3JjZWRvd246CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlRG93bik7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXVwRXZlbnQpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXZlbnRUeXBlOjp3ZWJraXRtb3VzZWZvcmNldXA6CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlVXApOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzLmZvY3VzaW5FdmVudCkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5
cGU6OmZvY3VzaW46CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkZvY3Vz
SW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmZvY3Vzb3V0RXZlbnQp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpmb2N1c291dDoKICAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9jdXNPdXQpOwotICAgIGVsc2UgaWYgKGV2
ZW50TmFtZXMuaXNDU1NUcmFuc2l0aW9uRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOwotICAgIGVsc2UgaWYg
KGV2ZW50TmFtZXMuaXNDU1NBbmltYXRpb25FdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Q1NTQW5pbWF0aW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpDU1NUcmFuc2l0aW9uKSkKKyAgICAgICAgICAgIGFkZExpc3RlbmVyVHlwZShM
aXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOworICAgICAgICBlbHNlIGlmICh0eXBlSW5mby5p
c0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6Q1NTQW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU0FuaW1hdGlvbik7CisgICAgfQorfQorCit2
b2lkIERvY3VtZW50OjpkaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb3VudCk7CisgICAg
YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
ZXZlbnRMaXN0ZW5lckNvdW50cy5mYXN0QWRkKGV2ZW50VHlwZSwgMCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkUmVtb3ZlRXZl
bnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCB1bnNpZ25lZCBj
b3VudCkKK3sKKyAgICBBU1NFUlQoY291bnQpOworICAgIEFTU0VSVChtX2V2ZW50TGlzdGVuZXJD
b3VudHMuY29udGFpbnMoZXZlbnRUeXBlKSk7CisgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5l
ckNvdW50cy5maW5kKGV2ZW50VHlwZSk7CisgICAgQVNTRVJUKGl0LT52YWx1ZSA+PSBjb3VudCk7
CisgICAgaXQtPnZhbHVlIC09IGNvdW50OwogfQogCiBIVE1MRnJhbWVPd25lckVsZW1lbnQqIERv
Y3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNGFm
ZWRlYzQzZDIuLjVlNTgwNDhkMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0xpc3RIYXNoU2V0Lmg+CkBAIC0xMDIw
LDYgKzEwMjEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRU
eXBlKFBsYXRmb3JtRXZlbnRUeXBlKSBjb25zdDsKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlm
TmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAKKyAgICB2b2lkIGRpZEFkZEV2
ZW50TGlzdGVuZXJzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmLCB1bnNpZ25lZCA9IDEpOworICAg
IHZvaWQgZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYsIHVu
c2lnbmVkID0gMSk7CisgICAgYm9vbCBoYXNFdmVudExpc3RuZXJzT2ZUeXBlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lckNvdW50cy5pbmxpbmVH
ZXQodHlwZSk7IH0KKworICAgIGJvb2wgaGFzQ29ubmVjdGVkUGx1Z2luRWxlbWVudHMoKSB7IHJl
dHVybiBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRDb3VudDsgfQorICAgIHZvaWQgZGlkQ29ubmVj
dFBsdWdpbkVsZW1lbnQoKSB7ICsrbV9jb25uZWN0ZWRQbHVnaW5FbGVtZW50Q291bnQ7IH0KKyAg
ICB2b2lkIGRpZERpc2Nvbm5lY3RQbHVnaW5FbGVtZW50KCkgeyBBU1NFUlQobV9jb25uZWN0ZWRQ
bHVnaW5FbGVtZW50Q291bnQpOyAtLW1fY29ubmVjdGVkUGx1Z2luRWxlbWVudENvdW50OyB9CisK
ICAgICBpbmxpbmUgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNv
bnN0IHsgcmV0dXJuICFtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5pc0VtcHR5KCk7IH0KICAgICB2
b2lkIGFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBl
cykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5hZGQodHlwZXMpOyB9CkBAIC0yMzQzLDYgKzIz
NTIsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGF0YUxpc3RFbGVtZW50Q291bnQgeyAw
IH07CiAKICAgICBPcHRpb25TZXQ8TGlzdGVuZXJUeXBlPiBtX2xpc3RlbmVyVHlwZXM7CisgICAg
TWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgdW5zaWduZWQ+IG1fZXZl
bnRMaXN0ZW5lckNvdW50czsKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRD
b3VudCB7IDAgfTsKKwogICAgIHVuc2lnbmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQgeyAwIH07
CiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xh
c3RTdHlsZVVwZGF0ZVNpemVGb3JUZXN0aW5nIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcAppbmRleCBiMmY4YWRmMjQyNWIuLjI3YzVjMzg0MzIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0NSw2ICsxNDUsMTggQEAgc3RhdGlj
IEhUTUxJbnB1dEVsZW1lbnQqIGZpbmRJbnB1dEVsZW1lbnRJbkV2ZW50UGF0aChjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoZG9jdW1lbnQuaGFzRXZlbnRMaXN0bmVyc09mVHlwZShldmVudC50eXBl
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gbGVnYWN5VHlwZSA9IEV2ZW50
VGFyZ2V0OjpsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIGlmICghbGVnYWN5VHlwZS5p
c051bGwoKSAmJiBkb2N1bWVudC5oYXNFdmVudExpc3RuZXJzT2ZUeXBlKGxlZ2FjeVR5cGUpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKG5vZGUpKTsK
QEAgLTE1NCwxMCArMTY2LDE1IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBSZWYgcHJvdGVjdGVkTm9kZSB7IG5vZGUg
fTsKICAgICBSZWZQdHIgcHJvdGVjdGVkVmlldyB7IG5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfTsK
IAorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzKCkudHlwZUluZm9Gb3JFdmVudChldmVu
dC50eXBlKCkpOworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudFRvU2NyaXB0cyA9IGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihub2RlLmRvY3VtZW50KCksIGV2ZW50KTsKKyAgICBpZiAoIXNo
b3VsZERpc3BhdGNoRXZlbnRUb1NjcmlwdHMgJiYgIXR5cGVJbmZvLmhhc0RlZmF1bHRFdmVudEhh
bmRsZXIoKSAmJiAhbm9kZS5kb2N1bWVudCgpLmhhc0Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRzKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIEV2ZW50UGF0aCBldmVudFBhdGggeyBub2RlLCBldmVu
dCB9OwogCiAgICAgaWYgKG5vZGUuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnNlbmRNb3VzZUV2ZW50
c1RvRGlzYWJsZWRGb3JtQ29udHJvbHNFbmFibGVkKCkgJiYgZXZlbnQuaXNUcnVzdGVkKCkgJiYg
ZXZlbnQuaXNNb3VzZUV2ZW50KCkKLSAgICAgICAgJiYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8IGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkpIHsKKyAgICAgICAgJiYg
KHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6Om1vdXNlZG93biB8fCB0eXBlSW5mby50eXBl
KCkgPT0gRXZlbnRUeXBlOjptb3VzZXVwIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6
OmNsaWNrIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6OmRibGNsaWNrKSkgewogICAg
ICAgICBldmVudFBhdGguYWRqdXN0Rm9yRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KIApA
QCAtMTkxLDcgKzIwOCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5v
ZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgaW5wdXRGb3JMZWdhY3lQcmVBY3RpdmF0
aW9uQmVoYXZpb3ItPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUp
OwogICAgIH0KIAotICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSkgeworICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSAmJiBzaG91bGREaXNwYXRjaEV2ZW50VG9TY3JpcHRzKSB7CiAgICAgICAgIGV2ZW50
LnNldEV2ZW50UGF0aChldmVudFBhdGgpOwogICAgICAgICBkaXNwYXRjaEV2ZW50SW5ET00oZXZl
bnQsIGV2ZW50UGF0aCk7CiAgICAgfQpAQCAtMjA0LDcgKzIyMSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAvLyBD
YWxsIGRlZmF1bHQgZXZlbnQgaGFuZGxlcnMuIFdoaWxlIHRoZSBET00gZG9lcyBoYXZlIGEgY29u
Y2VwdCBvZiBwcmV2ZW50aW5nCiAgICAgLy8gZGVmYXVsdCBoYW5kbGluZywgdGhlIGRldGFpbCBv
ZiB3aGljaCBoYW5kbGVycyBhcmUgY2FsbGVkIGlzIGFuIGludGVybmFsCiAgICAgLy8gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIGFuZCBub3QgcGFydCBvZiB0aGUgRE9NLgotICAgIGlmICghZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZCgpICYmICFldmVudC5kZWZhdWx0SGFuZGxlZCgpICYmICFldmVudC5p
c0RlZmF1bHRFdmVudEhhbmRsZXJJZ25vcmVkKCkpIHsKKyAgICBpZiAodHlwZUluZm8uaGFzRGVm
YXVsdEV2ZW50SGFuZGxlcigpICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkgJiYgIWV2ZW50
LmRlZmF1bHRIYW5kbGVkKCkgJiYgIWV2ZW50LmlzRGVmYXVsdEV2ZW50SGFuZGxlcklnbm9yZWQo
KSkgewogICAgICAgICAvLyBGSVhNRTogTm90IGNsZWFyIHdoeSB3ZSBuZWVkIHRvIHJlc2V0IHRo
ZSB0YXJnZXQgZm9yIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXJzLgogICAgICAgICAvLyBXZSBz
aG91bGQgcmVzZWFyY2ggdGhpcywgYW5kIHJlbW92ZSB0aGlzIGNvZGUgaWYgcG9zc2libGUuCiAg
ICAgICAgIFJlZlB0ciBmaW5hbFRhcmdldCA9IGV2ZW50LnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggNTVlNjE5NTI5MTg5Li4xMWM1NmI5NTI5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNjcsNiArNjcsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXJNYXAq
Pih0aGlzKS0+ZmluZChldmVudFR5cGUpOyB9CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50
VHlwZXMoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+Cisg
ICAgdm9pZCBlbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoQ2FsbGJhY2tUeXBlIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykKKyAgICAgICAg
ICAgIGNhbGxiYWNrKGVudHJ5LmZpcnN0LCBlbnRyeS5zZWNvbmQuc2l6ZSgpKTsKKyAgICB9CisK
ICAgICB2b2lkIHJlbW92ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgdm9pZCBjb3B5RXZlbnRMaXN0ZW5lcnNOb3RD
cmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0KEV2ZW50VGFyZ2V0Kik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5qc29uIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuanNvbgppbmRleCBhYzE1ZjkyYWRlNzQuLmNiYTJlOWQzNTc5NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5qc29uCkBAIC0xLDUgKzEsNSBAQAogewotICAgICJET01BY3Rp
dmF0ZSI6IHsidHlwZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl19LAorICAgICJET01BY3RpdmF0
ZSI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRI
YW5kbGVyIjogdHJ1ZSB9LAogICAgICJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiOiB7IH0sCiAg
ICAgIkRPTUNvbnRlbnRMb2FkZWQiOiB7IH0sCiAgICAgIkRPTU5vZGVJbnNlcnRlZCI6IHsgfSwK
QEAgLTE0LDEwICsxNCwxMCBAQAogICAgICJhZGRzdHJlYW0iOiB7IH0sCiAgICAgImFkZHRyYWNr
IjogeyB9LAogICAgICJhZnRlcnByaW50IjogeyB9LAotICAgICJhbmltYXRpb25jYW5jZWwiOiB7
InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgImFuaW1hdGlvbmVuZCI6IHsidHlwZXMi
OiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyJ0eXBlcyI6
IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJhbmltYXRpb25zdGFydCI6IHsidHlwZXMiOiBbIkNT
U0FuaW1hdGlvbiJdfSwKKyAgICAiYW5pbWF0aW9uY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyAiY2F0ZWdvcmll
cyI6IFsiQ1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uc3RhcnQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAogICAgICJhdWRpb2VuZCI6IHsgfSwKICAgICAiYXVk
aW9wcm9jZXNzIjogeyB9LAogICAgICJhdWRpb3N0YXJ0IjogeyB9LApAQCAtMzcsNyArMzcsNyBA
QAogICAgICJiZWZvcmV1bmxvYWQiOiB7IH0sCiAgICAgImJlZ2luRXZlbnQiOiB7IH0sCiAgICAg
ImJsb2NrZWQiOiB7IH0sCi0gICAgImJsdXIiOiB7IH0sCisgICAgImJsdXIiOiB7ICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJib3VuZGFyeSI6IHsgfSwKICAgICAiYnVmZmVy
ZWRhbW91bnRsb3ciOiB7IH0sCiAgICAgImJ1ZmZlcmVkY2hhbmdlIjogeyB9LApAQCAtNDksNyAr
NDksNyBAQAogICAgICJjaGFyZ2luZ2NoYW5nZSI6IHsgfSwKICAgICAiY2hhcmdpbmd0aW1lY2hh
bmdlIjogeyB9LAogICAgICJjaGVja2luZyI6IHsgfSwKLSAgICAiY2xpY2siOiB7InR5cGVzIjog
WyJNb3VzZUNsaWNrUmVsYXRlZCJdfSwKKyAgICAiY2xpY2siOiB7ICJjYXRlZ29yaWVzIjogWyJN
b3VzZUNsaWNrUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAi
Y2xvc2UiOiB7IH0sCiAgICAgImNsb3NpbmciOiB7IH0sCiAgICAgImNvbXBsZXRlIjogeyB9LApA
QCAtNzIsNyArNzIsNyBAQAogICAgICJjdXQiOiB7IH0sCiAgICAgImRhdGFhdmFpbGFibGUiOiB7
IH0sCiAgICAgImRhdGFjaGFubmVsIjogeyB9LAotICAgICJkYmxjbGljayI6IHsgfSwKKyAgICAi
ZGJsY2xpY2siOiB7ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJkZXF1ZXVl
IjogeyB9LAogICAgICJkZXZpY2VjaGFuZ2UiOiB7IH0sCiAgICAgImRldmljZW1vdGlvbiI6IHsg
fSwKQEAgLTEwMSwyMSArMTAxLDIxIEBACiAgICAgImV4aXQiOiB7IH0sCiAgICAgImZldGNoIjog
eyB9LAogICAgICJmaW5pc2giOiB7IH0sCi0gICAgImZvY3VzIjogeyB9LAorICAgICJmb2N1cyI6
IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgImZvY3VzaW4iOiB7IH0sCiAg
ICAgImZvY3Vzb3V0IjogeyB9LAogICAgICJmb3JtZGF0YSI6IHsgfSwKICAgICAiZnVsbHNjcmVl
bmNoYW5nZSI6IHsgfSwKICAgICAiZnVsbHNjcmVlbmVycm9yIjogeyB9LAotICAgICJnYW1lcGFk
Y29ubmVjdGVkIjogeyJ0eXBlcyI6IFsiR2FtZXBhZCJdfSwKLSAgICAiZ2FtZXBhZGRpc2Nvbm5l
Y3RlZCI6IHsidHlwZXMiOiBbIkdhbWVwYWQiXX0sCisgICAgImdhbWVwYWRjb25uZWN0ZWQiOiB7
ICJjYXRlZ29yaWVzIjogWyJHYW1lcGFkIl0gfSwKKyAgICAiZ2FtZXBhZGRpc2Nvbm5lY3RlZCI6
IHsgImNhdGVnb3JpZXMiOiBbIkdhbWVwYWQiXSB9LAogICAgICJnYXRoZXJpbmdzdGF0ZWNoYW5n
ZSI6IHsgfSwKLSAgICAiZ2VzdHVyZWNoYW5nZSI6IHsidHlwZXMiOiBbIkdlc3R1cmUiXX0sCi0g
ICAgImdlc3R1cmVlbmQiOiB7InR5cGVzIjogWyJHZXN0dXJlIl19LAorICAgICJnZXN0dXJlY2hh
bmdlIjogeyAiY2F0ZWdvcmllcyI6IFsiR2VzdHVyZSJdIH0sCisgICAgImdlc3R1cmVlbmQiOiB7
ICJjYXRlZ29yaWVzIjogWyJHZXN0dXJlIl0gfSwKICAgICAiZ2VzdHVyZXNjcm9sbGVuZCI6IHsg
fSwKICAgICAiZ2VzdHVyZXNjcm9sbHN0YXJ0IjogeyB9LAogICAgICJnZXN0dXJlc2Nyb2xsdXBk
YXRlIjogeyB9LAotICAgICJnZXN0dXJlc3RhcnQiOiB7InR5cGVzIjogWyJHZXN0dXJlIl19LAor
ICAgICJnZXN0dXJlc3RhcnQiOiB7ICJjYXRlZ29yaWVzIjogWyJHZXN0dXJlIl0gfSwKICAgICAi
Z2VzdHVyZXRhcCI6IHsgfSwKICAgICAiZ2VzdHVyZXRhcGRvd24iOiB7IH0sCiAgICAgImdvdHBv
aW50ZXJjYXB0dXJlIjogeyB9LApAQCAtMTMwLDEwICsxMzAsMTAgQEAKICAgICAiaW5zdGFsbCI6
IHsgfSwKICAgICAiaW52YWxpZCI6IHsgfSwKICAgICAiaW52b2tlIjogeyB9LAotICAgICJrZXlk
b3duIjogeyB9LAotICAgICJrZXlwcmVzcyI6IHsgfSwKKyAgICAia2V5ZG93biI6IHsgImRlZmF1
bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgImtleXByZXNzIjogeyAiZGVmYXVsdEV2ZW50
SGFuZGxlciI6IHRydWUgfSwKICAgICAia2V5c3RhdHVzZXNjaGFuZ2UiOiB7IH0sCi0gICAgImtl
eXVwIjogeyB9LAorICAgICJrZXl1cCI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0s
CiAgICAgImxhbmd1YWdlY2hhbmdlIjogeyB9LAogICAgICJsZWF2ZXBpY3R1cmVpbnBpY3R1cmUi
OiB7IH0sCiAgICAgImxldmVsY2hhbmdlIjogeyB9LApAQCAtMTUwLDE0ICsxNTAsMTQgQEAKICAg
ICAibWVyY2hhbnR2YWxpZGF0aW9uIjogeyB9LAogICAgICJtZXNzYWdlIjogeyB9LAogICAgICJt
ZXNzYWdlZXJyb3IiOiB7IH0sCi0gICAgIm1vdXNlZG93biI6IHsidHlwZXMiOiBbIk1vdXNlQ2xp
Y2tSZWxhdGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAor
ICAgICJtb3VzZWRvd24iOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZUNsaWNrUmVsYXRlZCIsICJT
aW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFu
ZGxlciI6IHRydWUgfSwKICAgICAibW91c2VlbnRlciI6IHsgfSwKICAgICAibW91c2VsZWF2ZSI6
IHsgfSwKLSAgICAibW91c2Vtb3ZlIjogeyJ0eXBlcyI6IFsiTW91c2VNb3ZlUmVsYXRlZCIsICJT
aW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAibW91c2VvdXQi
OiB7InR5cGVzIjogWyJNb3VzZU1vdmVSZWxhdGVkIl19LAotICAgICJtb3VzZW92ZXIiOiB7InR5
cGVzIjogWyJNb3VzZU1vdmVSZWxhdGVkIl19LAotICAgICJtb3VzZXVwIjogeyJ0eXBlcyI6IFsi
TW91c2VDbGlja1JlbGF0ZWQiLCAiU2ltdWxhdGVkTW91c2UiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCi0gICAgIm1vdXNld2hlZWwiOiB7InR5cGVzIjogWyJXaGVlbCJdfSwKKyAgICAibW91
c2Vtb3ZlIjogeyAiY2F0ZWdvcmllcyI6IFsiTW91c2VNb3ZlUmVsYXRlZCIsICJTaW11bGF0ZWRN
b3VzZSIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRy
dWUgfSwKKyAgICAibW91c2VvdXQiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1vdmVSZWxhdGVk
Il0gfSwKKyAgICAibW91c2VvdmVyIjogeyAiY2F0ZWdvcmllcyI6IFsiTW91c2VNb3ZlUmVsYXRl
ZCJdIH0sCisgICAgIm1vdXNldXAiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZUNsaWNrUmVsYXRl
ZCIsICJTaW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2
ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAibW91c2V3aGVlbCI6IHsgImNhdGVnb3JpZXMiOiBb
IldoZWVsIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJtdXRlIjogeyB9
LAogICAgICJuYXZpZ2F0ZSI6IHsgfSwKICAgICAibmF2aWdhdGVlcnJvciI6IHsgfSwKQEAgLTE4
NiwxNCArMTg2LDE0IEBACiAgICAgInBsYXlpbmciOiB7IH0sCiAgICAgInBvaW50ZXJsb2NrY2hh
bmdlIjogeyB9LAogICAgICJwb2ludGVybG9ja2Vycm9yIjogeyB9LAotICAgICJwb2ludGVyY2Fu
Y2VsIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19
LAotICAgICJwb2ludGVyZG93biI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAicG9pbnRlcmVudGVyIjogeyJ0eXBlcyI6IFsiVG91Y2hS
ZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJwb2ludGVybGVhdmUiOiB7
InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAg
InBvaW50ZXJtb3ZlIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hS
ZWxhdGVkIl19LAotICAgICJwb2ludGVyb3V0IjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJwb2ludGVyb3ZlciI6IHsidHlwZXMiOiBb
IlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAicG9pbnRlcnVw
IjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAor
ICAgICJwb2ludGVyY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4
dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAg
ICJwb2ludGVyZG93biI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAicG9p
bnRlcmVudGVyIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91
Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVy
bGVhdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJl
bGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJtb3Zl
IjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVk
Il0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVyb3V0IjogeyAi
Y2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVyb3ZlciI6IHsgImNhdGVn
b3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVs
dEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAicG9pbnRlcnVwIjogeyAiY2F0ZWdvcmllcyI6
IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRI
YW5kbGVyIjogdHJ1ZSB9LAogICAgICJwb3BzdGF0ZSI6IHsgfSwKICAgICAicHJldmlvdXN0cmFj
ayI6IHsgfSwKICAgICAicHJvY2Vzc29yZXJyb3IiOiB7IH0sCkBAIC0yNTMsMjEgKzI1MywyMSBA
QAogICAgICJzdWJtaXQiOiB7IH0sCiAgICAgInN1Y2Nlc3MiOiB7IH0sCiAgICAgInN1c3BlbmQi
OiB7IH0sCi0gICAgInRleHRJbnB1dCI6IHsgfSwKKyAgICAidGV4dElucHV0IjogeyAiZGVmYXVs
dEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAidGltZW91dCI6IHsgfSwKICAgICAidGltZXVw
ZGF0ZSI6IHsgfSwKICAgICAidG9nZ2xlIjogeyB9LAogICAgICJ0b25lY2hhbmdlIjogeyB9LAot
ICAgICJ0b3VjaGNhbmNlbCI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRv
dWNoUmVsYXRlZCJdfSwKLSAgICAidG91Y2hlbmQiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQi
LCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInRvdWNoZm9yY2VjaGFuZ2UiOiB7InR5
cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInRv
dWNobW92ZSI6IHsidHlwZXMiOiBbIlRvdWNoU2Nyb2xsQmxvY2tpbmciLCAiVG91Y2hSZWxhdGVk
IiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJ0b3VjaHN0YXJ0IjogeyJ0eXBlcyI6
IFsiVG91Y2hTY3JvbGxCbG9ja2luZyIsICJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJl
bGF0ZWQiXX0sCisgICAgInRvdWNoY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaGVuZCI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJF
eHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAg
ICAidG91Y2hmb3JjZWNoYW5nZSI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJF
eHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAg
ICAidG91Y2htb3ZlIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hTY3JvbGxCbG9ja2luZyIsICJU
b3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRs
ZXIiOiB0cnVlIH0sCisgICAgInRvdWNoc3RhcnQiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFNj
cm9sbEJsb2NraW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAi
ZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAidHJhY2siOiB7IH0sCi0gICAgInRy
YW5zaXRpb25jYW5jZWwiOiB7InR5cGVzIjogWyJDU1NUcmFuc2l0aW9uIl19LAotICAgICJ0cmFu
c2l0aW9uZW5kIjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKLSAgICAidHJhbnNpdGlv
bnJ1biI6IHsidHlwZXMiOiBbIkNTU1RyYW5zaXRpb24iXX0sCi0gICAgInRyYW5zaXRpb25zdGFy
dCI6IHsidHlwZXMiOiBbIkNTU1RyYW5zaXRpb24iXX0sCisgICAgInRyYW5zaXRpb25jYW5jZWwi
OiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9uIl0gfSwKKyAgICAidHJhbnNpdGlvbmVu
ZCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU1RyYW5zaXRpb24iXSB9LAorICAgICJ0cmFuc2l0aW9u
cnVuIjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCisgICAgInRyYW5zaXRp
b25zdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU1RyYW5zaXRpb24iXSB9LAogICAgICJ1bmNh
cHR1cmVkZXJyb3IiOiB7IH0sCiAgICAgInVuaGFuZGxlZHJlamVjdGlvbiI6IHsgfSwKICAgICAi
dW5sb2FkIjogeyB9LApAQCAtMjg4LDExICsyODgsMTEgQEAKICAgICAid2ViZ2xjb250ZXh0Y3Jl
YXRpb25lcnJvciI6IHsgfSwKICAgICAid2ViZ2xjb250ZXh0bG9zdCI6IHsgfSwKICAgICAid2Vi
Z2xjb250ZXh0cmVzdG9yZWQiOiB7IH0sCi0gICAgIndlYmtpdEFuaW1hdGlvbkVuZCI6IHsidHlw
ZXMiOiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAid2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uIjog
eyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRBbmltYXRpb25TdGFydCI6
IHsidHlwZXMiOiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAid2Via2l0QmVmb3JlVGV4dEluc2Vy
dGVkIjogeyB9LAotICAgICJ3ZWJraXRUcmFuc2l0aW9uRW5kIjogeyJ0eXBlcyI6IFsiQ1NTVHJh
bnNpdGlvbiJdfSwKKyAgICAid2Via2l0QW5pbWF0aW9uRW5kIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAid2Via2l0QW5pbWF0aW9uSXRlcmF0aW9uIjogeyAiY2F0
ZWdvcmllcyI6IFsiQ1NTQW5pbWF0aW9uIl0gfSwKKyAgICAid2Via2l0QW5pbWF0aW9uU3RhcnQi
OiB7ICJjYXRlZ29yaWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRCZWZvcmVU
ZXh0SW5zZXJ0ZWQiOiB7ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJ3ZWJr
aXRUcmFuc2l0aW9uRW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCiAg
ICAgIndlYmtpdGJlZ2luZnVsbHNjcmVlbiI6IHsgfSwKICAgICAid2Via2l0Y3VycmVudHBsYXli
YWNrdGFyZ2V0aXN3aXJlbGVzc2NoYW5nZWQiOiB7IH0sCiAgICAgIndlYmtpdGVuZGZ1bGxzY3Jl
ZW4iOiB7IH0sCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgICAid2Via2l0c291cmNlY2xvc2UiOiB7
IH0sCiAgICAgIndlYmtpdHNvdXJjZWVuZGVkIjogeyB9LAogICAgICJ3ZWJraXRzb3VyY2VvcGVu
IjogeyB9LAotICAgICJ3aGVlbCI6IHsidHlwZXMiOiBbIldoZWVsIl19LAorICAgICJ3aGVlbCI6
IHsgImNhdGVnb3JpZXMiOiBbIldoZWVsIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9
LAogICAgICJ3cml0ZSI6IHsgfSwKICAgICAid3JpdGVlbmQiOiB7IH0sCiAgICAgIndyaXRlc3Rh
cnQiOiB7IH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCA1ZDQ0ZjE3NDUzNmIu
LjRhZmExZGZkZDMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC05Miw3ICs5
Miw4IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAKICAgICBhdXRvIHBhc3NpdmUgPSBvcHRp
b25zLnBhc3NpdmU7CiAKLSAgICBpZiAoIXBhc3NpdmUuaGFzX3ZhbHVlKCkgJiYgUXVpcmtzOjpz
aG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoKnRoaXMsIGV2ZW50VHlwZSkpCisgICAgYXV0
byB0eXBlSW5mbyA9IGV2ZW50TmFtZXMoKS50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7Cisg
ICAgaWYgKCFwYXNzaXZlLmhhc192YWx1ZSgpICYmIFF1aXJrczo6c2hvdWxkTWFrZUV2ZW50TGlz
dGVuZXJQYXNzaXZlKCp0aGlzLCB0eXBlSW5mbykpCiAgICAgICAgIHBhc3NpdmUgPSB0cnVlOwog
CiAgICAgYm9vbCBsaXN0ZW5lckNyZWF0ZWRGcm9tU2NyaXB0ID0gWyZdIHsKQEAgLTExMyw3ICsx
MTQsNyBAQCBib29sIEV2ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZQogICAgIGlmIChsaXN0ZW5lckNyZWF0ZWRG
cm9tU2NyaXB0KQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEFkZEV2ZW50
TGlzdGVuZXIoKnRoaXMsIGV2ZW50VHlwZSwgbGlzdGVuZXIuZ2V0KCksIG9wdGlvbnMuY2FwdHVy
ZSk7CiAKLSAgICBpZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkK
KyAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkKICAg
ICAgICAgaW52YWxpZGF0ZUV2ZW50TGlzdGVuZXJSZWdpb25zKCk7CiAKICAgICBldmVudExpc3Rl
bmVyc0RpZENoYW5nZSgpOwpAQCAtMTU3LDcgKzE1OCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OnJl
bW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5l
cigqdGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucy5jYXB0dXJlKTsKIAogICAgIGlm
IChkYXRhLT5ldmVudExpc3RlbmVyTWFwLnJlbW92ZShldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRp
b25zLmNhcHR1cmUpKSB7Ci0gICAgICAgIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlw
ZShldmVudFR5cGUpKQorICAgICAgICBpZiAoZXZlbnROYW1lcygpLnR5cGVJbmZvRm9yRXZlbnQo
ZXZlbnRUeXBlKS5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hlZWwpKQogICAgICAgICAg
ICAgaW52YWxpZGF0ZUV2ZW50TGlzdGVuZXJSZWdpb25zKCk7CiAKICAgICAgICAgZXZlbnRMaXN0
ZW5lcnNEaWRDaGFuZ2UoKTsKQEAgLTI2MSw3ICsyNjIsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojp1
bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCkKIHsKIH0KIAotc3RhdGljIGNvbnN0IEF0
b21TdHJpbmcmIGxlZ2FjeVR5cGUoY29uc3QgRXZlbnQmIGV2ZW50KQorY29uc3QgQXRvbVN0cmlu
ZyYgRXZlbnRUYXJnZXQ6OmxlZ2FjeVR5cGVGb3JFdmVudChjb25zdCBFdmVudCYgZXZlbnQpCiB7
CiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKICAgICBpZiAo
ZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMuYW5pbWF0aW9uZW5kRXZlbnQpCkBAIC0zMDcsNyAr
MzA4LDcgQEAgdm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVu
dCwgRXZlbnRJbnZva2VQaGFzZSBwaGFzZSkKICAgICBpZiAoIWV2ZW50LmlzVHJ1c3RlZCgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBjb25zdCBBdG9tU3RyaW5nJiBsZWdhY3lUeXBlTmFtZSA9
IGxlZ2FjeVR5cGUoZXZlbnQpOworICAgIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5cGVOYW1l
ID0gbGVnYWN5VHlwZUZvckV2ZW50KGV2ZW50KTsKICAgICBpZiAoIWxlZ2FjeVR5cGVOYW1lLmlz
TnVsbCgpKSB7CiAgICAgICAgIGlmIChhdXRvKiBsZWdhY3lMaXN0ZW5lcnNWZWN0b3IgPSBkYXRh
LT5ldmVudExpc3RlbmVyTWFwLmZpbmQobGVnYWN5VHlwZU5hbWUpKSB7CiAgICAgICAgICAgICBB
dG9tU3RyaW5nIHR5cGVOYW1lID0gZXZlbnQudHlwZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQu
aAppbmRleCBkMDllODc4NTE4NmYuLjYwNzcwNTg1MTQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmgKQEAgLTEwNSw2ICsxMDUsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRXZlbnQoRXZlbnQmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0
dWFsIHZvaWQgdW5jYXVnaHRFeGNlcHRpb25JbkV2ZW50SGFuZGxlcigpOwogCisgICAgc3RhdGlj
IGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5cGVGb3JFdmVudChjb25zdCBFdmVudCYpOworCiAg
ICAgLy8gVXNlZCBmb3IgbGVnYWN5ICJvbmV2ZW50IiBhdHRyaWJ1dGVzLgogICAgIHRlbXBsYXRl
PHR5cGVuYW1lIEpTTWF5YmVFcnJvckV2ZW50TGlzdGVuZXI+CiAgICAgdm9pZCBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVl
IGxpc3RlbmVyLCBKU0M6OkpTT2JqZWN0JiBqc0V2ZW50VGFyZ2V0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApp
bmRleCA0M2MxZDRjZGQxYmIuLjI4MzAwMDdmMzFlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjIx
NSwxMiArMjIxNSwxMiBAQCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1bWVu
dCYgb2xkRG9jdW1lbnQsIERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAgICAgICAgdGV4dE1hbmlw
dWxhdGlvbkNvbnRyb2xsZXItPnJlbW92ZU5vZGUoKnRoaXMpOwogCiAgICAgaWYgKGF1dG8qIGV2
ZW50VGFyZ2V0RGF0YSA9IHRoaXMtPmV2ZW50VGFyZ2V0RGF0YSgpKSB7Ci0gICAgICAgIGF1dG8m
IGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgICAgIGlmICghZXZlbnRU
YXJnZXREYXRhLT5ldmVudExpc3RlbmVyTWFwLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZm9y
IChhdXRvJiB0eXBlIDogZXZlbnRUYXJnZXREYXRhLT5ldmVudExpc3RlbmVyTWFwLmV2ZW50VHlw
ZXMoKSkKLSAgICAgICAgICAgICAgICBuZXdEb2N1bWVudC5hZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZCh0eXBlKTsKLSAgICAgICAgfQorICAgICAgICBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVu
ZXJNYXAuZW51bWVyYXRlRXZlbnRMaXN0ZW5lclR5cGVzKFsmXShhdXRvJiBldmVudFR5cGUsIHVu
c2lnbmVkIGNvdW50KSB7CisgICAgICAgICAgICBvbGREb2N1bWVudC5kaWRSZW1vdmVFdmVudExp
c3RlbmVyc09mVHlwZShldmVudFR5cGUsIGNvdW50KTsKKyAgICAgICAgICAgIG5ld0RvY3VtZW50
LmRpZEFkZEV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSwgY291bnQpOworICAgICAgICB9
KTsKIAorICAgICAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwog
ICAgICAgICB1bnNpZ25lZCBudW1XaGVlbEV2ZW50SGFuZGxlcnMgPSBldmVudExpc3RlbmVycyhl
dmVudE5hbWVzLm1vdXNld2hlZWxFdmVudCkuc2l6ZSgpICsgZXZlbnRMaXN0ZW5lcnMoZXZlbnRO
YW1lcy53aGVlbEV2ZW50KS5zaXplKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBudW1XaGVlbEV2ZW50SGFuZGxlcnM7ICsraSkgewogICAgICAgICAgICAgb2xkRG9jdW1lbnQu
ZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKnRoaXMpOwpAQCAtMjI3NSwyOSArMjI3NSwxNCBA
QCB2b2lkIE5vZGU6Om1vdmVOb2RlVG9OZXdEb2N1bWVudChEb2N1bWVudCYgb2xkRG9jdW1lbnQs
IERvY3VtZW50JiBuZXdEb2N1bWVudCkKICAgICAgICAgZWxlbWVudC0+ZGlkTW92ZVRvTmV3RG9j
dW1lbnQob2xkRG9jdW1lbnQsIG5ld0RvY3VtZW50KTsKIH0KIAotYm9vbCBpc1RvdWNoUmVsYXRl
ZEV2ZW50VHlwZShjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGNvbnN0IEV2ZW50VGFyZ2V0
JiB0YXJnZXQpCitib29sIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IEV2ZW50VHlwZUlu
Zm8mIGV2ZW50VHlwZSwgY29uc3QgRXZlbnRUYXJnZXQmIHRhcmdldCkKIHsKLSAgICBhdXRvJiBl
dmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgaWYgKGlzPE5vZGU+KHRhcmdldCkgJiYgZG93bmNhc3Q8Tm9kZT4odGFyZ2V0KS5k
b2N1bWVudCgpLnF1aXJrcygpLnNob3VsZERpc3BhdGNoU2ltdWxhdGVkTW91c2VFdmVudHMoJnRh
cmdldCkpIHsKLSAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLm1vdXNlZG93bkV2
ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLm1vdXNlbW92ZUV2ZW50IHx8IGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzLm1vdXNldXBFdmVudCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIH0KKyAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0KSAmJiBkb3duY2FzdDxOb2RlPih0YXJnZXQp
LmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2ZW50cygm
dGFyZ2V0KSkKKyAgICAgICAgcmV0dXJuIGV2ZW50VHlwZS5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRl
Z29yeTo6RXh0ZW5kZWRUb3VjaFJlbGF0ZWQpOwogI2VuZGlmCiAgICAgVU5VU0VEX1BBUkFNKHRh
cmdldCk7Ci0gICAgcmV0dXJuIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNoc3RhcnRFdmVu
dAotICAgICAgICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaG1vdmVFdmVudAotICAg
ICAgICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaGVuZEV2ZW50Ci0gICAgICAgIHx8
IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNoY2FuY2VsRXZlbnQKLSAgICAgICAgfHwgZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hmb3JjZWNoYW5nZUV2ZW50Ci0gICAgICAgIHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzLnBvaW50ZXJvdmVyRXZlbnQKLSAgICAgICAgfHwgZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMucG9pbnRlcmVudGVyRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMucG9pbnRlcmRvd25FdmVudAotICAgICAgICB8fCBldmVudFR5cGUgPT0g
ZXZlbnROYW1lcy5wb2ludGVybW92ZUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzLnBvaW50ZXJ1cEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnBvaW50ZXJvdXRFdmVudAotICAgICAgICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2lu
dGVybGVhdmVFdmVudAotICAgICAgICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVy
Y2FuY2VsRXZlbnQ7CisgICAgcmV0dXJuIGV2ZW50VHlwZS5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRl
Z29yeTo6VG91Y2hSZWxhdGVkKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIHRyeUFkZEV2ZW50
TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBS
ZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3QgQWRkRXZlbnRMaXN0ZW5lck9wdGlv
bnMmIG9wdGlvbnMpCkBAIC0yMzA1LDMwICsyMjkwLDMxIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCB0
cnlBZGRFdmVudExpc3RlbmVyKE5vZGUqIHRhcmdldE5vZGUsIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50CiAgICAgaWYgKCF0YXJnZXROb2RlLT5FdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihl
dmVudFR5cGUsIGxpc3RlbmVyLmNvcHlSZWYoKSwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuYWRkTGlzdGVuZXJUeXBlSWZOZWVk
ZWQoZXZlbnRUeXBlKTsKKyAgICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRpZEFkZEV2ZW50TGlz
dGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSk7CiAKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29y
ZTo6ZXZlbnROYW1lcygpOwotICAgIGlmIChldmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZl
bnRUeXBlKSkKKyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50
KGV2ZW50VHlwZSk7CisgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5
OjpXaGVlbCkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkQWRkV2hlZWxFdmVu
dEhhbmRsZXIoKnRhcmdldE5vZGUpOwotICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRU
eXBlKGV2ZW50VHlwZSwgKnRhcmdldE5vZGUpKQorICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVk
RXZlbnRUeXBlKHR5cGVJbmZvLCAqdGFyZ2V0Tm9kZSkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRv
Y3VtZW50KCkuZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIoKnRhcmdldE5vZGUpOwotICAgIGVsc2Ug
aWYgKGV2ZW50TmFtZXMuaXNNb3VzZUNsaWNrUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUpKQor
ICAgIGVsc2UgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZUNs
aWNrUmVsYXRlZCkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkQWRkT3JSZW1v
dmVNb3VzZUV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQotICAgIGlmICh0YXJnZXROb2RlID09ICZ0YXJnZXROb2RlLT5kb2N1bWVudCgpICYmIGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzLnNjcm9sbEV2ZW50KSB7CisgICAgaWYgKHRhcmdldE5vZGUg
PT0gJnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgdHlwZUluZm8udHlwZSgpID09IEV2ZW50VHlw
ZTo6c2Nyb2xsKSB7CiAgICAgICAgIGlmIChhdXRvKiB3aW5kb3cgPSB0YXJnZXROb2RlLT5kb2N1
bWVudCgpLmRvbVdpbmRvdygpKQogICAgICAgICAgICAgd2luZG93LT5pbmNyZW1lbnRTY3JvbGxF
dmVudExpc3RlbmVyc0NvdW50KCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
LSAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkp
CisgICAgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqdGFyZ2V0Tm9kZSkp
CiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuYWRkVG91Y2hFdmVudExpc3RlbmVyKCp0
YXJnZXROb2RlKTsKICNlbmRpZgogI2VuZGlmIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCiAKICNp
ZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSAmJiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAg
IGlmIChldmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVudFR5cGUpKQorICAgIGlmICh0
eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6R2VzdHVyZSkpCiAgICAgICAgIHRh
cmdldE5vZGUtPmRvY3VtZW50KCkuYWRkVG91Y2hFdmVudEhhbmRsZXIoKnRhcmdldE5vZGUpOwog
I2VuZGlmCiAKQEAgLTIzNDUsMzAgKzIzMzEsMzMgQEAgc3RhdGljIGlubGluZSBib29sIHRyeVJl
bW92ZUV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbVN0cmluZyYgZXYK
ICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgbGlzdGVuZXIsIG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAg
ICB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRpZFJlbW92ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2
ZW50VHlwZSk7CisKICAgICAvLyBGSVhNRTogTm90aWZ5IERvY3VtZW50IHRoYXQgdGhlIGxpc3Rl
bmVyIGhhcyB2YW5pc2hlZC4gV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIGEgbnVtYmVyIG9mCiAg
ICAgLy8gbGlzdGVuZXJzIGZvciBlYWNoIHR5cGUsIG5vdCBqdXN0IGEgYm9vbCAtIHNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4NjEKICAgICBhdXRvJiBldmVu
dE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwotICAgIGlmIChldmVudE5hbWVzLmlzV2hl
ZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50
eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7CisgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29y
eShFdmVudENhdGVnb3J5OjpXaGVlbCkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCku
ZGlkUmVtb3ZlV2hlZWxFdmVudEhhbmRsZXIoKnRhcmdldE5vZGUpOwotICAgIGVsc2UgaWYgKGlz
VG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRhcmdldE5vZGUpKQorICAgIGVsc2Ug
aWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqdGFyZ2V0Tm9kZSkpCiAgICAg
ICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKnRh
cmdldE5vZGUpOwotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNNb3VzZUNsaWNrUmVsYXRlZEV2
ZW50VHlwZShldmVudFR5cGUpKQorICAgIGVsc2UgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpNb3VzZUNsaWNrUmVsYXRlZCkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRv
Y3VtZW50KCkuZGlkQWRkT3JSZW1vdmVNb3VzZUV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIGlmICh0YXJnZXROb2RlID09ICZ0YXJnZXRO
b2RlLT5kb2N1bWVudCgpICYmIGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnNjcm9sbEV2ZW50KSB7
CisgICAgaWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgdHlwZUlu
Zm8udHlwZSgpID09IEV2ZW50VHlwZTo6c2Nyb2xsKSB7CiAgICAgICAgIGlmIChhdXRvKiB3aW5k
b3cgPSB0YXJnZXROb2RlLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpKQogICAgICAgICAgICAgd2lu
ZG93LT5kZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CiAgICAgfQogCiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZl
bnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisgICAgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKHR5
cGVJbmZvLCAqdGFyZ2V0Tm9kZSkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkucmVt
b3ZlVG91Y2hFdmVudExpc3RlbmVyKCp0YXJnZXROb2RlKTsKICNlbmRpZgogI2VuZGlmIC8vIFBM
QVRGT1JNKElPU19GQU1JTFkpCiAKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKSAmJiBF
TkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChldmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlw
ZShldmVudFR5cGUpKQorICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29y
eTo6R2VzdHVyZSkpCiAgICAgICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkucmVtb3ZlVG91Y2hF
dmVudEhhbmRsZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAKQEAgLTI1NDIsMjggKzI1MzEsMzYg
QEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAg
cmV0dXJuOwogICAgIGF1dG8mIGV2ZW50VHlwZSA9IGV2ZW50LnR5cGUoKTsKICAgICBhdXRvJiBl
dmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwotICAgIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcy5rZXlkb3duRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMua2V5cHJl
c3NFdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5rZXl1cEV2ZW50KSB7CisgICAgYXV0
byB0eXBlSW5mbyA9IGV2ZW50TmFtZXMudHlwZUluZm9Gb3JFdmVudChldmVudFR5cGUpOworICAg
IHN3aXRjaCAodHlwZUluZm8udHlwZSgpKSB7CisgICAgY2FzZSBFdmVudFR5cGU6OmtleWRvd246
CisgICAgY2FzZSBFdmVudFR5cGU6OmtleXByZXNzOgorICAgIGNhc2UgRXZlbnRUeXBlOjprZXl1
cDoKICAgICAgICAgaWYgKFJlZlB0ciBrZXlib2FyZEV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PEtl
eWJvYXJkRXZlbnQ+KGV2ZW50KSkgewogICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRv
Y3VtZW50KCkuZnJhbWUoKSkKICAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCku
ZGVmYXVsdEtleWJvYXJkRXZlbnRIYW5kbGVyKCprZXlib2FyZEV2ZW50KTsKICAgICAgICAgfQot
ICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuY2xpY2tFdmVudCkgeworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6Y2xpY2s6CiAgICAgICAgIGRpc3BhdGNo
RE9NQWN0aXZhdGVFdmVudChldmVudCk7CisgICAgICAgIGJyZWFrOwogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuY29udGV4
dG1lbnVFdmVudCkgeworICAgIGNhc2UgRXZlbnRUeXBlOjpjb250ZXh0bWVudToKICAgICAgICAg
aWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIHBhZ2UgPSBmcmFtZS0+cGFnZSgpKQogICAgICAgICAgICAgICAgIHBhZ2UtPmNvbnRl
eHRNZW51Q29udHJvbGxlcigpLmhhbmRsZUNvbnRleHRNZW51RXZlbnQoZXZlbnQpOwogICAgICAg
ICB9CisgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcy50ZXh0SW5wdXRFdmVudCkgeworICAgIGNhc2UgRXZlbnRUeXBlOjp0ZXh0SW5w
dXQ6CiAgICAgICAgIGlmIChSZWZQdHIgdGV4dEV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PFRleHRF
dmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
VGV4dElucHV0RXZlbnRIYW5kbGVyKCp0ZXh0RXZlbnQpOwogICAgICAgICB9CisgICAgICAgIGJy
ZWFrOwogI2lmIEVOQUJMRShQQU5fU0NST0xMSU5HKQotICAgIH0gZWxzZSBpZiAoYXV0byogbW91
c2VFdmVudCA9IGR5bmFtaWNEb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCk7IG1vdXNlRXZlbnQg
JiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2Vkb3duRXZlbnQpIHsKLSAgICAgICAgaWYg
KG1vdXNlRXZlbnQtPmJ1dHRvbigpID09IE1vdXNlQnV0dG9uOjpNaWRkbGUpIHsKKyAgICBjYXNl
IEV2ZW50VHlwZTo6bW91c2Vkb3duOgorICAgICAgICBpZiAoYXV0byogbW91c2VFdmVudCA9IGR5
bmFtaWNEb3duY2FzdDxNb3VzZUV2ZW50PihldmVudCk7IG1vdXNlRXZlbnQgJiYgb3VzZUV2ZW50
LT5idXR0b24oKSA9PSBNb3VzZUJ1dHRvbjo6TWlkZGxlKSB7CiAgICAgICAgICAgICBpZiAoZW5j
bG9zaW5nTGlua0V2ZW50UGFyZW50T3JTZWxmKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0yNTc2LDQ1ICsyNTczLDU0IEBAIHZvaWQgTm9kZTo6ZGVmYXVsdEV2ZW50SGFuZGxlcihF
dmVudCYgZXZlbnQpCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIGJyZWFrOwogI2VuZGlmCi0gICAgfSBlbHNlIGlmIChhdXRvKiB3aGVlbEV2ZW50
ID0gZHluYW1pY0Rvd25jYXN0PFdoZWVsRXZlbnQ+KGV2ZW50KTsgd2hlZWxFdmVudCAmJiBldmVu
dE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkgewotICAgICAgICAvLyBJZiB3ZSBk
b24ndCBoYXZlIGEgcmVuZGVyZXIsIHNlbmQgdGhlIHdoZWVsIGV2ZW50IHRvIHRoZSBmaXJzdCBu
b2RlIHdlIGZpbmQgd2l0aCBhIHJlbmRlcmVyLgotICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBm
b3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0PnMgZ2V0
IGEgd2hlZWwgc2Nyb2xsLgotICAgICAgICBOb2RlKiBzdGFydE5vZGUgPSB0aGlzOwotICAgICAg
ICB3aGlsZSAoc3RhcnROb2RlICYmICFzdGFydE5vZGUtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKTsKKyAgICBj
YXNlIEV2ZW50VHlwZTo6bW91c2V3aGVlbDoKKyAgICBjYXNlIEV2ZW50VHlwZTo6d2hlZWw6Cisg
ICAgICAgIEFTU0VSVCh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hlZWwp
KTsKKyAgICAgICAgaWYgKGF1dG8qIHdoZWVsRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8V2hlZWxF
dmVudD4oZXZlbnQpOyB3aGVlbEV2ZW50KSB7CisgICAgICAgICAgICAvLyBJZiB3ZSBkb24ndCBo
YXZlIGEgcmVuZGVyZXIsIHNlbmQgdGhlIHdoZWVsIGV2ZW50IHRvIHRoZSBmaXJzdCBub2RlIHdl
IGZpbmQgd2l0aCBhIHJlbmRlcmVyLgorICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9y
IDxvcHRpb24+IGFuZCA8b3B0Z3JvdXA+IGVsZW1lbnRzIHNvIHRoYXQgPHNlbGVjdD5zIGdldCBh
IHdoZWVsIHNjcm9sbC4KKyAgICAgICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7CisgICAg
ICAgICAgICB3aGlsZSAoc3RhcnROb2RlICYmICFzdGFydE5vZGUtPnJlbmRlcmVyKCkpCisgICAg
ICAgICAgICAgICAgc3RhcnROb2RlID0gc3RhcnROb2RlLT5wYXJlbnRPclNoYWRvd0hvc3ROb2Rl
KCk7CiAgICAgICAgIAotICAgICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVy
ZXIoKSkgewotICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUo
KSkKLSAgICAgICAgICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVsdFdoZWVsRXZl
bnRIYW5kbGVyKFJlZlB0ciB7IHN0YXJ0Tm9kZSB9LmdldCgpLCAqd2hlZWxFdmVudCk7CisgICAg
ICAgICAgICBpZiAoc3RhcnROb2RlICYmIHN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkgeworICAgICAg
ICAgICAgICAgIGlmIChSZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpCisgICAgICAg
ICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0V2hlZWxFdmVudEhhbmRs
ZXIoUmVmUHRyIHsgc3RhcnROb2RlIH0uZ2V0KCksICp3aGVlbEV2ZW50KTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgogI2lmIEVOQUJMRShU
T1VDSF9FVkVOVFMpICYmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgfSBlbHNlIGlmIChhdXRv
KiB0b3VjaEV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PFRvdWNoRXZlbnQ+KGV2ZW50KTsgdG91Y2hF
dmVudCAmJiBpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0aGlzKSkgewotICAg
ICAgICAvLyBDYXB0dXJlIHRoZSB0YXJnZXQgbm9kZSdzIHZpc2liaWxpdHkgc3RhdGUgYmVmb3Jl
IGRpc3BhdGNoaW5nIHRvdWNoU3RhcnQuCi0gICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gZHlu
YW1pY0Rvd25jYXN0PEVsZW1lbnQ+KCp0aGlzKTsgZWxlbWVudCAmJiBldmVudFR5cGUgPT0gZXZl
bnROYW1lcy50b3VjaHN0YXJ0RXZlbnQpIHsKKyAgICAgICAgaWYgKGF1dG8qIHRvdWNoRXZlbnQg
PSBkeW5hbWljRG93bmNhc3Q8VG91Y2hFdmVudD4oZXZlbnQpOyB0b3VjaEV2ZW50ICYmIGlzVG91
Y2hSZWxhdGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqdGhpcykpIHsKKyAgICAgICAgICAgIC8vIENh
cHR1cmUgdGhlIHRhcmdldCBub2RlJ3MgdmlzaWJpbGl0eSBzdGF0ZSBiZWZvcmUgZGlzcGF0Y2hp
bmcgdG91Y2hTdGFydC4KKyAgICAgICAgICAgIGlmIChhdXRvKiBlbGVtZW50ID0gZHluYW1pY0Rv
d25jYXN0PEVsZW1lbnQ+KCp0aGlzKTsgZWxlbWVudCAmJiB0eXBlSW5mby50eXBlKCkgPT0gRXZl
bnRUeXBlOjp0b3VjaHN0YXJ0KSB7CiAjaWYgRU5BQkxFKENPTlRFTlRfQ0hBTkdFX09CU0VSVkVS
KQotICAgICAgICAgICAgYXV0byYgY29udGVudENoYW5nZU9ic2VydmVyID0gZG9jdW1lbnQoKS5j
b250ZW50Q2hhbmdlT2JzZXJ2ZXIoKTsKLSAgICAgICAgICAgIGlmIChDb250ZW50Q2hhbmdlT2Jz
ZXJ2ZXI6OmlzVmlzdWFsbHlIaWRkZW4oKnRoaXMpKQotICAgICAgICAgICAgICAgIGNvbnRlbnRD
aGFuZ2VPYnNlcnZlci5zZXRIaWRkZW5Ub3VjaFRhcmdldCgqZWxlbWVudCk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgY29udGVudENoYW5nZU9ic2VydmVyLnJlc2V0SGlkZGVu
VG91Y2hUYXJnZXQoKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2
ZXIgPSBkb2N1bWVudCgpLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOworICAgICAgICAgICAgICAg
IGlmIChDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6OmlzVmlzdWFsbHlIaWRkZW4oKnRoaXMpKQorICAg
ICAgICAgICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIuc2V0SGlkZGVuVG91Y2hUYXJn
ZXQoKmVsZW1lbnQpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
Y29udGVudENoYW5nZU9ic2VydmVyLnJlc2V0SGlkZGVuVG91Y2hUYXJnZXQoKTsKICNlbmRpZgot
ICAgICAgICB9CisgICAgICAgICAgICB9CiAKLSAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCk7Ci0gICAgICAgIGZvciAoOyByZW5kZXJlcjsgcmVuZGVyZXIg
PSByZW5kZXJlci0+cGFyZW50KCkpIHsKLSAgICAgICAgICAgIGF1dG8qIHJlbmRlckJveCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcik7Ci0gICAgICAgICAgICBpZiAocmVu
ZGVyQm94ICYmIHJlbmRlckJveC0+Y2FuQmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KKyAgICAgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpOworICAgICAgICAgICAgZm9yICg7IHJl
bmRlcmVyOyByZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgeworICAgICAgICAgICAgICAg
IGF1dG8qIHJlbmRlckJveCA9IGR5bmFtaWNEb3duY2FzdDxSZW5kZXJCb3g+KCpyZW5kZXJlcik7
CisgICAgICAgICAgICAgICAgaWYgKHJlbmRlckJveCAmJiByZW5kZXJCb3gtPmNhbkJlU2Nyb2xs
ZWRBbmRIYXNTY3JvbGxhYmxlQXJlYSgpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KIAotICAgICAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKSkg
ewotICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkgewot
ICAgICAgICAgICAgICAgIFJlZlB0ciByZW5kZXJlck5vZGUgPSByZW5kZXJlci0+bm9kZSgpOwot
ICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0VG91Y2hFdmVudEhh
bmRsZXIoKnJlbmRlcmVyTm9kZSwgKnRvdWNoRXZlbnQpOworICAgICAgICAgICAgaWYgKHJlbmRl
cmVyICYmIHJlbmRlcmVyLT5ub2RlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoUmVmUHRyIGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0ciBy
ZW5kZXJlck5vZGUgPSByZW5kZXJlci0+bm9kZSgpOworICAgICAgICAgICAgICAgICAgICBmcmFt
ZS0+ZXZlbnRIYW5kbGVyKCkuZGVmYXVsdFRvdWNoRXZlbnRIYW5kbGVyKCpyZW5kZXJlck5vZGUs
ICp0b3VjaEV2ZW50KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICNlbmRpZgorICAgICAgICBicmVhazsKICAgICB9CiB9CiAKQEAgLTI2MzAsMTQgKzI2MzYs
MTUgQEAgYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvTW91c2VNb3ZlRXZlbnRzKCkgY29uc3QKICNl
bmRpZgogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAg
cmV0dXJuIGV2ZW50VHlwZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Ci0g
ICAgICAgIHJldHVybiBldmVudE5hbWVzLmlzTW91c2VNb3ZlUmVsYXRlZEV2ZW50VHlwZSh0eXBl
KTsKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMudHlwZUluZm9Gb3JFdmVudCh0eXBlKS5pc0lu
Q2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6TW91c2VNb3ZlUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAK
IGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb1RvdWNoRXZlbnRzKCkgY29uc3QKIHsKKyAgICBhdXRv
JiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwogICAgIHJldHVybiBldmVudFR5
cGVzKCkuY29udGFpbnNJZihbJl0oY29uc3QgYXV0byYgdHlwZSkgewotICAgICAgICByZXR1cm4g
aXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZSwgKnRoaXMpOworICAgICAgICByZXR1cm4gZXZl
bnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KHR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5
OjpUb3VjaFJlbGF0ZWQpOwogICAgIH0pOwogfQogCkBAIC0yNjczLDcgKzI2ODAsNyBAQCBib29s
IE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZUNsaWNrRXZlbnRzV2l0aEVkaXRhYmlsaXR5KEVkaXRh
YmlsaXR5IGVkaXRhYmlsaXR5KQogCiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2
ZW50TmFtZXMoKTsKICAgICByZXR1cm4gZXZlbnRUeXBlcygpLmNvbnRhaW5zSWYoWyZdKGNvbnN0
IGF1dG8mIHR5cGUpIHsKLSAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMuaXNNb3VzZUNsaWNrUmVs
YXRlZEV2ZW50VHlwZSh0eXBlKTsKKyAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMudHlwZUluZm9G
b3JFdmVudCh0eXBlKS5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6TW91c2VDbGlja1JlbGF0
ZWQpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAzOGQwNTQxMDg5ZTEuLmZjODhjNzYw
ZTkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENvbnRhaW5lck5vZGU7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7Citj
bGFzcyBFdmVudFR5cGVJbmZvOwogY2xhc3MgRmxvYXRQb2ludDsKIGNsYXNzIEhUTUxRdWFsaWZp
ZWROYW1lOwogY2xhc3MgSFRNTFNsb3RFbGVtZW50OwpAQCAtNzcyLDcgKzc3Myw3IEBAIHRlbXBs
YXRlPFRyZWVUeXBlID0gVHJlZT4gc3RkOjpwYXJ0aWFsX29yZGVyaW5nIHRyZWVPcmRlcihjb25z
dCBOb2RlJiwgY29uc3QgTm9kCiAKIFdFQkNPUkVfRVhQT1JUIHN0ZDo6cGFydGlhbF9vcmRlcmlu
ZyB0cmVlT3JkZXJGb3JUZXN0aW5nKFRyZWVUeXBlLCBjb25zdCBOb2RlJiwgY29uc3QgTm9kZSYp
OwogCi1ib29sIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
VHlwZSwgY29uc3QgRXZlbnRUYXJnZXQmKTsKK2Jvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUo
Y29uc3QgRXZlbnRUeXBlSW5mbyYsIGNvbnN0IEV2ZW50VGFyZ2V0Jik7CiAKICNpZiBBU1NFUlRf
RU5BQkxFRAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZS1ldmVudC1uYW1l
cy5weSBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2ZW50LW5hbWVzLnB5CmluZGV4IGFkODJi
YzY1MmZkOS4uZjczODAyNGMwNWUyIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFr
ZS1ldmVudC1uYW1lcy5weQorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZS1ldmVudC1uYW1l
cy5weQpAQCAtNzIsMzkgKzcyLDg5IEBAIGRlZiBtYWluKCk6CiAjaW5jbHVkZSAiVGhyZWFkR2xv
YmFsRGF0YS5oIgogI2luY2x1ZGUgPGFycmF5PgogI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgorI2luY2x1ZGUgPHd0Zi9Sb2Jpbkhvb2RIYXNoTWFwLmg+
CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbVN0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0
b21TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorZW51bSBjbGFzcyBFdmVu
dFR5cGUgOiB1aW50MTZfdCB7CisgICAgY3VzdG9tID0gMCwnJycpCisKKyAgICAgICAgY2F0ZWdv
cnlfbWFwID0ge30KKyAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGV2ZW50X25hbWVzX2lucHV0
LmtleXMoKSk6CisgICAgICAgICAgICBlbnRyeSA9IGV2ZW50X25hbWVzX2lucHV0W25hbWVdCisg
ICAgICAgICAgICBmb3IgZXZlbnRfY2F0ZWdvcnkgaW4gZW50cnkuZ2V0KCdjYXRlZ29yaWVzJywg
W10pOgorICAgICAgICAgICAgICAgIGNhdGVnb3J5X21hcC5zZXRkZWZhdWx0KGV2ZW50X2NhdGVn
b3J5LCBbXSkKKyAgICAgICAgICAgICAgICBjYXRlZ29yeV9tYXBbZXZlbnRfY2F0ZWdvcnldLmFw
cGVuZChuYW1lKQorICAgICAgICAgICAgY29uZGl0aW9uYWwgPSBlbnRyeS5nZXQoJ2NvbmRpdGlv
bmFsJywgTm9uZSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgorICAgICAgICAgICAgICAg
IHdyaXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCisgICAgICAgICAgICB3cml0ZWxuKGYnICAg
IHtuYW1lfSwnKQorICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6CisgICAgICAgICAgICAgICAg
d3JpdGVsbignI2VuZGlmJykKKworICAgICAgICB3cml0ZWxuKCcnJ307CisKK2VudW0gY2xhc3Mg
RXZlbnRDYXRlZ29yeSA6IHVpbnQxNl90IHsnJycpCisKKyAgICAgICAgYml0X3NoaWZ0ID0gMAor
ICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3J5X21hcC5rZXlzKCkpOgorICAg
ICAgICAgICAgd3JpdGVsbihmJyAgICB7Y2F0ZWdvcnl9ID0gMXUgPDwge2JpdF9zaGlmdH0sJykK
KyAgICAgICAgICAgIGJpdF9zaGlmdCArPSAxCisKKyAgICAgICAgd3JpdGVsbignJyd9OworCitj
bGFzcyBFdmVudFR5cGVJbmZvIHsKK3B1YmxpYzoKKyAgICBlbnVtIGNsYXNzIERlZmF1bHRFdmVu
dEhhbmRsZXIgOiBib29sIHsgTm8sIFllcyB9OworCisgICAgRXZlbnRUeXBlSW5mbygpCisgICAg
ICAgIDogbV90eXBlKEV2ZW50VHlwZTo6Y3VzdG9tKQorICAgIHsgfQorCisgICAgRXZlbnRUeXBl
SW5mbyhFdmVudFR5cGUgdHlwZSwgT3B0aW9uU2V0PEV2ZW50Q2F0ZWdvcnk+IGNhdGVnb3JpZXMs
IERlZmF1bHRFdmVudEhhbmRsZXIgZGVmYXVsdEV2ZW50SGFuZGxlcikKKyAgICAgICAgOiBtX3R5
cGUodHlwZSkKKyAgICAgICAgLCBtX2NhdGVnb3JpZXMoY2F0ZWdvcmllcy50b1JhdygpKQorICAg
ICAgICAsIG1faGFzRGVmYXVsdEV2ZW50SGFuZGxlcihkZWZhdWx0RXZlbnRIYW5kbGVyID09IERl
ZmF1bHRFdmVudEhhbmRsZXI6OlllcykKKyAgICB7IH0KKworICAgIEV2ZW50VHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8RXZlbnRUeXBlPihtX3R5cGUpOyB9CisgICAgYm9v
bCBpc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeSBjYXRlZ29yeSkgY29uc3QgeyByZXR1cm4gT3B0
aW9uU2V0PEV2ZW50Q2F0ZWdvcnk+Ojpmcm9tUmF3KG1fY2F0ZWdvcmllcykuY29udGFpbnMoY2F0
ZWdvcnkpOyB9CisgICAgYm9vbCBoYXNEZWZhdWx0RXZlbnRIYW5kbGVyKCkgY29uc3QgeyByZXR1
cm4gbV9oYXNEZWZhdWx0RXZlbnRIYW5kbGVyOyB9CisKK3ByaXZhdGU6CisgICAgRXZlbnRUeXBl
IG1fdHlwZTsKKyAgICB1aW50MTZfdCBtX2NhdGVnb3JpZXMgOiAxNTsKKyAgICB1aW50MTZfdCBt
X2hhc0RlZmF1bHRFdmVudEhhbmRsZXIgOiAxOworfTsKKwogc3RydWN0IEV2ZW50TmFtZXMgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50TmFtZXMpOyBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLQogcHVibGljOicnJykKLSAgICAgICAgdHlwZV9tYXAgPSB7fQorCiAgICAgICAgIGZv
ciBuYW1lIGluIHNvcnRlZChldmVudF9uYW1lc19pbnB1dC5rZXlzKCkpOgogICAgICAgICAgICAg
ZW50cnkgPSBldmVudF9uYW1lc19pbnB1dFtuYW1lXQogICAgICAgICAgICAgY29uZGl0aW9uYWwg
PSBlbnRyeS5nZXQoJ2NvbmRpdGlvbmFsJywgTm9uZSkKICAgICAgICAgICAgIGlmIGNvbmRpdGlv
bmFsOgogICAgICAgICAgICAgICAgIHdyaXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCiAgICAg
ICAgICAgICB3cml0ZWxuKGYnICAgIGNvbnN0IEF0b21TdHJpbmcge25hbWV9RXZlbnQ7JykKLSAg
ICAgICAgICAgIGZvciBldmVudF90eXBlIGluIGVudHJ5LmdldCgndHlwZXMnLCBbXSk6Ci0gICAg
ICAgICAgICAgICAgdHlwZV9tYXAuc2V0ZGVmYXVsdChldmVudF90eXBlLCBbXSkKLSAgICAgICAg
ICAgICAgICB0eXBlX21hcFtldmVudF90eXBlXS5hcHBlbmQobmFtZSkKICAgICAgICAgICAgIGlm
IGNvbmRpdGlvbmFsOgogICAgICAgICAgICAgICAgIHdyaXRlbG4oJyNlbmRpZicpCiAKICAgICAg
ICAgd3JpdGVsbignJycKKyAgICBFdmVudFR5cGVJbmZvIHR5cGVJbmZvRm9yRXZlbnQoY29uc3Qg
QXRvbVN0cmluZyYpIGNvbnN0OworCiAgICAgdGVtcGxhdGU8Y2xhc3MuLi4gQXJncz4KICAgICBz
dGF0aWMgc3RkOjp1bmlxdWVfcHRyPEV2ZW50TmFtZXM+IGNyZWF0ZShBcmdzJiYuLi4gYXJncykK
ICAgICB7CiAgICAgICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4obmV3IEV2
ZW50TmFtZXMoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7CiAgICAgfScnJykKIAotICAg
ICAgICBmb3IgZXZlbnRfdHlwZSBpbiBzb3J0ZWQodHlwZV9tYXAua2V5cygpKToKLSAgICAgICAg
ICAgIHdyaXRlbG4oJycpCi0gICAgICAgICAgICB3cml0ZWxuKGYnICAgIGlubGluZSBib29sIGlz
e2V2ZW50X3R5cGV9RXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmKSBjb25zdDsnKQotICAgICAg
ICAgICAgbmFtZV9jb3VudCA9IGxlbih0eXBlX21hcFtldmVudF90eXBlXSkKLSAgICAgICAgICAg
IHdyaXRlbG4oZicgICAgaW5saW5lIHN0ZDo6YXJyYXk8Y29uc3QgQXRvbVN0cmluZywge25hbWVf
Y291bnR9PiB7bG93ZXJjYXNlX2ZpcnN0X2xldHRlcihldmVudF90eXBlKX1FdmVudE5hbWVzKCkg
Y29uc3Q7JykKKyAgICAgICAgZm9yIGNhdGVnb3J5IGluIHNvcnRlZChjYXRlZ29yeV9tYXAua2V5
cygpKToKKyAgICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4oY2F0ZWdvcnlfbWFwW2NhdGVnb3J5
XSkKKyAgICAgICAgICAgIHdyaXRlbG4oZicgICAgaW5saW5lIHN0ZDo6YXJyYXk8Y29uc3QgQXRv
bVN0cmluZywge25hbWVfY291bnR9PiB7bG93ZXJjYXNlX2ZpcnN0X2xldHRlcihjYXRlZ29yeSl9
RXZlbnROYW1lcygpIGNvbnN0OycpCiAKICAgICAgICAgd3JpdGVsbignJykKICAgICAgICAgd3Jp
dGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5nLCB7bGVuKGV2ZW50
X25hbWVzX2lucHV0KX0+IGFsbEV2ZW50TmFtZXMoKSBjb25zdDsnKQpAQCAtMTEyLDYgKzE2Miw4
IEBAIHB1YmxpYzonJycpCiAgICAgICAgIHdyaXRlbG4oJycnCiBwcml2YXRlOgogICAgIEV2ZW50
TmFtZXMoKTsKKworICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxB
dG9tU3RyaW5nLCBFdmVudFR5cGVJbmZvPiBtX3R5cGVJbmZvTWFwOwogfTsKIAogY29uc3QgRXZl
bnROYW1lcyYgZXZlbnROYW1lcygpOwpAQCAtMTE5LDI4ICsxNzEsMTggQEAgY29uc3QgRXZlbnRO
YW1lcyYgZXZlbnROYW1lcygpOwogaW5saW5lIGNvbnN0IEV2ZW50TmFtZXMmIGV2ZW50TmFtZXMo
KQogewogICAgIHJldHVybiB0aHJlYWRHbG9iYWxEYXRhKCkuZXZlbnROYW1lcygpOworfQorCitp
bmxpbmUgRXZlbnRUeXBlSW5mbyBFdmVudE5hbWVzOjp0eXBlSW5mb0ZvckV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90eXBlSW5mb01hcC5p
bmxpbmVHZXQoZXZlbnRUeXBlKTsKIH0nJycpCiAKLSAgICAgICAgZm9yIGV2ZW50X3R5cGUgaW4g
c29ydGVkKHR5cGVfbWFwLmtleXMoKSk6Ci0gICAgICAgICAgICBuYW1lcyA9IHR5cGVfbWFwW2V2
ZW50X3R5cGVdCi0gICAgICAgICAgICBuYW1lX2NvdW50ID0gbGVuKHR5cGVfbWFwW2V2ZW50X3R5
cGVdKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3J5X21hcC5rZXlzKCkp
OgorICAgICAgICAgICAgbmFtZXMgPSBjYXRlZ29yeV9tYXBbY2F0ZWdvcnldCisgICAgICAgICAg
ICBuYW1lX2NvdW50ID0gbGVuKGNhdGVnb3J5X21hcFtjYXRlZ29yeV0pCiAgICAgICAgICAgICB3
cml0ZWxuKCcnKQotICAgICAgICAgICAgd3JpdGVsbihmJ2lubGluZSBib29sIEV2ZW50TmFtZXM6
Omlze2V2ZW50X3R5cGV9RXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHR5cGUpIGNvbnN0JykK
LSAgICAgICAgICAgIHdyaXRlbG4oJ3snKQotICAgICAgICAgICAgIyBGSVhNRTogU3VwcG9ydCBj
b25kaXRpb25hbHMgaW4gdGhlIGZpcnN0IG9yIHRoZSBsYXN0IGl0ZW0uCi0gICAgICAgICAgICB3
cml0ZWxuKGYnICAgIHJldHVybiB0eXBlID09IHtuYW1lc1swXX1FdmVudCcpCi0gICAgICAgICAg
ICBmb3IgbmFtZSBpbiBuYW1lc1sxOi0xXToKLSAgICAgICAgICAgICAgICBjb25kaXRpb25hbCA9
IGV2ZW50X25hbWVzX2lucHV0W25hbWVdLmdldCgnY29uZGl0aW9uYWwnLCBOb25lKQotICAgICAg
ICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKGYn
I2lmIHtjb25kaXRpb25hbH0nKQotICAgICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgICAgIHx8
IHR5cGUgPT0ge25hbWV9RXZlbnQnKQotICAgICAgICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgot
ICAgICAgICAgICAgICAgICAgICB3cml0ZWxuKGYnI2VuZGlmJykKLSAgICAgICAgICAgIGlmIGxl
bihuYW1lcykgPj0gMjoKLSAgICAgICAgICAgICAgICB3cml0ZWxuKGYnICAgICAgICB8fCB0eXBl
ID09IHtuYW1lc1stMV19RXZlbnQ7JykKLSAgICAgICAgICAgIHdyaXRlbG4oJ30nKQotICAgICAg
ICAgICAgd3JpdGVsbignJykKLSAgICAgICAgICAgIHdyaXRlbG4oZidpbmxpbmUgc3RkOjphcnJh
eTxjb25zdCBBdG9tU3RyaW5nLCB7bmFtZV9jb3VudH0+IEV2ZW50TmFtZXM6Ontsb3dlcmNhc2Vf
Zmlyc3RfbGV0dGVyKGV2ZW50X3R5cGUpfUV2ZW50TmFtZXMoKSBjb25zdCcpCisgICAgICAgICAg
ICB3cml0ZWxuKGYnaW5saW5lIHN0ZDo6YXJyYXk8Y29uc3QgQXRvbVN0cmluZywge25hbWVfY291
bnR9PiBFdmVudE5hbWVzOjp7bG93ZXJjYXNlX2ZpcnN0X2xldHRlcihjYXRlZ29yeSl9RXZlbnRO
YW1lcygpIGNvbnN0JykKICAgICAgICAgICAgIHdyaXRlbG4oJ3snKQogICAgICAgICAgICAgd3Jp
dGVsbignICAgIHJldHVybiB7IHsnKQogICAgICAgICAgICAgZm9yIG5hbWUgaW4gbmFtZXM6CkBA
IC0yMDksNyArMjUxLDI3IEBAIEV2ZW50TmFtZXM6OkV2ZW50TmFtZXMoKScnJykKICAgICAgICAg
ICAgIGRlbGltaXRlciA9ICcsJwogICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6CiAgICAgICAg
ICAgICAgICAgd3JpdGVsbignI2VuZGlmJykKLQorICAgICAgICB3cml0ZWxuKGYnICAgIHtkZWxp
bWl0ZXJ9IG1fdHlwZUluZm9NYXAoe3snKQorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZXZl
bnRfbmFtZXNfaW5wdXQua2V5cygpKToKKyAgICAgICAgICAgIGVudHJ5ID0gZXZlbnRfbmFtZXNf
aW5wdXRbbmFtZV0KKyAgICAgICAgICAgIGNvbmRpdGlvbmFsID0gZW50cnkuZ2V0KCdjb25kaXRp
b25hbCcsIE5vbmUpCisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAgICAgICAg
ICB3cml0ZWxuKGYnI2lmIHtjb25kaXRpb25hbH0nKQorICAgICAgICAgICAgd3JpdGUoZicgICAg
ICAgIHt7IFwie25hbWV9XCJfcywge3sgRXZlbnRUeXBlOjp7bmFtZX0sIHt7ICcpCisgICAgICAg
ICAgICBjYXRlZ29yaWVzID0gZW50cnkuZ2V0KCdjYXRlZ29yaWVzJywgW10pCisgICAgICAgICAg
ICBpZiBjYXRlZ29yaWVzOgorICAgICAgICAgICAgICAgIGZvciBjYXRlZ29yeSBpbiBjYXRlZ29y
aWVzWzotMV06CisgICAgICAgICAgICAgICAgICAgIHdyaXRlKGYnRXZlbnRDYXRlZ29yeTo6e2Nh
dGVnb3J5fSwgJykKKyAgICAgICAgICAgICAgICB3cml0ZShmJ0V2ZW50Q2F0ZWdvcnk6OntjYXRl
Z29yaWVzWy0xXX0gJykKKyAgICAgICAgICAgIHdyaXRlKCd9LCAnKQorICAgICAgICAgICAgaWYg
ZW50cnkuZ2V0KCdkZWZhdWx0RXZlbnRIYW5kbGVyJywgRmFsc2UpOgorICAgICAgICAgICAgICAg
IHdyaXRlKCdFdmVudFR5cGVJbmZvOjpEZWZhdWx0RXZlbnRIYW5kbGVyOjpZZXMnKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3cml0ZSgnRXZlbnRUeXBlSW5mbzo6RGVmYXVs
dEV2ZW50SGFuZGxlcjo6Tm8nKQorICAgICAgICAgICAgd3JpdGVsbignIH0gfSwnKQorICAgICAg
ICAgICAgaWYgY29uZGl0aW9uYWw6CisgICAgICAgICAgICAgICAgd3JpdGVsbignI2VuZGlmJykK
KyAgICAgICAgd3JpdGVsbignICAgIH0pJykKICAgICAgICAgd3JpdGVsbignJyd7IH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZScnJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFBsdWdJbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxl
bWVudC5jcHAKaW5kZXggYWIxZThmM2Q1ZTE3Li5mYTlhZDhlN2IxNWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0xNzYsNiArMTc2LDIxIEBAIHZvaWQg
SFRNTFBsdWdJbkVsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hCiAgICAgfQogfQogCitOb2RlOjpJbnNlcnRlZEludG9BbmNlc3Rv
clJlc3VsdCBIVE1MUGx1Z0luRWxlbWVudDo6aW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5zZXJ0aW9u
VHlwZSBpbnNlcnRpb25UeXBlLCBDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSkK
K3sKKyAgICBhdXRvIHJlc3VsdCA9IEhUTUxGcmFtZU93bmVyRWxlbWVudDo6aW5zZXJ0ZWRJbnRv
QW5jZXN0b3IoaW5zZXJ0aW9uVHlwZSwgcGFyZW50T2ZJbnNlcnRlZFRyZWUpOworICAgIGlmIChp
bnNlcnRpb25UeXBlLmNvbm5lY3RlZFRvRG9jdW1lbnQpCisgICAgICAgIGRvY3VtZW50KCkuZGlk
Q29ubmVjdFBsdWdpbkVsZW1lbnQoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEhU
TUxQbHVnSW5FbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxU
eXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKQoreworICAgIEhUTUxG
cmFtZU93bmVyRWxlbWVudDo6cmVtb3ZlZEZyb21BbmNlc3RvcihyZW1vdmFsVHlwZSwgb2xkUGFy
ZW50T2ZSZW1vdmVkVHJlZSk7CisgICAgaWYgKHJlbW92YWxUeXBlLmRpc2Nvbm5lY3RlZEZyb21E
b2N1bWVudCkKKyAgICAgICAgZG9jdW1lbnQoKS5kaWREaXNjb25uZWN0UGx1Z2luRWxlbWVudCgp
OworfQorCiB2b2lkIEhUTUxQbHVnSW5FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50
JiBldmVudCkKIHsKICAgICAvLyBGaXJlZm94IHNlZW1zIHRvIHVzZSBhIGZha2UgZXZlbnQgbGlz
dGVuZXIgdG8gZGlzcGF0Y2ggZXZlbnRzIHRvIHBsdWctaW4gKHRlc3RlZCB3aXRoIG1vdXNlIGV2
ZW50cyBvbmx5KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVs
ZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAppbmRleCAw
ZGFlMmZlNGE0ZWMuLmYyNDRmODU1ZjEwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuaApAQCAtODQsNiArODQsOSBAQCBwcm90ZWN0ZWQ6CiAKICAgICB2aXJ0dWFsIGJv
b2wgdXNlRmFsbGJhY2tDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAgIElu
c2VydGVkSW50b0FuY2VzdG9yUmVzdWx0IGluc2VydGVkSW50b0FuY2VzdG9yKEluc2VydGlvblR5
cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRUcmVlKSBvdmVycmlkZTsKKyAgICB2
b2lkIHJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUpIG92ZXJyaWRlOworCiAgICAgdm9pZCBkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50JikgZmluYWw7CiAKICAgICB2aXJ0dWFsIGJvb2wgcmVxdWVzdE9iamVjdChjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwZSwgY29uc3QgVmVjdG9yPEF0b21T
dHJpbmc+JiBwYXJhbU5hbWVzLCBjb25zdCBWZWN0b3I8QXRvbVN0cmluZz4mIHBhcmFtVmFsdWVz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxET01XaW5kb3cuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRvdy5jcHAKaW5kZXggMzBjYWE0ODk2ZTM0
Li4wNGI5OTQ5M2ZmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxET01X
aW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYWxET01XaW5kb3cuY3BwCkBA
IC01MjUsNiArNTI1LDcgQEAgdm9pZCBMb2NhbERPTVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50
RnJvbUZyYW1lKCkKICAgICAgICAgb2JzZXJ2ZXIud2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21G
cmFtZSgpOwogICAgIH0pOwogCisKICAgICBpZiAoUmVmUHRyIHBlcmZvcm1hbmNlID0gbV9wZXJm
b3JtYW5jZSkKICAgICAgICAgcGVyZm9ybWFuY2UtPmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7CiAK
QEAgLTIwNTIsNDIgKzIwNTMsNTMgQEAgYm9vbCBMb2NhbERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0
ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3QKIAogICAgIFJl
ZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgYXV0byYgZXZlbnROYW1lcyA9
IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50
eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7CiAgICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAg
IGRvY3VtZW50LT5hZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChldmVudFR5cGUpOwotICAgICAgICBp
ZiAoZXZlbnROYW1lcy5pc1doZWVsRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgICAgIGRvY3Vt
ZW50LT5kaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShldmVudFR5cGUpOworICAgICAgICBpZiAo
dHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgICAg
IGRvY3VtZW50LT5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqZG9jdW1lbnQpOwotICAgICAgICBl
bHNlIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCisg
ICAgICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqZG9jdW1l
bnQpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKCpkb2N1
bWVudCk7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnN0b3JhZ2VF
dmVudCkKICAgICAgICAgICAgIGRpZEFkZFN0b3JhZ2VFdmVudExpc3RlbmVyKCp0aGlzKTsKICAg
ICB9CiAKLSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudW5sb2FkRXZlbnQpCisgICAg
c3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50VHlwZTo6dW5sb2FkOgog
ICAgICAgICBhZGRVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwotICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFsbG93c0JlZm9yZVVubG9h
ZExpc3RlbmVycyh0aGlzKSkKLSAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcih0
aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OmJlZm9yZXVubG9hZDoK
KyAgICAgICAgaWYgKGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKKyAgICAgICAg
ICAgIGFkZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgIGJyZWFrOwog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMuc2Nyb2xsRXZlbnQpCisgICAgY2FzZSBFdmVudFR5cGU6OnNjcm9sbDoKICAgICAgICAg
aW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOworICAgICAgICBicmVhazsKKyNl
bmRpZgorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgY2FzZSBFdmVudFR5cGU6
OmRldmljZW9yaWVudGF0aW9uOgorICAgICAgICBzdGFydExpc3RlbmluZ0ZvckRldmljZU9yaWVu
dGF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6
OmRldmljZW1vdGlvbjoKKyAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5l
Y2Vzc2FyeSgpOworICAgICAgICBicmVhazsKICNlbmRpZgorICAgIGRlZmF1bHQ6CiAjaWYgRU5B
QkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgZWxzZSBpZiAoZG9jdW1lbnQgJiYgaXNUb3VjaFJl
bGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1lbnQpKQotICAgICAgICArK21fdG91Y2hB
bmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICBpZiAoaXNUb3VjaFJlbGF0ZWRF
dmVudFR5cGUodHlwZUluZm8sICpkb2N1bWVudCkpCisgICAgICAgICAgICArK21fdG91Y2hBbmRH
ZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwogI2VuZGlmCiAjaWYgRU5BQkxFKElPU19HRVNUVVJF
X0VWRU5UUykKLSAgICBlbHNlIGlmIChldmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVu
dFR5cGUpKQotICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50Owor
ICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Okdlc3R1cmUp
KQorICAgICAgICAgICAgKyttX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKICNl
bmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNHYW1l
cGFkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGluY3JlbWVudEdhbWVwYWRFdmVudExp
c3RlbmVyQ291bnQoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0g
ICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuZGV2aWNlb3JpZW50YXRpb25FdmVu
dCkKLSAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JEZXZpY2VPcmllbnRhdGlvbklmTmVjZXNzYXJ5
KCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuZGV2aWNlbW90aW9uRXZl
bnQpCi0gICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9yRGV2aWNlTW90aW9uSWZOZWNlc3NhcnkoKTsK
KyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHYW1lcGFk
KSkKKyAgICAgICAgICAgIGluY3JlbWVudEdhbWVwYWRFdmVudExpc3RlbmVyQ291bnQoKTsKICNl
bmRpZgorICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIy
OTYsNDMgKzIzMDgsNTUgQEAgYm9vbCBMb2NhbERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5l
cihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGUKIAogICAgIFJlZlB0ciBk
b2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNv
cmU6OmV2ZW50TmFtZXMoKTsKKyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5m
b0ZvckV2ZW50KGV2ZW50VHlwZSk7CiAgICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgIGlmIChl
dmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICAgICAgZG9jdW1lbnQt
PmRpZFJlbW92ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSk7CisgICAgICAgIGlmICh0
eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hlZWwpKQogICAgICAgICAgICAg
ZG9jdW1lbnQtPmRpZFJlbW92ZVdoZWVsRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7Ci0gICAgICAg
IGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50KSkK
KyAgICAgICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpkb2N1
bWVudCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIo
KmRvY3VtZW50KTsKICAgICB9CiAKLSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudW5s
b2FkRXZlbnQpCisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50
VHlwZTo6dW5sb2FkOgogICAgICAgICByZW1vdmVVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwot
ICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmJlZm9yZXVubG9hZEV2ZW50ICYm
IGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKLSAgICAgICAgcmVtb3ZlQmVmb3Jl
VW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVu
dFR5cGU6OmJlZm9yZXVubG9hZDoKKyAgICAgICAgaWYgKGFsbG93c0JlZm9yZVVubG9hZExpc3Rl
bmVycyh0aGlzKSkKKyAgICAgICAgICAgIHJlbW92ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIo
dGhpcyk7CisgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxz
ZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpCisgICAgY2FzZSBFdmVu
dFR5cGU6OnNjcm9sbDoKICAgICAgICAgZGVjcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3Vu
dCgpOworICAgICAgICBicmVhazsKICNlbmRpZgorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJ
T04pCisgICAgY2FzZSBFdmVudFR5cGU6OmRldmljZW9yaWVudGF0aW9uOgorICAgICAgICBzdG9w
TGlzdGVuaW5nRm9yRGV2aWNlT3JpZW50YXRpb25JZk5lY2Vzc2FyeSgpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlIEV2ZW50VHlwZTo6ZGV2aWNlbW90aW9uOgorICAgICAgICBzdG9wTGlzdGVu
aW5nRm9yRGV2aWNlTW90aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYK
KyAgICBkZWZhdWx0OgogI2lmIEVOQUJMRShJT1NfVE9VQ0hfRVZFTlRTKQotICAgIGVsc2UgaWYg
KGRvY3VtZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50
KSkgewotICAgICAgICBBU1NFUlQobV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQg
PiAwKTsKLSAgICAgICAgLS1tX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKLSAg
ICB9CisgICAgICAgIGlmIChkb2N1bWVudCAmJiBpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBl
SW5mbywgKmRvY3VtZW50KSkgeworICAgICAgICAgICAgQVNTRVJUKG1fdG91Y2hBbmRHZXN0dXJl
RXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7CisgICAgICAgICAgICAtLW1fdG91Y2hBbmRHZXN0dXJl
RXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX0dF
U1RVUkVfRVZFTlRTKQotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBl
KGV2ZW50VHlwZSkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0
ZW5lckNvdW50ID4gMCk7Ci0gICAgICAgIC0tbV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVy
Q291bnQ7Ci0gICAgfQorICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0
ZWdvcnk6Okdlc3R1cmUpKSB7CisgICAgICAgICAgICBBU1NFUlQobV90b3VjaEFuZEdlc3R1cmVF
dmVudExpc3RlbmVyQ291bnQgPiAwKTsKKyAgICAgICAgICAgIC0tbV90b3VjaEFuZEdlc3R1cmVF
dmVudExpc3RlbmVyQ291bnQ7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFE
KQotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNHYW1lcGFkRXZlbnRUeXBlKGV2ZW50VHlwZSkp
Ci0gICAgICAgIGRlY3JlbWVudEdhbWVwYWRFdmVudExpc3RlbmVyQ291bnQoKTsKLSNlbmRpZgot
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMuZGV2aWNlb3JpZW50YXRpb25FdmVudCkKLSAgICAgICAgc3RvcExpc3Rlbmlu
Z0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNlc3NhcnkoKTsKLSAgICBlbHNlIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcy5kZXZpY2Vtb3Rpb25FdmVudCkKLSAgICAgICAgc3RvcExpc3Rlbmlu
Z0ZvckRldmljZU1vdGlvbklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGlmICh0eXBlSW5mby5pc0lu
Q2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6R2FtZXBhZCkpCisgICAgICAgICAgICBkZWNyZW1lbnRH
YW1lcGFkRXZlbnRMaXN0ZW5lckNvdW50KCk7CiAjZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAg
fQogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggNDQ0NWM1
OGE0MzA1Li40NmFiZTQyZDQzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVp
cmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKQEAgLTk1NSw3ICs5
NTUsNyBAQCBib29sIFF1aXJrczo6c2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmcoKSBj
b25zdAogfQogCiAvLyBzbW9vdGhzY3JvbGwgSlMgbGlicmFyeSByZGFyOi8vNTI3MTI1MTMKLWJv
b2wgUXVpcmtzOjpzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJn
ZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUpCitib29sIFF1aXJr
czo6c2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiBldmVu
dFRhcmdldCwgY29uc3QgRXZlbnRUeXBlSW5mbyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8gZXZl
bnRUYXJnZXRJc1Jvb3QgPSBbXShjb25zdCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQpIHsKICAg
ICAgICAgaWYgKGlzPExvY2FsRE9NV2luZG93PihldmVudFRhcmdldCkpCkBAIC05NzIsNyArOTcy
LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZShjb25zdCBF
dmVudFRhcmdldCYgZXZlbnRUYXJnZXQsIGNvbnMKICAgICAgICAgcmV0dXJuIGRvd25jYXN0PERv
Y3VtZW50PihldmVudFRhcmdldC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpOwogICAgIH07CiAK
LSAgICBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hTY3JvbGxCbG9ja2luZ0V2ZW50VHlwZShldmVu
dFR5cGUpKSB7CisgICAgaWYgKGV2ZW50VHlwZS5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6
VG91Y2hTY3JvbGxCbG9ja2luZykpIHsKICAgICAgICAgaWYgKGV2ZW50VGFyZ2V0SXNSb290KGV2
ZW50VGFyZ2V0KSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRG
cm9tRXZlbnRUYXJnZXQoZXZlbnRUYXJnZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiBkb2N1
bWVudC0+c2V0dGluZ3MoKS5wYXNzaXZlVG91Y2hMaXN0ZW5lcnNBc0RlZmF1bHRPbkRvY3VtZW50
KCk7CkBAIC05ODAsNyArOTgwLDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VFdmVudExpc3Rl
bmVyUGFzc2l2ZShjb25zdCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQsIGNvbnMKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50
VHlwZShldmVudFR5cGUpKSB7CisgICAgaWYgKGV2ZW50VHlwZS5pc0luQ2F0ZWdvcnkoRXZlbnRD
YXRlZ29yeTo6V2hlZWwpKSB7CiAgICAgICAgIGlmIChldmVudFRhcmdldElzUm9vdChldmVudFRh
cmdldCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50RnJvbUV2
ZW50VGFyZ2V0KGV2ZW50VGFyZ2V0KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQt
PnNldHRpbmdzKCkucGFzc2l2ZVdoZWVsTGlzdGVuZXJzQXNEZWZhdWx0T25Eb2N1bWVudCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmgKaW5kZXggNjA1ZjZjZmQ0ZWUyLi41ODE3MjJhZjdjMjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaApAQCAtMzUsNiArMzUsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1l
bnQ7CiBjbGFzcyBFdmVudExpc3RlbmVyOwogY2xhc3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVu
dFR5cGVJbmZvOwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50Owog
Y2xhc3MgTGF5b3V0VW5pdDsKQEAgLTExMyw3ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBz
aG91bGRCeXBhc3NCYWNrRm9yd2FyZENhY2hlKCkgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRCeXBh
c3NBc3luY1NjcmlwdERlZmVycmluZygpIGNvbnN0OwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxk
TWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRNYWtlRXZlbnRMaXN0ZW5l
clBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmLCBjb25zdCBFdmVudFR5cGVJbmZvJiBldmVudFR5
cGUpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKICAgICBib29sIHNob3VsZEVuYWJsZUxl
Z2FjeUdldFVzZXJNZWRpYVF1aXJrKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWUg
Yi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNzaGFyZWRkYXRhL3hjc2NoZW1lcy9X
ZWJLaXQueGNzY2hlbWUKaW5kZXggYTM3MjcxY2I1NzU1Li40OTVkNTIyN2U2YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai94Y3NoYXJlZGRhdGEveGNzY2hlbWVz
L1dlYktpdC54Y3NjaGVtZQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2oveGNz
aGFyZWRkYXRhL3hjc2NoZW1lcy9XZWJLaXQueGNzY2hlbWUKQEAgLTQwLDYgKzQwLDI5IEBACiAg
ICAgICBkZWJ1Z0RvY3VtZW50VmVyc2lvbmluZyA9ICJZRVMiCiAgICAgICBkZWJ1Z1NlcnZpY2VF
eHRlbnNpb24gPSAiaW50ZXJuYWwiCiAgICAgICBhbGxvd0xvY2F0aW9uU2ltdWxhdGlvbiA9ICJZ
RVMiPgorICAgICAgPEJ1aWxkYWJsZVByb2R1Y3RSdW5uYWJsZQorICAgICAgICAgcnVubmFibGVE
ZWJ1Z2dpbmdNb2RlID0gIjAiPgorICAgICAgICAgPEJ1aWxkYWJsZVJlZmVyZW5jZQorICAgICAg
ICAgICAgQnVpbGRhYmxlSWRlbnRpZmllciA9ICJwcmltYXJ5IgorICAgICAgICAgICAgQmx1ZXBy
aW50SWRlbnRpZmllciA9ICI5MzQwOTk0QTA4NTQwQ0FFMDA3RjNCQzgiCisgICAgICAgICAgICBC
dWlsZGFibGVOYW1lID0gIkR1bXBSZW5kZXJUcmVlIgorICAgICAgICAgICAgQmx1ZXByaW50TmFt
ZSA9ICJEdW1wUmVuZGVyVHJlZSIKKyAgICAgICAgICAgIFJlZmVyZW5jZWRDb250YWluZXIgPSAi
Y29udGFpbmVyOi4uLy4uL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvaiI+CisgICAgICAgICA8L0J1aWxkYWJsZVJlZmVyZW5jZT4KKyAgICAgIDwvQnVpbGRhYmxl
UHJvZHVjdFJ1bm5hYmxlPgorICAgICAgPENvbW1hbmRMaW5lQXJndW1lbnRzPgorICAgICAgICAg
PENvbW1hbmRMaW5lQXJndW1lbnQKKyAgICAgICAgICAgIGFyZ3VtZW50ID0gIi4uLy4uL0xheW91
dFRlc3RzL2Zhc3QvZG9tL2xhenktaW1hZ2UtbG9hZGluZy1kb2N1bWVudC1sZWFrLmh0bWwgIgor
ICAgICAgICAgICAgaXNFbmFibGVkID0gIllFUyI+CisgICAgICAgICA8L0NvbW1hbmRMaW5lQXJn
dW1lbnQ+CisgICAgICA8L0NvbW1hbmRMaW5lQXJndW1lbnRzPgorICAgICAgPEVudmlyb25tZW50
VmFyaWFibGVzPgorICAgICAgICAgPEVudmlyb25tZW50VmFyaWFibGUKKyAgICAgICAgICAgIGtl
eSA9ICJPU19BQ1RJVklUWV9NT0RFIgorICAgICAgICAgICAgdmFsdWUgPSAiZGlzYWJsZSIKKyAg
ICAgICAgICAgIGlzRW5hYmxlZCA9ICJZRVMiPgorICAgICAgICAgPC9FbnZpcm9ubWVudFZhcmlh
YmxlPgorICAgICAgPC9FbnZpcm9ubWVudFZhcmlhYmxlcz4KICAgIDwvTGF1bmNoQWN0aW9uPgog
ICAgPFByb2ZpbGVBY3Rpb24KICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvbiA9ICJSZWxlYXNlIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRl
eCBhNzlmMjFjN2FmMDIuLmMwYTAxYTY4MTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIGZyYW1lLT5l
dmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQobnVsbHB0cik7CiAK
ICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlTW91c2VFdmVudChzdGF0
aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgIH0gZWxz
ZSBpZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnQudHlwZSgpKSAmJiBjdXJy
ZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudFR5cGU6OldoZWVsKQorICAgIH0gZWxzZSBpZiAo
KGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2hlZWxFdmVudCB8fCBldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkgJiYgY3VycmVudEV2ZW50LT50eXBlKCkg
PT0gV2ViRXZlbnRUeXBlOjpXaGVlbCkKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdp
bi0+aGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJXaGVlbEV2ZW50Jj4oKmN1
cnJlbnRFdmVudCkpOwogICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
bW91c2VvdmVyRXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnRUeXBlOjpN
b3VzZU1vdmUpCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZU1vdXNl
RW50ZXJFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVu
dCkpOwo=
</data>
<flag name="commit-queue"
          id="495842"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469322</attachid>
            <date>2024-01-07 00:26:42 -0800</date>
            <delta_ts>2024-01-07 03:10:35 -0800</delta_ts>
            <desc>WIP3</desc>
            <filename>event-type-info-early-return-3.patch</filename>
            <type>text/plain</type>
            <size>56779</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZTI4MTRkMWU0NC4uZDk4NzU1ZWYxNDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3MzAsMzggKzU3MzAsNzMgQEAgYm9vbCBEb2N1
bWVudDo6aGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZl
bnRUeXBlKSBjb25zdAogdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJD
b3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLkRPTVN1
YnRyZWVNb2RpZmllZEV2ZW50KQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJ
bmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjpET01TdWJ0cmVlTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTVN1YnRyZWVNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZUluc2VydGVkRXZlbnQpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWQ6CiAgICAgICAgIGFkZExp
c3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRFdmVudCkKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkOgogICAgICAgICBhZGRMaXN0
ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3ZlZCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50OgogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVk
RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01DaGFyYWN0ZXJE
YXRhTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTUNo
YXJhY3RlckRhdGFNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMub3ZlcmZsb3djaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjpvdmVyZmxvd2NoYW5nZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5
cGU6Ok92ZXJmbG93Q2hhbmdlZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuc2Nyb2xsRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpzY3Jv
bGw6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OlNjcm9sbCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdp
bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vm
b3JjZXdpbGxiZWdpbjoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9y
Y2VXaWxsQmVnaW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLndlYmtp
dG1vdXNlZm9yY2VjaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjp3ZWJraXRtb3VzZWZvcmNlY2hhbmdlZDoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExp
c3RlbmVyVHlwZTo6Rm9yY2VDaGFuZ2VkKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy53ZWJraXRtb3VzZWZvcmNlZG93bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vmb3JjZWRvd246CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlRG93bik7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXVwRXZlbnQpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXZlbnRUeXBlOjp3ZWJraXRtb3VzZWZvcmNldXA6CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlVXApOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzLmZvY3VzaW5FdmVudCkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5
cGU6OmZvY3VzaW46CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkZvY3Vz
SW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmZvY3Vzb3V0RXZlbnQp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpmb2N1c291dDoKICAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9jdXNPdXQpOwotICAgIGVsc2UgaWYgKGV2
ZW50TmFtZXMuaXNDU1NUcmFuc2l0aW9uRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOwotICAgIGVsc2UgaWYg
KGV2ZW50TmFtZXMuaXNDU1NBbmltYXRpb25FdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Q1NTQW5pbWF0aW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpDU1NUcmFuc2l0aW9uKSkKKyAgICAgICAgICAgIGFkZExpc3RlbmVyVHlwZShM
aXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOworICAgICAgICBlbHNlIGlmICh0eXBlSW5mby5p
c0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6Q1NTQW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU0FuaW1hdGlvbik7CisgICAgfQorfQorCit2
b2lkIERvY3VtZW50OjpkaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb3VudCk7CisgICAg
YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
ZXZlbnRMaXN0ZW5lckNvdW50cy5mYXN0QWRkKGV2ZW50VHlwZSwgMCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkUmVtb3ZlRXZl
bnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCB1bnNpZ25lZCBj
b3VudCkKK3sKKyAgICBBU1NFUlQoY291bnQpOworICAgIEFTU0VSVChtX2V2ZW50TGlzdGVuZXJD
b3VudHMuY29udGFpbnMoZXZlbnRUeXBlKSk7CisgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5l
ckNvdW50cy5maW5kKGV2ZW50VHlwZSk7CisgICAgQVNTRVJUKGl0LT52YWx1ZSA+PSBjb3VudCk7
CisgICAgaXQtPnZhbHVlIC09IGNvdW50OwogfQogCiBIVE1MRnJhbWVPd25lckVsZW1lbnQqIERv
Y3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNGFm
ZWRlYzQzZDIuLjVlNTgwNDhkMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0xpc3RIYXNoU2V0Lmg+CkBAIC0xMDIw
LDYgKzEwMjEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRU
eXBlKFBsYXRmb3JtRXZlbnRUeXBlKSBjb25zdDsKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlm
TmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAKKyAgICB2b2lkIGRpZEFkZEV2
ZW50TGlzdGVuZXJzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmLCB1bnNpZ25lZCA9IDEpOworICAg
IHZvaWQgZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYsIHVu
c2lnbmVkID0gMSk7CisgICAgYm9vbCBoYXNFdmVudExpc3RuZXJzT2ZUeXBlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lckNvdW50cy5pbmxpbmVH
ZXQodHlwZSk7IH0KKworICAgIGJvb2wgaGFzQ29ubmVjdGVkUGx1Z2luRWxlbWVudHMoKSB7IHJl
dHVybiBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRDb3VudDsgfQorICAgIHZvaWQgZGlkQ29ubmVj
dFBsdWdpbkVsZW1lbnQoKSB7ICsrbV9jb25uZWN0ZWRQbHVnaW5FbGVtZW50Q291bnQ7IH0KKyAg
ICB2b2lkIGRpZERpc2Nvbm5lY3RQbHVnaW5FbGVtZW50KCkgeyBBU1NFUlQobV9jb25uZWN0ZWRQ
bHVnaW5FbGVtZW50Q291bnQpOyAtLW1fY29ubmVjdGVkUGx1Z2luRWxlbWVudENvdW50OyB9CisK
ICAgICBpbmxpbmUgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNv
bnN0IHsgcmV0dXJuICFtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5pc0VtcHR5KCk7IH0KICAgICB2
b2lkIGFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBl
cykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5hZGQodHlwZXMpOyB9CkBAIC0yMzQzLDYgKzIz
NTIsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGF0YUxpc3RFbGVtZW50Q291bnQgeyAw
IH07CiAKICAgICBPcHRpb25TZXQ8TGlzdGVuZXJUeXBlPiBtX2xpc3RlbmVyVHlwZXM7CisgICAg
TWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgdW5zaWduZWQ+IG1fZXZl
bnRMaXN0ZW5lckNvdW50czsKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRD
b3VudCB7IDAgfTsKKwogICAgIHVuc2lnbmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQgeyAwIH07
CiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xh
c3RTdHlsZVVwZGF0ZVNpemVGb3JUZXN0aW5nIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcAppbmRleCBiMmY4YWRmMjQyNWIuLjI3YzVjMzg0MzIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0NSw2ICsxNDUsMTggQEAgc3RhdGlj
IEhUTUxJbnB1dEVsZW1lbnQqIGZpbmRJbnB1dEVsZW1lbnRJbkV2ZW50UGF0aChjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoZG9jdW1lbnQuaGFzRXZlbnRMaXN0bmVyc09mVHlwZShldmVudC50eXBl
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gbGVnYWN5VHlwZSA9IEV2ZW50
VGFyZ2V0OjpsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIGlmICghbGVnYWN5VHlwZS5p
c051bGwoKSAmJiBkb2N1bWVudC5oYXNFdmVudExpc3RuZXJzT2ZUeXBlKGxlZ2FjeVR5cGUpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKG5vZGUpKTsK
QEAgLTE1NCwxMCArMTY2LDE1IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBSZWYgcHJvdGVjdGVkTm9kZSB7IG5vZGUg
fTsKICAgICBSZWZQdHIgcHJvdGVjdGVkVmlldyB7IG5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfTsK
IAorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzKCkudHlwZUluZm9Gb3JFdmVudChldmVu
dC50eXBlKCkpOworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudFRvU2NyaXB0cyA9IGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihub2RlLmRvY3VtZW50KCksIGV2ZW50KTsKKyAgICBpZiAoIXNo
b3VsZERpc3BhdGNoRXZlbnRUb1NjcmlwdHMgJiYgIXR5cGVJbmZvLmhhc0RlZmF1bHRFdmVudEhh
bmRsZXIoKSAmJiAhbm9kZS5kb2N1bWVudCgpLmhhc0Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRzKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIEV2ZW50UGF0aCBldmVudFBhdGggeyBub2RlLCBldmVu
dCB9OwogCiAgICAgaWYgKG5vZGUuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnNlbmRNb3VzZUV2ZW50
c1RvRGlzYWJsZWRGb3JtQ29udHJvbHNFbmFibGVkKCkgJiYgZXZlbnQuaXNUcnVzdGVkKCkgJiYg
ZXZlbnQuaXNNb3VzZUV2ZW50KCkKLSAgICAgICAgJiYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8IGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkpIHsKKyAgICAgICAgJiYg
KHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6Om1vdXNlZG93biB8fCB0eXBlSW5mby50eXBl
KCkgPT0gRXZlbnRUeXBlOjptb3VzZXVwIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6
OmNsaWNrIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6OmRibGNsaWNrKSkgewogICAg
ICAgICBldmVudFBhdGguYWRqdXN0Rm9yRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KIApA
QCAtMTkxLDcgKzIwOCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5v
ZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgaW5wdXRGb3JMZWdhY3lQcmVBY3RpdmF0
aW9uQmVoYXZpb3ItPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUp
OwogICAgIH0KIAotICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSkgeworICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSAmJiBzaG91bGREaXNwYXRjaEV2ZW50VG9TY3JpcHRzKSB7CiAgICAgICAgIGV2ZW50
LnNldEV2ZW50UGF0aChldmVudFBhdGgpOwogICAgICAgICBkaXNwYXRjaEV2ZW50SW5ET00oZXZl
bnQsIGV2ZW50UGF0aCk7CiAgICAgfQpAQCAtMjA0LDcgKzIyMSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAvLyBD
YWxsIGRlZmF1bHQgZXZlbnQgaGFuZGxlcnMuIFdoaWxlIHRoZSBET00gZG9lcyBoYXZlIGEgY29u
Y2VwdCBvZiBwcmV2ZW50aW5nCiAgICAgLy8gZGVmYXVsdCBoYW5kbGluZywgdGhlIGRldGFpbCBv
ZiB3aGljaCBoYW5kbGVycyBhcmUgY2FsbGVkIGlzIGFuIGludGVybmFsCiAgICAgLy8gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIGFuZCBub3QgcGFydCBvZiB0aGUgRE9NLgotICAgIGlmICghZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZCgpICYmICFldmVudC5kZWZhdWx0SGFuZGxlZCgpICYmICFldmVudC5p
c0RlZmF1bHRFdmVudEhhbmRsZXJJZ25vcmVkKCkpIHsKKyAgICBpZiAodHlwZUluZm8uaGFzRGVm
YXVsdEV2ZW50SGFuZGxlcigpICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkgJiYgIWV2ZW50
LmRlZmF1bHRIYW5kbGVkKCkgJiYgIWV2ZW50LmlzRGVmYXVsdEV2ZW50SGFuZGxlcklnbm9yZWQo
KSkgewogICAgICAgICAvLyBGSVhNRTogTm90IGNsZWFyIHdoeSB3ZSBuZWVkIHRvIHJlc2V0IHRo
ZSB0YXJnZXQgZm9yIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXJzLgogICAgICAgICAvLyBXZSBz
aG91bGQgcmVzZWFyY2ggdGhpcywgYW5kIHJlbW92ZSB0aGlzIGNvZGUgaWYgcG9zc2libGUuCiAg
ICAgICAgIFJlZlB0ciBmaW5hbFRhcmdldCA9IGV2ZW50LnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggNTVlNjE5NTI5MTg5Li4xMWM1NmI5NTI5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNjcsNiArNjcsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXJNYXAq
Pih0aGlzKS0+ZmluZChldmVudFR5cGUpOyB9CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50
VHlwZXMoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+Cisg
ICAgdm9pZCBlbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoQ2FsbGJhY2tUeXBlIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykKKyAgICAgICAg
ICAgIGNhbGxiYWNrKGVudHJ5LmZpcnN0LCBlbnRyeS5zZWNvbmQuc2l6ZSgpKTsKKyAgICB9CisK
ICAgICB2b2lkIHJlbW92ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgdm9pZCBjb3B5RXZlbnRMaXN0ZW5lcnNOb3RD
cmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0KEV2ZW50VGFyZ2V0Kik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5qc29uIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuanNvbgppbmRleCBhYzE1ZjkyYWRlNzQuLmI0MTJmNGE0NDRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5qc29uCkBAIC0xLDUgKzEsNSBAQAogewotICAgICJET01BY3Rp
dmF0ZSI6IHsidHlwZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl19LAorICAgICJET01BY3RpdmF0
ZSI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRI
YW5kbGVyIjogdHJ1ZSB9LAogICAgICJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiOiB7IH0sCiAg
ICAgIkRPTUNvbnRlbnRMb2FkZWQiOiB7IH0sCiAgICAgIkRPTU5vZGVJbnNlcnRlZCI6IHsgfSwK
QEAgLTE0LDEwICsxNCwxMCBAQAogICAgICJhZGRzdHJlYW0iOiB7IH0sCiAgICAgImFkZHRyYWNr
IjogeyB9LAogICAgICJhZnRlcnByaW50IjogeyB9LAotICAgICJhbmltYXRpb25jYW5jZWwiOiB7
InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgImFuaW1hdGlvbmVuZCI6IHsidHlwZXMi
OiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyJ0eXBlcyI6
IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJhbmltYXRpb25zdGFydCI6IHsidHlwZXMiOiBbIkNT
U0FuaW1hdGlvbiJdfSwKKyAgICAiYW5pbWF0aW9uY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyAiY2F0ZWdvcmll
cyI6IFsiQ1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uc3RhcnQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAogICAgICJhdWRpb2VuZCI6IHsgfSwKICAgICAiYXVk
aW9wcm9jZXNzIjogeyB9LAogICAgICJhdWRpb3N0YXJ0IjogeyB9LApAQCAtMzcsNyArMzcsNyBA
QAogICAgICJiZWZvcmV1bmxvYWQiOiB7IH0sCiAgICAgImJlZ2luRXZlbnQiOiB7IH0sCiAgICAg
ImJsb2NrZWQiOiB7IH0sCi0gICAgImJsdXIiOiB7IH0sCisgICAgImJsdXIiOiB7ICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJib3VuZGFyeSI6IHsgfSwKICAgICAiYnVmZmVy
ZWRhbW91bnRsb3ciOiB7IH0sCiAgICAgImJ1ZmZlcmVkY2hhbmdlIjogeyB9LApAQCAtNDksNyAr
NDksNyBAQAogICAgICJjaGFyZ2luZ2NoYW5nZSI6IHsgfSwKICAgICAiY2hhcmdpbmd0aW1lY2hh
bmdlIjogeyB9LAogICAgICJjaGVja2luZyI6IHsgfSwKLSAgICAiY2xpY2siOiB7InR5cGVzIjog
WyJNb3VzZUNsaWNrUmVsYXRlZCJdfSwKKyAgICAiY2xpY2siOiB7ICJjYXRlZ29yaWVzIjogWyJN
b3VzZUNsaWNrUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAi
Y2xvc2UiOiB7IH0sCiAgICAgImNsb3NpbmciOiB7IH0sCiAgICAgImNvbXBsZXRlIjogeyB9LApA
QCAtNjEsNyArNjEsNyBAQAogICAgICJjb25uZWN0aW9uc3RhdGVjaGFuZ2UiOiB7IH0sCiAgICAg
ImNvbm5lY3RpbmciOiB7IH0sCiAgICAgImNvbnRlbnR2aXNpYmlsaXR5YXV0b3N0YXRlY2hhbmdl
IjogeyB9LAotICAgICJjb250ZXh0bWVudSI6IHsgfSwKKyAgICAiY29udGV4dG1lbnUiOiB7ICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJjb250cm9sbGVyY2hhbmdlIjogeyB9
LAogICAgICJjb29raWVjaGFuZ2UiOiB7IH0sCiAgICAgImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2Ui
OiB7IH0sCkBAIC03Miw3ICs3Miw3IEBACiAgICAgImN1dCI6IHsgfSwKICAgICAiZGF0YWF2YWls
YWJsZSI6IHsgfSwKICAgICAiZGF0YWNoYW5uZWwiOiB7IH0sCi0gICAgImRibGNsaWNrIjogeyB9
LAorICAgICJkYmxjbGljayI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAg
ImRlcXVldWUiOiB7IH0sCiAgICAgImRldmljZWNoYW5nZSI6IHsgfSwKICAgICAiZGV2aWNlbW90
aW9uIjogeyB9LApAQCAtMTAxLDIxICsxMDEsMjEgQEAKICAgICAiZXhpdCI6IHsgfSwKICAgICAi
ZmV0Y2giOiB7IH0sCiAgICAgImZpbmlzaCI6IHsgfSwKLSAgICAiZm9jdXMiOiB7IH0sCisgICAg
ImZvY3VzIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAiZm9jdXNpbiI6
IHsgfSwKICAgICAiZm9jdXNvdXQiOiB7IH0sCiAgICAgImZvcm1kYXRhIjogeyB9LAogICAgICJm
dWxsc2NyZWVuY2hhbmdlIjogeyB9LAogICAgICJmdWxsc2NyZWVuZXJyb3IiOiB7IH0sCi0gICAg
ImdhbWVwYWRjb25uZWN0ZWQiOiB7InR5cGVzIjogWyJHYW1lcGFkIl19LAotICAgICJnYW1lcGFk
ZGlzY29ubmVjdGVkIjogeyJ0eXBlcyI6IFsiR2FtZXBhZCJdfSwKKyAgICAiZ2FtZXBhZGNvbm5l
Y3RlZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdhbWVwYWQiXSB9LAorICAgICJnYW1lcGFkZGlzY29u
bmVjdGVkIjogeyAiY2F0ZWdvcmllcyI6IFsiR2FtZXBhZCJdIH0sCiAgICAgImdhdGhlcmluZ3N0
YXRlY2hhbmdlIjogeyB9LAotICAgICJnZXN0dXJlY2hhbmdlIjogeyJ0eXBlcyI6IFsiR2VzdHVy
ZSJdfSwKLSAgICAiZ2VzdHVyZWVuZCI6IHsidHlwZXMiOiBbIkdlc3R1cmUiXX0sCisgICAgImdl
c3R1cmVjaGFuZ2UiOiB7ICJjYXRlZ29yaWVzIjogWyJHZXN0dXJlIl0gfSwKKyAgICAiZ2VzdHVy
ZWVuZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9LAogICAgICJnZXN0dXJlc2Nyb2xs
ZW5kIjogeyB9LAogICAgICJnZXN0dXJlc2Nyb2xsc3RhcnQiOiB7IH0sCiAgICAgImdlc3R1cmVz
Y3JvbGx1cGRhdGUiOiB7IH0sCi0gICAgImdlc3R1cmVzdGFydCI6IHsidHlwZXMiOiBbIkdlc3R1
cmUiXX0sCisgICAgImdlc3R1cmVzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9
LAogICAgICJnZXN0dXJldGFwIjogeyB9LAogICAgICJnZXN0dXJldGFwZG93biI6IHsgfSwKICAg
ICAiZ290cG9pbnRlcmNhcHR1cmUiOiB7IH0sCkBAIC0xMzAsMTAgKzEzMCwxMCBAQAogICAgICJp
bnN0YWxsIjogeyB9LAogICAgICJpbnZhbGlkIjogeyB9LAogICAgICJpbnZva2UiOiB7IH0sCi0g
ICAgImtleWRvd24iOiB7IH0sCi0gICAgImtleXByZXNzIjogeyB9LAorICAgICJrZXlkb3duIjog
eyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAia2V5cHJlc3MiOiB7ICJkZWZh
dWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJrZXlzdGF0dXNlc2NoYW5nZSI6IHsgfSwK
LSAgICAia2V5dXAiOiB7IH0sCisgICAgImtleXVwIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6
IHRydWUgfSwKICAgICAibGFuZ3VhZ2VjaGFuZ2UiOiB7IH0sCiAgICAgImxlYXZlcGljdHVyZWlu
cGljdHVyZSI6IHsgfSwKICAgICAibGV2ZWxjaGFuZ2UiOiB7IH0sCkBAIC0xNTAsMTQgKzE1MCwx
NCBAQAogICAgICJtZXJjaGFudHZhbGlkYXRpb24iOiB7IH0sCiAgICAgIm1lc3NhZ2UiOiB7IH0s
CiAgICAgIm1lc3NhZ2VlcnJvciI6IHsgfSwKLSAgICAibW91c2Vkb3duIjogeyJ0eXBlcyI6IFsi
TW91c2VDbGlja1JlbGF0ZWQiLCAiU2ltdWxhdGVkTW91c2UiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgIm1vdXNlZG93biI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJtb3VzZWVudGVyIjogeyB9LAogICAgICJtb3Vz
ZWxlYXZlIjogeyB9LAotICAgICJtb3VzZW1vdmUiOiB7InR5cGVzIjogWyJNb3VzZU1vdmVSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJt
b3VzZW91dCI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNlb3Zl
ciI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNldXAiOiB7InR5
cGVzIjogWyJNb3VzZUNsaWNrUmVsYXRlZCIsICJTaW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRv
dWNoUmVsYXRlZCJdfSwKLSAgICAibW91c2V3aGVlbCI6IHsidHlwZXMiOiBbIldoZWVsIl19LAor
ICAgICJtb3VzZW1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1vdmVSZWxhdGVkIiwgIlNp
bXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5k
bGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZW91dCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlTW92
ZVJlbGF0ZWQiXSB9LAorICAgICJtb3VzZW92ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1v
dmVSZWxhdGVkIl0gfSwKKyAgICAibW91c2V1cCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xp
Y2tSZWxhdGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZXdoZWVsIjogeyAiY2F0ZWdv
cmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgIm11
dGUiOiB7IH0sCiAgICAgIm5hdmlnYXRlIjogeyB9LAogICAgICJuYXZpZ2F0ZWVycm9yIjogeyB9
LApAQCAtMTg2LDE0ICsxODYsMTQgQEAKICAgICAicGxheWluZyI6IHsgfSwKICAgICAicG9pbnRl
cmxvY2tjaGFuZ2UiOiB7IH0sCiAgICAgInBvaW50ZXJsb2NrZXJyb3IiOiB7IH0sCi0gICAgInBv
aW50ZXJjYW5jZWwiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJl
bGF0ZWQiXX0sCi0gICAgInBvaW50ZXJkb3duIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJwb2ludGVyZW50ZXIiOiB7InR5cGVzIjog
WyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJs
ZWF2ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJd
fSwKLSAgICAicG9pbnRlcm1vdmUiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5k
ZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdXQiOiB7InR5cGVzIjogWyJUb3VjaFJl
bGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdmVyIjogeyJ0
eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJw
b2ludGVydXAiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgInBvaW50ZXJjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0
ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVl
IH0sCisgICAgInBvaW50ZXJkb3duIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAor
ICAgICJwb2ludGVyZW50ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0
ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAg
InBvaW50ZXJsZWF2ZSI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAicG9p
bnRlcm1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3Vj
aFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJv
dXQiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJvdmVyIjog
eyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0s
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVydXAiOiB7ICJjYXRl
Z29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1
bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgInBvcHN0YXRlIjogeyB9LAogICAgICJwcmV2
aW91c3RyYWNrIjogeyB9LAogICAgICJwcm9jZXNzb3JlcnJvciI6IHsgfSwKQEAgLTI1MywyMSAr
MjUzLDIxIEBACiAgICAgInN1Ym1pdCI6IHsgfSwKICAgICAic3VjY2VzcyI6IHsgfSwKICAgICAi
c3VzcGVuZCI6IHsgfSwKLSAgICAidGV4dElucHV0IjogeyB9LAorICAgICJ0ZXh0SW5wdXQiOiB7
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0aW1lb3V0IjogeyB9LAogICAg
ICJ0aW1ldXBkYXRlIjogeyB9LAogICAgICJ0b2dnbGUiOiB7IH0sCiAgICAgInRvbmVjaGFuZ2Ui
OiB7IH0sCi0gICAgInRvdWNoY2FuY2VsIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4
dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJ0b3VjaGVuZCI6IHsidHlwZXMiOiBbIlRvdWNo
UmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAidG91Y2hmb3JjZWNoYW5n
ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwK
LSAgICAidG91Y2htb3ZlIjogeyJ0eXBlcyI6IFsiVG91Y2hTY3JvbGxCbG9ja2luZyIsICJUb3Vj
aFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInRvdWNoc3RhcnQiOiB7
InR5cGVzIjogWyJUb3VjaFNjcm9sbEJsb2NraW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdfSwKKyAgICAidG91Y2hjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJU
b3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRs
ZXIiOiB0cnVlIH0sCisgICAgInRvdWNoZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaGZvcmNlY2hhbmdlIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaG1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFNjcm9sbEJsb2Nr
aW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2
ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAidG91Y2hzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBb
IlRvdWNoU2Nyb2xsQmxvY2tpbmciLCAiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxh
dGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0cmFjayI6IHsgfSwK
LSAgICAidHJhbnNpdGlvbmNhbmNlbCI6IHsidHlwZXMiOiBbIkNTU1RyYW5zaXRpb24iXX0sCi0g
ICAgInRyYW5zaXRpb25lbmQiOiB7InR5cGVzIjogWyJDU1NUcmFuc2l0aW9uIl19LAotICAgICJ0
cmFuc2l0aW9ucnVuIjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKLSAgICAidHJhbnNp
dGlvbnN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKKyAgICAidHJhbnNpdGlv
bmNhbmNlbCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU1RyYW5zaXRpb24iXSB9LAorICAgICJ0cmFu
c2l0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCisgICAgInRy
YW5zaXRpb25ydW4iOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9uIl0gfSwKKyAgICAi
dHJhbnNpdGlvbnN0YXJ0IjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCiAg
ICAgInVuY2FwdHVyZWRlcnJvciI6IHsgfSwKICAgICAidW5oYW5kbGVkcmVqZWN0aW9uIjogeyB9
LAogICAgICJ1bmxvYWQiOiB7IH0sCkBAIC0yODgsMTEgKzI4OCwxMSBAQAogICAgICJ3ZWJnbGNv
bnRleHRjcmVhdGlvbmVycm9yIjogeyB9LAogICAgICJ3ZWJnbGNvbnRleHRsb3N0IjogeyB9LAog
ICAgICJ3ZWJnbGNvbnRleHRyZXN0b3JlZCI6IHsgfSwKLSAgICAid2Via2l0QW5pbWF0aW9uRW5k
IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRBbmltYXRpb25JdGVy
YXRpb24iOiB7InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgIndlYmtpdEFuaW1hdGlv
blN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRCZWZvcmVU
ZXh0SW5zZXJ0ZWQiOiB7IH0sCi0gICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7InR5cGVzIjog
WyJDU1NUcmFuc2l0aW9uIl19LAorICAgICJ3ZWJraXRBbmltYXRpb25FbmQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRpb25JdGVyYXRpb24i
OiB7ICJjYXRlZ29yaWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRp
b25TdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU0FuaW1hdGlvbiJdIH0sCisgICAgIndlYmtp
dEJlZm9yZVRleHRJbnNlcnRlZCI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisg
ICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9u
Il0gfSwKICAgICAid2Via2l0YmVnaW5mdWxsc2NyZWVuIjogeyB9LAogICAgICJ3ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCI6IHsgfSwKICAgICAid2Via2l0ZW5k
ZnVsbHNjcmVlbiI6IHsgfSwKQEAgLTMxMyw3ICszMTMsNyBAQAogICAgICJ3ZWJraXRzb3VyY2Vj
bG9zZSI6IHsgfSwKICAgICAid2Via2l0c291cmNlZW5kZWQiOiB7IH0sCiAgICAgIndlYmtpdHNv
dXJjZW9wZW4iOiB7IH0sCi0gICAgIndoZWVsIjogeyJ0eXBlcyI6IFsiV2hlZWwiXX0sCisgICAg
IndoZWVsIjogeyAiY2F0ZWdvcmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIi
OiB0cnVlIH0sCiAgICAgIndyaXRlIjogeyB9LAogICAgICJ3cml0ZWVuZCI6IHsgfSwKICAgICAi
d3JpdGVzdGFydCI6IHsgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDVkNDRm
MTc0NTM2Yi4uNGFmYTFkZmRkMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAg
LTkyLDcgKzkyLDggQEAgYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmUKIAogICAgIGF1dG8gcGFzc2l2
ZSA9IG9wdGlvbnMucGFzc2l2ZTsKIAotICAgIGlmICghcGFzc2l2ZS5oYXNfdmFsdWUoKSAmJiBR
dWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZSgqdGhpcywgZXZlbnRUeXBlKSkK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcygpLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRU
eXBlKTsKKyAgICBpZiAoIXBhc3NpdmUuaGFzX3ZhbHVlKCkgJiYgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3NpdmUoKnRoaXMsIHR5cGVJbmZvKSkKICAgICAgICAgcGFzc2l2ZSA9
IHRydWU7CiAKICAgICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBbJl0gewpAQCAt
MTEzLDcgKzExNCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAgICAgaWYgKGxpc3RlbmVy
Q3JlYXRlZEZyb21TY3JpcHQpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
QWRkRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lci5nZXQoKSwgb3B0aW9u
cy5jYXB0dXJlKTsKIAotICAgIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVu
dFR5cGUpKQorICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hl
ZWwpKQogICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgIGV2
ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCk7CkBAIC0xNTcsNyArMTU4LDcgQEAgYm9vbCBFdmVudFRh
cmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVFdmVu
dExpc3RlbmVyKCp0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zLmNhcHR1cmUpOwog
CiAgICAgaWYgKGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAucmVtb3ZlKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMuY2FwdHVyZSkpIHsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVs
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgICAgIGlmIChldmVudE5hbWVzKCkudHlwZUluZm9G
b3JFdmVudChldmVudFR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpXaGVlbCkpCiAg
ICAgICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgICAgICBl
dmVudExpc3RlbmVyc0RpZENoYW5nZSgpOwpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgRXZlbnRU
YXJnZXQ6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogfQogCi1zdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCitjb25zdCBB
dG9tU3RyaW5nJiBFdmVudFRhcmdldDo6bGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50JiBl
dmVudCkKIHsKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5hbmltYXRpb25lbmRFdmVudCkKQEAg
LTMwNyw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZl
bnQmIGV2ZW50LCBFdmVudEludm9rZVBoYXNlIHBoYXNlKQogICAgIGlmICghZXZlbnQuaXNUcnVz
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5
cGVOYW1lID0gbGVnYWN5VHlwZShldmVudCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5
VHlwZU5hbWUgPSBsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIGlmICghbGVnYWN5VHlw
ZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGxlZ2FjeUxpc3RlbmVyc1ZlY3Rv
ciA9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChsZWdhY3lUeXBlTmFtZSkpIHsKICAgICAg
ICAgICAgIEF0b21TdHJpbmcgdHlwZU5hbWUgPSBldmVudC50eXBlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCmluZGV4IGQwOWU4Nzg1MTg2Zi4uNjA3NzA1ODUxNDc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50
Jik7CisKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uZXZlbnQiIGF0dHJpYnV0ZXMuCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNNYXliZUVycm9yRXZlbnRMaXN0ZW5lcj4KICAgICB2b2lkIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBKU0M6
OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIGpzRXZlbnRUYXJnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDQzYzFkNGNkZDFiYi4uMjgzMDAwN2YzMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yMjE1LDEyICsyMjE1LDEyIEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICB0
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+cmVtb3ZlTm9kZSgqdGhpcyk7CiAKICAgICBpZiAo
YXV0byogZXZlbnRUYXJnZXREYXRhID0gdGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKLSAgICAg
ICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKLSAgICAgICAgaWYg
KCFldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAu
ZXZlbnRUeXBlcygpKQotICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKHR5cGUpOwotICAgICAgICB9CisgICAgICAgIGV2ZW50VGFyZ2V0RGF0YS0+ZXZl
bnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1dG8mIGV2ZW50
VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92
ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSwgY291bnQpOworICAgICAgICAgICAgbmV3
RG9jdW1lbnQuZGlkQWRkRXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7Cisg
ICAgICAgIH0pOwogCisgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5h
bWVzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMubW91c2V3aGVlbEV2ZW50KS5zaXplKCkgKyBldmVudExpc3RlbmVy
cyhldmVudE5hbWVzLndoZWVsRXZlbnQpLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7CiAgICAgICAgICAgICBvbGRE
b2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CkBAIC0yMjc1LDI5ICsy
Mjc1LDE0IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICBlbGVtZW50LT5kaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCi1ib29sIGlzVG91
Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZl
bnRUYXJnZXQmIHRhcmdldCkKK2Jvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgRXZl
bnRUeXBlSW5mbyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KQogewotICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0KSAmJiBkb3duY2FzdDxOb2RlPih0
YXJnZXQpLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2
ZW50cygmdGFyZ2V0KSkgewotICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91
c2Vkb3duRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2Vtb3ZlRXZlbnQgfHwg
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2V1cEV2ZW50KQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQorICAgIGlmIChpczxOb2RlPih0YXJnZXQpICYmIGRvd25jYXN0PE5vZGU+
KHRhcmdldCkuZG9jdW1lbnQoKS5xdWlya3MoKS5zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNl
RXZlbnRzKCZ0YXJnZXQpKQorICAgICAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpFeHRlbmRlZFRvdWNoUmVsYXRlZCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKLSAgICByZXR1cm4gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hz
dGFydEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNobW92ZUV2
ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNoZW5kRXZlbnQKLSAg
ICAgICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hjYW5jZWxFdmVudAotICAgICAg
ICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaGZvcmNlY2hhbmdlRXZlbnQKLSAgICAg
ICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMucG9pbnRlcm92ZXJFdmVudAotICAgICAgICB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZW50ZXJFdmVudAotICAgICAgICB8fCBl
dmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZG93bkV2ZW50Ci0gICAgICAgIHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnBvaW50ZXJtb3ZlRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMucG9pbnRlcnVwRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMucG9pbnRlcm91dEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzLnBvaW50ZXJsZWF2ZUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnBvaW50ZXJjYW5jZWxFdmVudDsKKyAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpUb3VjaFJlbGF0ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5
QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTIzMDUsMzAgKzIyOTAsMzEgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnQKICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCBvcHRpb25zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZChldmVudFR5cGUpOworICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkQWRk
RXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlKTsKIAogICAgIGF1dG8mIGV2ZW50TmFtZXMg
PSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50
VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJbmZv
Rm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRX
aGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0
ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisgICAgZWxzZSBpZiAoaXNUb3Vj
aFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0g
ICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tSZWxhdGVkRXZlbnRUeXBlKGV2ZW50
VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6
Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRB
ZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXROb2RlKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50
KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpIHsKKyAgICBpZiAodGFy
Z2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiB0eXBlSW5mby50eXBlKCkgPT0g
RXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRhcmdldE5v
ZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmluY3JlbWVu
dFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJn
ZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJn
ZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50TGlz
dGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisg
ICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHZXN0dXJlKSkKICAg
ICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0
Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjM0NSwzMCArMjMzMSwzMyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3Ry
aW5nJiBldgogICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNP
ZlR5cGUoZXZlbnRUeXBlKTsKKwogICAgIC8vIEZJWE1FOiBOb3RpZnkgRG9jdW1lbnQgdGhhdCB0
aGUgbGlzdGVuZXIgaGFzIHZhbmlzaGVkLiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgYSBudW1i
ZXIgb2YKICAgICAvLyBsaXN0ZW5lcnMgZm9yIGVhY2ggdHlwZSwgbm90IGp1c3QgYSBib29sIC0g
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg2MQogICAgIGF1
dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFt
ZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVu
dE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJ
bkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9j
dW1lbnQoKS5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxz
ZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisg
ICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2Rl
KSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFu
ZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tS
ZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNh
dGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXRO
b2RlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0g
JnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xs
RXZlbnQpIHsKKyAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAm
JiB0eXBlSW5mby50eXBlKCkgPT0gRXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1
dG8qIHdpbmRvdyA9IHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAg
ICAgICB3aW5kb3ctPmRlY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICp0YXJnZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVu
dFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1l
bnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVO
VFMpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJl
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpHZXN0dXJlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5yZW1v
dmVUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjU0MiwyOCAr
MjUzMSwzNiBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byYgZXZlbnRUeXBlID0gZXZlbnQudHlwZSgpOwogICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLmtleWRvd25FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5rZXlwcmVzc0V2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmtleXVwRXZlbnQpIHsK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlw
ZSk7CisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50VHlwZTo6
a2V5ZG93bjoKKyAgICBjYXNlIEV2ZW50VHlwZTo6a2V5cHJlc3M6CisgICAgY2FzZSBFdmVudFR5
cGU6OmtleXVwOgogICAgICAgICBpZiAoUmVmUHRyIGtleWJvYXJkRXZlbnQgPSBkeW5hbWljRG93
bmNhc3Q8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyIGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS5kZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoKmtleWJvYXJkRXZlbnQpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5jbGlja0V2ZW50
KSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpjbGljazoKICAgICAgICAg
ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5jb250ZXh0bWVudUV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6OmNvbnRleHRtZW51Ogog
ICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7
CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnRleHRJbnB1dEV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6
OnRleHRJbnB1dDoKICAgICAgICAgaWYgKFJlZlB0ciB0ZXh0RXZlbnQgPSBkeW5hbWljRG93bmNh
c3Q8VGV4dEV2ZW50PihldmVudCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHIgZnJhbWUgPSBk
b2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LmRlZmF1bHRUZXh0SW5wdXRFdmVudEhhbmRsZXIoKnRleHRFdmVudCk7CiAgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgfSBlbHNlIGlmIChh
dXRvKiBtb3VzZUV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91
c2VFdmVudCAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5tb3VzZWRvd25FdmVudCkgewotICAg
ICAgICBpZiAobW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTW91c2VCdXR0b246Ok1pZGRsZSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZWRvd246CisgICAgICAgIGlmIChhdXRvKiBtb3VzZUV2
ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91c2VFdmVudCAmJiBv
dXNlRXZlbnQtPmJ1dHRvbigpID09IE1vdXNlQnV0dG9uOjpNaWRkbGUpIHsKICAgICAgICAgICAg
IGlmIChlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI1NzYsNDUgKzI1NzMsNTQgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGF1dG8qIHdo
ZWVsRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpOyB3aGVlbEV2ZW50
ICYmIGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKSB7Ci0gICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhl
IGZpcnN0IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCi0gICAgICAgIC8vIFRoaXMgaXMg
bmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxzZWxl
Y3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCi0gICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7
Ci0gICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OworICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZXdoZWVsOgorICAgIGNhc2UgRXZlbnRUeXBlOjp3
aGVlbDoKKyAgICAgICAgQVNTRVJUKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5
OjpXaGVlbCkpOworICAgICAgICBpZiAoYXV0byogd2hlZWxFdmVudCA9IGR5bmFtaWNEb3duY2Fz
dDxXaGVlbEV2ZW50PihldmVudCk7IHdoZWVsRXZlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIHdl
IGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhlIGZpcnN0
IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCisgICAgICAgICAgICAvLyBUaGlzIGlzIG5l
ZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0
PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgorICAgICAgICAgICAgTm9kZSogc3RhcnROb2RlID0gdGhp
czsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2Rl
LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
V2hlZWxFdmVudEhhbmRsZXIoUmVmUHRyIHsgc3RhcnROb2RlIH0uZ2V0KCksICp3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRXaGVlbEV2
ZW50SGFuZGxlcihSZWZQdHIgeyBzdGFydE5vZGUgfS5nZXQoKSwgKndoZWVsRXZlbnQpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB9IGVsc2Ug
aWYgKGF1dG8qIHRvdWNoRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8VG91Y2hFdmVudD4oZXZlbnQp
OyB0b3VjaEV2ZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRoaXMp
KSB7Ci0gICAgICAgIC8vIENhcHR1cmUgdGhlIHRhcmdldCBub2RlJ3MgdmlzaWJpbGl0eSBzdGF0
ZSBiZWZvcmUgZGlzcGF0Y2hpbmcgdG91Y2hTdGFydC4KLSAgICAgICAgaWYgKGF1dG8qIGVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzLnRvdWNoc3RhcnRFdmVudCkgeworICAgICAgICBpZiAoYXV0byogdG91
Y2hFdmVudCA9IGR5bmFtaWNEb3duY2FzdDxUb3VjaEV2ZW50PihldmVudCk7IHRvdWNoRXZlbnQg
JiYgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0aGlzKSkgeworICAgICAgICAg
ICAgLy8gQ2FwdHVyZSB0aGUgdGFyZ2V0IG5vZGUncyB2aXNpYmlsaXR5IHN0YXRlIGJlZm9yZSBk
aXNwYXRjaGluZyB0b3VjaFN0YXJ0LgorICAgICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIHR5cGVJbmZvLnR5cGUo
KSA9PSBFdmVudFR5cGU6OnRvdWNoc3RhcnQpIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9DSEFOR0Vf
T0JTRVJWRVIpCi0gICAgICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBkb2N1
bWVudCgpLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwotICAgICAgICAgICAgaWYgKENvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhpcykpCi0gICAgICAgICAgICAgICAg
Y29udGVudENoYW5nZU9ic2VydmVyLnNldEhpZGRlblRvdWNoVGFyZ2V0KCplbGVtZW50KTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVz
ZXRIaWRkZW5Ub3VjaFRhcmdldCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFu
Z2VPYnNlcnZlciA9IGRvY3VtZW50KCkuY29udGVudENoYW5nZU9ic2VydmVyKCk7CisgICAgICAg
ICAgICAgICAgaWYgKENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhp
cykpCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zZXRIaWRkZW5U
b3VjaFRhcmdldCgqZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVzZXRIaWRkZW5Ub3VjaFRhcmdldCgpOwog
I2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICAgICAgZm9yICg7IHJlbmRlcmVyOyBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgYXV0byogcmVuZGVy
Qm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKLSAgICAgICAgICAg
IGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBm
b3IgKDsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJl
bmRlcmVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94ICYmIHJlbmRlckJveC0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
bm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFt
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRUb3Vj
aEV2ZW50SGFuZGxlcigqcmVuZGVyZXJOb2RlLCAqdG91Y2hFdmVudCk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChS
ZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0VG91Y2hFdmVudEhhbmRsZXIoKnJlbmRl
cmVyTm9kZSwgKnRvdWNoRXZlbnQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMjYzMCwx
NCArMjYzNiwxNSBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBj
b25zdAogI2VuZGlmCiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMo
KTsKICAgICByZXR1cm4gZXZlbnRUeXBlcygpLmNvbnRhaW5zSWYoWyZdKGNvbnN0IGF1dG8mIHR5
cGUpIHsKLSAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMuaXNNb3VzZU1vdmVSZWxhdGVkRXZlbnRU
eXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KHR5
cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZU1vdmVSZWxhdGVkKTsKICAgICB9
KTsKIH0KIAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSBjb25zdAogewor
ICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgcmV0dXJu
IGV2ZW50VHlwZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Ci0gICAgICAg
IHJldHVybiBpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlLCAqdGhpcyk7CisgICAgICAgIHJl
dHVybiBldmVudE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQodHlwZSkuaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OlRvdWNoUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTI2NzMsNyArMjY4MCw3
IEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHNXaXRoRWRpdGFiaWxp
dHkoRWRpdGFiaWxpdHkgZWRpdGFiaWxpdHkpCiAKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2Vi
Q29yZTo6ZXZlbnROYW1lcygpOwogICAgIHJldHVybiBldmVudFR5cGVzKCkuY29udGFpbnNJZihb
Jl0oY29uc3QgYXV0byYgdHlwZSkgewotICAgICAgICByZXR1cm4gZXZlbnROYW1lcy5pc01vdXNl
Q2xpY2tSZWxhdGVkRXZlbnRUeXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50
eXBlSW5mb0ZvckV2ZW50KHR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZUNs
aWNrUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDM4ZDA1NDEwODllMS4u
ZmM4OGM3NjBlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxl
bWVudDsKK2NsYXNzIEV2ZW50VHlwZUluZm87CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSFRN
TFF1YWxpZmllZE5hbWU7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CkBAIC03NzIsNyArNzczLDcg
QEAgdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9y
ZGVyKGNvbnN0IE5vZGUmLCBjb25zdCBOb2QKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpwYXJ0aWFs
X29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IE5vZGUmLCBjb25z
dCBOb2RlJik7CiAKLWJvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYpOworYm9vbCBpc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShjb25zdCBFdmVudFR5cGVJbmZvJiwgY29uc3QgRXZlbnRUYXJnZXQmKTsKIAogI2lm
IEFTU0VSVF9FTkFCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2UtZXZlbnQtbmFtZXMucHkKaW5k
ZXggYWQ4MmJjNjUyZmQ5Li5mNzM4MDI0YzA1ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlLWV2ZW50LW5hbWVzLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5CkBAIC03MiwzOSArNzIsODkgQEAgZGVmIG1haW4oKToKICNpbmNsdWRlICJU
aHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNs
YXNzIEV2ZW50VHlwZSA6IHVpbnQxNl90IHsKKyAgICBjdXN0b20gPSAwLCcnJykKKworICAgICAg
ICBjYXRlZ29yeV9tYXAgPSB7fQorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZXZlbnRfbmFt
ZXNfaW5wdXQua2V5cygpKToKKyAgICAgICAgICAgIGVudHJ5ID0gZXZlbnRfbmFtZXNfaW5wdXRb
bmFtZV0KKyAgICAgICAgICAgIGZvciBldmVudF9jYXRlZ29yeSBpbiBlbnRyeS5nZXQoJ2NhdGVn
b3JpZXMnLCBbXSk6CisgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwLnNldGRlZmF1bHQoZXZl
bnRfY2F0ZWdvcnksIFtdKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5X21hcFtldmVudF9jYXRl
Z29yeV0uYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBjb25kaXRpb25hbCA9IGVudHJ5LmdldCgn
Y29uZGl0aW9uYWwnLCBOb25lKQorICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6CisgICAgICAg
ICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9JykKKyAgICAgICAgICAgIHdyaXRl
bG4oZicgICAge25hbWV9LCcpCisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAg
ICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQorCisgICAgICAgIHdyaXRlbG4oJycnfTsKKworZW51
bSBjbGFzcyBFdmVudENhdGVnb3J5IDogdWludDE2X3QgeycnJykKKworICAgICAgICBiaXRfc2hp
ZnQgPSAwCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFwLmtleXMo
KSk6CisgICAgICAgICAgICB3cml0ZWxuKGYnICAgIHtjYXRlZ29yeX0gPSAxdSA8PCB7Yml0X3No
aWZ0fSwnKQorICAgICAgICAgICAgYml0X3NoaWZ0ICs9IDEKKworICAgICAgICB3cml0ZWxuKCcn
J307CisKK2NsYXNzIEV2ZW50VHlwZUluZm8geworcHVibGljOgorICAgIGVudW0gY2xhc3MgRGVm
YXVsdEV2ZW50SGFuZGxlciA6IGJvb2wgeyBObywgWWVzIH07CisKKyAgICBFdmVudFR5cGVJbmZv
KCkKKyAgICAgICAgOiBtX3R5cGUoRXZlbnRUeXBlOjpjdXN0b20pCisgICAgeyB9CisKKyAgICBF
dmVudFR5cGVJbmZvKEV2ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT4gY2F0
ZWdvcmllcywgRGVmYXVsdEV2ZW50SGFuZGxlciBkZWZhdWx0RXZlbnRIYW5kbGVyKQorICAgICAg
ICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fY2F0ZWdvcmllcyhjYXRlZ29yaWVzLnRvUmF3
KCkpCisgICAgICAgICwgbV9oYXNEZWZhdWx0RXZlbnRIYW5kbGVyKGRlZmF1bHRFdmVudEhhbmRs
ZXIgPT0gRGVmYXVsdEV2ZW50SGFuZGxlcjo6WWVzKQorICAgIHsgfQorCisgICAgRXZlbnRUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmVudFR5cGU+KG1fdHlwZSk7IH0K
KyAgICBib29sIGlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5IGNhdGVnb3J5KSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT46OmZyb21SYXcobV9jYXRlZ29yaWVzKS5jb250
YWlucyhjYXRlZ29yeSk7IH0KKyAgICBib29sIGhhc0RlZmF1bHRFdmVudEhhbmRsZXIoKSBjb25z
dCB7IHJldHVybiBtX2hhc0RlZmF1bHRFdmVudEhhbmRsZXI7IH0KKworcHJpdmF0ZToKKyAgICBF
dmVudFR5cGUgbV90eXBlOworICAgIHVpbnQxNl90IG1fY2F0ZWdvcmllcyA6IDE1OworICAgIHVp
bnQxNl90IG1faGFzRGVmYXVsdEV2ZW50SGFuZGxlciA6IDE7Cit9OworCiBzdHJ1Y3QgRXZlbnRO
YW1lcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnROYW1lcyk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotCiBwdWJsaWM6JycnKQotICAgICAgICB0eXBlX21hcCA9IHt9CisKICAg
ICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGV2ZW50X25hbWVzX2lucHV0LmtleXMoKSk6CiAgICAg
ICAgICAgICBlbnRyeSA9IGV2ZW50X25hbWVzX2lucHV0W25hbWVdCiAgICAgICAgICAgICBjb25k
aXRpb25hbCA9IGVudHJ5LmdldCgnY29uZGl0aW9uYWwnLCBOb25lKQogICAgICAgICAgICAgaWYg
Y29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9
JykKICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgY29uc3QgQXRvbVN0cmluZyB7bmFtZX1FdmVu
dDsnKQotICAgICAgICAgICAgZm9yIGV2ZW50X3R5cGUgaW4gZW50cnkuZ2V0KCd0eXBlcycsIFtd
KToKLSAgICAgICAgICAgICAgICB0eXBlX21hcC5zZXRkZWZhdWx0KGV2ZW50X3R5cGUsIFtdKQot
ICAgICAgICAgICAgICAgIHR5cGVfbWFwW2V2ZW50X3R5cGVdLmFwcGVuZChuYW1lKQogICAgICAg
ICAgICAgaWYgY29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbignI2VuZGlmJykK
IAogICAgICAgICB3cml0ZWxuKCcnJworICAgIEV2ZW50VHlwZUluZm8gdHlwZUluZm9Gb3JFdmVu
dChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisKICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdz
PgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVz
PihuZXcgRXZlbnROYW1lcyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9Jycn
KQogCi0gICAgICAgIGZvciBldmVudF90eXBlIGluIHNvcnRlZCh0eXBlX21hcC5rZXlzKCkpOgot
ICAgICAgICAgICAgd3JpdGVsbignJykKLSAgICAgICAgICAgIHdyaXRlbG4oZicgICAgaW5saW5l
IGJvb2wgaXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Oycp
Ci0gICAgICAgICAgICBuYW1lX2NvdW50ID0gbGVuKHR5cGVfbWFwW2V2ZW50X3R5cGVdKQotICAg
ICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5n
LCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGV2ZW50X3R5cGUpfUV2ZW50
TmFtZXMoKSBjb25zdDsnKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3J5
X21hcC5rZXlzKCkpOgorICAgICAgICAgICAgbmFtZV9jb3VudCA9IGxlbihjYXRlZ29yeV9tYXBb
Y2F0ZWdvcnldKQorICAgICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxj
b25zdCBBdG9tU3RyaW5nLCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNh
dGVnb3J5KX1FdmVudE5hbWVzKCkgY29uc3Q7JykKIAogICAgICAgICB3cml0ZWxuKCcnKQogICAg
ICAgICB3cml0ZWxuKGYnICAgIGlubGluZSBzdGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHts
ZW4oZXZlbnRfbmFtZXNfaW5wdXQpfT4gYWxsRXZlbnROYW1lcygpIGNvbnN0OycpCkBAIC0xMTIs
NiArMTYyLDggQEAgcHVibGljOicnJykKICAgICAgICAgd3JpdGVsbignJycKIHByaXZhdGU6CiAg
ICAgRXZlbnROYW1lcygpOworCisgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPEF0b21TdHJpbmcsIEV2ZW50VHlwZUluZm8+IG1fdHlwZUluZm9NYXA7CiB9OwogCiBj
b25zdCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CkBAIC0xMTksMjggKzE3MSwxOCBAQCBjb25z
dCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CiBpbmxpbmUgY29uc3QgRXZlbnROYW1lcyYgZXZl
bnROYW1lcygpCiB7CiAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5ldmVudE5hbWVzKCk7
Cit9CisKK2lubGluZSBFdmVudFR5cGVJbmZvIEV2ZW50TmFtZXM6OnR5cGVJbmZvRm9yRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGVJ
bmZvTWFwLmlubGluZUdldChldmVudFR5cGUpOwogfScnJykKIAotICAgICAgICBmb3IgZXZlbnRf
dHlwZSBpbiBzb3J0ZWQodHlwZV9tYXAua2V5cygpKToKLSAgICAgICAgICAgIG5hbWVzID0gdHlw
ZV9tYXBbZXZlbnRfdHlwZV0KLSAgICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4odHlwZV9tYXBb
ZXZlbnRfdHlwZV0pCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFw
LmtleXMoKSk6CisgICAgICAgICAgICBuYW1lcyA9IGNhdGVnb3J5X21hcFtjYXRlZ29yeV0KKyAg
ICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4oY2F0ZWdvcnlfbWFwW2NhdGVnb3J5XSkKICAgICAg
ICAgICAgIHdyaXRlbG4oJycpCi0gICAgICAgICAgICB3cml0ZWxuKGYnaW5saW5lIGJvb2wgRXZl
bnROYW1lczo6aXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkg
Y29uc3QnKQotICAgICAgICAgICAgd3JpdGVsbigneycpCi0gICAgICAgICAgICAjIEZJWE1FOiBT
dXBwb3J0IGNvbmRpdGlvbmFscyBpbiB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgaXRlbS4KLSAgICAg
ICAgICAgIHdyaXRlbG4oZicgICAgcmV0dXJuIHR5cGUgPT0ge25hbWVzWzBdfUV2ZW50JykKLSAg
ICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzWzE6LTFdOgotICAgICAgICAgICAgICAgIGNvbmRp
dGlvbmFsID0gZXZlbnRfbmFtZXNfaW5wdXRbbmFtZV0uZ2V0KCdjb25kaXRpb25hbCcsIE5vbmUp
Ci0gICAgICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdy
aXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCi0gICAgICAgICAgICAgICAgd3JpdGVsbihmJyAg
ICAgICAgfHwgdHlwZSA9PSB7bmFtZX1FdmVudCcpCi0gICAgICAgICAgICAgICAgaWYgY29uZGl0
aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlbG4oZicjZW5kaWYnKQotICAgICAgICAg
ICAgaWYgbGVuKG5hbWVzKSA+PSAyOgotICAgICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgICAg
IHx8IHR5cGUgPT0ge25hbWVzWy0xXX1FdmVudDsnKQotICAgICAgICAgICAgd3JpdGVsbignfScp
Ci0gICAgICAgICAgICB3cml0ZWxuKCcnKQotICAgICAgICAgICAgd3JpdGVsbihmJ2lubGluZSBz
dGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHtuYW1lX2NvdW50fT4gRXZlbnROYW1lczo6e2xv
d2VyY2FzZV9maXJzdF9sZXR0ZXIoZXZlbnRfdHlwZSl9RXZlbnROYW1lcygpIGNvbnN0JykKKyAg
ICAgICAgICAgIHdyaXRlbG4oZidpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5nLCB7
bmFtZV9jb3VudH0+IEV2ZW50TmFtZXM6Ontsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNhdGVnb3J5
KX1FdmVudE5hbWVzKCkgY29uc3QnKQogICAgICAgICAgICAgd3JpdGVsbigneycpCiAgICAgICAg
ICAgICB3cml0ZWxuKCcgICAgcmV0dXJuIHsgeycpCiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBu
YW1lczoKQEAgLTIwOSw3ICsyNTEsMjcgQEAgRXZlbnROYW1lczo6RXZlbnROYW1lcygpJycnKQog
ICAgICAgICAgICAgZGVsaW1pdGVyID0gJywnCiAgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoK
ICAgICAgICAgICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQotCisgICAgICAgIHdyaXRlbG4oZicg
ICAge2RlbGltaXRlcn0gbV90eXBlSW5mb01hcCh7eycpCisgICAgICAgIGZvciBuYW1lIGluIHNv
cnRlZChldmVudF9uYW1lc19pbnB1dC5rZXlzKCkpOgorICAgICAgICAgICAgZW50cnkgPSBldmVu
dF9uYW1lc19pbnB1dFtuYW1lXQorICAgICAgICAgICAgY29uZGl0aW9uYWwgPSBlbnRyeS5nZXQo
J2NvbmRpdGlvbmFsJywgTm9uZSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgorICAgICAg
ICAgICAgICAgIHdyaXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCisgICAgICAgICAgICB3cml0
ZShmJyAgICAgICAge3sgXCJ7bmFtZX1cIl9zLCB7eyBFdmVudFR5cGU6OntuYW1lfSwge3sgJykK
KyAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBlbnRyeS5nZXQoJ2NhdGVnb3JpZXMnLCBbXSkKKyAg
ICAgICAgICAgIGlmIGNhdGVnb3JpZXM6CisgICAgICAgICAgICAgICAgZm9yIGNhdGVnb3J5IGlu
IGNhdGVnb3JpZXNbOi0xXToKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoZidFdmVudENhdGVn
b3J5Ojp7Y2F0ZWdvcnl9LCAnKQorICAgICAgICAgICAgICAgIHdyaXRlKGYnRXZlbnRDYXRlZ29y
eTo6e2NhdGVnb3JpZXNbLTFdfSAnKQorICAgICAgICAgICAgd3JpdGUoJ30sICcpCisgICAgICAg
ICAgICBpZiBlbnRyeS5nZXQoJ2RlZmF1bHRFdmVudEhhbmRsZXInLCBGYWxzZSk6CisgICAgICAg
ICAgICAgICAgd3JpdGUoJ0V2ZW50VHlwZUluZm86OkRlZmF1bHRFdmVudEhhbmRsZXI6Olllcycp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdyaXRlKCdFdmVudFR5cGVJbmZv
OjpEZWZhdWx0RXZlbnRIYW5kbGVyOjpObycpCisgICAgICAgICAgICB3cml0ZWxuKCcgfSB9LCcp
CisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAgICAgICAgICB3cml0ZWxuKCcj
ZW5kaWYnKQorICAgICAgICB3cml0ZWxuKCcgICAgfSknKQogICAgICAgICB3cml0ZWxuKCcnJ3sg
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlJycnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcAppbmRleCBhYjFlOGYzZDVlMTcuLmZhOWFkOGU3YjE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE3Niw2ICsxNzYsMjEg
QEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICB9CiB9CiAKK05vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IEhUTUxQbHVnSW5FbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKQoreworICAgIGF1dG8gcmVzdWx0ID0gSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cisg
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgZG9jdW1l
bnQoKS5kaWRDb25uZWN0UGx1Z2luRWxlbWVudCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7Cisg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KQorICAgICAgICBkb2N1bWVudCgpLmRpZERpc2Nvbm5lY3RQbHVnaW5F
bGVtZW50KCk7Cit9CisKIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIEZpcmVmb3ggc2VlbXMgdG8gdXNlIGEgZmFrZSBl
dmVudCBsaXN0ZW5lciB0byBkaXNwYXRjaCBldmVudHMgdG8gcGx1Zy1pbiAodGVzdGVkIHdpdGgg
bW91c2UgZXZlbnRzIG9ubHkpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
CmluZGV4IDBkYWUyZmU0YTRlYy4uZjI0NGY4NTVmMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCkBAIC04NCw2ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0
b3I8QXRvbVN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgcGFy
YW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRE9NV2luZG93LmNwcAppbmRleCAzMGNh
YTQ4OTZlMzQuLjhkOTJlMzFmMWM1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbERPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAKQEAgLTQyMSw4ICs0MjEsMTcgQEAgTG9jYWxET01XaW5kb3c6OkxvY2FsRE9NV2luZG93
KERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBMb2NhbERPTVdpbmRvdzo6ZGlkU2VjdXJlVHJh
bnNpdGlvblRvKERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBSZWZQdHIgb2xkRG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBvYnNl
cnZlQ29udGV4dCgmZG9jdW1lbnQpOwogCisgICAgaWYgKGF1dG8qIGV2ZW50VGFyZ2V0RGF0YSA9
IHRoaXMtPmV2ZW50VGFyZ2V0RGF0YSgpKSB7CisgICAgICAgIGV2ZW50VGFyZ2V0RGF0YS0+ZXZl
bnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1dG8mIGV2ZW50
VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIGlmIChvbGREb2N1bWVudCkKKyAg
ICAgICAgICAgICAgICBvbGREb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUo
ZXZlbnRUeXBlLCBjb3VudCk7CisgICAgICAgICAgICBkb2N1bWVudC5kaWRBZGRFdmVudExpc3Rl
bmVyc09mVHlwZShldmVudFR5cGUsIGNvdW50KTsKKyAgICAgICAgfSk7CisgICAgfQorCiAgICAg
Ly8gVGhlIFdpbmRvdyBpcyBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIG9uZSBkb2N1bWVudCB0byBh
bm90aGVyIHNvIHdlIG5lZWQgdG8gcmVzZXQgZGF0YQogICAgIC8vIG1lbWJlcnMgdGhhdCBzdG9y
ZSB0aGUgd2luZG93J3MgZG9jdW1lbnQgKHJhdGhlciB0aGFuIHRoZSB3aW5kb3cgaXRzZWxmKS4K
ICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC01MjUsNiArNTM0LDcgQEAgdm9pZCBMb2NhbERP
TVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50RnJvbUZyYW1lKCkKICAgICAgICAgb2JzZXJ2ZXIu
d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOwogICAgIH0pOwogCisKICAgICBpZiAo
UmVmUHRyIHBlcmZvcm1hbmNlID0gbV9wZXJmb3JtYW5jZSkKICAgICAgICAgcGVyZm9ybWFuY2Ut
PmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7CiAKQEAgLTIwNTIsNDIgKzIwNjIsNTMgQEAgYm9vbCBM
b2NhbERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5
cGUsIFJlZjxFdmVudExpc3QKIAogICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50
KCk7CiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBh
dXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7CiAg
ICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgIGRvY3VtZW50LT5hZGRMaXN0ZW5lclR5cGVJZk5l
ZWRlZChldmVudFR5cGUpOwotICAgICAgICBpZiAoZXZlbnROYW1lcy5pc1doZWVsRXZlbnRUeXBl
KGV2ZW50VHlwZSkpCisgICAgICAgIGRvY3VtZW50LT5kaWRBZGRFdmVudExpc3RlbmVyc09mVHlw
ZShldmVudFR5cGUpOworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0
ZWdvcnk6OldoZWVsKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5kaWRBZGRXaGVlbEV2ZW50SGFu
ZGxlcigqZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlw
ZShldmVudFR5cGUsICpkb2N1bWVudCkpCisgICAgICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVk
RXZlbnRUeXBlKHR5cGVJbmZvLCAqZG9jdW1lbnQpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRp
ZEFkZFRvdWNoRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnN0b3JhZ2VFdmVudCkKICAgICAgICAgICAgIGRpZEFkZFN0b3Jh
Z2VFdmVudExpc3RlbmVyKCp0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMudW5sb2FkRXZlbnQpCisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAg
ICBjYXNlIEV2ZW50VHlwZTo6dW5sb2FkOgogICAgICAgICBhZGRVbmxvYWRFdmVudExpc3RlbmVy
KHRoaXMpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmJlZm9yZXVubG9h
ZEV2ZW50ICYmIGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKLSAgICAgICAgYWRk
QmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFdmVudFR5cGU6OmJlZm9yZXVubG9hZDoKKyAgICAgICAgaWYgKGFsbG93c0JlZm9yZVVubG9h
ZExpc3RlbmVycyh0aGlzKSkKKyAgICAgICAgICAgIGFkZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVu
ZXIodGhpcyk7CisgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpCisgICAgY2FzZSBF
dmVudFR5cGU6OnNjcm9sbDoKICAgICAgICAgaW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnND
b3VudCgpOworICAgICAgICBicmVhazsKICNlbmRpZgorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCisgICAgY2FzZSBFdmVudFR5cGU6OmRldmljZW9yaWVudGF0aW9uOgorICAgICAgICBz
dGFydExpc3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OmRldmljZW1vdGlvbjoKKyAgICAgICAgc3RhcnRM
aXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2FyeSgpOworICAgICAgICBicmVhazsKKyNl
bmRpZgorICAgIGRlZmF1bHQ6CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgZWxz
ZSBpZiAoZG9jdW1lbnQgJiYgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9j
dW1lbnQpKQotICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50Owor
ICAgICAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpkb2N1bWVudCkp
CisgICAgICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwogI2Vu
ZGlmCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKLSAgICBlbHNlIGlmIChldmVudE5h
bWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVudFR5cGUpKQotICAgICAgICArK21fdG91Y2hBbmRH
ZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVn
b3J5KEV2ZW50Q2F0ZWdvcnk6Okdlc3R1cmUpKQorICAgICAgICAgICAgKyttX3RvdWNoQW5kR2Vz
dHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKICNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQotICAg
IGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNHYW1lcGFkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAg
ICAgIGluY3JlbWVudEdhbWVwYWRFdmVudExpc3RlbmVyQ291bnQoKTsKLSNlbmRpZgotI2lmIEVO
QUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMuZGV2aWNlb3JpZW50YXRpb25FdmVudCkKLSAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JE
ZXZpY2VPcmllbnRhdGlvbklmTmVjZXNzYXJ5KCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMuZGV2aWNlbW90aW9uRXZlbnQpCi0gICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9y
RGV2aWNlTW90aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRl
Z29yeShFdmVudENhdGVnb3J5OjpHYW1lcGFkKSkKKyAgICAgICAgICAgIGluY3JlbWVudEdhbWVw
YWRFdmVudExpc3RlbmVyQ291bnQoKTsKICNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTIyOTYsNDMgKzIzMTcsNTUgQEAgYm9vbCBMb2NhbERP
TVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGUKIAogICAgIFJlZlB0ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAg
ICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBhdXRvIHR5
cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7CiAgICAgaWYg
KGRvY3VtZW50KSB7Ci0gICAgICAgIGlmIChldmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZl
bnRUeXBlKSkKKyAgICAgICAgZG9jdW1lbnQtPmRpZFJlbW92ZUV2ZW50TGlzdGVuZXJzT2ZUeXBl
KGV2ZW50VHlwZSk7CisgICAgICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRl
Z29yeTo6V2hlZWwpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRpZFJlbW92ZVdoZWVsRXZlbnRI
YW5kbGVyKCpkb2N1bWVudCk7Ci0gICAgICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRU
eXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50KSkKKyAgICAgICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0
ZWRFdmVudFR5cGUodHlwZUluZm8sICpkb2N1bWVudCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+
ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIoKmRvY3VtZW50KTsKICAgICB9CiAKLSAgICBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudW5sb2FkRXZlbnQpCisgICAgc3dpdGNoICh0eXBlSW5m
by50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50VHlwZTo6dW5sb2FkOgogICAgICAgICByZW1vdmVV
bmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVu
dE5hbWVzLmJlZm9yZXVubG9hZEV2ZW50ICYmIGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0
aGlzKSkKLSAgICAgICAgcmVtb3ZlQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OmJlZm9yZXVubG9hZDoKKyAgICAgICAg
aWYgKGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKKyAgICAgICAgICAgIHJlbW92
ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgIGJyZWFrOwogI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMu
c2Nyb2xsRXZlbnQpCisgICAgY2FzZSBFdmVudFR5cGU6OnNjcm9sbDoKICAgICAgICAgZGVjcmVt
ZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOworICAgICAgICBicmVhazsKICNlbmRpZgor
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisgICAgY2FzZSBFdmVudFR5cGU6OmRldmlj
ZW9yaWVudGF0aW9uOgorICAgICAgICBzdG9wTGlzdGVuaW5nRm9yRGV2aWNlT3JpZW50YXRpb25J
Zk5lY2Vzc2FyeSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6ZGV2aWNl
bW90aW9uOgorICAgICAgICBzdG9wTGlzdGVuaW5nRm9yRGV2aWNlTW90aW9uSWZOZWNlc3Nhcnko
KTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBkZWZhdWx0OgogI2lmIEVOQUJMRShJT1Nf
VE9VQ0hfRVZFTlRTKQotICAgIGVsc2UgaWYgKGRvY3VtZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZl
bnRUeXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50KSkgewotICAgICAgICBBU1NFUlQobV90b3VjaEFu
ZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQgPiAwKTsKLSAgICAgICAgLS1tX3RvdWNoQW5kR2Vz
dHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKLSAgICB9CisgICAgICAgIGlmIChkb2N1bWVudCAmJiBp
c1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlSW5mbywgKmRvY3VtZW50KSkgeworICAgICAgICAg
ICAgQVNTRVJUKG1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7CisgICAg
ICAgICAgICAtLW1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX0dFU1RVUkVfRVZFTlRTKQotICAgIGVsc2UgaWYgKGV2
ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpIHsKLSAgICAgICAgQVNTRVJU
KG1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7Ci0gICAgICAgIC0tbV90
b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQ7Ci0gICAgfQorICAgICAgICBpZiAodHlw
ZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Okdlc3R1cmUpKSB7CisgICAgICAgICAg
ICBBU1NFUlQobV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQgPiAwKTsKKyAgICAg
ICAgICAgIC0tbV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQ7CisgICAgICAgIH0K
ICNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNH
YW1lcGFkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGRlY3JlbWVudEdhbWVwYWRFdmVu
dExpc3RlbmVyQ291bnQoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04p
Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuZGV2aWNlb3JpZW50YXRpb25F
dmVudCkKLSAgICAgICAgc3RvcExpc3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNlc3Nh
cnkoKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZpY2Vtb3Rpb25F
dmVudCkKLSAgICAgICAgc3RvcExpc3RlbmluZ0ZvckRldmljZU1vdGlvbklmTmVjZXNzYXJ5KCk7
CisgICAgICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6R2FtZXBh
ZCkpCisgICAgICAgICAgICBkZWNyZW1lbnRHYW1lcGFkRXZlbnRMaXN0ZW5lckNvdW50KCk7CiAj
ZW5kaWYKKyAgICAgICAgYnJlYWs7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1F1aXJrcy5jcHAKaW5kZXggNDQ0NWM1OGE0MzA1Li40NmFiZTQyZDQzNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1F1aXJrcy5jcHAKQEAgLTk1NSw3ICs5NTUsNyBAQCBib29sIFF1aXJrczo6c2hvdWxkQnlw
YXNzQXN5bmNTY3JpcHREZWZlcnJpbmcoKSBjb25zdAogfQogCiAvLyBzbW9vdGhzY3JvbGwgSlMg
bGlicmFyeSByZGFyOi8vNTI3MTI1MTMKLWJvb2wgUXVpcmtzOjpzaG91bGRNYWtlRXZlbnRMaXN0
ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUpCitib29sIFF1aXJrczo6c2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNz
aXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgRXZlbnRUeXBlSW5mbyYg
ZXZlbnRUeXBlKQogewogICAgIGF1dG8gZXZlbnRUYXJnZXRJc1Jvb3QgPSBbXShjb25zdCBFdmVu
dFRhcmdldCYgZXZlbnRUYXJnZXQpIHsKICAgICAgICAgaWYgKGlzPExvY2FsRE9NV2luZG93Pihl
dmVudFRhcmdldCkpCkBAIC05NzIsNyArOTcyLDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZE1ha2VF
dmVudExpc3RlbmVyUGFzc2l2ZShjb25zdCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQsIGNvbnMK
ICAgICAgICAgcmV0dXJuIGRvd25jYXN0PERvY3VtZW50PihldmVudFRhcmdldC5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpOwogICAgIH07CiAKLSAgICBpZiAoZXZlbnROYW1lcygpLmlzVG91Y2hT
Y3JvbGxCbG9ja2luZ0V2ZW50VHlwZShldmVudFR5cGUpKSB7CisgICAgaWYgKGV2ZW50VHlwZS5p
c0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6VG91Y2hTY3JvbGxCbG9ja2luZykpIHsKICAgICAg
ICAgaWYgKGV2ZW50VGFyZ2V0SXNSb290KGV2ZW50VGFyZ2V0KSkgewogICAgICAgICAgICAgaWYg
KGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRGcm9tRXZlbnRUYXJnZXQoZXZlbnRUYXJnZXQpKQog
ICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+c2V0dGluZ3MoKS5wYXNzaXZlVG91Y2hM
aXN0ZW5lcnNBc0RlZmF1bHRPbkRvY3VtZW50KCk7CkBAIC05ODAsNyArOTgwLDcgQEAgYm9vbCBR
dWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZShjb25zdCBFdmVudFRhcmdldCYg
ZXZlbnRUYXJnZXQsIGNvbnMKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlm
IChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKSB7CisgICAgaWYgKGV2
ZW50VHlwZS5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hlZWwpKSB7CiAgICAgICAgIGlm
IChldmVudFRhcmdldElzUm9vdChldmVudFRhcmdldCkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiBkb2N1bWVudCA9IGRvY3VtZW50RnJvbUV2ZW50VGFyZ2V0KGV2ZW50VGFyZ2V0KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnNldHRpbmdzKCkucGFzc2l2ZVdoZWVsTGlzdGVu
ZXJzQXNEZWZhdWx0T25Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXggNjA1ZjZjZmQ0
ZWUyLi41ODE3MjJhZjdjMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaApAQCAtMzUsNiArMzUsNyBAQCBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBFdmVudExpc3RlbmVyOwogY2xh
c3MgRXZlbnRUYXJnZXQ7CitjbGFzcyBFdmVudFR5cGVJbmZvOwogY2xhc3MgSFRNTEVsZW1lbnQ7
CiBjbGFzcyBIVE1MVmlkZW9FbGVtZW50OwogY2xhc3MgTGF5b3V0VW5pdDsKQEAgLTExMyw3ICsx
MTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRCeXBhc3NCYWNrRm9yd2FyZENhY2hlKCkg
Y29uc3Q7CiAgICAgYm9vbCBzaG91bGRCeXBhc3NBc3luY1NjcmlwdERlZmVycmluZygpIGNvbnN0
OwogCi0gICAgc3RhdGljIGJvb2wgc2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0
IEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKTsKKyAgICBzdGF0aWMg
Ym9vbCBzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmLCBj
b25zdCBFdmVudFR5cGVJbmZvJiBldmVudFR5cGUpOwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKICAgICBib29sIHNob3VsZEVuYWJsZUxlZ2FjeUdldFVzZXJNZWRpYVF1aXJrKCkgY29uc3Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmlu
ZGV4IGE3OWYyMWM3YWYwMi4uYzBhMDFhNjgxNDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQg
UGx1Z2luVmlldzo6aGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50KQogICAgICAgICAgICAgZnJhbWUt
PmV2ZW50SGFuZGxlcigpLnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChudWxscHRyKTsK
IAogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1Z2luLT5oYW5kbGVNb3VzZUV2ZW50KHN0
YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPigqY3VycmVudEV2ZW50KSk7Ci0gICAgfSBl
bHNlIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVudC50eXBlKCkpICYmIGN1
cnJlbnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50VHlwZTo6V2hlZWwpCisgICAgfSBlbHNlIGlm
ICgoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS53aGVlbEV2ZW50IHx8IGV2ZW50LnR5cGUo
KSA9PSBldmVudE5hbWVzKCkubW91c2V3aGVlbEV2ZW50KSAmJiBjdXJyZW50RXZlbnQtPnR5cGUo
KSA9PSBXZWJFdmVudFR5cGU6OldoZWVsKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1
Z2luLT5oYW5kbGVXaGVlbEV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdlYldoZWVsRXZlbnQmPigq
Y3VycmVudEV2ZW50KSk7CiAgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMo
KS5tb3VzZW92ZXJFdmVudCAmJiBjdXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudFR5cGU6
Ok1vdXNlTW92ZSkKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlTW91
c2VFbnRlckV2ZW50KHN0YXRpY19jYXN0PGNvbnN0IFdlYk1vdXNlRXZlbnQmPigqY3VycmVudEV2
ZW50KSk7Cg==
</data>
<flag name="commit-queue"
          id="495845"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469324</attachid>
            <date>2024-01-07 00:53:26 -0800</date>
            <delta_ts>2024-01-07 01:07:14 -0800</delta_ts>
            <desc>WIP3 with logging</desc>
            <filename>event-type-info-early-return-3-logging.patch</filename>
            <type>text/plain</type>
            <size>57819</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZTI4MTRkMWU0NC4uZDk4NzU1ZWYxNDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3MzAsMzggKzU3MzAsNzMgQEAgYm9vbCBEb2N1
bWVudDo6aGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZl
bnRUeXBlKSBjb25zdAogdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJD
b3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLkRPTVN1
YnRyZWVNb2RpZmllZEV2ZW50KQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJ
bmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjpET01TdWJ0cmVlTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTVN1YnRyZWVNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZUluc2VydGVkRXZlbnQpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWQ6CiAgICAgICAgIGFkZExp
c3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRFdmVudCkKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkOgogICAgICAgICBhZGRMaXN0
ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3ZlZCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50OgogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVk
RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01DaGFyYWN0ZXJE
YXRhTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTUNo
YXJhY3RlckRhdGFNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMub3ZlcmZsb3djaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjpvdmVyZmxvd2NoYW5nZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5
cGU6Ok92ZXJmbG93Q2hhbmdlZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuc2Nyb2xsRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpzY3Jv
bGw6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OlNjcm9sbCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdp
bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vm
b3JjZXdpbGxiZWdpbjoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9y
Y2VXaWxsQmVnaW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLndlYmtp
dG1vdXNlZm9yY2VjaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjp3ZWJraXRtb3VzZWZvcmNlY2hhbmdlZDoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExp
c3RlbmVyVHlwZTo6Rm9yY2VDaGFuZ2VkKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy53ZWJraXRtb3VzZWZvcmNlZG93bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vmb3JjZWRvd246CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlRG93bik7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXVwRXZlbnQpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXZlbnRUeXBlOjp3ZWJraXRtb3VzZWZvcmNldXA6CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlVXApOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzLmZvY3VzaW5FdmVudCkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5
cGU6OmZvY3VzaW46CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkZvY3Vz
SW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmZvY3Vzb3V0RXZlbnQp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpmb2N1c291dDoKICAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9jdXNPdXQpOwotICAgIGVsc2UgaWYgKGV2
ZW50TmFtZXMuaXNDU1NUcmFuc2l0aW9uRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOwotICAgIGVsc2UgaWYg
KGV2ZW50TmFtZXMuaXNDU1NBbmltYXRpb25FdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Q1NTQW5pbWF0aW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpDU1NUcmFuc2l0aW9uKSkKKyAgICAgICAgICAgIGFkZExpc3RlbmVyVHlwZShM
aXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOworICAgICAgICBlbHNlIGlmICh0eXBlSW5mby5p
c0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6Q1NTQW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU0FuaW1hdGlvbik7CisgICAgfQorfQorCit2
b2lkIERvY3VtZW50OjpkaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb3VudCk7CisgICAg
YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
ZXZlbnRMaXN0ZW5lckNvdW50cy5mYXN0QWRkKGV2ZW50VHlwZSwgMCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkUmVtb3ZlRXZl
bnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCB1bnNpZ25lZCBj
b3VudCkKK3sKKyAgICBBU1NFUlQoY291bnQpOworICAgIEFTU0VSVChtX2V2ZW50TGlzdGVuZXJD
b3VudHMuY29udGFpbnMoZXZlbnRUeXBlKSk7CisgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5l
ckNvdW50cy5maW5kKGV2ZW50VHlwZSk7CisgICAgQVNTRVJUKGl0LT52YWx1ZSA+PSBjb3VudCk7
CisgICAgaXQtPnZhbHVlIC09IGNvdW50OwogfQogCiBIVE1MRnJhbWVPd25lckVsZW1lbnQqIERv
Y3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNGFm
ZWRlYzQzZDIuLjVlNTgwNDhkMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0xpc3RIYXNoU2V0Lmg+CkBAIC0xMDIw
LDYgKzEwMjEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRU
eXBlKFBsYXRmb3JtRXZlbnRUeXBlKSBjb25zdDsKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlm
TmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAKKyAgICB2b2lkIGRpZEFkZEV2
ZW50TGlzdGVuZXJzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmLCB1bnNpZ25lZCA9IDEpOworICAg
IHZvaWQgZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYsIHVu
c2lnbmVkID0gMSk7CisgICAgYm9vbCBoYXNFdmVudExpc3RuZXJzT2ZUeXBlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lckNvdW50cy5pbmxpbmVH
ZXQodHlwZSk7IH0KKworICAgIGJvb2wgaGFzQ29ubmVjdGVkUGx1Z2luRWxlbWVudHMoKSB7IHJl
dHVybiBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRDb3VudDsgfQorICAgIHZvaWQgZGlkQ29ubmVj
dFBsdWdpbkVsZW1lbnQoKSB7ICsrbV9jb25uZWN0ZWRQbHVnaW5FbGVtZW50Q291bnQ7IH0KKyAg
ICB2b2lkIGRpZERpc2Nvbm5lY3RQbHVnaW5FbGVtZW50KCkgeyBBU1NFUlQobV9jb25uZWN0ZWRQ
bHVnaW5FbGVtZW50Q291bnQpOyAtLW1fY29ubmVjdGVkUGx1Z2luRWxlbWVudENvdW50OyB9CisK
ICAgICBpbmxpbmUgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNv
bnN0IHsgcmV0dXJuICFtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5pc0VtcHR5KCk7IH0KICAgICB2
b2lkIGFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBl
cykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5hZGQodHlwZXMpOyB9CkBAIC0yMzQzLDYgKzIz
NTIsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGF0YUxpc3RFbGVtZW50Q291bnQgeyAw
IH07CiAKICAgICBPcHRpb25TZXQ8TGlzdGVuZXJUeXBlPiBtX2xpc3RlbmVyVHlwZXM7CisgICAg
TWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgdW5zaWduZWQ+IG1fZXZl
bnRMaXN0ZW5lckNvdW50czsKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRD
b3VudCB7IDAgfTsKKwogICAgIHVuc2lnbmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQgeyAwIH07
CiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xh
c3RTdHlsZVVwZGF0ZVNpemVGb3JUZXN0aW5nIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcAppbmRleCBiMmY4YWRmMjQyNWIuLjI3YzVjMzg0MzIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0NSw2ICsxNDUsMTggQEAgc3RhdGlj
IEhUTUxJbnB1dEVsZW1lbnQqIGZpbmRJbnB1dEVsZW1lbnRJbkV2ZW50UGF0aChjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoZG9jdW1lbnQuaGFzRXZlbnRMaXN0bmVyc09mVHlwZShldmVudC50eXBl
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gbGVnYWN5VHlwZSA9IEV2ZW50
VGFyZ2V0OjpsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIGlmICghbGVnYWN5VHlwZS5p
c051bGwoKSAmJiBkb2N1bWVudC5oYXNFdmVudExpc3RuZXJzT2ZUeXBlKGxlZ2FjeVR5cGUpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKG5vZGUpKTsK
QEAgLTE1NCwxMCArMTY2LDE1IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBSZWYgcHJvdGVjdGVkTm9kZSB7IG5vZGUg
fTsKICAgICBSZWZQdHIgcHJvdGVjdGVkVmlldyB7IG5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfTsK
IAorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzKCkudHlwZUluZm9Gb3JFdmVudChldmVu
dC50eXBlKCkpOworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudFRvU2NyaXB0cyA9IGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihub2RlLmRvY3VtZW50KCksIGV2ZW50KTsKKyAgICBpZiAoIXNo
b3VsZERpc3BhdGNoRXZlbnRUb1NjcmlwdHMgJiYgIXR5cGVJbmZvLmhhc0RlZmF1bHRFdmVudEhh
bmRsZXIoKSAmJiAhbm9kZS5kb2N1bWVudCgpLmhhc0Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRzKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIEV2ZW50UGF0aCBldmVudFBhdGggeyBub2RlLCBldmVu
dCB9OwogCiAgICAgaWYgKG5vZGUuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnNlbmRNb3VzZUV2ZW50
c1RvRGlzYWJsZWRGb3JtQ29udHJvbHNFbmFibGVkKCkgJiYgZXZlbnQuaXNUcnVzdGVkKCkgJiYg
ZXZlbnQuaXNNb3VzZUV2ZW50KCkKLSAgICAgICAgJiYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8IGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkpIHsKKyAgICAgICAgJiYg
KHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6Om1vdXNlZG93biB8fCB0eXBlSW5mby50eXBl
KCkgPT0gRXZlbnRUeXBlOjptb3VzZXVwIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6
OmNsaWNrIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6OmRibGNsaWNrKSkgewogICAg
ICAgICBldmVudFBhdGguYWRqdXN0Rm9yRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KIApA
QCAtMTkxLDcgKzIwOCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5v
ZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgaW5wdXRGb3JMZWdhY3lQcmVBY3RpdmF0
aW9uQmVoYXZpb3ItPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUp
OwogICAgIH0KIAotICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSkgeworICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSAmJiBzaG91bGREaXNwYXRjaEV2ZW50VG9TY3JpcHRzKSB7CiAgICAgICAgIGV2ZW50
LnNldEV2ZW50UGF0aChldmVudFBhdGgpOwogICAgICAgICBkaXNwYXRjaEV2ZW50SW5ET00oZXZl
bnQsIGV2ZW50UGF0aCk7CiAgICAgfQpAQCAtMjA0LDcgKzIyMSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAvLyBD
YWxsIGRlZmF1bHQgZXZlbnQgaGFuZGxlcnMuIFdoaWxlIHRoZSBET00gZG9lcyBoYXZlIGEgY29u
Y2VwdCBvZiBwcmV2ZW50aW5nCiAgICAgLy8gZGVmYXVsdCBoYW5kbGluZywgdGhlIGRldGFpbCBv
ZiB3aGljaCBoYW5kbGVycyBhcmUgY2FsbGVkIGlzIGFuIGludGVybmFsCiAgICAgLy8gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIGFuZCBub3QgcGFydCBvZiB0aGUgRE9NLgotICAgIGlmICghZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZCgpICYmICFldmVudC5kZWZhdWx0SGFuZGxlZCgpICYmICFldmVudC5p
c0RlZmF1bHRFdmVudEhhbmRsZXJJZ25vcmVkKCkpIHsKKyAgICBpZiAodHlwZUluZm8uaGFzRGVm
YXVsdEV2ZW50SGFuZGxlcigpICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkgJiYgIWV2ZW50
LmRlZmF1bHRIYW5kbGVkKCkgJiYgIWV2ZW50LmlzRGVmYXVsdEV2ZW50SGFuZGxlcklnbm9yZWQo
KSkgewogICAgICAgICAvLyBGSVhNRTogTm90IGNsZWFyIHdoeSB3ZSBuZWVkIHRvIHJlc2V0IHRo
ZSB0YXJnZXQgZm9yIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXJzLgogICAgICAgICAvLyBXZSBz
aG91bGQgcmVzZWFyY2ggdGhpcywgYW5kIHJlbW92ZSB0aGlzIGNvZGUgaWYgcG9zc2libGUuCiAg
ICAgICAgIFJlZlB0ciBmaW5hbFRhcmdldCA9IGV2ZW50LnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggNTVlNjE5NTI5MTg5Li4xMWM1NmI5NTI5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNjcsNiArNjcsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXJNYXAq
Pih0aGlzKS0+ZmluZChldmVudFR5cGUpOyB9CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50
VHlwZXMoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+Cisg
ICAgdm9pZCBlbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoQ2FsbGJhY2tUeXBlIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykKKyAgICAgICAg
ICAgIGNhbGxiYWNrKGVudHJ5LmZpcnN0LCBlbnRyeS5zZWNvbmQuc2l6ZSgpKTsKKyAgICB9CisK
ICAgICB2b2lkIHJlbW92ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgdm9pZCBjb3B5RXZlbnRMaXN0ZW5lcnNOb3RD
cmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0KEV2ZW50VGFyZ2V0Kik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5qc29uIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuanNvbgppbmRleCBhYzE1ZjkyYWRlNzQuLmI0MTJmNGE0NDRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5qc29uCkBAIC0xLDUgKzEsNSBAQAogewotICAgICJET01BY3Rp
dmF0ZSI6IHsidHlwZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl19LAorICAgICJET01BY3RpdmF0
ZSI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRI
YW5kbGVyIjogdHJ1ZSB9LAogICAgICJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiOiB7IH0sCiAg
ICAgIkRPTUNvbnRlbnRMb2FkZWQiOiB7IH0sCiAgICAgIkRPTU5vZGVJbnNlcnRlZCI6IHsgfSwK
QEAgLTE0LDEwICsxNCwxMCBAQAogICAgICJhZGRzdHJlYW0iOiB7IH0sCiAgICAgImFkZHRyYWNr
IjogeyB9LAogICAgICJhZnRlcnByaW50IjogeyB9LAotICAgICJhbmltYXRpb25jYW5jZWwiOiB7
InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgImFuaW1hdGlvbmVuZCI6IHsidHlwZXMi
OiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyJ0eXBlcyI6
IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJhbmltYXRpb25zdGFydCI6IHsidHlwZXMiOiBbIkNT
U0FuaW1hdGlvbiJdfSwKKyAgICAiYW5pbWF0aW9uY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyAiY2F0ZWdvcmll
cyI6IFsiQ1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uc3RhcnQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAogICAgICJhdWRpb2VuZCI6IHsgfSwKICAgICAiYXVk
aW9wcm9jZXNzIjogeyB9LAogICAgICJhdWRpb3N0YXJ0IjogeyB9LApAQCAtMzcsNyArMzcsNyBA
QAogICAgICJiZWZvcmV1bmxvYWQiOiB7IH0sCiAgICAgImJlZ2luRXZlbnQiOiB7IH0sCiAgICAg
ImJsb2NrZWQiOiB7IH0sCi0gICAgImJsdXIiOiB7IH0sCisgICAgImJsdXIiOiB7ICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJib3VuZGFyeSI6IHsgfSwKICAgICAiYnVmZmVy
ZWRhbW91bnRsb3ciOiB7IH0sCiAgICAgImJ1ZmZlcmVkY2hhbmdlIjogeyB9LApAQCAtNDksNyAr
NDksNyBAQAogICAgICJjaGFyZ2luZ2NoYW5nZSI6IHsgfSwKICAgICAiY2hhcmdpbmd0aW1lY2hh
bmdlIjogeyB9LAogICAgICJjaGVja2luZyI6IHsgfSwKLSAgICAiY2xpY2siOiB7InR5cGVzIjog
WyJNb3VzZUNsaWNrUmVsYXRlZCJdfSwKKyAgICAiY2xpY2siOiB7ICJjYXRlZ29yaWVzIjogWyJN
b3VzZUNsaWNrUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAi
Y2xvc2UiOiB7IH0sCiAgICAgImNsb3NpbmciOiB7IH0sCiAgICAgImNvbXBsZXRlIjogeyB9LApA
QCAtNjEsNyArNjEsNyBAQAogICAgICJjb25uZWN0aW9uc3RhdGVjaGFuZ2UiOiB7IH0sCiAgICAg
ImNvbm5lY3RpbmciOiB7IH0sCiAgICAgImNvbnRlbnR2aXNpYmlsaXR5YXV0b3N0YXRlY2hhbmdl
IjogeyB9LAotICAgICJjb250ZXh0bWVudSI6IHsgfSwKKyAgICAiY29udGV4dG1lbnUiOiB7ICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJjb250cm9sbGVyY2hhbmdlIjogeyB9
LAogICAgICJjb29raWVjaGFuZ2UiOiB7IH0sCiAgICAgImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2Ui
OiB7IH0sCkBAIC03Miw3ICs3Miw3IEBACiAgICAgImN1dCI6IHsgfSwKICAgICAiZGF0YWF2YWls
YWJsZSI6IHsgfSwKICAgICAiZGF0YWNoYW5uZWwiOiB7IH0sCi0gICAgImRibGNsaWNrIjogeyB9
LAorICAgICJkYmxjbGljayI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAg
ImRlcXVldWUiOiB7IH0sCiAgICAgImRldmljZWNoYW5nZSI6IHsgfSwKICAgICAiZGV2aWNlbW90
aW9uIjogeyB9LApAQCAtMTAxLDIxICsxMDEsMjEgQEAKICAgICAiZXhpdCI6IHsgfSwKICAgICAi
ZmV0Y2giOiB7IH0sCiAgICAgImZpbmlzaCI6IHsgfSwKLSAgICAiZm9jdXMiOiB7IH0sCisgICAg
ImZvY3VzIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAiZm9jdXNpbiI6
IHsgfSwKICAgICAiZm9jdXNvdXQiOiB7IH0sCiAgICAgImZvcm1kYXRhIjogeyB9LAogICAgICJm
dWxsc2NyZWVuY2hhbmdlIjogeyB9LAogICAgICJmdWxsc2NyZWVuZXJyb3IiOiB7IH0sCi0gICAg
ImdhbWVwYWRjb25uZWN0ZWQiOiB7InR5cGVzIjogWyJHYW1lcGFkIl19LAotICAgICJnYW1lcGFk
ZGlzY29ubmVjdGVkIjogeyJ0eXBlcyI6IFsiR2FtZXBhZCJdfSwKKyAgICAiZ2FtZXBhZGNvbm5l
Y3RlZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdhbWVwYWQiXSB9LAorICAgICJnYW1lcGFkZGlzY29u
bmVjdGVkIjogeyAiY2F0ZWdvcmllcyI6IFsiR2FtZXBhZCJdIH0sCiAgICAgImdhdGhlcmluZ3N0
YXRlY2hhbmdlIjogeyB9LAotICAgICJnZXN0dXJlY2hhbmdlIjogeyJ0eXBlcyI6IFsiR2VzdHVy
ZSJdfSwKLSAgICAiZ2VzdHVyZWVuZCI6IHsidHlwZXMiOiBbIkdlc3R1cmUiXX0sCisgICAgImdl
c3R1cmVjaGFuZ2UiOiB7ICJjYXRlZ29yaWVzIjogWyJHZXN0dXJlIl0gfSwKKyAgICAiZ2VzdHVy
ZWVuZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9LAogICAgICJnZXN0dXJlc2Nyb2xs
ZW5kIjogeyB9LAogICAgICJnZXN0dXJlc2Nyb2xsc3RhcnQiOiB7IH0sCiAgICAgImdlc3R1cmVz
Y3JvbGx1cGRhdGUiOiB7IH0sCi0gICAgImdlc3R1cmVzdGFydCI6IHsidHlwZXMiOiBbIkdlc3R1
cmUiXX0sCisgICAgImdlc3R1cmVzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9
LAogICAgICJnZXN0dXJldGFwIjogeyB9LAogICAgICJnZXN0dXJldGFwZG93biI6IHsgfSwKICAg
ICAiZ290cG9pbnRlcmNhcHR1cmUiOiB7IH0sCkBAIC0xMzAsMTAgKzEzMCwxMCBAQAogICAgICJp
bnN0YWxsIjogeyB9LAogICAgICJpbnZhbGlkIjogeyB9LAogICAgICJpbnZva2UiOiB7IH0sCi0g
ICAgImtleWRvd24iOiB7IH0sCi0gICAgImtleXByZXNzIjogeyB9LAorICAgICJrZXlkb3duIjog
eyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAia2V5cHJlc3MiOiB7ICJkZWZh
dWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJrZXlzdGF0dXNlc2NoYW5nZSI6IHsgfSwK
LSAgICAia2V5dXAiOiB7IH0sCisgICAgImtleXVwIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6
IHRydWUgfSwKICAgICAibGFuZ3VhZ2VjaGFuZ2UiOiB7IH0sCiAgICAgImxlYXZlcGljdHVyZWlu
cGljdHVyZSI6IHsgfSwKICAgICAibGV2ZWxjaGFuZ2UiOiB7IH0sCkBAIC0xNTAsMTQgKzE1MCwx
NCBAQAogICAgICJtZXJjaGFudHZhbGlkYXRpb24iOiB7IH0sCiAgICAgIm1lc3NhZ2UiOiB7IH0s
CiAgICAgIm1lc3NhZ2VlcnJvciI6IHsgfSwKLSAgICAibW91c2Vkb3duIjogeyJ0eXBlcyI6IFsi
TW91c2VDbGlja1JlbGF0ZWQiLCAiU2ltdWxhdGVkTW91c2UiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgIm1vdXNlZG93biI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJtb3VzZWVudGVyIjogeyB9LAogICAgICJtb3Vz
ZWxlYXZlIjogeyB9LAotICAgICJtb3VzZW1vdmUiOiB7InR5cGVzIjogWyJNb3VzZU1vdmVSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJt
b3VzZW91dCI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNlb3Zl
ciI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNldXAiOiB7InR5
cGVzIjogWyJNb3VzZUNsaWNrUmVsYXRlZCIsICJTaW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRv
dWNoUmVsYXRlZCJdfSwKLSAgICAibW91c2V3aGVlbCI6IHsidHlwZXMiOiBbIldoZWVsIl19LAor
ICAgICJtb3VzZW1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1vdmVSZWxhdGVkIiwgIlNp
bXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5k
bGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZW91dCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlTW92
ZVJlbGF0ZWQiXSB9LAorICAgICJtb3VzZW92ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1v
dmVSZWxhdGVkIl0gfSwKKyAgICAibW91c2V1cCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xp
Y2tSZWxhdGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZXdoZWVsIjogeyAiY2F0ZWdv
cmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgIm11
dGUiOiB7IH0sCiAgICAgIm5hdmlnYXRlIjogeyB9LAogICAgICJuYXZpZ2F0ZWVycm9yIjogeyB9
LApAQCAtMTg2LDE0ICsxODYsMTQgQEAKICAgICAicGxheWluZyI6IHsgfSwKICAgICAicG9pbnRl
cmxvY2tjaGFuZ2UiOiB7IH0sCiAgICAgInBvaW50ZXJsb2NrZXJyb3IiOiB7IH0sCi0gICAgInBv
aW50ZXJjYW5jZWwiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJl
bGF0ZWQiXX0sCi0gICAgInBvaW50ZXJkb3duIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJwb2ludGVyZW50ZXIiOiB7InR5cGVzIjog
WyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJs
ZWF2ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJd
fSwKLSAgICAicG9pbnRlcm1vdmUiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5k
ZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdXQiOiB7InR5cGVzIjogWyJUb3VjaFJl
bGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdmVyIjogeyJ0
eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJw
b2ludGVydXAiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgInBvaW50ZXJjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0
ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVl
IH0sCisgICAgInBvaW50ZXJkb3duIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAor
ICAgICJwb2ludGVyZW50ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0
ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAg
InBvaW50ZXJsZWF2ZSI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAicG9p
bnRlcm1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3Vj
aFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJv
dXQiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJvdmVyIjog
eyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0s
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVydXAiOiB7ICJjYXRl
Z29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1
bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgInBvcHN0YXRlIjogeyB9LAogICAgICJwcmV2
aW91c3RyYWNrIjogeyB9LAogICAgICJwcm9jZXNzb3JlcnJvciI6IHsgfSwKQEAgLTI1MywyMSAr
MjUzLDIxIEBACiAgICAgInN1Ym1pdCI6IHsgfSwKICAgICAic3VjY2VzcyI6IHsgfSwKICAgICAi
c3VzcGVuZCI6IHsgfSwKLSAgICAidGV4dElucHV0IjogeyB9LAorICAgICJ0ZXh0SW5wdXQiOiB7
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0aW1lb3V0IjogeyB9LAogICAg
ICJ0aW1ldXBkYXRlIjogeyB9LAogICAgICJ0b2dnbGUiOiB7IH0sCiAgICAgInRvbmVjaGFuZ2Ui
OiB7IH0sCi0gICAgInRvdWNoY2FuY2VsIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4
dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJ0b3VjaGVuZCI6IHsidHlwZXMiOiBbIlRvdWNo
UmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAidG91Y2hmb3JjZWNoYW5n
ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwK
LSAgICAidG91Y2htb3ZlIjogeyJ0eXBlcyI6IFsiVG91Y2hTY3JvbGxCbG9ja2luZyIsICJUb3Vj
aFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInRvdWNoc3RhcnQiOiB7
InR5cGVzIjogWyJUb3VjaFNjcm9sbEJsb2NraW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdfSwKKyAgICAidG91Y2hjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJU
b3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRs
ZXIiOiB0cnVlIH0sCisgICAgInRvdWNoZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaGZvcmNlY2hhbmdlIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaG1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFNjcm9sbEJsb2Nr
aW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2
ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAidG91Y2hzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBb
IlRvdWNoU2Nyb2xsQmxvY2tpbmciLCAiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxh
dGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0cmFjayI6IHsgfSwK
LSAgICAidHJhbnNpdGlvbmNhbmNlbCI6IHsidHlwZXMiOiBbIkNTU1RyYW5zaXRpb24iXX0sCi0g
ICAgInRyYW5zaXRpb25lbmQiOiB7InR5cGVzIjogWyJDU1NUcmFuc2l0aW9uIl19LAotICAgICJ0
cmFuc2l0aW9ucnVuIjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKLSAgICAidHJhbnNp
dGlvbnN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKKyAgICAidHJhbnNpdGlv
bmNhbmNlbCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU1RyYW5zaXRpb24iXSB9LAorICAgICJ0cmFu
c2l0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCisgICAgInRy
YW5zaXRpb25ydW4iOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9uIl0gfSwKKyAgICAi
dHJhbnNpdGlvbnN0YXJ0IjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCiAg
ICAgInVuY2FwdHVyZWRlcnJvciI6IHsgfSwKICAgICAidW5oYW5kbGVkcmVqZWN0aW9uIjogeyB9
LAogICAgICJ1bmxvYWQiOiB7IH0sCkBAIC0yODgsMTEgKzI4OCwxMSBAQAogICAgICJ3ZWJnbGNv
bnRleHRjcmVhdGlvbmVycm9yIjogeyB9LAogICAgICJ3ZWJnbGNvbnRleHRsb3N0IjogeyB9LAog
ICAgICJ3ZWJnbGNvbnRleHRyZXN0b3JlZCI6IHsgfSwKLSAgICAid2Via2l0QW5pbWF0aW9uRW5k
IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRBbmltYXRpb25JdGVy
YXRpb24iOiB7InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgIndlYmtpdEFuaW1hdGlv
blN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRCZWZvcmVU
ZXh0SW5zZXJ0ZWQiOiB7IH0sCi0gICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7InR5cGVzIjog
WyJDU1NUcmFuc2l0aW9uIl19LAorICAgICJ3ZWJraXRBbmltYXRpb25FbmQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRpb25JdGVyYXRpb24i
OiB7ICJjYXRlZ29yaWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRp
b25TdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU0FuaW1hdGlvbiJdIH0sCisgICAgIndlYmtp
dEJlZm9yZVRleHRJbnNlcnRlZCI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisg
ICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9u
Il0gfSwKICAgICAid2Via2l0YmVnaW5mdWxsc2NyZWVuIjogeyB9LAogICAgICJ3ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCI6IHsgfSwKICAgICAid2Via2l0ZW5k
ZnVsbHNjcmVlbiI6IHsgfSwKQEAgLTMxMyw3ICszMTMsNyBAQAogICAgICJ3ZWJraXRzb3VyY2Vj
bG9zZSI6IHsgfSwKICAgICAid2Via2l0c291cmNlZW5kZWQiOiB7IH0sCiAgICAgIndlYmtpdHNv
dXJjZW9wZW4iOiB7IH0sCi0gICAgIndoZWVsIjogeyJ0eXBlcyI6IFsiV2hlZWwiXX0sCisgICAg
IndoZWVsIjogeyAiY2F0ZWdvcmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIi
OiB0cnVlIH0sCiAgICAgIndyaXRlIjogeyB9LAogICAgICJ3cml0ZWVuZCI6IHsgfSwKICAgICAi
d3JpdGVzdGFydCI6IHsgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDVkNDRm
MTc0NTM2Yi4uNGFmYTFkZmRkMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAg
LTkyLDcgKzkyLDggQEAgYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmUKIAogICAgIGF1dG8gcGFzc2l2
ZSA9IG9wdGlvbnMucGFzc2l2ZTsKIAotICAgIGlmICghcGFzc2l2ZS5oYXNfdmFsdWUoKSAmJiBR
dWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZSgqdGhpcywgZXZlbnRUeXBlKSkK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcygpLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRU
eXBlKTsKKyAgICBpZiAoIXBhc3NpdmUuaGFzX3ZhbHVlKCkgJiYgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3NpdmUoKnRoaXMsIHR5cGVJbmZvKSkKICAgICAgICAgcGFzc2l2ZSA9
IHRydWU7CiAKICAgICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBbJl0gewpAQCAt
MTEzLDcgKzExNCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAgICAgaWYgKGxpc3RlbmVy
Q3JlYXRlZEZyb21TY3JpcHQpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
QWRkRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lci5nZXQoKSwgb3B0aW9u
cy5jYXB0dXJlKTsKIAotICAgIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVu
dFR5cGUpKQorICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hl
ZWwpKQogICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgIGV2
ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCk7CkBAIC0xNTcsNyArMTU4LDcgQEAgYm9vbCBFdmVudFRh
cmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVFdmVu
dExpc3RlbmVyKCp0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zLmNhcHR1cmUpOwog
CiAgICAgaWYgKGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAucmVtb3ZlKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMuY2FwdHVyZSkpIHsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVs
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgICAgIGlmIChldmVudE5hbWVzKCkudHlwZUluZm9G
b3JFdmVudChldmVudFR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpXaGVlbCkpCiAg
ICAgICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgICAgICBl
dmVudExpc3RlbmVyc0RpZENoYW5nZSgpOwpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgRXZlbnRU
YXJnZXQ6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogfQogCi1zdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCitjb25zdCBB
dG9tU3RyaW5nJiBFdmVudFRhcmdldDo6bGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50JiBl
dmVudCkKIHsKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5hbmltYXRpb25lbmRFdmVudCkKQEAg
LTMwNyw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZl
bnQmIGV2ZW50LCBFdmVudEludm9rZVBoYXNlIHBoYXNlKQogICAgIGlmICghZXZlbnQuaXNUcnVz
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5
cGVOYW1lID0gbGVnYWN5VHlwZShldmVudCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5
VHlwZU5hbWUgPSBsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIGlmICghbGVnYWN5VHlw
ZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGxlZ2FjeUxpc3RlbmVyc1ZlY3Rv
ciA9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChsZWdhY3lUeXBlTmFtZSkpIHsKICAgICAg
ICAgICAgIEF0b21TdHJpbmcgdHlwZU5hbWUgPSBldmVudC50eXBlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCmluZGV4IGQwOWU4Nzg1MTg2Zi4uNjA3NzA1ODUxNDc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50
Jik7CisKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uZXZlbnQiIGF0dHJpYnV0ZXMuCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNNYXliZUVycm9yRXZlbnRMaXN0ZW5lcj4KICAgICB2b2lkIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBKU0M6
OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIGpzRXZlbnRUYXJnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDQzYzFkNGNkZDFiYi4uMjgzMDAwN2YzMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yMjE1LDEyICsyMjE1LDEyIEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICB0
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+cmVtb3ZlTm9kZSgqdGhpcyk7CiAKICAgICBpZiAo
YXV0byogZXZlbnRUYXJnZXREYXRhID0gdGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKLSAgICAg
ICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKLSAgICAgICAgaWYg
KCFldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAu
ZXZlbnRUeXBlcygpKQotICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKHR5cGUpOwotICAgICAgICB9CisgICAgICAgIGV2ZW50VGFyZ2V0RGF0YS0+ZXZl
bnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1dG8mIGV2ZW50
VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92
ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSwgY291bnQpOworICAgICAgICAgICAgbmV3
RG9jdW1lbnQuZGlkQWRkRXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7Cisg
ICAgICAgIH0pOwogCisgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5h
bWVzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMubW91c2V3aGVlbEV2ZW50KS5zaXplKCkgKyBldmVudExpc3RlbmVy
cyhldmVudE5hbWVzLndoZWVsRXZlbnQpLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7CiAgICAgICAgICAgICBvbGRE
b2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CkBAIC0yMjc1LDI5ICsy
Mjc1LDE0IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICBlbGVtZW50LT5kaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCi1ib29sIGlzVG91
Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZl
bnRUYXJnZXQmIHRhcmdldCkKK2Jvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgRXZl
bnRUeXBlSW5mbyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KQogewotICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0KSAmJiBkb3duY2FzdDxOb2RlPih0
YXJnZXQpLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2
ZW50cygmdGFyZ2V0KSkgewotICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91
c2Vkb3duRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2Vtb3ZlRXZlbnQgfHwg
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2V1cEV2ZW50KQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQorICAgIGlmIChpczxOb2RlPih0YXJnZXQpICYmIGRvd25jYXN0PE5vZGU+
KHRhcmdldCkuZG9jdW1lbnQoKS5xdWlya3MoKS5zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNl
RXZlbnRzKCZ0YXJnZXQpKQorICAgICAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpFeHRlbmRlZFRvdWNoUmVsYXRlZCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKLSAgICByZXR1cm4gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hz
dGFydEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNobW92ZUV2
ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNoZW5kRXZlbnQKLSAg
ICAgICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hjYW5jZWxFdmVudAotICAgICAg
ICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaGZvcmNlY2hhbmdlRXZlbnQKLSAgICAg
ICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMucG9pbnRlcm92ZXJFdmVudAotICAgICAgICB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZW50ZXJFdmVudAotICAgICAgICB8fCBl
dmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZG93bkV2ZW50Ci0gICAgICAgIHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnBvaW50ZXJtb3ZlRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMucG9pbnRlcnVwRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMucG9pbnRlcm91dEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzLnBvaW50ZXJsZWF2ZUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnBvaW50ZXJjYW5jZWxFdmVudDsKKyAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpUb3VjaFJlbGF0ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5
QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTIzMDUsMzAgKzIyOTAsMzEgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnQKICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCBvcHRpb25zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZChldmVudFR5cGUpOworICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkQWRk
RXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlKTsKIAogICAgIGF1dG8mIGV2ZW50TmFtZXMg
PSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50
VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJbmZv
Rm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRX
aGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0
ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisgICAgZWxzZSBpZiAoaXNUb3Vj
aFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0g
ICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tSZWxhdGVkRXZlbnRUeXBlKGV2ZW50
VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6
Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRB
ZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXROb2RlKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50
KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpIHsKKyAgICBpZiAodGFy
Z2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiB0eXBlSW5mby50eXBlKCkgPT0g
RXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRhcmdldE5v
ZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmluY3JlbWVu
dFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJn
ZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJn
ZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50TGlz
dGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisg
ICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHZXN0dXJlKSkKICAg
ICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0
Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjM0NSwzMCArMjMzMSwzMyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3Ry
aW5nJiBldgogICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNP
ZlR5cGUoZXZlbnRUeXBlKTsKKwogICAgIC8vIEZJWE1FOiBOb3RpZnkgRG9jdW1lbnQgdGhhdCB0
aGUgbGlzdGVuZXIgaGFzIHZhbmlzaGVkLiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgYSBudW1i
ZXIgb2YKICAgICAvLyBsaXN0ZW5lcnMgZm9yIGVhY2ggdHlwZSwgbm90IGp1c3QgYSBib29sIC0g
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg2MQogICAgIGF1
dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFt
ZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVu
dE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJ
bkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9j
dW1lbnQoKS5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxz
ZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisg
ICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2Rl
KSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFu
ZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tS
ZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNh
dGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXRO
b2RlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0g
JnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xs
RXZlbnQpIHsKKyAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAm
JiB0eXBlSW5mby50eXBlKCkgPT0gRXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1
dG8qIHdpbmRvdyA9IHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAg
ICAgICB3aW5kb3ctPmRlY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICp0YXJnZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVu
dFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1l
bnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVO
VFMpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJl
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpHZXN0dXJlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5yZW1v
dmVUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjU0MiwyOCAr
MjUzMSwzNiBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byYgZXZlbnRUeXBlID0gZXZlbnQudHlwZSgpOwogICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLmtleWRvd25FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5rZXlwcmVzc0V2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmtleXVwRXZlbnQpIHsK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlw
ZSk7CisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50VHlwZTo6
a2V5ZG93bjoKKyAgICBjYXNlIEV2ZW50VHlwZTo6a2V5cHJlc3M6CisgICAgY2FzZSBFdmVudFR5
cGU6OmtleXVwOgogICAgICAgICBpZiAoUmVmUHRyIGtleWJvYXJkRXZlbnQgPSBkeW5hbWljRG93
bmNhc3Q8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyIGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS5kZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoKmtleWJvYXJkRXZlbnQpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5jbGlja0V2ZW50
KSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpjbGljazoKICAgICAgICAg
ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5jb250ZXh0bWVudUV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6OmNvbnRleHRtZW51Ogog
ICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7
CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnRleHRJbnB1dEV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6
OnRleHRJbnB1dDoKICAgICAgICAgaWYgKFJlZlB0ciB0ZXh0RXZlbnQgPSBkeW5hbWljRG93bmNh
c3Q8VGV4dEV2ZW50PihldmVudCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHIgZnJhbWUgPSBk
b2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LmRlZmF1bHRUZXh0SW5wdXRFdmVudEhhbmRsZXIoKnRleHRFdmVudCk7CiAgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgfSBlbHNlIGlmIChh
dXRvKiBtb3VzZUV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91
c2VFdmVudCAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5tb3VzZWRvd25FdmVudCkgewotICAg
ICAgICBpZiAobW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTW91c2VCdXR0b246Ok1pZGRsZSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZWRvd246CisgICAgICAgIGlmIChhdXRvKiBtb3VzZUV2
ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91c2VFdmVudCAmJiBv
dXNlRXZlbnQtPmJ1dHRvbigpID09IE1vdXNlQnV0dG9uOjpNaWRkbGUpIHsKICAgICAgICAgICAg
IGlmIChlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI1NzYsNDUgKzI1NzMsNTQgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGF1dG8qIHdo
ZWVsRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpOyB3aGVlbEV2ZW50
ICYmIGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKSB7Ci0gICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhl
IGZpcnN0IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCi0gICAgICAgIC8vIFRoaXMgaXMg
bmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxzZWxl
Y3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCi0gICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7
Ci0gICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OworICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZXdoZWVsOgorICAgIGNhc2UgRXZlbnRUeXBlOjp3
aGVlbDoKKyAgICAgICAgQVNTRVJUKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5
OjpXaGVlbCkpOworICAgICAgICBpZiAoYXV0byogd2hlZWxFdmVudCA9IGR5bmFtaWNEb3duY2Fz
dDxXaGVlbEV2ZW50PihldmVudCk7IHdoZWVsRXZlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIHdl
IGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhlIGZpcnN0
IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCisgICAgICAgICAgICAvLyBUaGlzIGlzIG5l
ZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0
PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgorICAgICAgICAgICAgTm9kZSogc3RhcnROb2RlID0gdGhp
czsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2Rl
LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
V2hlZWxFdmVudEhhbmRsZXIoUmVmUHRyIHsgc3RhcnROb2RlIH0uZ2V0KCksICp3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRXaGVlbEV2
ZW50SGFuZGxlcihSZWZQdHIgeyBzdGFydE5vZGUgfS5nZXQoKSwgKndoZWVsRXZlbnQpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB9IGVsc2Ug
aWYgKGF1dG8qIHRvdWNoRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8VG91Y2hFdmVudD4oZXZlbnQp
OyB0b3VjaEV2ZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRoaXMp
KSB7Ci0gICAgICAgIC8vIENhcHR1cmUgdGhlIHRhcmdldCBub2RlJ3MgdmlzaWJpbGl0eSBzdGF0
ZSBiZWZvcmUgZGlzcGF0Y2hpbmcgdG91Y2hTdGFydC4KLSAgICAgICAgaWYgKGF1dG8qIGVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzLnRvdWNoc3RhcnRFdmVudCkgeworICAgICAgICBpZiAoYXV0byogdG91
Y2hFdmVudCA9IGR5bmFtaWNEb3duY2FzdDxUb3VjaEV2ZW50PihldmVudCk7IHRvdWNoRXZlbnQg
JiYgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0aGlzKSkgeworICAgICAgICAg
ICAgLy8gQ2FwdHVyZSB0aGUgdGFyZ2V0IG5vZGUncyB2aXNpYmlsaXR5IHN0YXRlIGJlZm9yZSBk
aXNwYXRjaGluZyB0b3VjaFN0YXJ0LgorICAgICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIHR5cGVJbmZvLnR5cGUo
KSA9PSBFdmVudFR5cGU6OnRvdWNoc3RhcnQpIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9DSEFOR0Vf
T0JTRVJWRVIpCi0gICAgICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBkb2N1
bWVudCgpLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwotICAgICAgICAgICAgaWYgKENvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhpcykpCi0gICAgICAgICAgICAgICAg
Y29udGVudENoYW5nZU9ic2VydmVyLnNldEhpZGRlblRvdWNoVGFyZ2V0KCplbGVtZW50KTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVz
ZXRIaWRkZW5Ub3VjaFRhcmdldCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFu
Z2VPYnNlcnZlciA9IGRvY3VtZW50KCkuY29udGVudENoYW5nZU9ic2VydmVyKCk7CisgICAgICAg
ICAgICAgICAgaWYgKENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhp
cykpCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zZXRIaWRkZW5U
b3VjaFRhcmdldCgqZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVzZXRIaWRkZW5Ub3VjaFRhcmdldCgpOwog
I2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICAgICAgZm9yICg7IHJlbmRlcmVyOyBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgYXV0byogcmVuZGVy
Qm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKLSAgICAgICAgICAg
IGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBm
b3IgKDsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJl
bmRlcmVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94ICYmIHJlbmRlckJveC0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
bm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFt
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRUb3Vj
aEV2ZW50SGFuZGxlcigqcmVuZGVyZXJOb2RlLCAqdG91Y2hFdmVudCk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChS
ZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0VG91Y2hFdmVudEhhbmRsZXIoKnJlbmRl
cmVyTm9kZSwgKnRvdWNoRXZlbnQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMjYzMCwx
NCArMjYzNiwxNSBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBj
b25zdAogI2VuZGlmCiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMo
KTsKICAgICByZXR1cm4gZXZlbnRUeXBlcygpLmNvbnRhaW5zSWYoWyZdKGNvbnN0IGF1dG8mIHR5
cGUpIHsKLSAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMuaXNNb3VzZU1vdmVSZWxhdGVkRXZlbnRU
eXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KHR5
cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZU1vdmVSZWxhdGVkKTsKICAgICB9
KTsKIH0KIAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSBjb25zdAogewor
ICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgcmV0dXJu
IGV2ZW50VHlwZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Ci0gICAgICAg
IHJldHVybiBpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlLCAqdGhpcyk7CisgICAgICAgIHJl
dHVybiBldmVudE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQodHlwZSkuaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OlRvdWNoUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTI2NzMsNyArMjY4MCw3
IEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHNXaXRoRWRpdGFiaWxp
dHkoRWRpdGFiaWxpdHkgZWRpdGFiaWxpdHkpCiAKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2Vi
Q29yZTo6ZXZlbnROYW1lcygpOwogICAgIHJldHVybiBldmVudFR5cGVzKCkuY29udGFpbnNJZihb
Jl0oY29uc3QgYXV0byYgdHlwZSkgewotICAgICAgICByZXR1cm4gZXZlbnROYW1lcy5pc01vdXNl
Q2xpY2tSZWxhdGVkRXZlbnRUeXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50
eXBlSW5mb0ZvckV2ZW50KHR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZUNs
aWNrUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDM4ZDA1NDEwODllMS4u
ZmM4OGM3NjBlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxl
bWVudDsKK2NsYXNzIEV2ZW50VHlwZUluZm87CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSFRN
TFF1YWxpZmllZE5hbWU7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CkBAIC03NzIsNyArNzczLDcg
QEAgdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9y
ZGVyKGNvbnN0IE5vZGUmLCBjb25zdCBOb2QKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpwYXJ0aWFs
X29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IE5vZGUmLCBjb25z
dCBOb2RlJik7CiAKLWJvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYpOworYm9vbCBpc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShjb25zdCBFdmVudFR5cGVJbmZvJiwgY29uc3QgRXZlbnRUYXJnZXQmKTsKIAogI2lm
IEFTU0VSVF9FTkFCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2UtZXZlbnQtbmFtZXMucHkKaW5k
ZXggYWQ4MmJjNjUyZmQ5Li5mNzM4MDI0YzA1ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlLWV2ZW50LW5hbWVzLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5CkBAIC03MiwzOSArNzIsODkgQEAgZGVmIG1haW4oKToKICNpbmNsdWRlICJU
aHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNs
YXNzIEV2ZW50VHlwZSA6IHVpbnQxNl90IHsKKyAgICBjdXN0b20gPSAwLCcnJykKKworICAgICAg
ICBjYXRlZ29yeV9tYXAgPSB7fQorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZXZlbnRfbmFt
ZXNfaW5wdXQua2V5cygpKToKKyAgICAgICAgICAgIGVudHJ5ID0gZXZlbnRfbmFtZXNfaW5wdXRb
bmFtZV0KKyAgICAgICAgICAgIGZvciBldmVudF9jYXRlZ29yeSBpbiBlbnRyeS5nZXQoJ2NhdGVn
b3JpZXMnLCBbXSk6CisgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwLnNldGRlZmF1bHQoZXZl
bnRfY2F0ZWdvcnksIFtdKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5X21hcFtldmVudF9jYXRl
Z29yeV0uYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBjb25kaXRpb25hbCA9IGVudHJ5LmdldCgn
Y29uZGl0aW9uYWwnLCBOb25lKQorICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6CisgICAgICAg
ICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9JykKKyAgICAgICAgICAgIHdyaXRl
bG4oZicgICAge25hbWV9LCcpCisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAg
ICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQorCisgICAgICAgIHdyaXRlbG4oJycnfTsKKworZW51
bSBjbGFzcyBFdmVudENhdGVnb3J5IDogdWludDE2X3QgeycnJykKKworICAgICAgICBiaXRfc2hp
ZnQgPSAwCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFwLmtleXMo
KSk6CisgICAgICAgICAgICB3cml0ZWxuKGYnICAgIHtjYXRlZ29yeX0gPSAxdSA8PCB7Yml0X3No
aWZ0fSwnKQorICAgICAgICAgICAgYml0X3NoaWZ0ICs9IDEKKworICAgICAgICB3cml0ZWxuKCcn
J307CisKK2NsYXNzIEV2ZW50VHlwZUluZm8geworcHVibGljOgorICAgIGVudW0gY2xhc3MgRGVm
YXVsdEV2ZW50SGFuZGxlciA6IGJvb2wgeyBObywgWWVzIH07CisKKyAgICBFdmVudFR5cGVJbmZv
KCkKKyAgICAgICAgOiBtX3R5cGUoRXZlbnRUeXBlOjpjdXN0b20pCisgICAgeyB9CisKKyAgICBF
dmVudFR5cGVJbmZvKEV2ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT4gY2F0
ZWdvcmllcywgRGVmYXVsdEV2ZW50SGFuZGxlciBkZWZhdWx0RXZlbnRIYW5kbGVyKQorICAgICAg
ICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fY2F0ZWdvcmllcyhjYXRlZ29yaWVzLnRvUmF3
KCkpCisgICAgICAgICwgbV9oYXNEZWZhdWx0RXZlbnRIYW5kbGVyKGRlZmF1bHRFdmVudEhhbmRs
ZXIgPT0gRGVmYXVsdEV2ZW50SGFuZGxlcjo6WWVzKQorICAgIHsgfQorCisgICAgRXZlbnRUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmVudFR5cGU+KG1fdHlwZSk7IH0K
KyAgICBib29sIGlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5IGNhdGVnb3J5KSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT46OmZyb21SYXcobV9jYXRlZ29yaWVzKS5jb250
YWlucyhjYXRlZ29yeSk7IH0KKyAgICBib29sIGhhc0RlZmF1bHRFdmVudEhhbmRsZXIoKSBjb25z
dCB7IHJldHVybiBtX2hhc0RlZmF1bHRFdmVudEhhbmRsZXI7IH0KKworcHJpdmF0ZToKKyAgICBF
dmVudFR5cGUgbV90eXBlOworICAgIHVpbnQxNl90IG1fY2F0ZWdvcmllcyA6IDE1OworICAgIHVp
bnQxNl90IG1faGFzRGVmYXVsdEV2ZW50SGFuZGxlciA6IDE7Cit9OworCiBzdHJ1Y3QgRXZlbnRO
YW1lcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnROYW1lcyk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotCiBwdWJsaWM6JycnKQotICAgICAgICB0eXBlX21hcCA9IHt9CisKICAg
ICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGV2ZW50X25hbWVzX2lucHV0LmtleXMoKSk6CiAgICAg
ICAgICAgICBlbnRyeSA9IGV2ZW50X25hbWVzX2lucHV0W25hbWVdCiAgICAgICAgICAgICBjb25k
aXRpb25hbCA9IGVudHJ5LmdldCgnY29uZGl0aW9uYWwnLCBOb25lKQogICAgICAgICAgICAgaWYg
Y29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9
JykKICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgY29uc3QgQXRvbVN0cmluZyB7bmFtZX1FdmVu
dDsnKQotICAgICAgICAgICAgZm9yIGV2ZW50X3R5cGUgaW4gZW50cnkuZ2V0KCd0eXBlcycsIFtd
KToKLSAgICAgICAgICAgICAgICB0eXBlX21hcC5zZXRkZWZhdWx0KGV2ZW50X3R5cGUsIFtdKQot
ICAgICAgICAgICAgICAgIHR5cGVfbWFwW2V2ZW50X3R5cGVdLmFwcGVuZChuYW1lKQogICAgICAg
ICAgICAgaWYgY29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbignI2VuZGlmJykK
IAogICAgICAgICB3cml0ZWxuKCcnJworICAgIEV2ZW50VHlwZUluZm8gdHlwZUluZm9Gb3JFdmVu
dChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisKICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdz
PgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVz
PihuZXcgRXZlbnROYW1lcyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9Jycn
KQogCi0gICAgICAgIGZvciBldmVudF90eXBlIGluIHNvcnRlZCh0eXBlX21hcC5rZXlzKCkpOgot
ICAgICAgICAgICAgd3JpdGVsbignJykKLSAgICAgICAgICAgIHdyaXRlbG4oZicgICAgaW5saW5l
IGJvb2wgaXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Oycp
Ci0gICAgICAgICAgICBuYW1lX2NvdW50ID0gbGVuKHR5cGVfbWFwW2V2ZW50X3R5cGVdKQotICAg
ICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5n
LCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGV2ZW50X3R5cGUpfUV2ZW50
TmFtZXMoKSBjb25zdDsnKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3J5
X21hcC5rZXlzKCkpOgorICAgICAgICAgICAgbmFtZV9jb3VudCA9IGxlbihjYXRlZ29yeV9tYXBb
Y2F0ZWdvcnldKQorICAgICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxj
b25zdCBBdG9tU3RyaW5nLCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNh
dGVnb3J5KX1FdmVudE5hbWVzKCkgY29uc3Q7JykKIAogICAgICAgICB3cml0ZWxuKCcnKQogICAg
ICAgICB3cml0ZWxuKGYnICAgIGlubGluZSBzdGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHts
ZW4oZXZlbnRfbmFtZXNfaW5wdXQpfT4gYWxsRXZlbnROYW1lcygpIGNvbnN0OycpCkBAIC0xMTIs
NiArMTYyLDggQEAgcHVibGljOicnJykKICAgICAgICAgd3JpdGVsbignJycKIHByaXZhdGU6CiAg
ICAgRXZlbnROYW1lcygpOworCisgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPEF0b21TdHJpbmcsIEV2ZW50VHlwZUluZm8+IG1fdHlwZUluZm9NYXA7CiB9OwogCiBj
b25zdCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CkBAIC0xMTksMjggKzE3MSwxOCBAQCBjb25z
dCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CiBpbmxpbmUgY29uc3QgRXZlbnROYW1lcyYgZXZl
bnROYW1lcygpCiB7CiAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5ldmVudE5hbWVzKCk7
Cit9CisKK2lubGluZSBFdmVudFR5cGVJbmZvIEV2ZW50TmFtZXM6OnR5cGVJbmZvRm9yRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGVJ
bmZvTWFwLmlubGluZUdldChldmVudFR5cGUpOwogfScnJykKIAotICAgICAgICBmb3IgZXZlbnRf
dHlwZSBpbiBzb3J0ZWQodHlwZV9tYXAua2V5cygpKToKLSAgICAgICAgICAgIG5hbWVzID0gdHlw
ZV9tYXBbZXZlbnRfdHlwZV0KLSAgICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4odHlwZV9tYXBb
ZXZlbnRfdHlwZV0pCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFw
LmtleXMoKSk6CisgICAgICAgICAgICBuYW1lcyA9IGNhdGVnb3J5X21hcFtjYXRlZ29yeV0KKyAg
ICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4oY2F0ZWdvcnlfbWFwW2NhdGVnb3J5XSkKICAgICAg
ICAgICAgIHdyaXRlbG4oJycpCi0gICAgICAgICAgICB3cml0ZWxuKGYnaW5saW5lIGJvb2wgRXZl
bnROYW1lczo6aXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkg
Y29uc3QnKQotICAgICAgICAgICAgd3JpdGVsbigneycpCi0gICAgICAgICAgICAjIEZJWE1FOiBT
dXBwb3J0IGNvbmRpdGlvbmFscyBpbiB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgaXRlbS4KLSAgICAg
ICAgICAgIHdyaXRlbG4oZicgICAgcmV0dXJuIHR5cGUgPT0ge25hbWVzWzBdfUV2ZW50JykKLSAg
ICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzWzE6LTFdOgotICAgICAgICAgICAgICAgIGNvbmRp
dGlvbmFsID0gZXZlbnRfbmFtZXNfaW5wdXRbbmFtZV0uZ2V0KCdjb25kaXRpb25hbCcsIE5vbmUp
Ci0gICAgICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdy
aXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCi0gICAgICAgICAgICAgICAgd3JpdGVsbihmJyAg
ICAgICAgfHwgdHlwZSA9PSB7bmFtZX1FdmVudCcpCi0gICAgICAgICAgICAgICAgaWYgY29uZGl0
aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlbG4oZicjZW5kaWYnKQotICAgICAgICAg
ICAgaWYgbGVuKG5hbWVzKSA+PSAyOgotICAgICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgICAg
IHx8IHR5cGUgPT0ge25hbWVzWy0xXX1FdmVudDsnKQotICAgICAgICAgICAgd3JpdGVsbignfScp
Ci0gICAgICAgICAgICB3cml0ZWxuKCcnKQotICAgICAgICAgICAgd3JpdGVsbihmJ2lubGluZSBz
dGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHtuYW1lX2NvdW50fT4gRXZlbnROYW1lczo6e2xv
d2VyY2FzZV9maXJzdF9sZXR0ZXIoZXZlbnRfdHlwZSl9RXZlbnROYW1lcygpIGNvbnN0JykKKyAg
ICAgICAgICAgIHdyaXRlbG4oZidpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5nLCB7
bmFtZV9jb3VudH0+IEV2ZW50TmFtZXM6Ontsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNhdGVnb3J5
KX1FdmVudE5hbWVzKCkgY29uc3QnKQogICAgICAgICAgICAgd3JpdGVsbigneycpCiAgICAgICAg
ICAgICB3cml0ZWxuKCcgICAgcmV0dXJuIHsgeycpCiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBu
YW1lczoKQEAgLTIwOSw3ICsyNTEsMjcgQEAgRXZlbnROYW1lczo6RXZlbnROYW1lcygpJycnKQog
ICAgICAgICAgICAgZGVsaW1pdGVyID0gJywnCiAgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoK
ICAgICAgICAgICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQotCisgICAgICAgIHdyaXRlbG4oZicg
ICAge2RlbGltaXRlcn0gbV90eXBlSW5mb01hcCh7eycpCisgICAgICAgIGZvciBuYW1lIGluIHNv
cnRlZChldmVudF9uYW1lc19pbnB1dC5rZXlzKCkpOgorICAgICAgICAgICAgZW50cnkgPSBldmVu
dF9uYW1lc19pbnB1dFtuYW1lXQorICAgICAgICAgICAgY29uZGl0aW9uYWwgPSBlbnRyeS5nZXQo
J2NvbmRpdGlvbmFsJywgTm9uZSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgorICAgICAg
ICAgICAgICAgIHdyaXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCisgICAgICAgICAgICB3cml0
ZShmJyAgICAgICAge3sgXCJ7bmFtZX1cIl9zLCB7eyBFdmVudFR5cGU6OntuYW1lfSwge3sgJykK
KyAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBlbnRyeS5nZXQoJ2NhdGVnb3JpZXMnLCBbXSkKKyAg
ICAgICAgICAgIGlmIGNhdGVnb3JpZXM6CisgICAgICAgICAgICAgICAgZm9yIGNhdGVnb3J5IGlu
IGNhdGVnb3JpZXNbOi0xXToKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoZidFdmVudENhdGVn
b3J5Ojp7Y2F0ZWdvcnl9LCAnKQorICAgICAgICAgICAgICAgIHdyaXRlKGYnRXZlbnRDYXRlZ29y
eTo6e2NhdGVnb3JpZXNbLTFdfSAnKQorICAgICAgICAgICAgd3JpdGUoJ30sICcpCisgICAgICAg
ICAgICBpZiBlbnRyeS5nZXQoJ2RlZmF1bHRFdmVudEhhbmRsZXInLCBGYWxzZSk6CisgICAgICAg
ICAgICAgICAgd3JpdGUoJ0V2ZW50VHlwZUluZm86OkRlZmF1bHRFdmVudEhhbmRsZXI6Olllcycp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdyaXRlKCdFdmVudFR5cGVJbmZv
OjpEZWZhdWx0RXZlbnRIYW5kbGVyOjpObycpCisgICAgICAgICAgICB3cml0ZWxuKCcgfSB9LCcp
CisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAgICAgICAgICB3cml0ZWxuKCcj
ZW5kaWYnKQorICAgICAgICB3cml0ZWxuKCcgICAgfSknKQogICAgICAgICB3cml0ZWxuKCcnJ3sg
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlJycnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcAppbmRleCBhYjFlOGYzZDVlMTcuLmZhOWFkOGU3YjE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE3Niw2ICsxNzYsMjEg
QEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICB9CiB9CiAKK05vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IEhUTUxQbHVnSW5FbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKQoreworICAgIGF1dG8gcmVzdWx0ID0gSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cisg
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgZG9jdW1l
bnQoKS5kaWRDb25uZWN0UGx1Z2luRWxlbWVudCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7Cisg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KQorICAgICAgICBkb2N1bWVudCgpLmRpZERpc2Nvbm5lY3RQbHVnaW5F
bGVtZW50KCk7Cit9CisKIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIEZpcmVmb3ggc2VlbXMgdG8gdXNlIGEgZmFrZSBl
dmVudCBsaXN0ZW5lciB0byBkaXNwYXRjaCBldmVudHMgdG8gcGx1Zy1pbiAodGVzdGVkIHdpdGgg
bW91c2UgZXZlbnRzIG9ubHkpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
CmluZGV4IDBkYWUyZmU0YTRlYy4uZjI0NGY4NTVmMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCkBAIC04NCw2ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0
b3I8QXRvbVN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgcGFy
YW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRE9NV2luZG93LmNwcAppbmRleCAzMGNh
YTQ4OTZlMzQuLjM5MWUyNTk0NTg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbERPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAKQEAgLTQyMSw4ICs0MjEsMTggQEAgTG9jYWxET01XaW5kb3c6OkxvY2FsRE9NV2luZG93
KERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBMb2NhbERPTVdpbmRvdzo6ZGlkU2VjdXJlVHJh
bnNpdGlvblRvKERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBSZWZQdHIgb2xkRG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBvYnNl
cnZlQ29udGV4dCgmZG9jdW1lbnQpOwogCisgICAgZnByaW50ZihzdGRlcnIsICJMb2NhbERPTVdp
bmRvdzo6ZGlkU2VjdXJlVHJhbnNpdGlvblRvIHRoaXM9JXBcbiIsIHRoaXMpOworICAgIGlmIChh
dXRvKiBldmVudFRhcmdldERhdGEgPSB0aGlzLT5ldmVudFRhcmdldERhdGEoKSkgeworICAgICAg
ICBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZW51bWVyYXRlRXZlbnRMaXN0ZW5l
clR5cGVzKFsmXShhdXRvJiBldmVudFR5cGUsIHVuc2lnbmVkIGNvdW50KSB7CisgICAgICAgICAg
ICBpZiAob2xkRG9jdW1lbnQpCisgICAgICAgICAgICAgICAgb2xkRG9jdW1lbnQtPmRpZFJlbW92
ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSwgY291bnQpOworICAgICAgICAgICAgZG9j
dW1lbnQuZGlkQWRkRXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7CisgICAg
ICAgIH0pOworICAgIH0KKwogICAgIC8vIFRoZSBXaW5kb3cgaXMgYmVpbmcgdHJhbnNmZXJyZWQg
ZnJvbSBvbmUgZG9jdW1lbnQgdG8gYW5vdGhlciBzbyB3ZSBuZWVkIHRvIHJlc2V0IGRhdGEKICAg
ICAvLyBtZW1iZXJzIHRoYXQgc3RvcmUgdGhlIHdpbmRvdydzIGRvY3VtZW50IChyYXRoZXIgdGhh
biB0aGUgd2luZG93IGl0c2VsZikuCiAgICAgbV9jcnlwdG8gPSBudWxscHRyOwpAQCAtNTI1LDYg
KzUzNSw3IEBAIHZvaWQgTG9jYWxET01XaW5kb3c6OndpbGxEZXRhY2hEb2N1bWVudEZyb21GcmFt
ZSgpCiAgICAgICAgIG9ic2VydmVyLndpbGxEZXRhY2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKTsK
ICAgICB9KTsKIAorCiAgICAgaWYgKFJlZlB0ciBwZXJmb3JtYW5jZSA9IG1fcGVyZm9ybWFuY2Up
CiAgICAgICAgIHBlcmZvcm1hbmNlLT5jbGVhclJlc291cmNlVGltaW5ncygpOwogCkBAIC0yMDQ3
LDQ3ICsyMDU4LDYwIEBAIGJvb2wgTG9jYWxET01XaW5kb3c6OmlzU2FtZVNlY3VyaXR5T3JpZ2lu
QXNNYWluRnJhbWUoKSBjb25zdAogCiBib29sIExvY2FsRE9NV2luZG93OjphZGRFdmVudExpc3Rl
bmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgUmVmPEV2ZW50TGlzdGVuZXI+JiYgbGlz
dGVuZXIsIGNvbnN0IEFkZEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogeworICAgIGZw
cmludGYoc3RkZXJyLCAiTG9jYWxET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIgdGhpcz0lcCBl
dmVudFR5cGU9JXNcbiIsIHRoaXMsIGV2ZW50VHlwZS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7
CiAgICAgaWYgKCFFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIFdURk1v
dmUobGlzdGVuZXIpLCBvcHRpb25zKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVm
UHRyIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKTsKICAgICBhdXRvJiBldmVudE5hbWVzID0g
V2ViQ29yZTo6ZXZlbnROYW1lcygpOworICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5
cGVJbmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKICAgICBpZiAoZG9jdW1lbnQpIHsKLSAgICAgICAg
ZG9jdW1lbnQtPmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGV2ZW50VHlwZSk7Ci0gICAgICAgIGlm
IChldmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJMb2NhbERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lciBkaWRBZGRFdmVudExp
c3RlbmVyc09mVHlwZSB0aGlzPSVwIGRvY3VtZW50PSVwXG4iLCB0aGlzLCBkb2N1bWVudC5nZXQo
KSk7CisgICAgICAgIGRvY3VtZW50LT5kaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShldmVudFR5
cGUpOworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Oldo
ZWVsKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5kaWRBZGRXaGVlbEV2ZW50SGFuZGxlcigqZG9j
dW1lbnQpOwotICAgICAgICBlbHNlIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5
cGUsICpkb2N1bWVudCkpCisgICAgICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBl
KHR5cGVJbmZvLCAqZG9jdW1lbnQpKQogICAgICAgICAgICAgZG9jdW1lbnQtPmRpZEFkZFRvdWNo
RXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7CiAgICAgICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzLnN0b3JhZ2VFdmVudCkKICAgICAgICAgICAgIGRpZEFkZFN0b3JhZ2VFdmVudExp
c3RlbmVyKCp0aGlzKTsKICAgICB9CiAKLSAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMu
dW5sb2FkRXZlbnQpCisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2
ZW50VHlwZTo6dW5sb2FkOgogICAgICAgICBhZGRVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOwot
ICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmJlZm9yZXVubG9hZEV2ZW50ICYm
IGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVycyh0aGlzKSkKLSAgICAgICAgYWRkQmVmb3JlVW5s
b2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5
cGU6OmJlZm9yZXVubG9hZDoKKyAgICAgICAgaWYgKGFsbG93c0JlZm9yZVVubG9hZExpc3RlbmVy
cyh0aGlzKSkKKyAgICAgICAgICAgIGFkZEJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7
CisgICAgICAgIGJyZWFrOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpCisgICAgY2FzZSBFdmVudFR5cGU6
OnNjcm9sbDoKICAgICAgICAgaW5jcmVtZW50U2Nyb2xsRXZlbnRMaXN0ZW5lcnNDb3VudCgpOwor
ICAgICAgICBicmVhazsKICNlbmRpZgorI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCisg
ICAgY2FzZSBFdmVudFR5cGU6OmRldmljZW9yaWVudGF0aW9uOgorICAgICAgICBzdGFydExpc3Rl
bmluZ0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBFdmVudFR5cGU6OmRldmljZW1vdGlvbjoKKyAgICAgICAgc3RhcnRMaXN0ZW5pbmdG
b3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2FyeSgpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAg
IGRlZmF1bHQ6CiAjaWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgZWxzZSBpZiAoZG9j
dW1lbnQgJiYgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1lbnQpKQot
ICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICBp
ZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpkb2N1bWVudCkpCisgICAgICAg
ICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwogI2VuZGlmCiAjaWYg
RU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKLSAgICBlbHNlIGlmIChldmVudE5hbWVzLmlzR2Vz
dHVyZUV2ZW50VHlwZShldmVudFR5cGUpKQotICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZl
bnRMaXN0ZW5lckNvdW50OworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6Okdlc3R1cmUpKQorICAgICAgICAgICAgKyttX3RvdWNoQW5kR2VzdHVyZUV2ZW50
TGlzdGVuZXJDb3VudDsKICNlbmRpZgogI2lmIEVOQUJMRShHQU1FUEFEKQotICAgIGVsc2UgaWYg
KGV2ZW50TmFtZXMuaXNHYW1lcGFkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGluY3Jl
bWVudEdhbWVwYWRFdmVudExpc3RlbmVyQ291bnQoKTsKLSNlbmRpZgotI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCi0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuZGV2
aWNlb3JpZW50YXRpb25FdmVudCkKLSAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JEZXZpY2VPcmll
bnRhdGlvbklmTmVjZXNzYXJ5KCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuZGV2aWNlbW90aW9uRXZlbnQpCi0gICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9yRGV2aWNlTW90
aW9uSWZOZWNlc3NhcnkoKTsKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpHYW1lcGFkKSkKKyAgICAgICAgICAgIGluY3JlbWVudEdhbWVwYWRFdmVudExp
c3RlbmVyQ291bnQoKTsKICNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTIyOTEsNDggKzIzMTUsNjIgQEAgdm9pZCBMb2NhbERPTVdpbmRvdzo6
cmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb24oKQogCiBib29sIExvY2FsRE9NV2luZG93Ojpy
ZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYgbGlzdGVuZXIsIGNvbnN0IEV2ZW50TGlzdGVuZXJPcHRpb25zJiBvcHRpb25zKQogewor
ICAgIGZwcmludGYoc3RkZXJyLCAiTG9jYWxET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXIg
dGhpcz0lcCBldmVudFR5cGU9JXNcbiIsIHRoaXMsIGV2ZW50VHlwZS5zdHJpbmcoKS5hc2NpaSgp
LmRhdGEoKSk7CiAgICAgaWYgKCFFdmVudFRhcmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zLmNhcHR1cmUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBSZWZQdHIgZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGF1dG8mIGV2
ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CisgICAgYXV0byB0eXBlSW5mbyA9IGV2
ZW50TmFtZXMudHlwZUluZm9Gb3JFdmVudChldmVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudCkg
ewotICAgICAgICBpZiAoZXZlbnROYW1lcy5pc1doZWVsRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisg
ICAgICAgIGZwcmludGYoc3RkZXJyLCAiTG9jYWxET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVu
ZXIgZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUgdGhpcz0lcCBkb2N1bWVudD0lcFxuIiwg
dGhpcywgZG9jdW1lbnQuZ2V0KCkpOworICAgICAgICBkb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRM
aXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlKTsKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRl
Z29yeShFdmVudENhdGVnb3J5OjpXaGVlbCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZGlkUmVt
b3ZlV2hlZWxFdmVudEhhbmRsZXIoKmRvY3VtZW50KTsKLSAgICAgICAgZWxzZSBpZiAoaXNUb3Vj
aFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1lbnQpKQorICAgICAgICBlbHNlIGlm
IChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlSW5mbywgKmRvY3VtZW50KSkKICAgICAgICAg
ICAgIGRvY3VtZW50LT5kaWRSZW1vdmVUb3VjaEV2ZW50SGFuZGxlcigqZG9jdW1lbnQpOwogICAg
IH0KIAotICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy51bmxvYWRFdmVudCkKKyAgICBz
d2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgeworICAgIGNhc2UgRXZlbnRUeXBlOjp1bmxvYWQ6CiAg
ICAgICAgIHJlbW92ZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3JlVW5s
b2FkTGlzdGVuZXJzKHRoaXMpKQotICAgICAgICByZW1vdmVCZWZvcmVVbmxvYWRFdmVudExpc3Rl
bmVyKHRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6YmVmb3JldW5s
b2FkOgorICAgICAgICBpZiAoYWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKHRoaXMpKQorICAg
ICAgICAgICAgcmVtb3ZlQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAg
YnJlYWs7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbHNlIGlmIChldmVudFR5cGUg
PT0gZXZlbnROYW1lcy5zY3JvbGxFdmVudCkKKyAgICBjYXNlIEV2ZW50VHlwZTo6c2Nyb2xsOgog
ICAgICAgICBkZWNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CisgICAgICAgIGJy
ZWFrOwogI2VuZGlmCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICBjYXNlIEV2
ZW50VHlwZTo6ZGV2aWNlb3JpZW50YXRpb246CisgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZp
Y2VPcmllbnRhdGlvbklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZl
bnRUeXBlOjpkZXZpY2Vtb3Rpb246CisgICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rp
b25JZk5lY2Vzc2FyeSgpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIGRlZmF1bHQ6CiAj
aWYgRU5BQkxFKElPU19UT1VDSF9FVkVOVFMpCi0gICAgZWxzZSBpZiAoZG9jdW1lbnQgJiYgaXNU
b3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqZG9jdW1lbnQpKSB7Ci0gICAgICAgIEFT
U0VSVChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudCA+IDApOwotICAgICAgICAt
LW1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwotICAgIH0KKyAgICAgICAgaWYg
KGRvY3VtZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqZG9jdW1lbnQp
KSB7CisgICAgICAgICAgICBBU1NFUlQobV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291
bnQgPiAwKTsKKyAgICAgICAgICAgIC0tbV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291
bnQ7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpCi0g
ICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc0dlc3R1cmVFdmVudFR5cGUoZXZlbnRUeXBlKSkgewot
ICAgICAgICBBU1NFUlQobV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQgPiAwKTsK
LSAgICAgICAgLS1tX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKLSAgICB9Cisg
ICAgICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6R2VzdHVyZSkp
IHsKKyAgICAgICAgICAgIEFTU0VSVChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3Vu
dCA+IDApOworICAgICAgICAgICAgLS1tX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3Vu
dDsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgZWxzZSBpZiAo
ZXZlbnROYW1lcy5pc0dhbWVwYWRFdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAgZGVjcmVt
ZW50R2FtZXBhZEV2ZW50TGlzdGVuZXJDb3VudCgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFVklD
RV9PUklFTlRBVElPTikKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZp
Y2VvcmllbnRhdGlvbkV2ZW50KQotICAgICAgICBzdG9wTGlzdGVuaW5nRm9yRGV2aWNlT3JpZW50
YXRpb25JZk5lY2Vzc2FyeSgpOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LmRldmljZW1vdGlvbkV2ZW50KQotICAgICAgICBzdG9wTGlzdGVuaW5nRm9yRGV2aWNlTW90aW9u
SWZOZWNlc3NhcnkoKTsKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENh
dGVnb3J5OjpHYW1lcGFkKSkKKyAgICAgICAgICAgIGRlY3JlbWVudEdhbWVwYWRFdmVudExpc3Rl
bmVyQ291bnQoKTsKICNlbmRpZgorICAgICAgICBicmVhazsKKyAgICB9CiAKICAgICByZXR1cm4g
dHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcAppbmRleCA0NDQ1YzU4YTQzMDUuLjQ2YWJlNDJk
NDM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmNwcApAQCAtOTU1LDcgKzk1NSw3IEBAIGJvb2wgUXVp
cmtzOjpzaG91bGRCeXBhc3NBc3luY1NjcmlwdERlZmVycmluZygpIGNvbnN0CiB9CiAKIC8vIHNt
b290aHNjcm9sbCBKUyBsaWJyYXJ5IHJkYXI6Ly81MjcxMjUxMwotYm9vbCBRdWlya3M6OnNob3Vs
ZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZShjb25zdCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQs
IGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkKK2Jvb2wgUXVpcmtzOjpzaG91bGRNYWtlRXZl
bnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBF
dmVudFR5cGVJbmZvJiBldmVudFR5cGUpCiB7CiAgICAgYXV0byBldmVudFRhcmdldElzUm9vdCA9
IFtdKGNvbnN0IEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCkgewogICAgICAgICBpZiAoaXM8TG9j
YWxET01XaW5kb3c+KGV2ZW50VGFyZ2V0KSkKQEAgLTk3Miw3ICs5NzIsNyBAQCBib29sIFF1aXJr
czo6c2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiBldmVu
dFRhcmdldCwgY29ucwogICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KGV2ZW50VGFy
Z2V0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgfTsKIAotICAgIGlmIChldmVudE5h
bWVzKCkuaXNUb3VjaFNjcm9sbEJsb2NraW5nRXZlbnRUeXBlKGV2ZW50VHlwZSkpIHsKKyAgICBp
ZiAoZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpUb3VjaFNjcm9sbEJsb2Nr
aW5nKSkgewogICAgICAgICBpZiAoZXZlbnRUYXJnZXRJc1Jvb3QoZXZlbnRUYXJnZXQpKSB7CiAg
ICAgICAgICAgICBpZiAoYXV0byogZG9jdW1lbnQgPSBkb2N1bWVudEZyb21FdmVudFRhcmdldChl
dmVudFRhcmdldCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5zZXR0aW5ncygp
LnBhc3NpdmVUb3VjaExpc3RlbmVyc0FzRGVmYXVsdE9uRG9jdW1lbnQoKTsKQEAgLTk4MCw3ICs5
ODAsNyBAQCBib29sIFF1aXJrczo6c2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0
IEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29ucwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCi0gICAgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVsRXZlbnRUeXBlKGV2ZW50VHlwZSkp
IHsKKyAgICBpZiAoZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpXaGVlbCkp
IHsKICAgICAgICAgaWYgKGV2ZW50VGFyZ2V0SXNSb290KGV2ZW50VGFyZ2V0KSkgewogICAgICAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50ID0gZG9jdW1lbnRGcm9tRXZlbnRUYXJnZXQoZXZlbnRU
YXJnZXQpKQogICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC0+c2V0dGluZ3MoKS5wYXNz
aXZlV2hlZWxMaXN0ZW5lcnNBc0RlZmF1bHRPbkRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuaApp
bmRleCA2MDVmNmNmZDRlZTIuLjU4MTcyMmFmN2MyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0z
NSw2ICszNSw3IEBAIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEV2ZW50
TGlzdGVuZXI7CiBjbGFzcyBFdmVudFRhcmdldDsKK2NsYXNzIEV2ZW50VHlwZUluZm87CiBjbGFz
cyBIVE1MRWxlbWVudDsKIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBMYXlvdXRVbml0
OwpAQCAtMTEzLDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZEJ5cGFzc0JhY2tG
b3J3YXJkQ2FjaGUoKSBjb25zdDsKICAgICBib29sIHNob3VsZEJ5cGFzc0FzeW5jU2NyaXB0RGVm
ZXJyaW5nKCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgYm9vbCBzaG91bGRNYWtlRXZlbnRMaXN0ZW5l
clBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUp
OworICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZShjb25zdCBF
dmVudFRhcmdldCYsIGNvbnN0IEV2ZW50VHlwZUluZm8mIGV2ZW50VHlwZSk7CiAKICNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQogICAgIGJvb2wgc2hvdWxkRW5hYmxlTGVnYWN5R2V0VXNlck1lZGlh
UXVpcmsoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKaW5kZXggYTc5ZjIxYzdhZjAyLi5jMGEwMWE2ODE0MTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC02MjYsNyAr
NjI2LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVFdmVudChFdmVudCYgZXZlbnQpCiAgICAg
ICAgICAgICBmcmFtZS0+ZXZlbnRIYW5kbGVyKCkuc2V0Q2FwdHVyaW5nTW91c2VFdmVudHNFbGVt
ZW50KG51bGxwdHIpOwogCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRs
ZU1vdXNlRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCY+KCpjdXJyZW50RXZl
bnQpKTsKLSAgICB9IGVsc2UgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVsRXZlbnRUeXBlKGV2ZW50
LnR5cGUoKSkgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnRUeXBlOjpXaGVlbCkK
KyAgICB9IGVsc2UgaWYgKChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLndoZWVsRXZlbnQg
fHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3VzZXdoZWVsRXZlbnQpICYmIGN1cnJl
bnRFdmVudC0+dHlwZSgpID09IFdlYkV2ZW50VHlwZTo6V2hlZWwpCiAgICAgICAgIGRpZEhhbmRs
ZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZVdoZWVsRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
V2hlZWxFdmVudCY+KCpjdXJyZW50RXZlbnQpKTsKICAgICBlbHNlIGlmIChldmVudC50eXBlKCkg
PT0gZXZlbnROYW1lcygpLm1vdXNlb3ZlckV2ZW50ICYmIGN1cnJlbnRFdmVudC0+dHlwZSgpID09
IFdlYkV2ZW50VHlwZTo6TW91c2VNb3ZlKQogICAgICAgICBkaWRIYW5kbGVFdmVudCA9IG1fcGx1
Z2luLT5oYW5kbGVNb3VzZUVudGVyRXZlbnQoc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVu
dCY+KCpjdXJyZW50RXZlbnQpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469325</attachid>
            <date>2024-01-07 01:07:14 -0800</date>
            <delta_ts>2024-01-07 01:37:23 -0800</delta_ts>
            <desc>WIP3 with logging 2</desc>
            <filename>event-type-info-early-return-3-logging-2.patch</filename>
            <type>text/plain</type>
            <size>57863</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZTI4MTRkMWU0NC4uZDk4NzU1ZWYxNDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3MzAsMzggKzU3MzAsNzMgQEAgYm9vbCBEb2N1
bWVudDo6aGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZl
bnRUeXBlKSBjb25zdAogdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJD
b3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLkRPTVN1
YnRyZWVNb2RpZmllZEV2ZW50KQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJ
bmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjpET01TdWJ0cmVlTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTVN1YnRyZWVNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZUluc2VydGVkRXZlbnQpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWQ6CiAgICAgICAgIGFkZExp
c3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRFdmVudCkKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkOgogICAgICAgICBhZGRMaXN0
ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3ZlZCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50OgogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVk
RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01DaGFyYWN0ZXJE
YXRhTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTUNo
YXJhY3RlckRhdGFNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMub3ZlcmZsb3djaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjpvdmVyZmxvd2NoYW5nZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5
cGU6Ok92ZXJmbG93Q2hhbmdlZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuc2Nyb2xsRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpzY3Jv
bGw6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OlNjcm9sbCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdp
bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vm
b3JjZXdpbGxiZWdpbjoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9y
Y2VXaWxsQmVnaW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLndlYmtp
dG1vdXNlZm9yY2VjaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjp3ZWJraXRtb3VzZWZvcmNlY2hhbmdlZDoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExp
c3RlbmVyVHlwZTo6Rm9yY2VDaGFuZ2VkKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy53ZWJraXRtb3VzZWZvcmNlZG93bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vmb3JjZWRvd246CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlRG93bik7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXVwRXZlbnQpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXZlbnRUeXBlOjp3ZWJraXRtb3VzZWZvcmNldXA6CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlVXApOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzLmZvY3VzaW5FdmVudCkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5
cGU6OmZvY3VzaW46CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkZvY3Vz
SW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmZvY3Vzb3V0RXZlbnQp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpmb2N1c291dDoKICAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9jdXNPdXQpOwotICAgIGVsc2UgaWYgKGV2
ZW50TmFtZXMuaXNDU1NUcmFuc2l0aW9uRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOwotICAgIGVsc2UgaWYg
KGV2ZW50TmFtZXMuaXNDU1NBbmltYXRpb25FdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Q1NTQW5pbWF0aW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpDU1NUcmFuc2l0aW9uKSkKKyAgICAgICAgICAgIGFkZExpc3RlbmVyVHlwZShM
aXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOworICAgICAgICBlbHNlIGlmICh0eXBlSW5mby5p
c0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6Q1NTQW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU0FuaW1hdGlvbik7CisgICAgfQorfQorCit2
b2lkIERvY3VtZW50OjpkaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb3VudCk7CisgICAg
YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
ZXZlbnRMaXN0ZW5lckNvdW50cy5mYXN0QWRkKGV2ZW50VHlwZSwgMCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkUmVtb3ZlRXZl
bnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCB1bnNpZ25lZCBj
b3VudCkKK3sKKyAgICBBU1NFUlQoY291bnQpOworICAgIEFTU0VSVChtX2V2ZW50TGlzdGVuZXJD
b3VudHMuY29udGFpbnMoZXZlbnRUeXBlKSk7CisgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5l
ckNvdW50cy5maW5kKGV2ZW50VHlwZSk7CisgICAgQVNTRVJUKGl0LT52YWx1ZSA+PSBjb3VudCk7
CisgICAgaXQtPnZhbHVlIC09IGNvdW50OwogfQogCiBIVE1MRnJhbWVPd25lckVsZW1lbnQqIERv
Y3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNGFm
ZWRlYzQzZDIuLjVlNTgwNDhkMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0xpc3RIYXNoU2V0Lmg+CkBAIC0xMDIw
LDYgKzEwMjEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRU
eXBlKFBsYXRmb3JtRXZlbnRUeXBlKSBjb25zdDsKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlm
TmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAKKyAgICB2b2lkIGRpZEFkZEV2
ZW50TGlzdGVuZXJzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmLCB1bnNpZ25lZCA9IDEpOworICAg
IHZvaWQgZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYsIHVu
c2lnbmVkID0gMSk7CisgICAgYm9vbCBoYXNFdmVudExpc3RuZXJzT2ZUeXBlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lckNvdW50cy5pbmxpbmVH
ZXQodHlwZSk7IH0KKworICAgIGJvb2wgaGFzQ29ubmVjdGVkUGx1Z2luRWxlbWVudHMoKSB7IHJl
dHVybiBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRDb3VudDsgfQorICAgIHZvaWQgZGlkQ29ubmVj
dFBsdWdpbkVsZW1lbnQoKSB7ICsrbV9jb25uZWN0ZWRQbHVnaW5FbGVtZW50Q291bnQ7IH0KKyAg
ICB2b2lkIGRpZERpc2Nvbm5lY3RQbHVnaW5FbGVtZW50KCkgeyBBU1NFUlQobV9jb25uZWN0ZWRQ
bHVnaW5FbGVtZW50Q291bnQpOyAtLW1fY29ubmVjdGVkUGx1Z2luRWxlbWVudENvdW50OyB9CisK
ICAgICBpbmxpbmUgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNv
bnN0IHsgcmV0dXJuICFtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5pc0VtcHR5KCk7IH0KICAgICB2
b2lkIGFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBl
cykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5hZGQodHlwZXMpOyB9CkBAIC0yMzQzLDYgKzIz
NTIsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGF0YUxpc3RFbGVtZW50Q291bnQgeyAw
IH07CiAKICAgICBPcHRpb25TZXQ8TGlzdGVuZXJUeXBlPiBtX2xpc3RlbmVyVHlwZXM7CisgICAg
TWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgdW5zaWduZWQ+IG1fZXZl
bnRMaXN0ZW5lckNvdW50czsKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRD
b3VudCB7IDAgfTsKKwogICAgIHVuc2lnbmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQgeyAwIH07
CiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xh
c3RTdHlsZVVwZGF0ZVNpemVGb3JUZXN0aW5nIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcAppbmRleCBiMmY4YWRmMjQyNWIuLjI3YzVjMzg0MzIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0NSw2ICsxNDUsMTggQEAgc3RhdGlj
IEhUTUxJbnB1dEVsZW1lbnQqIGZpbmRJbnB1dEVsZW1lbnRJbkV2ZW50UGF0aChjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoZG9jdW1lbnQuaGFzRXZlbnRMaXN0bmVyc09mVHlwZShldmVudC50eXBl
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gbGVnYWN5VHlwZSA9IEV2ZW50
VGFyZ2V0OjpsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIGlmICghbGVnYWN5VHlwZS5p
c051bGwoKSAmJiBkb2N1bWVudC5oYXNFdmVudExpc3RuZXJzT2ZUeXBlKGxlZ2FjeVR5cGUpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKG5vZGUpKTsK
QEAgLTE1NCwxMCArMTY2LDE1IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBSZWYgcHJvdGVjdGVkTm9kZSB7IG5vZGUg
fTsKICAgICBSZWZQdHIgcHJvdGVjdGVkVmlldyB7IG5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfTsK
IAorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzKCkudHlwZUluZm9Gb3JFdmVudChldmVu
dC50eXBlKCkpOworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudFRvU2NyaXB0cyA9IGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihub2RlLmRvY3VtZW50KCksIGV2ZW50KTsKKyAgICBpZiAoIXNo
b3VsZERpc3BhdGNoRXZlbnRUb1NjcmlwdHMgJiYgIXR5cGVJbmZvLmhhc0RlZmF1bHRFdmVudEhh
bmRsZXIoKSAmJiAhbm9kZS5kb2N1bWVudCgpLmhhc0Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRzKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIEV2ZW50UGF0aCBldmVudFBhdGggeyBub2RlLCBldmVu
dCB9OwogCiAgICAgaWYgKG5vZGUuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnNlbmRNb3VzZUV2ZW50
c1RvRGlzYWJsZWRGb3JtQ29udHJvbHNFbmFibGVkKCkgJiYgZXZlbnQuaXNUcnVzdGVkKCkgJiYg
ZXZlbnQuaXNNb3VzZUV2ZW50KCkKLSAgICAgICAgJiYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8IGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkpIHsKKyAgICAgICAgJiYg
KHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6Om1vdXNlZG93biB8fCB0eXBlSW5mby50eXBl
KCkgPT0gRXZlbnRUeXBlOjptb3VzZXVwIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6
OmNsaWNrIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6OmRibGNsaWNrKSkgewogICAg
ICAgICBldmVudFBhdGguYWRqdXN0Rm9yRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KIApA
QCAtMTkxLDcgKzIwOCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5v
ZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgaW5wdXRGb3JMZWdhY3lQcmVBY3RpdmF0
aW9uQmVoYXZpb3ItPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUp
OwogICAgIH0KIAotICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSkgeworICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSAmJiBzaG91bGREaXNwYXRjaEV2ZW50VG9TY3JpcHRzKSB7CiAgICAgICAgIGV2ZW50
LnNldEV2ZW50UGF0aChldmVudFBhdGgpOwogICAgICAgICBkaXNwYXRjaEV2ZW50SW5ET00oZXZl
bnQsIGV2ZW50UGF0aCk7CiAgICAgfQpAQCAtMjA0LDcgKzIyMSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAvLyBD
YWxsIGRlZmF1bHQgZXZlbnQgaGFuZGxlcnMuIFdoaWxlIHRoZSBET00gZG9lcyBoYXZlIGEgY29u
Y2VwdCBvZiBwcmV2ZW50aW5nCiAgICAgLy8gZGVmYXVsdCBoYW5kbGluZywgdGhlIGRldGFpbCBv
ZiB3aGljaCBoYW5kbGVycyBhcmUgY2FsbGVkIGlzIGFuIGludGVybmFsCiAgICAgLy8gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIGFuZCBub3QgcGFydCBvZiB0aGUgRE9NLgotICAgIGlmICghZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZCgpICYmICFldmVudC5kZWZhdWx0SGFuZGxlZCgpICYmICFldmVudC5p
c0RlZmF1bHRFdmVudEhhbmRsZXJJZ25vcmVkKCkpIHsKKyAgICBpZiAodHlwZUluZm8uaGFzRGVm
YXVsdEV2ZW50SGFuZGxlcigpICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkgJiYgIWV2ZW50
LmRlZmF1bHRIYW5kbGVkKCkgJiYgIWV2ZW50LmlzRGVmYXVsdEV2ZW50SGFuZGxlcklnbm9yZWQo
KSkgewogICAgICAgICAvLyBGSVhNRTogTm90IGNsZWFyIHdoeSB3ZSBuZWVkIHRvIHJlc2V0IHRo
ZSB0YXJnZXQgZm9yIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXJzLgogICAgICAgICAvLyBXZSBz
aG91bGQgcmVzZWFyY2ggdGhpcywgYW5kIHJlbW92ZSB0aGlzIGNvZGUgaWYgcG9zc2libGUuCiAg
ICAgICAgIFJlZlB0ciBmaW5hbFRhcmdldCA9IGV2ZW50LnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggNTVlNjE5NTI5MTg5Li4xMWM1NmI5NTI5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNjcsNiArNjcsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXJNYXAq
Pih0aGlzKS0+ZmluZChldmVudFR5cGUpOyB9CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50
VHlwZXMoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+Cisg
ICAgdm9pZCBlbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoQ2FsbGJhY2tUeXBlIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykKKyAgICAgICAg
ICAgIGNhbGxiYWNrKGVudHJ5LmZpcnN0LCBlbnRyeS5zZWNvbmQuc2l6ZSgpKTsKKyAgICB9CisK
ICAgICB2b2lkIHJlbW92ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgdm9pZCBjb3B5RXZlbnRMaXN0ZW5lcnNOb3RD
cmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0KEV2ZW50VGFyZ2V0Kik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5qc29uIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuanNvbgppbmRleCBhYzE1ZjkyYWRlNzQuLmI0MTJmNGE0NDRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5qc29uCkBAIC0xLDUgKzEsNSBAQAogewotICAgICJET01BY3Rp
dmF0ZSI6IHsidHlwZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl19LAorICAgICJET01BY3RpdmF0
ZSI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRI
YW5kbGVyIjogdHJ1ZSB9LAogICAgICJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiOiB7IH0sCiAg
ICAgIkRPTUNvbnRlbnRMb2FkZWQiOiB7IH0sCiAgICAgIkRPTU5vZGVJbnNlcnRlZCI6IHsgfSwK
QEAgLTE0LDEwICsxNCwxMCBAQAogICAgICJhZGRzdHJlYW0iOiB7IH0sCiAgICAgImFkZHRyYWNr
IjogeyB9LAogICAgICJhZnRlcnByaW50IjogeyB9LAotICAgICJhbmltYXRpb25jYW5jZWwiOiB7
InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgImFuaW1hdGlvbmVuZCI6IHsidHlwZXMi
OiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyJ0eXBlcyI6
IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJhbmltYXRpb25zdGFydCI6IHsidHlwZXMiOiBbIkNT
U0FuaW1hdGlvbiJdfSwKKyAgICAiYW5pbWF0aW9uY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyAiY2F0ZWdvcmll
cyI6IFsiQ1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uc3RhcnQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAogICAgICJhdWRpb2VuZCI6IHsgfSwKICAgICAiYXVk
aW9wcm9jZXNzIjogeyB9LAogICAgICJhdWRpb3N0YXJ0IjogeyB9LApAQCAtMzcsNyArMzcsNyBA
QAogICAgICJiZWZvcmV1bmxvYWQiOiB7IH0sCiAgICAgImJlZ2luRXZlbnQiOiB7IH0sCiAgICAg
ImJsb2NrZWQiOiB7IH0sCi0gICAgImJsdXIiOiB7IH0sCisgICAgImJsdXIiOiB7ICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJib3VuZGFyeSI6IHsgfSwKICAgICAiYnVmZmVy
ZWRhbW91bnRsb3ciOiB7IH0sCiAgICAgImJ1ZmZlcmVkY2hhbmdlIjogeyB9LApAQCAtNDksNyAr
NDksNyBAQAogICAgICJjaGFyZ2luZ2NoYW5nZSI6IHsgfSwKICAgICAiY2hhcmdpbmd0aW1lY2hh
bmdlIjogeyB9LAogICAgICJjaGVja2luZyI6IHsgfSwKLSAgICAiY2xpY2siOiB7InR5cGVzIjog
WyJNb3VzZUNsaWNrUmVsYXRlZCJdfSwKKyAgICAiY2xpY2siOiB7ICJjYXRlZ29yaWVzIjogWyJN
b3VzZUNsaWNrUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAi
Y2xvc2UiOiB7IH0sCiAgICAgImNsb3NpbmciOiB7IH0sCiAgICAgImNvbXBsZXRlIjogeyB9LApA
QCAtNjEsNyArNjEsNyBAQAogICAgICJjb25uZWN0aW9uc3RhdGVjaGFuZ2UiOiB7IH0sCiAgICAg
ImNvbm5lY3RpbmciOiB7IH0sCiAgICAgImNvbnRlbnR2aXNpYmlsaXR5YXV0b3N0YXRlY2hhbmdl
IjogeyB9LAotICAgICJjb250ZXh0bWVudSI6IHsgfSwKKyAgICAiY29udGV4dG1lbnUiOiB7ICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJjb250cm9sbGVyY2hhbmdlIjogeyB9
LAogICAgICJjb29raWVjaGFuZ2UiOiB7IH0sCiAgICAgImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2Ui
OiB7IH0sCkBAIC03Miw3ICs3Miw3IEBACiAgICAgImN1dCI6IHsgfSwKICAgICAiZGF0YWF2YWls
YWJsZSI6IHsgfSwKICAgICAiZGF0YWNoYW5uZWwiOiB7IH0sCi0gICAgImRibGNsaWNrIjogeyB9
LAorICAgICJkYmxjbGljayI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAg
ImRlcXVldWUiOiB7IH0sCiAgICAgImRldmljZWNoYW5nZSI6IHsgfSwKICAgICAiZGV2aWNlbW90
aW9uIjogeyB9LApAQCAtMTAxLDIxICsxMDEsMjEgQEAKICAgICAiZXhpdCI6IHsgfSwKICAgICAi
ZmV0Y2giOiB7IH0sCiAgICAgImZpbmlzaCI6IHsgfSwKLSAgICAiZm9jdXMiOiB7IH0sCisgICAg
ImZvY3VzIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAiZm9jdXNpbiI6
IHsgfSwKICAgICAiZm9jdXNvdXQiOiB7IH0sCiAgICAgImZvcm1kYXRhIjogeyB9LAogICAgICJm
dWxsc2NyZWVuY2hhbmdlIjogeyB9LAogICAgICJmdWxsc2NyZWVuZXJyb3IiOiB7IH0sCi0gICAg
ImdhbWVwYWRjb25uZWN0ZWQiOiB7InR5cGVzIjogWyJHYW1lcGFkIl19LAotICAgICJnYW1lcGFk
ZGlzY29ubmVjdGVkIjogeyJ0eXBlcyI6IFsiR2FtZXBhZCJdfSwKKyAgICAiZ2FtZXBhZGNvbm5l
Y3RlZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdhbWVwYWQiXSB9LAorICAgICJnYW1lcGFkZGlzY29u
bmVjdGVkIjogeyAiY2F0ZWdvcmllcyI6IFsiR2FtZXBhZCJdIH0sCiAgICAgImdhdGhlcmluZ3N0
YXRlY2hhbmdlIjogeyB9LAotICAgICJnZXN0dXJlY2hhbmdlIjogeyJ0eXBlcyI6IFsiR2VzdHVy
ZSJdfSwKLSAgICAiZ2VzdHVyZWVuZCI6IHsidHlwZXMiOiBbIkdlc3R1cmUiXX0sCisgICAgImdl
c3R1cmVjaGFuZ2UiOiB7ICJjYXRlZ29yaWVzIjogWyJHZXN0dXJlIl0gfSwKKyAgICAiZ2VzdHVy
ZWVuZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9LAogICAgICJnZXN0dXJlc2Nyb2xs
ZW5kIjogeyB9LAogICAgICJnZXN0dXJlc2Nyb2xsc3RhcnQiOiB7IH0sCiAgICAgImdlc3R1cmVz
Y3JvbGx1cGRhdGUiOiB7IH0sCi0gICAgImdlc3R1cmVzdGFydCI6IHsidHlwZXMiOiBbIkdlc3R1
cmUiXX0sCisgICAgImdlc3R1cmVzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9
LAogICAgICJnZXN0dXJldGFwIjogeyB9LAogICAgICJnZXN0dXJldGFwZG93biI6IHsgfSwKICAg
ICAiZ290cG9pbnRlcmNhcHR1cmUiOiB7IH0sCkBAIC0xMzAsMTAgKzEzMCwxMCBAQAogICAgICJp
bnN0YWxsIjogeyB9LAogICAgICJpbnZhbGlkIjogeyB9LAogICAgICJpbnZva2UiOiB7IH0sCi0g
ICAgImtleWRvd24iOiB7IH0sCi0gICAgImtleXByZXNzIjogeyB9LAorICAgICJrZXlkb3duIjog
eyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAia2V5cHJlc3MiOiB7ICJkZWZh
dWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJrZXlzdGF0dXNlc2NoYW5nZSI6IHsgfSwK
LSAgICAia2V5dXAiOiB7IH0sCisgICAgImtleXVwIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6
IHRydWUgfSwKICAgICAibGFuZ3VhZ2VjaGFuZ2UiOiB7IH0sCiAgICAgImxlYXZlcGljdHVyZWlu
cGljdHVyZSI6IHsgfSwKICAgICAibGV2ZWxjaGFuZ2UiOiB7IH0sCkBAIC0xNTAsMTQgKzE1MCwx
NCBAQAogICAgICJtZXJjaGFudHZhbGlkYXRpb24iOiB7IH0sCiAgICAgIm1lc3NhZ2UiOiB7IH0s
CiAgICAgIm1lc3NhZ2VlcnJvciI6IHsgfSwKLSAgICAibW91c2Vkb3duIjogeyJ0eXBlcyI6IFsi
TW91c2VDbGlja1JlbGF0ZWQiLCAiU2ltdWxhdGVkTW91c2UiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgIm1vdXNlZG93biI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJtb3VzZWVudGVyIjogeyB9LAogICAgICJtb3Vz
ZWxlYXZlIjogeyB9LAotICAgICJtb3VzZW1vdmUiOiB7InR5cGVzIjogWyJNb3VzZU1vdmVSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJt
b3VzZW91dCI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNlb3Zl
ciI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNldXAiOiB7InR5
cGVzIjogWyJNb3VzZUNsaWNrUmVsYXRlZCIsICJTaW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRv
dWNoUmVsYXRlZCJdfSwKLSAgICAibW91c2V3aGVlbCI6IHsidHlwZXMiOiBbIldoZWVsIl19LAor
ICAgICJtb3VzZW1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1vdmVSZWxhdGVkIiwgIlNp
bXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5k
bGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZW91dCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlTW92
ZVJlbGF0ZWQiXSB9LAorICAgICJtb3VzZW92ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1v
dmVSZWxhdGVkIl0gfSwKKyAgICAibW91c2V1cCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xp
Y2tSZWxhdGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZXdoZWVsIjogeyAiY2F0ZWdv
cmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgIm11
dGUiOiB7IH0sCiAgICAgIm5hdmlnYXRlIjogeyB9LAogICAgICJuYXZpZ2F0ZWVycm9yIjogeyB9
LApAQCAtMTg2LDE0ICsxODYsMTQgQEAKICAgICAicGxheWluZyI6IHsgfSwKICAgICAicG9pbnRl
cmxvY2tjaGFuZ2UiOiB7IH0sCiAgICAgInBvaW50ZXJsb2NrZXJyb3IiOiB7IH0sCi0gICAgInBv
aW50ZXJjYW5jZWwiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJl
bGF0ZWQiXX0sCi0gICAgInBvaW50ZXJkb3duIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJwb2ludGVyZW50ZXIiOiB7InR5cGVzIjog
WyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJs
ZWF2ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJd
fSwKLSAgICAicG9pbnRlcm1vdmUiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5k
ZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdXQiOiB7InR5cGVzIjogWyJUb3VjaFJl
bGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdmVyIjogeyJ0
eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJw
b2ludGVydXAiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgInBvaW50ZXJjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0
ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVl
IH0sCisgICAgInBvaW50ZXJkb3duIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAor
ICAgICJwb2ludGVyZW50ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0
ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAg
InBvaW50ZXJsZWF2ZSI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAicG9p
bnRlcm1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3Vj
aFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJv
dXQiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJvdmVyIjog
eyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0s
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVydXAiOiB7ICJjYXRl
Z29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1
bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgInBvcHN0YXRlIjogeyB9LAogICAgICJwcmV2
aW91c3RyYWNrIjogeyB9LAogICAgICJwcm9jZXNzb3JlcnJvciI6IHsgfSwKQEAgLTI1MywyMSAr
MjUzLDIxIEBACiAgICAgInN1Ym1pdCI6IHsgfSwKICAgICAic3VjY2VzcyI6IHsgfSwKICAgICAi
c3VzcGVuZCI6IHsgfSwKLSAgICAidGV4dElucHV0IjogeyB9LAorICAgICJ0ZXh0SW5wdXQiOiB7
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0aW1lb3V0IjogeyB9LAogICAg
ICJ0aW1ldXBkYXRlIjogeyB9LAogICAgICJ0b2dnbGUiOiB7IH0sCiAgICAgInRvbmVjaGFuZ2Ui
OiB7IH0sCi0gICAgInRvdWNoY2FuY2VsIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4
dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJ0b3VjaGVuZCI6IHsidHlwZXMiOiBbIlRvdWNo
UmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAidG91Y2hmb3JjZWNoYW5n
ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwK
LSAgICAidG91Y2htb3ZlIjogeyJ0eXBlcyI6IFsiVG91Y2hTY3JvbGxCbG9ja2luZyIsICJUb3Vj
aFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInRvdWNoc3RhcnQiOiB7
InR5cGVzIjogWyJUb3VjaFNjcm9sbEJsb2NraW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdfSwKKyAgICAidG91Y2hjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJU
b3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRs
ZXIiOiB0cnVlIH0sCisgICAgInRvdWNoZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaGZvcmNlY2hhbmdlIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaG1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFNjcm9sbEJsb2Nr
aW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2
ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAidG91Y2hzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBb
IlRvdWNoU2Nyb2xsQmxvY2tpbmciLCAiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxh
dGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0cmFjayI6IHsgfSwK
LSAgICAidHJhbnNpdGlvbmNhbmNlbCI6IHsidHlwZXMiOiBbIkNTU1RyYW5zaXRpb24iXX0sCi0g
ICAgInRyYW5zaXRpb25lbmQiOiB7InR5cGVzIjogWyJDU1NUcmFuc2l0aW9uIl19LAotICAgICJ0
cmFuc2l0aW9ucnVuIjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKLSAgICAidHJhbnNp
dGlvbnN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKKyAgICAidHJhbnNpdGlv
bmNhbmNlbCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU1RyYW5zaXRpb24iXSB9LAorICAgICJ0cmFu
c2l0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCisgICAgInRy
YW5zaXRpb25ydW4iOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9uIl0gfSwKKyAgICAi
dHJhbnNpdGlvbnN0YXJ0IjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCiAg
ICAgInVuY2FwdHVyZWRlcnJvciI6IHsgfSwKICAgICAidW5oYW5kbGVkcmVqZWN0aW9uIjogeyB9
LAogICAgICJ1bmxvYWQiOiB7IH0sCkBAIC0yODgsMTEgKzI4OCwxMSBAQAogICAgICJ3ZWJnbGNv
bnRleHRjcmVhdGlvbmVycm9yIjogeyB9LAogICAgICJ3ZWJnbGNvbnRleHRsb3N0IjogeyB9LAog
ICAgICJ3ZWJnbGNvbnRleHRyZXN0b3JlZCI6IHsgfSwKLSAgICAid2Via2l0QW5pbWF0aW9uRW5k
IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRBbmltYXRpb25JdGVy
YXRpb24iOiB7InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgIndlYmtpdEFuaW1hdGlv
blN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRCZWZvcmVU
ZXh0SW5zZXJ0ZWQiOiB7IH0sCi0gICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7InR5cGVzIjog
WyJDU1NUcmFuc2l0aW9uIl19LAorICAgICJ3ZWJraXRBbmltYXRpb25FbmQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRpb25JdGVyYXRpb24i
OiB7ICJjYXRlZ29yaWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRp
b25TdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU0FuaW1hdGlvbiJdIH0sCisgICAgIndlYmtp
dEJlZm9yZVRleHRJbnNlcnRlZCI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisg
ICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9u
Il0gfSwKICAgICAid2Via2l0YmVnaW5mdWxsc2NyZWVuIjogeyB9LAogICAgICJ3ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCI6IHsgfSwKICAgICAid2Via2l0ZW5k
ZnVsbHNjcmVlbiI6IHsgfSwKQEAgLTMxMyw3ICszMTMsNyBAQAogICAgICJ3ZWJraXRzb3VyY2Vj
bG9zZSI6IHsgfSwKICAgICAid2Via2l0c291cmNlZW5kZWQiOiB7IH0sCiAgICAgIndlYmtpdHNv
dXJjZW9wZW4iOiB7IH0sCi0gICAgIndoZWVsIjogeyJ0eXBlcyI6IFsiV2hlZWwiXX0sCisgICAg
IndoZWVsIjogeyAiY2F0ZWdvcmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIi
OiB0cnVlIH0sCiAgICAgIndyaXRlIjogeyB9LAogICAgICJ3cml0ZWVuZCI6IHsgfSwKICAgICAi
d3JpdGVzdGFydCI6IHsgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDVkNDRm
MTc0NTM2Yi4uNGFmYTFkZmRkMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAg
LTkyLDcgKzkyLDggQEAgYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmUKIAogICAgIGF1dG8gcGFzc2l2
ZSA9IG9wdGlvbnMucGFzc2l2ZTsKIAotICAgIGlmICghcGFzc2l2ZS5oYXNfdmFsdWUoKSAmJiBR
dWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZSgqdGhpcywgZXZlbnRUeXBlKSkK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcygpLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRU
eXBlKTsKKyAgICBpZiAoIXBhc3NpdmUuaGFzX3ZhbHVlKCkgJiYgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3NpdmUoKnRoaXMsIHR5cGVJbmZvKSkKICAgICAgICAgcGFzc2l2ZSA9
IHRydWU7CiAKICAgICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBbJl0gewpAQCAt
MTEzLDcgKzExNCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAgICAgaWYgKGxpc3RlbmVy
Q3JlYXRlZEZyb21TY3JpcHQpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
QWRkRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lci5nZXQoKSwgb3B0aW9u
cy5jYXB0dXJlKTsKIAotICAgIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVu
dFR5cGUpKQorICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hl
ZWwpKQogICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgIGV2
ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCk7CkBAIC0xNTcsNyArMTU4LDcgQEAgYm9vbCBFdmVudFRh
cmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVFdmVu
dExpc3RlbmVyKCp0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zLmNhcHR1cmUpOwog
CiAgICAgaWYgKGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAucmVtb3ZlKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMuY2FwdHVyZSkpIHsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVs
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgICAgIGlmIChldmVudE5hbWVzKCkudHlwZUluZm9G
b3JFdmVudChldmVudFR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpXaGVlbCkpCiAg
ICAgICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgICAgICBl
dmVudExpc3RlbmVyc0RpZENoYW5nZSgpOwpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgRXZlbnRU
YXJnZXQ6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogfQogCi1zdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCitjb25zdCBB
dG9tU3RyaW5nJiBFdmVudFRhcmdldDo6bGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50JiBl
dmVudCkKIHsKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5hbmltYXRpb25lbmRFdmVudCkKQEAg
LTMwNyw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZl
bnQmIGV2ZW50LCBFdmVudEludm9rZVBoYXNlIHBoYXNlKQogICAgIGlmICghZXZlbnQuaXNUcnVz
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5
cGVOYW1lID0gbGVnYWN5VHlwZShldmVudCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5
VHlwZU5hbWUgPSBsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIGlmICghbGVnYWN5VHlw
ZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGxlZ2FjeUxpc3RlbmVyc1ZlY3Rv
ciA9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChsZWdhY3lUeXBlTmFtZSkpIHsKICAgICAg
ICAgICAgIEF0b21TdHJpbmcgdHlwZU5hbWUgPSBldmVudC50eXBlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCmluZGV4IGQwOWU4Nzg1MTg2Zi4uNjA3NzA1ODUxNDc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50
Jik7CisKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uZXZlbnQiIGF0dHJpYnV0ZXMuCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNNYXliZUVycm9yRXZlbnRMaXN0ZW5lcj4KICAgICB2b2lkIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBKU0M6
OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIGpzRXZlbnRUYXJnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDQzYzFkNGNkZDFiYi4uMjgzMDAwN2YzMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yMjE1LDEyICsyMjE1LDEyIEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICB0
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+cmVtb3ZlTm9kZSgqdGhpcyk7CiAKICAgICBpZiAo
YXV0byogZXZlbnRUYXJnZXREYXRhID0gdGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKLSAgICAg
ICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKLSAgICAgICAgaWYg
KCFldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAu
ZXZlbnRUeXBlcygpKQotICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKHR5cGUpOwotICAgICAgICB9CisgICAgICAgIGV2ZW50VGFyZ2V0RGF0YS0+ZXZl
bnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1dG8mIGV2ZW50
VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92
ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSwgY291bnQpOworICAgICAgICAgICAgbmV3
RG9jdW1lbnQuZGlkQWRkRXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7Cisg
ICAgICAgIH0pOwogCisgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5h
bWVzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMubW91c2V3aGVlbEV2ZW50KS5zaXplKCkgKyBldmVudExpc3RlbmVy
cyhldmVudE5hbWVzLndoZWVsRXZlbnQpLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7CiAgICAgICAgICAgICBvbGRE
b2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CkBAIC0yMjc1LDI5ICsy
Mjc1LDE0IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICBlbGVtZW50LT5kaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCi1ib29sIGlzVG91
Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZl
bnRUYXJnZXQmIHRhcmdldCkKK2Jvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgRXZl
bnRUeXBlSW5mbyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KQogewotICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0KSAmJiBkb3duY2FzdDxOb2RlPih0
YXJnZXQpLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2
ZW50cygmdGFyZ2V0KSkgewotICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91
c2Vkb3duRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2Vtb3ZlRXZlbnQgfHwg
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2V1cEV2ZW50KQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQorICAgIGlmIChpczxOb2RlPih0YXJnZXQpICYmIGRvd25jYXN0PE5vZGU+
KHRhcmdldCkuZG9jdW1lbnQoKS5xdWlya3MoKS5zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNl
RXZlbnRzKCZ0YXJnZXQpKQorICAgICAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpFeHRlbmRlZFRvdWNoUmVsYXRlZCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKLSAgICByZXR1cm4gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hz
dGFydEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNobW92ZUV2
ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNoZW5kRXZlbnQKLSAg
ICAgICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hjYW5jZWxFdmVudAotICAgICAg
ICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaGZvcmNlY2hhbmdlRXZlbnQKLSAgICAg
ICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMucG9pbnRlcm92ZXJFdmVudAotICAgICAgICB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZW50ZXJFdmVudAotICAgICAgICB8fCBl
dmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZG93bkV2ZW50Ci0gICAgICAgIHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnBvaW50ZXJtb3ZlRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMucG9pbnRlcnVwRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMucG9pbnRlcm91dEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzLnBvaW50ZXJsZWF2ZUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnBvaW50ZXJjYW5jZWxFdmVudDsKKyAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpUb3VjaFJlbGF0ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5
QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTIzMDUsMzAgKzIyOTAsMzEgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnQKICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCBvcHRpb25zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZChldmVudFR5cGUpOworICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkQWRk
RXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlKTsKIAogICAgIGF1dG8mIGV2ZW50TmFtZXMg
PSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50
VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJbmZv
Rm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRX
aGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0
ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisgICAgZWxzZSBpZiAoaXNUb3Vj
aFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0g
ICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tSZWxhdGVkRXZlbnRUeXBlKGV2ZW50
VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6
Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRB
ZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXROb2RlKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50
KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpIHsKKyAgICBpZiAodGFy
Z2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiB0eXBlSW5mby50eXBlKCkgPT0g
RXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRhcmdldE5v
ZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmluY3JlbWVu
dFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJn
ZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJn
ZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50TGlz
dGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisg
ICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHZXN0dXJlKSkKICAg
ICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0
Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjM0NSwzMCArMjMzMSwzMyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3Ry
aW5nJiBldgogICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNP
ZlR5cGUoZXZlbnRUeXBlKTsKKwogICAgIC8vIEZJWE1FOiBOb3RpZnkgRG9jdW1lbnQgdGhhdCB0
aGUgbGlzdGVuZXIgaGFzIHZhbmlzaGVkLiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgYSBudW1i
ZXIgb2YKICAgICAvLyBsaXN0ZW5lcnMgZm9yIGVhY2ggdHlwZSwgbm90IGp1c3QgYSBib29sIC0g
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg2MQogICAgIGF1
dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFt
ZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVu
dE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJ
bkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9j
dW1lbnQoKS5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxz
ZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisg
ICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2Rl
KSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFu
ZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tS
ZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNh
dGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXRO
b2RlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0g
JnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xs
RXZlbnQpIHsKKyAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAm
JiB0eXBlSW5mby50eXBlKCkgPT0gRXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1
dG8qIHdpbmRvdyA9IHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAg
ICAgICB3aW5kb3ctPmRlY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICp0YXJnZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVu
dFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1l
bnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVO
VFMpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJl
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpHZXN0dXJlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5yZW1v
dmVUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjU0MiwyOCAr
MjUzMSwzNiBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byYgZXZlbnRUeXBlID0gZXZlbnQudHlwZSgpOwogICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLmtleWRvd25FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5rZXlwcmVzc0V2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmtleXVwRXZlbnQpIHsK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlw
ZSk7CisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50VHlwZTo6
a2V5ZG93bjoKKyAgICBjYXNlIEV2ZW50VHlwZTo6a2V5cHJlc3M6CisgICAgY2FzZSBFdmVudFR5
cGU6OmtleXVwOgogICAgICAgICBpZiAoUmVmUHRyIGtleWJvYXJkRXZlbnQgPSBkeW5hbWljRG93
bmNhc3Q8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyIGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS5kZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoKmtleWJvYXJkRXZlbnQpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5jbGlja0V2ZW50
KSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpjbGljazoKICAgICAgICAg
ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5jb250ZXh0bWVudUV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6OmNvbnRleHRtZW51Ogog
ICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7
CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnRleHRJbnB1dEV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6
OnRleHRJbnB1dDoKICAgICAgICAgaWYgKFJlZlB0ciB0ZXh0RXZlbnQgPSBkeW5hbWljRG93bmNh
c3Q8VGV4dEV2ZW50PihldmVudCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHIgZnJhbWUgPSBk
b2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LmRlZmF1bHRUZXh0SW5wdXRFdmVudEhhbmRsZXIoKnRleHRFdmVudCk7CiAgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgfSBlbHNlIGlmIChh
dXRvKiBtb3VzZUV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91
c2VFdmVudCAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5tb3VzZWRvd25FdmVudCkgewotICAg
ICAgICBpZiAobW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTW91c2VCdXR0b246Ok1pZGRsZSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZWRvd246CisgICAgICAgIGlmIChhdXRvKiBtb3VzZUV2
ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91c2VFdmVudCAmJiBv
dXNlRXZlbnQtPmJ1dHRvbigpID09IE1vdXNlQnV0dG9uOjpNaWRkbGUpIHsKICAgICAgICAgICAg
IGlmIChlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI1NzYsNDUgKzI1NzMsNTQgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGF1dG8qIHdo
ZWVsRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpOyB3aGVlbEV2ZW50
ICYmIGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKSB7Ci0gICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhl
IGZpcnN0IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCi0gICAgICAgIC8vIFRoaXMgaXMg
bmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxzZWxl
Y3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCi0gICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7
Ci0gICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OworICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZXdoZWVsOgorICAgIGNhc2UgRXZlbnRUeXBlOjp3
aGVlbDoKKyAgICAgICAgQVNTRVJUKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5
OjpXaGVlbCkpOworICAgICAgICBpZiAoYXV0byogd2hlZWxFdmVudCA9IGR5bmFtaWNEb3duY2Fz
dDxXaGVlbEV2ZW50PihldmVudCk7IHdoZWVsRXZlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIHdl
IGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhlIGZpcnN0
IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCisgICAgICAgICAgICAvLyBUaGlzIGlzIG5l
ZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0
PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgorICAgICAgICAgICAgTm9kZSogc3RhcnROb2RlID0gdGhp
czsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2Rl
LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
V2hlZWxFdmVudEhhbmRsZXIoUmVmUHRyIHsgc3RhcnROb2RlIH0uZ2V0KCksICp3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRXaGVlbEV2
ZW50SGFuZGxlcihSZWZQdHIgeyBzdGFydE5vZGUgfS5nZXQoKSwgKndoZWVsRXZlbnQpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB9IGVsc2Ug
aWYgKGF1dG8qIHRvdWNoRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8VG91Y2hFdmVudD4oZXZlbnQp
OyB0b3VjaEV2ZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRoaXMp
KSB7Ci0gICAgICAgIC8vIENhcHR1cmUgdGhlIHRhcmdldCBub2RlJ3MgdmlzaWJpbGl0eSBzdGF0
ZSBiZWZvcmUgZGlzcGF0Y2hpbmcgdG91Y2hTdGFydC4KLSAgICAgICAgaWYgKGF1dG8qIGVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzLnRvdWNoc3RhcnRFdmVudCkgeworICAgICAgICBpZiAoYXV0byogdG91
Y2hFdmVudCA9IGR5bmFtaWNEb3duY2FzdDxUb3VjaEV2ZW50PihldmVudCk7IHRvdWNoRXZlbnQg
JiYgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0aGlzKSkgeworICAgICAgICAg
ICAgLy8gQ2FwdHVyZSB0aGUgdGFyZ2V0IG5vZGUncyB2aXNpYmlsaXR5IHN0YXRlIGJlZm9yZSBk
aXNwYXRjaGluZyB0b3VjaFN0YXJ0LgorICAgICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIHR5cGVJbmZvLnR5cGUo
KSA9PSBFdmVudFR5cGU6OnRvdWNoc3RhcnQpIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9DSEFOR0Vf
T0JTRVJWRVIpCi0gICAgICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBkb2N1
bWVudCgpLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwotICAgICAgICAgICAgaWYgKENvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhpcykpCi0gICAgICAgICAgICAgICAg
Y29udGVudENoYW5nZU9ic2VydmVyLnNldEhpZGRlblRvdWNoVGFyZ2V0KCplbGVtZW50KTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVz
ZXRIaWRkZW5Ub3VjaFRhcmdldCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFu
Z2VPYnNlcnZlciA9IGRvY3VtZW50KCkuY29udGVudENoYW5nZU9ic2VydmVyKCk7CisgICAgICAg
ICAgICAgICAgaWYgKENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhp
cykpCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zZXRIaWRkZW5U
b3VjaFRhcmdldCgqZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVzZXRIaWRkZW5Ub3VjaFRhcmdldCgpOwog
I2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICAgICAgZm9yICg7IHJlbmRlcmVyOyBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgYXV0byogcmVuZGVy
Qm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKLSAgICAgICAgICAg
IGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBm
b3IgKDsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJl
bmRlcmVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94ICYmIHJlbmRlckJveC0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
bm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFt
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRUb3Vj
aEV2ZW50SGFuZGxlcigqcmVuZGVyZXJOb2RlLCAqdG91Y2hFdmVudCk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChS
ZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0VG91Y2hFdmVudEhhbmRsZXIoKnJlbmRl
cmVyTm9kZSwgKnRvdWNoRXZlbnQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMjYzMCwx
NCArMjYzNiwxNSBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBj
b25zdAogI2VuZGlmCiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMo
KTsKICAgICByZXR1cm4gZXZlbnRUeXBlcygpLmNvbnRhaW5zSWYoWyZdKGNvbnN0IGF1dG8mIHR5
cGUpIHsKLSAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMuaXNNb3VzZU1vdmVSZWxhdGVkRXZlbnRU
eXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KHR5
cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZU1vdmVSZWxhdGVkKTsKICAgICB9
KTsKIH0KIAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSBjb25zdAogewor
ICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgcmV0dXJu
IGV2ZW50VHlwZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Ci0gICAgICAg
IHJldHVybiBpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlLCAqdGhpcyk7CisgICAgICAgIHJl
dHVybiBldmVudE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQodHlwZSkuaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OlRvdWNoUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTI2NzMsNyArMjY4MCw3
IEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHNXaXRoRWRpdGFiaWxp
dHkoRWRpdGFiaWxpdHkgZWRpdGFiaWxpdHkpCiAKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2Vi
Q29yZTo6ZXZlbnROYW1lcygpOwogICAgIHJldHVybiBldmVudFR5cGVzKCkuY29udGFpbnNJZihb
Jl0oY29uc3QgYXV0byYgdHlwZSkgewotICAgICAgICByZXR1cm4gZXZlbnROYW1lcy5pc01vdXNl
Q2xpY2tSZWxhdGVkRXZlbnRUeXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50
eXBlSW5mb0ZvckV2ZW50KHR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZUNs
aWNrUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDM4ZDA1NDEwODllMS4u
ZmM4OGM3NjBlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxl
bWVudDsKK2NsYXNzIEV2ZW50VHlwZUluZm87CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSFRN
TFF1YWxpZmllZE5hbWU7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CkBAIC03NzIsNyArNzczLDcg
QEAgdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9y
ZGVyKGNvbnN0IE5vZGUmLCBjb25zdCBOb2QKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpwYXJ0aWFs
X29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IE5vZGUmLCBjb25z
dCBOb2RlJik7CiAKLWJvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYpOworYm9vbCBpc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShjb25zdCBFdmVudFR5cGVJbmZvJiwgY29uc3QgRXZlbnRUYXJnZXQmKTsKIAogI2lm
IEFTU0VSVF9FTkFCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2UtZXZlbnQtbmFtZXMucHkKaW5k
ZXggYWQ4MmJjNjUyZmQ5Li5mNzM4MDI0YzA1ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlLWV2ZW50LW5hbWVzLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5CkBAIC03MiwzOSArNzIsODkgQEAgZGVmIG1haW4oKToKICNpbmNsdWRlICJU
aHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNs
YXNzIEV2ZW50VHlwZSA6IHVpbnQxNl90IHsKKyAgICBjdXN0b20gPSAwLCcnJykKKworICAgICAg
ICBjYXRlZ29yeV9tYXAgPSB7fQorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZXZlbnRfbmFt
ZXNfaW5wdXQua2V5cygpKToKKyAgICAgICAgICAgIGVudHJ5ID0gZXZlbnRfbmFtZXNfaW5wdXRb
bmFtZV0KKyAgICAgICAgICAgIGZvciBldmVudF9jYXRlZ29yeSBpbiBlbnRyeS5nZXQoJ2NhdGVn
b3JpZXMnLCBbXSk6CisgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwLnNldGRlZmF1bHQoZXZl
bnRfY2F0ZWdvcnksIFtdKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5X21hcFtldmVudF9jYXRl
Z29yeV0uYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBjb25kaXRpb25hbCA9IGVudHJ5LmdldCgn
Y29uZGl0aW9uYWwnLCBOb25lKQorICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6CisgICAgICAg
ICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9JykKKyAgICAgICAgICAgIHdyaXRl
bG4oZicgICAge25hbWV9LCcpCisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAg
ICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQorCisgICAgICAgIHdyaXRlbG4oJycnfTsKKworZW51
bSBjbGFzcyBFdmVudENhdGVnb3J5IDogdWludDE2X3QgeycnJykKKworICAgICAgICBiaXRfc2hp
ZnQgPSAwCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFwLmtleXMo
KSk6CisgICAgICAgICAgICB3cml0ZWxuKGYnICAgIHtjYXRlZ29yeX0gPSAxdSA8PCB7Yml0X3No
aWZ0fSwnKQorICAgICAgICAgICAgYml0X3NoaWZ0ICs9IDEKKworICAgICAgICB3cml0ZWxuKCcn
J307CisKK2NsYXNzIEV2ZW50VHlwZUluZm8geworcHVibGljOgorICAgIGVudW0gY2xhc3MgRGVm
YXVsdEV2ZW50SGFuZGxlciA6IGJvb2wgeyBObywgWWVzIH07CisKKyAgICBFdmVudFR5cGVJbmZv
KCkKKyAgICAgICAgOiBtX3R5cGUoRXZlbnRUeXBlOjpjdXN0b20pCisgICAgeyB9CisKKyAgICBF
dmVudFR5cGVJbmZvKEV2ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT4gY2F0
ZWdvcmllcywgRGVmYXVsdEV2ZW50SGFuZGxlciBkZWZhdWx0RXZlbnRIYW5kbGVyKQorICAgICAg
ICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fY2F0ZWdvcmllcyhjYXRlZ29yaWVzLnRvUmF3
KCkpCisgICAgICAgICwgbV9oYXNEZWZhdWx0RXZlbnRIYW5kbGVyKGRlZmF1bHRFdmVudEhhbmRs
ZXIgPT0gRGVmYXVsdEV2ZW50SGFuZGxlcjo6WWVzKQorICAgIHsgfQorCisgICAgRXZlbnRUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmVudFR5cGU+KG1fdHlwZSk7IH0K
KyAgICBib29sIGlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5IGNhdGVnb3J5KSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT46OmZyb21SYXcobV9jYXRlZ29yaWVzKS5jb250
YWlucyhjYXRlZ29yeSk7IH0KKyAgICBib29sIGhhc0RlZmF1bHRFdmVudEhhbmRsZXIoKSBjb25z
dCB7IHJldHVybiBtX2hhc0RlZmF1bHRFdmVudEhhbmRsZXI7IH0KKworcHJpdmF0ZToKKyAgICBF
dmVudFR5cGUgbV90eXBlOworICAgIHVpbnQxNl90IG1fY2F0ZWdvcmllcyA6IDE1OworICAgIHVp
bnQxNl90IG1faGFzRGVmYXVsdEV2ZW50SGFuZGxlciA6IDE7Cit9OworCiBzdHJ1Y3QgRXZlbnRO
YW1lcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnROYW1lcyk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotCiBwdWJsaWM6JycnKQotICAgICAgICB0eXBlX21hcCA9IHt9CisKICAg
ICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGV2ZW50X25hbWVzX2lucHV0LmtleXMoKSk6CiAgICAg
ICAgICAgICBlbnRyeSA9IGV2ZW50X25hbWVzX2lucHV0W25hbWVdCiAgICAgICAgICAgICBjb25k
aXRpb25hbCA9IGVudHJ5LmdldCgnY29uZGl0aW9uYWwnLCBOb25lKQogICAgICAgICAgICAgaWYg
Y29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9
JykKICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgY29uc3QgQXRvbVN0cmluZyB7bmFtZX1FdmVu
dDsnKQotICAgICAgICAgICAgZm9yIGV2ZW50X3R5cGUgaW4gZW50cnkuZ2V0KCd0eXBlcycsIFtd
KToKLSAgICAgICAgICAgICAgICB0eXBlX21hcC5zZXRkZWZhdWx0KGV2ZW50X3R5cGUsIFtdKQot
ICAgICAgICAgICAgICAgIHR5cGVfbWFwW2V2ZW50X3R5cGVdLmFwcGVuZChuYW1lKQogICAgICAg
ICAgICAgaWYgY29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbignI2VuZGlmJykK
IAogICAgICAgICB3cml0ZWxuKCcnJworICAgIEV2ZW50VHlwZUluZm8gdHlwZUluZm9Gb3JFdmVu
dChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisKICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdz
PgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVz
PihuZXcgRXZlbnROYW1lcyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9Jycn
KQogCi0gICAgICAgIGZvciBldmVudF90eXBlIGluIHNvcnRlZCh0eXBlX21hcC5rZXlzKCkpOgot
ICAgICAgICAgICAgd3JpdGVsbignJykKLSAgICAgICAgICAgIHdyaXRlbG4oZicgICAgaW5saW5l
IGJvb2wgaXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Oycp
Ci0gICAgICAgICAgICBuYW1lX2NvdW50ID0gbGVuKHR5cGVfbWFwW2V2ZW50X3R5cGVdKQotICAg
ICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5n
LCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGV2ZW50X3R5cGUpfUV2ZW50
TmFtZXMoKSBjb25zdDsnKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3J5
X21hcC5rZXlzKCkpOgorICAgICAgICAgICAgbmFtZV9jb3VudCA9IGxlbihjYXRlZ29yeV9tYXBb
Y2F0ZWdvcnldKQorICAgICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxj
b25zdCBBdG9tU3RyaW5nLCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNh
dGVnb3J5KX1FdmVudE5hbWVzKCkgY29uc3Q7JykKIAogICAgICAgICB3cml0ZWxuKCcnKQogICAg
ICAgICB3cml0ZWxuKGYnICAgIGlubGluZSBzdGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHts
ZW4oZXZlbnRfbmFtZXNfaW5wdXQpfT4gYWxsRXZlbnROYW1lcygpIGNvbnN0OycpCkBAIC0xMTIs
NiArMTYyLDggQEAgcHVibGljOicnJykKICAgICAgICAgd3JpdGVsbignJycKIHByaXZhdGU6CiAg
ICAgRXZlbnROYW1lcygpOworCisgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPEF0b21TdHJpbmcsIEV2ZW50VHlwZUluZm8+IG1fdHlwZUluZm9NYXA7CiB9OwogCiBj
b25zdCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CkBAIC0xMTksMjggKzE3MSwxOCBAQCBjb25z
dCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CiBpbmxpbmUgY29uc3QgRXZlbnROYW1lcyYgZXZl
bnROYW1lcygpCiB7CiAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5ldmVudE5hbWVzKCk7
Cit9CisKK2lubGluZSBFdmVudFR5cGVJbmZvIEV2ZW50TmFtZXM6OnR5cGVJbmZvRm9yRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGVJ
bmZvTWFwLmlubGluZUdldChldmVudFR5cGUpOwogfScnJykKIAotICAgICAgICBmb3IgZXZlbnRf
dHlwZSBpbiBzb3J0ZWQodHlwZV9tYXAua2V5cygpKToKLSAgICAgICAgICAgIG5hbWVzID0gdHlw
ZV9tYXBbZXZlbnRfdHlwZV0KLSAgICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4odHlwZV9tYXBb
ZXZlbnRfdHlwZV0pCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFw
LmtleXMoKSk6CisgICAgICAgICAgICBuYW1lcyA9IGNhdGVnb3J5X21hcFtjYXRlZ29yeV0KKyAg
ICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4oY2F0ZWdvcnlfbWFwW2NhdGVnb3J5XSkKICAgICAg
ICAgICAgIHdyaXRlbG4oJycpCi0gICAgICAgICAgICB3cml0ZWxuKGYnaW5saW5lIGJvb2wgRXZl
bnROYW1lczo6aXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkg
Y29uc3QnKQotICAgICAgICAgICAgd3JpdGVsbigneycpCi0gICAgICAgICAgICAjIEZJWE1FOiBT
dXBwb3J0IGNvbmRpdGlvbmFscyBpbiB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgaXRlbS4KLSAgICAg
ICAgICAgIHdyaXRlbG4oZicgICAgcmV0dXJuIHR5cGUgPT0ge25hbWVzWzBdfUV2ZW50JykKLSAg
ICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzWzE6LTFdOgotICAgICAgICAgICAgICAgIGNvbmRp
dGlvbmFsID0gZXZlbnRfbmFtZXNfaW5wdXRbbmFtZV0uZ2V0KCdjb25kaXRpb25hbCcsIE5vbmUp
Ci0gICAgICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdy
aXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCi0gICAgICAgICAgICAgICAgd3JpdGVsbihmJyAg
ICAgICAgfHwgdHlwZSA9PSB7bmFtZX1FdmVudCcpCi0gICAgICAgICAgICAgICAgaWYgY29uZGl0
aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlbG4oZicjZW5kaWYnKQotICAgICAgICAg
ICAgaWYgbGVuKG5hbWVzKSA+PSAyOgotICAgICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgICAg
IHx8IHR5cGUgPT0ge25hbWVzWy0xXX1FdmVudDsnKQotICAgICAgICAgICAgd3JpdGVsbignfScp
Ci0gICAgICAgICAgICB3cml0ZWxuKCcnKQotICAgICAgICAgICAgd3JpdGVsbihmJ2lubGluZSBz
dGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHtuYW1lX2NvdW50fT4gRXZlbnROYW1lczo6e2xv
d2VyY2FzZV9maXJzdF9sZXR0ZXIoZXZlbnRfdHlwZSl9RXZlbnROYW1lcygpIGNvbnN0JykKKyAg
ICAgICAgICAgIHdyaXRlbG4oZidpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5nLCB7
bmFtZV9jb3VudH0+IEV2ZW50TmFtZXM6Ontsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNhdGVnb3J5
KX1FdmVudE5hbWVzKCkgY29uc3QnKQogICAgICAgICAgICAgd3JpdGVsbigneycpCiAgICAgICAg
ICAgICB3cml0ZWxuKCcgICAgcmV0dXJuIHsgeycpCiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBu
YW1lczoKQEAgLTIwOSw3ICsyNTEsMjcgQEAgRXZlbnROYW1lczo6RXZlbnROYW1lcygpJycnKQog
ICAgICAgICAgICAgZGVsaW1pdGVyID0gJywnCiAgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoK
ICAgICAgICAgICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQotCisgICAgICAgIHdyaXRlbG4oZicg
ICAge2RlbGltaXRlcn0gbV90eXBlSW5mb01hcCh7eycpCisgICAgICAgIGZvciBuYW1lIGluIHNv
cnRlZChldmVudF9uYW1lc19pbnB1dC5rZXlzKCkpOgorICAgICAgICAgICAgZW50cnkgPSBldmVu
dF9uYW1lc19pbnB1dFtuYW1lXQorICAgICAgICAgICAgY29uZGl0aW9uYWwgPSBlbnRyeS5nZXQo
J2NvbmRpdGlvbmFsJywgTm9uZSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgorICAgICAg
ICAgICAgICAgIHdyaXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCisgICAgICAgICAgICB3cml0
ZShmJyAgICAgICAge3sgXCJ7bmFtZX1cIl9zLCB7eyBFdmVudFR5cGU6OntuYW1lfSwge3sgJykK
KyAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBlbnRyeS5nZXQoJ2NhdGVnb3JpZXMnLCBbXSkKKyAg
ICAgICAgICAgIGlmIGNhdGVnb3JpZXM6CisgICAgICAgICAgICAgICAgZm9yIGNhdGVnb3J5IGlu
IGNhdGVnb3JpZXNbOi0xXToKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoZidFdmVudENhdGVn
b3J5Ojp7Y2F0ZWdvcnl9LCAnKQorICAgICAgICAgICAgICAgIHdyaXRlKGYnRXZlbnRDYXRlZ29y
eTo6e2NhdGVnb3JpZXNbLTFdfSAnKQorICAgICAgICAgICAgd3JpdGUoJ30sICcpCisgICAgICAg
ICAgICBpZiBlbnRyeS5nZXQoJ2RlZmF1bHRFdmVudEhhbmRsZXInLCBGYWxzZSk6CisgICAgICAg
ICAgICAgICAgd3JpdGUoJ0V2ZW50VHlwZUluZm86OkRlZmF1bHRFdmVudEhhbmRsZXI6Olllcycp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdyaXRlKCdFdmVudFR5cGVJbmZv
OjpEZWZhdWx0RXZlbnRIYW5kbGVyOjpObycpCisgICAgICAgICAgICB3cml0ZWxuKCcgfSB9LCcp
CisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAgICAgICAgICB3cml0ZWxuKCcj
ZW5kaWYnKQorICAgICAgICB3cml0ZWxuKCcgICAgfSknKQogICAgICAgICB3cml0ZWxuKCcnJ3sg
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlJycnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcAppbmRleCBhYjFlOGYzZDVlMTcuLmZhOWFkOGU3YjE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE3Niw2ICsxNzYsMjEg
QEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICB9CiB9CiAKK05vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IEhUTUxQbHVnSW5FbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKQoreworICAgIGF1dG8gcmVzdWx0ID0gSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cisg
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgZG9jdW1l
bnQoKS5kaWRDb25uZWN0UGx1Z2luRWxlbWVudCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7Cisg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KQorICAgICAgICBkb2N1bWVudCgpLmRpZERpc2Nvbm5lY3RQbHVnaW5F
bGVtZW50KCk7Cit9CisKIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIEZpcmVmb3ggc2VlbXMgdG8gdXNlIGEgZmFrZSBl
dmVudCBsaXN0ZW5lciB0byBkaXNwYXRjaCBldmVudHMgdG8gcGx1Zy1pbiAodGVzdGVkIHdpdGgg
bW91c2UgZXZlbnRzIG9ubHkpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
CmluZGV4IDBkYWUyZmU0YTRlYy4uZjI0NGY4NTVmMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCkBAIC04NCw2ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0
b3I8QXRvbVN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgcGFy
YW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRE9NV2luZG93LmNwcAppbmRleCAzMGNh
YTQ4OTZlMzQuLjA0OTdkMjU5MGQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbERPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAKQEAgLTQyMSw4ICs0MjEsMTggQEAgTG9jYWxET01XaW5kb3c6OkxvY2FsRE9NV2luZG93
KERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBMb2NhbERPTVdpbmRvdzo6ZGlkU2VjdXJlVHJh
bnNpdGlvblRvKERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBSZWZQdHIgb2xkRG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBvYnNl
cnZlQ29udGV4dCgmZG9jdW1lbnQpOwogCisgICAgZnByaW50ZihzdGRlcnIsICJMb2NhbERPTVdp
bmRvdzo6ZGlkU2VjdXJlVHJhbnNpdGlvblRvIHRoaXM9JXAgZXZlbnRUYXJnZXREYXRhPSRwXG4i
LCB0aGlzLCB0aGlzLT5ldmVudFRhcmdldERhdGEoKSk7CisgICAgaWYgKGF1dG8qIGV2ZW50VGFy
Z2V0RGF0YSA9IHRoaXMtPmV2ZW50VGFyZ2V0RGF0YSgpKSB7CisgICAgICAgIGV2ZW50VGFyZ2V0
RGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1
dG8mIGV2ZW50VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIGlmIChvbGREb2N1
bWVudCkKKyAgICAgICAgICAgICAgICBvbGREb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRMaXN0ZW5l
cnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7CisgICAgICAgICAgICBkb2N1bWVudC5kaWRBZGRF
dmVudExpc3RlbmVyc09mVHlwZShldmVudFR5cGUsIGNvdW50KTsKKyAgICAgICAgfSk7CisgICAg
fQorCiAgICAgLy8gVGhlIFdpbmRvdyBpcyBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIG9uZSBkb2N1
bWVudCB0byBhbm90aGVyIHNvIHdlIG5lZWQgdG8gcmVzZXQgZGF0YQogICAgIC8vIG1lbWJlcnMg
dGhhdCBzdG9yZSB0aGUgd2luZG93J3MgZG9jdW1lbnQgKHJhdGhlciB0aGFuIHRoZSB3aW5kb3cg
aXRzZWxmKS4KICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC01MjUsNiArNTM1LDcgQEAgdm9p
ZCBMb2NhbERPTVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50RnJvbUZyYW1lKCkKICAgICAgICAg
b2JzZXJ2ZXIud2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOwogICAgIH0pOwogCisK
ICAgICBpZiAoUmVmUHRyIHBlcmZvcm1hbmNlID0gbV9wZXJmb3JtYW5jZSkKICAgICAgICAgcGVy
Zm9ybWFuY2UtPmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7CiAKQEAgLTIwNDcsNDcgKzIwNTgsNjAg
QEAgYm9vbCBMb2NhbERPTVdpbmRvdzo6aXNTYW1lU2VjdXJpdHlPcmlnaW5Bc01haW5GcmFtZSgp
IGNvbnN0CiAKIGJvb2wgTG9jYWxET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgZnByaW50ZihzdGRlcnIs
ICJMb2NhbERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lciB0aGlzPSVwIGV2ZW50VHlwZT0lc1xu
IiwgdGhpcywgZXZlbnRUeXBlLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICBpZiAoIUV2
ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciks
IG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHIgZG9jdW1lbnQg
PSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVu
dE5hbWVzKCk7CisgICAgYXV0byB0eXBlSW5mbyA9IGV2ZW50TmFtZXMudHlwZUluZm9Gb3JFdmVu
dChldmVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudCkgewotICAgICAgICBkb2N1bWVudC0+YWRk
TGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMu
aXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkxv
Y2FsRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyIGRpZEFkZEV2ZW50TGlzdGVuZXJzT2ZUeXBl
IHRoaXM9JXAgZG9jdW1lbnQ9JXBcbiIsIHRoaXMsIGRvY3VtZW50LmdldCgpKTsKKyAgICAgICAg
ZG9jdW1lbnQtPmRpZEFkZEV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSk7CisgICAgICAg
IGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hlZWwpKQogICAgICAg
ICAgICAgZG9jdW1lbnQtPmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7Ci0gICAg
ICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50
KSkKKyAgICAgICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpk
b2N1bWVudCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIo
KmRvY3VtZW50KTsKICAgICAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc3Rv
cmFnZUV2ZW50KQogICAgICAgICAgICAgZGlkQWRkU3RvcmFnZUV2ZW50TGlzdGVuZXIoKnRoaXMp
OwogICAgIH0KIAotICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy51bmxvYWRFdmVudCkK
KyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgeworICAgIGNhc2UgRXZlbnRUeXBlOjp1bmxv
YWQ6CiAgICAgICAgIGFkZFVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3Jl
VW5sb2FkTGlzdGVuZXJzKHRoaXMpKQotICAgICAgICBhZGRCZWZvcmVVbmxvYWRFdmVudExpc3Rl
bmVyKHRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6YmVmb3JldW5s
b2FkOgorICAgICAgICBpZiAoYWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKHRoaXMpKQorICAg
ICAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcy5zY3JvbGxFdmVudCkKKyAgICBjYXNlIEV2ZW50VHlwZTo6c2Nyb2xsOgogICAg
ICAgICBpbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CisgICAgICAgIGJyZWFr
OwogI2VuZGlmCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICBjYXNlIEV2ZW50
VHlwZTo6ZGV2aWNlb3JpZW50YXRpb246CisgICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9yRGV2aWNl
T3JpZW50YXRpb25JZk5lY2Vzc2FyeSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50
VHlwZTo6ZGV2aWNlbW90aW9uOgorICAgICAgICBzdGFydExpc3RlbmluZ0ZvckRldmljZU1vdGlv
bklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKICNp
ZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBlbHNlIGlmIChkb2N1bWVudCAmJiBpc1Rv
dWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCi0gICAgICAgICsrbV90
b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQ7CisgICAgICAgIGlmIChpc1RvdWNoUmVs
YXRlZEV2ZW50VHlwZSh0eXBlSW5mbywgKmRvY3VtZW50KSkKKyAgICAgICAgICAgICsrbV90b3Vj
aEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQ7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX0dF
U1RVUkVfRVZFTlRTKQotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBl
KGV2ZW50VHlwZSkpCi0gICAgICAgICsrbV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291
bnQ7CisgICAgICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6R2Vz
dHVyZSkpCisgICAgICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgZWxzZSBpZiAoZXZlbnROYW1lcy5p
c0dhbWVwYWRFdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAgaW5jcmVtZW50R2FtZXBhZEV2
ZW50TGlzdGVuZXJDb3VudCgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZpY2VvcmllbnRhdGlv
bkV2ZW50KQotICAgICAgICBzdGFydExpc3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNl
c3NhcnkoKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZpY2Vtb3Rp
b25FdmVudCkKLSAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2Fy
eSgpOworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Okdh
bWVwYWQpKQorICAgICAgICAgICAgaW5jcmVtZW50R2FtZXBhZEV2ZW50TGlzdGVuZXJDb3VudCgp
OwogI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMjI5MSw0OCArMjMxNSw2MiBAQCB2b2lkIExvY2FsRE9NV2luZG93OjpyZXNldEFsbEdlb2xv
Y2F0aW9uUGVybWlzc2lvbigpCiAKIGJvb2wgTG9jYWxET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
ciwgY29uc3QgRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgZnByaW50Zihz
dGRlcnIsICJMb2NhbERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lciB0aGlzPSVwIGV2ZW50
VHlwZT0lc1xuIiwgdGhpcywgZXZlbnRUeXBlLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMuY2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0
ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdl
YkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBl
SW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7CiAgICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgIGlm
IChldmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJMb2NhbERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lciBkaWRSZW1vdmVF
dmVudExpc3RlbmVyc09mVHlwZSB0aGlzPSVwIGRvY3VtZW50PSVwXG4iLCB0aGlzLCBkb2N1bWVu
dC5nZXQoKSk7CisgICAgICAgIGRvY3VtZW50LT5kaWRSZW1vdmVFdmVudExpc3RlbmVyc09mVHlw
ZShldmVudFR5cGUpOworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0
ZWdvcnk6OldoZWVsKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5kaWRSZW1vdmVXaGVlbEV2ZW50
SGFuZGxlcigqZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCisgICAgICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxh
dGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqZG9jdW1lbnQpKQogICAgICAgICAgICAgZG9jdW1lbnQt
PmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7CiAgICAgfQogCi0gICAgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnVubG9hZEV2ZW50KQorICAgIHN3aXRjaCAodHlwZUlu
Zm8udHlwZSgpKSB7CisgICAgY2FzZSBFdmVudFR5cGU6OnVubG9hZDoKICAgICAgICAgcmVtb3Zl
VW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy5iZWZvcmV1bmxvYWRFdmVudCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnMo
dGhpcykpCi0gICAgICAgIHJlbW92ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpiZWZvcmV1bmxvYWQ6CisgICAgICAg
IGlmIChhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCisgICAgICAgICAgICByZW1v
dmVCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOworICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnNjcm9sbEV2ZW50KQorICAgIGNhc2UgRXZlbnRUeXBlOjpzY3JvbGw6CiAgICAgICAgIGRlY3Jl
bWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorICAgIGNhc2UgRXZlbnRUeXBlOjpkZXZp
Y2VvcmllbnRhdGlvbjoKKyAgICAgICAgc3RvcExpc3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9u
SWZOZWNlc3NhcnkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OmRldmlj
ZW1vdGlvbjoKKyAgICAgICAgc3RvcExpc3RlbmluZ0ZvckRldmljZU1vdGlvbklmTmVjZXNzYXJ5
KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKICNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKLSAgICBlbHNlIGlmIChkb2N1bWVudCAmJiBpc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG91Y2hB
bmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7Ci0gICAgICAgIC0tbV90b3VjaEFuZEdl
c3R1cmVFdmVudExpc3RlbmVyQ291bnQ7Ci0gICAgfQorICAgICAgICBpZiAoZG9jdW1lbnQgJiYg
aXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpkb2N1bWVudCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudCA+IDApOworICAg
ICAgICAgICAgLS1tX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKKyAgICAgICAg
fQogI2VuZGlmCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKLSAgICBlbHNlIGlmIChl
dmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVudFR5cGUpKSB7Ci0gICAgICAgIEFTU0VS
VChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudCA+IDApOwotICAgICAgICAtLW1f
dG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwotICAgIH0KKyAgICAgICAgaWYgKHR5
cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHZXN0dXJlKSkgeworICAgICAgICAg
ICAgQVNTRVJUKG1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7CisgICAg
ICAgICAgICAtLW1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBlbHNlIGlmIChldmVudE5hbWVzLmlz
R2FtZXBhZEV2ZW50VHlwZShldmVudFR5cGUpKQotICAgICAgICBkZWNyZW1lbnRHYW1lcGFkRXZl
bnRMaXN0ZW5lckNvdW50KCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmRldmljZW9yaWVudGF0aW9u
RXZlbnQpCi0gICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VPcmllbnRhdGlvbklmTmVjZXNz
YXJ5KCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuZGV2aWNlbW90aW9u
RXZlbnQpCi0gICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2FyeSgp
OworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OkdhbWVw
YWQpKQorICAgICAgICAgICAgZGVjcmVtZW50R2FtZXBhZEV2ZW50TGlzdGVuZXJDb3VudCgpOwog
I2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwCmluZGV4IDQ0NDVjNThhNDMwNS4uNDZhYmU0MmQ0MzU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwCkBAIC05NTUsNyArOTU1LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZEJ5
cGFzc0FzeW5jU2NyaXB0RGVmZXJyaW5nKCkgY29uc3QKIH0KIAogLy8gc21vb3Roc2Nyb2xsIEpT
IGxpYnJhcnkgcmRhcjovLzUyNzEyNTEzCi1ib29sIFF1aXJrczo6c2hvdWxkTWFrZUV2ZW50TGlz
dGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlKQorYm9vbCBRdWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFz
c2l2ZShjb25zdCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQsIGNvbnN0IEV2ZW50VHlwZUluZm8m
IGV2ZW50VHlwZSkKIHsKICAgICBhdXRvIGV2ZW50VGFyZ2V0SXNSb290ID0gW10oY29uc3QgRXZl
bnRUYXJnZXQmIGV2ZW50VGFyZ2V0KSB7CiAgICAgICAgIGlmIChpczxMb2NhbERPTVdpbmRvdz4o
ZXZlbnRUYXJnZXQpKQpAQCAtOTcyLDcgKzk3Miw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25z
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oZXZlbnRUYXJnZXQuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICB9OwogCi0gICAgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNo
U2Nyb2xsQmxvY2tpbmdFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgIGlmIChldmVudFR5cGUu
aXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OlRvdWNoU2Nyb2xsQmxvY2tpbmcpKSB7CiAgICAg
ICAgIGlmIChldmVudFRhcmdldElzUm9vdChldmVudFRhcmdldCkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50RnJvbUV2ZW50VGFyZ2V0KGV2ZW50VGFyZ2V0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnNldHRpbmdzKCkucGFzc2l2ZVRvdWNo
TGlzdGVuZXJzQXNEZWZhdWx0T25Eb2N1bWVudCgpOwpAQCAtOTgwLDcgKzk4MCw3IEBAIGJvb2wg
UXVpcmtzOjpzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQm
IGV2ZW50VGFyZ2V0LCBjb25zCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgIGlmIChl
dmVudFR5cGUuaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkgewogICAgICAgICBp
ZiAoZXZlbnRUYXJnZXRJc1Jvb3QoZXZlbnRUYXJnZXQpKSB7CiAgICAgICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBkb2N1bWVudEZyb21FdmVudFRhcmdldChldmVudFRhcmdldCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5zZXR0aW5ncygpLnBhc3NpdmVXaGVlbExpc3Rl
bmVyc0FzRGVmYXVsdE9uRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDYwNWY2Y2Zk
NGVlMi4uNTgxNzIyYWY3YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNs
YXNzIEV2ZW50VGFyZ2V0OworY2xhc3MgRXZlbnRUeXBlSW5mbzsKIGNsYXNzIEhUTUxFbGVtZW50
OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIExheW91dFVuaXQ7CkBAIC0xMTMsNyAr
MTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQnlwYXNzQmFja0ZvcndhcmRDYWNoZSgp
IGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmcoKSBjb25z
dDsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZShjb25z
dCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgc3RhdGlj
IGJvb2wgc2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0Jiwg
Y29uc3QgRXZlbnRUeXBlSW5mbyYgZXZlbnRUeXBlKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgYm9vbCBzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyaygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBhNzlmMjFjN2FmMDIuLmMwYTAxYTY4MTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQobnVsbHB0cik7
CiAKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlTW91c2VFdmVudChz
dGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgIH0g
ZWxzZSBpZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnQudHlwZSgpKSAmJiBj
dXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudFR5cGU6OldoZWVsKQorICAgIH0gZWxzZSBp
ZiAoKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2hlZWxFdmVudCB8fCBldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkgJiYgY3VycmVudEV2ZW50LT50eXBl
KCkgPT0gV2ViRXZlbnRUeXBlOjpXaGVlbCkKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3Bs
dWdpbi0+aGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJXaGVlbEV2ZW50Jj4o
KmN1cnJlbnRFdmVudCkpOwogICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnRUeXBl
OjpNb3VzZU1vdmUpCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZU1v
dXNlRW50ZXJFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRF
dmVudCkpOwo=
</data>
<flag name="commit-queue"
          id="495844"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>469326</attachid>
            <date>2024-01-07 01:37:23 -0800</date>
            <delta_ts>2024-01-07 03:10:45 -0800</delta_ts>
            <desc>WIP3 with logging 3</desc>
            <filename>event-type-info-early-return-3-logging-3.patch</filename>
            <type>text/plain</type>
            <size>57863</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDZhZTI4MTRkMWU0NC4uZDk4NzU1ZWYxNDEzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3MzAsMzggKzU3MzAsNzMgQEAgYm9vbCBEb2N1
bWVudDo6aGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRUeXBlKFBsYXRmb3JtRXZlbnQ6OlR5cGUgZXZl
bnRUeXBlKSBjb25zdAogdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKQogewogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJD
b3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLkRPTVN1
YnRyZWVNb2RpZmllZEV2ZW50KQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJ
bmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjpET01TdWJ0cmVlTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTVN1YnRyZWVNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZUluc2VydGVkRXZlbnQpCisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWQ6CiAgICAgICAgIGFkZExp
c3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZCk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRFdmVudCkKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkOgogICAgICAgICBhZGRMaXN0
ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3ZlZCk7Ci0gICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMuRE9NTm9kZVJlbW92ZWRGcm9tRG9jdW1lbnRFdmVudCkKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OkRPTU5vZGVSZW1vdmVkRnJvbURvY3Vt
ZW50OgogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlOjpET01Ob2RlUmVtb3Zl
ZEZyb21Eb2N1bWVudCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9N
Tm9kZUluc2VydGVkSW50b0RvY3VtZW50RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
RXZlbnRUeXBlOjpET01Ob2RlSW5zZXJ0ZWRJbnRvRG9jdW1lbnQ6CiAgICAgICAgIGFkZExpc3Rl
bmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTU5vZGVJbnNlcnRlZEludG9Eb2N1bWVudCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuRE9NQ2hhcmFjdGVyRGF0YU1vZGlmaWVk
RXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpET01DaGFyYWN0ZXJE
YXRhTW9kaWZpZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkRPTUNo
YXJhY3RlckRhdGFNb2RpZmllZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMub3ZlcmZsb3djaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjpvdmVyZmxvd2NoYW5nZWQ6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5
cGU6Ok92ZXJmbG93Q2hhbmdlZCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFt
ZXMuc2Nyb2xsRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpzY3Jv
bGw6CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OlNjcm9sbCk7Ci0gICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXdpbGxiZWdp
bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vm
b3JjZXdpbGxiZWdpbjoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9y
Y2VXaWxsQmVnaW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLndlYmtp
dG1vdXNlZm9yY2VjaGFuZ2VkRXZlbnQpCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRU
eXBlOjp3ZWJraXRtb3VzZWZvcmNlY2hhbmdlZDoKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKExp
c3RlbmVyVHlwZTo6Rm9yY2VDaGFuZ2VkKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy53ZWJraXRtb3VzZWZvcmNlZG93bkV2ZW50KQorICAgICAgICBicmVhazsKKyAgICBj
YXNlIEV2ZW50VHlwZTo6d2Via2l0bW91c2Vmb3JjZWRvd246CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlRG93bik7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
IGV2ZW50TmFtZXMud2Via2l0bW91c2Vmb3JjZXVwRXZlbnQpCisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgRXZlbnRUeXBlOjp3ZWJraXRtb3VzZWZvcmNldXA6CiAgICAgICAgIGFkZExpc3RlbmVy
VHlwZShMaXN0ZW5lclR5cGU6OkZvcmNlVXApOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBl
dmVudE5hbWVzLmZvY3VzaW5FdmVudCkKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5
cGU6OmZvY3VzaW46CiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkZvY3Vz
SW4pOwotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmZvY3Vzb3V0RXZlbnQp
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpmb2N1c291dDoKICAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Rm9jdXNPdXQpOwotICAgIGVsc2UgaWYgKGV2
ZW50TmFtZXMuaXNDU1NUcmFuc2l0aW9uRXZlbnRUeXBlKGV2ZW50VHlwZSkpCi0gICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOwotICAgIGVsc2UgaWYg
KGV2ZW50TmFtZXMuaXNDU1NBbmltYXRpb25FdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZTo6Q1NTQW5pbWF0aW9uKTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpDU1NUcmFuc2l0aW9uKSkKKyAgICAgICAgICAgIGFkZExpc3RlbmVyVHlwZShM
aXN0ZW5lclR5cGU6OkNTU1RyYW5zaXRpb24pOworICAgICAgICBlbHNlIGlmICh0eXBlSW5mby5p
c0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6Q1NTQW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGFk
ZExpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGU6OkNTU0FuaW1hdGlvbik7CisgICAgfQorfQorCit2
b2lkIERvY3VtZW50OjpkaWRBZGRFdmVudExpc3RlbmVyc09mVHlwZShjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIHVuc2lnbmVkIGNvdW50KQoreworICAgIEFTU0VSVChjb3VudCk7CisgICAg
YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1f
ZXZlbnRMaXN0ZW5lckNvdW50cy5mYXN0QWRkKGV2ZW50VHlwZSwgMCk7CisgICAgcmVzdWx0Lml0
ZXJhdG9yLT52YWx1ZSArPSBjb3VudDsKK30KKwordm9pZCBEb2N1bWVudDo6ZGlkUmVtb3ZlRXZl
bnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCB1bnNpZ25lZCBj
b3VudCkKK3sKKyAgICBBU1NFUlQoY291bnQpOworICAgIEFTU0VSVChtX2V2ZW50TGlzdGVuZXJD
b3VudHMuY29udGFpbnMoZXZlbnRUeXBlKSk7CisgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5l
ckNvdW50cy5maW5kKGV2ZW50VHlwZSk7CisgICAgQVNTRVJUKGl0LT52YWx1ZSA+PSBjb3VudCk7
CisgICAgaXQtPnZhbHVlIC09IGNvdW50OwogfQogCiBIVE1MRnJhbWVPd25lckVsZW1lbnQqIERv
Y3VtZW50Ojpvd25lckVsZW1lbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBjNGFm
ZWRlYzQzZDIuLjVlNTgwNDhkMTdjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTU3LDYgKzU3
LDcgQEAKICNpbmNsdWRlIDx3dGYvTG9nZ2VyLmg+CiAjaW5jbHVkZSA8d3RmL09iamVjdElkZW50
aWZpZXIuaD4KICNpbmNsdWRlIDx3dGYvT2JzZXJ2ZXIuaD4KKyNpbmNsdWRlIDx3dGYvUm9iaW5I
b29kSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9VbmlxdWVSZWYuaD4KICNpbmNsdWRlIDx3dGYv
V2Vha0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvV2Vha0xpc3RIYXNoU2V0Lmg+CkBAIC0xMDIw
LDYgKzEwMjEsMTQgQEAgcHVibGljOgogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlRm9yRXZlbnRU
eXBlKFBsYXRmb3JtRXZlbnRUeXBlKSBjb25zdDsKICAgICB2b2lkIGFkZExpc3RlbmVyVHlwZUlm
TmVlZGVkKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAKKyAgICB2b2lkIGRpZEFkZEV2
ZW50TGlzdGVuZXJzT2ZUeXBlKGNvbnN0IEF0b21TdHJpbmcmLCB1bnNpZ25lZCA9IDEpOworICAg
IHZvaWQgZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNPZlR5cGUoY29uc3QgQXRvbVN0cmluZyYsIHVu
c2lnbmVkID0gMSk7CisgICAgYm9vbCBoYXNFdmVudExpc3RuZXJzT2ZUeXBlKGNvbnN0IEF0b21T
dHJpbmcmIHR5cGUpIGNvbnN0IHsgcmV0dXJuIG1fZXZlbnRMaXN0ZW5lckNvdW50cy5pbmxpbmVH
ZXQodHlwZSk7IH0KKworICAgIGJvb2wgaGFzQ29ubmVjdGVkUGx1Z2luRWxlbWVudHMoKSB7IHJl
dHVybiBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRDb3VudDsgfQorICAgIHZvaWQgZGlkQ29ubmVj
dFBsdWdpbkVsZW1lbnQoKSB7ICsrbV9jb25uZWN0ZWRQbHVnaW5FbGVtZW50Q291bnQ7IH0KKyAg
ICB2b2lkIGRpZERpc2Nvbm5lY3RQbHVnaW5FbGVtZW50KCkgeyBBU1NFUlQobV9jb25uZWN0ZWRQ
bHVnaW5FbGVtZW50Q291bnQpOyAtLW1fY29ubmVjdGVkUGx1Z2luRWxlbWVudENvdW50OyB9CisK
ICAgICBpbmxpbmUgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2Vy
dmVyT3B0aW9uVHlwZSkgY29uc3Q7CiAgICAgYm9vbCBoYXNNdXRhdGlvbk9ic2VydmVycygpIGNv
bnN0IHsgcmV0dXJuICFtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5pc0VtcHR5KCk7IH0KICAgICB2
b2lkIGFkZE11dGF0aW9uT2JzZXJ2ZXJUeXBlcyhNdXRhdGlvbk9ic2VydmVyT3B0aW9ucyB0eXBl
cykgeyBtX211dGF0aW9uT2JzZXJ2ZXJUeXBlcy5hZGQodHlwZXMpOyB9CkBAIC0yMzQzLDYgKzIz
NTIsOSBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1fZGF0YUxpc3RFbGVtZW50Q291bnQgeyAw
IH07CiAKICAgICBPcHRpb25TZXQ8TGlzdGVuZXJUeXBlPiBtX2xpc3RlbmVyVHlwZXM7CisgICAg
TWVtb3J5Q29tcGFjdFJvYmluSG9vZEhhc2hNYXA8QXRvbVN0cmluZywgdW5zaWduZWQ+IG1fZXZl
bnRMaXN0ZW5lckNvdW50czsKKyAgICB1bnNpZ25lZCBtX2Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRD
b3VudCB7IDAgfTsKKwogICAgIHVuc2lnbmVkIG1fcmVmZXJlbmNpbmdOb2RlQ291bnQgeyAwIH07
CiAgICAgaW50IG1fbG9hZEV2ZW50RGVsYXlDb3VudCB7IDAgfTsKICAgICB1bnNpZ25lZCBtX2xh
c3RTdHlsZVVwZGF0ZVNpemVGb3JUZXN0aW5nIHsgMCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRE
aXNwYXRjaGVyLmNwcAppbmRleCBiMmY4YWRmMjQyNWIuLjI3YzVjMzg0MzIzOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTE0NSw2ICsxNDUsMTggQEAgc3RhdGlj
IEhUTUxJbnB1dEVsZW1lbnQqIGZpbmRJbnB1dEVsZW1lbnRJbkV2ZW50UGF0aChjb25zdCBFdmVu
dFBhdGgmIHBhdGgpCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3N0YXRpYyBib29sIGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVu
dCkKK3sKKyAgICBpZiAoZG9jdW1lbnQuaGFzRXZlbnRMaXN0bmVyc09mVHlwZShldmVudC50eXBl
KCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGF1dG8gbGVnYWN5VHlwZSA9IEV2ZW50
VGFyZ2V0OjpsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOworICAgIGlmICghbGVnYWN5VHlwZS5p
c051bGwoKSAmJiBkb2N1bWVudC5oYXNFdmVudExpc3RuZXJzT2ZUeXBlKGxlZ2FjeVR5cGUpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBFdmVu
dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQogewog
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKG5vZGUpKTsK
QEAgLTE1NCwxMCArMTY2LDE1IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50
KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICBSZWYgcHJvdGVjdGVkTm9kZSB7IG5vZGUg
fTsKICAgICBSZWZQdHIgcHJvdGVjdGVkVmlldyB7IG5vZGUuZG9jdW1lbnQoKS52aWV3KCkgfTsK
IAorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzKCkudHlwZUluZm9Gb3JFdmVudChldmVu
dC50eXBlKCkpOworICAgIGJvb2wgc2hvdWxkRGlzcGF0Y2hFdmVudFRvU2NyaXB0cyA9IGhhc1Jl
bGV2YW50RXZlbnRMaXN0ZW5lcihub2RlLmRvY3VtZW50KCksIGV2ZW50KTsKKyAgICBpZiAoIXNo
b3VsZERpc3BhdGNoRXZlbnRUb1NjcmlwdHMgJiYgIXR5cGVJbmZvLmhhc0RlZmF1bHRFdmVudEhh
bmRsZXIoKSAmJiAhbm9kZS5kb2N1bWVudCgpLmhhc0Nvbm5lY3RlZFBsdWdpbkVsZW1lbnRzKCkp
CisgICAgICAgIHJldHVybjsKKwogICAgIEV2ZW50UGF0aCBldmVudFBhdGggeyBub2RlLCBldmVu
dCB9OwogCiAgICAgaWYgKG5vZGUuZG9jdW1lbnQoKS5zZXR0aW5ncygpLnNlbmRNb3VzZUV2ZW50
c1RvRGlzYWJsZWRGb3JtQ29udHJvbHNFbmFibGVkKCkgJiYgZXZlbnQuaXNUcnVzdGVkKCkgJiYg
ZXZlbnQuaXNNb3VzZUV2ZW50KCkKLSAgICAgICAgJiYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5h
bWVzKCkubW91c2Vkb3duRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5tb3Vz
ZXVwRXZlbnQgfHwgZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50IHx8IGV2
ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZGJsY2xpY2tFdmVudCkpIHsKKyAgICAgICAgJiYg
KHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6Om1vdXNlZG93biB8fCB0eXBlSW5mby50eXBl
KCkgPT0gRXZlbnRUeXBlOjptb3VzZXVwIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6
OmNsaWNrIHx8IHR5cGVJbmZvLnR5cGUoKSA9PSBFdmVudFR5cGU6OmRibGNsaWNrKSkgewogICAg
ICAgICBldmVudFBhdGguYWRqdXN0Rm9yRGlzYWJsZWRGb3JtQ29udHJvbCgpOwogICAgIH0KIApA
QCAtMTkxLDcgKzIwOCw3IEBAIHZvaWQgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5v
ZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAgICAgaW5wdXRGb3JMZWdhY3lQcmVBY3RpdmF0
aW9uQmVoYXZpb3ItPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBjbGlja0hhbmRsaW5nU3RhdGUp
OwogICAgIH0KIAotICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSkgeworICAgIGlmICghZXZlbnQucHJvcGFnYXRpb25TdG9wcGVkKCkgJiYgIWV2ZW50
UGF0aC5pc0VtcHR5KCkgJiYgIXNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEluRE9NKG5vZGUs
IGV2ZW50KSAmJiBzaG91bGREaXNwYXRjaEV2ZW50VG9TY3JpcHRzKSB7CiAgICAgICAgIGV2ZW50
LnNldEV2ZW50UGF0aChldmVudFBhdGgpOwogICAgICAgICBkaXNwYXRjaEV2ZW50SW5ET00oZXZl
bnQsIGV2ZW50UGF0aCk7CiAgICAgfQpAQCAtMjA0LDcgKzIyMSw3IEBAIHZvaWQgRXZlbnREaXNw
YXRjaGVyOjpkaXNwYXRjaEV2ZW50KE5vZGUmIG5vZGUsIEV2ZW50JiBldmVudCkKICAgICAvLyBD
YWxsIGRlZmF1bHQgZXZlbnQgaGFuZGxlcnMuIFdoaWxlIHRoZSBET00gZG9lcyBoYXZlIGEgY29u
Y2VwdCBvZiBwcmV2ZW50aW5nCiAgICAgLy8gZGVmYXVsdCBoYW5kbGluZywgdGhlIGRldGFpbCBv
ZiB3aGljaCBoYW5kbGVycyBhcmUgY2FsbGVkIGlzIGFuIGludGVybmFsCiAgICAgLy8gaW1wbGVt
ZW50YXRpb24gZGV0YWlsIGFuZCBub3QgcGFydCBvZiB0aGUgRE9NLgotICAgIGlmICghZXZlbnQu
ZGVmYXVsdFByZXZlbnRlZCgpICYmICFldmVudC5kZWZhdWx0SGFuZGxlZCgpICYmICFldmVudC5p
c0RlZmF1bHRFdmVudEhhbmRsZXJJZ25vcmVkKCkpIHsKKyAgICBpZiAodHlwZUluZm8uaGFzRGVm
YXVsdEV2ZW50SGFuZGxlcigpICYmICFldmVudC5kZWZhdWx0UHJldmVudGVkKCkgJiYgIWV2ZW50
LmRlZmF1bHRIYW5kbGVkKCkgJiYgIWV2ZW50LmlzRGVmYXVsdEV2ZW50SGFuZGxlcklnbm9yZWQo
KSkgewogICAgICAgICAvLyBGSVhNRTogTm90IGNsZWFyIHdoeSB3ZSBuZWVkIHRvIHJlc2V0IHRo
ZSB0YXJnZXQgZm9yIHRoZSBkZWZhdWx0IGV2ZW50IGhhbmRsZXJzLgogICAgICAgICAvLyBXZSBz
aG91bGQgcmVzZWFyY2ggdGhpcywgYW5kIHJlbW92ZSB0aGlzIGNvZGUgaWYgcG9zc2libGUuCiAg
ICAgICAgIFJlZlB0ciBmaW5hbFRhcmdldCA9IGV2ZW50LnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudExpc3RlbmVyTWFwLmgKaW5kZXggNTVlNjE5NTI5MTg5Li4xMWM1NmI5NTI5YTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyTWFwLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXJNYXAuaApAQCAtNjcsNiArNjcsMTMgQEAgcHVi
bGljOgogICAgIGNvbnN0IEV2ZW50TGlzdGVuZXJWZWN0b3IqIGZpbmQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PEV2ZW50TGlzdGVuZXJNYXAq
Pih0aGlzKS0+ZmluZChldmVudFR5cGUpOyB9CiAgICAgVmVjdG9yPEF0b21TdHJpbmc+IGV2ZW50
VHlwZXMoKSBjb25zdDsKIAorICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBDYWxsYmFja1R5cGU+Cisg
ICAgdm9pZCBlbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoQ2FsbGJhY2tUeXBlIGNhbGxiYWNr
KQorICAgIHsKKyAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZW50cmllcykKKyAgICAgICAg
ICAgIGNhbGxiYWNrKGVudHJ5LmZpcnN0LCBlbnRyeS5zZWNvbmQuc2l6ZSgpKTsKKyAgICB9CisK
ICAgICB2b2lkIHJlbW92ZUZpcnN0RXZlbnRMaXN0ZW5lckNyZWF0ZWRGcm9tTWFya3VwKGNvbnN0
IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CiAgICAgdm9pZCBjb3B5RXZlbnRMaXN0ZW5lcnNOb3RD
cmVhdGVkRnJvbU1hcmt1cFRvVGFyZ2V0KEV2ZW50VGFyZ2V0Kik7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5qc29uIGIvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuanNvbgppbmRleCBhYzE1ZjkyYWRlNzQuLmI0MTJmNGE0NDRkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50TmFtZXMuanNvbgorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5qc29uCkBAIC0xLDUgKzEsNSBAQAogewotICAgICJET01BY3Rp
dmF0ZSI6IHsidHlwZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl19LAorICAgICJET01BY3RpdmF0
ZSI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRI
YW5kbGVyIjogdHJ1ZSB9LAogICAgICJET01DaGFyYWN0ZXJEYXRhTW9kaWZpZWQiOiB7IH0sCiAg
ICAgIkRPTUNvbnRlbnRMb2FkZWQiOiB7IH0sCiAgICAgIkRPTU5vZGVJbnNlcnRlZCI6IHsgfSwK
QEAgLTE0LDEwICsxNCwxMCBAQAogICAgICJhZGRzdHJlYW0iOiB7IH0sCiAgICAgImFkZHRyYWNr
IjogeyB9LAogICAgICJhZnRlcnByaW50IjogeyB9LAotICAgICJhbmltYXRpb25jYW5jZWwiOiB7
InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgImFuaW1hdGlvbmVuZCI6IHsidHlwZXMi
OiBbIkNTU0FuaW1hdGlvbiJdfSwKLSAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyJ0eXBlcyI6
IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJhbmltYXRpb25zdGFydCI6IHsidHlwZXMiOiBbIkNT
U0FuaW1hdGlvbiJdfSwKKyAgICAiYW5pbWF0aW9uY2FuY2VsIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsi
Q1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uaXRlcmF0aW9uIjogeyAiY2F0ZWdvcmll
cyI6IFsiQ1NTQW5pbWF0aW9uIl0gfSwKKyAgICAiYW5pbWF0aW9uc3RhcnQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAogICAgICJhdWRpb2VuZCI6IHsgfSwKICAgICAiYXVk
aW9wcm9jZXNzIjogeyB9LAogICAgICJhdWRpb3N0YXJ0IjogeyB9LApAQCAtMzcsNyArMzcsNyBA
QAogICAgICJiZWZvcmV1bmxvYWQiOiB7IH0sCiAgICAgImJlZ2luRXZlbnQiOiB7IH0sCiAgICAg
ImJsb2NrZWQiOiB7IH0sCi0gICAgImJsdXIiOiB7IH0sCisgICAgImJsdXIiOiB7ICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJib3VuZGFyeSI6IHsgfSwKICAgICAiYnVmZmVy
ZWRhbW91bnRsb3ciOiB7IH0sCiAgICAgImJ1ZmZlcmVkY2hhbmdlIjogeyB9LApAQCAtNDksNyAr
NDksNyBAQAogICAgICJjaGFyZ2luZ2NoYW5nZSI6IHsgfSwKICAgICAiY2hhcmdpbmd0aW1lY2hh
bmdlIjogeyB9LAogICAgICJjaGVja2luZyI6IHsgfSwKLSAgICAiY2xpY2siOiB7InR5cGVzIjog
WyJNb3VzZUNsaWNrUmVsYXRlZCJdfSwKKyAgICAiY2xpY2siOiB7ICJjYXRlZ29yaWVzIjogWyJN
b3VzZUNsaWNrUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAi
Y2xvc2UiOiB7IH0sCiAgICAgImNsb3NpbmciOiB7IH0sCiAgICAgImNvbXBsZXRlIjogeyB9LApA
QCAtNjEsNyArNjEsNyBAQAogICAgICJjb25uZWN0aW9uc3RhdGVjaGFuZ2UiOiB7IH0sCiAgICAg
ImNvbm5lY3RpbmciOiB7IH0sCiAgICAgImNvbnRlbnR2aXNpYmlsaXR5YXV0b3N0YXRlY2hhbmdl
IjogeyB9LAotICAgICJjb250ZXh0bWVudSI6IHsgfSwKKyAgICAiY29udGV4dG1lbnUiOiB7ICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJjb250cm9sbGVyY2hhbmdlIjogeyB9
LAogICAgICJjb29raWVjaGFuZ2UiOiB7IH0sCiAgICAgImNvb3JkaW5hdG9yc3RhdGVjaGFuZ2Ui
OiB7IH0sCkBAIC03Miw3ICs3Miw3IEBACiAgICAgImN1dCI6IHsgfSwKICAgICAiZGF0YWF2YWls
YWJsZSI6IHsgfSwKICAgICAiZGF0YWNoYW5uZWwiOiB7IH0sCi0gICAgImRibGNsaWNrIjogeyB9
LAorICAgICJkYmxjbGljayI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAg
ImRlcXVldWUiOiB7IH0sCiAgICAgImRldmljZWNoYW5nZSI6IHsgfSwKICAgICAiZGV2aWNlbW90
aW9uIjogeyB9LApAQCAtMTAxLDIxICsxMDEsMjEgQEAKICAgICAiZXhpdCI6IHsgfSwKICAgICAi
ZmV0Y2giOiB7IH0sCiAgICAgImZpbmlzaCI6IHsgfSwKLSAgICAiZm9jdXMiOiB7IH0sCisgICAg
ImZvY3VzIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKICAgICAiZm9jdXNpbiI6
IHsgfSwKICAgICAiZm9jdXNvdXQiOiB7IH0sCiAgICAgImZvcm1kYXRhIjogeyB9LAogICAgICJm
dWxsc2NyZWVuY2hhbmdlIjogeyB9LAogICAgICJmdWxsc2NyZWVuZXJyb3IiOiB7IH0sCi0gICAg
ImdhbWVwYWRjb25uZWN0ZWQiOiB7InR5cGVzIjogWyJHYW1lcGFkIl19LAotICAgICJnYW1lcGFk
ZGlzY29ubmVjdGVkIjogeyJ0eXBlcyI6IFsiR2FtZXBhZCJdfSwKKyAgICAiZ2FtZXBhZGNvbm5l
Y3RlZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdhbWVwYWQiXSB9LAorICAgICJnYW1lcGFkZGlzY29u
bmVjdGVkIjogeyAiY2F0ZWdvcmllcyI6IFsiR2FtZXBhZCJdIH0sCiAgICAgImdhdGhlcmluZ3N0
YXRlY2hhbmdlIjogeyB9LAotICAgICJnZXN0dXJlY2hhbmdlIjogeyJ0eXBlcyI6IFsiR2VzdHVy
ZSJdfSwKLSAgICAiZ2VzdHVyZWVuZCI6IHsidHlwZXMiOiBbIkdlc3R1cmUiXX0sCisgICAgImdl
c3R1cmVjaGFuZ2UiOiB7ICJjYXRlZ29yaWVzIjogWyJHZXN0dXJlIl0gfSwKKyAgICAiZ2VzdHVy
ZWVuZCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9LAogICAgICJnZXN0dXJlc2Nyb2xs
ZW5kIjogeyB9LAogICAgICJnZXN0dXJlc2Nyb2xsc3RhcnQiOiB7IH0sCiAgICAgImdlc3R1cmVz
Y3JvbGx1cGRhdGUiOiB7IH0sCi0gICAgImdlc3R1cmVzdGFydCI6IHsidHlwZXMiOiBbIkdlc3R1
cmUiXX0sCisgICAgImdlc3R1cmVzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkdlc3R1cmUiXSB9
LAogICAgICJnZXN0dXJldGFwIjogeyB9LAogICAgICJnZXN0dXJldGFwZG93biI6IHsgfSwKICAg
ICAiZ290cG9pbnRlcmNhcHR1cmUiOiB7IH0sCkBAIC0xMzAsMTAgKzEzMCwxMCBAQAogICAgICJp
bnN0YWxsIjogeyB9LAogICAgICJpbnZhbGlkIjogeyB9LAogICAgICJpbnZva2UiOiB7IH0sCi0g
ICAgImtleWRvd24iOiB7IH0sCi0gICAgImtleXByZXNzIjogeyB9LAorICAgICJrZXlkb3duIjog
eyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAia2V5cHJlc3MiOiB7ICJkZWZh
dWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJrZXlzdGF0dXNlc2NoYW5nZSI6IHsgfSwK
LSAgICAia2V5dXAiOiB7IH0sCisgICAgImtleXVwIjogeyAiZGVmYXVsdEV2ZW50SGFuZGxlciI6
IHRydWUgfSwKICAgICAibGFuZ3VhZ2VjaGFuZ2UiOiB7IH0sCiAgICAgImxlYXZlcGljdHVyZWlu
cGljdHVyZSI6IHsgfSwKICAgICAibGV2ZWxjaGFuZ2UiOiB7IH0sCkBAIC0xNTAsMTQgKzE1MCwx
NCBAQAogICAgICJtZXJjaGFudHZhbGlkYXRpb24iOiB7IH0sCiAgICAgIm1lc3NhZ2UiOiB7IH0s
CiAgICAgIm1lc3NhZ2VlcnJvciI6IHsgfSwKLSAgICAibW91c2Vkb3duIjogeyJ0eXBlcyI6IFsi
TW91c2VDbGlja1JlbGF0ZWQiLCAiU2ltdWxhdGVkTW91c2UiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgIm1vdXNlZG93biI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xpY2tSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0
RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJtb3VzZWVudGVyIjogeyB9LAogICAgICJtb3Vz
ZWxlYXZlIjogeyB9LAotICAgICJtb3VzZW1vdmUiOiB7InR5cGVzIjogWyJNb3VzZU1vdmVSZWxh
dGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJt
b3VzZW91dCI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNlb3Zl
ciI6IHsidHlwZXMiOiBbIk1vdXNlTW92ZVJlbGF0ZWQiXX0sCi0gICAgIm1vdXNldXAiOiB7InR5
cGVzIjogWyJNb3VzZUNsaWNrUmVsYXRlZCIsICJTaW11bGF0ZWRNb3VzZSIsICJFeHRlbmRlZFRv
dWNoUmVsYXRlZCJdfSwKLSAgICAibW91c2V3aGVlbCI6IHsidHlwZXMiOiBbIldoZWVsIl19LAor
ICAgICJtb3VzZW1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1vdmVSZWxhdGVkIiwgIlNp
bXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5k
bGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZW91dCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlTW92
ZVJlbGF0ZWQiXSB9LAorICAgICJtb3VzZW92ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJNb3VzZU1v
dmVSZWxhdGVkIl0gfSwKKyAgICAibW91c2V1cCI6IHsgImNhdGVnb3JpZXMiOiBbIk1vdXNlQ2xp
Y2tSZWxhdGVkIiwgIlNpbXVsYXRlZE1vdXNlIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJk
ZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJtb3VzZXdoZWVsIjogeyAiY2F0ZWdv
cmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgIm11
dGUiOiB7IH0sCiAgICAgIm5hdmlnYXRlIjogeyB9LAogICAgICJuYXZpZ2F0ZWVycm9yIjogeyB9
LApAQCAtMTg2LDE0ICsxODYsMTQgQEAKICAgICAicGxheWluZyI6IHsgfSwKICAgICAicG9pbnRl
cmxvY2tjaGFuZ2UiOiB7IH0sCiAgICAgInBvaW50ZXJsb2NrZXJyb3IiOiB7IH0sCi0gICAgInBv
aW50ZXJjYW5jZWwiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJl
bGF0ZWQiXX0sCi0gICAgInBvaW50ZXJkb3duIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJwb2ludGVyZW50ZXIiOiB7InR5cGVzIjog
WyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJs
ZWF2ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJd
fSwKLSAgICAicG9pbnRlcm1vdmUiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5k
ZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdXQiOiB7InR5cGVzIjogWyJUb3VjaFJl
bGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInBvaW50ZXJvdmVyIjogeyJ0
eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJw
b2ludGVydXAiOiB7InR5cGVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXX0sCisgICAgInBvaW50ZXJjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0
ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVl
IH0sCisgICAgInBvaW50ZXJkb3duIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwg
IkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAor
ICAgICJwb2ludGVyZW50ZXIiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0
ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAg
InBvaW50ZXJsZWF2ZSI6IHsgImNhdGVnb3JpZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAicG9p
bnRlcm1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3Vj
aFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJv
dXQiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0
ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisgICAgInBvaW50ZXJvdmVyIjog
eyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0s
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAorICAgICJwb2ludGVydXAiOiB7ICJjYXRl
Z29yaWVzIjogWyJUb3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1
bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCiAgICAgInBvcHN0YXRlIjogeyB9LAogICAgICJwcmV2
aW91c3RyYWNrIjogeyB9LAogICAgICJwcm9jZXNzb3JlcnJvciI6IHsgfSwKQEAgLTI1MywyMSAr
MjUzLDIxIEBACiAgICAgInN1Ym1pdCI6IHsgfSwKICAgICAic3VjY2VzcyI6IHsgfSwKICAgICAi
c3VzcGVuZCI6IHsgfSwKLSAgICAidGV4dElucHV0IjogeyB9LAorICAgICJ0ZXh0SW5wdXQiOiB7
ICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0aW1lb3V0IjogeyB9LAogICAg
ICJ0aW1ldXBkYXRlIjogeyB9LAogICAgICJ0b2dnbGUiOiB7IH0sCiAgICAgInRvbmVjaGFuZ2Ui
OiB7IH0sCi0gICAgInRvdWNoY2FuY2VsIjogeyJ0eXBlcyI6IFsiVG91Y2hSZWxhdGVkIiwgIkV4
dGVuZGVkVG91Y2hSZWxhdGVkIl19LAotICAgICJ0b3VjaGVuZCI6IHsidHlwZXMiOiBbIlRvdWNo
UmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwKLSAgICAidG91Y2hmb3JjZWNoYW5n
ZSI6IHsidHlwZXMiOiBbIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdfSwK
LSAgICAidG91Y2htb3ZlIjogeyJ0eXBlcyI6IFsiVG91Y2hTY3JvbGxCbG9ja2luZyIsICJUb3Vj
aFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXX0sCi0gICAgInRvdWNoc3RhcnQiOiB7
InR5cGVzIjogWyJUb3VjaFNjcm9sbEJsb2NraW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRl
ZFRvdWNoUmVsYXRlZCJdfSwKKyAgICAidG91Y2hjYW5jZWwiOiB7ICJjYXRlZ29yaWVzIjogWyJU
b3VjaFJlbGF0ZWQiLCAiRXh0ZW5kZWRUb3VjaFJlbGF0ZWQiXSwgImRlZmF1bHRFdmVudEhhbmRs
ZXIiOiB0cnVlIH0sCisgICAgInRvdWNoZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaGZvcmNlY2hhbmdlIjogeyAiY2F0ZWdvcmllcyI6IFsiVG91Y2hSZWxh
dGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxhdGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1
ZSB9LAorICAgICJ0b3VjaG1vdmUiOiB7ICJjYXRlZ29yaWVzIjogWyJUb3VjaFNjcm9sbEJsb2Nr
aW5nIiwgIlRvdWNoUmVsYXRlZCIsICJFeHRlbmRlZFRvdWNoUmVsYXRlZCJdLCAiZGVmYXVsdEV2
ZW50SGFuZGxlciI6IHRydWUgfSwKKyAgICAidG91Y2hzdGFydCI6IHsgImNhdGVnb3JpZXMiOiBb
IlRvdWNoU2Nyb2xsQmxvY2tpbmciLCAiVG91Y2hSZWxhdGVkIiwgIkV4dGVuZGVkVG91Y2hSZWxh
dGVkIl0sICJkZWZhdWx0RXZlbnRIYW5kbGVyIjogdHJ1ZSB9LAogICAgICJ0cmFjayI6IHsgfSwK
LSAgICAidHJhbnNpdGlvbmNhbmNlbCI6IHsidHlwZXMiOiBbIkNTU1RyYW5zaXRpb24iXX0sCi0g
ICAgInRyYW5zaXRpb25lbmQiOiB7InR5cGVzIjogWyJDU1NUcmFuc2l0aW9uIl19LAotICAgICJ0
cmFuc2l0aW9ucnVuIjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKLSAgICAidHJhbnNp
dGlvbnN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTVHJhbnNpdGlvbiJdfSwKKyAgICAidHJhbnNpdGlv
bmNhbmNlbCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU1RyYW5zaXRpb24iXSB9LAorICAgICJ0cmFu
c2l0aW9uZW5kIjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCisgICAgInRy
YW5zaXRpb25ydW4iOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9uIl0gfSwKKyAgICAi
dHJhbnNpdGlvbnN0YXJ0IjogeyAiY2F0ZWdvcmllcyI6IFsiQ1NTVHJhbnNpdGlvbiJdIH0sCiAg
ICAgInVuY2FwdHVyZWRlcnJvciI6IHsgfSwKICAgICAidW5oYW5kbGVkcmVqZWN0aW9uIjogeyB9
LAogICAgICJ1bmxvYWQiOiB7IH0sCkBAIC0yODgsMTEgKzI4OCwxMSBAQAogICAgICJ3ZWJnbGNv
bnRleHRjcmVhdGlvbmVycm9yIjogeyB9LAogICAgICJ3ZWJnbGNvbnRleHRsb3N0IjogeyB9LAog
ICAgICJ3ZWJnbGNvbnRleHRyZXN0b3JlZCI6IHsgfSwKLSAgICAid2Via2l0QW5pbWF0aW9uRW5k
IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRBbmltYXRpb25JdGVy
YXRpb24iOiB7InR5cGVzIjogWyJDU1NBbmltYXRpb24iXX0sCi0gICAgIndlYmtpdEFuaW1hdGlv
blN0YXJ0IjogeyJ0eXBlcyI6IFsiQ1NTQW5pbWF0aW9uIl19LAotICAgICJ3ZWJraXRCZWZvcmVU
ZXh0SW5zZXJ0ZWQiOiB7IH0sCi0gICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7InR5cGVzIjog
WyJDU1NUcmFuc2l0aW9uIl19LAorICAgICJ3ZWJraXRBbmltYXRpb25FbmQiOiB7ICJjYXRlZ29y
aWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRpb25JdGVyYXRpb24i
OiB7ICJjYXRlZ29yaWVzIjogWyJDU1NBbmltYXRpb24iXSB9LAorICAgICJ3ZWJraXRBbmltYXRp
b25TdGFydCI6IHsgImNhdGVnb3JpZXMiOiBbIkNTU0FuaW1hdGlvbiJdIH0sCisgICAgIndlYmtp
dEJlZm9yZVRleHRJbnNlcnRlZCI6IHsgImRlZmF1bHRFdmVudEhhbmRsZXIiOiB0cnVlIH0sCisg
ICAgIndlYmtpdFRyYW5zaXRpb25FbmQiOiB7ICJjYXRlZ29yaWVzIjogWyJDU1NUcmFuc2l0aW9u
Il0gfSwKICAgICAid2Via2l0YmVnaW5mdWxsc2NyZWVuIjogeyB9LAogICAgICJ3ZWJraXRjdXJy
ZW50cGxheWJhY2t0YXJnZXRpc3dpcmVsZXNzY2hhbmdlZCI6IHsgfSwKICAgICAid2Via2l0ZW5k
ZnVsbHNjcmVlbiI6IHsgfSwKQEAgLTMxMyw3ICszMTMsNyBAQAogICAgICJ3ZWJraXRzb3VyY2Vj
bG9zZSI6IHsgfSwKICAgICAid2Via2l0c291cmNlZW5kZWQiOiB7IH0sCiAgICAgIndlYmtpdHNv
dXJjZW9wZW4iOiB7IH0sCi0gICAgIndoZWVsIjogeyJ0eXBlcyI6IFsiV2hlZWwiXX0sCisgICAg
IndoZWVsIjogeyAiY2F0ZWdvcmllcyI6IFsiV2hlZWwiXSwgImRlZmF1bHRFdmVudEhhbmRsZXIi
OiB0cnVlIH0sCiAgICAgIndyaXRlIjogeyB9LAogICAgICJ3cml0ZWVuZCI6IHsgfSwKICAgICAi
d3JpdGVzdGFydCI6IHsgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRh
cmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDVkNDRm
MTc0NTM2Yi4uNGFmYTFkZmRkMzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAg
LTkyLDcgKzkyLDggQEAgYm9vbCBFdmVudFRhcmdldDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIFJlZjxFdmVudExpc3RlbmUKIAogICAgIGF1dG8gcGFzc2l2
ZSA9IG9wdGlvbnMucGFzc2l2ZTsKIAotICAgIGlmICghcGFzc2l2ZS5oYXNfdmFsdWUoKSAmJiBR
dWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZSgqdGhpcywgZXZlbnRUeXBlKSkK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcygpLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRU
eXBlKTsKKyAgICBpZiAoIXBhc3NpdmUuaGFzX3ZhbHVlKCkgJiYgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3NpdmUoKnRoaXMsIHR5cGVJbmZvKSkKICAgICAgICAgcGFzc2l2ZSA9
IHRydWU7CiAKICAgICBib29sIGxpc3RlbmVyQ3JlYXRlZEZyb21TY3JpcHQgPSBbJl0gewpAQCAt
MTEzLDcgKzExNCw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lCiAgICAgaWYgKGxpc3RlbmVy
Q3JlYXRlZEZyb21TY3JpcHQpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
QWRkRXZlbnRMaXN0ZW5lcigqdGhpcywgZXZlbnRUeXBlLCBsaXN0ZW5lci5nZXQoKSwgb3B0aW9u
cy5jYXB0dXJlKTsKIAotICAgIGlmIChldmVudE5hbWVzKCkuaXNXaGVlbEV2ZW50VHlwZShldmVu
dFR5cGUpKQorICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hl
ZWwpKQogICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgIGV2
ZW50TGlzdGVuZXJzRGlkQ2hhbmdlKCk7CkBAIC0xNTcsNyArMTU4LDcgQEAgYm9vbCBFdmVudFRh
cmdldDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXIKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVFdmVu
dExpc3RlbmVyKCp0aGlzLCBldmVudFR5cGUsIGxpc3RlbmVyLCBvcHRpb25zLmNhcHR1cmUpOwog
CiAgICAgaWYgKGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAucmVtb3ZlKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMuY2FwdHVyZSkpIHsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMoKS5pc1doZWVs
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgICAgIGlmIChldmVudE5hbWVzKCkudHlwZUluZm9G
b3JFdmVudChldmVudFR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpXaGVlbCkpCiAg
ICAgICAgICAgICBpbnZhbGlkYXRlRXZlbnRMaXN0ZW5lclJlZ2lvbnMoKTsKIAogICAgICAgICBl
dmVudExpc3RlbmVyc0RpZENoYW5nZSgpOwpAQCAtMjYxLDcgKzI2Miw3IEBAIHZvaWQgRXZlbnRU
YXJnZXQ6OnVuY2F1Z2h0RXhjZXB0aW9uSW5FdmVudEhhbmRsZXIoKQogewogfQogCi1zdGF0aWMg
Y29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZShjb25zdCBFdmVudCYgZXZlbnQpCitjb25zdCBB
dG9tU3RyaW5nJiBFdmVudFRhcmdldDo6bGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50JiBl
dmVudCkKIHsKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2ViQ29yZTo6ZXZlbnROYW1lcygpOwog
ICAgIGlmIChldmVudC50eXBlKCkgPT0gZXZlbnROYW1lcy5hbmltYXRpb25lbmRFdmVudCkKQEAg
LTMwNyw3ICszMDgsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZl
bnQmIGV2ZW50LCBFdmVudEludm9rZVBoYXNlIHBoYXNlKQogICAgIGlmICghZXZlbnQuaXNUcnVz
dGVkKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGNvbnN0IEF0b21TdHJpbmcmIGxlZ2FjeVR5
cGVOYW1lID0gbGVnYWN5VHlwZShldmVudCk7CisgICAgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5
VHlwZU5hbWUgPSBsZWdhY3lUeXBlRm9yRXZlbnQoZXZlbnQpOwogICAgIGlmICghbGVnYWN5VHlw
ZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGxlZ2FjeUxpc3RlbmVyc1ZlY3Rv
ciA9IGRhdGEtPmV2ZW50TGlzdGVuZXJNYXAuZmluZChsZWdhY3lUeXBlTmFtZSkpIHsKICAgICAg
ICAgICAgIEF0b21TdHJpbmcgdHlwZU5hbWUgPSBldmVudC50eXBlKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5oCmluZGV4IGQwOWU4Nzg1MTg2Zi4uNjA3NzA1ODUxNDc2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaApAQCAtMTA1LDYgKzEwNSw4IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hFdmVudChFdmVudCYpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZpcnR1YWwgdm9pZCB1bmNhdWdodEV4Y2VwdGlvbkluRXZlbnRIYW5kbGVyKCk7CiAKKyAg
ICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgbGVnYWN5VHlwZUZvckV2ZW50KGNvbnN0IEV2ZW50
Jik7CisKICAgICAvLyBVc2VkIGZvciBsZWdhY3kgIm9uZXZlbnQiIGF0dHJpYnV0ZXMuCiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgSlNNYXliZUVycm9yRXZlbnRMaXN0ZW5lcj4KICAgICB2b2lkIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBKU0M6
OkpTVmFsdWUgbGlzdGVuZXIsIEpTQzo6SlNPYmplY3QmIGpzRXZlbnRUYXJnZXQpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDQzYzFkNGNkZDFiYi4uMjgzMDAwN2YzMWUzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3Bw
CkBAIC0yMjE1LDEyICsyMjE1LDEyIEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50
KERvY3VtZW50JiBvbGREb2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICB0
ZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci0+cmVtb3ZlTm9kZSgqdGhpcyk7CiAKICAgICBpZiAo
YXV0byogZXZlbnRUYXJnZXREYXRhID0gdGhpcy0+ZXZlbnRUYXJnZXREYXRhKCkpIHsKLSAgICAg
ICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMoKTsKLSAgICAgICAgaWYg
KCFldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAuaXNFbXB0eSgpKSB7Ci0gICAgICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiBldmVudFRhcmdldERhdGEtPmV2ZW50TGlzdGVuZXJNYXAu
ZXZlbnRUeXBlcygpKQotICAgICAgICAgICAgICAgIG5ld0RvY3VtZW50LmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKHR5cGUpOwotICAgICAgICB9CisgICAgICAgIGV2ZW50VGFyZ2V0RGF0YS0+ZXZl
bnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1dG8mIGV2ZW50
VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIG9sZERvY3VtZW50LmRpZFJlbW92
ZUV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSwgY291bnQpOworICAgICAgICAgICAgbmV3
RG9jdW1lbnQuZGlkQWRkRXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7Cisg
ICAgICAgIH0pOwogCisgICAgICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5h
bWVzKCk7CiAgICAgICAgIHVuc2lnbmVkIG51bVdoZWVsRXZlbnRIYW5kbGVycyA9IGV2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMubW91c2V3aGVlbEV2ZW50KS5zaXplKCkgKyBldmVudExpc3RlbmVy
cyhldmVudE5hbWVzLndoZWVsRXZlbnQpLnNpemUoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG51bVdoZWVsRXZlbnRIYW5kbGVyczsgKytpKSB7CiAgICAgICAgICAgICBvbGRE
b2N1bWVudC5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGhpcyk7CkBAIC0yMjc1LDI5ICsy
Mjc1LDE0IEBAIHZvaWQgTm9kZTo6bW92ZU5vZGVUb05ld0RvY3VtZW50KERvY3VtZW50JiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQmIG5ld0RvY3VtZW50KQogICAgICAgICBlbGVtZW50LT5kaWRNb3Zl
VG9OZXdEb2N1bWVudChvbGREb2N1bWVudCwgbmV3RG9jdW1lbnQpOwogfQogCi1ib29sIGlzVG91
Y2hSZWxhdGVkRXZlbnRUeXBlKGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgY29uc3QgRXZl
bnRUYXJnZXQmIHRhcmdldCkKK2Jvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgRXZl
bnRUeXBlSW5mbyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYgdGFyZ2V0KQogewotICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAjaWYgRU5BQkxFKFRP
VUNIX0VWRU5UUykKLSAgICBpZiAoaXM8Tm9kZT4odGFyZ2V0KSAmJiBkb3duY2FzdDxOb2RlPih0
YXJnZXQpLmRvY3VtZW50KCkucXVpcmtzKCkuc2hvdWxkRGlzcGF0Y2hTaW11bGF0ZWRNb3VzZUV2
ZW50cygmdGFyZ2V0KSkgewotICAgICAgICBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91
c2Vkb3duRXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2Vtb3ZlRXZlbnQgfHwg
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMubW91c2V1cEV2ZW50KQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQorICAgIGlmIChpczxOb2RlPih0YXJnZXQpICYmIGRvd25jYXN0PE5vZGU+
KHRhcmdldCkuZG9jdW1lbnQoKS5xdWlya3MoKS5zaG91bGREaXNwYXRjaFNpbXVsYXRlZE1vdXNl
RXZlbnRzKCZ0YXJnZXQpKQorICAgICAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpFeHRlbmRlZFRvdWNoUmVsYXRlZCk7CiAjZW5kaWYKICAgICBVTlVTRURf
UEFSQU0odGFyZ2V0KTsKLSAgICByZXR1cm4gZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hz
dGFydEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNobW92ZUV2
ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnRvdWNoZW5kRXZlbnQKLSAg
ICAgICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMudG91Y2hjYW5jZWxFdmVudAotICAgICAg
ICB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy50b3VjaGZvcmNlY2hhbmdlRXZlbnQKLSAgICAg
ICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMucG9pbnRlcm92ZXJFdmVudAotICAgICAgICB8
fCBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZW50ZXJFdmVudAotICAgICAgICB8fCBl
dmVudFR5cGUgPT0gZXZlbnROYW1lcy5wb2ludGVyZG93bkV2ZW50Ci0gICAgICAgIHx8IGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnBvaW50ZXJtb3ZlRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBl
ID09IGV2ZW50TmFtZXMucG9pbnRlcnVwRXZlbnQKLSAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2
ZW50TmFtZXMucG9pbnRlcm91dEV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzLnBvaW50ZXJsZWF2ZUV2ZW50Ci0gICAgICAgIHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnBvaW50ZXJjYW5jZWxFdmVudDsKKyAgICByZXR1cm4gZXZlbnRUeXBlLmlzSW5DYXRlZ29yeShF
dmVudENhdGVnb3J5OjpUb3VjaFJlbGF0ZWQpOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgdHJ5
QWRkRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIFJlZjxFdmVudExpc3RlbmVyPiYmIGxpc3RlbmVyLCBjb25zdCBBZGRFdmVudExpc3Rl
bmVyT3B0aW9ucyYgb3B0aW9ucykKQEAgLTIzMDUsMzAgKzIyOTAsMzEgQEAgc3RhdGljIGlubGlu
ZSBib29sIHRyeUFkZEV2ZW50TGlzdGVuZXIoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnQKICAgICBpZiAoIXRhcmdldE5vZGUtPkV2ZW50VGFyZ2V0OjphZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIuY29weVJlZigpLCBvcHRpb25zKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZChldmVudFR5cGUpOworICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkQWRk
RXZlbnRMaXN0ZW5lcnNPZlR5cGUoZXZlbnRUeXBlKTsKIAogICAgIGF1dG8mIGV2ZW50TmFtZXMg
PSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50
VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVudE5hbWVzLnR5cGVJbmZv
Rm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRX
aGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0
ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisgICAgZWxzZSBpZiAoaXNUb3Vj
aFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0g
ICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tSZWxhdGVkRXZlbnRUeXBlKGV2ZW50
VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6
Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRB
ZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXROb2RlKTsKIAogI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0gJnRhcmdldE5vZGUtPmRvY3VtZW50
KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xsRXZlbnQpIHsKKyAgICBpZiAodGFy
Z2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAmJiB0eXBlSW5mby50eXBlKCkgPT0g
RXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1dG8qIHdpbmRvdyA9IHRhcmdldE5v
ZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAgICAgICB3aW5kb3ctPmluY3JlbWVu
dFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICp0YXJn
ZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJn
ZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50TGlz
dGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5kaWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlM
WSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVOVFMpICYmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisg
ICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHZXN0dXJlKSkKICAg
ICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5hZGRUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0
Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjM0NSwzMCArMjMzMSwzMyBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgdHJ5UmVtb3ZlRXZlbnRMaXN0ZW5lcihOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBBdG9tU3Ry
aW5nJiBldgogICAgIGlmICghdGFyZ2V0Tm9kZS0+RXZlbnRUYXJnZXQ6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoZXZlbnRUeXBlLCBsaXN0ZW5lciwgb3B0aW9ucykpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorICAgIHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZGlkUmVtb3ZlRXZlbnRMaXN0ZW5lcnNP
ZlR5cGUoZXZlbnRUeXBlKTsKKwogICAgIC8vIEZJWE1FOiBOb3RpZnkgRG9jdW1lbnQgdGhhdCB0
aGUgbGlzdGVuZXIgaGFzIHZhbmlzaGVkLiBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgYSBudW1i
ZXIgb2YKICAgICAvLyBsaXN0ZW5lcnMgZm9yIGVhY2ggdHlwZSwgbm90IGp1c3QgYSBib29sIC0g
c2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzg2MQogICAgIGF1
dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50TmFt
ZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgIGF1dG8gdHlwZUluZm8gPSBldmVu
dE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQoZXZlbnRUeXBlKTsKKyAgICBpZiAodHlwZUluZm8uaXNJ
bkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9j
dW1lbnQoKS5kaWRSZW1vdmVXaGVlbEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxz
ZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoZXZlbnRUeXBlLCAqdGFyZ2V0Tm9kZSkpCisg
ICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0YXJnZXROb2Rl
KSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFu
ZGxlcigqdGFyZ2V0Tm9kZSk7Ci0gICAgZWxzZSBpZiAoZXZlbnROYW1lcy5pc01vdXNlQ2xpY2tS
ZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgZWxzZSBpZiAodHlwZUluZm8uaXNJbkNh
dGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Ok1vdXNlQ2xpY2tSZWxhdGVkKSkKICAgICAgICAgdGFyZ2V0
Tm9kZS0+ZG9jdW1lbnQoKS5kaWRBZGRPclJlbW92ZU1vdXNlRXZlbnRIYW5kbGVyKCp0YXJnZXRO
b2RlKTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgaWYgKHRhcmdldE5vZGUgPT0g
JnRhcmdldE5vZGUtPmRvY3VtZW50KCkgJiYgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc2Nyb2xs
RXZlbnQpIHsKKyAgICBpZiAodGFyZ2V0Tm9kZSA9PSAmdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKSAm
JiB0eXBlSW5mby50eXBlKCkgPT0gRXZlbnRUeXBlOjpzY3JvbGwpIHsKICAgICAgICAgaWYgKGF1
dG8qIHdpbmRvdyA9IHRhcmdldE5vZGUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAg
ICAgICB3aW5kb3ctPmRlY3JlbWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQotICAgIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICp0YXJnZXROb2RlKSkKKyAgICBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVu
dFR5cGUodHlwZUluZm8sICp0YXJnZXROb2RlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1l
bnQoKS5yZW1vdmVUb3VjaEV2ZW50TGlzdGVuZXIoKnRhcmdldE5vZGUpOwogI2VuZGlmCiAjZW5k
aWYgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogI2lmIEVOQUJMRShJT1NfR0VTVFVSRV9FVkVO
VFMpICYmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJl
RXZlbnRUeXBlKGV2ZW50VHlwZSkpCisgICAgaWYgKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVu
dENhdGVnb3J5OjpHZXN0dXJlKSkKICAgICAgICAgdGFyZ2V0Tm9kZS0+ZG9jdW1lbnQoKS5yZW1v
dmVUb3VjaEV2ZW50SGFuZGxlcigqdGFyZ2V0Tm9kZSk7CiAjZW5kaWYKIApAQCAtMjU0MiwyOCAr
MjUzMSwzNiBAQCB2b2lkIE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQmIGV2ZW50KQog
ICAgICAgICByZXR1cm47CiAgICAgYXV0byYgZXZlbnRUeXBlID0gZXZlbnQudHlwZSgpOwogICAg
IGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7Ci0gICAgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLmtleWRvd25FdmVudCB8fCBldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5rZXlwcmVzc0V2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmtleXVwRXZlbnQpIHsK
KyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KGV2ZW50VHlw
ZSk7CisgICAgc3dpdGNoICh0eXBlSW5mby50eXBlKCkpIHsKKyAgICBjYXNlIEV2ZW50VHlwZTo6
a2V5ZG93bjoKKyAgICBjYXNlIEV2ZW50VHlwZTo6a2V5cHJlc3M6CisgICAgY2FzZSBFdmVudFR5
cGU6OmtleXVwOgogICAgICAgICBpZiAoUmVmUHRyIGtleWJvYXJkRXZlbnQgPSBkeW5hbWljRG93
bmNhc3Q8S2V5Ym9hcmRFdmVudD4oZXZlbnQpKSB7CiAgICAgICAgICAgICBpZiAoUmVmUHRyIGZy
YW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKQogICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhh
bmRsZXIoKS5kZWZhdWx0S2V5Ym9hcmRFdmVudEhhbmRsZXIoKmtleWJvYXJkRXZlbnQpOwogICAg
ICAgICB9Ci0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5jbGlja0V2ZW50
KSB7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpjbGljazoKICAgICAgICAg
ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KGV2ZW50KTsKKyAgICAgICAgYnJlYWs7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1l
cy5jb250ZXh0bWVudUV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6OmNvbnRleHRtZW51Ogog
ICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAg
ICAgICBpZiAoYXV0byogcGFnZSA9IGZyYW1lLT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCkuaGFuZGxlQ29udGV4dE1lbnVFdmVudChldmVudCk7
CiAgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSBldmVudE5hbWVzLnRleHRJbnB1dEV2ZW50KSB7CisgICAgY2FzZSBFdmVudFR5cGU6
OnRleHRJbnB1dDoKICAgICAgICAgaWYgKFJlZlB0ciB0ZXh0RXZlbnQgPSBkeW5hbWljRG93bmNh
c3Q8VGV4dEV2ZW50PihldmVudCkpIHsKICAgICAgICAgICAgIGlmIChSZWZQdHIgZnJhbWUgPSBk
b2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigp
LmRlZmF1bHRUZXh0SW5wdXRFdmVudEhhbmRsZXIoKnRleHRFdmVudCk7CiAgICAgICAgIH0KKyAg
ICAgICAgYnJlYWs7CiAjaWYgRU5BQkxFKFBBTl9TQ1JPTExJTkcpCi0gICAgfSBlbHNlIGlmIChh
dXRvKiBtb3VzZUV2ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91
c2VFdmVudCAmJiBldmVudFR5cGUgPT0gZXZlbnROYW1lcy5tb3VzZWRvd25FdmVudCkgewotICAg
ICAgICBpZiAobW91c2VFdmVudC0+YnV0dG9uKCkgPT0gTW91c2VCdXR0b246Ok1pZGRsZSkgewor
ICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZWRvd246CisgICAgICAgIGlmIChhdXRvKiBtb3VzZUV2
ZW50ID0gZHluYW1pY0Rvd25jYXN0PE1vdXNlRXZlbnQ+KGV2ZW50KTsgbW91c2VFdmVudCAmJiBv
dXNlRXZlbnQtPmJ1dHRvbigpID09IE1vdXNlQnV0dG9uOjpNaWRkbGUpIHsKICAgICAgICAgICAg
IGlmIChlbmNsb3NpbmdMaW5rRXZlbnRQYXJlbnRPclNlbGYoKSkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTI1NzYsNDUgKzI1NzMsNTQgQEAgdm9pZCBOb2RlOjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50JiBldmVudCkKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICB9IGVsc2UgaWYgKGF1dG8qIHdo
ZWVsRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8V2hlZWxFdmVudD4oZXZlbnQpOyB3aGVlbEV2ZW50
ICYmIGV2ZW50TmFtZXMuaXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKSB7Ci0gICAgICAgIC8v
IElmIHdlIGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhl
IGZpcnN0IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCi0gICAgICAgIC8vIFRoaXMgaXMg
bmVlZGVkIGZvciA8b3B0aW9uPiBhbmQgPG9wdGdyb3VwPiBlbGVtZW50cyBzbyB0aGF0IDxzZWxl
Y3Q+cyBnZXQgYSB3aGVlbCBzY3JvbGwuCi0gICAgICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHRoaXM7
Ci0gICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIHN0YXJ0Tm9kZSA9IHN0YXJ0Tm9kZS0+cGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgp
OworICAgIGNhc2UgRXZlbnRUeXBlOjptb3VzZXdoZWVsOgorICAgIGNhc2UgRXZlbnRUeXBlOjp3
aGVlbDoKKyAgICAgICAgQVNTRVJUKHR5cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5
OjpXaGVlbCkpOworICAgICAgICBpZiAoYXV0byogd2hlZWxFdmVudCA9IGR5bmFtaWNEb3duY2Fz
dDxXaGVlbEV2ZW50PihldmVudCk7IHdoZWVsRXZlbnQpIHsKKyAgICAgICAgICAgIC8vIElmIHdl
IGRvbid0IGhhdmUgYSByZW5kZXJlciwgc2VuZCB0aGUgd2hlZWwgZXZlbnQgdG8gdGhlIGZpcnN0
IG5vZGUgd2UgZmluZCB3aXRoIGEgcmVuZGVyZXIuCisgICAgICAgICAgICAvLyBUaGlzIGlzIG5l
ZWRlZCBmb3IgPG9wdGlvbj4gYW5kIDxvcHRncm91cD4gZWxlbWVudHMgc28gdGhhdCA8c2VsZWN0
PnMgZ2V0IGEgd2hlZWwgc2Nyb2xsLgorICAgICAgICAgICAgTm9kZSogc3RhcnROb2RlID0gdGhp
czsKKyAgICAgICAgICAgIHdoaWxlIChzdGFydE5vZGUgJiYgIXN0YXJ0Tm9kZS0+cmVuZGVyZXIo
KSkKKyAgICAgICAgICAgICAgICBzdGFydE5vZGUgPSBzdGFydE5vZGUtPnBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKTsKICAgICAgICAgCi0gICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2Rl
LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQo
KS5mcmFtZSgpKQotICAgICAgICAgICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0
V2hlZWxFdmVudEhhbmRsZXIoUmVmUHRyIHsgc3RhcnROb2RlIH0uZ2V0KCksICp3aGVlbEV2ZW50
KTsKKyAgICAgICAgICAgIGlmIChzdGFydE5vZGUgJiYgc3RhcnROb2RlLT5yZW5kZXJlcigpKSB7
CisgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBmcmFtZSA9IGRvY3VtZW50KCkuZnJhbWUoKSkK
KyAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRXaGVlbEV2
ZW50SGFuZGxlcihSZWZQdHIgeyBzdGFydE5vZGUgfS5nZXQoKSwgKndoZWVsRXZlbnQpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CiAjaWYg
RU5BQkxFKFRPVUNIX0VWRU5UUykgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICB9IGVsc2Ug
aWYgKGF1dG8qIHRvdWNoRXZlbnQgPSBkeW5hbWljRG93bmNhc3Q8VG91Y2hFdmVudD4oZXZlbnQp
OyB0b3VjaEV2ZW50ICYmIGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKnRoaXMp
KSB7Ci0gICAgICAgIC8vIENhcHR1cmUgdGhlIHRhcmdldCBub2RlJ3MgdmlzaWJpbGl0eSBzdGF0
ZSBiZWZvcmUgZGlzcGF0Y2hpbmcgdG91Y2hTdGFydC4KLSAgICAgICAgaWYgKGF1dG8qIGVsZW1l
bnQgPSBkeW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzLnRvdWNoc3RhcnRFdmVudCkgeworICAgICAgICBpZiAoYXV0byogdG91
Y2hFdmVudCA9IGR5bmFtaWNEb3duY2FzdDxUb3VjaEV2ZW50PihldmVudCk7IHRvdWNoRXZlbnQg
JiYgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICp0aGlzKSkgeworICAgICAgICAg
ICAgLy8gQ2FwdHVyZSB0aGUgdGFyZ2V0IG5vZGUncyB2aXNpYmlsaXR5IHN0YXRlIGJlZm9yZSBk
aXNwYXRjaGluZyB0b3VjaFN0YXJ0LgorICAgICAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSBk
eW5hbWljRG93bmNhc3Q8RWxlbWVudD4oKnRoaXMpOyBlbGVtZW50ICYmIHR5cGVJbmZvLnR5cGUo
KSA9PSBFdmVudFR5cGU6OnRvdWNoc3RhcnQpIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9DSEFOR0Vf
T0JTRVJWRVIpCi0gICAgICAgICAgICBhdXRvJiBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIgPSBkb2N1
bWVudCgpLmNvbnRlbnRDaGFuZ2VPYnNlcnZlcigpOwotICAgICAgICAgICAgaWYgKENvbnRlbnRD
aGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhpcykpCi0gICAgICAgICAgICAgICAg
Y29udGVudENoYW5nZU9ic2VydmVyLnNldEhpZGRlblRvdWNoVGFyZ2V0KCplbGVtZW50KTsKLSAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVz
ZXRIaWRkZW5Ub3VjaFRhcmdldCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGNvbnRlbnRDaGFu
Z2VPYnNlcnZlciA9IGRvY3VtZW50KCkuY29udGVudENoYW5nZU9ic2VydmVyKCk7CisgICAgICAg
ICAgICAgICAgaWYgKENvbnRlbnRDaGFuZ2VPYnNlcnZlcjo6aXNWaXN1YWxseUhpZGRlbigqdGhp
cykpCisgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRDaGFuZ2VPYnNlcnZlci5zZXRIaWRkZW5U
b3VjaFRhcmdldCgqZWxlbWVudCk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBjb250ZW50Q2hhbmdlT2JzZXJ2ZXIucmVzZXRIaWRkZW5Ub3VjaFRhcmdldCgpOwog
I2VuZGlmCi0gICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICBSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKLSAgICAgICAgZm9yICg7IHJlbmRlcmVyOyBy
ZW5kZXJlciA9IHJlbmRlcmVyLT5wYXJlbnQoKSkgewotICAgICAgICAgICAgYXV0byogcmVuZGVy
Qm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJlbmRlcmVyKTsKLSAgICAgICAgICAg
IGlmIChyZW5kZXJCb3ggJiYgcmVuZGVyQm94LT5jYW5CZVNjcm9sbGVkQW5kSGFzU2Nyb2xsYWJs
ZUFyZWEoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgICAgICAgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICBm
b3IgKDsgcmVuZGVyZXI7IHJlbmRlcmVyID0gcmVuZGVyZXItPnBhcmVudCgpKSB7CisgICAgICAg
ICAgICAgICAgYXV0byogcmVuZGVyQm94ID0gZHluYW1pY0Rvd25jYXN0PFJlbmRlckJveD4oKnJl
bmRlcmVyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVuZGVyQm94ICYmIHJlbmRlckJveC0+Y2Fu
QmVTY3JvbGxlZEFuZEhhc1Njcm9sbGFibGVBcmVhKCkpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+
bm9kZSgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVmUHRyIGZyYW1lID0gZG9jdW1lbnQoKS5mcmFt
ZSgpKSB7Ci0gICAgICAgICAgICAgICAgUmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7Ci0gICAgICAgICAgICAgICAgZnJhbWUtPmV2ZW50SGFuZGxlcigpLmRlZmF1bHRUb3Vj
aEV2ZW50SGFuZGxlcigqcmVuZGVyZXJOb2RlLCAqdG91Y2hFdmVudCk7CisgICAgICAgICAgICBp
ZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGlmIChS
ZWZQdHIgZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
UmVmUHRyIHJlbmRlcmVyTm9kZSA9IHJlbmRlcmVyLT5ub2RlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS5kZWZhdWx0VG91Y2hFdmVudEhhbmRsZXIoKnJlbmRl
cmVyTm9kZSwgKnRvdWNoRXZlbnQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogI2VuZGlmCisgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIApAQCAtMjYzMCwx
NCArMjYzNiwxNSBAQCBib29sIE5vZGU6OndpbGxSZXNwb25kVG9Nb3VzZU1vdmVFdmVudHMoKSBj
b25zdAogI2VuZGlmCiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdlYkNvcmU6OmV2ZW50TmFtZXMo
KTsKICAgICByZXR1cm4gZXZlbnRUeXBlcygpLmNvbnRhaW5zSWYoWyZdKGNvbnN0IGF1dG8mIHR5
cGUpIHsKLSAgICAgICAgcmV0dXJuIGV2ZW50TmFtZXMuaXNNb3VzZU1vdmVSZWxhdGVkRXZlbnRU
eXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50eXBlSW5mb0ZvckV2ZW50KHR5
cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZU1vdmVSZWxhdGVkKTsKICAgICB9
KTsKIH0KIAogYm9vbCBOb2RlOjp3aWxsUmVzcG9uZFRvVG91Y2hFdmVudHMoKSBjb25zdAogewor
ICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVudE5hbWVzKCk7CiAgICAgcmV0dXJu
IGV2ZW50VHlwZXMoKS5jb250YWluc0lmKFsmXShjb25zdCBhdXRvJiB0eXBlKSB7Ci0gICAgICAg
IHJldHVybiBpc1RvdWNoUmVsYXRlZEV2ZW50VHlwZSh0eXBlLCAqdGhpcyk7CisgICAgICAgIHJl
dHVybiBldmVudE5hbWVzLnR5cGVJbmZvRm9yRXZlbnQodHlwZSkuaXNJbkNhdGVnb3J5KEV2ZW50
Q2F0ZWdvcnk6OlRvdWNoUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTI2NzMsNyArMjY4MCw3
IEBAIGJvb2wgTm9kZTo6d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHNXaXRoRWRpdGFiaWxp
dHkoRWRpdGFiaWxpdHkgZWRpdGFiaWxpdHkpCiAKICAgICBhdXRvJiBldmVudE5hbWVzID0gV2Vi
Q29yZTo6ZXZlbnROYW1lcygpOwogICAgIHJldHVybiBldmVudFR5cGVzKCkuY29udGFpbnNJZihb
Jl0oY29uc3QgYXV0byYgdHlwZSkgewotICAgICAgICByZXR1cm4gZXZlbnROYW1lcy5pc01vdXNl
Q2xpY2tSZWxhdGVkRXZlbnRUeXBlKHR5cGUpOworICAgICAgICByZXR1cm4gZXZlbnROYW1lcy50
eXBlSW5mb0ZvckV2ZW50KHR5cGUpLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpNb3VzZUNs
aWNrUmVsYXRlZCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDM4ZDA1NDEwODllMS4u
ZmM4OGM3NjBlOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxl
bWVudDsKK2NsYXNzIEV2ZW50VHlwZUluZm87CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgSFRN
TFF1YWxpZmllZE5hbWU7CiBjbGFzcyBIVE1MU2xvdEVsZW1lbnQ7CkBAIC03NzIsNyArNzczLDcg
QEAgdGVtcGxhdGU8VHJlZVR5cGUgPSBUcmVlPiBzdGQ6OnBhcnRpYWxfb3JkZXJpbmcgdHJlZU9y
ZGVyKGNvbnN0IE5vZGUmLCBjb25zdCBOb2QKIAogV0VCQ09SRV9FWFBPUlQgc3RkOjpwYXJ0aWFs
X29yZGVyaW5nIHRyZWVPcmRlckZvclRlc3RpbmcoVHJlZVR5cGUsIGNvbnN0IE5vZGUmLCBjb25z
dCBOb2RlJik7CiAKLWJvb2wgaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBjb25zdCBFdmVudFRhcmdldCYpOworYm9vbCBpc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShjb25zdCBFdmVudFR5cGVJbmZvJiwgY29uc3QgRXZlbnRUYXJnZXQmKTsKIAogI2lm
IEFTU0VSVF9FTkFCTEVECiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5IGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2UtZXZlbnQtbmFtZXMucHkKaW5k
ZXggYWQ4MmJjNjUyZmQ5Li5mNzM4MDI0YzA1ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlLWV2ZW50LW5hbWVzLnB5CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlLWV2
ZW50LW5hbWVzLnB5CkBAIC03MiwzOSArNzIsODkgQEAgZGVmIG1haW4oKToKICNpbmNsdWRlICJU
aHJlYWRHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSA8YXJyYXk+CiAjaW5jbHVkZSA8ZnVuY3Rpb25h
bD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JvYmluSG9vZEhh
c2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbVN0cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIGNs
YXNzIEV2ZW50VHlwZSA6IHVpbnQxNl90IHsKKyAgICBjdXN0b20gPSAwLCcnJykKKworICAgICAg
ICBjYXRlZ29yeV9tYXAgPSB7fQorICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZXZlbnRfbmFt
ZXNfaW5wdXQua2V5cygpKToKKyAgICAgICAgICAgIGVudHJ5ID0gZXZlbnRfbmFtZXNfaW5wdXRb
bmFtZV0KKyAgICAgICAgICAgIGZvciBldmVudF9jYXRlZ29yeSBpbiBlbnRyeS5nZXQoJ2NhdGVn
b3JpZXMnLCBbXSk6CisgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbWFwLnNldGRlZmF1bHQoZXZl
bnRfY2F0ZWdvcnksIFtdKQorICAgICAgICAgICAgICAgIGNhdGVnb3J5X21hcFtldmVudF9jYXRl
Z29yeV0uYXBwZW5kKG5hbWUpCisgICAgICAgICAgICBjb25kaXRpb25hbCA9IGVudHJ5LmdldCgn
Y29uZGl0aW9uYWwnLCBOb25lKQorICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6CisgICAgICAg
ICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9JykKKyAgICAgICAgICAgIHdyaXRl
bG4oZicgICAge25hbWV9LCcpCisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAg
ICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQorCisgICAgICAgIHdyaXRlbG4oJycnfTsKKworZW51
bSBjbGFzcyBFdmVudENhdGVnb3J5IDogdWludDE2X3QgeycnJykKKworICAgICAgICBiaXRfc2hp
ZnQgPSAwCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFwLmtleXMo
KSk6CisgICAgICAgICAgICB3cml0ZWxuKGYnICAgIHtjYXRlZ29yeX0gPSAxdSA8PCB7Yml0X3No
aWZ0fSwnKQorICAgICAgICAgICAgYml0X3NoaWZ0ICs9IDEKKworICAgICAgICB3cml0ZWxuKCcn
J307CisKK2NsYXNzIEV2ZW50VHlwZUluZm8geworcHVibGljOgorICAgIGVudW0gY2xhc3MgRGVm
YXVsdEV2ZW50SGFuZGxlciA6IGJvb2wgeyBObywgWWVzIH07CisKKyAgICBFdmVudFR5cGVJbmZv
KCkKKyAgICAgICAgOiBtX3R5cGUoRXZlbnRUeXBlOjpjdXN0b20pCisgICAgeyB9CisKKyAgICBF
dmVudFR5cGVJbmZvKEV2ZW50VHlwZSB0eXBlLCBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT4gY2F0
ZWdvcmllcywgRGVmYXVsdEV2ZW50SGFuZGxlciBkZWZhdWx0RXZlbnRIYW5kbGVyKQorICAgICAg
ICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fY2F0ZWdvcmllcyhjYXRlZ29yaWVzLnRvUmF3
KCkpCisgICAgICAgICwgbV9oYXNEZWZhdWx0RXZlbnRIYW5kbGVyKGRlZmF1bHRFdmVudEhhbmRs
ZXIgPT0gRGVmYXVsdEV2ZW50SGFuZGxlcjo6WWVzKQorICAgIHsgfQorCisgICAgRXZlbnRUeXBl
IHR5cGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxFdmVudFR5cGU+KG1fdHlwZSk7IH0K
KyAgICBib29sIGlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5IGNhdGVnb3J5KSBjb25zdCB7IHJl
dHVybiBPcHRpb25TZXQ8RXZlbnRDYXRlZ29yeT46OmZyb21SYXcobV9jYXRlZ29yaWVzKS5jb250
YWlucyhjYXRlZ29yeSk7IH0KKyAgICBib29sIGhhc0RlZmF1bHRFdmVudEhhbmRsZXIoKSBjb25z
dCB7IHJldHVybiBtX2hhc0RlZmF1bHRFdmVudEhhbmRsZXI7IH0KKworcHJpdmF0ZToKKyAgICBF
dmVudFR5cGUgbV90eXBlOworICAgIHVpbnQxNl90IG1fY2F0ZWdvcmllcyA6IDE1OworICAgIHVp
bnQxNl90IG1faGFzRGVmYXVsdEV2ZW50SGFuZGxlciA6IDE7Cit9OworCiBzdHJ1Y3QgRXZlbnRO
YW1lcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoRXZlbnROYW1lcyk7IFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotCiBwdWJsaWM6JycnKQotICAgICAgICB0eXBlX21hcCA9IHt9CisKICAg
ICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGV2ZW50X25hbWVzX2lucHV0LmtleXMoKSk6CiAgICAg
ICAgICAgICBlbnRyeSA9IGV2ZW50X25hbWVzX2lucHV0W25hbWVdCiAgICAgICAgICAgICBjb25k
aXRpb25hbCA9IGVudHJ5LmdldCgnY29uZGl0aW9uYWwnLCBOb25lKQogICAgICAgICAgICAgaWYg
Y29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbihmJyNpZiB7Y29uZGl0aW9uYWx9
JykKICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgY29uc3QgQXRvbVN0cmluZyB7bmFtZX1FdmVu
dDsnKQotICAgICAgICAgICAgZm9yIGV2ZW50X3R5cGUgaW4gZW50cnkuZ2V0KCd0eXBlcycsIFtd
KToKLSAgICAgICAgICAgICAgICB0eXBlX21hcC5zZXRkZWZhdWx0KGV2ZW50X3R5cGUsIFtdKQot
ICAgICAgICAgICAgICAgIHR5cGVfbWFwW2V2ZW50X3R5cGVdLmFwcGVuZChuYW1lKQogICAgICAg
ICAgICAgaWYgY29uZGl0aW9uYWw6CiAgICAgICAgICAgICAgICAgd3JpdGVsbignI2VuZGlmJykK
IAogICAgICAgICB3cml0ZWxuKCcnJworICAgIEV2ZW50VHlwZUluZm8gdHlwZUluZm9Gb3JFdmVu
dChjb25zdCBBdG9tU3RyaW5nJikgY29uc3Q7CisKICAgICB0ZW1wbGF0ZTxjbGFzcy4uLiBBcmdz
PgogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnROYW1lcz4gY3JlYXRlKEFyZ3MmJi4u
LiBhcmdzKQogICAgIHsKICAgICAgICAgcmV0dXJuIHN0ZDo6dW5pcXVlX3B0cjxFdmVudE5hbWVz
PihuZXcgRXZlbnROYW1lcyhzdGQ6OmZvcndhcmQ8QXJncz4oYXJncykuLi4pKTsKICAgICB9Jycn
KQogCi0gICAgICAgIGZvciBldmVudF90eXBlIGluIHNvcnRlZCh0eXBlX21hcC5rZXlzKCkpOgot
ICAgICAgICAgICAgd3JpdGVsbignJykKLSAgICAgICAgICAgIHdyaXRlbG4oZicgICAgaW5saW5l
IGJvb2wgaXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYpIGNvbnN0Oycp
Ci0gICAgICAgICAgICBuYW1lX2NvdW50ID0gbGVuKHR5cGVfbWFwW2V2ZW50X3R5cGVdKQotICAg
ICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5n
LCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGV2ZW50X3R5cGUpfUV2ZW50
TmFtZXMoKSBjb25zdDsnKQorICAgICAgICBmb3IgY2F0ZWdvcnkgaW4gc29ydGVkKGNhdGVnb3J5
X21hcC5rZXlzKCkpOgorICAgICAgICAgICAgbmFtZV9jb3VudCA9IGxlbihjYXRlZ29yeV9tYXBb
Y2F0ZWdvcnldKQorICAgICAgICAgICAgd3JpdGVsbihmJyAgICBpbmxpbmUgc3RkOjphcnJheTxj
b25zdCBBdG9tU3RyaW5nLCB7bmFtZV9jb3VudH0+IHtsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNh
dGVnb3J5KX1FdmVudE5hbWVzKCkgY29uc3Q7JykKIAogICAgICAgICB3cml0ZWxuKCcnKQogICAg
ICAgICB3cml0ZWxuKGYnICAgIGlubGluZSBzdGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHts
ZW4oZXZlbnRfbmFtZXNfaW5wdXQpfT4gYWxsRXZlbnROYW1lcygpIGNvbnN0OycpCkBAIC0xMTIs
NiArMTYyLDggQEAgcHVibGljOicnJykKICAgICAgICAgd3JpdGVsbignJycKIHByaXZhdGU6CiAg
ICAgRXZlbnROYW1lcygpOworCisgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPEF0b21TdHJpbmcsIEV2ZW50VHlwZUluZm8+IG1fdHlwZUluZm9NYXA7CiB9OwogCiBj
b25zdCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CkBAIC0xMTksMjggKzE3MSwxOCBAQCBjb25z
dCBFdmVudE5hbWVzJiBldmVudE5hbWVzKCk7CiBpbmxpbmUgY29uc3QgRXZlbnROYW1lcyYgZXZl
bnROYW1lcygpCiB7CiAgICAgcmV0dXJuIHRocmVhZEdsb2JhbERhdGEoKS5ldmVudE5hbWVzKCk7
Cit9CisKK2lubGluZSBFdmVudFR5cGVJbmZvIEV2ZW50TmFtZXM6OnR5cGVJbmZvRm9yRXZlbnQo
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdAoreworICAgIHJldHVybiBtX3R5cGVJ
bmZvTWFwLmlubGluZUdldChldmVudFR5cGUpOwogfScnJykKIAotICAgICAgICBmb3IgZXZlbnRf
dHlwZSBpbiBzb3J0ZWQodHlwZV9tYXAua2V5cygpKToKLSAgICAgICAgICAgIG5hbWVzID0gdHlw
ZV9tYXBbZXZlbnRfdHlwZV0KLSAgICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4odHlwZV9tYXBb
ZXZlbnRfdHlwZV0pCisgICAgICAgIGZvciBjYXRlZ29yeSBpbiBzb3J0ZWQoY2F0ZWdvcnlfbWFw
LmtleXMoKSk6CisgICAgICAgICAgICBuYW1lcyA9IGNhdGVnb3J5X21hcFtjYXRlZ29yeV0KKyAg
ICAgICAgICAgIG5hbWVfY291bnQgPSBsZW4oY2F0ZWdvcnlfbWFwW2NhdGVnb3J5XSkKICAgICAg
ICAgICAgIHdyaXRlbG4oJycpCi0gICAgICAgICAgICB3cml0ZWxuKGYnaW5saW5lIGJvb2wgRXZl
bnROYW1lczo6aXN7ZXZlbnRfdHlwZX1FdmVudFR5cGUoY29uc3QgQXRvbVN0cmluZyYgdHlwZSkg
Y29uc3QnKQotICAgICAgICAgICAgd3JpdGVsbigneycpCi0gICAgICAgICAgICAjIEZJWE1FOiBT
dXBwb3J0IGNvbmRpdGlvbmFscyBpbiB0aGUgZmlyc3Qgb3IgdGhlIGxhc3QgaXRlbS4KLSAgICAg
ICAgICAgIHdyaXRlbG4oZicgICAgcmV0dXJuIHR5cGUgPT0ge25hbWVzWzBdfUV2ZW50JykKLSAg
ICAgICAgICAgIGZvciBuYW1lIGluIG5hbWVzWzE6LTFdOgotICAgICAgICAgICAgICAgIGNvbmRp
dGlvbmFsID0gZXZlbnRfbmFtZXNfaW5wdXRbbmFtZV0uZ2V0KCdjb25kaXRpb25hbCcsIE5vbmUp
Ci0gICAgICAgICAgICAgICAgaWYgY29uZGl0aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdy
aXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCi0gICAgICAgICAgICAgICAgd3JpdGVsbihmJyAg
ICAgICAgfHwgdHlwZSA9PSB7bmFtZX1FdmVudCcpCi0gICAgICAgICAgICAgICAgaWYgY29uZGl0
aW9uYWw6Ci0gICAgICAgICAgICAgICAgICAgIHdyaXRlbG4oZicjZW5kaWYnKQotICAgICAgICAg
ICAgaWYgbGVuKG5hbWVzKSA+PSAyOgotICAgICAgICAgICAgICAgIHdyaXRlbG4oZicgICAgICAg
IHx8IHR5cGUgPT0ge25hbWVzWy0xXX1FdmVudDsnKQotICAgICAgICAgICAgd3JpdGVsbignfScp
Ci0gICAgICAgICAgICB3cml0ZWxuKCcnKQotICAgICAgICAgICAgd3JpdGVsbihmJ2lubGluZSBz
dGQ6OmFycmF5PGNvbnN0IEF0b21TdHJpbmcsIHtuYW1lX2NvdW50fT4gRXZlbnROYW1lczo6e2xv
d2VyY2FzZV9maXJzdF9sZXR0ZXIoZXZlbnRfdHlwZSl9RXZlbnROYW1lcygpIGNvbnN0JykKKyAg
ICAgICAgICAgIHdyaXRlbG4oZidpbmxpbmUgc3RkOjphcnJheTxjb25zdCBBdG9tU3RyaW5nLCB7
bmFtZV9jb3VudH0+IEV2ZW50TmFtZXM6Ontsb3dlcmNhc2VfZmlyc3RfbGV0dGVyKGNhdGVnb3J5
KX1FdmVudE5hbWVzKCkgY29uc3QnKQogICAgICAgICAgICAgd3JpdGVsbigneycpCiAgICAgICAg
ICAgICB3cml0ZWxuKCcgICAgcmV0dXJuIHsgeycpCiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBu
YW1lczoKQEAgLTIwOSw3ICsyNTEsMjcgQEAgRXZlbnROYW1lczo6RXZlbnROYW1lcygpJycnKQog
ICAgICAgICAgICAgZGVsaW1pdGVyID0gJywnCiAgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoK
ICAgICAgICAgICAgICAgICB3cml0ZWxuKCcjZW5kaWYnKQotCisgICAgICAgIHdyaXRlbG4oZicg
ICAge2RlbGltaXRlcn0gbV90eXBlSW5mb01hcCh7eycpCisgICAgICAgIGZvciBuYW1lIGluIHNv
cnRlZChldmVudF9uYW1lc19pbnB1dC5rZXlzKCkpOgorICAgICAgICAgICAgZW50cnkgPSBldmVu
dF9uYW1lc19pbnB1dFtuYW1lXQorICAgICAgICAgICAgY29uZGl0aW9uYWwgPSBlbnRyeS5nZXQo
J2NvbmRpdGlvbmFsJywgTm9uZSkKKyAgICAgICAgICAgIGlmIGNvbmRpdGlvbmFsOgorICAgICAg
ICAgICAgICAgIHdyaXRlbG4oZicjaWYge2NvbmRpdGlvbmFsfScpCisgICAgICAgICAgICB3cml0
ZShmJyAgICAgICAge3sgXCJ7bmFtZX1cIl9zLCB7eyBFdmVudFR5cGU6OntuYW1lfSwge3sgJykK
KyAgICAgICAgICAgIGNhdGVnb3JpZXMgPSBlbnRyeS5nZXQoJ2NhdGVnb3JpZXMnLCBbXSkKKyAg
ICAgICAgICAgIGlmIGNhdGVnb3JpZXM6CisgICAgICAgICAgICAgICAgZm9yIGNhdGVnb3J5IGlu
IGNhdGVnb3JpZXNbOi0xXToKKyAgICAgICAgICAgICAgICAgICAgd3JpdGUoZidFdmVudENhdGVn
b3J5Ojp7Y2F0ZWdvcnl9LCAnKQorICAgICAgICAgICAgICAgIHdyaXRlKGYnRXZlbnRDYXRlZ29y
eTo6e2NhdGVnb3JpZXNbLTFdfSAnKQorICAgICAgICAgICAgd3JpdGUoJ30sICcpCisgICAgICAg
ICAgICBpZiBlbnRyeS5nZXQoJ2RlZmF1bHRFdmVudEhhbmRsZXInLCBGYWxzZSk6CisgICAgICAg
ICAgICAgICAgd3JpdGUoJ0V2ZW50VHlwZUluZm86OkRlZmF1bHRFdmVudEhhbmRsZXI6Olllcycp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHdyaXRlKCdFdmVudFR5cGVJbmZv
OjpEZWZhdWx0RXZlbnRIYW5kbGVyOjpObycpCisgICAgICAgICAgICB3cml0ZWxuKCcgfSB9LCcp
CisgICAgICAgICAgICBpZiBjb25kaXRpb25hbDoKKyAgICAgICAgICAgICAgICB3cml0ZWxuKCcj
ZW5kaWYnKQorICAgICAgICB3cml0ZWxuKCcgICAgfSknKQogICAgICAgICB3cml0ZWxuKCcnJ3sg
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlJycnKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQ
bHVnSW5FbGVtZW50LmNwcAppbmRleCBhYjFlOGYzZDVlMTcuLmZhOWFkOGU3YjE1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKQEAgLTE3Niw2ICsxNzYsMjEg
QEAgdm9pZCBIVE1MUGx1Z0luRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmEKICAgICB9CiB9CiAKK05vZGU6Okluc2VydGVkSW50
b0FuY2VzdG9yUmVzdWx0IEhUTUxQbHVnSW5FbGVtZW50OjppbnNlcnRlZEludG9BbmNlc3RvcihJ
bnNlcnRpb25UeXBlIGluc2VydGlvblR5cGUsIENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0
ZWRUcmVlKQoreworICAgIGF1dG8gcmVzdWx0ID0gSFRNTEZyYW1lT3duZXJFbGVtZW50OjppbnNl
cnRlZEludG9BbmNlc3RvcihpbnNlcnRpb25UeXBlLCBwYXJlbnRPZkluc2VydGVkVHJlZSk7Cisg
ICAgaWYgKGluc2VydGlvblR5cGUuY29ubmVjdGVkVG9Eb2N1bWVudCkKKyAgICAgICAgZG9jdW1l
bnQoKS5kaWRDb25uZWN0UGx1Z2luRWxlbWVudCgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisK
K3ZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IoUmVtb3ZhbFR5cGUg
cmVtb3ZhbFR5cGUsIENvbnRhaW5lck5vZGUmIG9sZFBhcmVudE9mUmVtb3ZlZFRyZWUpCit7Cisg
ICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKHJlbW92YWxUeXBl
LCBvbGRQYXJlbnRPZlJlbW92ZWRUcmVlKTsKKyAgICBpZiAocmVtb3ZhbFR5cGUuZGlzY29ubmVj
dGVkRnJvbURvY3VtZW50KQorICAgICAgICBkb2N1bWVudCgpLmRpZERpc2Nvbm5lY3RQbHVnaW5F
bGVtZW50KCk7Cit9CisKIHZvaWQgSFRNTFBsdWdJbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRs
ZXIoRXZlbnQmIGV2ZW50KQogewogICAgIC8vIEZpcmVmb3ggc2VlbXMgdG8gdXNlIGEgZmFrZSBl
dmVudCBsaXN0ZW5lciB0byBkaXNwYXRjaCBldmVudHMgdG8gcGx1Zy1pbiAodGVzdGVkIHdpdGgg
bW91c2UgZXZlbnRzIG9ubHkpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5o
CmluZGV4IDBkYWUyZmU0YTRlYy4uZjI0NGY4NTVmMTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCkBAIC04NCw2ICs4NCw5IEBAIHByb3RlY3RlZDoKIAogICAgIHZp
cnR1YWwgYm9vbCB1c2VGYWxsYmFja0NvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQog
CisgICAgSW5zZXJ0ZWRJbnRvQW5jZXN0b3JSZXN1bHQgaW5zZXJ0ZWRJbnRvQW5jZXN0b3IoSW5z
ZXJ0aW9uVHlwZSwgQ29udGFpbmVyTm9kZSYgcGFyZW50T2ZJbnNlcnRlZFRyZWUpIG92ZXJyaWRl
OworICAgIHZvaWQgcmVtb3ZlZEZyb21BbmNlc3RvcihSZW1vdmFsVHlwZSwgQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSkgb3ZlcnJpZGU7CisKICAgICB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQmKSBmaW5hbDsKIAogICAgIHZpcnR1YWwgYm9vbCByZXF1ZXN0T2Jq
ZWN0KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0
b3I8QXRvbVN0cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFZlY3RvcjxBdG9tU3RyaW5nPiYgcGFy
YW1WYWx1ZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2FsRE9NV2luZG93LmNwcAppbmRleCAzMGNh
YTQ4OTZlMzQuLjU3MjAxY2YwNjY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9M
b2NhbERPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhbERPTVdpbmRv
dy5jcHAKQEAgLTQyMSw4ICs0MjEsMTggQEAgTG9jYWxET01XaW5kb3c6OkxvY2FsRE9NV2luZG93
KERvY3VtZW50JiBkb2N1bWVudCkKIAogdm9pZCBMb2NhbERPTVdpbmRvdzo6ZGlkU2VjdXJlVHJh
bnNpdGlvblRvKERvY3VtZW50JiBkb2N1bWVudCkKIHsKKyAgICBSZWZQdHIgb2xkRG9jdW1lbnQg
PSBkb3duY2FzdDxEb2N1bWVudD4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBvYnNl
cnZlQ29udGV4dCgmZG9jdW1lbnQpOwogCisgICAgZnByaW50ZihzdGRlcnIsICJMb2NhbERPTVdp
bmRvdzo6ZGlkU2VjdXJlVHJhbnNpdGlvblRvIHRoaXM9JXAgZXZlbnRUYXJnZXREYXRhPSVwXG4i
LCB0aGlzLCB0aGlzLT5ldmVudFRhcmdldERhdGEoKSk7CisgICAgaWYgKGF1dG8qIGV2ZW50VGFy
Z2V0RGF0YSA9IHRoaXMtPmV2ZW50VGFyZ2V0RGF0YSgpKSB7CisgICAgICAgIGV2ZW50VGFyZ2V0
RGF0YS0+ZXZlbnRMaXN0ZW5lck1hcC5lbnVtZXJhdGVFdmVudExpc3RlbmVyVHlwZXMoWyZdKGF1
dG8mIGV2ZW50VHlwZSwgdW5zaWduZWQgY291bnQpIHsKKyAgICAgICAgICAgIGlmIChvbGREb2N1
bWVudCkKKyAgICAgICAgICAgICAgICBvbGREb2N1bWVudC0+ZGlkUmVtb3ZlRXZlbnRMaXN0ZW5l
cnNPZlR5cGUoZXZlbnRUeXBlLCBjb3VudCk7CisgICAgICAgICAgICBkb2N1bWVudC5kaWRBZGRF
dmVudExpc3RlbmVyc09mVHlwZShldmVudFR5cGUsIGNvdW50KTsKKyAgICAgICAgfSk7CisgICAg
fQorCiAgICAgLy8gVGhlIFdpbmRvdyBpcyBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIG9uZSBkb2N1
bWVudCB0byBhbm90aGVyIHNvIHdlIG5lZWQgdG8gcmVzZXQgZGF0YQogICAgIC8vIG1lbWJlcnMg
dGhhdCBzdG9yZSB0aGUgd2luZG93J3MgZG9jdW1lbnQgKHJhdGhlciB0aGFuIHRoZSB3aW5kb3cg
aXRzZWxmKS4KICAgICBtX2NyeXB0byA9IG51bGxwdHI7CkBAIC01MjUsNiArNTM1LDcgQEAgdm9p
ZCBMb2NhbERPTVdpbmRvdzo6d2lsbERldGFjaERvY3VtZW50RnJvbUZyYW1lKCkKICAgICAgICAg
b2JzZXJ2ZXIud2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpOwogICAgIH0pOwogCisK
ICAgICBpZiAoUmVmUHRyIHBlcmZvcm1hbmNlID0gbV9wZXJmb3JtYW5jZSkKICAgICAgICAgcGVy
Zm9ybWFuY2UtPmNsZWFyUmVzb3VyY2VUaW1pbmdzKCk7CiAKQEAgLTIwNDcsNDcgKzIwNTgsNjAg
QEAgYm9vbCBMb2NhbERPTVdpbmRvdzo6aXNTYW1lU2VjdXJpdHlPcmlnaW5Bc01haW5GcmFtZSgp
IGNvbnN0CiAKIGJvb2wgTG9jYWxET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXIoY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBSZWY8RXZlbnRMaXN0ZW5lcj4mJiBsaXN0ZW5lciwgY29uc3Qg
QWRkRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgZnByaW50ZihzdGRlcnIs
ICJMb2NhbERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lciB0aGlzPSVwIGV2ZW50VHlwZT0lc1xu
IiwgdGhpcywgZXZlbnRUeXBlLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAgICBpZiAoIUV2
ZW50VGFyZ2V0OjphZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgV1RGTW92ZShsaXN0ZW5lciks
IG9wdGlvbnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHIgZG9jdW1lbnQg
PSB0aGlzLT5kb2N1bWVudCgpOwogICAgIGF1dG8mIGV2ZW50TmFtZXMgPSBXZWJDb3JlOjpldmVu
dE5hbWVzKCk7CisgICAgYXV0byB0eXBlSW5mbyA9IGV2ZW50TmFtZXMudHlwZUluZm9Gb3JFdmVu
dChldmVudFR5cGUpOwogICAgIGlmIChkb2N1bWVudCkgewotICAgICAgICBkb2N1bWVudC0+YWRk
TGlzdGVuZXJUeXBlSWZOZWVkZWQoZXZlbnRUeXBlKTsKLSAgICAgICAgaWYgKGV2ZW50TmFtZXMu
aXNXaGVlbEV2ZW50VHlwZShldmVudFR5cGUpKQorICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkxv
Y2FsRE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyIGRpZEFkZEV2ZW50TGlzdGVuZXJzT2ZUeXBl
IHRoaXM9JXAgZG9jdW1lbnQ9JXBcbiIsIHRoaXMsIGRvY3VtZW50LmdldCgpKTsKKyAgICAgICAg
ZG9jdW1lbnQtPmRpZEFkZEV2ZW50TGlzdGVuZXJzT2ZUeXBlKGV2ZW50VHlwZSk7CisgICAgICAg
IGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6V2hlZWwpKQogICAgICAg
ICAgICAgZG9jdW1lbnQtPmRpZEFkZFdoZWVsRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7Ci0gICAg
ICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxhdGVkRXZlbnRUeXBlKGV2ZW50VHlwZSwgKmRvY3VtZW50
KSkKKyAgICAgICAgZWxzZSBpZiAoaXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpk
b2N1bWVudCkpCiAgICAgICAgICAgICBkb2N1bWVudC0+ZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIo
KmRvY3VtZW50KTsKICAgICAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuc3Rv
cmFnZUV2ZW50KQogICAgICAgICAgICAgZGlkQWRkU3RvcmFnZUV2ZW50TGlzdGVuZXIoKnRoaXMp
OwogICAgIH0KIAotICAgIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy51bmxvYWRFdmVudCkK
KyAgICBzd2l0Y2ggKHR5cGVJbmZvLnR5cGUoKSkgeworICAgIGNhc2UgRXZlbnRUeXBlOjp1bmxv
YWQ6CiAgICAgICAgIGFkZFVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7Ci0gICAgZWxzZSBpZiAo
ZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuYmVmb3JldW5sb2FkRXZlbnQgJiYgYWxsb3dzQmVmb3Jl
VW5sb2FkTGlzdGVuZXJzKHRoaXMpKQotICAgICAgICBhZGRCZWZvcmVVbmxvYWRFdmVudExpc3Rl
bmVyKHRoaXMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50VHlwZTo6YmVmb3JldW5s
b2FkOgorICAgICAgICBpZiAoYWxsb3dzQmVmb3JlVW5sb2FkTGlzdGVuZXJzKHRoaXMpKQorICAg
ICAgICAgICAgYWRkQmVmb3JlVW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYnJl
YWs7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcy5zY3JvbGxFdmVudCkKKyAgICBjYXNlIEV2ZW50VHlwZTo6c2Nyb2xsOgogICAg
ICAgICBpbmNyZW1lbnRTY3JvbGxFdmVudExpc3RlbmVyc0NvdW50KCk7CisgICAgICAgIGJyZWFr
OwogI2VuZGlmCisjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKKyAgICBjYXNlIEV2ZW50
VHlwZTo6ZGV2aWNlb3JpZW50YXRpb246CisgICAgICAgIHN0YXJ0TGlzdGVuaW5nRm9yRGV2aWNl
T3JpZW50YXRpb25JZk5lY2Vzc2FyeSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEV2ZW50
VHlwZTo6ZGV2aWNlbW90aW9uOgorICAgICAgICBzdGFydExpc3RlbmluZ0ZvckRldmljZU1vdGlv
bklmTmVjZXNzYXJ5KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKICNp
ZiBFTkFCTEUoSU9TX1RPVUNIX0VWRU5UUykKLSAgICBlbHNlIGlmIChkb2N1bWVudCAmJiBpc1Rv
dWNoUmVsYXRlZEV2ZW50VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCi0gICAgICAgICsrbV90
b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQ7CisgICAgICAgIGlmIChpc1RvdWNoUmVs
YXRlZEV2ZW50VHlwZSh0eXBlSW5mbywgKmRvY3VtZW50KSkKKyAgICAgICAgICAgICsrbV90b3Vj
aEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291bnQ7CiAjZW5kaWYKICNpZiBFTkFCTEUoSU9TX0dF
U1RVUkVfRVZFTlRTKQotICAgIGVsc2UgaWYgKGV2ZW50TmFtZXMuaXNHZXN0dXJlRXZlbnRUeXBl
KGV2ZW50VHlwZSkpCi0gICAgICAgICsrbV90b3VjaEFuZEdlc3R1cmVFdmVudExpc3RlbmVyQ291
bnQ7CisgICAgICAgIGlmICh0eXBlSW5mby5pc0luQ2F0ZWdvcnkoRXZlbnRDYXRlZ29yeTo6R2Vz
dHVyZSkpCisgICAgICAgICAgICArK21fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEdBTUVQQUQpCi0gICAgZWxzZSBpZiAoZXZlbnROYW1lcy5p
c0dhbWVwYWRFdmVudFR5cGUoZXZlbnRUeXBlKSkKLSAgICAgICAgaW5jcmVtZW50R2FtZXBhZEV2
ZW50TGlzdGVuZXJDb3VudCgpOwotI2VuZGlmCi0jaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElP
TikKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZpY2VvcmllbnRhdGlv
bkV2ZW50KQotICAgICAgICBzdGFydExpc3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9uSWZOZWNl
c3NhcnkoKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcy5kZXZpY2Vtb3Rp
b25FdmVudCkKLSAgICAgICAgc3RhcnRMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2Fy
eSgpOworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6Okdh
bWVwYWQpKQorICAgICAgICAgICAgaW5jcmVtZW50R2FtZXBhZEV2ZW50TGlzdGVuZXJDb3VudCgp
OwogI2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpA
QCAtMjI5MSw0OCArMjMxNSw2MiBAQCB2b2lkIExvY2FsRE9NV2luZG93OjpyZXNldEFsbEdlb2xv
Y2F0aW9uUGVybWlzc2lvbigpCiAKIGJvb2wgTG9jYWxET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlz
dGVuZXIoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5l
ciwgY29uc3QgRXZlbnRMaXN0ZW5lck9wdGlvbnMmIG9wdGlvbnMpCiB7CisgICAgZnByaW50Zihz
dGRlcnIsICJMb2NhbERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lciB0aGlzPSVwIGV2ZW50
VHlwZT0lc1xuIiwgdGhpcywgZXZlbnRUeXBlLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpKTsKICAg
ICBpZiAoIUV2ZW50VGFyZ2V0OjpyZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIG9wdGlvbnMuY2FwdHVyZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0
ciBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7CiAgICAgYXV0byYgZXZlbnROYW1lcyA9IFdl
YkNvcmU6OmV2ZW50TmFtZXMoKTsKKyAgICBhdXRvIHR5cGVJbmZvID0gZXZlbnROYW1lcy50eXBl
SW5mb0ZvckV2ZW50KGV2ZW50VHlwZSk7CiAgICAgaWYgKGRvY3VtZW50KSB7Ci0gICAgICAgIGlm
IChldmVudE5hbWVzLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkKKyAgICAgICAgZnByaW50
ZihzdGRlcnIsICJMb2NhbERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lciBkaWRSZW1vdmVF
dmVudExpc3RlbmVyc09mVHlwZSB0aGlzPSVwIGRvY3VtZW50PSVwXG4iLCB0aGlzLCBkb2N1bWVu
dC5nZXQoKSk7CisgICAgICAgIGRvY3VtZW50LT5kaWRSZW1vdmVFdmVudExpc3RlbmVyc09mVHlw
ZShldmVudFR5cGUpOworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0
ZWdvcnk6OldoZWVsKSkKICAgICAgICAgICAgIGRvY3VtZW50LT5kaWRSZW1vdmVXaGVlbEV2ZW50
SGFuZGxlcigqZG9jdW1lbnQpOwotICAgICAgICBlbHNlIGlmIChpc1RvdWNoUmVsYXRlZEV2ZW50
VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpCisgICAgICAgIGVsc2UgaWYgKGlzVG91Y2hSZWxh
dGVkRXZlbnRUeXBlKHR5cGVJbmZvLCAqZG9jdW1lbnQpKQogICAgICAgICAgICAgZG9jdW1lbnQt
PmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKCpkb2N1bWVudCk7CiAgICAgfQogCi0gICAgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLnVubG9hZEV2ZW50KQorICAgIHN3aXRjaCAodHlwZUlu
Zm8udHlwZSgpKSB7CisgICAgY2FzZSBFdmVudFR5cGU6OnVubG9hZDoKICAgICAgICAgcmVtb3Zl
VW5sb2FkRXZlbnRMaXN0ZW5lcih0aGlzKTsKLSAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZl
bnROYW1lcy5iZWZvcmV1bmxvYWRFdmVudCAmJiBhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnMo
dGhpcykpCi0gICAgICAgIHJlbW92ZUJlZm9yZVVubG9hZEV2ZW50TGlzdGVuZXIodGhpcyk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRUeXBlOjpiZWZvcmV1bmxvYWQ6CisgICAgICAg
IGlmIChhbGxvd3NCZWZvcmVVbmxvYWRMaXN0ZW5lcnModGhpcykpCisgICAgICAgICAgICByZW1v
dmVCZWZvcmVVbmxvYWRFdmVudExpc3RlbmVyKHRoaXMpOworICAgICAgICBicmVhazsKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVz
LnNjcm9sbEV2ZW50KQorICAgIGNhc2UgRXZlbnRUeXBlOjpzY3JvbGw6CiAgICAgICAgIGRlY3Jl
bWVudFNjcm9sbEV2ZW50TGlzdGVuZXJzQ291bnQoKTsKKyAgICAgICAgYnJlYWs7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQorICAgIGNhc2UgRXZlbnRUeXBlOjpkZXZp
Y2VvcmllbnRhdGlvbjoKKyAgICAgICAgc3RvcExpc3RlbmluZ0ZvckRldmljZU9yaWVudGF0aW9u
SWZOZWNlc3NhcnkoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFdmVudFR5cGU6OmRldmlj
ZW1vdGlvbjoKKyAgICAgICAgc3RvcExpc3RlbmluZ0ZvckRldmljZU1vdGlvbklmTmVjZXNzYXJ5
KCk7CisgICAgICAgIGJyZWFrOworI2VuZGlmCisgICAgZGVmYXVsdDoKICNpZiBFTkFCTEUoSU9T
X1RPVUNIX0VWRU5UUykKLSAgICBlbHNlIGlmIChkb2N1bWVudCAmJiBpc1RvdWNoUmVsYXRlZEV2
ZW50VHlwZShldmVudFR5cGUsICpkb2N1bWVudCkpIHsKLSAgICAgICAgQVNTRVJUKG1fdG91Y2hB
bmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7Ci0gICAgICAgIC0tbV90b3VjaEFuZEdl
c3R1cmVFdmVudExpc3RlbmVyQ291bnQ7Ci0gICAgfQorICAgICAgICBpZiAoZG9jdW1lbnQgJiYg
aXNUb3VjaFJlbGF0ZWRFdmVudFR5cGUodHlwZUluZm8sICpkb2N1bWVudCkpIHsKKyAgICAgICAg
ICAgIEFTU0VSVChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudCA+IDApOworICAg
ICAgICAgICAgLS1tX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudDsKKyAgICAgICAg
fQogI2VuZGlmCiAjaWYgRU5BQkxFKElPU19HRVNUVVJFX0VWRU5UUykKLSAgICBlbHNlIGlmIChl
dmVudE5hbWVzLmlzR2VzdHVyZUV2ZW50VHlwZShldmVudFR5cGUpKSB7Ci0gICAgICAgIEFTU0VS
VChtX3RvdWNoQW5kR2VzdHVyZUV2ZW50TGlzdGVuZXJDb3VudCA+IDApOwotICAgICAgICAtLW1f
dG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OwotICAgIH0KKyAgICAgICAgaWYgKHR5
cGVJbmZvLmlzSW5DYXRlZ29yeShFdmVudENhdGVnb3J5OjpHZXN0dXJlKSkgeworICAgICAgICAg
ICAgQVNTRVJUKG1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50ID4gMCk7CisgICAg
ICAgICAgICAtLW1fdG91Y2hBbmRHZXN0dXJlRXZlbnRMaXN0ZW5lckNvdW50OworICAgICAgICB9
CiAjZW5kaWYKICNpZiBFTkFCTEUoR0FNRVBBRCkKLSAgICBlbHNlIGlmIChldmVudE5hbWVzLmlz
R2FtZXBhZEV2ZW50VHlwZShldmVudFR5cGUpKQotICAgICAgICBkZWNyZW1lbnRHYW1lcGFkRXZl
bnRMaXN0ZW5lckNvdW50KCk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9O
KQotICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzLmRldmljZW9yaWVudGF0aW9u
RXZlbnQpCi0gICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VPcmllbnRhdGlvbklmTmVjZXNz
YXJ5KCk7Ci0gICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMuZGV2aWNlbW90aW9u
RXZlbnQpCi0gICAgICAgIHN0b3BMaXN0ZW5pbmdGb3JEZXZpY2VNb3Rpb25JZk5lY2Vzc2FyeSgp
OworICAgICAgICBpZiAodHlwZUluZm8uaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OkdhbWVw
YWQpKQorICAgICAgICAgICAgZGVjcmVtZW50R2FtZXBhZEV2ZW50TGlzdGVuZXJDb3VudCgpOwog
I2VuZGlmCisgICAgICAgIGJyZWFrOworICAgIH0KIAogICAgIHJldHVybiB0cnVlOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwCmluZGV4IDQ0NDVjNThhNDMwNS4uNDZhYmU0MmQ0MzU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9RdWlya3MuY3BwCkBAIC05NTUsNyArOTU1LDcgQEAgYm9vbCBRdWlya3M6OnNob3VsZEJ5
cGFzc0FzeW5jU2NyaXB0RGVmZXJyaW5nKCkgY29uc3QKIH0KIAogLy8gc21vb3Roc2Nyb2xsIEpT
IGxpYnJhcnkgcmRhcjovLzUyNzEyNTEzCi1ib29sIFF1aXJrczo6c2hvdWxkTWFrZUV2ZW50TGlz
dGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlKQorYm9vbCBRdWlya3M6OnNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFz
c2l2ZShjb25zdCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQsIGNvbnN0IEV2ZW50VHlwZUluZm8m
IGV2ZW50VHlwZSkKIHsKICAgICBhdXRvIGV2ZW50VGFyZ2V0SXNSb290ID0gW10oY29uc3QgRXZl
bnRUYXJnZXQmIGV2ZW50VGFyZ2V0KSB7CiAgICAgICAgIGlmIChpczxMb2NhbERPTVdpbmRvdz4o
ZXZlbnRUYXJnZXQpKQpAQCAtOTcyLDcgKzk3Miw3IEBAIGJvb2wgUXVpcmtzOjpzaG91bGRNYWtl
RXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25z
CiAgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oZXZlbnRUYXJnZXQuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKTsKICAgICB9OwogCi0gICAgaWYgKGV2ZW50TmFtZXMoKS5pc1RvdWNo
U2Nyb2xsQmxvY2tpbmdFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgIGlmIChldmVudFR5cGUu
aXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OlRvdWNoU2Nyb2xsQmxvY2tpbmcpKSB7CiAgICAg
ICAgIGlmIChldmVudFRhcmdldElzUm9vdChldmVudFRhcmdldCkpIHsKICAgICAgICAgICAgIGlm
IChhdXRvKiBkb2N1bWVudCA9IGRvY3VtZW50RnJvbUV2ZW50VGFyZ2V0KGV2ZW50VGFyZ2V0KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQtPnNldHRpbmdzKCkucGFzc2l2ZVRvdWNo
TGlzdGVuZXJzQXNEZWZhdWx0T25Eb2N1bWVudCgpOwpAQCAtOTgwLDcgKzk4MCw3IEBAIGJvb2wg
UXVpcmtzOjpzaG91bGRNYWtlRXZlbnRMaXN0ZW5lclBhc3NpdmUoY29uc3QgRXZlbnRUYXJnZXQm
IGV2ZW50VGFyZ2V0LCBjb25zCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnRUeXBlKSkgeworICAgIGlmIChl
dmVudFR5cGUuaXNJbkNhdGVnb3J5KEV2ZW50Q2F0ZWdvcnk6OldoZWVsKSkgewogICAgICAgICBp
ZiAoZXZlbnRUYXJnZXRJc1Jvb3QoZXZlbnRUYXJnZXQpKSB7CiAgICAgICAgICAgICBpZiAoYXV0
byogZG9jdW1lbnQgPSBkb2N1bWVudEZyb21FdmVudFRhcmdldChldmVudFRhcmdldCkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5zZXR0aW5ncygpLnBhc3NpdmVXaGVlbExpc3Rl
bmVyc0FzRGVmYXVsdE9uRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUXVpcmtzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCmluZGV4IDYwNWY2Y2Zk
NGVlMi4uNTgxNzIyYWY3YzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJr
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKQEAgLTM1LDYgKzM1LDcgQEAg
Y2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgRXZlbnRMaXN0ZW5lcjsKIGNs
YXNzIEV2ZW50VGFyZ2V0OworY2xhc3MgRXZlbnRUeXBlSW5mbzsKIGNsYXNzIEhUTUxFbGVtZW50
OwogY2xhc3MgSFRNTFZpZGVvRWxlbWVudDsKIGNsYXNzIExheW91dFVuaXQ7CkBAIC0xMTMsNyAr
MTE0LDcgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkQnlwYXNzQmFja0ZvcndhcmRDYWNoZSgp
IGNvbnN0OwogICAgIGJvb2wgc2hvdWxkQnlwYXNzQXN5bmNTY3JpcHREZWZlcnJpbmcoKSBjb25z
dDsKIAotICAgIHN0YXRpYyBib29sIHNob3VsZE1ha2VFdmVudExpc3RlbmVyUGFzc2l2ZShjb25z
dCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSk7CisgICAgc3RhdGlj
IGJvb2wgc2hvdWxkTWFrZUV2ZW50TGlzdGVuZXJQYXNzaXZlKGNvbnN0IEV2ZW50VGFyZ2V0Jiwg
Y29uc3QgRXZlbnRUeXBlSW5mbyYgZXZlbnRUeXBlKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJF
QU0pCiAgICAgYm9vbCBzaG91bGRFbmFibGVMZWdhY3lHZXRVc2VyTWVkaWFRdWlyaygpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApp
bmRleCBhNzlmMjFjN2FmMDIuLmMwYTAxYTY4MTQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lk
IFBsdWdpblZpZXc6OmhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCkKICAgICAgICAgICAgIGZyYW1l
LT5ldmVudEhhbmRsZXIoKS5zZXRDYXB0dXJpbmdNb3VzZUV2ZW50c0VsZW1lbnQobnVsbHB0cik7
CiAKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3BsdWdpbi0+aGFuZGxlTW91c2VFdmVudChz
dGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRFdmVudCkpOwotICAgIH0g
ZWxzZSBpZiAoZXZlbnROYW1lcygpLmlzV2hlZWxFdmVudFR5cGUoZXZlbnQudHlwZSgpKSAmJiBj
dXJyZW50RXZlbnQtPnR5cGUoKSA9PSBXZWJFdmVudFR5cGU6OldoZWVsKQorICAgIH0gZWxzZSBp
ZiAoKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkud2hlZWxFdmVudCB8fCBldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLm1vdXNld2hlZWxFdmVudCkgJiYgY3VycmVudEV2ZW50LT50eXBl
KCkgPT0gV2ViRXZlbnRUeXBlOjpXaGVlbCkKICAgICAgICAgZGlkSGFuZGxlRXZlbnQgPSBtX3Bs
dWdpbi0+aGFuZGxlV2hlZWxFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJXaGVlbEV2ZW50Jj4o
KmN1cnJlbnRFdmVudCkpOwogICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVz
KCkubW91c2VvdmVyRXZlbnQgJiYgY3VycmVudEV2ZW50LT50eXBlKCkgPT0gV2ViRXZlbnRUeXBl
OjpNb3VzZU1vdmUpCiAgICAgICAgIGRpZEhhbmRsZUV2ZW50ID0gbV9wbHVnaW4tPmhhbmRsZU1v
dXNlRW50ZXJFdmVudChzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZUV2ZW50Jj4oKmN1cnJlbnRF
dmVudCkpOwo=
</data>
<flag name="commit-queue"
          id="495846"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>