<?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>173745</bug_id>
          
          <creation_ts>2017-06-22 16:47:36 -0700</creation_ts>
          <short_desc>Consistently use RunLoop::isMain() in WebKit2</short_desc>
          <delta_ts>2017-06-23 14:18:33 -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 Local Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=173738</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=173722</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=134900</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=129135</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Daniel Bates">dbates</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1322123</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2017-06-22 16:47:36 -0700</bug_when>
    <thetext>In bug #173738, we substituted RunLoop:Main() for WTF::isMainThread() only in file Source/WebKit2/UIProcess/GenericCallback.h with the explanation &quot;We have verified locally that RunLoop::isMain() propertly (sic) return true in [in affected iOS apps] (while WTF::isMainThread() returns false).&quot; It would be good to understand why WTF::isMainThread() can return the wrong result in iOS WebKit2 and fix it. If it is not feasible to fix it and we know that RunLoop:Main() always returns the correct answer (to the question whether the currently running thread is the main thread) then we should substitute RunLoop:Main() for all uses of WTF::isMainThread().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322124</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-06-22 16:47:57 -0700</bug_when>
    <thetext>&lt;rdar://problem/32936527&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322127</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 16:53:16 -0700</bug_when>
    <thetext>The apps that were broken used both WK2 and WK1 I believe. I have not looked in details yet but my guess is that WTF::isMainThread() gets confused by the fact that there is a WebThread in the UIProcess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322158</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 18:48:52 -0700</bug_when>
    <thetext>Similar change made by Tim in:
https://bugs.webkit.org/show_bug.cgi?id=134900</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322159</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 18:49:48 -0700</bug_when>
    <thetext>And by Enrica in:
https://bugs.webkit.org/show_bug.cgi?id=129135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322160</commentid>
    <comment_count>5</comment_count>
      <attachid>313683</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 18:55:16 -0700</bug_when>
    <thetext>Created attachment 313683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322161</commentid>
    <comment_count>6</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2017-06-22 18:55:22 -0700</bug_when>
    <thetext>Can we rename isMainThread to avoid this confusion?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322163</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 18:58:02 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #6)
&gt; Can we rename isMainThread to avoid this confusion?

Maybe. Although I&apos;d rather do this in a separate patch. Any naming proposal? IsMainThreadOrWebThread?

However, For non-Cocoa ports, isMainThread() does the right thing and is accurately named. The issue is only with iOS WebKit1 and the WebThread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322164</commentid>
    <comment_count>8</comment_count>
      <attachid>313684</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 19:00:19 -0700</bug_when>
    <thetext>Created attachment 313684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322165</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 19:04:41 -0700</bug_when>
    <thetext>We recently had similar issues with using WebCore::Timer in the UIProcess. As a result, we&apos;d want to add an assertion in the WebCore::Timer to make sure it is not called from the UIProcess. The issue is that we&apos;d need a way to detect this accurately (and not break WebKit1 code running in the UIProcess).

Ideally, we&apos;d add a similar assertion in WTF::isMainThread() (or make WTF::isMainThread() work reliably).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322166</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 19:05:52 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; We recently had similar issues with using WebCore::Timer in the UIProcess.
&gt; As a result, we&apos;d want to add an assertion in the WebCore::Timer to make
&gt; sure it is not called from the UIProcess. The issue is that we&apos;d need a way
&gt; to detect this accurately (and not break WebKit1 code running in the
&gt; UIProcess).
&gt; 
&gt; Ideally, we&apos;d add a similar assertion in WTF::isMainThread() (or make
&gt; WTF::isMainThread() work reliably).

Note that this patch helps but does not protect again people using WTF::isMainThread() is the UIProcess again. It also doesn&apos;t take care of code that is in WebCore and potentially called from the UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322173</commentid>
    <comment_count>11</comment_count>
      <attachid>313686</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-22 19:27:15 -0700</bug_when>
    <thetext>Created attachment 313686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322417</commentid>
    <comment_count>12</comment_count>
      <attachid>313686</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2017-06-23 13:47:57 -0700</bug_when>
    <thetext>Comment on attachment 313686
Patch

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

Looks good. I was about to make this mistake in another patch! r=me.

&gt; Source/WebKit2/Shared/CoordinatedGraphics/CoordinatedGraphicsScene.cpp:592
&gt; +    bool calledOnMainThread = WTF::RunLoop::isMain();

Do we need WTF:: here? We don&apos;t use it elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322423</commentid>
    <comment_count>13</comment_count>
      <attachid>313744</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-06-23 13:50:02 -0700</bug_when>
    <thetext>Created attachment 313744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322432</commentid>
    <comment_count>14</comment_count>
      <attachid>313744</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-23 14:18:31 -0700</bug_when>
    <thetext>Comment on attachment 313744
Patch

Clearing flags on attachment: 313744

Committed r218763: &lt;http://trac.webkit.org/changeset/218763&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1322433</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-23 14:18:33 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313683</attachid>
            <date>2017-06-22 18:55:16 -0700</date>
            <delta_ts>2017-06-22 19:00:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173745-20170622185514.patch</filename>
            <type>text/plain</type>
            <size>29496</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGYzNTM1NThlMzBkMTcy
M2M4M2ZiMTNhYzdmMWJlYjRiMjcwYWU5Ni4uNDkzYWYzOTIxMmMyMTlhMmEzZDQzYTVmYmI0MGMx
ODdhOWY2MjViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE3LTA2LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQ29uc2lzdGVudGx5IHVzZSBS
dW5Mb29wOjppc01haW4oKSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM3NDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyOTM2
NTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnNpc3RlbnRseSB1c2UgUnVuTG9vcDppc01haW4oKSBvbiBXZWJLaXQyIGluc3RlYWQgb2YgV1RG
Ojppc01haW5UaHJlYWQoKS4KKyAgICAgICAgV1RGOjppc01haW5UaHJlYWQoKSByZXR1cm5zIHRy
dWUgZm9yIHRoZSBXZWJUaHJlYWQgaW5zdGVhZCBvZiB0aGUgVUlUaHJlYWQKKyAgICAgICAgaW4g
V2ViS2l0MS4gVGhlcmVmb3JlIFdURjo6aXNNYWluVGhyZWFkKCkgaXMgdW5zYWZlIHRvIHVzZSBp
biB0aGUgVUlQcm9jZXNzCisgICAgICAgIGFzIHRoZSBhcHBsaWNhdGlvbiBtYXkgYmUgdXNpbmcg
V2ViS2l0MSBhcyB3ZWxsIGFuZCBoYXZlIGEgV2ViVGhyZWFkLgorCisgICAgICAgIFRlY2huaWNh
bGx5LCB3ZSBvbmx5ICpuZWVkKiB0byBtb3ZlIGZyb20gV1RGOjppc01haW5UaHJlYWQoKSB0bwor
ICAgICAgICBSdW5Mb29wOjppc01haW4oKSBpbiB0aGUgVUlQcm9jZXNzIGNvZGUgYnV0IEkgcG9y
dGVkIGFsbCBvZiBXZWJLaXQyIGZvcgorICAgICAgICBjb25zaXN0ZW5jeS4gUnVuTG9vcDo6aXNN
YWluKCkgaXMgYWx3YXlzIHNhZmUgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
azo6TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp+
TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6Z2V0U2l6
ZUZvck5leHQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c2Vlayk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnJlYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVzb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06
CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNr
OmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIpOgorICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hPbk1h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5
bmNSZW1vdGVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmFwcGVuZFVwZGF0ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldvcmtRdWV1ZVBv
b2w6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp+Q29t
cG9zaXRpbmdSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6cGVyZm9y
bVRhc2tTeW5jKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpyZWxlYXNlVXBkYXRlQXRsYXNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29tcG9zaXRvcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QT2JqZWN0UHJveHk6
Ok5QX0RlYWxsb2NhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0lu
QWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYml0ZURhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNv
cmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rp
c2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAoLVtX
S1BERlZpZXcgX2hpZ2hsaWdodExpbmtBbm5vdGF0aW9uOmZvckR1cmF0aW9uOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFu
ZWwubW06CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIF91cGxvYWRJdGVtRm9ySW1hZ2VE
YXRhOmltYWdlTmFtZTpzdWNjZXNzQmxvY2s6ZmFpbHVyZUJsb2NrOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbVJlYWRBc3luYyk6CisKKzIwMTctMDYtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBpc01haW5UaHJlYWQoKSBhc3NlcnRpb25zIGluIENhbGxiYWNr
TWFwIGFyZSBpbmNvcnJlY3RseSBmYWlsaW5nIG9uIHNvbWUgaU9TIGFwcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzczOAogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzI5MjM5MzM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAppbmRleCA4M2ViNmVhOTUxY2U1NzAxYmVkNzg4OWFkZjQ0
ODIzOGY2N2FhYWQxLi4xMjk0ZmQxMWZjZjQyYjMxMzk4NTNlNzMyMjZhNjA3OTY0ZTUzOWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYKICAgICAsIG1fZmly
c3RSZXF1ZXN0KHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMpCiAgICAgLCBtX3Nob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIXJlcXVlc3RXaXRoQ3JlZGVudGlhbHMudXJs
KCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVy
ZSk7CkBAIC04NCw3ICs4NCw3IEBAIE5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmCiAKIE5ldHdvcmtE
YXRhVGFzazo6fk5ldHdvcmtEYXRhVGFzaygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9jbGllbnQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwCmluZGV4IDZmNGJiZjU5YTEyYjUxM2ZjNjRjNjJlYWNkNTg0YjQwYWJj
N2U4NjkuLjA5NjEyNzMyYTVlMzFhZWVmMTZjYWRmN2U5ZTFkMWE2NjE3OGNjZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjppbnZhbGlk
YXRlQW5kQ2FuY2VsKCkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4
dCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gRG8gd2UgZmluaXNoIHZhbGlkYXRpbmcgYW5kIGNvdW50aW5n
IHNpemUgZm9yIGFsbCBpdGVtcz8KICAgICBpZiAobV9zaXplSXRlbUNvdW50ID49IG1fYmxvYkRh
dGEtPml0ZW1zKCkuc2l6ZSgpKSB7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4dCgpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlkR2V0U2l6ZShsb25nIGxvbmcgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xp
ZW50ICYmICFpc0Rvd25sb2FkKCkpKSB7CiAgICAgICAgIGNsZWFyU3RyZWFtKCk7CkBAIC0yMzYs
NyArMjM2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRTaXplKGxvbmcgbG9u
ZyBzaXplKQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNlZWsoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IC8vIENvbnZlcnQgZnJvbSB0aGUgc3VmZml4IGxlbmd0aCB0byB0aGUgcmFuZ2UuCiAgICAgaWYg
KG1fcmFuZ2VTdWZmaXhMZW5ndGggIT0ga1Bvc2l0aW9uTm90U3BlY2lmaWVkKSB7CkBAIC0zMzAs
NyArMzMwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVh
ZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbW9yZSByZW1haW5pbmcgZGF0YSB0
byByZWFkLCB3ZSBhcmUgZG9uZS4KICAgICBpZiAoIW1fdG90YWxSZW1haW5pbmdTaXplIHx8IG1f
cmVhZEl0ZW1Db3VudCA+PSBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGI3ZGZkMzExMDc4
MGFlZGMwODg1M2ExNTZkNzY2MjkxNjA2NzYwY2EuLjUxNzNlNzljMWZmYmEyNDQzYzBkNzNjNmU4
OGRjYWNjYjIxNTRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwogCiAgICAgaWYgKG1f
dGFzayAmJiBtX3Rhc2stPmlzRG93bmxvYWQoKSkgewpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwKIAogdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NB
UFRVUkUpCiAgICAgaWYgKG1fcmVjb3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmUwMTNmM2ZjNjA0Y2UyMTJmNzljODdl
Yjk2YTZiZGYwZWNhY2YxOC4uYWNkZTVjMWIyNGFkY2NmMTY1NDU5YTg5YTYxZWEyNDZkZDM2ODIx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gTmV0d29ya1Nl
c3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24oKTsKICNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHN0YXRpYyBOZXR3
b3JrU2Vzc2lvbiogc2Vzc2lvbiA9ICZOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuICpzZXNzaW9uOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAppbmRleCA5ZjFjZDBhZDMzMDc2ZTk4YTk2MGViMzliMjIxNmUwYmU0NzQ1NDZh
Li42ZmRiMmNiZmU4MzU1ZmRlYzEzZjhkYzdhMjdiZTNjZDFkODY5NjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZXNvdXJjZSgiUmVzb3VyY2UiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcmVzb3VyY2U7
CiB9CkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgQ2FjaGU6OmluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBjYWNoZVBhdGgsIE9wdGlvblNldDxPcHRpb24+IG9wdGlvbnMpCiAjaWYgRU5BQkxFKE5FVFdP
UktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRh
aW5zKE9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7CiAgICAgICAgIG1fbG93UG93
ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5v
dGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKLSAgICAgICAgICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQp
CiAgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCAz
YzQzZTg3ZDliNWVlNWNhYmZjNzVkNzg0NzU5YzRmMjI1ODE3OWMwLi4wZTE5ZWFhNGRiNDg5Y2Iy
YWJhZGYwZTg0ZTM0YWFiN2Y0MmZiMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFS
dW5Mb29wOjppc01haW4oKSkgewogICAgICAgICByZWFkU3luY0luVGhyZWFkKG9mZnNldCwgc2l6
ZSwgcXVldWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZAogCiB2b2lk
IElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVs
KHRoaXMpOwogICAgIFRocmVhZDo6Y3JlYXRlKCJJT0NoYW5uZWw6OnJlYWRTeW5jIiwgW2NoYW5u
ZWwsIHNpemUsIHF1ZXVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDE2YTVjNDczNmVj
ZDg4YzNmMWVmYmU0NDIwY2Y0ZDI3MTU3ZjFlYjkuLjlhNDUyYTUwMjkzMmQyMzQ0OWY2ZDE3ZWJj
NjNhOWI1ZTc5ZDQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzU4LDcgKzM1OCw3IEBA
IC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9IGRhdGFU
YXNrLnRhc2tJZGVudGlmaWVyOwogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVj
ZWl2ZVJlc3BvbnNlIiwgdGFza0lkZW50aWZpZXIpOwogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7Ci0gICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNl
IGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUg
PSBbcmVzcG9uc2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBb
KGlkKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWY8TmV0
d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBMZQogCiBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
ZGVmYXVsdFNlc3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24qIHNlc3Np
b24gPSAmTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpLmxlYWtSZWYoKTsK
ICAgICByZXR1cm4gKnNlc3Npb247CiB9CkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKIAogTmV0d29ya0RhdGFUYXNrQ29jb2Eq
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoc3RvcmVkQ3JlZGVu
dGlhbHMgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlh
bHMpCiAgICAgICAgIHJldHVybiBtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmdldCh0YXNr
SWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0Q3JlZGVudGlhbHMu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCmluZGV4IDRhYjBlNWFjNjJhZDg2YjRjZjRkZDFhODdiYmQwN2U3NTZiMmNkYTUuLmMw
ZDExZGE1MjhmYTM4YThhOWY3MDYxNzU1YzYwYzAzMjFjNzU5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoT25NYWlu
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1JlbW90ZUNvbnRlbnQoKQogICAgIGVuc3VyZVJvb3RM
YXllcigpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHJlbmRlclF1ZXVlOwotICAg
IGJvb2wgY2FsbGVkT25NYWluVGhyZWFkID0gV1RGOjppc01haW5UaHJlYWQoKTsKKyAgICBib29s
IGNhbGxlZE9uTWFpblRocmVhZCA9IFdURjo6UnVuTG9vcDo6aXNNYWluKCk7CiAgICAgaWYgKCFj
YWxsZWRPbk1haW5UaHJlYWQpCiAgICAgICAgIG1fcmVuZGVyUXVldWVNdXRleC5sb2NrKCk7CiAg
ICAgcmVuZGVyUXVldWUgPSBXVEZNb3ZlKG1fcmVuZGVyUXVldWUpOwpAQCAtNjQyLDcgKzY0Miw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5l
ZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZXRhY2goKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CiAgICAgbV9jbGll
bnQgPSBudWxscHRyOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVuZGVyUXVldWVNdXRleCk7
CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGVu
ZFVwZGF0ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgaWYgKCFtX2lzQWN0aXZl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZW5kZXJR
dWV1ZU11dGV4KTsKICAgICBtX3JlbmRlclF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3Np
dGluZ1J1bkxvb3AuY3BwCmluZGV4IGViMmJmM2EzY2I4YzYyZTY4ZjQzNmY3MmRjZTlhMzViZjhm
MmZkNDYuLjRlMGNiMGZlMjA2MmU5YzM2NTQyMDRjMzEyZTkzNjMxM2RjZmQ3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxv
b3AuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAgY2xhc3MgV29ya1F1ZXVlUG9vbCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFdvcmtRdWV1ZVBvb2wmIHNpbmdsZXRvbigpCiAgICAgewotICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V29ya1F1ZXVlUG9vbD4gd29ya1F1ZXVl
UG9vbDsKICAgICAgICAgcmV0dXJuIHdvcmtRdWV1ZVBvb2w7CiAgICAgfQogCiAgICAgdm9pZCBk
aXNwYXRjaCh2b2lkKiBjb250ZXh0LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgZ2V0T3JDcmVhdGVXb3JrUXVldWVGb3JDb250ZXh0KGNv
bnRleHQpLmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9CiAKQEAgLTExOSw3ICsx
MTksNyBAQCBDb21wb3NpdGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcChGdW5jdGlvbjx2
b2lkICgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQogCiBDb21wb3NpdGluZ1J1bkxvb3A6On5Db21wb3Np
dGluZ1J1bkxvb3AoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdvcmtRdWV1ZSBpcyBk
ZWxldGVkIGFmdGVyIHRoZSBDb21wb3NpdGluZ1J1bkxvb3AsIGJlY2F1c2UgbV91cGRhdGVUaW1l
ciBoYXMgYSByZWZlcmVuY2UKICAgICAvLyBvZiB0aGUgV29ya1F1ZXVlIHJ1biBsb29wLiBQYXNz
aW5nIHRoaXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlIHRoZSBwb2ludGVyIHdpbGwgb25seSBi
ZSB1c2VkIGFzIGEKICAgICAvLyBIYXNoTWFwIGtleSBieSBXb3JrUXVldWVQb29sLgpAQCAtMTI4
LDEzICsxMjgsMTMgQEAgQ29tcG9zaXRpbmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKCkK
IAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLmRpc3Bh
dGNoKHRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxv
b3A6OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4KTsKICAg
ICBXb3JrUXVldWVQb29sOjpzaW5nbGV0b24oKS5kaXNwYXRjaCh0aGlzLCBbdGhpcywgZnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cAppbmRleCAyOWYwZjYwMmUyZWNlOWZhZWMyYmY2MWViZmIzM2I2MjQyNmZmNzExLi5lOWNkMjFk
MWVhZjkyZGFlMThkNWNlZmFhMTA0NDU5MDNhMDRiMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtODEs
NyArODEsNyBAQCBUaHJlYWRlZENvbXBvc2l0b3I6On5UaHJlYWRlZENvbXBvc2l0b3IoKQogCiB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlR0xDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IEFTU0VSVChtX25hdGl2ZVN1cmZhY2VIYW5kbGUpOwogCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZyYW1lKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgbV9jbGllbnQucmVuZGVyTmV4dEZyYW1lKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50
U2l6ZSYgb2Zmc2V0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2NsaWVudC5jb21taXRTY3JvbGxPZmZzZXQobGF5
ZXJJRCwgb2Zmc2V0KTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFt0aGlzLCBzY2VuZSA9IG1ha2VSZWYo
Km1fc2NlbmUpLCBzdGF0ZV0gewogICAgICAgICBzY2VuZS0+Y29tbWl0U2NlbmVTdGF0ZShzdGF0
ZSk7CiAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRl
U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogCiB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6cmVsZWFzZVVwZGF0ZUF0bGFzZXMoVmVjdG9yPHVpbnQzMl90
PiYmIGF0bGFzZXNUb1JlbW92ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFtz
Y2VuZSA9IG1ha2VSZWYoKm1fc2NlbmUpLCBhdGxhc2VzVG9SZW1vdmUgPSBXVEZNb3ZlKGF0bGFz
ZXNUb1JlbW92ZSldIHsKICAgICAgICAgc2NlbmUtPnJlbGVhc2VVcGRhdGVBdGxhc2VzKGF0bGFz
ZXNUb1JlbW92ZSk7CiAgICAgfSk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCgpCiAKIHZvaWQg
VGhyZWFkZWRDb21wb3NpdG9yOjpmcmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzY2VuZVVw
ZGF0ZUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TlBPYmplY3RQcm94eS5jcHAKaW5kZXggZWY2Yzc5MTMwNWI3Y2QyZWU0NWM5MTljMjE0YTNjOTEw
MjkyNzljZC4uNWFhOWFlZGI4OWViMDVjOTc5MTI1MTlkZTM5NDk2ZDJiZTdlNmQ5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCB2b2lkIE5QT2JqZWN0UHJveHk6Ok5QX0RlYWxsb2NhdGUoTlBPYmplY3Qq
IG5wT2JqZWN0KQogICAgIC8vIFNpbmNlIE5QQVBJIGJlaGF2aW9yIG9uIGEgYmFja2dyb3VuZCB0
aHJlYWQgaXMgdW5kZWZpbmVkLCBpdCBpcyBva2F5IHRvIGxpbWl0IHRoaXMgd29ya2Fyb3VuZCB0
byB0aGUgb25lIEFQSQogICAgIC8vIHRoYXQgaXMga25vd24gdG8gYmUgbWlzdXNlZCBkdXJpbmcg
cGx1Z2luIHRlYXJkb3duLCBhbmQgdG8gbm90IGJlIGNvbmNlcm5lZCBhYm91dCBjaGFuZ2UgaW4g
YmVoYXZpb3IgaWYgdGhpcwogICAgIC8vIG9jY3VyZWQgYXQgYW55IG90aGVyIHRpbWUuCi0gICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtucE9iamVjdF0gewogICAgICAgICAgICAg
TlBfRGVhbGxvY2F0ZShucE9iamVjdCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAKaW5kZXggM2U4NmIwNWNhNTAyZTcyYjhmZTQxMGIzMjk1NzE2NzIwMmJhNzgy
Yy4uYWRhMWMxZGE0ZDRiOWJiMGNiYTgzZmM2YWQwODIyNThiM2UzMDk1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCB0aW1lKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGltcG9ydE9yaWdpbklkZW50aWZpZXJz
KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luSWRlbnRpZmllcnNUb0RlbGV0ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjMzJjYjYz
MzlmYWM4OGEyNmFiNDFiMjY2YzIxYjQ2NWU4MmUzNTFiLi5hYjM0NGIxMTQzZjg5YTg4YTMxYWI2
YThhYzIwZDFiNWI0ZTllZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJz
aXN0ZW50RGF0YVN0b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZl
Y3RvcjxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMsIGJvb2wgc2hvdWxk
Tm90aWZ5UGFnZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgLy8gV2UgZXhwZWN0IHRoaXMgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWlu
IHRocmVhZCBzbyB3ZSBnZXQgdGhlIGRlZmF1bHQgd2Vic2l0ZSBkYXRhIHN0b3JlLgotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRv
cihGdW5jdGlvbjx2b2lkKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTI1OSw3ICsyNTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0luQWxsUGVycwogICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICBkYXRhU3RvcmUucmVt
b3ZlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKGRhdGFUeXBlcywgeyB9LCBX
VEZNb3ZlKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKSwgW2NhbGxiYWNrQWdncmVnYXRv
ciwgc2hvdWxkTm90aWZ5UGFnZSwgcGFnZV0oVmVjdG9yPFN0cmluZz4mJiBkb21haW5zV2l0aERl
bGV0ZWRXZWJzaXRlRGF0YSkgewogICAgICAgICAgICAgLy8gV2hlbiBjb21wbGV0aW5nIHRoZSB0
YXNrLCB3ZSBzaG91bGQgYmUgZ2V0dGluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAg
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzaG91bGROb3Rp
ZnlQYWdlKQogICAgICAgICAgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZSgiV2Vic2l0ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWluc0Zp
bmlzaGVkIiwgbnVsbHB0cik7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFs
bFBlcnMKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c1dpdGhXZWJpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9v
bCBzaG91bGROb3RpZnlQYWdlLCBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBXZSBleHBlY3QgdGhpcyB0byBiZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIHNvIHdlIGdldCB0aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3Rv
cmUuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIAogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgOiBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgZXhwbGljaXQgQ2FsbGJh
Y2tBZ2dyZWdhdG9yKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJpdGVEYXRhKE9wdGlvblNldDxXZWJzCiAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAg
IGRhdGFTdG9yZS50b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YShk
YXRhVHlwZXMsIHsgfSwgW2NhbGxiYWNrQWdncmVnYXRvciwgc2hvdWxkTm90aWZ5UGFnZSwgcGFn
ZV0oSGFzaFNldDxTdHJpbmc+JiYgZG9tYWluc1dpdGhEYXRhUmVjb3JkcykgewogICAgICAgICAg
ICAgLy8gV2hlbiBjb21wbGV0aW5nIHRoZSB0YXNrLCB3ZSBzaG91bGQgYmUgZ2V0dGluZyBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChzaG91bGROb3RpZnlQYWdlKQogICAgICAgICAgICAgICAgIHBhZ2Uu
dmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yVG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAppbmRleCAwZTgyOGI0MTc2MzNkN2E2NGIyMGMxZDU0MjA4YmYzZTQwM2IwYmQx
Li4wZmJmMzNhNmZlMjA5ZGJhZWM5MzQ0ZTdhYzE4ODQzNDQ5MzYyZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFs
aXplRGF0YVR5cGVzVG9SZW1vdmUoKQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAgICBpZiAoIWNv
cmVTdG9yZSgpLnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTE3Niw3ICsxNzYsNyBAQCBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIAogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNl
dFN0YXRpc3RpY3NTdG9yZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jb3B5UmVmKCkp
OwogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3Rp
Y3NRdWV1ZShtX3N0YXRpc3RpY3NRdWV1ZS5jb3B5UmVmKCkpOwpAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291
cmNlTG9hZE9ic2VydmVyKCkKICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpPiYmIHNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JEb21haW5zSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAgICAgcmVnaXN0ZXJTaGFyZWRS
ZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LT5zZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soW3Nob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JEb21haW5zSGFuZGxlciA9IFdURk1vdmUoc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkgewpAQCAt
Mjc2LDcgKzI3Niw3IEBAIFN0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBl
cnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsCiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKCkKIHsKLSAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAK
ICAgICBhdXRvIGVuY29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsK
ICAgICB3cml0ZUVuY29kZXJUb0Rpc2soKmVuY29kZXIuZ2V0KCksICJmdWxsX2Jyb3dzaW5nX3Nl
c3Npb24iKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzaygpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTdHJpbmcmIGxhYmVsKSBjb25zdAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJhd0RhdGEgPSBlbmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7CiAgICAgaWYgKCFyYXdE
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkYjhj
N2Q4MzkzZjFkM2RiZTk5ZWMwMGZkZjYwMDU2NjM1NjI2ZmFmLi5jYjhkY2UxNzZjZTRjZTQ1ZTdh
MWQzMTY4MzE1ZDI4YjcwOTRiNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5tbQpAQCAtNDI3LDcgKzQyNyw3IEBAIC0gKHZvaWQpX2hpZ2hsaWdodExpbmtBbm5v
dGF0aW9uOihVSVBERkxpbmtBbm5vdGF0aW9uICopbGlua0Fubm90YXRpb24gZm9yRHVyYXRpCiAg
ICAgW2hpZ2hsaWdodFZpZXcgc2V0Q29ybmVyUmFkaXVzOmhpZ2hsaWdodEJvcmRlclJhZGl1c107
CiAgICAgW2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0Q29sb3JdOwogCi0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IFtzZWxmIGFkZFN1YnZpZXc6aGlnaGxpZ2h0Vmlldy5nZXQoKV07CiAgICAgZGlzcGF0Y2hfYWZ0
ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24gKiBOU0VDX1BFUl9T
RUMpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBbaGlnaGxpZ2h0Vmll
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDMxNjc3ZjA5MmFhYjRl
NzEyMjAwNDA2ODgyYzBkZTg2NWNiOGVkNzMuLjllNzliMmI1OTJjOTVhMDgzMTRjYmJhOTc5MjYx
MjI3M2IzMTNkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtNjE0LDcgKzYxNCw3IEBAIC0gKHZvaWQp
X3Byb2Nlc3NNZWRpYUluZm9EaWN0aW9uYXJpZXM6KE5TQXJyYXkgKilpbmZvcyBhdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4CiAtICh2b2lkKV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEg
KilpbWFnZURhdGEgaW1hZ2VOYW1lOihOU1N0cmluZyAqKWltYWdlTmFtZSBzdWNjZXNzQmxvY2s6
KHZvaWQgKF4pKF9XS0ZpbGVVcGxvYWRJdGVtICopKXN1Y2Nlc3NCbG9jayBmYWlsdXJlQmxvY2s6
KHZvaWQgKF4pKHZvaWQpKWZhaWx1cmVCbG9jawogewogICAgIEFTU0VSVF9BUkcoaW1hZ2VEYXRh
LCBpbWFnZURhdGEpOwotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTlNTdHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5RGly
ZWN0b3J5TmFtZSA9IEAiV0tXZWJGaWxlVXBsb2FkIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGI1YjAyMWY1MzQ4NTBmNDgxNzg4
NDA4MzcwNTFhMTM5Njk0YTMzMWUuLmFjYjM2MjU4NGNmNWNiY2U2ODJhYzdkMGNlNmE0YmQ2NTg1
NGQ2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
OwogCiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCBjZmI1YjEwY2M3MGZhODZh
NjVjNDYzZWU1MmFmOGYyZWNkM2JiNTg1Li5mOGZmOGM1M2U2NDdhM2MzYzNjYmNkMDUxMTg4NTU4
Yjc3ZTM0ZjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHN0YXRpYyBib29sIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JE
YXRhKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pZCog
YnVmZmVyLCBnc2l6ZSBjb3VudCwgaW50IC8qcHJpb3JpdHkqLywgR0NhbmNlbGxhYmxlKiBjYW5j
ZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpKTsKICAgICBXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJlYW0gPSBXRUJL
SVRfU09VUF9SRVFVRVNUX0lOUFVUX1NUUkVBTShpbnB1dFN0cmVhbSk7CiAgICAgR1JlZlB0cjxH
VGFzaz4gdGFzayA9IGFkb3B0R1JlZihnX3Rhc2tfbmV3KHN0cmVhbSwgY2FuY2VsbGFibGUsIGNh
bGxiYWNrLCB1c2VyRGF0YSkpOwogCkBAIC0xNDIsNyArMTQyLDcgQEAgR0lucHV0U3RyZWFtKiB3
ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtTmV3KHVpbnQ2NF90IGNvbnRlbnRMZW5ndGgpCiAK
IHZvaWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUFkZERhdGEoV2ViS2l0U291cFJlcXVl
c3RJbnB1dFN0cmVhbSogc3RyZWFtLCBjb25zdCB2b2lkKiBkYXRhLCBzaXplX3QgZGF0YUxlbmd0
aCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICBpZiAod2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbUZpbmlzaGVk
KHN0cmVhbSkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313684</attachid>
            <date>2017-06-22 19:00:19 -0700</date>
            <delta_ts>2017-06-22 19:27:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173745-20170622190017.patch</filename>
            <type>text/plain</type>
            <size>29495</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGYzNTM1NThlMzBkMTcy
M2M4M2ZiMTNhYzdmMWJlYjRiMjcwYWU5Ni4uNDkzYWYzOTIxMmMyMTlhMmEzZDQzYTVmYmI0MGMx
ODdhOWY2MjViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE3LTA2LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQ29uc2lzdGVudGx5IHVzZSBS
dW5Mb29wOjppc01haW4oKSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM3NDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyOTM2
NTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnNpc3RlbnRseSB1c2UgUnVuTG9vcDppc01haW4oKSBvbiBXZWJLaXQyIGluc3RlYWQgb2YgV1RG
Ojppc01haW5UaHJlYWQoKS4KKyAgICAgICAgV1RGOjppc01haW5UaHJlYWQoKSByZXR1cm5zIHRy
dWUgZm9yIHRoZSBXZWJUaHJlYWQgaW5zdGVhZCBvZiB0aGUgVUlUaHJlYWQKKyAgICAgICAgaW4g
V2ViS2l0MS4gVGhlcmVmb3JlIFdURjo6aXNNYWluVGhyZWFkKCkgaXMgdW5zYWZlIHRvIHVzZSBp
biB0aGUgVUlQcm9jZXNzCisgICAgICAgIGFzIHRoZSBhcHBsaWNhdGlvbiBtYXkgYmUgdXNpbmcg
V2ViS2l0MSBhcyB3ZWxsIGFuZCBoYXZlIGEgV2ViVGhyZWFkLgorCisgICAgICAgIFRlY2huaWNh
bGx5LCB3ZSBvbmx5ICpuZWVkKiB0byBtb3ZlIGZyb20gV1RGOjppc01haW5UaHJlYWQoKSB0bwor
ICAgICAgICBSdW5Mb29wOjppc01haW4oKSBpbiB0aGUgVUlQcm9jZXNzIGNvZGUgYnV0IEkgcG9y
dGVkIGFsbCBvZiBXZWJLaXQyIGZvcgorICAgICAgICBjb25zaXN0ZW5jeS4gUnVuTG9vcDo6aXNN
YWluKCkgaXMgYWx3YXlzIHNhZmUgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
azo6TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp+
TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6Z2V0U2l6
ZUZvck5leHQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c2Vlayk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnJlYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVzb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06
CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNr
OmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIpOgorICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hPbk1h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5
bmNSZW1vdGVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmFwcGVuZFVwZGF0ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldvcmtRdWV1ZVBv
b2w6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp+Q29t
cG9zaXRpbmdSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6cGVyZm9y
bVRhc2tTeW5jKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpyZWxlYXNlVXBkYXRlQXRsYXNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29tcG9zaXRvcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QT2JqZWN0UHJveHk6
Ok5QX0RlYWxsb2NhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0lu
QWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYml0ZURhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNv
cmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rp
c2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAoLVtX
S1BERlZpZXcgX2hpZ2hsaWdodExpbmtBbm5vdGF0aW9uOmZvckR1cmF0aW9uOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFu
ZWwubW06CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIF91cGxvYWRJdGVtRm9ySW1hZ2VE
YXRhOmltYWdlTmFtZTpzdWNjZXNzQmxvY2s6ZmFpbHVyZUJsb2NrOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbVJlYWRBc3luYyk6CisKKzIwMTctMDYtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBpc01haW5UaHJlYWQoKSBhc3NlcnRpb25zIGluIENhbGxiYWNr
TWFwIGFyZSBpbmNvcnJlY3RseSBmYWlsaW5nIG9uIHNvbWUgaU9TIGFwcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzczOAogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzI5MjM5MzM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAppbmRleCA4M2ViNmVhOTUxY2U1NzAxYmVkNzg4OWFkZjQ0
ODIzOGY2N2FhYWQxLi4xMjk0ZmQxMWZjZjQyYjMxMzk4NTNlNzMyMjZhNjA3OTY0ZTUzOWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYKICAgICAsIG1fZmly
c3RSZXF1ZXN0KHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMpCiAgICAgLCBtX3Nob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIXJlcXVlc3RXaXRoQ3JlZGVudGlhbHMudXJs
KCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVy
ZSk7CkBAIC04NCw3ICs4NCw3IEBAIE5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmCiAKIE5ldHdvcmtE
YXRhVGFzazo6fk5ldHdvcmtEYXRhVGFzaygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9jbGllbnQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwCmluZGV4IDZmNGJiZjU5YTEyYjUxM2ZjNjRjNjJlYWNkNTg0YjQwYWJj
N2U4NjkuLjA5NjEyNzMyYTVlMzFhZWVmMTZjYWRmN2U5ZTFkMWE2NjE3OGNjZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjppbnZhbGlk
YXRlQW5kQ2FuY2VsKCkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4
dCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gRG8gd2UgZmluaXNoIHZhbGlkYXRpbmcgYW5kIGNvdW50aW5n
IHNpemUgZm9yIGFsbCBpdGVtcz8KICAgICBpZiAobV9zaXplSXRlbUNvdW50ID49IG1fYmxvYkRh
dGEtPml0ZW1zKCkuc2l6ZSgpKSB7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4dCgpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlkR2V0U2l6ZShsb25nIGxvbmcgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xp
ZW50ICYmICFpc0Rvd25sb2FkKCkpKSB7CiAgICAgICAgIGNsZWFyU3RyZWFtKCk7CkBAIC0yMzYs
NyArMjM2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRTaXplKGxvbmcgbG9u
ZyBzaXplKQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNlZWsoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IC8vIENvbnZlcnQgZnJvbSB0aGUgc3VmZml4IGxlbmd0aCB0byB0aGUgcmFuZ2UuCiAgICAgaWYg
KG1fcmFuZ2VTdWZmaXhMZW5ndGggIT0ga1Bvc2l0aW9uTm90U3BlY2lmaWVkKSB7CkBAIC0zMzAs
NyArMzMwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVh
ZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbW9yZSByZW1haW5pbmcgZGF0YSB0
byByZWFkLCB3ZSBhcmUgZG9uZS4KICAgICBpZiAoIW1fdG90YWxSZW1haW5pbmdTaXplIHx8IG1f
cmVhZEl0ZW1Db3VudCA+PSBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGI3ZGZkMzExMDc4
MGFlZGMwODg1M2ExNTZkNzY2MjkxNjA2NzYwY2EuLjUxNzNlNzljMWZmYmEyNDQzYzBkNzNjNmU4
OGRjYWNjYjIxNTRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwogCiAgICAgaWYgKG1f
dGFzayAmJiBtX3Rhc2stPmlzRG93bmxvYWQoKSkgewpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwKIAogdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NB
UFRVUkUpCiAgICAgaWYgKG1fcmVjb3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmUwMTNmM2ZjNjA0Y2UyMTJmNzljODdl
Yjk2YTZiZGYwZWNhY2YxOC4uYWNkZTVjMWIyNGFkY2NmMTY1NDU5YTg5YTYxZWEyNDZkZDM2ODIx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gTmV0d29ya1Nl
c3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24oKTsKICNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHN0YXRpYyBOZXR3
b3JrU2Vzc2lvbiogc2Vzc2lvbiA9ICZOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuICpzZXNzaW9uOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAppbmRleCA5ZjFjZDBhZDMzMDc2ZTk4YTk2MGViMzliMjIxNmUwYmU0NzQ1NDZh
Li42ZmRiMmNiZmU4MzU1ZmRlYzEzZjhkYzdhMjdiZTNjZDFkODY5NjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZXNvdXJjZSgiUmVzb3VyY2UiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcmVzb3VyY2U7
CiB9CkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgQ2FjaGU6OmluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBjYWNoZVBhdGgsIE9wdGlvblNldDxPcHRpb24+IG9wdGlvbnMpCiAjaWYgRU5BQkxFKE5FVFdP
UktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRh
aW5zKE9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7CiAgICAgICAgIG1fbG93UG93
ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5v
dGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKLSAgICAgICAgICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQp
CiAgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCAz
YzQzZTg3ZDliNWVlNWNhYmZjNzVkNzg0NzU5YzRmMjI1ODE3OWMwLi4wZTE5ZWFhNGRiNDg5Y2Iy
YWJhZGYwZTg0ZTM0YWFiN2Y0MmZiMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFS
dW5Mb29wOjppc01haW4oKSkgewogICAgICAgICByZWFkU3luY0luVGhyZWFkKG9mZnNldCwgc2l6
ZSwgcXVldWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZAogCiB2b2lk
IElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVs
KHRoaXMpOwogICAgIFRocmVhZDo6Y3JlYXRlKCJJT0NoYW5uZWw6OnJlYWRTeW5jIiwgW2NoYW5u
ZWwsIHNpemUsIHF1ZXVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDE2YTVjNDczNmVj
ZDg4YzNmMWVmYmU0NDIwY2Y0ZDI3MTU3ZjFlYjkuLjlhNDUyYTUwMjkzMmQyMzQ0OWY2ZDE3ZWJj
NjNhOWI1ZTc5ZDQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzU4LDcgKzM1OCw3IEBA
IC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9IGRhdGFU
YXNrLnRhc2tJZGVudGlmaWVyOwogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVj
ZWl2ZVJlc3BvbnNlIiwgdGFza0lkZW50aWZpZXIpOwogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7Ci0gICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNl
IGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUg
PSBbcmVzcG9uc2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBb
KGlkKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWY8TmV0
d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBMZQogCiBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
ZGVmYXVsdFNlc3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24qIHNlc3Np
b24gPSAmTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpLmxlYWtSZWYoKTsK
ICAgICByZXR1cm4gKnNlc3Npb247CiB9CkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKIAogTmV0d29ya0RhdGFUYXNrQ29jb2Eq
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoc3RvcmVkQ3JlZGVu
dGlhbHMgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlh
bHMpCiAgICAgICAgIHJldHVybiBtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmdldCh0YXNr
SWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0Q3JlZGVudGlhbHMu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCmluZGV4IDRhYjBlNWFjNjJhZDg2YjRjZjRkZDFhODdiYmQwN2U3NTZiMmNkYTUuLmMw
ZDExZGE1MjhmYTM4YThhOWY3MDYxNzU1YzYwYzAzMjFjNzU5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoT25NYWlu
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1JlbW90ZUNvbnRlbnQoKQogICAgIGVuc3VyZVJvb3RM
YXllcigpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHJlbmRlclF1ZXVlOwotICAg
IGJvb2wgY2FsbGVkT25NYWluVGhyZWFkID0gV1RGOjppc01haW5UaHJlYWQoKTsKKyAgICBib29s
IGNhbGxlZE9uTWFpblRocmVhZCA9IFdURjo6UnVuTG9vcDo6aXNNYWluKCk7CiAgICAgaWYgKCFj
YWxsZWRPbk1haW5UaHJlYWQpCiAgICAgICAgIG1fcmVuZGVyUXVldWVNdXRleC5sb2NrKCk7CiAg
ICAgcmVuZGVyUXVldWUgPSBXVEZNb3ZlKG1fcmVuZGVyUXVldWUpOwpAQCAtNjQyLDcgKzY0Miw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5l
ZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZXRhY2goKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CiAgICAgbV9jbGll
bnQgPSBudWxscHRyOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVuZGVyUXVldWVNdXRleCk7
CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGVu
ZFVwZGF0ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgaWYgKCFtX2lzQWN0aXZl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZW5kZXJR
dWV1ZU11dGV4KTsKICAgICBtX3JlbmRlclF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3Np
dGluZ1J1bkxvb3AuY3BwCmluZGV4IGViMmJmM2EzY2I4YzYyZTY4ZjQzNmY3MmRjZTlhMzViZjhm
MmZkNDYuLjRlMGNiMGZlMjA2MmU5YzM2NTQyMDRjMzEyZTkzNjMxM2RjZmQ3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxv
b3AuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAgY2xhc3MgV29ya1F1ZXVlUG9vbCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFdvcmtRdWV1ZVBvb2wmIHNpbmdsZXRvbigpCiAgICAgewotICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V29ya1F1ZXVlUG9vbD4gd29ya1F1ZXVl
UG9vbDsKICAgICAgICAgcmV0dXJuIHdvcmtRdWV1ZVBvb2w7CiAgICAgfQogCiAgICAgdm9pZCBk
aXNwYXRjaCh2b2lkKiBjb250ZXh0LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgZ2V0T3JDcmVhdGVXb3JrUXVldWVGb3JDb250ZXh0KGNv
bnRleHQpLmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9CiAKQEAgLTExOSw3ICsx
MTksNyBAQCBDb21wb3NpdGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcChGdW5jdGlvbjx2
b2lkICgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQogCiBDb21wb3NpdGluZ1J1bkxvb3A6On5Db21wb3Np
dGluZ1J1bkxvb3AoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdvcmtRdWV1ZSBpcyBk
ZWxldGVkIGFmdGVyIHRoZSBDb21wb3NpdGluZ1J1bkxvb3AsIGJlY2F1c2UgbV91cGRhdGVUaW1l
ciBoYXMgYSByZWZlcmVuY2UKICAgICAvLyBvZiB0aGUgV29ya1F1ZXVlIHJ1biBsb29wLiBQYXNz
aW5nIHRoaXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlIHRoZSBwb2ludGVyIHdpbGwgb25seSBi
ZSB1c2VkIGFzIGEKICAgICAvLyBIYXNoTWFwIGtleSBieSBXb3JrUXVldWVQb29sLgpAQCAtMTI4
LDEzICsxMjgsMTMgQEAgQ29tcG9zaXRpbmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKCkK
IAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLmRpc3Bh
dGNoKHRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxv
b3A6OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4KTsKICAg
ICBXb3JrUXVldWVQb29sOjpzaW5nbGV0b24oKS5kaXNwYXRjaCh0aGlzLCBbdGhpcywgZnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cAppbmRleCAyOWYwZjYwMmUyZWNlOWZhZWMyYmY2MWViZmIzM2I2MjQyNmZmNzExLi5lOWNkMjFk
MWVhZjkyZGFlMThkNWNlZmFhMTA0NDU5MDNhMDRiMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtODEs
NyArODEsNyBAQCBUaHJlYWRlZENvbXBvc2l0b3I6On5UaHJlYWRlZENvbXBvc2l0b3IoKQogCiB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlR0xDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IEFTU0VSVChtX25hdGl2ZVN1cmZhY2VIYW5kbGUpOwogCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZyYW1lKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgbV9jbGllbnQucmVuZGVyTmV4dEZyYW1lKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50
U2l6ZSYgb2Zmc2V0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2NsaWVudC5jb21taXRTY3JvbGxPZmZzZXQobGF5
ZXJJRCwgb2Zmc2V0KTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFt0aGlzLCBzY2VuZSA9IG1ha2VSZWYo
Km1fc2NlbmUpLCBzdGF0ZV0gewogICAgICAgICBzY2VuZS0+Y29tbWl0U2NlbmVTdGF0ZShzdGF0
ZSk7CiAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRl
U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogCiB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6cmVsZWFzZVVwZGF0ZUF0bGFzZXMoVmVjdG9yPHVpbnQzMl90
PiYmIGF0bGFzZXNUb1JlbW92ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFtz
Y2VuZSA9IG1ha2VSZWYoKm1fc2NlbmUpLCBhdGxhc2VzVG9SZW1vdmUgPSBXVEZNb3ZlKGF0bGFz
ZXNUb1JlbW92ZSldIHsKICAgICAgICAgc2NlbmUtPnJlbGVhc2VVcGRhdGVBdGxhc2VzKGF0bGFz
ZXNUb1JlbW92ZSk7CiAgICAgfSk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCgpCiAKIHZvaWQg
VGhyZWFkZWRDb21wb3NpdG9yOjpmcmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzY2VuZVVw
ZGF0ZUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TlBPYmplY3RQcm94eS5jcHAKaW5kZXggZWY2Yzc5MTMwNWI3Y2QyZWU0NWM5MTljMjE0YTNjOTEw
MjkyNzljZC4uNWFhOWFlZGI4OWViMDVjOTc5MTI1MTlkZTM5NDk2ZDJiZTdlNmQ5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCB2b2lkIE5QT2JqZWN0UHJveHk6Ok5QX0RlYWxsb2NhdGUoTlBPYmplY3Qq
IG5wT2JqZWN0KQogICAgIC8vIFNpbmNlIE5QQVBJIGJlaGF2aW9yIG9uIGEgYmFja2dyb3VuZCB0
aHJlYWQgaXMgdW5kZWZpbmVkLCBpdCBpcyBva2F5IHRvIGxpbWl0IHRoaXMgd29ya2Fyb3VuZCB0
byB0aGUgb25lIEFQSQogICAgIC8vIHRoYXQgaXMga25vd24gdG8gYmUgbWlzdXNlZCBkdXJpbmcg
cGx1Z2luIHRlYXJkb3duLCBhbmQgdG8gbm90IGJlIGNvbmNlcm5lZCBhYm91dCBjaGFuZ2UgaW4g
YmVoYXZpb3IgaWYgdGhpcwogICAgIC8vIG9jY3VyZWQgYXQgYW55IG90aGVyIHRpbWUuCi0gICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtucE9iamVjdF0gewogICAgICAgICAgICAg
TlBfRGVhbGxvY2F0ZShucE9iamVjdCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAKaW5kZXggM2U4NmIwNWNhNTAyZTcyYjhmZTQxMGIzMjk1NzE2NzIwMmJhNzgy
Yy4uYWRhMWMxZGE0ZDRiOWJiMGNiYTgzZmM2YWQwODIyNThiM2UzMDk1MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8dGltZV90PiBmaWxlTW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRo
KQogCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6OmRlbGV0ZURhdGFiYXNlc01vZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9j
azo6dGltZV9wb2ludCB0aW1lKQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIGltcG9ydE9yaWdpbklkZW50aWZpZXJz
KCk7CiAgICAgVmVjdG9yPFN0cmluZz4gb3JpZ2luSWRlbnRpZmllcnNUb0RlbGV0ZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjMzJjYjYz
MzlmYWM4OGEyNmFiNDFiMjY2YzIxYjQ2NWU4MmUzNTFiLi5hYjM0NGIxMTQzZjg5YTg4YTMxYWI2
YThhYzIwZDFiNWI0ZTllZWEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Byb3h5LmNwcApAQCAtMjEyLDcgKzIxMiw3IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vz
c1Byb3h5Ojp3ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
ZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJz
aXN0ZW50RGF0YVN0b3JlcyhPcHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZl
Y3RvcjxTdHJpbmc+JiYgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMsIGJvb2wgc2hvdWxk
Tm90aWZ5UGFnZSwgRnVuY3Rpb248dm9pZChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7CiAgICAgLy8gV2UgZXhwZWN0IHRoaXMgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWlu
IHRocmVhZCBzbyB3ZSBnZXQgdGhlIGRlZmF1bHQgd2Vic2l0ZSBkYXRhIHN0b3JlLgotICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICAKICAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CiAgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRv
cihGdW5jdGlvbjx2b2lkKFZlY3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAg
LTI1OSw3ICsyNTksNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0luQWxsUGVycwogICAgICAgICBjYWxsYmFj
a0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOwogICAgICAgICBkYXRhU3RvcmUucmVt
b3ZlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKGRhdGFUeXBlcywgeyB9LCBX
VEZNb3ZlKHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zKSwgW2NhbGxiYWNrQWdncmVnYXRv
ciwgc2hvdWxkTm90aWZ5UGFnZSwgcGFnZV0oVmVjdG9yPFN0cmluZz4mJiBkb21haW5zV2l0aERl
bGV0ZWRXZWJzaXRlRGF0YSkgewogICAgICAgICAgICAgLy8gV2hlbiBjb21wbGV0aW5nIHRoZSB0
YXNrLCB3ZSBzaG91bGQgYmUgZ2V0dGluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAg
ICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChSdW5M
b29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzaG91bGROb3Rp
ZnlQYWdlKQogICAgICAgICAgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3Rl
ZEJ1bmRsZSgiV2Vic2l0ZURhdGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWluc0Zp
bmlzaGVkIiwgbnVsbHB0cik7CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFs
bFBlcnMKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWlu
c1dpdGhXZWJpdGVEYXRhKE9wdGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9v
bCBzaG91bGROb3RpZnlQYWdlLCBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKIHsKICAgICAvLyBXZSBleHBlY3QgdGhpcyB0byBiZSBjYWxsZWQg
b24gdGhlIG1haW4gdGhyZWFkIHNvIHdlIGdldCB0aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3Rv
cmUuCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIAogICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgOiBUaHJlYWRTYWZl
UmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgZXhwbGljaXQgQ2FsbGJh
Y2tBZ2dyZWdhdG9yKEZ1bmN0aW9uPHZvaWQoSGFzaFNldDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQpAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJpdGVEYXRhKE9wdGlvblNldDxXZWJzCiAg
ICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAg
IGRhdGFTdG9yZS50b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YShk
YXRhVHlwZXMsIHsgfSwgW2NhbGxiYWNrQWdncmVnYXRvciwgc2hvdWxkTm90aWZ5UGFnZSwgcGFn
ZV0oSGFzaFNldDxTdHJpbmc+JiYgZG9tYWluc1dpdGhEYXRhUmVjb3JkcykgewogICAgICAgICAg
ICAgLy8gV2hlbiBjb21wbGV0aW5nIHRoZSB0YXNrLCB3ZSBzaG91bGQgYmUgZ2V0dGluZyBjYWxs
ZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAK
ICAgICAgICAgICAgIGlmIChzaG91bGROb3RpZnlQYWdlKQogICAgICAgICAgICAgICAgIHBhZ2Uu
dmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yVG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcAppbmRleCAwZTgyOGI0MTc2MzNkN2E2NGIyMGMxZDU0MjA4YmYzZTQwM2IwYmQx
Li4wZmJmMzNhNmZlMjA5ZGJhZWM5MzQ0ZTdhYzE4ODQzNDQ5MzYyZTg0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFs
aXplRGF0YVR5cGVzVG9SZW1vdmUoKQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNvcmRzKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAgICBpZiAoIWNv
cmVTdG9yZSgpLnNob3VsZFJlbW92ZURhdGFSZWNvcmRzKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTE3Niw3ICsxNzYsNyBAQCBib29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQoKSBjb25zdAogCiB2b2lkIFdlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZTo6cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7
Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWlu
KCkpOwogICAgIAogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNl
dFN0YXRpc3RpY3NTdG9yZShtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jb3B5UmVmKCkp
OwogICAgIFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3Rp
Y3NRdWV1ZShtX3N0YXRpc3RpY3NRdWV1ZS5jb3B5UmVmKCkpOwpAQCAtMjAwLDcgKzIwMCw3IEBA
IHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291
cmNlTG9hZE9ic2VydmVyKCkKICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9p
ZChjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvQWRkLCBib29sIGNsZWFyRmlyc3QpPiYmIHNob3VsZFBhcnRpdGlvbkNv
b2tpZXNGb3JEb21haW5zSGFuZGxlcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAgICAgcmVnaXN0ZXJTaGFyZWRS
ZXNvdXJjZUxvYWRPYnNlcnZlcigpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
LT5zZXRTaG91bGRQYXJ0aXRpb25Db29raWVzQ2FsbGJhY2soW3Nob3VsZFBhcnRpdGlvbkNvb2tp
ZXNGb3JEb21haW5zSGFuZGxlciA9IFdURk1vdmUoc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRv
bWFpbnNIYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkgewpAQCAt
Mjc2LDcgKzI3Niw3IEBAIFN0cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBl
cnNpc3RlbnRTdG9yYWdlUGF0aChjb25zdCBTdHJpbmcmIGxhYmVsCiAKIHZvaWQgV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKCkKIHsKLSAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAK
ICAgICBhdXRvIGVuY29kZXIgPSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsK
ICAgICB3cml0ZUVuY29kZXJUb0Rpc2soKmVuY29kZXIuZ2V0KCksICJmdWxsX2Jyb3dzaW5nX3Nl
c3Npb24iKTsKQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZTo6d3JpdGVTdG9yZVRvRGlzaygpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25z
dCBTdHJpbmcmIGxhYmVsKSBjb25zdAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAogICAgIFJlZlB0cjxTaGFyZWRC
dWZmZXI+IHJhd0RhdGEgPSBlbmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7CiAgICAgaWYgKCFyYXdE
YXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcu
bW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkYjhj
N2Q4MzkzZjFkM2RiZTk5ZWMwMGZkZjYwMDU2NjM1NjI2ZmFmLi5jYjhkY2UxNzZjZTRjZTQ1ZTdh
MWQzMTY4MzE1ZDI4YjcwOTRiNjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dL
UERGVmlldy5tbQpAQCAtNDI3LDcgKzQyNyw3IEBAIC0gKHZvaWQpX2hpZ2hsaWdodExpbmtBbm5v
dGF0aW9uOihVSVBERkxpbmtBbm5vdGF0aW9uICopbGlua0Fubm90YXRpb24gZm9yRHVyYXRpCiAg
ICAgW2hpZ2hsaWdodFZpZXcgc2V0Q29ybmVyUmFkaXVzOmhpZ2hsaWdodEJvcmRlclJhZGl1c107
CiAgICAgW2hpZ2hsaWdodFZpZXcgc2V0Q29sb3I6aGlnaGxpZ2h0Q29sb3JdOwogCi0gICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAg
IFtzZWxmIGFkZFN1YnZpZXc6aGlnaGxpZ2h0Vmlldy5nZXQoKV07CiAgICAgZGlzcGF0Y2hfYWZ0
ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24gKiBOU0VDX1BFUl9T
RUMpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBbaGlnaGxpZ2h0Vmll
dyByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDMxNjc3ZjA5MmFhYjRl
NzEyMjAwNDA2ODgyYzBkZTg2NWNiOGVkNzMuLjllNzliMmI1OTJjOTVhMDgzMTRjYmJhOTc5MjYx
MjI3M2IzMTNkMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9y
bXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQpAQCAtNjE0LDcgKzYxNCw3IEBAIC0gKHZvaWQp
X3Byb2Nlc3NNZWRpYUluZm9EaWN0aW9uYXJpZXM6KE5TQXJyYXkgKilpbmZvcyBhdEluZGV4OihO
U1VJbnRlZ2VyKWluZGV4CiAtICh2b2lkKV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEg
KilpbWFnZURhdGEgaW1hZ2VOYW1lOihOU1N0cmluZyAqKWltYWdlTmFtZSBzdWNjZXNzQmxvY2s6
KHZvaWQgKF4pKF9XS0ZpbGVVcGxvYWRJdGVtICopKXN1Y2Nlc3NCbG9jayBmYWlsdXJlQmxvY2s6
KHZvaWQgKF4pKHZvaWQpKWZhaWx1cmVCbG9jawogewogICAgIEFTU0VSVF9BUkcoaW1hZ2VEYXRh
LCBpbWFnZURhdGEpOwotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCgh
UnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgTlNTdHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5RGly
ZWN0b3J5TmFtZSA9IEAiV0tXZWJGaWxlVXBsb2FkIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0Nv
bnRleHQuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3Vw
L1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCmluZGV4IGI1YjAyMWY1MzQ4NTBmNDgxNzg4
NDA4MzcwNTFhMTM5Njk0YTMzMWUuLmFjYjM2MjU4NGNmNWNiY2U2ODJhYzdkMGNlNmE0YmQ2NTg1
NGQ2NWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dC5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViRnJh
bWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9u
SUQgc2Vzc2lvbklEKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkp
OwogCiAgICAgaWYgKE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lv
bklEKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRT
b3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291
cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAppbmRleCBjZmI1YjEwY2M3MGZhODZh
NjVjNDYzZWU1MmFmOGYyZWNkM2JiNTg1Li5mNjQyYWE3YjEyNzg5MmQ5MzEzNThlZmUxOWNkNzQz
ZmRjZTgzNTdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2Vi
S2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC03OSw3ICs3OSw3
IEBAIHN0YXRpYyBib29sIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JE
YXRhKFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1
ZXN0SW5wdXRTdHJlYW1SZWFkQXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pZCog
YnVmZmVyLCBnc2l6ZSBjb3VudCwgaW50IC8qcHJpb3JpdHkqLywgR0NhbmNlbGxhYmxlKiBjYW5j
ZWxsYWJsZSwgR0FzeW5jUmVhZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEp
CiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOwogICAgIFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSA9IFdFQktJ
VF9TT1VQX1JFUVVFU1RfSU5QVVRfU1RSRUFNKGlucHV0U3RyZWFtKTsKICAgICBHUmVmUHRyPEdU
YXNrPiB0YXNrID0gYWRvcHRHUmVmKGdfdGFza19uZXcoc3RyZWFtLCBjYW5jZWxsYWJsZSwgY2Fs
bGJhY2ssIHVzZXJEYXRhKSk7CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBHSW5wdXRTdHJlYW0qIHdl
YmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1OZXcodWludDY0X3QgY29udGVudExlbmd0aCkKIAog
dm9pZCB3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtQWRkRGF0YShXZWJLaXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtKiBzdHJlYW0sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3Ro
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKIAogICAgIGlmICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQo
c3RyZWFtKSkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313686</attachid>
            <date>2017-06-22 19:27:15 -0700</date>
            <delta_ts>2017-06-23 13:50:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173745-20170622192714.patch</filename>
            <type>text/plain</type>
            <size>29705</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggZGYzNTM1NThlMzBkMTcy
M2M4M2ZiMTNhYzdmMWJlYjRiMjcwYWU5Ni4uNDkzYWYzOTIxMmMyMTlhMmEzZDQzYTVmYmI0MGMx
ODdhOWY2MjViMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDg0IEBACiAyMDE3LTA2LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQ29uc2lzdGVudGx5IHVzZSBS
dW5Mb29wOjppc01haW4oKSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM3NDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyOTM2
NTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENv
bnNpc3RlbnRseSB1c2UgUnVuTG9vcDppc01haW4oKSBvbiBXZWJLaXQyIGluc3RlYWQgb2YgV1RG
Ojppc01haW5UaHJlYWQoKS4KKyAgICAgICAgV1RGOjppc01haW5UaHJlYWQoKSByZXR1cm5zIHRy
dWUgZm9yIHRoZSBXZWJUaHJlYWQgaW5zdGVhZCBvZiB0aGUgVUlUaHJlYWQKKyAgICAgICAgaW4g
V2ViS2l0MS4gVGhlcmVmb3JlIFdURjo6aXNNYWluVGhyZWFkKCkgaXMgdW5zYWZlIHRvIHVzZSBp
biB0aGUgVUlQcm9jZXNzCisgICAgICAgIGFzIHRoZSBhcHBsaWNhdGlvbiBtYXkgYmUgdXNpbmcg
V2ViS2l0MSBhcyB3ZWxsIGFuZCBoYXZlIGEgV2ViVGhyZWFkLgorCisgICAgICAgIFRlY2huaWNh
bGx5LCB3ZSBvbmx5ICpuZWVkKiB0byBtb3ZlIGZyb20gV1RGOjppc01haW5UaHJlYWQoKSB0bwor
ICAgICAgICBSdW5Mb29wOjppc01haW4oKSBpbiB0aGUgVUlQcm9jZXNzIGNvZGUgYnV0IEkgcG9y
dGVkIGFsbCBvZiBXZWJLaXQyIGZvcgorICAgICAgICBjb25zaXN0ZW5jeS4gUnVuTG9vcDo6aXNN
YWluKCkgaXMgYWx3YXlzIHNhZmUgaW4gV2ViS2l0Mi4KKworICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05ldHdvcmtEYXRhVGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFz
azo6TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrOjp+
TmV0d29ya0RhdGFUYXNrKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRh
c2tCbG9iLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6Z2V0U2l6
ZUZvck5leHQpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRT
aXplKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6c2Vlayk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OnJlYWQpOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6
OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0xvYWQ6Om5vdGlmeURpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAgICogTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lv
bjo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6cmVzb3VyY2VUeXBl
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDYWNoZTo6aW5pdGlhbGl6ZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5j
cHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6SU9DaGFubmVsOjpyZWFkKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWRTeW5jSW5UaHJlYWQp
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW06
CisgICAgICAgICgtW1dLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZSBVUkxTZXNzaW9uOmRhdGFUYXNr
OmRpZFJlY2VpdmVSZXNwb25zZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkYXRhVGFza0ZvcklkZW50aWZpZXIpOgorICAgICAgICAq
IFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGlzcGF0Y2hPbk1h
aW5UaHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnN5
bmNSZW1vdGVDb250ZW50KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZXRhY2gpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6
OmFwcGVuZFVwZGF0ZSk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhy
ZWFkZWRjb21wb3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbik6CisgICAgICAgIChXZWJLaXQ6OldvcmtRdWV1ZVBv
b2w6OmRpc3BhdGNoKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjp+Q29t
cG9zaXRpbmdSdW5Mb29wKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpw
ZXJmb3JtVGFzayk6CisgICAgICAgIChXZWJLaXQ6OkNvbXBvc2l0aW5nUnVuTG9vcDo6cGVyZm9y
bVRhc2tTeW5jKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRl
ZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpjcmVhdGVHTENvbnRleHQpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6Y29tbWl0U2Nyb2xsT2Zmc2V0KToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0YXRlKToKKyAgICAgICAgKFdlYktpdDo6VGhy
ZWFkZWRDb21wb3NpdG9yOjpyZWxlYXNlVXBkYXRlQXRsYXNlcyk6CisgICAgICAgIChXZWJLaXQ6
OlRocmVhZGVkQ29tcG9zaXRvcjo6ZnJhbWVDb21wbGV0ZSk6CisgICAgICAgICogU2hhcmVkL1Bs
dWdpbnMvTlBPYmplY3RQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QT2JqZWN0UHJveHk6
Ok5QX0RlYWxsb2NhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6ZGVsZXRlRGF0YWJhc2VzTW9kaWZpZWRTaW5jZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0lu
QWxsUGVyc2lzdGVudERhdGFTdG9yZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYml0ZURhdGEpOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURhdGFSZWNv
cmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpy
ZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVuY29kZXJUb0Rp
c2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tOgorICAgICAgICAoLVtX
S1BERlZpZXcgX2hpZ2hsaWdodExpbmtBbm5vdGF0aW9uOmZvckR1cmF0aW9uOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFu
ZWwubW06CisgICAgICAgICgtW1dLRmlsZVVwbG9hZFBhbmVsIF91cGxvYWRJdGVtRm9ySW1hZ2VE
YXRhOmltYWdlTmFtZTpzdWNjZXNzQmxvY2s6ZmFpbHVyZUJsb2NrOl0pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dDo6ZW5zdXJlUHJp
dmF0ZUJyb3dzaW5nU2Vzc2lvbik6CisgICAgICAgICogV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwOgorICAgICAgICAod2Via2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbVJlYWRBc3luYyk6CisKKzIwMTctMDYtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KKwogICAgICAgICBpc01haW5UaHJlYWQoKSBhc3NlcnRpb25zIGluIENhbGxiYWNr
TWFwIGFyZSBpbmNvcnJlY3RseSBmYWlsaW5nIG9uIHNvbWUgaU9TIGFwcHMKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MzczOAogICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMzI5MjM5MzM+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcAppbmRleCA4M2ViNmVhOTUxY2U1NzAxYmVkNzg4OWFkZjQ0
ODIzOGY2N2FhYWQxLi4xMjk0ZmQxMWZjZjQyYjMxMzk4NTNlNzMyMjZhNjA3OTY0ZTUzOWFjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2su
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5j
cHAKQEAgLTY5LDcgKzY5LDcgQEAgTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0
d29ya1Nlc3Npb24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYKICAgICAsIG1fZmly
c3RSZXF1ZXN0KHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMpCiAgICAgLCBtX3Nob3VsZENsZWFyUmVm
ZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAoIXJlcXVlc3RXaXRoQ3JlZGVudGlhbHMudXJs
KCkuaXNWYWxpZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVy
ZSk7CkBAIC04NCw3ICs4NCw3IEBAIE5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5l
dHdvcmtTZXNzaW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmCiAKIE5ldHdvcmtE
YXRhVGFzazo6fk5ldHdvcmtEYXRhVGFzaygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9jbGllbnQp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2tCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFza0Jsb2IuY3BwCmluZGV4IDZmNGJiZjU5YTEyYjUxM2ZjNjRjNjJlYWNkNTg0YjQwYWJj
N2U4NjkuLjA5NjEyNzMyYTVlMzFhZWVmMTZjYWRmN2U5ZTFkMWE2NjE3OGNjZTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2Iu
Y3BwCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjppbnZhbGlk
YXRlQW5kQ2FuY2VsKCkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4
dCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gRG8gd2UgZmluaXNoIHZhbGlkYXRpbmcgYW5kIGNvdW50aW5n
IHNpemUgZm9yIGFsbCBpdGVtcz8KICAgICBpZiAobV9zaXplSXRlbUNvdW50ID49IG1fYmxvYkRh
dGEtPml0ZW1zKCkuc2l6ZSgpKSB7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBOZXR3b3JrRGF0
YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4dCgpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6
ZGlkR2V0U2l6ZShsb25nIGxvbmcgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBT
dGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xp
ZW50ICYmICFpc0Rvd25sb2FkKCkpKSB7CiAgICAgICAgIGNsZWFyU3RyZWFtKCk7CkBAIC0yMzYs
NyArMjM2LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRTaXplKGxvbmcgbG9u
ZyBzaXplKQogCiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNlZWsoKQogewotICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IC8vIENvbnZlcnQgZnJvbSB0aGUgc3VmZml4IGxlbmd0aCB0byB0aGUgcmFuZ2UuCiAgICAgaWYg
KG1fcmFuZ2VTdWZmaXhMZW5ndGggIT0ga1Bvc2l0aW9uTm90U3BlY2lmaWVkKSB7CkBAIC0zMzAs
NyArMzMwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVS
ZXNwb25zZShFcnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVh
ZCgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbW9yZSByZW1haW5pbmcgZGF0YSB0
byByZWFkLCB3ZSBhcmUgZG9uZS4KICAgICBpZiAoIW1fdG90YWxSZW1haW5pbmdTaXplIHx8IG1f
cmVhZEl0ZW1Db3VudCA+PSBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSkgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGI3ZGZkMzExMDc4
MGFlZGMwODg1M2ExNTZkNzY2MjkxNjA2NzYwY2EuLjUxNzNlNzljMWZmYmEyNDQzYzBkNzNjNmU4
OGRjYWNjYjIxNTRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L05ldHdvcmtMb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrTG9hZC5jcHAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51
ZUNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiAKIHZv
aWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNl
UmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwogCiAgICAgaWYgKG1f
dGFzayAmJiBtX3Rhc2stPmlzRG93bmxvYWQoKSkgewpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQg
TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVz
cG9uc2UmJiByZXNwb25zZSwKIAogdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJl
c3BvbnNlKFJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NB
UFRVUkUpCiAgICAgaWYgKG1fcmVjb3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmUwMTNmM2ZjNjA0Y2UyMTJmNzljODdl
Yjk2YTZiZGYwZWNhY2YxOC4uYWNkZTVjMWIyNGFkY2NmMTY1NDU5YTg5YTYxZWEyNDZkZDM2ODIx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Np
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
LmNwcApAQCAtNjAsNyArNjAsNyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246OmRl
ZmF1bHRTZXNzaW9uKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gTmV0d29ya1Nl
c3Npb25Db2NvYTo6ZGVmYXVsdFNlc3Npb24oKTsKICNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHN0YXRpYyBOZXR3
b3JrU2Vzc2lvbiogc2Vzc2lvbiA9ICZOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFNlc3Npb25JRDo6
ZGVmYXVsdFNlc3Npb25JRCgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuICpzZXNzaW9uOwogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGUuY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcAppbmRleCA5ZjFjZDBhZDMzMDc2ZTk4YTk2MGViMzliMjIxNmUwYmU0NzQ1NDZh
Li42ZmRiMmNiZmU4MzU1ZmRlYzEzZjhkYzdhMjdiZTNjZDFkODY5NjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAg
LTU3LDcgKzU3LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRpYyBjb25zdCBB
dG9taWNTdHJpbmcmIHJlc291cmNlVHlwZSgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhy
ZWFkKCkpOworICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMg
TmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZXNvdXJjZSgiUmVzb3VyY2UiLCBB
dG9taWNTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcmVzb3VyY2U7
CiB9CkBAIC04Miw3ICs4Miw3IEBAIGJvb2wgQ2FjaGU6OmluaXRpYWxpemUoY29uc3QgU3RyaW5n
JiBjYWNoZVBhdGgsIE9wdGlvblNldDxPcHRpb24+IG9wdGlvbnMpCiAjaWYgRU5BQkxFKE5FVFdP
UktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRh
aW5zKE9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7CiAgICAgICAgIG1fbG93UG93
ZXJNb2RlTm90aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5v
dGlmaWVyPihbdGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKLSAgICAgICAgICAg
IEFTU0VSVChXVEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1
bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQp
CiAgICAgICAgICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCAz
YzQzZTg3ZDliNWVlNWNhYmZjNzVkNzg0NzU5YzRmMjI1ODE3OWMwLi4wZTE5ZWFhNGRiNDg5Y2Iy
YWJhZGYwZTg0ZTM0YWFiN2Y0MmZiMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcApAQCAtMTY0LDcgKzE2NCw3IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZz
ZXQsIHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFS
dW5Mb29wOjppc01haW4oKSkgewogICAgICAgICByZWFkU3luY0luVGhyZWFkKG9mZnNldCwgc2l6
ZSwgcXVldWUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE4MSw3ICsxODEsNyBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZAogCiB2b2lk
IElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwg
V29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVs
KHRoaXMpOwogICAgIFRocmVhZDo6Y3JlYXRlKCJJT0NoYW5uZWw6OnJlYWRTeW5jIiwgW2NoYW5u
ZWwsIHNpemUsIHF1ZXVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSAoKSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDE2YTVjNDczNmVj
ZDg4YzNmMWVmYmU0NDIwY2Y0ZDI3MTU3ZjFlYjkuLjlhNDUyYTUwMjkzMmQyMzQ0OWY2ZDE3ZWJj
NjNhOWI1ZTc5ZDQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzU4LDcgKzM1OCw3IEBA
IC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNV
UkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9IGRhdGFU
YXNrLnRhc2tJZGVudGlmaWVyOwogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVj
ZWl2ZVJlc3BvbnNlIiwgdGFza0lkZW50aWZpZXIpOwogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0
YVRhc2sgPSBbc2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7Ci0gICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAg
ICAgIAogICAgICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNl
IGNvbWVzIGJhY2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUg
PSBbcmVzcG9uc2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBb
KGlkKXJlc3BvbnNlIHN0YXR1c0NvZGVdIDogMDsKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWY8TmV0
d29ya1Nlc3Npb24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBMZQogCiBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb25Db2NvYTo6
ZGVmYXVsdFNlc3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24qIHNlc3Np
b24gPSAmTmV0d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVm
YXVsdFNlc3Npb25JRCgpLCBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpLmxlYWtSZWYoKTsK
ICAgICByZXR1cm4gKnNlc3Npb247CiB9CkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBOZXR3b3Jr
U2Vzc2lvbkNvY29hOjpjbGVhckNyZWRlbnRpYWxzKCkKIAogTmV0d29ya0RhdGFUYXNrQ29jb2Eq
IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRh
c2tDb2NvYTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENy
ZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoc3RvcmVkQ3JlZGVu
dGlhbHMgPT0gV2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlh
bHMpCiAgICAgICAgIHJldHVybiBtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmdldCh0YXNr
SWRlbnRpZmllcik7CiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0Q3JlZGVudGlhbHMu
Z2V0KHRhc2tJZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9D
b29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2Nl
bmUuY3BwCmluZGV4IDRhYjBlNWFjNjJhZDg2YjRjZjRkZDFhODdiYmQwN2U3NTZiMmNkYTUuLmMw
ZDExZGE1MjhmYTM4YThhOWY3MDYxNzU1YzYwYzAzMjFjNzU5MzYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3Mv
Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoT25NYWlu
VGhyZWFkKEZ1bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBpZiAoaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKICAgICAgICAgZnVuY3Rpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6c3luY1JlbW90ZUNvbnRlbnQoKQogICAgIGVuc3VyZVJvb3RM
YXllcigpOwogCiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHJlbmRlclF1ZXVlOwotICAg
IGJvb2wgY2FsbGVkT25NYWluVGhyZWFkID0gV1RGOjppc01haW5UaHJlYWQoKTsKKyAgICBib29s
IGNhbGxlZE9uTWFpblRocmVhZCA9IFdURjo6UnVuTG9vcDo6aXNNYWluKCk7CiAgICAgaWYgKCFj
YWxsZWRPbk1haW5UaHJlYWQpCiAgICAgICAgIG1fcmVuZGVyUXVldWVNdXRleC5sb2NrKCk7CiAg
ICAgcmVuZGVyUXVldWUgPSBXVEZNb3ZlKG1fcmVuZGVyUXVldWUpOwpAQCAtNjQyLDcgKzY0Miw3
IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpzZXRMYXllckFuaW1hdGlvbnNJZk5l
ZWRlZChUZXh0dXJlTWFwcGVyTGF5ZXIqIGxhCiAKIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1Nj
ZW5lOjpkZXRhY2goKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2lzQWN0aXZlID0gZmFsc2U7CiAgICAgbV9jbGll
bnQgPSBudWxscHRyOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVuZGVyUXVldWVNdXRleCk7
CkBAIC02NTQsNyArNjU0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmFwcGVu
ZFVwZGF0ZShGdW5jdGlvbjx2b2lkKCk+JiYgZnVuY3Rpb24pCiAgICAgaWYgKCFtX2lzQWN0aXZl
KQogICAgICAgICByZXR1cm47CiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9yZW5kZXJR
dWV1ZU11dGV4KTsKICAgICBtX3JlbmRlclF1ZXVlLmFwcGVuZChXVEZNb3ZlKGZ1bmN0aW9uKSk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGlj
cy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3Np
dGluZ1J1bkxvb3AuY3BwCmluZGV4IGViMmJmM2EzY2I4YzYyZTY4ZjQzNmY3MmRjZTlhMzViZjhm
MmZkNDYuLjRlMGNiMGZlMjA2MmU5YzM2NTQyMDRjMzEyZTkzNjMxM2RjZmQ3ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29t
cG9zaXRvci9Db21wb3NpdGluZ1J1bkxvb3AuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9Db21wb3NpdGluZ1J1bkxv
b3AuY3BwCkBAIC00NSwxNCArNDUsMTQgQEAgY2xhc3MgV29ya1F1ZXVlUG9vbCB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFdvcmtRdWV1ZVBvb2wmIHNpbmdsZXRvbigpCiAgICAgewotICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8V29ya1F1ZXVlUG9vbD4gd29ya1F1ZXVl
UG9vbDsKICAgICAgICAgcmV0dXJuIHdvcmtRdWV1ZVBvb2w7CiAgICAgfQogCiAgICAgdm9pZCBk
aXNwYXRjaCh2b2lkKiBjb250ZXh0LCBGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogICAg
IHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICAgICAgZ2V0T3JDcmVhdGVXb3JrUXVldWVGb3JDb250ZXh0KGNv
bnRleHQpLmRpc3BhdGNoKFdURk1vdmUoZnVuY3Rpb24pKTsKICAgICB9CiAKQEAgLTExOSw3ICsx
MTksNyBAQCBDb21wb3NpdGluZ1J1bkxvb3A6OkNvbXBvc2l0aW5nUnVuTG9vcChGdW5jdGlvbjx2
b2lkICgpPiYmIHVwZGF0ZUZ1bmN0aW9uKQogCiBDb21wb3NpdGluZ1J1bkxvb3A6On5Db21wb3Np
dGluZ1J1bkxvb3AoKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAvLyBNYWtlIHN1cmUgdGhlIFdvcmtRdWV1ZSBpcyBk
ZWxldGVkIGFmdGVyIHRoZSBDb21wb3NpdGluZ1J1bkxvb3AsIGJlY2F1c2UgbV91cGRhdGVUaW1l
ciBoYXMgYSByZWZlcmVuY2UKICAgICAvLyBvZiB0aGUgV29ya1F1ZXVlIHJ1biBsb29wLiBQYXNz
aW5nIHRoaXMgaXMgbm90IGEgcHJvYmxlbSBiZWNhdXNlIHRoZSBwb2ludGVyIHdpbGwgb25seSBi
ZSB1c2VkIGFzIGEKICAgICAvLyBIYXNoTWFwIGtleSBieSBXb3JrUXVldWVQb29sLgpAQCAtMTI4
LDEzICsxMjgsMTMgQEAgQ29tcG9zaXRpbmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKCkK
IAogdm9pZCBDb21wb3NpdGluZ1J1bkxvb3A6OnBlcmZvcm1UYXNrKEZ1bmN0aW9uPHZvaWQgKCk+
JiYgZnVuY3Rpb24pCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
UnVuTG9vcDo6aXNNYWluKCkpOwogICAgIFdvcmtRdWV1ZVBvb2w6OnNpbmdsZXRvbigpLmRpc3Bh
dGNoKHRoaXMsIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAogdm9pZCBDb21wb3NpdGluZ1J1bkxv
b3A6OnBlcmZvcm1UYXNrU3luYyhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQogewotICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX2Rpc3BhdGNoU3luY0NvbmRpdGlvbk11dGV4KTsKICAg
ICBXb3JrUXVldWVQb29sOjpzaW5nbGV0b24oKS5kaXNwYXRjaCh0aGlzLCBbdGhpcywgZnVuY3Rp
b24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0gewogICAgICAgICBmdW5jdGlvbigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNw
cAppbmRleCAyOWYwZjYwMmUyZWNlOWZhZWMyYmY2MWViZmIzM2I2MjQyNmZmNzExLi5lOWNkMjFk
MWVhZjkyZGFlMThkNWNlZmFhMTA0NDU5MDNhMDRiMzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFk
ZWRDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvVGhyZWFkZWRDb21wb3NpdG9yLmNwcApAQCAtODEs
NyArODEsNyBAQCBUaHJlYWRlZENvbXBvc2l0b3I6On5UaHJlYWRlZENvbXBvc2l0b3IoKQogCiB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y3JlYXRlR0xDb250ZXh0KCkKIHsKLSAgICBBU1NFUlQo
IWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAg
IEFTU0VSVChtX25hdGl2ZVN1cmZhY2VIYW5kbGUpOwogCkBAIC0xNjUsMTMgKzE2NSwxMyBAQCB2
b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2V0RHJhd3NCYWNrZ3JvdW5kKGJvb2wgZHJhd3NCYWNr
Z3JvdW5kKQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZyYW1lKCkKIHsK
LSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgbV9jbGllbnQucmVuZGVyTmV4dEZyYW1lKCk7CiB9CiAKIHZvaWQgVGhyZWFkZWRD
b21wb3NpdG9yOjpjb21taXRTY3JvbGxPZmZzZXQodWludDMyX3QgbGF5ZXJJRCwgY29uc3QgSW50
U2l6ZSYgb2Zmc2V0KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJU
KFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX2NsaWVudC5jb21taXRTY3JvbGxPZmZzZXQobGF5
ZXJJRCwgb2Zmc2V0KTsKIH0KIApAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgVGhyZWFkZWRDb21w
b3NpdG9yOjpzY2VuZVVwZGF0ZUZpbmlzaGVkKCkKIAogdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6
OnVwZGF0ZVNjZW5lU3RhdGUoY29uc3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFt0aGlzLCBzY2VuZSA9IG1ha2VSZWYo
Km1fc2NlbmUpLCBzdGF0ZV0gewogICAgICAgICBzY2VuZS0+Y29tbWl0U2NlbmVTdGF0ZShzdGF0
ZSk7CiAKQEAgLTI1OSw3ICsyNTksNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6dXBkYXRl
U2NlbmVTdGF0ZShjb25zdCBDb29yZGluYXRlZEdyYXBoaWNzU3RhdGUmIHN0YXRlKQogCiB2b2lk
IFRocmVhZGVkQ29tcG9zaXRvcjo6cmVsZWFzZVVwZGF0ZUF0bGFzZXMoVmVjdG9yPHVpbnQzMl90
PiYmIGF0bGFzZXNUb1JlbW92ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgbV9zY2VuZS0+YXBwZW5kVXBkYXRlKFtz
Y2VuZSA9IG1ha2VSZWYoKm1fc2NlbmUpLCBhdGxhc2VzVG9SZW1vdmUgPSBXVEZNb3ZlKGF0bGFz
ZXNUb1JlbW92ZSldIHsKICAgICAgICAgc2NlbmUtPnJlbGVhc2VVcGRhdGVBdGxhc2VzKGF0bGFz
ZXNUb1JlbW92ZSk7CiAgICAgfSk7CkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmNvb3JkaW5hdGVVcGRhdGVDb21wbGV0aW9uV2l0aENsaWVudCgpCiAKIHZvaWQg
VGhyZWFkZWRDb21wb3NpdG9yOjpmcmFtZUNvbXBsZXRlKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzY2VuZVVw
ZGF0ZUZpbmlzaGVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL05QT2JqZWN0UHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
TlBPYmplY3RQcm94eS5jcHAKaW5kZXggZWY2Yzc5MTMwNWI3Y2QyZWU0NWM5MTljMjE0YTNjOTEw
MjkyNzljZC4uNWFhOWFlZGI4OWViMDVjOTc5MTI1MTlkZTM5NDk2ZDJiZTdlNmQ5MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvTlBPYmplY3RQcm94eS5jcHAKQEAgLTMw
Miw3ICszMDIsNyBAQCB2b2lkIE5QT2JqZWN0UHJveHk6Ok5QX0RlYWxsb2NhdGUoTlBPYmplY3Qq
IG5wT2JqZWN0KQogICAgIC8vIFNpbmNlIE5QQVBJIGJlaGF2aW9yIG9uIGEgYmFja2dyb3VuZCB0
aHJlYWQgaXMgdW5kZWZpbmVkLCBpdCBpcyBva2F5IHRvIGxpbWl0IHRoaXMgd29ya2Fyb3VuZCB0
byB0aGUgb25lIEFQSQogICAgIC8vIHRoYXQgaXMga25vd24gdG8gYmUgbWlzdXNlZCBkdXJpbmcg
cGx1Z2luIHRlYXJkb3duLCBhbmQgdG8gbm90IGJlIGNvbmNlcm5lZCBhYm91dCBjaGFuZ2UgaW4g
YmVoYXZpb3IgaWYgdGhpcwogICAgIC8vIG9jY3VyZWQgYXQgYW55IG90aGVyIHRpbWUuCi0gICAg
aWYgKCFpc01haW5UaHJlYWQoKSkgeworICAgIGlmICghUnVuTG9vcDo6aXNNYWluKCkpIHsKICAg
ICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtucE9iamVjdF0gewogICAgICAgICAgICAg
TlBfRGVhbGxvY2F0ZShucE9iamVjdCk7CiAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNl
VHJhY2tlci5jcHAKaW5kZXggM2U4NmIwNWNhNTAyZTcyYjhmZTQxMGIzMjk1NzE2NzIwMmJhNzgy
Yy4uMTliMjI5ZjZiNTM3NGE3NzQ2M2FhZjliNDY0Y2U5MzZhMDRhY2MyYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3Jh
Z2VEYXRhYmFzZVRyYWNrZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5o
PgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
ICNpbmNsdWRlIDx3dGYvV29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCkBAIC0xNDMsNyArMTQ0LDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8dGltZV90PiBmaWxl
TW9kaWZpY2F0aW9uVGltZShjb25zdCBTdHJpbmcmIGZpbGVQYXRoKQogCiBWZWN0b3I8U2VjdXJp
dHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6OmRlbGV0ZURhdGFiYXNl
c01vZGlmaWVkU2luY2Uoc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCB0aW1l
KQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIGltcG9ydE9yaWdpbklkZW50aWZpZXJzKCk7CiAgICAgVmVjdG9yPFN0
cmluZz4gb3JpZ2luSWRlbnRpZmllcnNUb0RlbGV0ZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjMzJjYjYzMzlmYWM4OGEyNmFiNDFiMjY2
YzIxYjQ2NWU4MmUzNTFiLi5hYjM0NGIxMTQzZjg5YTg4YTMxYWI2YThhYzIwZDFiNWI0ZTllZWEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcApAQCAt
MjEyLDcgKzIxMiw3IEBAIFdlYlBhZ2VQcm94eSogV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHVp
bnQ2NF90IHBhZ2VJRCkKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZv
clRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5BbGxQZXJzaXN0ZW50RGF0YVN0b3JlcyhP
cHRpb25TZXQ8V2Vic2l0ZURhdGFUeXBlPiBkYXRhVHlwZXMsIFZlY3RvcjxTdHJpbmc+JiYgdG9w
UHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMsIGJvb2wgc2hvdWxkTm90aWZ5UGFnZSwgRnVuY3Rp
b248dm9pZChWZWN0b3I8U3RyaW5nPik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgLy8g
V2UgZXhwZWN0IHRoaXMgdG8gYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZCBzbyB3ZSBnZXQg
dGhlIGRlZmF1bHQgd2Vic2l0ZSBkYXRhIHN0b3JlLgotICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAgICBzdHJ1Y3QgQ2Fs
bGJhY2tBZ2dyZWdhdG9yIDogVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9y
PiB7CiAgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihGdW5jdGlvbjx2b2lkKFZl
Y3RvcjxTdHJpbmc+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTI1OSw3ICsyNTksNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluc0luQWxsUGVycwogICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBl
bmRpbmdDYWxsYmFjaygpOwogICAgICAgICBkYXRhU3RvcmUucmVtb3ZlRGF0YUZvclRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW5zKGRhdGFUeXBlcywgeyB9LCBXVEZNb3ZlKHRvcFByaXZhdGVs
eUNvbnRyb2xsZWREb21haW5zKSwgW2NhbGxiYWNrQWdncmVnYXRvciwgc2hvdWxkTm90aWZ5UGFn
ZSwgcGFnZV0oVmVjdG9yPFN0cmluZz4mJiBkb21haW5zV2l0aERlbGV0ZWRXZWJzaXRlRGF0YSkg
ewogICAgICAgICAgICAgLy8gV2hlbiBjb21wbGV0aW5nIHRoZSB0YXNrLCB3ZSBzaG91bGQgYmUg
Z2V0dGluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgotICAgICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChzaG91bGROb3RpZnlQYWdlKQogICAgICAgICAg
ICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdlVG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURh
dGFEZWxldGlvbkZvclRvcFByaXZhdGVseU93bmVkRG9tYWluc0ZpbmlzaGVkIiwgbnVsbHB0cik7
CkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVE
YXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJbkFsbFBlcnMKIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJpdGVEYXRhKE9w
dGlvblNldDxXZWJzaXRlRGF0YVR5cGU+IGRhdGFUeXBlcywgYm9vbCBzaG91bGROb3RpZnlQYWdl
LCBGdW5jdGlvbjx2b2lkKEhhc2hTZXQ8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICAvLyBXZSBleHBlY3QgdGhpcyB0byBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFk
IHNvIHdlIGdldCB0aGUgZGVmYXVsdCB3ZWJzaXRlIGRhdGEgc3RvcmUuCi0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAogICAg
IHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgOiBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFj
a0FnZ3JlZ2F0b3I+IHsKICAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKEZ1bmN0
aW9uPHZvaWQoSGFzaFNldDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMzIx
LDcgKzMyMSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojp0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluc1dpdGhXZWJpdGVEYXRhKE9wdGlvblNldDxXZWJzCiAgICAgICAgIGNhbGxiYWNrQWdn
cmVnYXRvci0+YWRkUGVuZGluZ0NhbGxiYWNrKCk7CiAgICAgICAgIGRhdGFTdG9yZS50b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluc1dpdGhXZWJzaXRlRGF0YShkYXRhVHlwZXMsIHsgfSwgW2Nh
bGxiYWNrQWdncmVnYXRvciwgc2hvdWxkTm90aWZ5UGFnZSwgcGFnZV0oSGFzaFNldDxTdHJpbmc+
JiYgZG9tYWluc1dpdGhEYXRhUmVjb3JkcykgewogICAgICAgICAgICAgLy8gV2hlbiBjb21wbGV0
aW5nIHRoZSB0YXNrLCB3ZSBzaG91bGQgYmUgZ2V0dGluZyBjYWxsZWQgb24gdGhlIG1haW4gdGhy
ZWFkLgotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChz
aG91bGROb3RpZnlQYWdlKQogICAgICAgICAgICAgICAgIHBhZ2UudmFsdWUtPnBvc3RNZXNzYWdl
VG9JbmplY3RlZEJ1bmRsZSgiV2Vic2l0ZURhdGFTY2FuRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxl
ZERvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAppbmRleCAw
ZTgyOGI0MTc2MzNkN2E2NGIyMGMxZDU0MjA4YmYzZTQwM2IwYmQxLi4wZmJmMzNhNmZlMjA5ZGJh
ZWM5MzQ0ZTdhYzE4ODQzNDQ5MzYyZTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcApAQCAtMTAz
LDcgKzEwMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpbml0aWFsaXplRGF0YVR5cGVzVG9SZW1v
dmUoKQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURh
dGFSZWNvcmRzKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQo
IVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAgICBpZiAoIWNvcmVTdG9yZSgpLnNob3VsZFJl
bW92ZURhdGFSZWNvcmRzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE3Niw3ICsxNzYsNyBAQCBi
b29sIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0VuYWJsZWQoKSBjb25zdAogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
cmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZlcigpCiB7Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIAogICAgIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3RpY3NTdG9yZSht
X3Jlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jb3B5UmVmKCkpOwogICAgIFJlc291cmNlTG9h
ZE9ic2VydmVyOjpzaGFyZWRPYnNlcnZlcigpLnNldFN0YXRpc3RpY3NRdWV1ZShtX3N0YXRpc3Rp
Y3NRdWV1ZS5jb3B5UmVmKCkpOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCkK
ICAgICAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJl
ZFJlc291cmNlTG9hZE9ic2VydmVyKFdURjo6RnVuY3Rpb248dm9pZChjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZG9tYWluc1RvUmVtb3ZlLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQWRk
LCBib29sIGNsZWFyRmlyc3QpPiYmIHNob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFu
ZGxlcikKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgCiAgICAgcmVnaXN0ZXJTaGFyZWRSZXNvdXJjZUxvYWRPYnNlcnZl
cigpOwogICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLT5zZXRTaG91bGRQYXJ0aXRp
b25Db29raWVzQ2FsbGJhY2soW3Nob3VsZFBhcnRpdGlvbkNvb2tpZXNGb3JEb21haW5zSGFuZGxl
ciA9IFdURk1vdmUoc2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKV0gKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCkgewpAQCAtMjc2LDcgKzI3Niw3IEBAIFN0
cmluZyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcnNpc3RlbnRTdG9yYWdlUGF0
aChjb25zdCBTdHJpbmcmIGxhYmVsCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjp3cml0ZVN0b3JlVG9EaXNrKCkKIHsKLSAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAgICBhdXRvIGVuY29kZXIg
PSBjb3JlU3RvcmUoKS5jcmVhdGVFbmNvZGVyRnJvbURhdGEoKTsKICAgICB3cml0ZUVuY29kZXJU
b0Rpc2soKmVuY29kZXIuZ2V0KCksICJmdWxsX2Jyb3dzaW5nX3Nlc3Npb24iKTsKQEAgLTI4NCw3
ICsyODQsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6d3JpdGVTdG9y
ZVRvRGlzaygpCiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZUVu
Y29kZXJUb0Rpc2soS2V5ZWRFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBTdHJpbmcmIGxhYmVsKSBj
b25zdAogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIAogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IHJhd0RhdGEgPSBl
bmNvZGVyLmZpbmlzaEVuY29kaW5nKCk7CiAgICAgaWYgKCFyYXdEYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQppbmRleCBkYjhjN2Q4MzkzZjFkM2RiZTk5ZWMw
MGZkZjYwMDU2NjM1NjI2ZmFmLi5jYjhkY2UxNzZjZTRjZTQ1ZTdhMWQzMTY4MzE1ZDI4YjcwOTRi
NjUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLUERGVmlldy5tbQpAQCAtNDI3
LDcgKzQyNyw3IEBAIC0gKHZvaWQpX2hpZ2hsaWdodExpbmtBbm5vdGF0aW9uOihVSVBERkxpbmtB
bm5vdGF0aW9uICopbGlua0Fubm90YXRpb24gZm9yRHVyYXRpCiAgICAgW2hpZ2hsaWdodFZpZXcg
c2V0Q29ybmVyUmFkaXVzOmhpZ2hsaWdodEJvcmRlclJhZGl1c107CiAgICAgW2hpZ2hsaWdodFZp
ZXcgc2V0Q29sb3I6aGlnaGxpZ2h0Q29sb3JdOwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIFtzZWxmIGFkZFN1YnZpZXc6
aGlnaGxpZ2h0Vmlldy5nZXQoKV07CiAgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShE
SVNQQVRDSF9USU1FX05PVywgZHVyYXRpb24gKiBOU0VDX1BFUl9TRUMpLCBkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBbaGlnaGxpZ2h0VmlldyByZW1vdmVGcm9tU3VwZXJ2
aWV3XTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tG
aWxlVXBsb2FkUGFuZWwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dL
RmlsZVVwbG9hZFBhbmVsLm1tCmluZGV4IDMxNjc3ZjA5MmFhYjRlNzEyMjAwNDA2ODgyYzBkZTg2
NWNiOGVkNzMuLjllNzliMmI1OTJjOTVhMDgzMTRjYmJhOTc5MjYxMjI3M2IzMTNkMDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFu
ZWwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxv
YWRQYW5lbC5tbQpAQCAtNjE0LDcgKzYxNCw3IEBAIC0gKHZvaWQpX3Byb2Nlc3NNZWRpYUluZm9E
aWN0aW9uYXJpZXM6KE5TQXJyYXkgKilpbmZvcyBhdEluZGV4OihOU1VJbnRlZ2VyKWluZGV4CiAt
ICh2b2lkKV91cGxvYWRJdGVtRm9ySW1hZ2VEYXRhOihOU0RhdGEgKilpbWFnZURhdGEgaW1hZ2VO
YW1lOihOU1N0cmluZyAqKWltYWdlTmFtZSBzdWNjZXNzQmxvY2s6KHZvaWQgKF4pKF9XS0ZpbGVV
cGxvYWRJdGVtICopKXN1Y2Nlc3NCbG9jayBmYWlsdXJlQmxvY2s6KHZvaWQgKF4pKHZvaWQpKWZh
aWx1cmVCbG9jawogewogICAgIEFTU0VSVF9BUkcoaW1hZ2VEYXRhLCBpbWFnZURhdGEpOwotICAg
IEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgTlNTdHJpbmcgKiBjb25zdCBrVGVtcG9yYXJ5RGlyZWN0b3J5TmFtZSA9IEAiV0tX
ZWJGaWxlVXBsb2FkIjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuY3BwCmluZGV4IGI1YjAyMWY1MzQ4NTBmNDgxNzg4NDA4MzcwNTFhMTM5Njk0YTMz
MWUuLmFjYjM2MjU4NGNmNWNiY2U2ODJhYzdkMGNlNmE0YmQ2NTg1NGQ2NWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFtZU5l
dHdvcmtpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKQEAgLTQyLDcgKzQy
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIHZvaWQgV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4
dDo6ZW5zdXJlUHJpdmF0ZUJyb3dzaW5nU2Vzc2lvbihTZXNzaW9uSUQgc2Vzc2lvbklEKQogewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICBBU1NFUlQoc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogCiAgICAgaWYgKE5ldHdv
cmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oc2Vzc2lvbklEKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3Ry
ZWFtLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVz
dElucHV0U3RyZWFtLmNwcAppbmRleCBjZmI1YjEwY2M3MGZhODZhNjVjNDYzZWU1MmFmOGYyZWNk
M2JiNTg1Li5mNjQyYWE3YjEyNzg5MmQ5MzEzNThlZmUxOWNkNzQzZmRjZTgzNTdjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1
dFN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNv
dXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBib29sIHdl
YmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1Jc1dhaXRpbmdGb3JEYXRhKFdlYktpdFNvdXBSZXF1
ZXN0SW5wdXRTCiAKIHN0YXRpYyB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1SZWFk
QXN5bmMoR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSwgdm9pZCogYnVmZmVyLCBnc2l6ZSBjb3Vu
dCwgaW50IC8qcHJpb3JpdHkqLywgR0NhbmNlbGxhYmxlKiBjYW5jZWxsYWJsZSwgR0FzeW5jUmVh
ZHlDYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlckRhdGEpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIFdlYktp
dFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSA9IFdFQktJVF9TT1VQX1JFUVVFU1RfSU5Q
VVRfU1RSRUFNKGlucHV0U3RyZWFtKTsKICAgICBHUmVmUHRyPEdUYXNrPiB0YXNrID0gYWRvcHRH
UmVmKGdfdGFza19uZXcoc3RyZWFtLCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7
CiAKQEAgLTE0Miw3ICsxNDIsNyBAQCBHSW5wdXRTdHJlYW0qIHdlYmtpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW1OZXcodWludDY0X3QgY29udGVudExlbmd0aCkKIAogdm9pZCB3ZWJraXRTb3VwUmVx
dWVzdElucHV0U3RyZWFtQWRkRGF0YShXZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtKiBzdHJl
YW0sIGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBkYXRhTGVuZ3RoKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIGlm
ICh3ZWJraXRTb3VwUmVxdWVzdElucHV0U3RyZWFtRmluaXNoZWQoc3RyZWFtKSkKICAgICAgICAg
cmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313744</attachid>
            <date>2017-06-23 13:50:02 -0700</date>
            <delta_ts>2017-06-23 14:18:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173745-20170623135001.patch</filename>
            <type>text/plain</type>
            <size>29626</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDY4Y2YwZmM5NzYxMzQy
ZjAzNjJiZmFkN2FlNzI2NWNlNjk0YjFhMi4uMzJhMGU1ZDg1M2VhYzA3ZmUwZGIwMGZjYjhhZGU5
NzIyY2VhNjgwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDE3LTA2LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQ29uc2lzdGVudGx5IHVzZSBS
dW5Mb29wOjppc01haW4oKSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM3NDUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMyOTM2
NTI3PgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyZW50IEZ1bGdoYW0uCisKKyAgICAgICAgQ29u
c2lzdGVudGx5IHVzZSBSdW5Mb29wOmlzTWFpbigpIG9uIFdlYktpdDIgaW5zdGVhZCBvZiBXVEY6
OmlzTWFpblRocmVhZCgpLgorICAgICAgICBXVEY6OmlzTWFpblRocmVhZCgpIHJldHVybnMgdHJ1
ZSBmb3IgdGhlIFdlYlRocmVhZCBpbnN0ZWFkIG9mIHRoZSBVSVRocmVhZAorICAgICAgICBpbiBX
ZWJLaXQxLiBUaGVyZWZvcmUgV1RGOjppc01haW5UaHJlYWQoKSBpcyB1bnNhZmUgdG8gdXNlIGlu
IHRoZSBVSVByb2Nlc3MKKyAgICAgICAgYXMgdGhlIGFwcGxpY2F0aW9uIG1heSBiZSB1c2luZyBX
ZWJLaXQxIGFzIHdlbGwgYW5kIGhhdmUgYSBXZWJUaHJlYWQuCisKKyAgICAgICAgVGVjaG5pY2Fs
bHksIHdlIG9ubHkgKm5lZWQqIHRvIG1vdmUgZnJvbSBXVEY6OmlzTWFpblRocmVhZCgpIHRvCisg
ICAgICAgIFJ1bkxvb3A6OmlzTWFpbigpIGluIHRoZSBVSVByb2Nlc3MgY29kZSBidXQgSSBwb3J0
ZWQgYWxsIG9mIFdlYktpdDIgZm9yCisgICAgICAgIGNvbnNpc3RlbmN5LiBSdW5Mb29wOjppc01h
aW4oKSBpcyBhbHdheXMgc2FmZSBpbiBXZWJLaXQyLgorCisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0RhdGFUYXNrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNr
OjpOZXR3b3JrRGF0YVRhc2spOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2s6On5O
ZXR3b3JrRGF0YVRhc2spOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFz
a0Jsb2IuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpnZXRTaXpl
Rm9yTmV4dCk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtEYXRhVGFza0Jsb2I6OmRpZEdldFNp
emUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tCbG9iOjpzZWVrKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZCk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrTG9hZDo6
ZGlkUmVjZWl2ZVJlc3BvbnNlTmV0d29ya1Nlc3Npb24pOgorICAgICAgICAoV2ViS2l0OjpOZXR3
b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9u
OjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpyZXNvdXJjZVR5cGUp
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNhY2hlOjppbml0aWFsaXplKToKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZCk6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToK
KyAgICAgICAgKC1bV0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlIFVSTFNlc3Npb246ZGF0YVRhc2s6
ZGlkUmVjZWl2ZVJlc3BvbnNlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpkZWZhdWx0U2Vzc2lvbik6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtTZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcik6CisgICAgICAgICog
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpkaXNwYXRjaE9uTWFp
blRocmVhZCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6c3lu
Y1JlbW90ZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OmRldGFjaCk6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6
YXBwZW5kVXBkYXRlKToKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJl
YWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V29ya1F1ZXVlUG9vbDo6c2luZ2xldG9uKToKKyAgICAgICAgKFdlYktpdDo6V29ya1F1ZXVlUG9v
bDo6ZGlzcGF0Y2gpOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6On5Db21w
b3NpdGluZ1J1bkxvb3ApOgorICAgICAgICAoV2ViS2l0OjpDb21wb3NpdGluZ1J1bkxvb3A6OnBl
cmZvcm1UYXNrKToKKyAgICAgICAgKFdlYktpdDo6Q29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3Jt
VGFza1N5bmMpOgorICAgICAgICAqIFNoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVk
Y29tcG9zaXRvci9UaHJlYWRlZENvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OmNyZWF0ZUdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OlRocmVh
ZGVkQ29tcG9zaXRvcjo6cmVuZGVyTmV4dEZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6VGhyZWFk
ZWRDb21wb3NpdG9yOjpjb21taXRTY3JvbGxPZmZzZXQpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUpOgorICAgICAgICAoV2ViS2l0OjpUaHJl
YWRlZENvbXBvc2l0b3I6OnJlbGVhc2VVcGRhdGVBdGxhc2VzKToKKyAgICAgICAgKFdlYktpdDo6
VGhyZWFkZWRDb21wb3NpdG9yOjpmcmFtZUNvbXBsZXRlKToKKyAgICAgICAgKiBTaGFyZWQvUGx1
Z2lucy9OUE9iamVjdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBPYmplY3RQcm94eTo6
TlBfRGVhbGxvY2F0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdl
RGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9yYWdlRGF0YWJh
c2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNlKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zSW5B
bGxQZXJzaXN0ZW50RGF0YVN0b3Jlcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNXaXRoV2ViaXRlRGF0YSk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29y
ZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
Z2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlU3RvcmVUb0Rpc2spOgorICAgICAgICAo
V2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlz
ayk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW06CisgICAgICAgICgtW1dL
UERGVmlldyBfaGlnaGxpZ2h0TGlua0Fubm90YXRpb246Zm9yRHVyYXRpb246Y29tcGxldGlvbkhh
bmRsZXI6XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5l
bC5tbToKKyAgICAgICAgKC1bV0tGaWxlVXBsb2FkUGFuZWwgX3VwbG9hZEl0ZW1Gb3JJbWFnZURh
dGE6aW1hZ2VOYW1lOnN1Y2Nlc3NCbG9jazpmYWlsdXJlQmxvY2s6XSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2
YXRlQnJvd3NpbmdTZXNzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291
cFJlcXVlc3RJbnB1dFN0cmVhbS5jcHA6CisgICAgICAgICh3ZWJraXRTb3VwUmVxdWVzdElucHV0
U3RyZWFtUmVhZEFzeW5jKToKKwogMjAxNy0wNi0yMyAgRGF2aWQgS2lsemVyICA8ZGRraWx6ZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIHYzOiBSRUdSRVNTSU9OIChyMjE4NDE5KTogMyBOU011dGFi
bGVEaWN0aW9uYXJ5IGxlYWtzIGNhbGxpbmcgLVtXS1Byb2Nlc3NQb29sIF9wbHVnaW5Mb2FkQ2xp
ZW50UG9saWNpZXNdCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrRGF0YVRhc2suY3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a0RhdGFUYXNrLmNwcAppbmRleCA4M2ViNmVhOTUxY2U1NzAxYmVkNzg4OWFkZjQ0ODIzOGY2N2Fh
YWQxLi4xMjk0ZmQxMWZjZjQyYjMxMzk4NTNlNzMyMjZhNjA3OTY0ZTUzOWFjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5jcHAKQEAgLTY5
LDcgKzY5LDcgQEAgTmV0d29ya0RhdGFUYXNrOjpOZXR3b3JrRGF0YVRhc2soTmV0d29ya1Nlc3Np
b24mIHNlc3Npb24sIE5ldHdvcmtEYXRhVGFza0NsaWVudCYKICAgICAsIG1fZmlyc3RSZXF1ZXN0
KHJlcXVlc3RXaXRoQ3JlZGVudGlhbHMpCiAgICAgLCBtX3Nob3VsZENsZWFyUmVmZXJyZXJPbkhU
VFBTVG9IVFRQUmVkaXJlY3Qoc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVj
dCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjpp
c01haW4oKSk7CiAKICAgICBpZiAoIXJlcXVlc3RXaXRoQ3JlZGVudGlhbHMudXJsKCkuaXNWYWxp
ZCgpKSB7CiAgICAgICAgIHNjaGVkdWxlRmFpbHVyZShJbnZhbGlkVVJMRmFpbHVyZSk7CkBAIC04
NCw3ICs4NCw3IEBAIE5ldHdvcmtEYXRhVGFzazo6TmV0d29ya0RhdGFUYXNrKE5ldHdvcmtTZXNz
aW9uJiBzZXNzaW9uLCBOZXR3b3JrRGF0YVRhc2tDbGllbnQmCiAKIE5ldHdvcmtEYXRhVGFzazo6
fk5ldHdvcmtEYXRhVGFzaygpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVCghbV9jbGllbnQpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2tC
bG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Js
b2IuY3BwCmluZGV4IDZmNGJiZjU5YTEyYjUxM2ZjNjRjNjJlYWNkNTg0YjQwYWJjN2U4NjkuLjA5
NjEyNzMyYTVlMzFhZWVmMTZjYWRmN2U5ZTFkMWE2NjE3OGNjZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFza0Jsb2IuY3BwCkBAIC0x
ODAsNyArMTgwLDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjppbnZhbGlkYXRlQW5kQ2Fu
Y2VsKCkKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpnZXRTaXplRm9yTmV4dCgpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgLy8gRG8gd2UgZmluaXNoIHZhbGlkYXRpbmcgYW5kIGNvdW50aW5nIHNpemUgZm9y
IGFsbCBpdGVtcz8KICAgICBpZiAobV9zaXplSXRlbUNvdW50ID49IG1fYmxvYkRhdGEtPml0ZW1z
KCkuc2l6ZSgpKSB7CkBAIC0yMDUsNyArMjA1LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9i
OjpnZXRTaXplRm9yTmV4dCgpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6ZGlkR2V0U2l6
ZShsb25nIGxvbmcgc2l6ZSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2Fu
Y2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCB8fCAoIW1fY2xpZW50ICYmICFp
c0Rvd25sb2FkKCkpKSB7CiAgICAgICAgIGNsZWFyU3RyZWFtKCk7CkBAIC0yMzYsNyArMjM2LDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaWRHZXRTaXplKGxvbmcgbG9uZyBzaXplKQog
CiB2b2lkIE5ldHdvcmtEYXRhVGFza0Jsb2I6OnNlZWsoKQogewotICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogICAgIC8vIENvbnZl
cnQgZnJvbSB0aGUgc3VmZml4IGxlbmd0aCB0byB0aGUgcmFuZ2UuCiAgICAgaWYgKG1fcmFuZ2VT
dWZmaXhMZW5ndGggIT0ga1Bvc2l0aW9uTm90U3BlY2lmaWVkKSB7CkBAIC0zMzAsNyArMzMwLDcg
QEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tCbG9iOjpkaXNwYXRjaERpZFJlY2VpdmVSZXNwb25zZShF
cnJvciBlcnJvckNvZGUpCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQmxvYjo6cmVhZCgpCiB7Ci0g
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkp
OwogCiAgICAgLy8gSWYgdGhlcmUgaXMgbm8gbW9yZSByZW1haW5pbmcgZGF0YSB0byByZWFkLCB3
ZSBhcmUgZG9uZS4KICAgICBpZiAoIW1fdG90YWxSZW1haW5pbmdTaXplIHx8IG1fcmVhZEl0ZW1D
b3VudCA+PSBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwIGIvU291cmNlL1dlYktpdDIv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuY3BwCmluZGV4IGI3ZGZkMzExMDc4MGFlZGMwODg1
M2ExNTZkNzY2MjkxNjA2NzYwY2EuLjUxNzNlNzljMWZmYmEyNDQzYzBkNzNjNmU4OGRjYWNjYjIx
NTRkNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtM
b2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrTG9hZC5j
cHAKQEAgLTM3MCw3ICszNzAsNyBAQCB2b2lkIE5ldHdvcmtMb2FkOjpjb250aW51ZUNhbkF1dGhl
bnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2UoYm9vbCByZXN1bHQpCiAKIHZvaWQgTmV0d29y
a0xvYWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2Um
JiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICBBU1NFUlQoIW1fdGhyb3R0bGUpOwogCiAgICAgaWYgKG1fdGFzayAmJiBt
X3Rhc2stPmlzRG93bmxvYWQoKSkgewpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVSZXNwb25zZU5ldHdvcmtTZXNzaW9uKFJlc291cmNlUmVzcG9uc2UmJiBy
ZXNwb25zZSwKIAogdm9pZCBOZXR3b3JrTG9hZDo6bm90aWZ5RGlkUmVjZWl2ZVJlc3BvbnNlKFJl
c291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKIAogI2lmIEVOQUJMRShORVRXT1JLX0NBUFRVUkUpCiAg
ICAgaWYgKG1fcmVjb3JkZXIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrU2Vzc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrU2Vzc2lvbi5jcHAKaW5kZXggNmUwMTNmM2ZjNjA0Y2UyMTJmNzljODdlYjk2YTZiZGYw
ZWNhY2YxOC4uYWNkZTVjMWIyNGFkY2NmMTY1NDU5YTg5YTYxZWEyNDZkZDM2ODIxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uLmNwcApAQCAt
NjAsNyArNjAsNyBAQCBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb246OmRlZmF1bHRTZXNz
aW9uKCkKICNpZiBQTEFURk9STShDT0NPQSkKICAgICByZXR1cm4gTmV0d29ya1Nlc3Npb25Db2Nv
YTo6ZGVmYXVsdFNlc3Npb24oKTsKICNlbHNlCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIHN0YXRpYyBOZXR3b3JrU2Vzc2lv
biogc2Vzc2lvbiA9ICZOZXR3b3JrU2Vzc2lvbjo6Y3JlYXRlKFNlc3Npb25JRDo6ZGVmYXVsdFNl
c3Npb25JRCgpKS5sZWFrUmVmKCk7CiAgICAgcmV0dXJuICpzZXNzaW9uOwogI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlLmNw
cAppbmRleCA5ZjFjZDBhZDMzMDc2ZTk4YTk2MGViMzliMjIxNmUwYmU0NzQ1NDZhLi42ZmRiMmNi
ZmU4MzU1ZmRlYzEzZjhkYzdhMjdiZTNjZDFkODY5NjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZS5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgbmFtZXNwYWNlIE5ldHdvcmtDYWNoZSB7CiAKIHN0YXRpYyBjb25zdCBBdG9taWNTdHJp
bmcmIHJlc291cmNlVHlwZSgpCiB7Ci0gICAgQVNTRVJUKFdURjo6aXNNYWluVGhyZWFkKCkpOwor
ICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8Y29uc3QgQXRvbWljU3RyaW5nPiByZXNvdXJjZSgiUmVzb3VyY2UiLCBBdG9taWNTdHJp
bmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CkBAIC04
Miw3ICs4Miw3IEBAIGJvb2wgQ2FjaGU6OmluaXRpYWxpemUoY29uc3QgU3RyaW5nJiBjYWNoZVBh
dGgsIE9wdGlvblNldDxPcHRpb24+IG9wdGlvbnMpCiAjaWYgRU5BQkxFKE5FVFdPUktfQ0FDSEVf
U1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQogICAgIGlmIChvcHRpb25zLmNvbnRhaW5zKE9wdGlv
bjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb24pKSB7CiAgICAgICAgIG1fbG93UG93ZXJNb2RlTm90
aWZpZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPFdlYkNvcmU6Okxvd1Bvd2VyTW9kZU5vdGlmaWVyPihb
dGhpc10oYm9vbCBpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpIHsKLSAgICAgICAgICAgIEFTU0VSVChX
VEY6OmlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChXVEY6OlJ1bkxvb3A6Omlz
TWFpbigpKTsKICAgICAgICAgICAgIGlmIChpc0xvd1Bvd2VyTW9kZUVuYWJsZWQpCiAgICAgICAg
ICAgICAgICAgbV9zcGVjdWxhdGl2ZUxvYWRNYW5hZ2VyID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAppbmRleCAzYzQzZTg3ZDli
NWVlNWNhYmZjNzVkNzg0NzU5YzRmMjI1ODE3OWMwLi4wZTE5ZWFhNGRiNDg5Y2IyYWJhZGYwZTg0
ZTM0YWFiN2Y0MmZiMWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIHZvaWQgSU9DaGFubmVsOjpyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVf
dCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBpZiAoIWlzTWFpblRocmVhZCgpKSB7CisgICAgaWYgKCFSdW5Mb29wOjpp
c01haW4oKSkgewogICAgICAgICByZWFkU3luY0luVGhyZWFkKG9mZnNldCwgc2l6ZSwgcXVldWUs
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTE4MSw3ICsxODEsNyBAQCB2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXpl
X3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZAogCiB2b2lkIElPQ2hhbm5l
bDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVl
KiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxldGlvbkhh
bmRsZXIpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CiAKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsKHRoaXMpOwog
ICAgIFRocmVhZDo6Y3JlYXRlKCJJT0NoYW5uZWw6OnJlYWRTeW5jIiwgW2NoYW5uZWwsIHNpemUs
IHF1ZXVlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nv
Y29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IDE2YTVjNDczNmVjZDg4YzNmMWVm
YmU0NDIwY2Y0ZDI3MTU3ZjFlYjkuLjlhNDUyYTUwMjkzMmQyMzQ0OWY2ZDE3ZWJjNjNhOWI1ZTc5
ZDQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NvY29hL05l
dHdvcmtTZXNzaW9uQ29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtMzU4LDcgKzM1OCw3IEBAIC0gKHZvaWQp
VVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBkYXRhVGFzazooTlNVUkxTZXNzaW9u
RGF0YVRhc2sgKilkYXRhCiAgICAgYXV0byB0YXNrSWRlbnRpZmllciA9IGRhdGFUYXNrLnRhc2tJ
ZGVudGlmaWVyOwogICAgIExPRyhOZXR3b3JrU2Vzc2lvbiwgIiVsbHUgZGlkUmVjZWl2ZVJlc3Bv
bnNlIiwgdGFza0lkZW50aWZpZXIpOwogICAgIGlmIChhdXRvKiBuZXR3b3JrRGF0YVRhc2sgPSBb
c2VsZiBleGlzdGluZ1Rhc2s6ZGF0YVRhc2tdKSB7Ci0gICAgICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgICAgIAogICAg
ICAgICAvLyBBdm9pZCBNSU1FIHR5cGUgc25pZmZpbmcgaWYgdGhlIHJlc3BvbnNlIGNvbWVzIGJh
Y2sgYXMgMzA0IE5vdCBNb2RpZmllZC4KICAgICAgICAgaW50IHN0YXR1c0NvZGUgPSBbcmVzcG9u
c2UgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3RvcihzdGF0dXNDb2RlKV0gPyBbKGlkKXJlc3Bv
bnNlIHN0YXR1c0NvZGVdIDogMDsKQEAgLTUzNSw3ICs1MzUsNyBAQCBSZWY8TmV0d29ya1Nlc3Np
b24+IE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNyZWF0ZShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBMZQogCiBOZXR3b3JrU2Vzc2lvbiYgTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGVmYXVsdFNl
c3Npb24oKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxv
b3A6OmlzTWFpbigpKTsKICAgICBzdGF0aWMgTmV0d29ya1Nlc3Npb24qIHNlc3Npb24gPSAmTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y3JlYXRlKFdlYkNvcmU6OlNlc3Npb25JRDo6ZGVmYXVsdFNlc3Np
b25JRCgpLCBsZWdhY3lDdXN0b21Qcm90b2NvbE1hbmFnZXIpLmxlYWtSZWYoKTsKICAgICByZXR1
cm4gKnNlc3Npb247CiB9CkBAIC02MjgsNyArNjI4LDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNv
Y29hOjpjbGVhckNyZWRlbnRpYWxzKCkKIAogTmV0d29ya0RhdGFUYXNrQ29jb2EqIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6OmRhdGFUYXNrRm9ySWRlbnRpZmllcihOZXR3b3JrRGF0YVRhc2tDb2NvYTo6
VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlN0b3JlZENyZWRlbnRpYWxz
IHN0b3JlZENyZWRlbnRpYWxzKQogewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBpZiAoc3RvcmVkQ3JlZGVudGlhbHMgPT0g
V2ViQ29yZTo6U3RvcmVkQ3JlZGVudGlhbHM6OkFsbG93U3RvcmVkQ3JlZGVudGlhbHMpCiAgICAg
ICAgIHJldHVybiBtX2RhdGFUYXNrTWFwV2l0aENyZWRlbnRpYWxzLmdldCh0YXNrSWRlbnRpZmll
cik7CiAgICAgcmV0dXJuIG1fZGF0YVRhc2tNYXBXaXRob3V0Q3JlZGVudGlhbHMuZ2V0KHRhc2tJ
ZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmlu
ZGV4IDJkODA2ZjEwMzZhOWYwZjYxZDZmMjMwNmQ4MGY5YTA4OWRjMzc0OTMuLjMxY2EwZjhjMzVl
OWQ3ZTI3YTE2Zjc3ZmI0ODg0MjU0MzE4ZDU1ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMzcsNyArMzcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OmRpc3BhdGNoT25NYWluVGhyZWFkKEZ1
bmN0aW9uPHZvaWQoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBpZiAoaXNNYWluVGhyZWFkKCkpIHsK
KyAgICBpZiAoUnVuTG9vcDo6aXNNYWluKCkpIHsKICAgICAgICAgZnVuY3Rpb24oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTU4OSw3ICs1ODksNyBAQCB2b2lkIENvb3JkaW5hdGVkR3Jh
cGhpY3NTY2VuZTo6c3luY1JlbW90ZUNvbnRlbnQoKQogICAgIGVuc3VyZVJvb3RMYXllcigpOwog
CiAgICAgVmVjdG9yPEZ1bmN0aW9uPHZvaWQoKT4+IHJlbmRlclF1ZXVlOwotICAgIGJvb2wgY2Fs
bGVkT25NYWluVGhyZWFkID0gV1RGOjppc01haW5UaHJlYWQoKTsKKyAgICBib29sIGNhbGxlZE9u
TWFpblRocmVhZCA9IFJ1bkxvb3A6OmlzTWFpbigpOwogICAgIGlmICghY2FsbGVkT25NYWluVGhy
ZWFkKQogICAgICAgICBtX3JlbmRlclF1ZXVlTXV0ZXgubG9jaygpOwogICAgIHJlbmRlclF1ZXVl
ID0gV1RGTW92ZShtX3JlbmRlclF1ZXVlKTsKQEAgLTY0Miw3ICs2NDIsNyBAQCB2b2lkIENvb3Jk
aW5hdGVkR3JhcGhpY3NTY2VuZTo6c2V0TGF5ZXJBbmltYXRpb25zSWZOZWVkZWQoVGV4dHVyZU1h
cHBlckxheWVyKiBsYQogCiB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6ZGV0YWNoKCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9pc0FjdGl2ZSA9IGZhbHNlOwogICAgIG1fY2xpZW50ID0gbnVsbHB0cjsK
ICAgICBMb2NrSG9sZGVyIGxvY2tlcihtX3JlbmRlclF1ZXVlTXV0ZXgpOwpAQCAtNjU0LDcgKzY1
NCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjphcHBlbmRVcGRhdGUoRnVuY3Rp
b248dm9pZCgpPiYmIGZ1bmN0aW9uKQogICAgIGlmICghbV9pc0FjdGl2ZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIExvY2tIb2xkZXIgbG9ja2VyKG1fcmVuZGVyUXVldWVNdXRleCk7CiAg
ICAgbV9yZW5kZXJRdWV1ZS5hcHBlbmQoV1RGTW92ZShmdW5jdGlvbikpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21w
b3NpdG9yL0NvbXBvc2l0aW5nUnVuTG9vcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNw
cAppbmRleCBlYjJiZjNhM2NiOGM2MmU2OGY0MzZmNzJkY2U5YTM1YmY4ZjJmZDQ2Li40ZTBjYjBm
ZTIwNjJlOWMzNjU0MjA0YzMxMmU5MzYzMTNkY2ZkN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9z
aXRpbmdSdW5Mb29wLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy90aHJlYWRlZGNvbXBvc2l0b3IvQ29tcG9zaXRpbmdSdW5Mb29wLmNwcApAQCAtNDUs
MTQgKzQ1LDE0IEBAIGNsYXNzIFdvcmtRdWV1ZVBvb2wgewogcHVibGljOgogICAgIHN0YXRpYyBX
b3JrUXVldWVQb29sJiBzaW5nbGV0b24oKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAgICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPFdvcmtRdWV1ZVBvb2w+IHdvcmtRdWV1ZVBvb2w7CiAgICAgICAg
IHJldHVybiB3b3JrUXVldWVQb29sOwogICAgIH0KIAogICAgIHZvaWQgZGlzcGF0Y2godm9pZCog
Y29udGV4dCwgRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKICAgICB7Ci0gICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7
CiAgICAgICAgIGdldE9yQ3JlYXRlV29ya1F1ZXVlRm9yQ29udGV4dChjb250ZXh0KS5kaXNwYXRj
aChXVEZNb3ZlKGZ1bmN0aW9uKSk7CiAgICAgfQogCkBAIC0xMTksNyArMTE5LDcgQEAgQ29tcG9z
aXRpbmdSdW5Mb29wOjpDb21wb3NpdGluZ1J1bkxvb3AoRnVuY3Rpb248dm9pZCAoKT4mJiB1cGRh
dGVGdW5jdGlvbikKIAogQ29tcG9zaXRpbmdSdW5Mb29wOjp+Q29tcG9zaXRpbmdSdW5Mb29wKCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgLy8gTWFrZSBzdXJlIHRoZSBXb3JrUXVldWUgaXMgZGVsZXRlZCBhZnRlciB0
aGUgQ29tcG9zaXRpbmdSdW5Mb29wLCBiZWNhdXNlIG1fdXBkYXRlVGltZXIgaGFzIGEgcmVmZXJl
bmNlCiAgICAgLy8gb2YgdGhlIFdvcmtRdWV1ZSBydW4gbG9vcC4gUGFzc2luZyB0aGlzIGlzIG5v
dCBhIHByb2JsZW0gYmVjYXVzZSB0aGUgcG9pbnRlciB3aWxsIG9ubHkgYmUgdXNlZCBhcyBhCiAg
ICAgLy8gSGFzaE1hcCBrZXkgYnkgV29ya1F1ZXVlUG9vbC4KQEAgLTEyOCwxMyArMTI4LDEzIEBA
IENvbXBvc2l0aW5nUnVuTG9vcDo6fkNvbXBvc2l0aW5nUnVuTG9vcCgpCiAKIHZvaWQgQ29tcG9z
aXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFzayhGdW5jdGlvbjx2b2lkICgpPiYmIGZ1bmN0aW9uKQog
ewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFp
bigpKTsKICAgICBXb3JrUXVldWVQb29sOjpzaW5nbGV0b24oKS5kaXNwYXRjaCh0aGlzLCBXVEZN
b3ZlKGZ1bmN0aW9uKSk7CiB9CiAKIHZvaWQgQ29tcG9zaXRpbmdSdW5Mb29wOjpwZXJmb3JtVGFz
a1N5bmMoRnVuY3Rpb248dm9pZCAoKT4mJiBmdW5jdGlvbikKIHsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgTG9ja0hvbGRl
ciBsb2NrZXIobV9kaXNwYXRjaFN5bmNDb25kaXRpb25NdXRleCk7CiAgICAgV29ya1F1ZXVlUG9v
bDo6c2luZ2xldG9uKCkuZGlzcGF0Y2godGhpcywgW3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShm
dW5jdGlvbildIHsKICAgICAgICAgZnVuY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL3RocmVhZGVkY29tcG9zaXRvci9UaHJlYWRl
ZENvbXBvc2l0b3IuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKaW5kZXggMjlmMGY2
MDJlMmVjZTlmYWVjMmJmNjFlYmZiMzNiNjI0MjZmZjcxMS4uZTljZDIxZDFlYWY5MmRhZTE4ZDVj
ZWZhYTEwNDQ1OTAzYTA0YjM4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFkZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvdGhyZWFk
ZWRjb21wb3NpdG9yL1RocmVhZGVkQ29tcG9zaXRvci5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgVGhy
ZWFkZWRDb21wb3NpdG9yOjp+VGhyZWFkZWRDb21wb3NpdG9yKCkKIAogdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OmNyZWF0ZUdMQ29udGV4dCgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBBU1NFUlQobV9uYXRp
dmVTdXJmYWNlSGFuZGxlKTsKIApAQCAtMTY1LDEzICsxNjUsMTMgQEAgdm9pZCBUaHJlYWRlZENv
bXBvc2l0b3I6OnNldERyYXdzQmFja2dyb3VuZChib29sIGRyYXdzQmFja2dyb3VuZCkKIAogdm9p
ZCBUaHJlYWRlZENvbXBvc2l0b3I6OnJlbmRlck5leHRGcmFtZSgpCiB7Ci0gICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1fY2xp
ZW50LnJlbmRlck5leHRGcmFtZSgpOwogfQogCiB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6Y29t
bWl0U2Nyb2xsT2Zmc2V0KHVpbnQzMl90IGxheWVySUQsIGNvbnN0IEludFNpemUmIG9mZnNldCkK
IHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29wOjppc01h
aW4oKSk7CiAgICAgbV9jbGllbnQuY29tbWl0U2Nyb2xsT2Zmc2V0KGxheWVySUQsIG9mZnNldCk7
CiB9CiAKQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFRocmVhZGVkQ29tcG9zaXRvcjo6c2NlbmVV
cGRhdGVGaW5pc2hlZCgpCiAKIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjp1cGRhdGVTY2VuZVN0
YXRlKGNvbnN0IENvb3JkaW5hdGVkR3JhcGhpY3NTdGF0ZSYgc3RhdGUpCiB7Ci0gICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIG1f
c2NlbmUtPmFwcGVuZFVwZGF0ZShbdGhpcywgc2NlbmUgPSBtYWtlUmVmKCptX3NjZW5lKSwgc3Rh
dGVdIHsKICAgICAgICAgc2NlbmUtPmNvbW1pdFNjZW5lU3RhdGUoc3RhdGUpOwogCkBAIC0yNTks
NyArMjU5LDcgQEAgdm9pZCBUaHJlYWRlZENvbXBvc2l0b3I6OnVwZGF0ZVNjZW5lU3RhdGUoY29u
c3QgQ29vcmRpbmF0ZWRHcmFwaGljc1N0YXRlJiBzdGF0ZSkKIAogdm9pZCBUaHJlYWRlZENvbXBv
c2l0b3I6OnJlbGVhc2VVcGRhdGVBdGxhc2VzKFZlY3Rvcjx1aW50MzJfdD4mJiBhdGxhc2VzVG9S
ZW1vdmUpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9v
cDo6aXNNYWluKCkpOwogICAgIG1fc2NlbmUtPmFwcGVuZFVwZGF0ZShbc2NlbmUgPSBtYWtlUmVm
KCptX3NjZW5lKSwgYXRsYXNlc1RvUmVtb3ZlID0gV1RGTW92ZShhdGxhc2VzVG9SZW1vdmUpXSB7
CiAgICAgICAgIHNjZW5lLT5yZWxlYXNlVXBkYXRlQXRsYXNlcyhhdGxhc2VzVG9SZW1vdmUpOwog
ICAgIH0pOwpAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgVGhyZWFkZWRDb21wb3NpdG9yOjpjb29y
ZGluYXRlVXBkYXRlQ29tcGxldGlvbldpdGhDbGllbnQoKQogCiB2b2lkIFRocmVhZGVkQ29tcG9z
aXRvcjo6ZnJhbWVDb21wbGV0ZSgpCiB7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSk7Cisg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgc2NlbmVVcGRhdGVGaW5pc2hlZCgp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OUE9iamVj
dFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHku
Y3BwCmluZGV4IGVmNmM3OTEzMDViN2NkMmVlNDVjOTE5YzIxNGEzYzkxMDI5Mjc5Y2QuLjVhYTlh
ZWRiODllYjA1Yzk3OTEyNTE5ZGUzOTQ5NmQyYmU3ZTZkOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL05QT2JqZWN0UHJveHkuY3BwCkBAIC0zMDIsNyArMzAyLDcgQEAg
dm9pZCBOUE9iamVjdFByb3h5OjpOUF9EZWFsbG9jYXRlKE5QT2JqZWN0KiBucE9iamVjdCkKICAg
ICAvLyBTaW5jZSBOUEFQSSBiZWhhdmlvciBvbiBhIGJhY2tncm91bmQgdGhyZWFkIGlzIHVuZGVm
aW5lZCwgaXQgaXMgb2theSB0byBsaW1pdCB0aGlzIHdvcmthcm91bmQgdG8gdGhlIG9uZSBBUEkK
ICAgICAvLyB0aGF0IGlzIGtub3duIHRvIGJlIG1pc3VzZWQgZHVyaW5nIHBsdWdpbiB0ZWFyZG93
biwgYW5kIHRvIG5vdCBiZSBjb25jZXJuZWQgYWJvdXQgY2hhbmdlIGluIGJlaGF2aW9yIGlmIHRo
aXMKICAgICAvLyBvY2N1cmVkIGF0IGFueSBvdGhlciB0aW1lLgotICAgIGlmICghaXNNYWluVGhy
ZWFkKCkpIHsKKyAgICBpZiAoIVJ1bkxvb3A6OmlzTWFpbigpKSB7CiAgICAgICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbbnBPYmplY3RdIHsKICAgICAgICAgICAgIE5QX0RlYWxsb2NhdGUo
bnBPYmplY3QpOwogICAgICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwCmlu
ZGV4IDNlODZiMDVjYTUwMmU3MmI4ZmU0MTBiMzI5NTcxNjcyMDJiYTc4MmMuLjE5YjIyOWY2YjUz
NzRhNzc0NjNhYWY5YjQ2NGNlOTM2YTA0YWNjMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFj
a2VyLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmln
aW5EYXRhLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0RW5jb2RpbmcuaD4KICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAjaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAtMTQzLDcg
KzE0NCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHRpbWVfdD4gZmlsZU1vZGlmaWNhdGlvblRp
bWUoY29uc3QgU3RyaW5nJiBmaWxlUGF0aCkKIAogVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4g
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpkZWxldGVEYXRhYmFzZXNNb2RpZmllZFNpbmNl
KHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgdGltZSkKIHsKLSAgICBBU1NF
UlQoIWlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKICAg
ICBpbXBvcnRPcmlnaW5JZGVudGlmaWVycygpOwogICAgIFZlY3RvcjxTdHJpbmc+IG9yaWdpbklk
ZW50aWZpZXJzVG9EZWxldGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHAKaW5kZXggYjIyNzFhNzM5OWZjMDM1ODczY2Y2ZmJiNmZiNGJiODFjZjlhZDY0
Yy4uN2RmMjY5OGUzN2NiNGU3ZDRkZmQ2MDc5ZWI0MDNlYmQ5Nzg5MTRhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTIxMiw3ICsyMTIsNyBA
QCBXZWJQYWdlUHJveHkqIFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZSh1aW50NjRfdCBwYWdlSUQp
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JUb3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluc0luQWxsUGVyc2lzdGVudERhdGFTdG9yZXMoT3B0aW9uU2V0PFdlYnNp
dGVEYXRhVHlwZT4gZGF0YVR5cGVzLCBWZWN0b3I8U3RyaW5nPiYmIHRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW5zLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PFN0cmluZz4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFdlIGV4cGVjdCB0aGlz
IHRvIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgc28gd2UgZ2V0IHRoZSBkZWZhdWx0IHdl
YnNpdGUgZGF0YSBzdG9yZS4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRv
ciA6IFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAgICBl
eHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3IoRnVuY3Rpb248dm9pZChWZWN0b3I8U3RyaW5nPik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0yNTksNyArMjU5LDcgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yVG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnNJ
bkFsbFBlcnMKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2so
KTsKICAgICAgICAgZGF0YVN0b3JlLnJlbW92ZURhdGFGb3JUb3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWlucyhkYXRhVHlwZXMsIHsgfSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbnMsIFtj
YWxsYmFja0FnZ3JlZ2F0b3IsIHNob3VsZE5vdGlmeVBhZ2UsIHBhZ2VdKFZlY3RvcjxTdHJpbmc+
JiYgZG9tYWluc1dpdGhEZWxldGVkV2Vic2l0ZURhdGEpIHsKICAgICAgICAgICAgIC8vIFdoZW4g
Y29tcGxldGluZyB0aGUgdGFzaywgd2Ugc2hvdWxkIGJlIGdldHRpbmcgY2FsbGVkIG9uIHRoZSBt
YWluIHRocmVhZC4KLSAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAg
ICBpZiAoc2hvdWxkTm90aWZ5UGFnZSkKICAgICAgICAgICAgICAgICBwYWdlLnZhbHVlLT5wb3N0
TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoIldlYnNpdGVEYXRhRGVsZXRpb25Gb3JUb3BQcml2YXRl
bHlPd25lZERvbWFpbnNGaW5pc2hlZCIsIG51bGxwdHIpOwpAQCAtMjczLDcgKzI3Myw3IEBAIHZv
aWQgV2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvclRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW5zSW5BbGxQZXJzCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6dG9wUHJpdmF0ZWx5
Q29udHJvbGxlZERvbWFpbnNXaXRoV2Vic2l0ZURhdGEoT3B0aW9uU2V0PFdlYnNpdGVEYXRhVHlw
ZT4gZGF0YVR5cGVzLCBib29sIHNob3VsZE5vdGlmeVBhZ2UsIEZ1bmN0aW9uPHZvaWQoSGFzaFNl
dDxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIC8vIFdlIGV4cGVjdCB0
aGlzIHRvIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgc28gd2UgZ2V0IHRoZSBkZWZhdWx0
IHdlYnNpdGUgZGF0YSBzdG9yZS4KLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAgICAgc3RydWN0IENhbGxiYWNrQWdncmVn
YXRvciA6IFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4gewogICAgICAg
ICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3IoRnVuY3Rpb248dm9pZChIYXNoU2V0PFN0cmlu
Zz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5zV2l0aFdlYnNpdGVEYXRh
KE9wdGlvblNldDxXZWIKICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2Fs
bGJhY2soKTsKICAgICAgICAgZGF0YVN0b3JlLnRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW5z
V2l0aFdlYnNpdGVEYXRhKGRhdGFUeXBlcywgeyB9LCBbY2FsbGJhY2tBZ2dyZWdhdG9yLCBzaG91
bGROb3RpZnlQYWdlLCBwYWdlXShIYXNoU2V0PFN0cmluZz4mJiBkb21haW5zV2l0aERhdGFSZWNv
cmRzKSB7CiAgICAgICAgICAgICAvLyBXaGVuIGNvbXBsZXRpbmcgdGhlIHRhc2ssIHdlIHNob3Vs
ZCBiZSBnZXR0aW5nIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCi0gICAgICAgICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKHNob3VsZE5vdGlmeVBhZ2UpCiAgICAg
ICAgICAgICAgICAgcGFnZS52YWx1ZS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKCJXZWJz
aXRlRGF0YVNjYW5Gb3JUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluc0ZpbmlzaGVkIiwgbnVs
bHB0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCmluZGV4IGY4NWM0Y2JhZWVmMTI4YWUyMjUyZGRi
NDEyZjVjMGFiNDNmMmQzNmIuLjZmMjQ4YTNkOGE0NmI2MGU5ODliOTQ2MDAwN2Q5YzA4Zjg1MmRk
NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGluaXRpYWxpemVEYXRhVHlwZXNUb1JlbW92ZSgpCiAgICAgCiB2b2lkIFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cmVtb3ZlRGF0YVJlY29yZHMoKQogewotICAgIEFT
U0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOwog
ICAgIAogICAgIGlmICghY29yZVN0b3JlKCkuc2hvdWxkUmVtb3ZlRGF0YVJlY29yZHMoKSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMTc2LDcgKzE3Niw3IEBAIGJvb2wgV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpIGNvbnN0CiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZWdpc3RlclNoYXJlZFJlc291cmNl
TG9hZE9ic2VydmVyKCkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNo
YXJlZE9ic2VydmVyKCkuc2V0U3RhdGlzdGljc1N0b3JlKG1fcmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlLmNvcHlSZWYoKSk7CiAgICAgUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZE9ic2Vy
dmVyKCkuc2V0U3RhdGlzdGljc1F1ZXVlKG1fc3RhdGlzdGljc1F1ZXVlLmNvcHlSZWYoKSk7CkBA
IC0yMDAsNyArMjAwLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJl
Z2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIoKQogICAgIAogdm9pZCBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlZ2lzdGVyU2hhcmVkUmVzb3VyY2VMb2FkT2JzZXJ2ZXIo
V1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9SZW1vdmUs
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9BZGQsIGJvb2wgY2xlYXJGaXJzdCk+JiYg
c2hvdWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyKQogewotICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICAKICAg
ICByZWdpc3RlclNoYXJlZFJlc291cmNlTG9hZE9ic2VydmVyKCk7CiAgICAgbV9yZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUtPnNldFNob3VsZFBhcnRpdGlvbkNvb2tpZXNDYWxsYmFjayhbc2hv
dWxkUGFydGl0aW9uQ29va2llc0ZvckRvbWFpbnNIYW5kbGVyID0gV1RGTW92ZShzaG91bGRQYXJ0
aXRpb25Db29raWVzRm9yRG9tYWluc0hhbmRsZXIpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRv
bWFpbnNUb1JlbW92ZSwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0FkZCwgYm9vbCBj
bGVhckZpcnN0KSB7CkBAIC0yNzYsNyArMjc2LDcgQEAgU3RyaW5nIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cGVyc2lzdGVudFN0b3JhZ2VQYXRoKGNvbnN0IFN0cmluZyYgbGFiZWwK
IAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlU3RvcmVUb0Rpc2so
KQogewotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVCghUnVuTG9vcDo6
aXNNYWluKCkpOwogICAgIAogICAgIGF1dG8gZW5jb2RlciA9IGNvcmVTdG9yZSgpLmNyZWF0ZUVu
Y29kZXJGcm9tRGF0YSgpOwogICAgIHdyaXRlRW5jb2RlclRvRGlzaygqZW5jb2Rlci5nZXQoKSwg
ImZ1bGxfYnJvd3Npbmdfc2Vzc2lvbiIpOwpAQCAtMjg0LDcgKzI4NCw3IEBAIHZvaWQgV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjp3cml0ZVN0b3JlVG9EaXNrKCkKIAogdm9pZCBXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OndyaXRlRW5jb2RlclRvRGlzayhLZXllZEVuY29k
ZXImIGVuY29kZXIsIGNvbnN0IFN0cmluZyYgbGFiZWwpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKCFp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAgICAgCiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gcmF3RGF0YSA9IGVuY29kZXIuZmluaXNoRW5jb2Rpbmco
KTsKICAgICBpZiAoIXJhd0RhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZW
aWV3Lm1tCmluZGV4IGRiOGM3ZDgzOTNmMWQzZGJlOTllYzAwZmRmNjAwNTY2MzU2MjZmYWYuLmNi
OGRjZTE3NmNlNGNlNDVlN2ExZDMxNjgzMTVkMjhiNzA5NGI2NTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCkBAIC00MjcsNyArNDI3LDcgQEAgLSAodm9pZClf
aGlnaGxpZ2h0TGlua0Fubm90YXRpb246KFVJUERGTGlua0Fubm90YXRpb24gKilsaW5rQW5ub3Rh
dGlvbiBmb3JEdXJhdGkKICAgICBbaGlnaGxpZ2h0VmlldyBzZXRDb3JuZXJSYWRpdXM6aGlnaGxp
Z2h0Qm9yZGVyUmFkaXVzXTsKICAgICBbaGlnaGxpZ2h0VmlldyBzZXRDb2xvcjpoaWdobGlnaHRD
b2xvcl07CiAKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CiAgICAgW3NlbGYgYWRkU3VidmlldzpoaWdobGlnaHRWaWV3LmdldCgpXTsK
ICAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkdXJh
dGlvbiAqIE5TRUNfUEVSX1NFQyksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAg
ICAgIFtoaWdobGlnaHRWaWV3IHJlbW92ZUZyb21TdXBlcnZpZXddOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvZm9ybXMvV0tGaWxlVXBsb2FkUGFuZWwubW0KaW5k
ZXggMzE2NzdmMDkyYWFiNGU3MTIyMDA0MDY4ODJjMGRlODY1Y2I4ZWQ3My4uOWU3OWIyYjU5MmM5
NWEwODMxNGNiYmE5NzkyNjEyMjczYjMxM2QwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9mb3Jtcy9XS0ZpbGVVcGxvYWRQYW5lbC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvaW9zL2Zvcm1zL1dLRmlsZVVwbG9hZFBhbmVsLm1tCkBAIC02MTQsNyAr
NjE0LDcgQEAgLSAodm9pZClfcHJvY2Vzc01lZGlhSW5mb0RpY3Rpb25hcmllczooTlNBcnJheSAq
KWluZm9zIGF0SW5kZXg6KE5TVUludGVnZXIpaW5kZXgKIC0gKHZvaWQpX3VwbG9hZEl0ZW1Gb3JJ
bWFnZURhdGE6KE5TRGF0YSAqKWltYWdlRGF0YSBpbWFnZU5hbWU6KE5TU3RyaW5nICopaW1hZ2VO
YW1lIHN1Y2Nlc3NCbG9jazoodm9pZCAoXikoX1dLRmlsZVVwbG9hZEl0ZW0gKikpc3VjY2Vzc0Js
b2NrIGZhaWx1cmVCbG9jazoodm9pZCAoXikodm9pZCkpZmFpbHVyZUJsb2NrCiB7CiAgICAgQVNT
RVJUX0FSRyhpbWFnZURhdGEsIGltYWdlRGF0YSk7Ci0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQo
KSk7CisgICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CiAKICAgICBOU1N0cmluZyAqIGNv
bnN0IGtUZW1wb3JhcnlEaXJlY3RvcnlOYW1lID0gQCJXS1dlYkZpbGVVcGxvYWQiOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3NvdXAvV2Vi
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L3NvdXAvV2ViRnJhbWVOZXR3b3JraW5nQ29udGV4dC5jcHAKaW5kZXggYjVi
MDIxZjUzNDg1MGY0ODE3ODg0MDgzNzA1MWExMzk2OTRhMzMxZS4uYWNiMzYyNTg0Y2Y1Y2JjZTY4
MmFjN2QwY2U2YTRiZDY1ODU0ZDY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9zb3VwL1dlYkZyYW1lTmV0d29ya2luZ0NvbnRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvc291cC9XZWJGcmFt
ZU5ldHdvcmtpbmdDb250ZXh0LmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogdm9pZCBXZWJGcmFtZU5ldHdvcmtpbmdDb250ZXh0OjplbnN1cmVQcml2YXRlQnJvd3Np
bmdTZXNzaW9uKFNlc3Npb25JRCBzZXNzaW9uSUQpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogICAgIEFTU0VSVChzZXNzaW9u
SUQuaXNFcGhlbWVyYWwoKSk7CiAKICAgICBpZiAoTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpzdG9y
YWdlU2Vzc2lvbihzZXNzaW9uSUQpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwIGIvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9zb3VwL1dlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0uY3BwCmluZGV4
IGNmYjViMTBjYzcwZmE4NmE2NWM0NjNlZTUyYWY4ZjJlY2QzYmI1ODUuLmY2NDJhYTdiMTI3ODky
ZDkzMTM1OGVmZTE5Y2Q3NDNmZGNlODM1N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3Mvc291cC9XZWJLaXRTb3VwUmVxdWVzdElucHV0U3RyZWFtLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3NvdXAvV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbS5j
cHAKQEAgLTc5LDcgKzc5LDcgQEAgc3RhdGljIGJvb2wgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0
cmVhbUlzV2FpdGluZ0ZvckRhdGEoV2ViS2l0U291cFJlcXVlc3RJbnB1dFMKIAogc3RhdGljIHZv
aWQgd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbVJlYWRBc3luYyhHSW5wdXRTdHJlYW0qIGlu
cHV0U3RyZWFtLCB2b2lkKiBidWZmZXIsIGdzaXplIGNvdW50LCBpbnQgLypwcmlvcml0eSovLCBH
Q2FuY2VsbGFibGUqIGNhbmNlbGxhYmxlLCBHQXN5bmNSZWFkeUNhbGxiYWNrIGNhbGxiYWNrLCBn
cG9pbnRlciB1c2VyRGF0YSkKIHsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAgICAgV2ViS2l0U291cFJlcXVlc3RJbnB1dFN0cmVh
bSogc3RyZWFtID0gV0VCS0lUX1NPVVBfUkVRVUVTVF9JTlBVVF9TVFJFQU0oaW5wdXRTdHJlYW0p
OwogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190YXNrX25ldyhzdHJlYW0s
IGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEpKTsKIApAQCAtMTQyLDcgKzE0Miw3IEBA
IEdJbnB1dFN0cmVhbSogd2Via2l0U291cFJlcXVlc3RJbnB1dFN0cmVhbU5ldyh1aW50NjRfdCBj
b250ZW50TGVuZ3RoKQogCiB2b2lkIHdlYmtpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW1BZGREYXRh
KFdlYktpdFNvdXBSZXF1ZXN0SW5wdXRTdHJlYW0qIHN0cmVhbSwgY29uc3Qgdm9pZCogZGF0YSwg
c2l6ZV90IGRhdGFMZW5ndGgpCiB7Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCiAgICAgaWYgKHdlYmtpdFNvdXBSZXF1ZXN0SW5w
dXRTdHJlYW1GaW5pc2hlZChzdHJlYW0pKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>