<?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>175746</bug_id>
          
          <creation_ts>2017-08-18 17:01:36 -0700</creation_ts>
          <short_desc>[Beacon] Content extensions should be able to intercept Beacon / Ping redirects</short_desc>
          <delta_ts>2017-08-22 12:14:23 -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>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175756</dependson>
          <blocked>147885</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1340319</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 17:01:36 -0700</bug_when>
    <thetext>Content extensions should be able to intercept Beacon / Ping redirects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340320</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-18 17:01:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/33946050&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340660</commentid>
    <comment_count>2</comment_count>
      <attachid>318650</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 11:34:12 -0700</bug_when>
    <thetext>Created attachment 318650
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340696</commentid>
    <comment_count>3</comment_count>
      <attachid>318658</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 12:20:18 -0700</bug_when>
    <thetext>Created attachment 318658
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340711</commentid>
    <comment_count>4</comment_count>
      <attachid>318662</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 12:59:50 -0700</bug_when>
    <thetext>Created attachment 318662
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340752</commentid>
    <comment_count>5</comment_count>
      <attachid>318672</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 14:24:57 -0700</bug_when>
    <thetext>Created attachment 318672
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340754</commentid>
    <comment_count>6</comment_count>
      <attachid>318673</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 14:26:34 -0700</bug_when>
    <thetext>Created attachment 318673
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340764</commentid>
    <comment_count>7</comment_count>
      <attachid>318676</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 14:48:49 -0700</bug_when>
    <thetext>Created attachment 318676
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340785</commentid>
    <comment_count>8</comment_count>
      <attachid>318678</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 15:28:32 -0700</bug_when>
    <thetext>Created attachment 318678
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340869</commentid>
    <comment_count>9</comment_count>
      <attachid>318678</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-21 17:38:01 -0700</bug_when>
    <thetext>Comment on attachment 318678
Patch

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

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:129
&gt;              completionHandler({ });
&gt; +            didFinish(ResourceError { String(), 0, currentRequest().url(), ASCIILiteral(&quot;Blocked by Content Security Policy&quot;), ResourceError::Type::AccessControl });

I think it would be nicer if the didFinish calls were before the completionHandler calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340887</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-21 18:03:41 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 318678 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318678&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PingLoad.cpp:129
&gt; &gt;              completionHandler({ });
&gt; &gt; +            didFinish(ResourceError { String(), 0, currentRequest().url(), ASCIILiteral(&quot;Blocked by Content Security Policy&quot;), ResourceError::Type::AccessControl });
&gt; 
&gt; I think it would be nicer if the didFinish calls were before the
&gt; completionHandler calls.

This is not possible because didFinish() calls delete this;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340905</commentid>
    <comment_count>11</comment_count>
      <attachid>318678</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-21 18:32:29 -0700</bug_when>
    <thetext>Comment on attachment 318678
Patch

Clearing flags on attachment: 318678

Committed r220996: &lt;http://trac.webkit.org/changeset/220996&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340906</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-21 18:32:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341085</commentid>
    <comment_count>13</comment_count>
      <attachid>318678</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2017-08-22 10:19:15 -0700</bug_when>
    <thetext>Comment on attachment 318678
Patch

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

&gt; Source/WebKit/NetworkProcess/PingLoad.cpp:324
&gt; +// Returns true if we should block the load.

This would be nicer as an enum class return value. Maybe just return status, and then the caller can check status.blockedLoad?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341090</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 10:26:37 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #13)
&gt; Comment on attachment 318678 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=318678&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/NetworkProcess/PingLoad.cpp:324
&gt; &gt; +// Returns true if we should block the load.
&gt; 
&gt; This would be nicer as an enum class return value. Maybe just return status,
&gt; and then the caller can check status.blockedLoad?

I copied the existing pattern but I agree. I&apos;ll clean this up in a follow-up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341184</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-08-22 12:14:23 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #14)
&gt; (In reply to Geoffrey Garen from comment #13)
&gt; &gt; Comment on attachment 318678 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=318678&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebKit/NetworkProcess/PingLoad.cpp:324
&gt; &gt; &gt; +// Returns true if we should block the load.
&gt; &gt; 
&gt; &gt; This would be nicer as an enum class return value. Maybe just return status,
&gt; &gt; and then the caller can check status.blockedLoad?
&gt; 
&gt; I copied the existing pattern but I agree. I&apos;ll clean this up in a follow-up.

Done via Bug 175834.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318650</attachid>
            <date>2017-08-21 11:34:12 -0700</date>
            <delta_ts>2017-08-21 12:20:18 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175746_Beacon_content_extensions_wip.patch</filename>
            <type>text/plain</type>
            <size>9727</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IGE5MjExMGE5NWFkLi5hMjk5N2E0ODE0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0xMzQsNiArMTM0LDEyIEBAIFZlY3RvcjxB
Y3Rpb24+IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJlc291cmNlTG9hZChj
b25zdCBSZXNvdXJjZUxvCiAgICAgcmV0dXJuIGZpbmFsQWN0aW9uczsKIH0KIAordm9pZCBDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb24mKT4mIGFwcGx5KQoreworICAgIGZvciAoYXV0
byYgcGFpciA6IG1fY29udGVudEV4dGVuc2lvbnMpCisgICAgICAgIGFwcGx5KHBhaXIua2V5LCBw
YWlyLnZhbHVlKTsKK30KKwogU3R5bGVTaGVldENvbnRlbnRzKiBDb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ6Omdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGlkZW50aWZp
ZXIpIGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgY29udGVudEV4dGVuc2lvbiA9IG1fY29udGVu
dEV4dGVuc2lvbnMuZ2V0KGlkZW50aWZpZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBh
ZWMzOTE1NjhjNi4uYWZiMTJmZmEzZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRl
bnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC02OCw2
ICs2OCw4IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcmIGRpc3BsYXlOb25l
Q1NTUnVsZSgpOwogCisgICAgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChj
b25zdCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uJik+Jik7CisKIHByaXZhdGU6CiAgICAgSGFz
aE1hcDxTdHJpbmcsIFJlZjxDb250ZW50RXh0ZW5zaW9uPj4gbV9jb250ZW50RXh0ZW5zaW9uczsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5oCmluZGV4IDg0YTg2YjE1NjdlLi4wNjYxYjgxMDczMCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKQEAgLTUwNCw3ICs1MDQsNyBAQCBwdWJsaWM6CiAKICAgICBQbHVnaW5JbmZvUHJvdmlk
ZXImIHBsdWdpbkluZm9Qcm92aWRlcigpOwogCi0gICAgVXNlckNvbnRlbnRQcm92aWRlciYgdXNl
ckNvbnRlbnRQcm92aWRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFVzZXJDb250ZW50UHJvdmlk
ZXImIHVzZXJDb250ZW50UHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFVz
ZXJDb250ZW50UHJvdmlkZXIoUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYpOwogCiAgICAgVmlz
aXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
VXNlckNvbnRlbnRQcm92aWRlci5jcHAKaW5kZXggZDU1MjRkOWJkYWEuLjAwMTdlOWE0ZjkzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKQEAgLTExNiw2
ICsxMTYsMTUgQEAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb24+IFVzZXJDb250ZW50
UHJvdmlkZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY28KIAogICAgIHJldHVybiB1c2VyQ29u
dGVudEV4dGVuc2lvbkJhY2tlbmQoKS5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9h
ZEluZm8pOwogfQorCit2b2lkIFVzZXJDb250ZW50UHJvdmlkZXI6OmZvckVhY2hDb250ZW50RXh0
ZW5zaW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0
ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbiYpPiYgYXBwbHksIERvY3VtZW50TG9hZGVyJiBpbml0
aWF0aW5nRG9jdW1lbnRMb2FkZXIpCit7CisgICAgaWYgKCFjb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgdXNl
ckNvbnRlbnRFeHRlbnNpb25CYWNrZW5kKCkuZm9yRWFjaChhcHBseSk7Cit9CisKICNlbmRpZgog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQ
cm92aWRlci5oCmluZGV4IGQ0MjFjMWU3OGM2Li5hNjVkMWJiZmQyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgog
ICAgIC8vIHdoaWNoIHNob3VsZCBhbHdheXMgZXhpc3QuCiAgICAgQ29udGVudEV4dGVuc2lvbnM6
OkJsb2NrZWRTdGF0dXMgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29uc3Qg
VVJMJiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gYWN0aW9uc0ZvclJl
c291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiwgRG9jdW1lbnRMb2FkZXImIGluaXRp
YXRpbmdEb2N1bWVudExvYWRlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoQ29u
dGVudEV4dGVuc2lvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgQ29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mKT4mLCBEb2N1bWVudExvYWRlciYgaW5p
dGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuY3BwCmluZGV4IDk4MmY2NzlhYWU3Li41ODQzMWFjNWM5OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTg4LDYgKzg4LDkgQEAgdm9pZCBOZXR3b3JrUmVzb3Vy
Y2VMb2FkUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAg
ICAgICAgZW5jb2RlciA8PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigq
c291cmNlT3JpZ2luKTsKICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2Rl
ciA8PCBjc3BSZXNwb25zZUhlYWRlcnM7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
KyAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CisjZW5kaWYKIH0KIAogYm9vbCBOZXR3
b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2Rlciwg
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJlc3VsdCkKQEAgLTE2Nyw2ICsxNzAsMTEg
QEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2Rl
ciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5jc3BSZXNwb25zZUhlYWRlcnMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNv
bnRlbnRSdWxlTGlzdHMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJl
dHVybiB0cnVlOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDVjOTJlZTBj
ZWM5Li40ZmM5M2MwZDYxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMjgsNiArMjgs
NyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0
YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFk
ZXJzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1Jlc291cmNlSGFuZGxlLmg+CkBAIC01OSw2ICs2MCwxMCBAQCBwdWJsaWM6CiAgICAgUmVm
UHRyPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luPiBzb3VyY2VPcmlnaW47CiAgICAgV2ViQ29yZTo6
RmV0Y2hPcHRpb25zOjpNb2RlIG1vZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250
ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKKwor
I2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YT4+IGNvbnRlbnRSdWxlTGlzdHM7Cisj
ZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcAppbmRleCAyMTJjN2E2NTFjZC4uNjFkNDYzNTg4NmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCkBAIC0zMyw2ICszMyw3IEBA
CiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5o
IgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2Vi
RXJyb3JzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oPgpAQCAtMTE4LDYgKzEx
OSw4IEBAIHZvaWQgUGluZ0xvYWQ6OndpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNl
UmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNlLCBSCiAgICAgICAgIH0KICAgICB9CiAKKyAgICAv
LyBGSVhNRTogQ29uc3VsdCBDb250ZW50IEV4dGVuc2lvbnMuCisKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGVuc3VyZSB0aGUgbnVtYmVyIG9mIHJlZGlyZWN0cyBkb2VzIG5vdCBleGNlZWQgMjAu
CiAKICAgICBpZiAoaXNBbGxvd2VkUmVkaXJlY3QocmVxdWVzdC51cmwoKSkpIHsKQEAgLTI5Niw2
ICsyOTksMTYgQEAgdm9pZCBQaW5nTG9hZDo6cHJlZmxpZ2h0U3VjY2VzcyhSZXNvdXJjZVJlcXVl
c3QmJiByZXF1ZXN0KQogICAgICAgICBsb2FkUmVxdWVzdChXVEZNb3ZlKGFjdHVhbFJlcXVlc3Qp
KTsKIH0KIAorQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYgUGlu
Z0xvYWQ6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZCkgeworICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZD4oKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wYXJhbWV0ZXJzLmNvbnRlbnRS
dWxlTGlzdHMpCisgICAgICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC0+YWRkQ29u
dGVudEV4dGVuc2lvbihwYWlyLmZpcnN0LCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3Jl
YXRlKFdURk1vdmUocGFpci5zZWNvbmQpKSk7CisgICAgfQorICAgIHJldHVybiAqbV9jb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYg
Ly8gVVNFKE5FVFdPUktfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xv
YWQuaAppbmRleCBjZjZhYTEwYWI4YS4uN2U5MDMwMzczYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdv
cmtEYXRhVGFzay5oIgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgi
CisjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgs
NiArNjksOCBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVz
dFdpdGhQcmVmbGlnaHQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgcHJl
ZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKKyAgICBXZWJDb3Jl
OjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kJiBjb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQoKTsKKwogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0
eU9yaWdpbigpIGNvbnN0OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBj
dXJyZW50UmVxdWVzdCgpIGNvbnN0OwpAQCAtODQsNiArODcsOSBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJlY3RDb21wbGV0aW9uSGFu
ZGxlciBtX3JlZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IG1fY29udGVudEV4
dGVuc2lvbnNCYWNrZW5kOworI2VuZGlmCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdDsKIH07CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcApp
bmRleCA2ZmJlMzA2ZTRkNy4uNGUwMjViNDMzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJO
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2Vy
LmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJX
ZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgpAQCAtNjEsNiArNjIsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJp
dHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRQ
cm92aWRlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKQEAgLTQzMyw2ICs0MzUsMTYgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVn
eTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Y28KICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRl
bnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAgfQogCisjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFt
ZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0g
ZnJhbWUucGFnZSgpKSB7CisgICAgICAgICAgICBwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCku
Zm9yRWFjaENvbnRlbnRFeHRlbnNpb24oWyZsb2FkUGFyYW1ldGVyc10oY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbiYgY29udGVudEV4
dGVuc2lvbikgeworICAgICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlz
dHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PGNvbnN0IFdl
YkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Jj4oY29udGVudEV4dGVuc2lvbi5jb21waWxlZEV4dGVu
c2lvbigpKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIH0sICpkb2N1bWVudExvYWRlcik7CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAg
ICAgbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRp
ZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318658</attachid>
            <date>2017-08-21 12:20:18 -0700</date>
            <delta_ts>2017-08-21 12:59:50 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175746_Beacon_content_extensions_wip.patch</filename>
            <type>text/plain</type>
            <size>14103</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uQWN0aW9ucy5oCmluZGV4IDk5MmI2YmJmNzcwLi4wYTZiMTU4MjM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQWN0aW9ucy5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBCbG9ja2VkU3RhdHVzIHsK
ICAgICBib29sIG1hZGVIVFRQUyB7IGZhbHNlIH07CiB9OwogCi12b2lkIGFwcGx5QmxvY2tlZFN0
YXR1c1RvUmVxdWVzdChjb25zdCBCbG9ja2VkU3RhdHVzJiwgUmVzb3VyY2VSZXF1ZXN0Jik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChjb25zdCBCbG9j
a2VkU3RhdHVzJiwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IGE5MjExMGE5NWFkLi4y
OWQ5YzUzNDJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0xMzQsNiArMTM0LDEy
IEBAIFZlY3RvcjxBY3Rpb24+IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJl
c291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvCiAgICAgcmV0dXJuIGZpbmFsQWN0aW9uczsKIH0K
IAordm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb24mKT4mIGFwcGx5KQorewor
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29udGVudEV4dGVuc2lvbnMpCisgICAgICAgIGFwcGx5
KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKK30KKwogU3R5bGVTaGVldENvbnRlbnRzKiBDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ6Omdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgY29udGVudEV4dGVuc2lv
biA9IG1fY29udGVudEV4dGVuc2lvbnMuZ2V0KGlkZW50aWZpZXIpOwpAQCAtMjEzLDYgKzIxOSw0
MiBAQCBCbG9ja2VkU3RhdHVzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29ucwogICAgIHJldHVybiB7IHdpbGxCbG9ja0xvYWQs
IHdpbGxCbG9ja0Nvb2tpZXMsIHdpbGxNYWtlSFRUUFMgfTsKIH0KIAorQmxvY2tlZFN0YXR1cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQ
aW5nTG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCit7Cisg
ICAgaWYgKG1fY29udGVudEV4dGVuc2lvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvID0geyB1cmwsIG1haW5E
b2N1bWVudFVSTCwgUmVzb3VyY2VUeXBlOjpSYXcgfTsKKyAgICBWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OkFjdGlvbj4gYWN0aW9ucyA9IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VM
b2FkSW5mbyk7CisKKyAgICBib29sIHdpbGxCbG9ja0xvYWQgPSBmYWxzZTsKKyAgICBib29sIHdp
bGxCbG9ja0Nvb2tpZXMgPSBmYWxzZTsKKyAgICBib29sIHdpbGxNYWtlSFRUUFMgPSBmYWxzZTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlvbiA6IGFjdGlvbnMpIHsKKyAgICAgICAgc3dpdGNo
IChhY3Rpb24udHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZDoKKyAgICAgICAgICAgIHdpbGxCbG9ja0xvYWQgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrQ29va2llczoKKyAgICAgICAgICAgIHdpbGxCbG9ja0Nvb2tpZXMgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3I6CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU3R5bGVTaGVldDoKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1h
a2VIVFRQUzoKKyAgICAgICAgICAgIGlmICgodXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwu
cHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICAg
ICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SWdub3JlUHJldmlvdXNSdWxlczoKKyAg
ICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SW52YWxpZEFjdGlvbjoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3aWxsQmxvY2tDb29raWVzLCB3aWxs
TWFrZUhUVFBTIH07Cit9CisKIGNvbnN0IFN0cmluZyYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
OjpkaXNwbGF5Tm9uZUNTU1J1bGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IHJ1bGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImRpc3BsYXk6bm9uZSAhaW1w
b3J0YW50OyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggYWVjMzkxNTY4YzYuLmQ3NTQx
N2VlNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtNjUsOSArNjUsMTIgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFN0eWxlU2hlZXRDb250ZW50cyogZ2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKICAgICBCbG9j
a2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKGNvbnN0IFVSTCYs
IFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgQmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yUGluZ0xvYWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwp
OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxheU5vbmVDU1NSdWxlKCk7CiAKKyAg
ICB2b2lkIGZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENv
bnRlbnRFeHRlbnNpb24mKT4mKTsKKwogcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVm
PENvbnRlbnRFeHRlbnNpb24+PiBtX2NvbnRlbnRFeHRlbnNpb25zOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggODRhODZiMTU2N2UuLjA2NjFiODEwNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTA0LDcg
KzUwNCw3IEBAIHB1YmxpYzoKIAogICAgIFBsdWdpbkluZm9Qcm92aWRlciYgcGx1Z2luSW5mb1By
b3ZpZGVyKCk7CiAKLSAgICBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVy
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQ
cm92aWRlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRQcm92aWRl
cihSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2
aXNpdGVkTGlua1N0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmNwcAppbmRleCBkNTUyNGQ5YmRhYS4uMDAxN2U5YTRmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcApAQCAtMTE2LDYgKzExNiwxNSBAQCBWZWN0
b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0aW9u
c0ZvclJlc291cmNlTG9hZChjbwogCiAgICAgcmV0dXJuIHVzZXJDb250ZW50RXh0ZW5zaW9uQmFj
a2VuZCgpLmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VMb2FkSW5mbyk7CiB9CisKK3Zv
aWQgVXNlckNvbnRlbnRQcm92aWRlcjo6Zm9yRWFjaENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uJik+JiBhcHBseSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExv
YWRlcikKK3sKKyAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9j
dW1lbnRMb2FkZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKS5mb3JFYWNoKGFwcGx5KTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKaW5kZXgg
ZDQyMWMxZTc4YzYuLmE2NWQxYmJmZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50UHJvdmlkZXIuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2hpY2ggc2hv
dWxkIGFsd2F5cyBleGlzdC4KICAgICBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBw
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmLCBSZXNvdXJjZVR5
cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwogICAgIFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0
IFJlc291cmNlTG9hZEluZm8mLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hDb250ZW50RXh0ZW5zaW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbiYpPiYsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRM
b2FkZXIpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
aW5kZXggOTgyZjY3OWFhZTcuLjcyZGU2MGEwMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcApAQCAtODgsNiArODgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8
PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8PCBjc3BSZXNwb25z
ZUhlYWRlcnM7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBlbmNvZGVyIDw8
IG1haW5Eb2N1bWVudFVSTDsKKyAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CisjZW5k
aWYKIH0KIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJlc3VsdCkK
QEAgLTE2Nyw2ICsxNzEsMTQgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jc3BSZXNwb25zZUhlYWRlcnMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRlbnRSdWxlTGlzdHMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDVjOTJlZTBjZWM5Li5jMjkxOGVmOWVjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+
CkBAIC01OSw2ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBzb3VyY2VPcmlnaW47CiAgICAgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1v
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKKworI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisgICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVu
dFJ1bGVMaXN0czsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDIxMmM3YTY1MWNkLi5iMDhi
MzVmYzU2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+
CkBAIC0xMDIsMTQgKzEwMywyMCBAQCBTZWN1cml0eU9yaWdpbiYgUGluZ0xvYWQ6OnNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKIAogdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0OwotCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBzaG91bGRGb2xs
b3dSZWRpcmVjdHM/ICVkIiwgbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiAg
ICAgaWYgKCFtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAo
cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCkpIHsKKyAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBSZWRp
cmVjdCB3YXMgYmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbnMiKTsKKyAgICAgICAgbV9sYXN0
UmVkaXJlY3Rpb25SZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVl
c3QgPSByZXF1ZXN0OworCiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHRo
aXMtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29udGVudFNlY3Vy
aXR5UG9saWN5LT5hbGxvd0Nvbm5lY3RUb1NvdXJjZShyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJl
c3BvbnNlLmlzTnVsbCgpID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNl
UmVjZWl2ZWQ6Ok5vIDogQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVj
ZWl2ZWQ6OlllcykpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uIC0gUmVkaXJlY3Qgd2FzIGJsb2NrZWQgYnkgQ1NQIik7CkBA
IC0yOTYsNiArMzAzLDI4IEBAIHZvaWQgUGluZ0xvYWQ6OnByZWZsaWdodFN1Y2Nlc3MoUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKICAgICAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxS
ZXF1ZXN0KSk7CiB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCitDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kJiBQaW5nTG9hZDo6Y29udGVudEV4
dGVuc2lvbnNCYWNrZW5kKCkKK3sKKyAgICBpZiAoIW1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5k
KSB7CisgICAgICAgIG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1
ZTxDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAg
ICBmb3IgKGF1dG8mIHBhaXIgOiBtX3BhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cykKKyAgICAg
ICAgICAgIG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kLT5hZGRDb250ZW50RXh0ZW5zaW9uKHBh
aXIuZmlyc3QsIFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShwYWly
LnNlY29uZCkpKTsKKyAgICB9CisgICAgcmV0dXJuICptX2NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZDsKK30KKworLy8gUmV0dXJucyB0cnVlIGlmIHdlIHNob3VsZCBibG9jayB0aGUgbG9hZC4KK2Jv
b2wgUGluZ0xvYWQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25z
QmFja2VuZCgpLnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0
LnVybCgpLCBtX3BhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMKTsKKyAgICBhcHBseUJsb2NrZWRT
dGF0dXNUb1JlcXVlc3Qoc3RhdHVzLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gc3RhdHVzLmJsb2Nr
ZWRMb2FkOworfQorCisjZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKwogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGNmNmFhMTBhYjhhLi5lOTkz
ZDE2MTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMjks
NiArMjksNyBAQAogCiAjaW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0
d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSwxMSBAQCBwcml2YXRlOgogICAgIHZv
aWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiYpOwogICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJik7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNvbnRl
bnRFeHRlbnNpb25zQmFja2VuZCgpOworICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25S
dWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAgIFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0OwpAQCAt
ODQsNiArOTAsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVl
IH07CiAgICAgUmVkaXJlY3RDb21wbGV0aW9uSGFuZGxlciBtX3JlZGlyZWN0SGFuZGxlcjsKICAg
ICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+
IG1fY29udGVudFNlY3VyaXR5UG9saWN5OworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMp
CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ+IG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOworI2VuZGlmCiAg
ICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0
aW9uUmVxdWVzdDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9O
ZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA2ZmJlMzA2ZTRkNy4uMDViODAxNGE3
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJv
Y2Vzc0Nvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
cy5oIgogI2luY2x1ZGUgIlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRD
b250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNp
bmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNjEsNiArNjIs
NyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1NldHRpbmdzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgor
I2luY2x1ZGUgPFdlYkNvcmUvVXNlckNvbnRlbnRQcm92aWRlci5oPgogI2luY2x1ZGUgPHBhbC9T
ZXNzaW9uSUQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQzMyw2ICs0
MzUsMTggQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJh
bWUsIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY28KICAgICAgICAgICAgIGxvYWRQYXJhbWV0
ZXJzLmNzcFJlc3BvbnNlSGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VI
ZWFkZXJzKCk7CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBs
b2FkUGFyYW1ldGVycy5tYWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51
cmwoKTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkp
IHsKKyAgICAgICAgICAgIHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoQ29udGVu
dEV4dGVuc2lvbihbJmxvYWRQYXJhbWV0ZXJzXShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENv
bnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uJiBjb250ZW50RXh0ZW5zaW9uKSB7Cisg
ICAgICAgICAgICAgICAgbG9hZFBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cy5hcHBlbmQoc3Rk
OjptYWtlX3BhaXIoaWRlbnRpZmllciwgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3QmPihjb250ZW50RXh0ZW5zaW9uLmNvbXBpbGVkRXh0ZW5zaW9uKCkpLmRhdGEo
KSkpOworICAgICAgICAgICAgfSwgKmRvY3VtZW50TG9hZGVyKTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZgorCiAgICAgaWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBtX3BpbmdMb2Fk
Q29tcGxldGlvbkhhbmRsZXJzLmFkZChsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318662</attachid>
            <date>2017-08-21 12:59:50 -0700</date>
            <delta_ts>2017-08-21 14:24:57 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175746_Beacon_content_extensions_wip.patch</filename>
            <type>text/plain</type>
            <size>14145</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25BY3Rpb25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uQWN0aW9ucy5oCmluZGV4IDk5MmI2YmJmNzcwLi4wYTZiMTU4MjM1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uQWN0aW9ucy5oCkBAIC01MSw3ICs1MSw3IEBAIHN0cnVjdCBCbG9ja2VkU3RhdHVzIHsK
ICAgICBib29sIG1hZGVIVFRQUyB7IGZhbHNlIH07CiB9OwogCi12b2lkIGFwcGx5QmxvY2tlZFN0
YXR1c1RvUmVxdWVzdChjb25zdCBCbG9ja2VkU3RhdHVzJiwgUmVzb3VyY2VSZXF1ZXN0Jik7CitX
RUJDT1JFX0VYUE9SVCB2b2lkIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChjb25zdCBCbG9j
a2VkU3RhdHVzJiwgUmVzb3VyY2VSZXF1ZXN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIENvbnRlbnRF
eHRlbnNpb25zCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0
ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCmluZGV4IGE5MjExMGE5NWFkLi4y
OWQ5YzUzNDJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50
ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCkBAIC0xMzQsNiArMTM0LDEy
IEBAIFZlY3RvcjxBY3Rpb24+IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWN0aW9uc0ZvclJl
c291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvCiAgICAgcmV0dXJuIGZpbmFsQWN0aW9uczsKIH0K
IAordm9pZCBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmZvckVhY2goY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb24mKT4mIGFwcGx5KQorewor
ICAgIGZvciAoYXV0byYgcGFpciA6IG1fY29udGVudEV4dGVuc2lvbnMpCisgICAgICAgIGFwcGx5
KHBhaXIua2V5LCBwYWlyLnZhbHVlKTsKK30KKwogU3R5bGVTaGVldENvbnRlbnRzKiBDb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ6Omdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldChjb25zdCBTdHJp
bmcmIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAgICAgY29uc3QgYXV0byYgY29udGVudEV4dGVuc2lv
biA9IG1fY29udGVudEV4dGVuc2lvbnMuZ2V0KGlkZW50aWZpZXIpOwpAQCAtMjEzLDYgKzIxOSw0
MiBAQCBCbG9ja2VkU3RhdHVzIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29ucwogICAgIHJldHVybiB7IHdpbGxCbG9ja0xvYWQs
IHdpbGxCbG9ja0Nvb2tpZXMsIHdpbGxNYWtlSFRUUFMgfTsKIH0KIAorQmxvY2tlZFN0YXR1cyBD
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQ
aW5nTG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwpCit7Cisg
ICAgaWYgKG1fY29udGVudEV4dGVuc2lvbnMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgUmVzb3VyY2VMb2FkSW5mbyByZXNvdXJjZUxvYWRJbmZvID0geyB1cmwsIG1haW5E
b2N1bWVudFVSTCwgUmVzb3VyY2VUeXBlOjpSYXcgfTsKKyAgICBWZWN0b3I8Q29udGVudEV4dGVu
c2lvbnM6OkFjdGlvbj4gYWN0aW9ucyA9IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VM
b2FkSW5mbyk7CisKKyAgICBib29sIHdpbGxCbG9ja0xvYWQgPSBmYWxzZTsKKyAgICBib29sIHdp
bGxCbG9ja0Nvb2tpZXMgPSBmYWxzZTsKKyAgICBib29sIHdpbGxNYWtlSFRUUFMgPSBmYWxzZTsK
KyAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlvbiA6IGFjdGlvbnMpIHsKKyAgICAgICAgc3dpdGNo
IChhY3Rpb24udHlwZSgpKSB7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkJsb2NrTG9hZDoKKyAgICAgICAgICAgIHdpbGxCbG9ja0xvYWQgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6OkJsb2NrQ29va2llczoKKyAgICAgICAgICAgIHdpbGxCbG9ja0Nvb2tpZXMgPSB0cnVlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlv
blR5cGU6OkNTU0Rpc3BsYXlOb25lU2VsZWN0b3I6CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVu
c2lvbnM6OkFjdGlvblR5cGU6OkNTU0Rpc3BsYXlOb25lU3R5bGVTaGVldDoKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5cGU6Ok1h
a2VIVFRQUzoKKyAgICAgICAgICAgIGlmICgodXJsLnByb3RvY29sSXMoImh0dHAiKSB8fCB1cmwu
cHJvdG9jb2xJcygid3MiKSkgJiYgKCF1cmwucG9ydCgpIHx8IGlzRGVmYXVsdFBvcnRGb3JQcm90
b2NvbCh1cmwucG9ydCgpLnZhbHVlKCksIHVybC5wcm90b2NvbCgpKSkpCisgICAgICAgICAgICAg
ICAgd2lsbE1ha2VIVFRQUyA9IHRydWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SWdub3JlUHJldmlvdXNSdWxlczoKKyAg
ICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SW52YWxpZEFjdGlvbjoK
KyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3aWxsQmxvY2tDb29raWVzLCB3aWxs
TWFrZUhUVFBTIH07Cit9CisKIGNvbnN0IFN0cmluZyYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
OjpkaXNwbGF5Tm9uZUNTU1J1bGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25z
dCBTdHJpbmc+IHJ1bGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImRpc3BsYXk6bm9uZSAhaW1w
b3J0YW50OyIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggYWVjMzkxNTY4YzYuLmQ3NTQx
N2VlNjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5z
aW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaApAQCAtNjUsOSArNjUsMTIgQEAgcHVibGlj
OgogICAgIFdFQkNPUkVfRVhQT1JUIFN0eWxlU2hlZXRDb250ZW50cyogZ2xvYmFsRGlzcGxheU5v
bmVTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikgY29uc3Q7CiAKICAgICBCbG9j
a2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKGNvbnN0IFVSTCYs
IFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgQmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yUGluZ0xvYWQoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwp
OwogCiAgICAgc3RhdGljIGNvbnN0IFN0cmluZyYgZGlzcGxheU5vbmVDU1NSdWxlKCk7CiAKKyAg
ICB2b2lkIGZvckVhY2goY29uc3QgV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENv
bnRlbnRFeHRlbnNpb24mKT4mKTsKKwogcHJpdmF0ZToKICAgICBIYXNoTWFwPFN0cmluZywgUmVm
PENvbnRlbnRFeHRlbnNpb24+PiBtX2NvbnRlbnRFeHRlbnNpb25zOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggODRhODZiMTU2N2UuLjA2NjFiODEwNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTA0LDcg
KzUwNCw3IEBAIHB1YmxpYzoKIAogICAgIFBsdWdpbkluZm9Qcm92aWRlciYgcGx1Z2luSW5mb1By
b3ZpZGVyKCk7CiAKLSAgICBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVy
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQ
cm92aWRlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRQcm92aWRl
cihSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2
aXNpdGVkTGlua1N0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmNwcAppbmRleCBkNTUyNGQ5YmRhYS4uMDAxN2U5YTRmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcApAQCAtMTE2LDYgKzExNiwxNSBAQCBWZWN0
b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0aW9u
c0ZvclJlc291cmNlTG9hZChjbwogCiAgICAgcmV0dXJuIHVzZXJDb250ZW50RXh0ZW5zaW9uQmFj
a2VuZCgpLmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VMb2FkSW5mbyk7CiB9CisKK3Zv
aWQgVXNlckNvbnRlbnRQcm92aWRlcjo6Zm9yRWFjaENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uJik+JiBhcHBseSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExv
YWRlcikKK3sKKyAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9j
dW1lbnRMb2FkZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKS5mb3JFYWNoKGFwcGx5KTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKaW5kZXgg
ZDQyMWMxZTc4YzYuLmE2NWQxYmJmZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50UHJvdmlkZXIuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2hpY2ggc2hv
dWxkIGFsd2F5cyBleGlzdC4KICAgICBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBw
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmLCBSZXNvdXJjZVR5
cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwogICAgIFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0
IFJlc291cmNlTG9hZEluZm8mLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hDb250ZW50RXh0ZW5zaW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbiYpPiYsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRM
b2FkZXIpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
aW5kZXggOTgyZjY3OWFhZTcuLjcyZGU2MGEwMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcApAQCAtODgsNiArODgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8
PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8PCBjc3BSZXNwb25z
ZUhlYWRlcnM7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBlbmNvZGVyIDw8
IG1haW5Eb2N1bWVudFVSTDsKKyAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CisjZW5k
aWYKIH0KIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJlc3VsdCkK
QEAgLTE2Nyw2ICsxNzEsMTQgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jc3BSZXNwb25zZUhlYWRlcnMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRlbnRSdWxlTGlzdHMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDVjOTJlZTBjZWM5Li5jMjkxOGVmOWVjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+
CkBAIC01OSw2ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBzb3VyY2VPcmlnaW47CiAgICAgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1v
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKKworI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisgICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVu
dFJ1bGVMaXN0czsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDIxMmM3YTY1MWNkLi5lMWNi
NTU5ZTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+
CkBAIC0xMDIsMTQgKzEwMywyMyBAQCBTZWN1cml0eU9yaWdpbiYgUGluZ0xvYWQ6OnNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKIAogdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0OwotCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBzaG91bGRGb2xs
b3dSZWRpcmVjdHM/ICVkIiwgbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiAg
ICAgaWYgKCFtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1
bGVzRm9yTG9hZChyZXF1ZXN0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdhcyBibG9ja2VkIGJ5IGNvbnRl
bnQgZXh0ZW5zaW9ucyIpOworICAgICAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1
ZXN0OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0Owor
CiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHRoaXMtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LT5hbGxv
d0Nvbm5lY3RUb1NvdXJjZShyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgp
ID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vIDog
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uIC0gUmVkaXJlY3Qgd2FzIGJsb2NrZWQgYnkgQ1NQIik7CkBAIC0yOTYsNiArMzA2LDI4
IEBAIHZvaWQgUGluZ0xvYWQ6OnByZWZsaWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKICAgICAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxSZXF1ZXN0KSk7CiB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCitDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kJiBQaW5nTG9hZDo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5k
KCkKK3sKKyAgICBpZiAoIW1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKSB7CisgICAgICAgIG1f
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RXh0ZW5z
aW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX3BhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cykKKyAgICAgICAgICAgIG1fY29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLT5hZGRDb250ZW50RXh0ZW5zaW9uKHBhaXIuZmlyc3QsIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShwYWlyLnNlY29uZCkpKTsKKyAg
ICB9CisgICAgcmV0dXJuICptX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZDsKK30KKworLy8gUmV0
dXJucyB0cnVlIGlmIHdlIHNob3VsZCBibG9jayB0aGUgbG9hZC4KK2Jvb2wgUGluZ0xvYWQ6OnBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBhdXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpLnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX3BhcmFt
ZXRlcnMubWFpbkRvY3VtZW50VVJMKTsKKyAgICBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3Qo
c3RhdHVzLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gc3RhdHVzLmJsb2NrZWRMb2FkOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGNmNmFhMTBhYjhhLi5lOTkzZDE2MTAyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02OCw2ICs2OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZCgpOworICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAgIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0OwpAQCAtODQsNiArOTAsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciBtX3JlZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3Vy
aXR5UG9saWN5OworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQ+IG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOworI2VuZGlmCiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCA2ZmJlMzA2ZTRkNy4uMDViODAxNGE3OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNjEsNiArNjIsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckNvbnRlbnRQcm92aWRlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQzMyw2ICs0MzUsMTggQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY28KICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAg
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBsb2FkUGFyYW1ldGVycy5t
YWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKTsKKworICAgIGlm
IChhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkpIHsKKyAgICAgICAgICAg
IHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoQ29udGVudEV4dGVuc2lvbihbJmxv
YWRQYXJhbWV0ZXJzXShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uJiBjb250ZW50RXh0ZW5zaW9uKSB7CisgICAgICAgICAgICAgICAg
bG9hZFBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRl
bnRpZmllciwgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QmPihj
b250ZW50RXh0ZW5zaW9uLmNvbXBpbGVkRXh0ZW5zaW9uKCkpLmRhdGEoKSkpOworICAgICAgICAg
ICAgfSwgKmRvY3VtZW50TG9hZGVyKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAg
aWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRs
ZXJzLmFkZChsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318672</attachid>
            <date>2017-08-21 14:24:57 -0700</date>
            <delta_ts>2017-08-21 14:26:34 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175746_Beacon_content_extensions_wip.patch</filename>
            <type>text/plain</type>
            <size>19864</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9u
cy9iZWFjb24tYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMjFmMDkyYzI2YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFj
b24tYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgOTogQ29udGVudCBibG9ja2VyIHByZXZlbnRlZCBmcmFtZSBkaXNwbGF5aW5nIGh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMC9XZWJLaXQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1i
bG9ja2VkLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBodHRwOi8vbG9jYWxob3N0
Ojg4MDAvV2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weQorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDk6IEJlYWNvbiBBUEkgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9z
dDo4ODAwL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzL2JlYWNvbi1wcmVmbGlnaHQucHkuIFJlc291
cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisKK1BBU1MgQ29udGVudCBleHRlbnNpb25z
IHNob3VsZCBiZSBhYmxlIHRvIGJsb2NrIGJlYWNvbnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1i
bG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA3ZWEw
MThjNmIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nv
bnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorICAgIGNvbnN0IFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7
CisKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9mYWxzZShuYXZpZ2F0b3Iuc2Vu
ZEJlYWNvbihSRVNPVVJDRVNfRElSICsgImJlYWNvbi1wcmVmbGlnaHQucHkiKSwgInNlbmRCZWFj
b24gc2hvdWxkIHJldHVybiBmYWxzZSIpOworICAgIH0sICJDb250ZW50IGV4dGVuc2lvbnMgc2hv
dWxkIGJlIGFibGUgdG8gYmxvY2sgYmVhY29ucyIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2Nr
ZWQuaHRtbC5qc29uIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNp
b25zL2JlYWNvbi1ibG9ja2VkLmh0bWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uYzNhNjAxYzRmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbC5qc29u
CkBAIC0wLDAgKzEsMTAgQEAKK1sKKyAgICB7CisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAg
ICAgICAgInVybC1maWx0ZXIiOiAiYmVhY29uLXByZWZsaWdodC5weSIKKyAgICAgICAgfSwKKyAg
ICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9
CisgICAgfQorXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRl
bnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tcmVkaXJlY3Qt
YmxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjRjZDIzOWY2MTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
YmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDb250ZW50IGV4dGVuc2lvbnMgc2hvdWxkIGJl
IGFibGUgdG8gYmxvY2sgYmVhY29uIHJlZGlyZWN0cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9j
a2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMv
YmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMmQ0NTEwNDZmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3Vi
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQv
YmVhY29uL3Jlc291cmNlcy8iOworCitmdW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7Cisg
IHZhciBjaGVja1VybCA9IFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9jbWQ9
Z2V0JmlkPSIgKyBpZDsKKworICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
c3RlcF90aW1lb3V0KHRlc3Quc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIGZldGNoKGNoZWNrVXJs
KS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oYm9keSA9
PiB7CisgICAgICAgICAgcmVzb2x2ZShib2R5KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAg
ICB9KSwgMTAwMCk7CisgIH0pOworfQorCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewor
ICB2YXIgdGVzdEJhc2UgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOICsgUkVT
T1VSQ0VTX0RJUjsKKyAgdmFyIGlkID0gc2VsZi50b2tlbigpOworICB2YXIgdGFyZ2V0ID0gZW5j
b2RlVVJJQ29tcG9uZW50KHRlc3RCYXNlICsgImJlYWNvbi1wcmVmbGlnaHQucHk/YWxsb3dDb3Jz
PTEmY21kPXB1dCZpZD0iICsgaWQpOworCisgIC8vIDMwNyAmIDMwOCByZWRpcmVjdGlvbnMgYXJl
IHRoZSBvbmx5IG9uZXMgdGhhdCBtYWludGFpbiB0aGUgUE9TVCBtZXRob2QuCisgIHZhciB0ZXN0
VXJsID0gUkVTT1VSQ0VTX0RJUiArICJyZWRpcmVjdC5weT9yZWRpcmVjdF9zdGF0dXM9MzA3Jmxv
Y2F0aW9uPSIgKyB0YXJnZXQ7CisKKyAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24o
dGVzdFVybCksICJzZW5kQmVhY29uIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICByZXR1cm4gcG9s
bFJlc3VsdCh0ZXN0LCBpZCkgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAvLyBSZWRpcmVjdGVkIFVS
TCBjb250YWlucyAiJmNvdW50PSIgd2hpY2ggdGhlIGNvbnRlbnQgZmlsdGVyIGJsb2Nrcy4KKyAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsnYmVhY29uJ10sIDAsICJEaWQgbm90IHJlY2VpdmUgYmVh
Y29uIikKKyAgfSk7Cit9LCAiQ29udGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGJs
b2NrIGJlYWNvbiByZWRpcmVjdHMiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24tcHJlZmxpZ2h0LnB5IGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24tcHJlZmxpZ2h0LnB5CmluZGV4
IDllNjRlNzZmZmQ2Li5jNjIyMTVhZWJmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24tcHJlZmxpZ2h0LnB5CisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weQpAQCAtNDIsNiAr
NDIsNyBAQCBkZWYgbWFpbihyZXF1ZXN0LCByZXNwb25zZSk6CiAgICAgICBzdGFzaGVkX2RhdGFb
J2JlYWNvbiddID0gMTsKICAgICAgIHN0YXNoZWRfZGF0YVsnYmVhY29uX2Nvb2tpZV9oZWFkZXIn
XSA9IHJlcXVlc3QuaGVhZGVycy5nZXQoIkNvb2tpZSIsICIiKQogICAgICAgc3Rhc2hlZF9kYXRh
WydiZWFjb25fb3JpZ2luJ10gPSByZXF1ZXN0LmhlYWRlcnMuZ2V0KCJPcmlnaW4iLCAiIikKKyAg
ICAgIHN0YXNoZWRfZGF0YVsnYmVhY29uX3JlcXVlc3RfdXJsJ10gPSByZXF1ZXN0LnVybAogICAg
ICAgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gucHV0KHRlc3RfaWQsIHN0YXNoZWRfZGF0YSkKICAgICBy
ZXR1cm4gWygiQ29udGVudC1UeXBlIiwgInRleHQvcGxhaW4iKV0sICIiCiAgIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlv
bnMuaCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25B
Y3Rpb25zLmgKaW5kZXggOTkyYjZiYmY3NzAuLjBhNmIxNTgyMzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmgKQEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IEJsb2NrZWRTdGF0dXMgewogICAgIGJvb2wg
bWFkZUhUVFBTIHsgZmFsc2UgfTsKIH07CiAKLXZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1
ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmLCBSZXNvdXJjZVJlcXVlc3QmKTsKK1dFQkNPUkVfRVhQ
T1JUIHZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMm
LCBSZXNvdXJjZVJlcXVlc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggYTkyMTEwYTk1YWQuLjI5ZDljNTM0MmUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25z
L0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTEzNCw2ICsxMzQsMTIgQEAgVmVjdG9y
PEFjdGlvbj4gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VMb2Fk
KGNvbnN0IFJlc291cmNlTG8KICAgICByZXR1cm4gZmluYWxBY3Rpb25zOwogfQogCit2b2lkIENv
bnRlbnRFeHRlbnNpb25zQmFja2VuZDo6Zm9yRWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbiYpPiYgYXBwbHkpCit7CisgICAgZm9yIChh
dXRvJiBwYWlyIDogbV9jb250ZW50RXh0ZW5zaW9ucykKKyAgICAgICAgYXBwbHkocGFpci5rZXks
IHBhaXIudmFsdWUpOworfQorCiBTdHlsZVNoZWV0Q29udGVudHMqIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6Z2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRp
ZmllcikgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBjb250ZW50RXh0ZW5zaW9uID0gbV9jb250
ZW50RXh0ZW5zaW9ucy5nZXQoaWRlbnRpZmllcik7CkBAIC0yMTMsNiArMjE5LDQyIEBAIEJsb2Nr
ZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lv
blJ1bGVzRm9yTG9hZChjb25zCiAgICAgcmV0dXJuIHsgd2lsbEJsb2NrTG9hZCwgd2lsbEJsb2Nr
Q29va2llcywgd2lsbE1ha2VIVFRQUyB9OwogfQogCitCbG9ja2VkU3RhdHVzIENvbnRlbnRFeHRl
bnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBpbmdMb2FkKGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3sKKyAgICBpZiAobV9j
b250ZW50RXh0ZW5zaW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBS
ZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8gPSB7IHVybCwgbWFpbkRvY3VtZW50VVJM
LCBSZXNvdXJjZVR5cGU6OlJhdyB9OworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uPiBhY3Rpb25zID0gYWN0aW9uc0ZvclJlc291cmNlTG9hZChyZXNvdXJjZUxvYWRJbmZvKTsK
KworICAgIGJvb2wgd2lsbEJsb2NrTG9hZCA9IGZhbHNlOworICAgIGJvb2wgd2lsbEJsb2NrQ29v
a2llcyA9IGZhbHNlOworICAgIGJvb2wgd2lsbE1ha2VIVFRQUyA9IGZhbHNlOworICAgIGZvciAo
Y29uc3QgYXV0byYgYWN0aW9uIDogYWN0aW9ucykgeworICAgICAgICBzd2l0Y2ggKGFjdGlvbi50
eXBlKCkpIHsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tMb2FkOgorICAgICAgICAgICAgd2lsbEJsb2NrTG9hZCA9IHRydWU7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tD
b29raWVzOgorICAgICAgICAgICAgd2lsbEJsb2NrQ29va2llcyA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NT
RGlzcGxheU5vbmVTZWxlY3RvcjoKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0
aW9uVHlwZTo6Q1NTRGlzcGxheU5vbmVTdHlsZVNoZWV0OgorICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOgor
ICAgICAgICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElz
KCJ3cyIpKSAmJiAoIXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5w
b3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAgICAgICB3aWxsTWFr
ZUhUVFBTID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRlbnRF
eHRlbnNpb25zOjpBY3Rpb25UeXBlOjpJZ25vcmVQcmV2aW91c1J1bGVzOgorICAgICAgICBjYXNl
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpJbnZhbGlkQWN0aW9uOgorICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IHJldHVybiB7IHdpbGxCbG9ja0xvYWQsIHdpbGxCbG9ja0Nvb2tpZXMsIHdpbGxNYWtlSFRUUFMg
fTsKK30KKwogY29uc3QgU3RyaW5nJiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmRpc3BsYXlO
b25lQ1NTUnVsZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4g
cnVsZShNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiZGlzcGxheTpub25lICFpbXBvcnRhbnQ7Iikp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4
dGVuc2lvbnNCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBhZWMzOTE1NjhjNi4uZDc1NDE3ZWU2NmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNp
b25zQmFja2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5oCkBAIC02NSw5ICs2NSwxMiBAQCBwdWJsaWM6CiAgICAgV0VC
Q09SRV9FWFBPUlQgU3R5bGVTaGVldENvbnRlbnRzKiBnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hl
ZXQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKIAogICAgIEJsb2NrZWRTdGF0dXMg
cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29uc3QgVVJMJiwgUmVzb3VyY2VU
eXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQ
aW5nTG9hZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CiAKICAgICBz
dGF0aWMgY29uc3QgU3RyaW5nJiBkaXNwbGF5Tm9uZUNTU1J1bGUoKTsKIAorICAgIHZvaWQgZm9y
RWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVu
c2lvbiYpPiYpOworCiBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q29udGVudEV4
dGVuc2lvbj4+IG1fY29udGVudEV4dGVuc2lvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMGE2NzhjY2Y4
NWEuLmM0YzFjMGZmOTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTczOCw2ICs3MzgsNyBAQCBSZXNvdXJjZUVy
cm9yT3I8Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+PiBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKFJlc291cmNlRXJyb3IgeyBlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmws
IEFTQ0lJTGl0ZXJhbCgiUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIiKSwgUmVz
b3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAgfQorICAgICAgICBX
VEZMb2dBbHdheXMoImJsb2NrZWRTdGF0dXMubWFkZUhUVFBTOiAlZCBVUkwgaXMgJXMiLCBibG9j
a2VkU3RhdHVzLm1hZGVIVFRQUywgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJp
bmcoKS51dGY4KCkuZGF0YSgpKTsKICAgICAgICAgaWYgKGJsb2NrZWRTdGF0dXMubWFkZUhUVFBT
CiAgICAgICAgICAgICAmJiB0eXBlID09IENhY2hlZFJlc291cmNlOjpUeXBlOjpNYWluUmVzb3Vy
Y2UKICAgICAgICAgICAgICYmIG1fZG9jdW1lbnRMb2FkZXItPmlzTG9hZGluZ01haW5SZXNvdXJj
ZSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDg0YTg2YjE1NjdlLi4wNjYxYjgxMDczMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmgKQEAgLTUwNCw3ICs1MDQsNyBAQCBwdWJsaWM6CiAKICAgICBQbHVnaW5JbmZvUHJv
dmlkZXImIHBsdWdpbkluZm9Qcm92aWRlcigpOwogCi0gICAgVXNlckNvbnRlbnRQcm92aWRlciYg
dXNlckNvbnRlbnRQcm92aWRlcigpOworICAgIFdFQkNPUkVfRVhQT1JUIFVzZXJDb250ZW50UHJv
dmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNl
dFVzZXJDb250ZW50UHJvdmlkZXIoUmVmPFVzZXJDb250ZW50UHJvdmlkZXI+JiYpOwogCiAgICAg
VmlzaXRlZExpbmtTdG9yZSYgdmlzaXRlZExpbmtTdG9yZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKaW5kZXggZDU1MjRkOWJkYWEuLjAwMTdlOWE0Zjkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKQEAgLTEx
Niw2ICsxMTYsMTUgQEAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb24+IFVzZXJDb250
ZW50UHJvdmlkZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY28KIAogICAgIHJldHVybiB1c2Vy
Q29udGVudEV4dGVuc2lvbkJhY2tlbmQoKS5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNl
TG9hZEluZm8pOwogfQorCit2b2lkIFVzZXJDb250ZW50UHJvdmlkZXI6OmZvckVhY2hDb250ZW50
RXh0ZW5zaW9uKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50
RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbiYpPiYgYXBwbHksIERvY3VtZW50TG9hZGVyJiBp
bml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpCit7CisgICAgaWYgKCFjb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
dXNlckNvbnRlbnRFeHRlbnNpb25CYWNrZW5kKCkuZm9yRWFjaChhcHBseSk7Cit9CisKICNlbmRp
ZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRl
bnRQcm92aWRlci5oCmluZGV4IGQ0MjFjMWU3OGM2Li5hNjVkMWJiZmQyNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGlj
OgogICAgIC8vIHdoaWNoIHNob3VsZCBhbHdheXMgZXhpc3QuCiAgICAgQ29udGVudEV4dGVuc2lv
bnM6OkJsb2NrZWRTdGF0dXMgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29u
c3QgVVJMJiwgUmVzb3VyY2VUeXBlLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50
TG9hZGVyKTsKICAgICBWZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gYWN0aW9uc0Zv
clJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiwgRG9jdW1lbnRMb2FkZXImIGlu
aXRpYXRpbmdEb2N1bWVudExvYWRlcik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNo
Q29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwg
Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mKT4mLCBEb2N1bWVudExvYWRlciYg
aW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJh
bWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNl
TG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4IDk4MmY2NzlhYWU3Li43MmRlNjBhMDFkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFy
YW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5jcHAKQEAgLTg4LDYgKzg4LDEwIEBAIHZvaWQgTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0
CiAgICAgICAgIGVuY29kZXIgPDwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tU2VjdXJpdHlPcmln
aW4oKnNvdXJjZU9yaWdpbik7CiAgICAgZW5jb2Rlci5lbmNvZGVFbnVtKG1vZGUpOwogICAgIGVu
Y29kZXIgPDwgY3NwUmVzcG9uc2VIZWFkZXJzOworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lP
TlMpCisgICAgZW5jb2RlciA8PCBtYWluRG9jdW1lbnRVUkw7CisgICAgZW5jb2RlciA8PCBjb250
ZW50UnVsZUxpc3RzOworI2VuZGlmCiB9CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzJiByZXN1bHQpCkBAIC0xNjcsNiArMTcxLDE0IEBAIGJvb2wgTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtS
ZXNvdXJjCiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuY3NwUmVzcG9uc2VIZWFkZXJz
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9O
UykKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb250
ZW50UnVsZUxpc3RzKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA1YzkyZWUwY2Vj
OS4uYzI5MThlZjllY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIk5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlNhbmRi
b3hFeHRlbnNpb24uaCIKKyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGEu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVy
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmV0Y2hPcHRpb25zLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9SZXNvdXJjZUhhbmRsZS5oPgpAQCAtNTksNiArNjAsMTEgQEAgcHVibGljOgogICAgIFJlZlB0
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbj4gc291cmNlT3JpZ2luOwogICAgIFdlYkNvcmU6OkZl
dGNoT3B0aW9uczo6TW9kZSBtb2RlOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzPiBjc3BSZXNwb25zZUhlYWRlcnM7CisKKyNp
ZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIFdlYkNvcmU6OlVSTCBtYWluRG9jdW1l
bnRVUkw7CisgICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFdlYkNvbXBpbGVkQ29udGVudFJ1
bGVMaXN0RGF0YT4+IGNvbnRlbnRSdWxlTGlzdHM7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5n
TG9hZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAppbmRl
eCAyMTJjN2E2NTFjZC4uZTFjYjU1OWU3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya0NPUlNQ
cmVmbGlnaHRDaGVja2VyLmgiCiAjaW5jbHVkZSAiTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nl
c3MuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Nyb3NzT3Jp
Z2luQWNjZXNzQ29udHJvbC5oPgpAQCAtMTAyLDE0ICsxMDMsMjMgQEAgU2VjdXJpdHlPcmlnaW4m
IFBpbmdMb2FkOjpzZWN1cml0eU9yaWdpbigpIGNvbnN0CiAKIHZvaWQgUGluZ0xvYWQ6OndpbGxQ
ZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFJlc291cmNlUmVzcG9uc2UmJiByZWRpcmVjdFJlc3BvbnNl
LCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0ID0gcmVx
dWVzdDsKLQogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uIC0gc2hvdWxkRm9sbG93UmVkaXJlY3RzPyAlZCIsIG1fcGFyYW1ldGVycy5zaG91bGRG
b2xsb3dSZWRpcmVjdHMpOwogICAgIGlmICghbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGly
ZWN0cykgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBpZiAocHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQocmVxdWVzdCkpIHsKKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBSZWRpcmVjdCB3
YXMgYmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lvbnMiKTsKKyAgICAgICAgbV9sYXN0UmVkaXJl
Y3Rpb25SZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgbV9sYXN0UmVkaXJlY3Rpb25S
ZXF1ZXN0ID0gcmVxdWVzdDsKKwogICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kg
PSB0aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAgICAgICBpZiAoIWNvbnRlbnRT
ZWN1cml0eVBvbGljeS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UocmVxdWVzdC51cmwoKSwgcmVkaXJl
Y3RSZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNw
b25zZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25z
ZVJlY2VpdmVkOjpZZXMpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdhcyBibG9ja2VkIGJ5IENTUCIp
OwpAQCAtMjk2LDYgKzMwNiwyOCBAQCB2b2lkIFBpbmdMb2FkOjpwcmVmbGlnaHRTdWNjZXNzKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRSZXF1ZXN0KFdURk1vdmUoYWN0
dWFsUmVxdWVzdCkpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKworQ29u
dGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYgUGluZ0xvYWQ6OmNvbnRl
bnRFeHRlbnNpb25zQmFja2VuZCgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZCkgeworICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9IHN0ZDo6bWFrZV91
bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZD4oKTsKKyAg
ICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMpCisg
ICAgICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC0+YWRkQ29udGVudEV4dGVuc2lv
bihwYWlyLmZpcnN0LCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3JlYXRlKFdURk1vdmUo
cGFpci5zZWNvbmQpKSk7CisgICAgfQorICAgIHJldHVybiAqbV9jb250ZW50RXh0ZW5zaW9uc0Jh
Y2tlbmQ7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgYmxvY2sgdGhlIGxvYWQu
Citib29sIFBpbmdMb2FkOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgYXV0byBzdGF0dXMgPSBjb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQocmVx
dWVzdC51cmwoKSwgbV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCk7CisgICAgYXBwbHlCbG9j
a2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgcmVxdWVzdCk7CisgICAgcmV0dXJuIHN0YXR1cy5i
bG9ja2VkTG9hZDsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKE5FVFdPUktfU0VTU0lPTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaCBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCBjZjZhYTEwYWI4YS4u
ZTk5M2QxNjEwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgKQEAg
LTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5oIgogI2luY2x1ZGUg
Ik5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9Db250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3Iu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgsNiArNjksMTEgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxpZ2h0KFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHByZWZsaWdodFN1Y2Nlc3MoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAg
ICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kJiBj
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKTsKKyAgICBib29sIHByb2Nlc3NDb250ZW50RXh0ZW5z
aW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworI2VuZGlmCisKICAg
ICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBjb25zdDsKIAogICAg
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVlc3QoKSBjb25zdDsK
QEAgLTg0LDYgKzkwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTaW1wbGVSZXF1ZXN0IHsg
dHJ1ZSB9OwogICAgIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgbV9yZWRpcmVjdEhhbmRsZXI7
CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVudFNlY3VyaXR5UG9s
aWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJ
T05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZDsKKyNlbmRp
ZgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0PiBtX2xhc3RSZWRp
cmVjdGlvblJlcXVlc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNmZiZTMwNmU0ZDcuLjA1Yjgw
MTRhNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJM
b2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFt
ZXRlcnMuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYkNvbXBp
bGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTYxLDYg
KzYyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIu
aD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50UHJvdmlkZXIuaD4KICNpbmNsdWRlIDxw
YWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00MzMs
NiArNDM1LDE4IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUm
IGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAgICAgICAgICAgICBsb2FkUGFy
YW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3Bv
bnNlSGVhZGVycygpOwogICAgIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisg
ICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50
KCkudXJsKCk7CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS5sb2FkZXIo
KS5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUucGFn
ZSgpKSB7CisgICAgICAgICAgICBwYWdlLT51c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaENv
bnRlbnRFeHRlbnNpb24oWyZsb2FkUGFyYW1ldGVyc10oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVy
LCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbiYgY29udGVudEV4dGVuc2lvbikg
eworICAgICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMuYXBwZW5k
KHN0ZDo6bWFrZV9wYWlyKGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBpbGVk
Q29udGVudFJ1bGVMaXN0Jj4oY29udGVudEV4dGVuc2lvbi5jb21waWxlZEV4dGVuc2lvbigpKS5k
YXRhKCkpKTsKKyAgICAgICAgICAgIH0sICpkb2N1bWVudExvYWRlcik7CisgICAgICAgIH0KKyAg
ICB9CisjZW5kaWYKKwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAgICAgICAgbV9waW5n
TG9hZENvbXBsZXRpb25IYW5kbGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318673</attachid>
            <date>2017-08-21 14:26:34 -0700</date>
            <delta_ts>2017-08-21 14:48:49 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175746_Beacon_content_extensions_wip.patch</filename>
            <type>text/plain</type>
            <size>20358</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9u
cy9iZWFjb24tYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hMjFmMDkyYzI2YQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFj
b24tYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6
IGxpbmUgOTogQ29udGVudCBibG9ja2VyIHByZXZlbnRlZCBmcmFtZSBkaXNwbGF5aW5nIGh0dHA6
Ly9sb2NhbGhvc3Q6ODgwMC9XZWJLaXQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1i
bG9ja2VkLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVzb3VyY2UgZnJvbSBodHRwOi8vbG9jYWxob3N0
Ojg4MDAvV2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weQorQ09OU09M
RSBNRVNTQUdFOiBsaW5lIDk6IEJlYWNvbiBBUEkgY2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9z
dDo4ODAwL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzL2JlYWNvbi1wcmVmbGlnaHQucHkuIFJlc291
cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2VyCisKK1BBU1MgQ29udGVudCBleHRlbnNpb25z
IHNob3VsZCBiZSBhYmxlIHRvIGJsb2NrIGJlYWNvbnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1i
bG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA3ZWEw
MThjNmIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nv
bnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLmh0bWwKQEAgLTAsMCArMSwxMSBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iL2NvbW1vbi91dGlscy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorICAgIGNvbnN0IFJFU09VUkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7
CisKKyAgICB0ZXN0KGZ1bmN0aW9uKCkgeworICAgIGFzc2VydF9mYWxzZShuYXZpZ2F0b3Iuc2Vu
ZEJlYWNvbihSRVNPVVJDRVNfRElSICsgImJlYWNvbi1wcmVmbGlnaHQucHkiKSwgInNlbmRCZWFj
b24gc2hvdWxkIHJldHVybiBmYWxzZSIpOworICAgIH0sICJDb250ZW50IGV4dGVuc2lvbnMgc2hv
dWxkIGJlIGFibGUgdG8gYmxvY2sgYmVhY29ucyIpOworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2Nr
ZWQuaHRtbC5qc29uIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNp
b25zL2JlYWNvbi1ibG9ja2VkLmh0bWwuanNvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uYzNhNjAxYzRmZmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbC5qc29u
CkBAIC0wLDAgKzEsMTAgQEAKK1sKKyAgICB7CisgICAgICAgICJ0cmlnZ2VyIjogeworICAgICAg
ICAgICAgInVybC1maWx0ZXIiOiAiYmVhY29uLXByZWZsaWdodC5weSIKKyAgICAgICAgfSwKKyAg
ICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9
CisgICAgfQorXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRl
bnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tcmVkaXJlY3Qt
YmxvY2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAuLjRjZDIzOWY2MTNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
YmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxLDMgQEAKKworUEFTUyBDb250ZW50IGV4dGVuc2lvbnMgc2hvdWxkIGJl
IGFibGUgdG8gYmxvY2sgYmVhY29uIHJlZGlyZWN0cyAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9j
a2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMv
YmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMC4uMmQ0NTEwNDZmZTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQu
aHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0
aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0LWluZm8uc3Vi
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCBSRVNPVVJDRVNfRElSID0gIi9XZWJLaXQv
YmVhY29uL3Jlc291cmNlcy8iOworCitmdW5jdGlvbiBwb2xsUmVzdWx0KHRlc3QsIGlkKSB7Cisg
IHZhciBjaGVja1VybCA9IFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZsaWdodC5weT9jbWQ9
Z2V0JmlkPSIgKyBpZDsKKworICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CisgICAg
c3RlcF90aW1lb3V0KHRlc3Quc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIGZldGNoKGNoZWNrVXJs
KS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgcmVzcG9uc2UuanNvbigpLnRoZW4oYm9keSA9
PiB7CisgICAgICAgICAgcmVzb2x2ZShib2R5KTsKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAg
ICB9KSwgMTAwMCk7CisgIH0pOworfQorCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24odGVzdCkgewor
ICB2YXIgdGVzdEJhc2UgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJR0lOICsgUkVT
T1VSQ0VTX0RJUjsKKyAgdmFyIGlkID0gc2VsZi50b2tlbigpOworICB2YXIgdGFyZ2V0ID0gZW5j
b2RlVVJJQ29tcG9uZW50KHRlc3RCYXNlICsgImJlYWNvbi1wcmVmbGlnaHQucHk/YWxsb3dDb3Jz
PTEmY21kPXB1dCZpZD0iICsgaWQpOworCisgIC8vIDMwNyAmIDMwOCByZWRpcmVjdGlvbnMgYXJl
IHRoZSBvbmx5IG9uZXMgdGhhdCBtYWludGFpbiB0aGUgUE9TVCBtZXRob2QuCisgIHZhciB0ZXN0
VXJsID0gUkVTT1VSQ0VTX0RJUiArICJyZWRpcmVjdC5weT9yZWRpcmVjdF9zdGF0dXM9MzA3Jmxv
Y2F0aW9uPSIgKyB0YXJnZXQ7CisKKyAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24o
dGVzdFVybCksICJzZW5kQmVhY29uIHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICByZXR1cm4gcG9s
bFJlc3VsdCh0ZXN0LCBpZCkgLnRoZW4ocmVzdWx0ID0+IHsKKyAgICAvLyBSZWRpcmVjdGVkIFVS
TCBjb250YWlucyAiJmNvdW50PSIgd2hpY2ggdGhlIGNvbnRlbnQgZmlsdGVyIGJsb2Nrcy4KKyAg
ICBhc3NlcnRfZXF1YWxzKHJlc3VsdFsnYmVhY29uJ10sIDAsICJEaWQgbm90IHJlY2VpdmUgYmVh
Y29uIikKKyAgfSk7Cit9LCAiQ29udGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGJs
b2NrIGJlYWNvbiByZWRpcmVjdHMiKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9j
a2VkLmh0bWwuanNvbiBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5z
aW9ucy9iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5odG1sLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAuLmE0NDU1NmUxM2YyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVj
dC1ibG9ja2VkLmh0bWwuanNvbgpAQCAtMCwwICsxLDEwIEBACitbCisgICAgeworICAgICAgICAi
dHJpZ2dlciI6IHsKKyAgICAgICAgICAgICJ1cmwtZmlsdGVyIjogImNvdW50IgorICAgICAgICB9
LAorICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUiOiAiYmxvY2siCisgICAg
ICAgIH0KKyAgICB9CitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24v
cmVzb3VyY2VzL2JlYWNvbi1wcmVmbGlnaHQucHkgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFj
b24vcmVzb3VyY2VzL2JlYWNvbi1wcmVmbGlnaHQucHkKaW5kZXggOWU2NGU3NmZmZDYuLmM2MjIx
NWFlYmZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vcmVzb3VyY2Vz
L2JlYWNvbi1wcmVmbGlnaHQucHkKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL3Jl
c291cmNlcy9iZWFjb24tcHJlZmxpZ2h0LnB5CkBAIC00Miw2ICs0Miw3IEBAIGRlZiBtYWluKHJl
cXVlc3QsIHJlc3BvbnNlKToKICAgICAgIHN0YXNoZWRfZGF0YVsnYmVhY29uJ10gPSAxOwogICAg
ICAgc3Rhc2hlZF9kYXRhWydiZWFjb25fY29va2llX2hlYWRlciddID0gcmVxdWVzdC5oZWFkZXJz
LmdldCgiQ29va2llIiwgIiIpCiAgICAgICBzdGFzaGVkX2RhdGFbJ2JlYWNvbl9vcmlnaW4nXSA9
IHJlcXVlc3QuaGVhZGVycy5nZXQoIk9yaWdpbiIsICIiKQorICAgICAgc3Rhc2hlZF9kYXRhWydi
ZWFjb25fcmVxdWVzdF91cmwnXSA9IHJlcXVlc3QudXJsCiAgICAgICByZXF1ZXN0LnNlcnZlci5z
dGFzaC5wdXQodGVzdF9pZCwgc3Rhc2hlZF9kYXRhKQogICAgIHJldHVybiBbKCJDb250ZW50LVR5
cGUiLCAidGV4dC9wbGFpbiIpXSwgIiIKICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
b250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaAppbmRleCA5OTJi
NmJiZjc3MC4uMGE2YjE1ODIzNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRl
eHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaApAQCAtNTEsNyArNTEs
NyBAQCBzdHJ1Y3QgQmxvY2tlZFN0YXR1cyB7CiAgICAgYm9vbCBtYWRlSFRUUFMgeyBmYWxzZSB9
OwogfTsKIAotdm9pZCBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QoY29uc3QgQmxvY2tlZFN0
YXR1cyYsIFJlc291cmNlUmVxdWVzdCYpOworV0VCQ09SRV9FWFBPUlQgdm9pZCBhcHBseUJsb2Nr
ZWRTdGF0dXNUb1JlcXVlc3QoY29uc3QgQmxvY2tlZFN0YXR1cyYsIFJlc291cmNlUmVxdWVzdCYp
OwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9ucwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kLmNwcAppbmRleCBhOTIxMTBhOTVhZC4uMjlkOWM1MzQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNC
YWNrZW5kLmNwcApAQCAtMTM0LDYgKzEzNCwxMiBAQCBWZWN0b3I8QWN0aW9uPiBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQ6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMbwog
ICAgIHJldHVybiBmaW5hbEFjdGlvbnM7CiB9CiAKK3ZvaWQgQ29udGVudEV4dGVuc2lvbnNCYWNr
ZW5kOjpmb3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250
ZW50RXh0ZW5zaW9uJik+JiBhcHBseSkKK3sKKyAgICBmb3IgKGF1dG8mIHBhaXIgOiBtX2NvbnRl
bnRFeHRlbnNpb25zKQorICAgICAgICBhcHBseShwYWlyLmtleSwgcGFpci52YWx1ZSk7Cit9CisK
IFN0eWxlU2hlZXRDb250ZW50cyogQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpnbG9iYWxEaXNw
bGF5Tm9uZVN0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdAogewogICAg
IGNvbnN0IGF1dG8mIGNvbnRlbnRFeHRlbnNpb24gPSBtX2NvbnRlbnRFeHRlbnNpb25zLmdldChp
ZGVudGlmaWVyKTsKQEAgLTIxMyw2ICsyMTksNDIgQEAgQmxvY2tlZFN0YXR1cyBDb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKGNvbnMK
ICAgICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3aWxsQmxvY2tDb29raWVzLCB3aWxsTWFrZUhU
VFBTIH07CiB9CiAKK0Jsb2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yUGluZ0xvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0
IFVSTCYgbWFpbkRvY3VtZW50VVJMKQoreworICAgIGlmIChtX2NvbnRlbnRFeHRlbnNpb25zLmlz
RW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFJlc291cmNlTG9hZEluZm8gcmVz
b3VyY2VMb2FkSW5mbyA9IHsgdXJsLCBtYWluRG9jdW1lbnRVUkwsIFJlc291cmNlVHlwZTo6UmF3
IH07CisgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb24+IGFjdGlvbnMgPSBhY3Rp
b25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOworCisgICAgYm9vbCB3aWxsQmxv
Y2tMb2FkID0gZmFsc2U7CisgICAgYm9vbCB3aWxsQmxvY2tDb29raWVzID0gZmFsc2U7CisgICAg
Ym9vbCB3aWxsTWFrZUhUVFBTID0gZmFsc2U7CisgICAgZm9yIChjb25zdCBhdXRvJiBhY3Rpb24g
OiBhY3Rpb25zKSB7CisgICAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUoKSkgeworICAgICAgICBj
YXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0xvYWQ6CisgICAgICAgICAg
ICB3aWxsQmxvY2tMb2FkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpCbG9ja0Nvb2tpZXM6CisgICAgICAgICAg
ICB3aWxsQmxvY2tDb29raWVzID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
OgorICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVN0eWxlU2hlZXQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpNYWtlSFRUUFM6CisgICAgICAgICAgICBpZiAoKHVy
bC5wcm90b2NvbElzKCJodHRwIikgfHwgdXJsLnByb3RvY29sSXMoIndzIikpICYmICghdXJsLnBv
cnQoKSB8fCBpc0RlZmF1bHRQb3J0Rm9yUHJvdG9jb2wodXJsLnBvcnQoKS52YWx1ZSgpLCB1cmwu
cHJvdG9jb2woKSkpKQorICAgICAgICAgICAgICAgIHdpbGxNYWtlSFRUUFMgPSB0cnVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6OkFjdGlvblR5
cGU6Oklnbm9yZVByZXZpb3VzUnVsZXM6CisgICAgICAgIGNhc2UgQ29udGVudEV4dGVuc2lvbnM6
OkFjdGlvblR5cGU6OkludmFsaWRBY3Rpb246CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHsgd2lsbEJsb2Nr
TG9hZCwgd2lsbEJsb2NrQ29va2llcywgd2lsbE1ha2VIVFRQUyB9OworfQorCiBjb25zdCBTdHJp
bmcmIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6ZGlzcGxheU5vbmVDU1NSdWxlKCkKIHsKICAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBydWxlKE1BS0VfU1RBVElDX1NU
UklOR19JTVBMKCJkaXNwbGF5Om5vbmUgIWltcG9ydGFudDsiKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oCmluZGV4IGFlYzM5MTU2OGM2Li5kNzU0MTdlZTY2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
LmgKQEAgLTY1LDkgKzY1LDEyIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBTdHlsZVNo
ZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25lU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIpIGNvbnN0OwogCiAgICAgQmxvY2tlZFN0YXR1cyBwcm9jZXNzQ29udGVudEV4dGVu
c2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmLCBSZXNvdXJjZVR5cGUsIERvY3VtZW50TG9hZGVy
JiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIFdFQkNPUkVfRVhQT1JUIEJsb2NrZWRT
dGF0dXMgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBpbmdMb2FkKGNvbnN0IFVSTCYs
IGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKIAogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcm
IGRpc3BsYXlOb25lQ1NTUnVsZSgpOwogCisgICAgdm9pZCBmb3JFYWNoKGNvbnN0IFdURjo6RnVu
Y3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uJik+Jik7CisKIHByaXZh
dGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxDb250ZW50RXh0ZW5zaW9uPj4gbV9jb250ZW50
RXh0ZW5zaW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwYTY3OGNjZjg1YS4uYzRjMWMwZmY5OTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcApAQCAtNzM4LDYgKzczOCw3IEBAIFJlc291cmNlRXJyb3JPcjxDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoUmVzb3VyY2VFcnJv
ciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgQVNDSUlMaXRlcmFsKCJSZXNv
dXJjZSBibG9ja2VkIGJ5IGNvbnRlbnQgYmxvY2tlciIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpB
Y2Nlc3NDb250cm9sIH0pOwogICAgICAgICB9CisgICAgICAgIFdURkxvZ0Fsd2F5cygiYmxvY2tl
ZFN0YXR1cy5tYWRlSFRUUFM6ICVkIFVSTCBpcyAlcyIsIGJsb2NrZWRTdGF0dXMubWFkZUhUVFBT
LCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBpZiAoYmxvY2tlZFN0YXR1cy5tYWRlSFRUUFMKICAgICAgICAgICAgICYmIHR5
cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZQogICAgICAgICAgICAgJiYg
bV9kb2N1bWVudExvYWRlci0+aXNMb2FkaW5nTWFpblJlc291cmNlKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgK
aW5kZXggODRhODZiMTU2N2UuLjA2NjFiODEwNzMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaApAQCAtNTA0LDcg
KzUwNCw3IEBAIHB1YmxpYzoKIAogICAgIFBsdWdpbkluZm9Qcm92aWRlciYgcGx1Z2luSW5mb1By
b3ZpZGVyKCk7CiAKLSAgICBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVy
KCk7CisgICAgV0VCQ09SRV9FWFBPUlQgVXNlckNvbnRlbnRQcm92aWRlciYgdXNlckNvbnRlbnRQ
cm92aWRlcigpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0VXNlckNvbnRlbnRQcm92aWRl
cihSZWY8VXNlckNvbnRlbnRQcm92aWRlcj4mJik7CiAKICAgICBWaXNpdGVkTGlua1N0b3JlJiB2
aXNpdGVkTGlua1N0b3JlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmNwcAppbmRleCBkNTUyNGQ5YmRhYS4uMDAxN2U5YTRmOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcApAQCAtMTE2LDYgKzExNiwxNSBAQCBWZWN0
b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0aW9u
c0ZvclJlc291cmNlTG9hZChjbwogCiAgICAgcmV0dXJuIHVzZXJDb250ZW50RXh0ZW5zaW9uQmFj
a2VuZCgpLmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VMb2FkSW5mbyk7CiB9CisKK3Zv
aWQgVXNlckNvbnRlbnRQcm92aWRlcjo6Zm9yRWFjaENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RG
OjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50
RXh0ZW5zaW9uJik+JiBhcHBseSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExv
YWRlcikKK3sKKyAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9j
dW1lbnRMb2FkZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKS5mb3JFYWNoKGFwcGx5KTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKaW5kZXgg
ZDQyMWMxZTc4YzYuLmE2NWQxYmJmZDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1VzZXJDb250ZW50UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50UHJvdmlkZXIuaApAQCAtOTIsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgLy8gd2hpY2ggc2hv
dWxkIGFsd2F5cyBleGlzdC4KICAgICBDb250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBw
cm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmLCBSZXNvdXJjZVR5
cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOwogICAgIFZlY3Rv
cjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBhY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0
IFJlc291cmNlTG9hZEluZm8mLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9h
ZGVyKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZvckVhY2hDb250ZW50RXh0ZW5zaW9uKGNv
bnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0ZW5zaW9uczo6
Q29udGVudEV4dGVuc2lvbiYpPiYsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRM
b2FkZXIpOwogI2VuZGlmCiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAK
aW5kZXggOTgyZjY3OWFhZTcuLjcyZGU2MGEwMWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJz
LmNwcApAQCAtODgsNiArODgsMTAgQEAgdm9pZCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVy
czo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICAgICAgZW5jb2RlciA8
PCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqc291cmNlT3JpZ2luKTsK
ICAgICBlbmNvZGVyLmVuY29kZUVudW0obW9kZSk7CiAgICAgZW5jb2RlciA8PCBjc3BSZXNwb25z
ZUhlYWRlcnM7CisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBlbmNvZGVyIDw8
IG1haW5Eb2N1bWVudFVSTDsKKyAgICBlbmNvZGVyIDw8IGNvbnRlbnRSdWxlTGlzdHM7CisjZW5k
aWYKIH0KIAogYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6
RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMmIHJlc3VsdCkK
QEAgLTE2Nyw2ICsxNzEsMTQgQEAgYm9vbCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Jlc291cmMKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5jc3BSZXNwb25zZUhlYWRlcnMpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmICghZGVjb2Rl
ci5kZWNvZGUocmVzdWx0Lm1haW5Eb2N1bWVudFVSTCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmNvbnRlbnRSdWxlTGlzdHMpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKwogICAgIHJldHVybiB0cnVlOwogfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VM
b2FkUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCmluZGV4IDVjOTJlZTBjZWM5Li5jMjkxOGVmOWVjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2Fk
UGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZFBhcmFtZXRlcnMuaApAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTmV0
d29ya0xvYWRQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiU2FuZGJveEV4dGVuc2lvbi5oIgorI2lu
Y2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0RGF0YS5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GZXRjaE9wdGlvbnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlSGFuZGxlLmg+
CkBAIC01OSw2ICs2MCwxMSBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luPiBzb3VyY2VPcmlnaW47CiAgICAgV2ViQ29yZTo6RmV0Y2hPcHRpb25zOjpNb2RlIG1v
ZGU7CiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNw
b25zZUhlYWRlcnM+IGNzcFJlc3BvbnNlSGVhZGVyczsKKworI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisgICAgV2ViQ29yZTo6VVJMIG1haW5Eb2N1bWVudFVSTDsKKyAgICBWZWN0b3I8
c3RkOjpwYWlyPFN0cmluZywgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhPj4gY29udGVu
dFJ1bGVMaXN0czsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCmluZGV4IDIxMmM3YTY1MWNkLi5lMWNi
NTU5ZTc4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+
CkBAIC0xMDIsMTQgKzEwMywyMyBAQCBTZWN1cml0eU9yaWdpbiYgUGluZ0xvYWQ6OnNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKIAogdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0OwotCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBzaG91bGRGb2xs
b3dSZWRpcmVjdHM/ICVkIiwgbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiAg
ICAgaWYgKCFtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFC
TEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGlmIChwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1
bGVzRm9yTG9hZChyZXF1ZXN0KSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdhcyBibG9ja2VkIGJ5IGNvbnRl
bnQgZXh0ZW5zaW9ucyIpOworICAgICAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1
ZXN0OworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICByZXR1cm47Cisg
ICAgfQorI2VuZGlmCisKKyAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0Owor
CiAgICAgaWYgKGF1dG8qIGNvbnRlbnRTZWN1cml0eVBvbGljeSA9IHRoaXMtPmNvbnRlbnRTZWN1
cml0eVBvbGljeSgpKSB7CiAgICAgICAgIGlmICghY29udGVudFNlY3VyaXR5UG9saWN5LT5hbGxv
d0Nvbm5lY3RUb1NvdXJjZShyZXF1ZXN0LnVybCgpLCByZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgp
ID8gQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6Ok5vIDog
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxQZXJmb3JtSFRUUFJlZGly
ZWN0aW9uIC0gUmVkaXJlY3Qgd2FzIGJsb2NrZWQgYnkgQ1NQIik7CkBAIC0yOTYsNiArMzA2LDI4
IEBAIHZvaWQgUGluZ0xvYWQ6OnByZWZsaWdodFN1Y2Nlc3MoUmVzb3VyY2VSZXF1ZXN0JiYgcmVx
dWVzdCkKICAgICAgICAgbG9hZFJlcXVlc3QoV1RGTW92ZShhY3R1YWxSZXF1ZXN0KSk7CiB9CiAK
KyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCitDb250ZW50RXh0ZW5zaW9uczo6Q29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kJiBQaW5nTG9hZDo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5k
KCkKK3sKKyAgICBpZiAoIW1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKSB7CisgICAgICAgIG1f
Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kID0gc3RkOjptYWtlX3VuaXF1ZTxDb250ZW50RXh0ZW5z
aW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPigpOworICAgICAgICBmb3IgKGF1dG8mIHBh
aXIgOiBtX3BhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cykKKyAgICAgICAgICAgIG1fY29udGVu
dEV4dGVuc2lvbnNCYWNrZW5kLT5hZGRDb250ZW50RXh0ZW5zaW9uKHBhaXIuZmlyc3QsIFdlYkNv
bXBpbGVkQ29udGVudFJ1bGVMaXN0OjpjcmVhdGUoV1RGTW92ZShwYWlyLnNlY29uZCkpKTsKKyAg
ICB9CisgICAgcmV0dXJuICptX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZDsKK30KKworLy8gUmV0
dXJucyB0cnVlIGlmIHdlIHNob3VsZCBibG9jayB0aGUgbG9hZC4KK2Jvb2wgUGluZ0xvYWQ6OnBy
b2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK3sKKyAgICBhdXRvIHN0YXR1cyA9IGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpLnByb2Nl
c3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZChyZXF1ZXN0LnVybCgpLCBtX3BhcmFt
ZXRlcnMubWFpbkRvY3VtZW50VVJMKTsKKyAgICBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3Qo
c3RhdHVzLCByZXF1ZXN0KTsKKyAgICByZXR1cm4gc3RhdHVzLmJsb2NrZWRMb2FkOworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CiAKICNlbmRpZiAvLyBVU0UoTkVUV09SS19TRVNTSU9OKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9QaW5nTG9hZC5oCmluZGV4IGNmNmFhMTBhYjhhLi5lOTkzZDE2MTAyMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiTmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CkBAIC02OCw2ICs2OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZUNyb3NzT3Jp
Z2luQWNjZXNzUmVxdWVzdFdpdGhQcmVmbGlnaHQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OwogICAgIHZvaWQgcHJlZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7
CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIFdlYkNvcmU6OkNvbnRlbnRF
eHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZCgpOworICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAgIFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luJiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0OwpAQCAtODQsNiArOTAsOSBAQCBw
cml2YXRlOgogICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciBtX3JlZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6
dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3Vy
aXR5UG9saWN5OworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tl
bmQ+IG1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOworI2VuZGlmCiAgICAgc3RkOjpvcHRpb25h
bDxXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCA2ZmJlMzA2ZTRkNy4uMDViODAxNGE3OTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb24u
aCIKICNpbmNsdWRlICJOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5oIgogI2luY2x1ZGUg
IlNlc3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3Qu
aCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJFcnJv
cnMuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgpAQCAtNjEsNiArNjIsNyBAQAogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NldHRpbmdzLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWJyZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvVXNlckNvbnRlbnRQcm92aWRlci5oPgogI2luY2x1ZGUgPHBhbC9TZXNzaW9uSUQuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAKQEAgLTQzMyw2ICs0MzUsMTggQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6c3RhcnRQaW5nTG9hZChGcmFtZSYgZnJhbWUsIFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCwgY28KICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNzcFJlc3BvbnNl
SGVhZGVycyA9IGNvbnRlbnRTZWN1cml0eVBvbGljeS0+cmVzcG9uc2VIZWFkZXJzKCk7CiAgICAg
fQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBsb2FkUGFyYW1ldGVycy5t
YWluRG9jdW1lbnRVUkwgPSBkb2N1bWVudC0+dG9wRG9jdW1lbnQoKS51cmwoKTsKKworICAgIGlm
IChhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIHBhZ2UgPSBmcmFtZS5wYWdlKCkpIHsKKyAgICAgICAgICAg
IHBhZ2UtPnVzZXJDb250ZW50UHJvdmlkZXIoKS5mb3JFYWNoQ29udGVudEV4dGVuc2lvbihbJmxv
YWRQYXJhbWV0ZXJzXShjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIsIENvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uJiBjb250ZW50RXh0ZW5zaW9uKSB7CisgICAgICAgICAgICAgICAg
bG9hZFBhcmFtZXRlcnMuY29udGVudFJ1bGVMaXN0cy5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRl
bnRpZmllciwgc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QmPihj
b250ZW50RXh0ZW5zaW9uLmNvbXBpbGVkRXh0ZW5zaW9uKCkpLmRhdGEoKSkpOworICAgICAgICAg
ICAgfSwgKmRvY3VtZW50TG9hZGVyKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAg
aWYgKGNvbXBsZXRpb25IYW5kbGVyKQogICAgICAgICBtX3BpbmdMb2FkQ29tcGxldGlvbkhhbmRs
ZXJzLmFkZChsb2FkUGFyYW1ldGVycy5pZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318676</attachid>
            <date>2017-08-21 14:48:49 -0700</date>
            <delta_ts>2017-08-21 15:28:31 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>175746_Beacon_content_extensions_wip.patch</filename>
            <type>text/plain</type>
            <size>21472</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFj
b24tcmVkaXJlY3QtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi1leHBlY3Rl
ZC50eHQKaW5kZXggZWUxOTdhM2ExNjQuLjhiYzVjYTQxMDZkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQu
c3ViLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVj
dC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dApAQCAtMSwzICsx
LDQgQEAKK0NPTlNPTEUgTUVTU0FHRTogQmVhY29uIEFQSSBjYW5ub3QgbG9hZCBodHRwOi8vMTI3
LjAuMC4xOjg4MDAvV2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weT9h
bGxvd0NvcnM9MSZjbWQ9cHV0JmlkPTI1MzllODgzLTdkZmItNGRkZS1hMjI3LWE0MWM2NzBkNWZl
MSZyZWRpcmVjdF9zdGF0dXM9MzA3JmxvY2F0aW9uPWh0dHAlM0ElMkYlMkYxMjcuMC4wLjElM0E4
ODAwJTJGV2ViS2l0JTJGYmVhY29uJTJGcmVzb3VyY2VzJTJGYmVhY29uLXByZWZsaWdodC5weSUz
RmFsbG93Q29ycyUzRDElMjZjbWQlM0RwdXQlMjZpZCUzRDI1MzllODgzLTdkZmItNGRkZS1hMjI3
LWE0MWM2NzBkNWZlMSZjb3VudD0xLiBCbG9ja2VkIGJ5IENvbnRlbnQgU2VjdXJpdHkgUG9saWN5
CiAKIFBBU1MgUmVkaXJlY3QgaXMgYmxvY2tlZCBieSBDU1AgCiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tl
ZC5zdWIuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFj
b24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbAppbmRleCA2MjIwZjQ0N2RhYS4uZDA1MTMyZGQw
ZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1i
ZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLmh0bWwKQEAg
LTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgewogCiBmdW5jdGlv
biB0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7CiAgIHZhciB0ZXN0QmFz
ZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBSRVNPVVJDRVNfRElSOwot
ICB2YXIgaWQgPSBzZWxmLnRva2VuKCk7CisgIHZhciBpZCA9ICIyNTM5ZTg4My03ZGZiLTRkZGUt
YTIyNy1hNDFjNjcwZDVmZTEiOyAvLyBVc2UgYSBzdGF0aWMgdG9rZW4gYmVjYXVzZSB0aGUgVVJM
IGlzIGxvZ2dlZC4KICAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSAr
ICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9IiArIGlkKTsKIAog
ICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRh
aW4gdGhlIFBPU1QgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVh
Y29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmEyMWYw
OTJjMjZhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nv
bnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUg
QEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSA5OiBDb250ZW50IGJsb2NrZXIgcHJldmVudGVkIGZy
YW1lIGRpc3BsYXlpbmcgaHR0cDovL2xvY2FsaG9zdDo4ODAwL1dlYktpdC9iZWFjb24vY29udGVu
dGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbCBmcm9tIGxvYWRpbmcgYSByZXNvdXJjZSBm
cm9tIGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24t
cHJlZmxpZ2h0LnB5CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgOTogQmVhY29uIEFQSSBjYW5ub3Qg
bG9hZCBodHRwOi8vbG9jYWxob3N0Ojg4MDAvV2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29u
LXByZWZsaWdodC5weS4gUmVzb3VyY2UgYmxvY2tlZCBieSBjb250ZW50IGJsb2NrZXIKKworUEFT
UyBDb250ZW50IGV4dGVuc2lvbnMgc2hvdWxkIGJlIGFibGUgdG8gYmxvY2sgYmVhY29ucyAKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25z
L2JlYWNvbi1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVu
dGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMC4uMDdlYTAxOGM2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbApA
QCAtMCwwICsxLDExIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL3V0aWxzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgY29uc3QgUkVTT1VSQ0VTX0RJUiA9ICIvV2ViS2l0
L2JlYWNvbi9yZXNvdXJjZXMvIjsKKworICAgIHRlc3QoZnVuY3Rpb24oKSB7CisgICAgYXNzZXJ0
X2ZhbHNlKG5hdmlnYXRvci5zZW5kQmVhY29uKFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZs
aWdodC5weSIpLCAic2VuZEJlYWNvbiBzaG91bGQgcmV0dXJuIGZhbHNlIik7CisgICAgfSwgIkNv
bnRlbnQgZXh0ZW5zaW9ucyBzaG91bGQgYmUgYWJsZSB0byBibG9jayBiZWFjb25zIik7Cis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0
ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC5odG1sLmpzb24gYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9i
ZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbC5qc29uCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jM2E2MDFjNGZmZgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFj
b24tYmxvY2tlZC5odG1sLmpzb24KQEAgLTAsMCArMSwxMCBAQAorWworICAgIHsKKyAgICAgICAg
InRyaWdnZXIiOiB7CisgICAgICAgICAgICAidXJsLWZpbHRlciI6ICJiZWFjb24tcHJlZmxpZ2h0
LnB5IgorICAgICAgICB9LAorICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAgICAgInR5cGUi
OiAiYmxvY2siCisgICAgICAgIH0KKyAgICB9CitdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNp
b25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOTdiNzk1MmZhODEKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGly
ZWN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdF
OiBCZWFjb24gQVBJIGNhbm5vdCBsb2FkIGh0dHA6Ly8xMjcuMC4wLjE6ODgwMC9XZWJLaXQvYmVh
Y29uL3Jlc291cmNlcy9iZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9
ZjQ3MGY0M2MtMjU4Yy00YzgyLWI4ODAtYWNlM2JjZGIyMTFjJnJlZGlyZWN0X3N0YXR1cz0zMDcm
bG9jYXRpb249aHR0cCUzQSUyRiUyRjEyNy4wLjAuMSUzQTg4MDAlMkZXZWJLaXQlMkZiZWFjb24l
MkZyZXNvdXJjZXMlMkZiZWFjb24tcHJlZmxpZ2h0LnB5JTNGYWxsb3dDb3JzJTNEMSUyNmNtZCUz
RHB1dCUyNmlkJTNEZjQ3MGY0M2MtMjU4Yy00YzgyLWI4ODAtYWNlM2JjZGIyMTFjJmNvdW50PTEu
IEJsb2NrZWQgYnkgY29udGVudCBleHRlbnNpb24KKworUEFTUyBDb250ZW50IGV4dGVuc2lvbnMg
c2hvdWxkIGJlIGFibGUgdG8gYmxvY2sgYmVhY29uIHJlZGlyZWN0cyAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRp
cmVjdC1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4
dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNDE1NWViNGU5ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0
LWJsb2NrZWQuaHRtbApAQCAtMCwwICsxLDM3IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
Y29tbW9uL3V0aWxzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvY29tbW9uL2dldC1ob3N0
LWluZm8uc3ViLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citjb25zdCBSRVNPVVJDRVNfRElSID0g
Ii9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8iOworCitmdW5jdGlvbiBwb2xsUmVzdWx0KHRlc3Qs
IGlkKSB7CisgIHZhciBjaGVja1VybCA9IFJFU09VUkNFU19ESVIgKyAiYmVhY29uLXByZWZsaWdo
dC5weT9jbWQ9Z2V0JmlkPSIgKyBpZDsKKworICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9
PiB7CisgICAgc3RlcF90aW1lb3V0KHRlc3Quc3RlcF9mdW5jKCgpID0+IHsKKyAgICAgIGZldGNo
KGNoZWNrVXJsKS50aGVuKHJlc3BvbnNlID0+IHsKKyAgICAgICAgcmVzcG9uc2UuanNvbigpLnRo
ZW4oYm9keSA9PiB7CisgICAgICAgICAgcmVzb2x2ZShib2R5KTsKKyAgICAgICAgfSk7CisgICAg
ICB9KTsKKyAgICB9KSwgMTAwMCk7CisgIH0pOworfQorCitwcm9taXNlX3Rlc3QoZnVuY3Rpb24o
dGVzdCkgeworICB2YXIgdGVzdEJhc2UgPSBnZXRfaG9zdF9pbmZvKCkuSFRUUF9SRU1PVEVfT1JJ
R0lOICsgUkVTT1VSQ0VTX0RJUjsKKyAgdmFyIGlkID0gImY0NzBmNDNjLTI1OGMtNGM4Mi1iODgw
LWFjZTNiY2RiMjExYyI7IC8vIFVzZSBhIHN0YXRpYyB0b2tlbiBzaW5jZSB0aGUgVVJMIGlzIGxv
Z2dlZC4KKyAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0QmFzZSArICJiZWFj
b24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9IiArIGlkKTsKKworICAvLyAz
MDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgbWFpbnRhaW4gdGhl
IFBPU1QgbWV0aG9kLgorICB2YXIgdGVzdFVybCA9IFJFU09VUkNFU19ESVIgKyAicmVkaXJlY3Qu
cHk/cmVkaXJlY3Rfc3RhdHVzPTMwNyZsb2NhdGlvbj0iICsgdGFyZ2V0OworCisgIGFzc2VydF90
cnVlKG5hdmlnYXRvci5zZW5kQmVhY29uKHRlc3RVcmwpLCAic2VuZEJlYWNvbiBzaG91bGQgcmV0
dXJuIHRydWUiKTsKKyAgcmV0dXJuIHBvbGxSZXN1bHQodGVzdCwgaWQpIC50aGVuKHJlc3VsdCA9
PiB7CisgICAgLy8gUmVkaXJlY3RlZCBVUkwgY29udGFpbnMgIiZjb3VudD0iIHdoaWNoIHRoZSBj
b250ZW50IGZpbHRlciBibG9ja3MuCisgICAgYXNzZXJ0X2VxdWFscyhyZXN1bHRbJ2JlYWNvbidd
LCAwLCAiRGlkIG5vdCByZWNlaXZlIGJlYWNvbiIpCisgIH0pOworfSwgIkNvbnRlbnQgZXh0ZW5z
aW9ucyBzaG91bGQgYmUgYWJsZSB0byBibG9jayBiZWFjb24gcmVkaXJlY3RzIik7Cis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5z
aW9ucy9iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5odG1sLmpzb24gYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuaHRt
bC5qc29uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5hNDQ1NTZlMTNm
MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50
ZXh0ZW5zaW9ucy9iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5odG1sLmpzb24KQEAgLTAsMCArMSwx
MCBAQAorWworICAgIHsKKyAgICAgICAgInRyaWdnZXIiOiB7CisgICAgICAgICAgICAidXJsLWZp
bHRlciI6ICJjb3VudCIKKyAgICAgICAgfSwKKyAgICAgICAgImFjdGlvbiI6IHsKKyAgICAgICAg
ICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9CisgICAgfQorXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuaCBi
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25z
LmgKaW5kZXggOTkyYjZiYmY3NzAuLjBhNmIxNTgyMzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgK
QEAgLTUxLDcgKzUxLDcgQEAgc3RydWN0IEJsb2NrZWRTdGF0dXMgewogICAgIGJvb2wgbWFkZUhU
VFBTIHsgZmFsc2UgfTsKIH07CiAKLXZvaWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGNv
bnN0IEJsb2NrZWRTdGF0dXMmLCBSZXNvdXJjZVJlcXVlc3QmKTsKK1dFQkNPUkVfRVhQT1JUIHZv
aWQgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KGNvbnN0IEJsb2NrZWRTdGF0dXMmLCBSZXNv
dXJjZVJlcXVlc3QmKTsKIAogfSAvLyBuYW1lc3BhY2UgQ29udGVudEV4dGVuc2lvbnMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5jcHAKaW5kZXggYTkyMTEwYTk1YWQuLjI5ZDljNTM0MmUzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTEzNCw2ICsxMzQsMTIgQEAgVmVjdG9yPEFjdGlv
bj4gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VMb2FkKGNvbnN0
IFJlc291cmNlTG8KICAgICByZXR1cm4gZmluYWxBY3Rpb25zOwogfQogCit2b2lkIENvbnRlbnRF
eHRlbnNpb25zQmFja2VuZDo6Zm9yRWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3Qg
U3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbiYpPiYgYXBwbHkpCit7CisgICAgZm9yIChhdXRvJiBw
YWlyIDogbV9jb250ZW50RXh0ZW5zaW9ucykKKyAgICAgICAgYXBwbHkocGFpci5rZXksIHBhaXIu
dmFsdWUpOworfQorCiBTdHlsZVNoZWV0Q29udGVudHMqIENvbnRlbnRFeHRlbnNpb25zQmFja2Vu
ZDo6Z2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRlbnRpZmllcikg
Y29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBjb250ZW50RXh0ZW5zaW9uID0gbV9jb250ZW50RXh0
ZW5zaW9ucy5nZXQoaWRlbnRpZmllcik7CkBAIC0yMTMsNiArMjE5LDQyIEBAIEJsb2NrZWRTdGF0
dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZChjb25zCiAgICAgcmV0dXJuIHsgd2lsbEJsb2NrTG9hZCwgd2lsbEJsb2NrQ29va2ll
cywgd2lsbE1ha2VIVFRQUyB9OwogfQogCitCbG9ja2VkU3RhdHVzIENvbnRlbnRFeHRlbnNpb25z
QmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBpbmdMb2FkKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3sKKyAgICBpZiAobV9jb250ZW50
RXh0ZW5zaW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBSZXNvdXJj
ZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8gPSB7IHVybCwgbWFpbkRvY3VtZW50VVJMLCBSZXNv
dXJjZVR5cGU6OlJhdyB9OworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uPiBh
Y3Rpb25zID0gYWN0aW9uc0ZvclJlc291cmNlTG9hZChyZXNvdXJjZUxvYWRJbmZvKTsKKworICAg
IGJvb2wgd2lsbEJsb2NrTG9hZCA9IGZhbHNlOworICAgIGJvb2wgd2lsbEJsb2NrQ29va2llcyA9
IGZhbHNlOworICAgIGJvb2wgd2lsbE1ha2VIVFRQUyA9IGZhbHNlOworICAgIGZvciAoY29uc3Qg
YXV0byYgYWN0aW9uIDogYWN0aW9ucykgeworICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKCkp
IHsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tMb2Fk
OgorICAgICAgICAgICAgd2lsbEJsb2NrTG9hZCA9IHRydWU7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6QmxvY2tDb29raWVz
OgorICAgICAgICAgICAgd2lsbEJsb2NrQ29va2llcyA9IHRydWU7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Q1NTRGlzcGxh
eU5vbmVTZWxlY3RvcjoKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlw
ZTo6Q1NTRGlzcGxheU5vbmVTdHlsZVNoZWV0OgorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6TWFrZUhUVFBTOgorICAgICAg
ICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVybC5wcm90b2NvbElzKCJ3cyIp
KSAmJiAoIXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclByb3RvY29sKHVybC5wb3J0KCku
dmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAgICAgICB3aWxsTWFrZUhUVFBT
ID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb25UeXBlOjpJZ25vcmVQcmV2aW91c1J1bGVzOgorICAgICAgICBjYXNlIENvbnRl
bnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpJbnZhbGlkQWN0aW9uOgorICAgICAgICAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biB7IHdpbGxCbG9ja0xvYWQsIHdpbGxCbG9ja0Nvb2tpZXMsIHdpbGxNYWtlSFRUUFMgfTsKK30K
KwogY29uc3QgU3RyaW5nJiBDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OmRpc3BsYXlOb25lQ1NT
UnVsZSgpCiB7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gcnVsZShN
QUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiZGlzcGxheTpub25lICFpbXBvcnRhbnQ7IikpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lv
bnNCYWNrZW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQuaAppbmRleCBhZWMzOTE1NjhjNi4uZDc1NDE3ZWU2NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRl
bnNpb25zQmFja2VuZC5oCkBAIC02NSw5ICs2NSwxMiBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgU3R5bGVTaGVldENvbnRlbnRzKiBnbG9iYWxEaXNwbGF5Tm9uZVN0eWxlU2hlZXQoY29u
c3QgU3RyaW5nJiBpZGVudGlmaWVyKSBjb25zdDsKIAogICAgIEJsb2NrZWRTdGF0dXMgcHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29uc3QgVVJMJiwgUmVzb3VyY2VUeXBlLCBE
b2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9h
ZChjb25zdCBVUkwmLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCk7CiAKICAgICBzdGF0aWMg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5Tm9uZUNTU1J1bGUoKTsKIAorICAgIHZvaWQgZm9yRWFjaChj
b25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbiYp
PiYpOworCiBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8Q29udGVudEV4dGVuc2lv
bj4+IG1fY29udGVudEV4dGVuc2lvbnM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAppbmRleCA4NGE4NmIxNTY3
ZS4uMDY2MWI4MTA3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01MDQsNyArNTA0LDcgQEAgcHVibGlj
OgogCiAgICAgUGx1Z2luSW5mb1Byb3ZpZGVyJiBwbHVnaW5JbmZvUHJvdmlkZXIoKTsKIAotICAg
IFVzZXJDb250ZW50UHJvdmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIoKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVyKCk7CiAgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxVc2VyQ29udGVu
dFByb3ZpZGVyPiYmKTsKIAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRMaW5rU3RvcmUo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3BwCmluZGV4IGQ1
NTI0ZDliZGFhLi4wMDE3ZTlhNGY5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9V
c2VyQ29udGVudFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250
ZW50UHJvdmlkZXIuY3BwCkBAIC0xMTYsNiArMTE2LDE1IEBAIFZlY3RvcjxDb250ZW50RXh0ZW5z
aW9uczo6QWN0aW9uPiBVc2VyQ29udGVudFByb3ZpZGVyOjphY3Rpb25zRm9yUmVzb3VyY2VMb2Fk
KGNvCiAKICAgICByZXR1cm4gdXNlckNvbnRlbnRFeHRlbnNpb25CYWNrZW5kKCkuYWN0aW9uc0Zv
clJlc291cmNlTG9hZChyZXNvdXJjZUxvYWRJbmZvKTsKIH0KKwordm9pZCBVc2VyQ29udGVudFBy
b3ZpZGVyOjpmb3JFYWNoQ29udGVudEV4dGVuc2lvbihjb25zdCBXVEY6OkZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb24mKT4mIGFw
cGx5LCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQoreworICAgIGlm
ICghY29udGVudEV4dGVuc2lvbnNFbmFibGVkKGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikpCisg
ICAgICAgIHJldHVybjsKKworICAgIHVzZXJDb250ZW50RXh0ZW5zaW9uQmFja2VuZCgpLmZvckVh
Y2goYXBwbHkpOworfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaAppbmRleCBkNDIxYzFlNzhjNi4uYTY1
ZDFiYmZkMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92
aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5oCkBA
IC05Miw2ICs5Miw3IEBAIHB1YmxpYzoKICAgICAvLyB3aGljaCBzaG91bGQgYWx3YXlzIGV4aXN0
LgogICAgIENvbnRlbnRFeHRlbnNpb25zOjpCbG9ja2VkU3RhdHVzIHByb2Nlc3NDb250ZW50RXh0
ZW5zaW9uUnVsZXNGb3JMb2FkKGNvbnN0IFVSTCYsIFJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2Fk
ZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CiAgICAgVmVjdG9yPENvbnRlbnRFeHRlbnNp
b25zOjpBY3Rpb24+IGFjdGlvbnNGb3JSZXNvdXJjZUxvYWQoY29uc3QgUmVzb3VyY2VMb2FkSW5m
byYsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgZm9yRWFjaENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9u
Jik+JiwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CiAjZW5kaWYK
IAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcAppbmRleCA5ODJmNjc5YWFl
Ny4uNzJkZTYwYTAxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCkBAIC04OCw2ICs4
OCwxMCBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBlbmNvZGVyIDw8IFNlY3VyaXR5T3JpZ2lu
RGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpzb3VyY2VPcmlnaW4pOwogICAgIGVuY29kZXIuZW5j
b2RlRW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNzcFJlc3BvbnNlSGVhZGVyczsKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIGVuY29kZXIgPDwgbWFpbkRvY3VtZW50VVJM
OworICAgIGVuY29kZXIgPDwgY29udGVudFJ1bGVMaXN0czsKKyNlbmRpZgogfQogCiBib29sIE5l
dHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVy
LCBOZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1ldGVycyYgcmVzdWx0KQpAQCAtMTY3LDYgKzE3MSwx
NCBAQCBib29sIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBOZXR3b3JrUmVzb3VyYwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LmNzcFJlc3BvbnNlSGVhZGVycykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVO
QUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
bWFpbkRvY3VtZW50VVJMKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY29udGVudFJ1bGVMaXN0cykpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyNlbmRpZgorCiAgICAgcmV0dXJuIHRydWU7CiB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmgKaW5kZXggNWM5MmVlMGNlYzkuLmMyOTE4ZWY5ZWNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgKKysr
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVzb3VyY2VMb2FkUGFyYW1l
dGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJOZXR3b3JrTG9hZFBhcmFtZXRl
cnMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5jbHVkZSAiV2ViQ29tcGls
ZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Db250ZW50U2VjdXJp
dHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZldGNoT3B0aW9u
cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4KQEAgLTU5LDYgKzYwLDEx
IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+IHNvdXJjZU9y
aWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9kZTsKICAgICBzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycz4gY3Nw
UmVzcG9uc2VIZWFkZXJzOworCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBX
ZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5n
LCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50UnVsZUxpc3RzOworI2Vu
ZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMjEyYzdhNjUxY2QuLmRiNjhhMDg5YWVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcApAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIk5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oIgogI2luY2x1ZGUgIk5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiU2Vzc2lvblRyYWNrZXIuaCIK
KyNpbmNsdWRlICJXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdC5oIgogI2luY2x1ZGUgIldlYkVy
cm9ycy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQ29udGVudFNlY3VyaXR5UG9saWN5Lmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9Dcm9zc09yaWdpbkFjY2Vzc0NvbnRyb2wuaD4KQEAgLTEwMiwxOCArMTAz
LDMwIEBAIFNlY3VyaXR5T3JpZ2luJiBQaW5nTG9hZDo6c2VjdXJpdHlPcmlnaW4oKSBjb25zdAog
CiB2b2lkIFBpbmdMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihSZXNvdXJjZVJlc3Bv
bnNlJiYgcmVkaXJlY3RSZXNwb25zZSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgUmVkaXJl
Y3RDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fbGFzdFJl
ZGlyZWN0aW9uUmVxdWVzdCA9IHJlcXVlc3Q7Ci0KICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIHNob3VsZEZvbGxvd1JlZGlyZWN0cz8gJWQi
LCBtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKTsKICAgICBpZiAoIW1fcGFyYW1l
dGVycy5zaG91bGRGb2xsb3dSZWRpcmVjdHMpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKKyAgICAgICAgZGlkRmluaXNoKFJlc291cmNlRXJyb3IgeyBTdHJpbmcoKSwgMCwgY3Vy
cmVudFJlcXVlc3QoKS51cmwoKSwgQVNDSUlMaXRlcmFsKCJOb3QgYWxsb3dlZCB0byBmb2xsb3cg
cmVkaXJlY3RzIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKKyNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAg
IGlmIChwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChyZXF1ZXN0KSkgeworICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAt
IFJlZGlyZWN0IHdhcyBibG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9ucyIpOworICAgICAgICBt
X2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0OworICAgICAgICBjb21wbGV0aW9uSGFu
ZGxlcih7IH0pOworICAgICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAw
LCBjdXJyZW50UmVxdWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgY29udGVu
dCBleHRlbnNpb24iKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgorCisgICAgbV9sYXN0UmVkaXJlY3Rpb25SZXF1
ZXN0ID0gcmVxdWVzdDsKKwogICAgIGlmIChhdXRvKiBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSB0
aGlzLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKSkgewogICAgICAgICBpZiAoIWNvbnRlbnRTZWN1
cml0eVBvbGljeS0+YWxsb3dDb25uZWN0VG9Tb3VyY2UocmVxdWVzdC51cmwoKSwgcmVkaXJlY3RS
ZXNwb25zZS5pc051bGwoKSA/IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25z
ZVJlY2VpdmVkOjpObyA6IENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJl
Y2VpdmVkOjpZZXMpKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbiAtIFJlZGlyZWN0IHdhcyBibG9ja2VkIGJ5IENTUCIpOwog
ICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgICAgIGRpZEZpbmlz
aChSZXNvdXJjZUVycm9yIHsgU3RyaW5nKCksIDAsIGN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIEFT
Q0lJTGl0ZXJhbCgiQmxvY2tlZCBieSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSIpLCBSZXNvdXJj
ZUVycm9yOjpUeXBlOjpBY2Nlc3NDb250cm9sIH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMjk2LDYgKzMwOSwyOCBAQCB2b2lkIFBpbmdMb2FkOjpwcmVmbGln
aHRTdWNjZXNzKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCiAgICAgICAgIGxvYWRSZXF1ZXN0
KFdURk1vdmUoYWN0dWFsUmVxdWVzdCkpOwogfQogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5T
SU9OUykKKworQ29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCYgUGlu
Z0xvYWQ6OmNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpCit7CisgICAgaWYgKCFtX2NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZCkgeworICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZCA9
IHN0ZDo6bWFrZV91bmlxdWU8Q29udGVudEV4dGVuc2lvbnM6OkNvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZD4oKTsKKyAgICAgICAgZm9yIChhdXRvJiBwYWlyIDogbV9wYXJhbWV0ZXJzLmNvbnRlbnRS
dWxlTGlzdHMpCisgICAgICAgICAgICBtX2NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC0+YWRkQ29u
dGVudEV4dGVuc2lvbihwYWlyLmZpcnN0LCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdDo6Y3Jl
YXRlKFdURk1vdmUocGFpci5zZWNvbmQpKSk7CisgICAgfQorICAgIHJldHVybiAqbV9jb250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQ7Cit9CisKKy8vIFJldHVybnMgdHJ1ZSBpZiB3ZSBzaG91bGQgYmxv
Y2sgdGhlIGxvYWQuCitib29sIFBpbmdMb2FkOjpwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVz
Rm9yTG9hZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgYXV0byBzdGF0dXMgPSBj
b250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKS5wcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9y
UGluZ0xvYWQocmVxdWVzdC51cmwoKSwgbV9wYXJhbWV0ZXJzLm1haW5Eb2N1bWVudFVSTCk7Cisg
ICAgYXBwbHlCbG9ja2VkU3RhdHVzVG9SZXF1ZXN0KHN0YXR1cywgcmVxdWVzdCk7CisgICAgcmV0
dXJuIHN0YXR1cy5ibG9ja2VkTG9hZDsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gVVNFKE5FVFdP
UktfU0VTU0lPTikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAppbmRleCBj
ZjZhYTEwYWI4YS4uZTk5M2QxNjEwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvUGluZ0xvYWQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKQEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5ldHdvcmtEYXRhVGFzay5o
IgogI2luY2x1ZGUgIk5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSA8
V2ViQ29yZS9Db250ZW50RXh0ZW5zaW9uc0JhY2tlbmQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlRXJyb3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNjgsNiArNjksMTEgQEAg
cHJpdmF0ZToKICAgICB2b2lkIG1ha2VDcm9zc09yaWdpbkFjY2Vzc1JlcXVlc3RXaXRoUHJlZmxp
Z2h0KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKICAgICB2b2lkIHByZWZsaWdodFN1Y2Nl
c3MoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKyAgICBXZWJDb3JlOjpDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lv
bnNCYWNrZW5kJiBjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKTsKKyAgICBib29sIHByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwor
I2VuZGlmCisKICAgICBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiYgc2VjdXJpdHlPcmlnaW4oKSBj
b25zdDsKIAogICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgY3VycmVudFJlcXVl
c3QoKSBjb25zdDsKQEAgLTg0LDYgKzkwLDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1faXNTaW1w
bGVSZXF1ZXN0IHsgdHJ1ZSB9OwogICAgIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIgbV9yZWRp
cmVjdEhhbmRsZXI7CiAgICAgbXV0YWJsZSBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6Q29udGVu
dFNlY3VyaXR5UG9saWN5PiBtX2NvbnRlbnRTZWN1cml0eVBvbGljeTsKKyNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpDb250ZW50RXh0
ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kPiBtX2NvbnRlbnRFeHRlbnNpb25zQmFj
a2VuZDsKKyNlbmRpZgogICAgIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
PiBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3Q7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKaW5kZXggNmZiZTMw
NmU0ZDcuLjA1YjgwMTRhNzk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTZXNzaW9uVHJhY2tlci5oIgorI2luY2x1
ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3Vt
ZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViRnJhbWUu
aCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU3VicmVz
b3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJDb250ZW50UHJvdmlkZXIuaD4K
ICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC00MzMsNiArNDM1LDE4IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6OnN0YXJ0UGlu
Z0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvCiAgICAgICAg
ICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMgPSBjb250ZW50U2VjdXJpdHlQ
b2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0KIAorI2lmIEVOQUJMRShDT05URU5UX0VY
VEVOU0lPTlMpCisgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3VtZW50VVJMID0gZG9jdW1lbnQt
PnRvcERvY3VtZW50KCkudXJsKCk7CisKKyAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBm
cmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiBwYWdl
ID0gZnJhbWUucGFnZSgpKSB7CisgICAgICAgICAgICBwYWdlLT51c2VyQ29udGVudFByb3ZpZGVy
KCkuZm9yRWFjaENvbnRlbnRFeHRlbnNpb24oWyZsb2FkUGFyYW1ldGVyc10oY29uc3QgU3RyaW5n
JiBpZGVudGlmaWVyLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVudEV4dGVuc2lvbiYgY29udGVu
dEV4dGVuc2lvbikgeworICAgICAgICAgICAgICAgIGxvYWRQYXJhbWV0ZXJzLmNvbnRlbnRSdWxl
TGlzdHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkZW50aWZpZXIsIHN0YXRpY19jYXN0PGNvbnN0
IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Jj4oY29udGVudEV4dGVuc2lvbi5jb21waWxlZEV4
dGVuc2lvbigpKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIH0sICpkb2N1bWVudExvYWRlcik7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChjb21wbGV0aW9uSGFuZGxlcikKICAg
ICAgICAgbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVycy5hZGQobG9hZFBhcmFtZXRlcnMuaWRl
bnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318678</attachid>
            <date>2017-08-21 15:28:32 -0700</date>
            <delta_ts>2017-08-21 18:32:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175746-20170821152831.patch</filename>
            <type>text/plain</type>
            <size>27356</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwOTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGExMzBlNTBjYWIyODcy
NTFhN2VkYjM3ZmVhOGM4ZDZjNDdmNjE1OS4uMDMyMTIzNDEwOTgzM2QyZjEzYzFiYmZmMjY0OTA3
YWRjZThhOWQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDE3LTA4LTIxICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gQ29udGVudCBl
eHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGludGVyY2VwdCBCZWFjb24gLyBQaW5nIHJlZGly
ZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1
NzQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzk0NjA1MD4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgUGluZ0xvYWQgdG8gcHJvY2Vz
cyBjb250ZW50IGV4dGVuc2lvbiBydWxlcyB1cG9uIHJlZGlyZWN0LiBUaGlzIGFsbG93cyBjb250
ZW50CisgICAgICAgIGV4dGVuc2lvbnMgdG8gYmxvY2sgYW5kIHVwZ3JhZGUgdG8gSFRUUFMgYmVh
Y29uIC8gcGluZyBsb2Fkcy4KKworICAgICAgICBCZWNhdXNlIHBpbmcgbG9hZHMgY2FuIG91dGxp
dmUgdGhlIFdlYlByb2Nlc3MsIHRoZSBjb250ZW50IGV4dGVuc2lvbnMgcnVsZXMgYXJlIHBhc3Nl
ZAorICAgICAgICB0byB0aGUgTmV0d29ya1Byb2Nlc3Mgd2hlbiBzdGFydGluZyB0aGUgUGluZyBs
b2FkLiBUaGUgUGluZ0xvYWQgY2FuIHRoZW4gY29uc3VsdCB0aG9zZQorICAgICAgICBydWxlcyB1
cG9uIHJlZGlyZWN0LCBvbiB0aGUgTmV0d29ya1Byb2Nlc3Mgc2lkZS4KKworICAgICAgICBUZXN0
czogaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLmh0bWwK
KyAgICAgICAgICAgICAgIGh0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24t
cmVkaXJlY3QtYmxvY2tlZC5odG1sCisKKyAgICAgICAgKiBjb250ZW50ZXh0ZW5zaW9ucy9Db250
ZW50RXh0ZW5zaW9uQWN0aW9ucy5oOgorICAgICAgICAqIGNvbnRlbnRleHRlbnNpb25zL0NvbnRl
bnRFeHRlbnNpb25zQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50RXh0ZW5z
aW9uczo6Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpmb3JFYWNoKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ6OnByb2Nlc3ND
b250ZW50RXh0ZW5zaW9uUnVsZXNGb3JQaW5nTG9hZCk6CisgICAgICAgICogY29udGVudGV4dGVu
c2lvbnMvQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmg6CisgICAgICAgICogcGFnZS9QYWdlLmg6
CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50UHJvdmlkZXI6OmZvckVhY2hDb250ZW50RXh0ZW5zaW9uKToKKyAgICAg
ICAgKiBwYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuaDoKKwogMjAxNy0wOC0yMSAgWmFuIERvYmVy
c2VrICA8emRvYmVyc2VrQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0VNRV0gSFRNTE1lZGlhRWxl
bWVudDogYmFzaWMgaW1wbGVtZW50YXRpb25zIG9mICdBdHRlbXB0IHRvIERlY3J5cHQnLCAnQXR0
ZW1wdCB0byBSZXN1bWUgUGxheWJhY2sgSWYgTmVjZXNzYXJ5JwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOWFjMGMy
ZjUwYTU4MmNkYmQ4MmEzNDRjZjI0ZWU1YjBlZTkyNmYzLi41YWIzYzU5YjI4ZmFiMzc5MDdiZjdj
OTExMzBiYTBhNGE4ODIxYThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTIx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgW0JlYWNvbl0gQ29u
dGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGludGVyY2VwdCBCZWFjb24gLyBQaW5n
IHJlZGlyZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTc1NzQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzk0NjA1MD4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgUGluZ0xvYWQgdG8g
cHJvY2VzcyBjb250ZW50IGV4dGVuc2lvbiBydWxlcyB1cG9uIHJlZGlyZWN0LiBUaGlzIGFsbG93
cyBjb250ZW50CisgICAgICAgIGV4dGVuc2lvbnMgdG8gYmxvY2sgYW5kIHVwZ3JhZGUgdG8gSFRU
UFMgYmVhY29uIC8gcGluZyBsb2Fkcy4KKworICAgICAgICBCZWNhdXNlIHBpbmcgbG9hZHMgY2Fu
IG91dGxpdmUgdGhlIFdlYlByb2Nlc3MsIHRoZSBjb250ZW50IGV4dGVuc2lvbnMgcnVsZXMgYXJl
IHBhc3NlZAorICAgICAgICB0byB0aGUgTmV0d29ya1Byb2Nlc3Mgd2hlbiBzdGFydGluZyB0aGUg
UGluZyBsb2FkLiBUaGUgUGluZ0xvYWQgY2FuIHRoZW4gY29uc3VsdCB0aG9zZQorICAgICAgICBy
dWxlcyB1cG9uIHJlZGlyZWN0LCBvbiB0aGUgTmV0d29ya1Byb2Nlc3Mgc2lkZS4KKworICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmVuY29kZSBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpkZWNv
ZGUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0
ZXJzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAo
V2ViS2l0OjpQaW5nTG9hZDo6Y29udGVudEV4dGVuc2lvbnNCYWNrZW5kKToKKyAgICAgICAgKFdl
YktpdDo6UGluZ0xvYWQ6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkxvYWRl
clN0cmF0ZWd5OjpzdGFydFBpbmdMb2FkKToKKwogMjAxNy0wOC0yMSAgQ2hhcmxpZSBUdXJuZXIg
IDxjdHVybmVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgTWVtb3J5Q2FjaGU6OnNldENhcGFjaXRp
ZXMgYXNzZXJ0aW9uIGZhaWx1cmUgbWF4RGVhZEJ5dGVzIDw9IHRvdGFsQnl0ZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
QWN0aW9ucy5oCmluZGV4IDk5MmI2YmJmNzcwMzgwYzhmYjU4ZDVhNTY0YTk3NmJiYTk4MTY3NmYu
LjBhNmIxNTgyMzVlYjdmNzRkODUwZjkwMDczMjZlYjM5YWIwMTc2ZDMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25zLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFj
dGlvbnMuaApAQCAtNTEsNyArNTEsNyBAQCBzdHJ1Y3QgQmxvY2tlZFN0YXR1cyB7CiAgICAgYm9v
bCBtYWRlSFRUUFMgeyBmYWxzZSB9OwogfTsKIAotdm9pZCBhcHBseUJsb2NrZWRTdGF0dXNUb1Jl
cXVlc3QoY29uc3QgQmxvY2tlZFN0YXR1cyYsIFJlc291cmNlUmVxdWVzdCYpOworV0VCQ09SRV9F
WFBPUlQgdm9pZCBhcHBseUJsb2NrZWRTdGF0dXNUb1JlcXVlc3QoY29uc3QgQmxvY2tlZFN0YXR1
cyYsIFJlc291cmNlUmVxdWVzdCYpOwogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50RXh0ZW5zaW9u
cwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMv
Q29udGVudEV4dGVuc2lvbnNCYWNrZW5kLmNwcAppbmRleCBhOTIxMTBhOTVhZGU5ZTdjYTY0OWQx
NTEwYzQwYjM4MzU4YWQyOTFiLi44ZTZlZTUxODE0MWYxMDkxNjViMDEyNjUwZTJjNzcyYzdiZGE0
YWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uc0JhY2tlbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNp
b25zL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5jcHAKQEAgLTEzNCw2ICsxMzQsMTIgQEAgVmVj
dG9yPEFjdGlvbj4gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjphY3Rpb25zRm9yUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlTG8KICAgICByZXR1cm4gZmluYWxBY3Rpb25zOwogfQogCit2b2lk
IENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6Zm9yRWFjaChjb25zdCBXVEY6OkZ1bmN0aW9uPHZv
aWQoY29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbiYpPiYgYXBwbHkpCit7CisgICAgZm9y
IChhdXRvJiBwYWlyIDogbV9jb250ZW50RXh0ZW5zaW9ucykKKyAgICAgICAgYXBwbHkocGFpci5r
ZXksIHBhaXIudmFsdWUpOworfQorCiBTdHlsZVNoZWV0Q29udGVudHMqIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDo6Z2xvYmFsRGlzcGxheU5vbmVTdHlsZVNoZWV0KGNvbnN0IFN0cmluZyYgaWRl
bnRpZmllcikgY29uc3QKIHsKICAgICBjb25zdCBhdXRvJiBjb250ZW50RXh0ZW5zaW9uID0gbV9j
b250ZW50RXh0ZW5zaW9ucy5nZXQoaWRlbnRpZmllcik7CkBAIC0yMTMsNiArMjE5LDQxIEBAIEJs
b2NrZWRTdGF0dXMgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpwcm9jZXNzQ29udGVudEV4dGVu
c2lvblJ1bGVzRm9yTG9hZChjb25zCiAgICAgcmV0dXJuIHsgd2lsbEJsb2NrTG9hZCwgd2lsbEJs
b2NrQ29va2llcywgd2lsbE1ha2VIVFRQUyB9OwogfQogCitCbG9ja2VkU3RhdHVzIENvbnRlbnRF
eHRlbnNpb25zQmFja2VuZDo6cHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvclBpbmdMb2Fk
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCkKK3sKKyAgICBpZiAo
bV9jb250ZW50RXh0ZW5zaW9ucy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBSZXNvdXJjZUxvYWRJbmZvIHJlc291cmNlTG9hZEluZm8gPSB7IHVybCwgbWFpbkRvY3VtZW50
VVJMLCBSZXNvdXJjZVR5cGU6OlJhdyB9OworICAgIFZlY3RvcjxDb250ZW50RXh0ZW5zaW9uczo6
QWN0aW9uPiBhY3Rpb25zID0gYWN0aW9uc0ZvclJlc291cmNlTG9hZChyZXNvdXJjZUxvYWRJbmZv
KTsKKworICAgIGJvb2wgd2lsbEJsb2NrTG9hZCA9IGZhbHNlOworICAgIGJvb2wgd2lsbEJsb2Nr
Q29va2llcyA9IGZhbHNlOworICAgIGJvb2wgd2lsbE1ha2VIVFRQUyA9IGZhbHNlOworICAgIGZv
ciAoY29uc3QgYXV0byYgYWN0aW9uIDogYWN0aW9ucykgeworICAgICAgICBzd2l0Y2ggKGFjdGlv
bi50eXBlKCkpIHsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
QmxvY2tMb2FkOgorICAgICAgICAgICAgd2lsbEJsb2NrTG9hZCA9IHRydWU7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6Qmxv
Y2tDb29raWVzOgorICAgICAgICAgICAgd2lsbEJsb2NrQ29va2llcyA9IHRydWU7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6
TWFrZUhUVFBTOgorICAgICAgICAgICAgaWYgKCh1cmwucHJvdG9jb2xJcygiaHR0cCIpIHx8IHVy
bC5wcm90b2NvbElzKCJ3cyIpKSAmJiAoIXVybC5wb3J0KCkgfHwgaXNEZWZhdWx0UG9ydEZvclBy
b3RvY29sKHVybC5wb3J0KCkudmFsdWUoKSwgdXJsLnByb3RvY29sKCkpKSkKKyAgICAgICAgICAg
ICAgICB3aWxsTWFrZUhUVFBTID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5Tm9uZVNlbGVjdG9y
OgorICAgICAgICBjYXNlIENvbnRlbnRFeHRlbnNpb25zOjpBY3Rpb25UeXBlOjpDU1NEaXNwbGF5
Tm9uZVN0eWxlU2hlZXQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDb250ZW50
RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SWdub3JlUHJldmlvdXNSdWxlczoKKyAgICAgICAgY2Fz
ZSBDb250ZW50RXh0ZW5zaW9uczo6QWN0aW9uVHlwZTo6SW52YWxpZEFjdGlvbjoKKyAgICAgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICByZXR1cm4geyB3aWxsQmxvY2tMb2FkLCB3aWxsQmxvY2tDb29raWVzLCB3aWxsTWFrZUhUVFBT
IH07Cit9CisKIGNvbnN0IFN0cmluZyYgQ29udGVudEV4dGVuc2lvbnNCYWNrZW5kOjpkaXNwbGF5
Tm9uZUNTU1J1bGUoKQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBTdHJpbmc+
IHJ1bGUoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoImRpc3BsYXk6bm9uZSAhaW1wb3J0YW50OyIp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRF
eHRlbnNpb25zQmFja2VuZC5oIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKaW5kZXggYWVjMzkxNTY4YzYzNTEyNmQyMDM4MWU2YWYz
ZWRkZDU4YzVjZjY4My4uZDc1NDE3ZWU2NmI0NTBjN2EyZGFkMDk0OTg3MjZmOGM4M2IyZTY2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVu
c2lvbnNCYWNrZW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kLmgKQEAgLTY1LDkgKzY1LDEyIEBAIHB1YmxpYzoKICAgICBX
RUJDT1JFX0VYUE9SVCBTdHlsZVNoZWV0Q29udGVudHMqIGdsb2JhbERpc3BsYXlOb25lU3R5bGVT
aGVldChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIpIGNvbnN0OwogCiAgICAgQmxvY2tlZFN0YXR1
cyBwcm9jZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmLCBSZXNvdXJj
ZVR5cGUsIERvY3VtZW50TG9hZGVyJiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIpOworICAgIFdF
QkNPUkVfRVhQT1JUIEJsb2NrZWRTdGF0dXMgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zv
clBpbmdMb2FkKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50VVJMKTsKIAogICAg
IHN0YXRpYyBjb25zdCBTdHJpbmcmIGRpc3BsYXlOb25lQ1NTUnVsZSgpOwogCisgICAgdm9pZCBm
b3JFYWNoKGNvbnN0IFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBDb250ZW50RXh0
ZW5zaW9uJik+Jik7CisKIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxDb250ZW50
RXh0ZW5zaW9uPj4gbV9jb250ZW50RXh0ZW5zaW9uczsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCmluZGV4IDg0
YTg2YjE1NjdlZWMwM2UzNzYxYjg4ODdlZDZlNWNkZGNmN2I4OWYuLjA2NjFiODEwNzMwMmEyN2Qy
NjM3Yzc3MTI0MDY3ZmE0MGUxMDU2YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCkBAIC01MDQsNyArNTA0LDcg
QEAgcHVibGljOgogCiAgICAgUGx1Z2luSW5mb1Byb3ZpZGVyJiBwbHVnaW5JbmZvUHJvdmlkZXIo
KTsKIAotICAgIFVzZXJDb250ZW50UHJvdmlkZXImIHVzZXJDb250ZW50UHJvdmlkZXIoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCBVc2VyQ29udGVudFByb3ZpZGVyJiB1c2VyQ29udGVudFByb3ZpZGVy
KCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRVc2VyQ29udGVudFByb3ZpZGVyKFJlZjxV
c2VyQ29udGVudFByb3ZpZGVyPiYmKTsKIAogICAgIFZpc2l0ZWRMaW5rU3RvcmUmIHZpc2l0ZWRM
aW5rU3RvcmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJvdmlkZXIuY3Bw
CmluZGV4IGQ1NTI0ZDliZGFhNGExYjQ2ODNiOWU1OTlhMzQ0OTZkOGU0Njk0MGEuLjAwMTdlOWE0
ZjkzZWI0MTZlZTYzZjZjMTJjMWFkYmJmMzE3OWFjNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9Vc2VyQ29udGVudFByb3ZpZGVyLmNwcApAQCAtMTE2LDYgKzExNiwxNSBAQCBWZWN0b3I8Q29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0aW9uc0ZvclJl
c291cmNlTG9hZChjbwogCiAgICAgcmV0dXJuIHVzZXJDb250ZW50RXh0ZW5zaW9uQmFja2VuZCgp
LmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQocmVzb3VyY2VMb2FkSW5mbyk7CiB9CisKK3ZvaWQgVXNl
ckNvbnRlbnRQcm92aWRlcjo6Zm9yRWFjaENvbnRlbnRFeHRlbnNpb24oY29uc3QgV1RGOjpGdW5j
dGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIENvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uJik+JiBhcHBseSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikK
K3sKKyAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9jdW1lbnRM
b2FkZXIpKQorICAgICAgICByZXR1cm47CisKKyAgICB1c2VyQ29udGVudEV4dGVuc2lvbkJhY2tl
bmQoKS5mb3JFYWNoKGFwcGx5KTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5o
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3ZpZGVyLmgKaW5kZXggZDQyMWMx
ZTc4YzYxOTkxY2FkOTk1ZGI4YmY4NmY4MDA0ZDg2MWE3ZC4uYTY1ZDFiYmZkMjRiY2YzZGI2Zjkw
YTIwNmY2OWI1MDkxOWQ3MzgwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFBy
b3ZpZGVyLmgKQEAgLTkyLDYgKzkyLDcgQEAgcHVibGljOgogICAgIC8vIHdoaWNoIHNob3VsZCBh
bHdheXMgZXhpc3QuCiAgICAgQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgcHJvY2Vz
c0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoY29uc3QgVVJMJiwgUmVzb3VyY2VUeXBlLCBE
b2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKTsKICAgICBWZWN0b3I8Q29u
dGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gYWN0aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNv
dXJjZUxvYWRJbmZvJiwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7
CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmb3JFYWNoQ29udGVudEV4dGVuc2lvbihjb25zdCBX
VEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiwgQ29udGVudEV4dGVuc2lvbnM6OkNvbnRl
bnRFeHRlbnNpb24mKT4mLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVy
KTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCmluZGV4
IDk4MmY2NzlhYWU3ZjZiMzYzNTU1ZjQwNGZhODU5ZDhiZGM3MTVhOGYuLmZkZWU1ODE5Nzc5ZmU0
NjIyZDM5ZTZkMTkzZDhkNDQ3ZGUwZWU2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuY3Bw
CkBAIC04OCw2ICs4OCwxMSBAQCB2b2lkIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzOjpl
bmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgICAgICBlbmNvZGVyIDw8IFNl
Y3VyaXR5T3JpZ2luRGF0YTo6ZnJvbVNlY3VyaXR5T3JpZ2luKCpzb3VyY2VPcmlnaW4pOwogICAg
IGVuY29kZXIuZW5jb2RlRW51bShtb2RlKTsKICAgICBlbmNvZGVyIDw8IGNzcFJlc3BvbnNlSGVh
ZGVyczsKKworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgZW5jb2RlciA8PCBt
YWluRG9jdW1lbnRVUkw7CisgICAgZW5jb2RlciA8PCBjb250ZW50UnVsZUxpc3RzOworI2VuZGlm
CiB9CiAKIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjZUxvYWRQYXJhbWV0ZXJzJiByZXN1bHQpCkBA
IC0xNjcsNiArMTcyLDE0IEBAIGJvb2wgTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnM6OmRl
Y29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtSZXNvdXJjCiAgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY3NwUmVzcG9uc2VIZWFkZXJzKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKKyAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKHJlc3VsdC5tYWluRG9jdW1lbnRVUkwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5jb250ZW50UnVsZUxpc3RzKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisKICAgICByZXR1cm4gdHJ1ZTsKIH0KICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9h
ZFBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291
cmNlTG9hZFBhcmFtZXRlcnMuaAppbmRleCA1YzkyZWUwY2VjOTI0M2Y1MjRhMjljODA2OTBiNzIx
MGNhZjViZDg1Li5jMjkxOGVmOWVjYmJhYTFlN2I1OWRkMmU0NDkwNTk0N2Y4OTRmOTA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRQ
YXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUmVz
b3VyY2VMb2FkUGFyYW1ldGVycy5oCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNsdWRlICJOZXR3
b3JrTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTYW5kYm94RXh0ZW5zaW9uLmgiCisjaW5j
bHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3REYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29y
ZS9Db250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL0ZldGNoT3B0aW9ucy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VIYW5kbGUuaD4K
QEAgLTU5LDYgKzYwLDExIEBAIHB1YmxpYzoKICAgICBSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW4+IHNvdXJjZU9yaWdpbjsKICAgICBXZWJDb3JlOjpGZXRjaE9wdGlvbnM6Ok1vZGUgbW9k
ZTsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYkNvcmU6OkNvbnRlbnRTZWN1cml0eVBvbGljeVJlc3Bv
bnNlSGVhZGVycz4gY3NwUmVzcG9uc2VIZWFkZXJzOworCisjaWYgRU5BQkxFKENPTlRFTlRfRVhU
RU5TSU9OUykKKyAgICBXZWJDb3JlOjpVUkwgbWFpbkRvY3VtZW50VVJMOworICAgIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBXZWJDb21waWxlZENvbnRlbnRSdWxlTGlzdERhdGE+PiBjb250ZW50
UnVsZUxpc3RzOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKaW5kZXggMjEyYzdhNjUxY2RlOTFlOGY0
OTNkMTQzZmExOTUzZWE1ZTU3ZTIzNy4uZGI2OGEwODlhZWQ0ZGY0YzRkOTg1ZmMzNjYyZjQ5OTZm
YWZmZWU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9h
ZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5jcHAKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaCIK
ICNpbmNsdWRlICJOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlNl
c3Npb25UcmFja2VyLmgiCisjaW5jbHVkZSAiV2ViQ29tcGlsZWRDb250ZW50UnVsZUxpc3QuaCIK
ICNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRTZWN1cml0
eVBvbGljeS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmg+
CkBAIC0xMDIsMTggKzEwMywzMCBAQCBTZWN1cml0eU9yaWdpbiYgUGluZ0xvYWQ6OnNlY3VyaXR5
T3JpZ2luKCkgY29uc3QKIAogdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rp
b24oUmVzb3VyY2VSZXNwb25zZSYmIHJlZGlyZWN0UmVzcG9uc2UsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKLSAgICBtX2xhc3RSZWRpcmVjdGlvblJlcXVlc3QgPSByZXF1ZXN0OwotCiAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBzaG91bGRGb2xs
b3dSZWRpcmVjdHM/ICVkIiwgbV9wYXJhbWV0ZXJzLnNob3VsZEZvbGxvd1JlZGlyZWN0cyk7CiAg
ICAgaWYgKCFtX3BhcmFtZXRlcnMuc2hvdWxkRm9sbG93UmVkaXJlY3RzKSB7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGRpZEZpbmlzaChSZXNvdXJjZUVycm9yIHsg
U3RyaW5nKCksIDAsIGN1cnJlbnRSZXF1ZXN0KCkudXJsKCksIEFTQ0lJTGl0ZXJhbCgiTm90IGFs
bG93ZWQgdG8gZm9sbG93IHJlZGlyZWN0cyIpLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpBY2Nlc3ND
b250cm9sIH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisjaWYgRU5BQkxFKENPTlRFTlRf
RVhURU5TSU9OUykKKyAgICBpZiAocHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQo
cmVxdWVzdCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24gLSBSZWRpcmVjdCB3YXMgYmxvY2tlZCBieSBjb250ZW50IGV4dGVuc2lv
bnMiKTsKKyAgICAgICAgbV9sYXN0UmVkaXJlY3Rpb25SZXF1ZXN0ID0gcmVxdWVzdDsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgZGlkRmluaXNoKFJlc291cmNlRXJy
b3IgeyBTdHJpbmcoKSwgMCwgY3VycmVudFJlcXVlc3QoKS51cmwoKSwgQVNDSUlMaXRlcmFsKCJC
bG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uIiksIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vz
c0NvbnRyb2wgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKworICAgIG1fbGFz
dFJlZGlyZWN0aW9uUmVxdWVzdCA9IHJlcXVlc3Q7CisKICAgICBpZiAoYXV0byogY29udGVudFNl
Y3VyaXR5UG9saWN5ID0gdGhpcy0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkpIHsKICAgICAgICAg
aWYgKCFjb250ZW50U2VjdXJpdHlQb2xpY3ktPmFsbG93Q29ubmVjdFRvU291cmNlKHJlcXVlc3Qu
dXJsKCksIHJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkgPyBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OlJlZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6Tm8gOiBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzKSkgewogICAgICAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2lsbFBlcmZvcm1IVFRQUmVkaXJlY3Rpb24gLSBSZWRpcmVjdCB3YXMgYmxv
Y2tlZCBieSBDU1AiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAg
ICAgICAgICBkaWRGaW5pc2goUmVzb3VyY2VFcnJvciB7IFN0cmluZygpLCAwLCBjdXJyZW50UmVx
dWVzdCgpLnVybCgpLCBBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kiKSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCB9KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KQEAgLTI5Niw2ICszMDksMjggQEAgdm9pZCBQ
aW5nTG9hZDo6cHJlZmxpZ2h0U3VjY2VzcyhSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQogICAg
ICAgICBsb2FkUmVxdWVzdChXVEZNb3ZlKGFjdHVhbFJlcXVlc3QpKTsKIH0KIAorI2lmIEVOQUJM
RShDT05URU5UX0VYVEVOU0lPTlMpCisKK0NvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5z
aW9uc0JhY2tlbmQmIFBpbmdMb2FkOjpjb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQoKQoreworICAg
IGlmICghbV9jb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQpIHsKKyAgICAgICAgbV9jb250ZW50RXh0
ZW5zaW9uc0JhY2tlbmQgPSBzdGQ6Om1ha2VfdW5pcXVlPENvbnRlbnRFeHRlbnNpb25zOjpDb250
ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+KCk7CisgICAgICAgIGZvciAoYXV0byYgcGFpciA6IG1fcGFy
YW1ldGVycy5jb250ZW50UnVsZUxpc3RzKQorICAgICAgICAgICAgbV9jb250ZW50RXh0ZW5zaW9u
c0JhY2tlbmQtPmFkZENvbnRlbnRFeHRlbnNpb24ocGFpci5maXJzdCwgV2ViQ29tcGlsZWRDb250
ZW50UnVsZUxpc3Q6OmNyZWF0ZShXVEZNb3ZlKHBhaXIuc2Vjb25kKSkpOworICAgIH0KKyAgICBy
ZXR1cm4gKm1fY29udGVudEV4dGVuc2lvbnNCYWNrZW5kOworfQorCisvLyBSZXR1cm5zIHRydWUg
aWYgd2Ugc2hvdWxkIGJsb2NrIHRoZSBsb2FkLgorYm9vbCBQaW5nTG9hZDo6cHJvY2Vzc0NvbnRl
bnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAg
IGF1dG8gc3RhdHVzID0gY29udGVudEV4dGVuc2lvbnNCYWNrZW5kKCkucHJvY2Vzc0NvbnRlbnRF
eHRlbnNpb25SdWxlc0ZvclBpbmdMb2FkKHJlcXVlc3QudXJsKCksIG1fcGFyYW1ldGVycy5tYWlu
RG9jdW1lbnRVUkwpOworICAgIGFwcGx5QmxvY2tlZFN0YXR1c1RvUmVxdWVzdChzdGF0dXMsIHJl
cXVlc3QpOworICAgIHJldHVybiBzdGF0dXMuYmxvY2tlZExvYWQ7Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2Vu
ZGlmIC8vIFVTRShORVRXT1JLX1NFU1NJT04pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL1BpbmdMb2FkLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmgKaW5kZXggY2Y2YWExMGFiOGFmZGU2NjhjMTlmMGMzMmQ3OWVhZWQxNGUwMDcyMC4u
ZTk5M2QxNjEwMjNhMDZmMTA1OTIyNTk1MzQyZDkwNzk3ZDQ4OGQyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
TmV0d29ya0RhdGFUYXNrLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRl
cnMuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0NvbnRlbnRFeHRlbnNpb25zQmFja2VuZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VFcnJvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC02OCw2ICs2OSwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgbWFrZUNyb3NzT3JpZ2luQWNjZXNz
UmVxdWVzdFdpdGhQcmVmbGlnaHQoV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOwogICAgIHZv
aWQgcHJlZmxpZ2h0U3VjY2VzcyhXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CiAKKyNpZiBF
TkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQorICAgIFdlYkNvcmU6OkNvbnRlbnRFeHRlbnNpb25z
OjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQmIGNvbnRlbnRFeHRlbnNpb25zQmFja2VuZCgpOwor
ICAgIGJvb2wgcHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0ZvckxvYWQoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CisjZW5kaWYKKwogICAgIFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luJiBz
ZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCiAgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiBjdXJyZW50UmVxdWVzdCgpIGNvbnN0OwpAQCAtODQsNiArOTAsOSBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9pc1NpbXBsZVJlcXVlc3QgeyB0cnVlIH07CiAgICAgUmVkaXJlY3RDb21wbGV0
aW9uSGFuZGxlciBtX3JlZGlyZWN0SGFuZGxlcjsKICAgICBtdXRhYmxlIHN0ZDo6dW5pcXVlX3B0
cjxXZWJDb3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k+IG1fY29udGVudFNlY3VyaXR5UG9saWN5
OworI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgc3RkOjp1bmlxdWVfcHRyPFdl
YkNvcmU6OkNvbnRlbnRFeHRlbnNpb25zOjpDb250ZW50RXh0ZW5zaW9uc0JhY2tlbmQ+IG1fY29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kOworI2VuZGlmCiAgICAgc3RkOjpvcHRpb25hbDxXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q+IG1fbGFzdFJlZGlyZWN0aW9uUmVxdWVzdDsKIH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5
LmNwcAppbmRleCA2ZmJlMzA2ZTRkNzU3NjBhMGMyNmNiNjMyNWM4ODJmMGM0ZTQyNjQ5Li4wNWI4
MDE0YTc5NzVjMTEzNzU1MDdkNGVjODZjMGZhZjA5ZTIzNjhhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Jlc291cmNlTG9hZFBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJTZXNzaW9u
VHJhY2tlci5oIgorI2luY2x1ZGUgIldlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0LmgiCiAjaW5j
bHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWUuaCIKQEAgLTYxLDYgKzYyLDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2luY2x1
ZGUgPFdlYkNvcmUvU3VicmVzb3VyY2VMb2FkZXIuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1VzZXJD
b250ZW50UHJvdmlkZXIuaD4KICNpbmNsdWRlIDxwYWwvU2Vzc2lvbklELmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC00MzMsNiArNDM1LDE4IEBAIHZvaWQgV2ViTG9hZGVy
U3RyYXRlZ3k6OnN0YXJ0UGluZ0xvYWQoRnJhbWUmIGZyYW1lLCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvCiAgICAgICAgICAgICBsb2FkUGFyYW1ldGVycy5jc3BSZXNwb25zZUhlYWRlcnMg
PSBjb250ZW50U2VjdXJpdHlQb2xpY3ktPnJlc3BvbnNlSGVhZGVycygpOwogICAgIH0KIAorI2lm
IEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCisgICAgbG9hZFBhcmFtZXRlcnMubWFpbkRvY3Vt
ZW50VVJMID0gZG9jdW1lbnQtPnRvcERvY3VtZW50KCkudXJsKCk7CisKKyAgICBpZiAoYXV0byog
ZG9jdW1lbnRMb2FkZXIgPSBmcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSB7CisgICAg
ICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUucGFnZSgpKSB7CisgICAgICAgICAgICBwYWdlLT51
c2VyQ29udGVudFByb3ZpZGVyKCkuZm9yRWFjaENvbnRlbnRFeHRlbnNpb24oWyZsb2FkUGFyYW1l
dGVyc10oY29uc3QgU3RyaW5nJiBpZGVudGlmaWVyLCBDb250ZW50RXh0ZW5zaW9uczo6Q29udGVu
dEV4dGVuc2lvbiYgY29udGVudEV4dGVuc2lvbikgeworICAgICAgICAgICAgICAgIGxvYWRQYXJh
bWV0ZXJzLmNvbnRlbnRSdWxlTGlzdHMuYXBwZW5kKHN0ZDo6bWFrZV9wYWlyKGlkZW50aWZpZXIs
IHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvbXBpbGVkQ29udGVudFJ1bGVMaXN0Jj4oY29udGVudEV4
dGVuc2lvbi5jb21waWxlZEV4dGVuc2lvbigpKS5kYXRhKCkpKTsKKyAgICAgICAgICAgIH0sICpk
b2N1bWVudExvYWRlcik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChjb21w
bGV0aW9uSGFuZGxlcikKICAgICAgICAgbV9waW5nTG9hZENvbXBsZXRpb25IYW5kbGVycy5hZGQo
bG9hZFBhcmFtZXRlcnMuaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZWJlZDFkYjRjOWI4MDExZWZiOTFmMDYzNDJkNjk5Nzg3N2NjYmVjZS4uZTEyMWVm
ODY1MTlmNzYzOTkyMmI3YmRkNTk2M2NlZTI1YzM1MjgyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBA
CisyMDE3LTA4LTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAg
W0JlYWNvbl0gQ29udGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGludGVyY2VwdCBC
ZWFjb24gLyBQaW5nIHJlZGlyZWN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTc1NzQ2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zMzk0NjA1MD4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbGF5
b3V0IHRlc3QgY292ZXJhZ2UgZm9yIGJsb2NraW5nIGJlYWNvbiBsb2FkcyB2aWEgY29udGVudCBl
eHRlbnNpb25zLgorCisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNv
bi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi1leHBlY3RlZC50eHQ6CisgICAgICAgICogaHR0cC93cHQv
YmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sOgorICAg
ICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0
ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9i
ZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLWJsb2NrZWQuaHRtbC5qc29uOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGly
ZWN0LWJsb2NrZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9iZWFj
b24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRp
cmVjdC1ibG9ja2VkLmh0bWwuanNvbjogQWRkZWQuCisKIDIwMTctMDgtMjEgIE1zMmdlciAgPE1z
MmdlckBpZ2FsaWEuY29tPgogCiAgICAgICAgIG1lZGlhLWNhcHRpb25zLmh0bWwgaW1wcm92ZW1l
bnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMt
YmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWItZXhw
ZWN0ZWQudHh0CmluZGV4IGVlMTk3YTNhMTY0Y2Q2MGVjZjY3ZDAzNjUyNzk1YmM3M2RlYzFhZmMu
LjhiYzVjYTQxMDZkMjU2ZDBhNjgwMDdiOTk2ZjEzNWE0MjliY2FmYjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxv
Y2tlZC5zdWItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9j
b25uZWN0LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWItZXhwZWN0ZWQudHh0CkBAIC0x
LDMgKzEsNCBAQAorQ09OU09MRSBNRVNTQUdFOiBCZWFjb24gQVBJIGNhbm5vdCBsb2FkIGh0dHA6
Ly8xMjcuMC4wLjE6ODgwMC9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy9iZWFjb24tcHJlZmxpZ2h0
LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9MjUzOWU4ODMtN2RmYi00ZGRlLWEyMjctYTQxYzY3
MGQ1ZmUxJnJlZGlyZWN0X3N0YXR1cz0zMDcmbG9jYXRpb249aHR0cCUzQSUyRiUyRjEyNy4wLjAu
MSUzQTg4MDAlMkZXZWJLaXQlMkZiZWFjb24lMkZyZXNvdXJjZXMlMkZiZWFjb24tcHJlZmxpZ2h0
LnB5JTNGYWxsb3dDb3JzJTNEMSUyNmNtZCUzRHB1dCUyNmlkJTNEMjUzOWU4ODMtN2RmYi00ZGRl
LWEyMjctYTQxYzY3MGQ1ZmUxJmNvdW50PTEuIEJsb2NrZWQgYnkgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kKIAogUEFTUyBSZWRpcmVjdCBpcyBibG9ja2VkIGJ5IENTUCAKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3JjLWJlYWNvbi1yZWRpcmVjdC1i
bG9ja2VkLnN1Yi5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nvbm5lY3Qtc3Jj
LWJlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLnN1Yi5odG1sCmluZGV4IDYyMjBmNDQ3ZGFhZDc0OTY1
N2JhMWQ5MzU1NjljZGZiN2I0OGY5NDQuLmQwNTEzMmRkMGY5NjQ0NDk1NzE4NGNjMGQyZWU4ZGZj
MGRlM2QzZDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb25uZWN0
LXNyYy1iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5zdWIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9iZWFjb24vY29ubmVjdC1zcmMtYmVhY29uLXJlZGlyZWN0LWJsb2NrZWQuc3ViLmh0
bWwKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgewogCiBm
dW5jdGlvbiB0ZXN0Q09SU1ByZWZsaWdodFJlZGlyZWN0U3VjY2Vzcyh3aGF0KSB7CiAgIHZhciB0
ZXN0QmFzZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQX1JFTU9URV9PUklHSU4gKyBSRVNPVVJDRVNf
RElSOwotICB2YXIgaWQgPSBzZWxmLnRva2VuKCk7CisgIHZhciBpZCA9ICIyNTM5ZTg4My03ZGZi
LTRkZGUtYTIyNy1hNDFjNjcwZDVmZTEiOyAvLyBVc2UgYSBzdGF0aWMgdG9rZW4gYmVjYXVzZSB0
aGUgVVJMIGlzIGxvZ2dlZC4KICAgdmFyIHRhcmdldCA9IGVuY29kZVVSSUNvbXBvbmVudCh0ZXN0
QmFzZSArICJiZWFjb24tcHJlZmxpZ2h0LnB5P2FsbG93Q29ycz0xJmNtZD1wdXQmaWQ9IiArIGlk
KTsKIAogICAvLyAzMDcgJiAzMDggcmVkaXJlY3Rpb25zIGFyZSB0aGUgb25seSBvbmVzIHRoYXQg
bWFpbnRhaW4gdGhlIFBPU1QgbWV0aG9kLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxv
Y2tlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTIxZjA5MmMyNmFkODQ4MDhkZGUzZGFiZjUz
ODQ3ZWJhOTQxNWMwNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Jl
YWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw1IEBACitDT05TT0xFIE1FU1NBR0U6IGxpbmUgOTogQ29udGVudCBibG9ja2VyIHByZXZl
bnRlZCBmcmFtZSBkaXNwbGF5aW5nIGh0dHA6Ly9sb2NhbGhvc3Q6ODgwMC9XZWJLaXQvYmVhY29u
L2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLmh0bWwgZnJvbSBsb2FkaW5nIGEgcmVz
b3VyY2UgZnJvbSBodHRwOi8vbG9jYWxob3N0Ojg4MDAvV2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMv
YmVhY29uLXByZWZsaWdodC5weQorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDk6IEJlYWNvbiBBUEkg
Y2Fubm90IGxvYWQgaHR0cDovL2xvY2FsaG9zdDo4ODAwL1dlYktpdC9iZWFjb24vcmVzb3VyY2Vz
L2JlYWNvbi1wcmVmbGlnaHQucHkuIFJlc291cmNlIGJsb2NrZWQgYnkgY29udGVudCBibG9ja2Vy
CisKK1BBU1MgQ29udGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGJsb2NrIGJlYWNv
bnMgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0
ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdlYTAx
OGM2YjIzY2U5ZTg3NGI0YmI1M2NhMDk5MzZjYmEyOGYwZAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tl
ZC5odG1sCkBAIC0wLDAgKzEsMTEgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21tb24v
dXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KKyAgICBjb25zdCBSRVNPVVJDRVNfRElSID0g
Ii9XZWJLaXQvYmVhY29uL3Jlc291cmNlcy8iOworCisgICAgdGVzdChmdW5jdGlvbigpIHsKKyAg
ICBhc3NlcnRfZmFsc2UobmF2aWdhdG9yLnNlbmRCZWFjb24oUkVTT1VSQ0VTX0RJUiArICJiZWFj
b24tcHJlZmxpZ2h0LnB5IiksICJzZW5kQmVhY29uIHNob3VsZCByZXR1cm4gZmFsc2UiKTsKKyAg
ICB9LCAiQ29udGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGJsb2NrIGJlYWNvbnMi
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nv
bnRlbnRleHRlbnNpb25zL2JlYWNvbi1ibG9ja2VkLmh0bWwuanNvbiBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tYmxvY2tlZC5odG1sLmpzb24K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzNhNjAxYzRmZmZhNTU3MThiYTJiYjZlY2Y0OGMxOGM1Njc0Njk1NwotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5z
aW9ucy9iZWFjb24tYmxvY2tlZC5odG1sLmpzb24KQEAgLTAsMCArMSwxMCBAQAorWworICAgIHsK
KyAgICAgICAgInRyaWdnZXIiOiB7CisgICAgICAgICAgICAidXJsLWZpbHRlciI6ICJiZWFjb24t
cHJlZmxpZ2h0LnB5IgorICAgICAgICB9LAorICAgICAgICAiYWN0aW9uIjogeworICAgICAgICAg
ICAgInR5cGUiOiAiYmxvY2siCisgICAgICAgIH0KKyAgICB9CitdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9iZWFjb24vY29udGVudGV4dGVuc2lvbnMvYmVhY29uLXJlZGlyZWN0
LWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRl
bnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45N2I3OTUyZmE4MTRkZTJlMzI0YjVkMTE1ODBhNGVmZWMyYWIxNzQ3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2NvbnRlbnRleHRlbnNpb25zL2Jl
YWNvbi1yZWRpcmVjdC1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0NPTlNP
TEUgTUVTU0FHRTogQmVhY29uIEFQSSBjYW5ub3QgbG9hZCBodHRwOi8vMTI3LjAuMC4xOjg4MDAv
V2ViS2l0L2JlYWNvbi9yZXNvdXJjZXMvYmVhY29uLXByZWZsaWdodC5weT9hbGxvd0NvcnM9MSZj
bWQ9cHV0JmlkPWY0NzBmNDNjLTI1OGMtNGM4Mi1iODgwLWFjZTNiY2RiMjExYyZyZWRpcmVjdF9z
dGF0dXM9MzA3JmxvY2F0aW9uPWh0dHAlM0ElMkYlMkYxMjcuMC4wLjElM0E4ODAwJTJGV2ViS2l0
JTJGYmVhY29uJTJGcmVzb3VyY2VzJTJGYmVhY29uLXByZWZsaWdodC5weSUzRmFsbG93Q29ycyUz
RDElMjZjbWQlM0RwdXQlMjZpZCUzRGY0NzBmNDNjLTI1OGMtNGM4Mi1iODgwLWFjZTNiY2RiMjEx
YyZjb3VudD0xLiBCbG9ja2VkIGJ5IGNvbnRlbnQgZXh0ZW5zaW9uCisKK1BBU1MgQ29udGVudCBl
eHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGJsb2NrIGJlYWNvbiByZWRpcmVjdHMgCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9i
ZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29u
L2NvbnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDE1NWViNGU5ZTM3NDBkOWNhMGQyMDdlN2ZkY2I4ZmMzNWNiMDAwMAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFj
b24tcmVkaXJlY3QtYmxvY2tlZC5odG1sCkBAIC0wLDAgKzEsMzcgQEAKKzwhRE9DVFlQRSBodG1s
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9jb21tb24vdXRpbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9jb21t
b24vZ2V0LWhvc3QtaW5mby5zdWIuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2NvbnN0IFJFU09V
UkNFU19ESVIgPSAiL1dlYktpdC9iZWFjb24vcmVzb3VyY2VzLyI7CisKK2Z1bmN0aW9uIHBvbGxS
ZXN1bHQodGVzdCwgaWQpIHsKKyAgdmFyIGNoZWNrVXJsID0gUkVTT1VSQ0VTX0RJUiArICJiZWFj
b24tcHJlZmxpZ2h0LnB5P2NtZD1nZXQmaWQ9IiArIGlkOworCisgIHJldHVybiBuZXcgUHJvbWlz
ZShyZXNvbHZlID0+IHsKKyAgICBzdGVwX3RpbWVvdXQodGVzdC5zdGVwX2Z1bmMoKCkgPT4gewor
ICAgICAgZmV0Y2goY2hlY2tVcmwpLnRoZW4ocmVzcG9uc2UgPT4geworICAgICAgICByZXNwb25z
ZS5qc29uKCkudGhlbihib2R5ID0+IHsKKyAgICAgICAgICByZXNvbHZlKGJvZHkpOworICAgICAg
ICB9KTsKKyAgICAgIH0pOworICAgIH0pLCAxMDAwKTsKKyAgfSk7Cit9CisKK3Byb21pc2VfdGVz
dChmdW5jdGlvbih0ZXN0KSB7CisgIHZhciB0ZXN0QmFzZSA9IGdldF9ob3N0X2luZm8oKS5IVFRQ
X1JFTU9URV9PUklHSU4gKyBSRVNPVVJDRVNfRElSOworICB2YXIgaWQgPSAiZjQ3MGY0M2MtMjU4
Yy00YzgyLWI4ODAtYWNlM2JjZGIyMTFjIjsgLy8gVXNlIGEgc3RhdGljIHRva2VuIHNpbmNlIHRo
ZSBVUkwgaXMgbG9nZ2VkLgorICB2YXIgdGFyZ2V0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHRlc3RC
YXNlICsgImJlYWNvbi1wcmVmbGlnaHQucHk/YWxsb3dDb3JzPTEmY21kPXB1dCZpZD0iICsgaWQp
OworCisgIC8vIDMwNyAmIDMwOCByZWRpcmVjdGlvbnMgYXJlIHRoZSBvbmx5IG9uZXMgdGhhdCBt
YWludGFpbiB0aGUgUE9TVCBtZXRob2QuCisgIHZhciB0ZXN0VXJsID0gUkVTT1VSQ0VTX0RJUiAr
ICJyZWRpcmVjdC5weT9yZWRpcmVjdF9zdGF0dXM9MzA3JmxvY2F0aW9uPSIgKyB0YXJnZXQ7CisK
KyAgYXNzZXJ0X3RydWUobmF2aWdhdG9yLnNlbmRCZWFjb24odGVzdFVybCksICJzZW5kQmVhY29u
IHNob3VsZCByZXR1cm4gdHJ1ZSIpOworICByZXR1cm4gcG9sbFJlc3VsdCh0ZXN0LCBpZCkgLnRo
ZW4ocmVzdWx0ID0+IHsKKyAgICAvLyBSZWRpcmVjdGVkIFVSTCBjb250YWlucyAiJmNvdW50PSIg
d2hpY2ggdGhlIGNvbnRlbnQgZmlsdGVyIGJsb2Nrcy4KKyAgICBhc3NlcnRfZXF1YWxzKHJlc3Vs
dFsnYmVhY29uJ10sIDAsICJEaWQgbm90IHJlY2VpdmUgYmVhY29uIikKKyAgfSk7Cit9LCAiQ29u
dGVudCBleHRlbnNpb25zIHNob3VsZCBiZSBhYmxlIHRvIGJsb2NrIGJlYWNvbiByZWRpcmVjdHMi
KTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvYmVhY29uL2Nv
bnRlbnRleHRlbnNpb25zL2JlYWNvbi1yZWRpcmVjdC1ibG9ja2VkLmh0bWwuanNvbiBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L2JlYWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tcmVkaXJlY3Qt
YmxvY2tlZC5odG1sLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ0NTU2ZTEzZjI5OTVmNjhhNWViOWE3Y2Y3
ZjM1YTkwZTc2MThiOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L2Jl
YWNvbi9jb250ZW50ZXh0ZW5zaW9ucy9iZWFjb24tcmVkaXJlY3QtYmxvY2tlZC5odG1sLmpzb24K
QEAgLTAsMCArMSwxMCBAQAorWworICAgIHsKKyAgICAgICAgInRyaWdnZXIiOiB7CisgICAgICAg
ICAgICAidXJsLWZpbHRlciI6ICJjb3VudCIKKyAgICAgICAgfSwKKyAgICAgICAgImFjdGlvbiI6
IHsKKyAgICAgICAgICAgICJ0eXBlIjogImJsb2NrIgorICAgICAgICB9CisgICAgfQorXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>