<?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>181136</bug_id>
          
          <creation_ts>2017-12-22 14:07:17 -0800</creation_ts>
          <short_desc>REGRESSION(r219530): ResourceLoadStatisticsPersistentStorage should be read-only in ephemeral sessions</short_desc>
          <delta_ts>2018-01-11 19:13:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wilander</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384550</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-12-22 14:07:17 -0800</bug_when>
    <thetext>GTK API test /webkit2/WebKitWebsiteData/ephemeral is broken:

ASSERTION FAILED: !storagePath.isEmpty()
../../Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.cpp(147) : void WebKit::ResourceLoadStatisticsPersistentStorage::monitorDirectoryForNewStatistics()

Looks like this probably regressed in r219530 &quot;Monitor directory for new statistics files after a delete operation&quot; and we just didn&apos;t notice until now. Problem is WebResourceLoadStatisticsStore creates a ResourceLoadStatisticsPersistentStorage object unconditionally. ResourceLoadStatisticsPersistentStorage asserts that storagePath is not empty, but it&apos;s intentionally empty in ephemeral mode.

The proper fix is not obvious to me, but perhaps teaching WebResourceLoadStatisticsStore to not create a ResourceLoadStatisticsPersistentStorage in this case makes more sense than teaching ResourceLoadStatisticsPersistentStorage to be not persistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385406</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2018-01-03 02:29:09 -0800</bug_when>
    <thetext>I can&apos;t reproduce this and the test is passing in the bots too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385450</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-03 08:54:41 -0800</bug_when>
    <thetext>I can reproduce 100%. The test is failing on our debug bot. It won&apos;t fail on the release bot because it&apos;s not a release assert.

I&apos;m adding a debug skip expectation for this test, because the solution does not seem simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385456</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-03 09:03:36 -0800</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #2)
&gt; I&apos;m adding a debug skip expectation for this test, because the solution does
&gt; not seem simple.

Since this bug affects Mac... when fixed, please remove the expectation near the top of Tools/Scripts/run-gtk-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385492</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-03 10:11:53 -0800</bug_when>
    <thetext>Committed r226364: &lt;https://trac.webkit.org/changeset/226364&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385493</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2018-01-03 10:12:06 -0800</bug_when>
    <thetext>Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385495</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-01-03 10:12:32 -0800</bug_when>
    <thetext>&lt;rdar://problem/36277541&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387851</commentid>
    <comment_count>7</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-10 14:04:09 -0800</bug_when>
    <thetext>This is actually tracked here:
&lt;rdar://problem/36116604&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387857</commentid>
    <comment_count>8</comment_count>
      <attachid>330961</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-10 14:16:31 -0800</bug_when>
    <thetext>Created attachment 330961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1387966</commentid>
    <comment_count>9</comment_count>
      <attachid>330998</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-10 17:39:27 -0800</bug_when>
    <thetext>Created attachment 330998
Patch with tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388054</commentid>
    <comment_count>10</comment_count>
      <attachid>330998</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-10 20:21:19 -0800</bug_when>
    <thetext>Comment on attachment 330998
Patch with tests

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

&gt; Source/WebKit/ChangeLog:3
&gt; +        REGRESSION(r219530): ResourceLoadStatisticsPersistentStorage should not be used in ephemeral sessions

I think a better title is &quot;ResourceLoadStatisticsPersistentStorage should be read-only in ephemeral sessions&quot;. I&apos;ll fix that before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388443</commentid>
    <comment_count>11</comment_count>
      <attachid>330998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-11 13:56:30 -0800</bug_when>
    <thetext>Comment on attachment 330998
Patch with tests

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

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:88
&gt; +    if (storageDirectoryPath.isEmpty())

Seems weird to be dealing with an empty path here and to be calling into API::WebsiteDataStore:: from this class. I believe we usually make sure path are properly initialized early on. You probably want to update:
- ProcessPoolConfiguration::createWithLegacyOptions() to set configuration-&gt;m_resourceLoadStatisticsDirectory

Or wouldn&apos;t this work for some reason?

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:102
&gt; +void ResourceLoadStatisticsPersistentStorage::stopAsyncWriteTimer()

Not sure this is needed, see comment below.

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:44
&gt; +    enum class PersistentStorageType {

I think this is more a Mode than a Type. However, unless we expect more modes, I would suggest using enum class IsReadyOnly { No, Yes };

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:50
&gt; +    static Ref&lt;ResourceLoadStatisticsPersistentStorage&gt; create(WebResourceLoadStatisticsStore&amp;, const String&amp; storageDirectoryPath);

I do not believe we want this factory, see comment below.

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:91
&gt; +    PersistentStorageType m_storageType { PersistentStorageType::ReadWrite };

Since it is always set by the constructor, not sure it is worth having a default initializer.

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:95
&gt; +class ResourceLoadStatisticsMutablePersistentStorage : public ResourceLoadStatisticsPersistentStorage {

final

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:103
&gt; +class ResourceLoadStatisticsReadOnlyPersistentStorage : public ResourceLoadStatisticsPersistentStorage {

final

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:108
&gt; +        stopAsyncWriteTimer();

Why is this needed? This timer is only started in ResourceLoadStatisticsPersistentStorage::scheduleOrWriteMemoryStore(ForceImmediateWrite) but you already override this function to do nothing.

&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.h:112
&gt; +    void scheduleOrWriteMemoryStore(ForceImmediateWrite) override

This looks a bit odd to override to do nothing. We may want to either:
1.  have those functions pure virtual in the base class.
2. not use polymorphism at all and rely on the m_storageType data member in ResourceLoadStatisticsPersistentStorage for these methods to be no-ops.

Personally, I&apos;d go with 2. as it seems simpler.

&gt; Source/WebKit/UIProcess/WebResourceLoadStatisticsStore.h:195
&gt; +    Ref&lt;ResourceLoadStatisticsPersistentStorage&gt; m_persistentStorage;

I believe this causes a leak. The ref() method in ResourceLoadStatisticsPersistentStorage ref&apos;s the WebResourceLoadStatisticsStore, since it is its owner.
Therefore, my having WebResourceLoadStatisticsStore::m_persistentStorage be a RefPtr, you effectively have WebResourceLoadStatisticsStore ref itself via the ResourceLoadStatisticsPersistentStorage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388462</commentid>
    <comment_count>12</comment_count>
      <attachid>330998</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-11 14:15:00 -0800</bug_when>
    <thetext>Comment on attachment 330998
Patch with tests

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

&gt;&gt; Source/WebKit/UIProcess/ResourceLoadStatisticsPersistentStorage.cpp:88
&gt;&gt; +    if (storageDirectoryPath.isEmpty())
&gt; 
&gt; Seems weird to be dealing with an empty path here and to be calling into API::WebsiteDataStore:: from this class. I believe we usually make sure path are properly initialized early on. You probably want to update:
&gt; - ProcessPoolConfiguration::createWithLegacyOptions() to set configuration-&gt;m_resourceLoadStatisticsDirectory
&gt; 
&gt; Or wouldn&apos;t this work for some reason?

Also, it would be better to actually rely on the session being ephemeral (we have this information in WebKit) rather than having a path or not, to set the ReadOnly mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388564</commentid>
    <comment_count>13</comment_count>
      <attachid>331140</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-11 16:46:49 -0800</bug_when>
    <thetext>Created attachment 331140
Revised with Chris&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388565</commentid>
    <comment_count>14</comment_count>
      <attachid>331140</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-01-11 16:55:21 -0800</bug_when>
    <thetext>Comment on attachment 331140
Revised with Chris&apos;s comments.

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

r=me with comment.

&gt; Source/WebKit/UIProcess/WebsiteData/WebsiteDataStore.cpp:97
&gt; +    const_cast&lt;Configuration*&gt;(&amp;m_configuration)-&gt;resourceLoadStatisticsDirectory = API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory();

This looks a little ugly. Can we use instead:
struct Configuration {
  // ...
  String resourceLoadStatisticsDirectory {API::WebsiteDataStore::defaultResourceLoadStatisticsDirectory() };
}

in the header?

or add a default constructor to Configuration which always sets resourceLoadStatisticsDirectory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388567</commentid>
    <comment_count>15</comment_count>
      <attachid>331141</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-11 16:57:20 -0800</bug_when>
    <thetext>Created attachment 331141
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388589</commentid>
    <comment_count>16</comment_count>
      <attachid>331147</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-11 17:45:39 -0800</bug_when>
    <thetext>Created attachment 331147
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388591</commentid>
    <comment_count>17</comment_count>
      <attachid>331147</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 17:47:22 -0800</bug_when>
    <thetext>Comment on attachment 331147
Patch for landing

Rejecting attachment 331147 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-01&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 331147, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebKit/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/6043135</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388599</commentid>
    <comment_count>18</comment_count>
      <attachid>331149</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-11 17:58:53 -0800</bug_when>
    <thetext>Created attachment 331149
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388601</commentid>
    <comment_count>19</comment_count>
      <attachid>331150</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2018-01-11 18:04:28 -0800</bug_when>
    <thetext>Created attachment 331150
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388635</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 19:12:41 -0800</bug_when>
    <thetext>The commit-queue encountered the following flaky tests while processing attachment 331150:

imported/w3c/web-platform-tests/media-source/mediasource-config-change-mp4-v-framesize.html bug 181571 (authors: cdumez@apple.com and jer.noble@apple.com)
The commit-queue is continuing to process your patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388636</commentid>
    <comment_count>21</comment_count>
      <attachid>331150</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 19:13:11 -0800</bug_when>
    <thetext>Comment on attachment 331150
Patch for landing

Clearing flags on attachment: 331150

Committed r226838: &lt;https://trac.webkit.org/changeset/226838&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1388637</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-01-11 19:13:13 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330961</attachid>
            <date>2018-01-10 14:16:31 -0800</date>
            <delta_ts>2018-01-10 17:39:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181136-20180110141630.patch</filename>
            <type>text/plain</type>
            <size>14133</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY3MjkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAxLTEwICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgbm90IGJlIHVz
ZWQgaW4gZXBoZW1lcmFsIHNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODExMzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTE2NjA0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUg
dXNlcyBvZiBXZWJLaXQgaW52b2x2ZSBydW5uaW5nIGEgVUlQcm9jZXNzIGFzIGFuIGVwaGVtZXJh
bCBzZXNzaW9uIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2Vzcy4gSW4gdGhpcworICAgICAgICBj
YXNlLCB3ZSBkbyBub3QgaW5pdGlhbGl6ZSB0aGUgZGF0YSBwYXRoIGZvciB0aGUgc2V0IG9mIGxv
YWQgc3RhdGlzdGljcyB0cmlnZ2VyaW5nIGFuIGFzc2VydGlvbi4KKworICAgICAgICBXZSBhY3R1
YWxseSBpbnRlbmRlZCBlcGhlbWVyYWwgc2Vzc2lvbnMgdG8gY29uc3VtZSB0aGUgZXhpc3Rpbmcg
cmVzb3VyY2UgbG9hZCBkYXRhIChwcmVzdW1hYmx5IGNhcHR1cmVkIGR1cmluZworICAgICAgICBu
b24tZXBoZW1lcmFsIGJyb3dzaW5nKS4gVGhpcyB3b3VsZCBiZSBhIHJlYWQtb25seSBtb2RlLCB3
aGVyZSBpdCB3b3VsZCBub3QgYWRkIG5ldyBlbnRyaWVzIHRvIHRoZSBsb2FkCisgICAgICAgIHN0
YXRpc3RpY3MsIGJ1dCB3b3VsZCB0YWtlIGFkdmFudGFnZSBvZiBleGlzdGluZyBvYnNlcnZhdGlv
bnMuIEN1cnJlbnRseSB0aGF0IGRvZXMgbm90IGhhcHBlbiAoZm9yIHRoaXMgdHlwZQorICAgICAg
ICBvZiBXZWJLaXQgZW1iZWQpLCB3aGljaCBmb3JjZXMgZWFjaCBydW4gYXMgYW4gZXBoZW1lcmFs
IHNlc3Npb24gdG8gYnVpbGQgdXAgaW4tbWVtb3J5IGJyb3dzaW5nIGRhdGEgdW50aWwgaXQgaGFz
CisgICAgICAgIGVub3VnaCBvYnNlcnZhdGlvbnMgdG8gYmVnaW4gbW9kaWZ5aW5nIGxvYWRzLgor
CisgICAgICAgIFdlIG5lZWQgdG8gc2V0IHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2Ugb2JqZWN0IHRvIGEgInJlYWQgb25seSIgbW9kZSBpbiB0aGlzIGNhc2UsIHNv
CisgICAgICAgIHRoYXQgaXQgcmVhZCAoYnV0IGRvZXMgbm90IHdyaXRlKSBmcm9tIHRoaXMgZGF0
YWJhc2UuCisKKyAgICAgICAgVGVzdGVkIGJ5IHdlYmtpdDIvV2ViS2l0V2Vic2l0ZURhdGEvZXBo
ZW1lcmFsIEFQSSB0ZXN0LgorCisgICAgICAgICogVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Y3JlYXRlKTogQWRkZWQgdG8gYWxsb3cgY3Jl
YXRpb24gb2YgdGhlIHJpZ2h0IHN0eWxlIG9mCisgICAgICAgIFBlcnNpc3RlbnQgU3RvcmFnZS4K
KyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UpOiBTdG9wIHRoZSBhc3lu
YworICAgICAgICB3cml0ZSB0aW1lciBpZiB3ZSBhcmUgbmV2ZXIgZ29pbmcgdG8gZG8gYW55IHdy
aXRlIG9wZXJhdGlvbnMuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRpbWVyRmlyZWQpOiBSRUxFQVNFX0FTU0VSVCB0
aGF0IHdlIG5ldmVyIHJ1bgorICAgICAgICB0aGlzIG1ldGhvZCB3aGVuIGluICJyZWFkIG9ubHki
IG1vZGUuCisgICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzayk6IERpdHRvLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAg
KFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc011dGFibGVQZXJzaXN0ZW50U3RvcmFnZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc011dGFibGVQZXJzaXN0ZW50U3RvcmFnZSk6IEFkZGVkLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVhZE9ubHlQZXJzaXN0ZW50
U3RvcmFnZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlYWRPbmx5UGVyc2lzdGVudFN0b3JhZ2Up
OiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOiBVc2UgdGhlIG5ldyBjcmVhdGUgbWV0
aG9kIGZvciB0aGUKKyAgICAgICAgUmVzb3VyY2VMb2FkU3RhaXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2Ugb2JqZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6On5XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOiBVcGRhdGUgZm9yIG1fcGVyc2lz
dGVudFN0b3JhZ2UgYmVpbmcKKyAgICAgICAgYSBSZWY8PiByYXRoZXIgdGhhbiBhIGJhcmUgb2Jq
ZWN0LgorICAgICAgICAoV2ViS2l0OjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBy
b2Nlc3NTdGF0aXN0aWNzQW5kRGF0YVJlY29yZHMpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpncmFuZGZhdGhlckV4aXN0aW5nV2Vic2l0
ZURhdGEpOiBEaXR0by4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5hdGUpOiBEaXR0by4KKyAgICAgICAgKFdlYktp
dDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpzY2hlZHVsZUNsZWFySW5NZW1vcnlB
bmRQZXJzaXN0ZW50KTogRGl0dG8uCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9h
ZFN0YXRpc3RpY3NTdG9yZS5oOgorCiAyMDE4LTAxLTA5ICBKb2huIFdpbGFuZGVyICA8d2lsYW5k
ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3JhZ2UgQWNjZXNzIEFQSTogVHVybiBmZWF0dXJl
IG9uIGJ5IGRlZmF1bHQgaW4gV2ViUHJlZmVyZW5jZXMueWFtbApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwCShyZXZpc2lvbiAyMjY2MzkpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTct
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaCIKIAorI2luY2x1
ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVk
ZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9G
aWxlTW9uaXRvci5oPgpAQCAtODIsMTEgKzgzLDIyIEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
S2V5ZWREZWNvZGVyPiBjcmUKICAgICByZXR1cm4gS2V5ZWREZWNvZGVyOjpkZWNvZGVyKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkpLCBidWZmZXIuc2l6ZSgp
KTsKIH0KIAotUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCkKK1JlZjxS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U+IFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Y3JlYXRlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZSYgc3RvcmUsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgpCit7CisgICAg
aWYgKHN0b3JhZ2VEaXJlY3RvcnlQYXRoLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlYWRPbmx5UGVyc2lzdGVudFN0b3JhZ2Uo
c3RvcmUsIEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnkoKSkpOworCisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc011dGFibGVQZXJzaXN0ZW50U3RvcmFnZShzdG9yZSwgc3RvcmFnZURpcmVjdG9y
eVBhdGgpKTsKK30KKworUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwg
UGVyc2lzdGVudFN0b3JhZ2VUeXBlIHN0b3JhZ2VUeXBlKQogICAgIDogbV9tZW1vcnlTdG9yZShz
dG9yZSkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZURpcmVjdG9yeVBhdGgp
CiAgICAgLCBtX2FzeW5jV3JpdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVkKQor
ICAgICwgbV9zdG9yYWdlVHlwZShzdG9yYWdlVHlwZSkKIHsKKyAgICBpZiAobV9zdG9yYWdlVHlw
ZSA9PSBQZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlJlYWRPbmx5KQorICAgICAgICBtX2FzeW5jV3Jp
dGVUaW1lci5zdG9wKCk7CiB9CiAKIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjppbml0aWFsaXplKCkKQEAgLTIzOSw2ICsyNTEsNyBAQCB2b2lkIFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRpbWVyRmlyZWQoKQogewogICAgIEFTU0VSVChS
dW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zdG9yYWdlVHlwZSAhPSBQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlJlYWRPbmx5KTsKICAgICBtX21lbW9yeVN0b3JlLnN0YXRp
c3RpY3NRdWV1ZSgpLmRpc3BhdGNoKFt0aGlzXSAoKSBtdXRhYmxlIHsKICAgICAgICAgd3JpdGVN
ZW1vcnlTdG9yZVRvRGlzaygpOwogICAgIH0pOwpAQCAtMjQ3LDYgKzI2MCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCkKIHsKICAgICBB
U1NFUlQoIVJ1bkxvb3A6OmlzTWFpbigpKTsKKyAgICBSRUxFQVNFX0FTU0VSVChtX3N0b3JhZ2VU
eXBlICE9IFBlcnNpc3RlbnRTdG9yYWdlVHlwZTo6UmVhZE9ubHkpOwogCiAgICAgbV9oYXNQZW5k
aW5nV3JpdGUgPSBmYWxzZTsKICAgICBzdG9wTW9uaXRvcmluZ0Rpc2soKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCShyZXZpc2lvbiAyMjY2MzkpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC00MSw4ICs0MSwxMyBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzU3RvcmU7CiAKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZSB7CiBwdWJsaWM6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFn
ZURpcmVjdG9yeVBhdGgpOwotICAgIH5SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UoKTsKKyAgICBlbnVtIGNsYXNzIFBlcnNpc3RlbnRTdG9yYWdlVHlwZSB7CisgICAgICAg
IFJlYWRPbmx5LAorICAgICAgICBSZWFkV3JpdGUsCisgICAgfTsKKyAgICB2aXJ0dWFsIH5SZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKKworICAgIHN0YXRpYyBSZWY8
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlPiBjcmVhdGUoV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0
aCk7CiAKICAgICB2b2lkIGluaXRpYWxpemUoKTsKICAgICB2b2lkIGNsZWFyKCk7CkBAIC01Niw3
ICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIE5vLAogICAgICAgICBZZXMsCiAgICAgfTsKLSAg
ICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKEZvcmNlSW1tZWRpYXRlV3JpdGUpOwor
ICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUltbWVkaWF0
ZVdyaXRlKTsKKworcHJvdGVjdGVkOgorICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBjb25zdCBTdHJpbmcm
IHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQZXJzaXN0ZW50U3RvcmFnZVR5cGUpOwogCiBwcml2YXRl
OgogICAgIFN0cmluZyBzdG9yYWdlRGlyZWN0b3J5UGF0aCgpIGNvbnN0OwpAQCAtNzgsNyArODYs
MjkgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RmlsZU1vbml0b3I+
IG1fZmlsZU1vbml0b3I7CiAgICAgV2FsbFRpbWUgbV9sYXN0U3RhdGlzdGljc0ZpbGVTeW5jVGlt
ZTsKICAgICBNb25vdG9uaWNUaW1lIG1fbGFzdFN0YXRpc3RpY3NXcml0ZVRpbWU7CisgICAgUGVy
c2lzdGVudFN0b3JhZ2VUeXBlIG1fc3RvcmFnZVR5cGUgeyBQZXJzaXN0ZW50U3RvcmFnZVR5cGU6
OlJlYWRXcml0ZSB9OwogICAgIGJvb2wgbV9oYXNQZW5kaW5nV3JpdGUgeyBmYWxzZSB9OwogfTsK
IAorY2xhc3MgUmVzb3VyY2VMb2FkU3RhdGlzdGljc011dGFibGVQZXJzaXN0ZW50U3RvcmFnZSA6
IHB1YmxpYyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgeworcHVibGlj
OgorICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NNdXRhYmxlUGVyc2lzdGVudFN0b3JhZ2UoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdl
RGlyZWN0b3J5UGF0aCkKKyAgICAgICAgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2Uoc3RvcmUsIHN0b3JhZ2VEaXJlY3RvcnlQYXRoLCBQZXJzaXN0ZW50U3RvcmFnZVR5
cGU6OlJlYWRXcml0ZSkKKyAgICB7CisgICAgfQorfTsKKworY2xhc3MgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1JlYWRPbmx5UGVyc2lzdGVudFN0b3JhZ2UgOiBwdWJsaWMgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIHsKK3B1YmxpYzoKKyAgICBSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUmVhZE9ubHlQZXJzaXN0ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUmIHN0b3JlLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKQorICAgICAg
ICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShzdG9yZSwgc3RvcmFn
ZURpcmVjdG9yeVBhdGgsIFBlcnNpc3RlbnRTdG9yYWdlVHlwZTo6UmVhZE9ubHkpCisgICAgewor
ICAgIH0KKworcHJpdmF0ZToKKyAgICB2b2lkIHNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKEZv
cmNlSW1tZWRpYXRlV3JpdGUpIG92ZXJyaWRlCisgICAgeworICAgIH0KK307CisKIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI2NjM5KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTE0OSw3ICsxNDksNyBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+IG1lcmdl
T3BlcmF0CiAKIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVj
dG9yeSwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIFVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciwgSGFz
U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIsIEdyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGdyYW50U3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlciwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1v
dmVEb21haW5zSGFuZGxlcikKICAgICA6IG1fc3RhdGlzdGljc1F1ZXVlKFdvcmtRdWV1ZTo6Y3Jl
YXRlKCJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUgUHJvY2VzcyBEYXRhIFF1ZXVlIiwg
V29ya1F1ZXVlOjpUeXBlOjpTZXJpYWwsIFdvcmtRdWV1ZTo6UU9TOjpVdGlsaXR5KSkKLSAgICAs
IG1fcGVyc2lzdGVudFN0b3JhZ2UoKnRoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3Rv
cnkpCisgICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZTo6Y3JlYXRlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0
b3J5KSkKICAgICAsIG1fdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nv
b2tpZXNIYW5kbGVyKFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JC
bG9ja0Nvb2tpZXNIYW5kbGVyKSkKICAgICAsIG1faGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlcihXVEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpKQogICAgICwgbV9n
cmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIpKQpAQCAtMTY0LDcgKzE2NCw3IEBAIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3UKICNlbmRpZgogCiAgICAgbV9zdGF0aXN0aWNzUXVldWUt
PmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIHsKLSAgICAg
ICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5pbml0aWFsaXplKCk7CisgICAgICAgIG1fcGVyc2lzdGVu
dFN0b3JhZ2UtPmluaXRpYWxpemUoKTsKICAgICAgICAgaW5jbHVkZVRvZGF5QXNPcGVyYXRpbmdE
YXRlSWZOZWNlc3NhcnkoKTsKICAgICB9KTsKIApAQCAtMTc4LDcgKzE3OCw3IEBAIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6V2ViUmVzb3UKIAogV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKCkKIHsKLSAgICBtX3Bl
cnNpc3RlbnRTdG9yYWdlLmZpbmlzaEFsbFBlbmRpbmdXb3JrU3luY2hyb25vdXNseSgpOworICAg
IG1fcGVyc2lzdGVudFN0b3JhZ2UtPmZpbmlzaEFsbFBlbmRpbmdXb3JrU3luY2hyb25vdXNseSgp
OwogfQogICAgIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnJlbW92ZURh
dGFSZWNvcmRzKCkKQEAgLTI0MSw3ICsyNDEsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZTo6cHJvCiAgICAgICAgIH0pOwogICAgIH0KIAotICAgIG1fcGVyc2lzdGVudFN0
b3JhZ2Uuc2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpObyk7CisgICAgbV9wZXJzaXN0
ZW50U3RvcmFnZS0+c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpGb3JjZUltbWVkaWF0ZVdyaXRlOjpObyk7CiB9CiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZXNvdXJjZUxvYWRTdGF0aXN0aWNz
VXBkYXRlZChWZWN0b3I8V2ViQ29yZTo6UmVzb3VyY2VMb2FkU3RhdGlzdGljcz4mJiBvcmlnaW5z
KQpAQCAtMzE5LDcgKzMxOSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
OjpncmEKICAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljLmdyYW5kZmF0aGVyZWQgPSB0cnVl
OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX2VuZE9mR3JhbmRmYXRoZXJp
bmdUaW1lc3RhbXAgPSBXYWxsVGltZTo6bm93KCkgKyBtX3BhcmFtZXRlcnMuZ3JhbmRmYXRoZXJp
bmdUaW1lOwotICAgICAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2Uuc2NoZWR1bGVPcldy
aXRlTWVtb3J5U3RvcmUoUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpG
b3JjZUltbWVkaWF0ZVdyaXRlOjpZZXMpOworICAgICAgICAgICAgICAgIG1fcGVyc2lzdGVudFN0
b3JhZ2UtPnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6WWVzKTsKICAgICAgICAgICAg
IH0pOwogCiAgICAgICAgICAgICBsb2dUZXN0aW5nRXZlbnQoQVNDSUlMaXRlcmFsKCJHcmFuZGZh
dGhlcmVkIikpOwpAQCAtMzM5LDcgKzMzOSw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpwcm8KIAogdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmFw
cGxpY2F0aW9uV2lsbFRlcm1pbmF0ZSgpCiB7Ci0gICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5maW5p
c2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkoKTsKKyAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
LT5maW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkoKTsKIH0KIAogdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBlcmZvcm1EYWlseVRhc2tzKCkKQEAgLTU5OCw3ICs1
OTgsNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoCiAgICAgQVNT
RVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKICAgICBtX3N0YXRpc3RpY3NRdWV1ZS0+ZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2hvdWxkR3JhbmRmYXRoZXJd
IHsKICAgICAgICAgY2xlYXJJbk1lbW9yeSgpOwotICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
LmNsZWFyKCk7CisgICAgICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UtPmNsZWFyKCk7CiAgICAgICAg
IAogICAgICAgICBpZiAoc2hvdWxkR3JhbmRmYXRoZXIgPT0gU2hvdWxkR3JhbmRmYXRoZXI6Olll
cykKICAgICAgICAgICAgIGdyYW5kZmF0aGVyRXhpc3RpbmdXZWJzaXRlRGF0YSgpOwpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgJKHJldmlzaW9uIDIyNjYzOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNi0yMDE4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAt
MTkyLDcgKzE5Miw3IEBAIHByaXZhdGU6CiAgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc0NsYXNz
aWZpZXIgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzQ2xhc3NpZmllcjsKICNlbmRpZgogICAgIFJl
ZjxXVEY6OldvcmtRdWV1ZT4gbV9zdGF0aXN0aWNzUXVldWU7Ci0gICAgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIG1fcGVyc2lzdGVudFN0b3JhZ2U7CisgICAgUmVmPFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gbV9wZXJzaXN0ZW50U3RvcmFn
ZTsKICAgICBWZWN0b3I8T3BlcmF0aW5nRGF0ZT4gbV9vcGVyYXRpbmdEYXRlczsKIAogICAgIFVw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciBtX3Vw
ZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330998</attachid>
            <date>2018-01-10 17:39:27 -0800</date>
            <delta_ts>2018-01-11 16:46:49 -0800</delta_ts>
            <desc>Patch with tests</desc>
            <filename>bug-181136-20180110173926.patch</filename>
            <type>text/plain</type>
            <size>19713</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY3NDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ3IEBACisyMDE4LTAxLTEwICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgbm90IGJlIHVz
ZWQgaW4gZXBoZW1lcmFsIHNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODExMzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTE2NjA0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNvbWUg
dXNlcyBvZiBXZWJLaXQgaW52b2x2ZSBydW5uaW5nIGEgVUlQcm9jZXNzIGFzIGFuIGVwaGVtZXJh
bCBzZXNzaW9uIGZvciB0aGUgbGlmZSBvZiB0aGUgcHJvY2Vzcy4gSW4gdGhpcworICAgICAgICBj
YXNlLCB3ZSBkbyBub3QgaW5pdGlhbGl6ZSB0aGUgZGF0YSBwYXRoIGZvciB0aGUgc2V0IG9mIGxv
YWQgc3RhdGlzdGljcyB0cmlnZ2VyaW5nIGFuIGFzc2VydGlvbi4KKworICAgICAgICBXZSBhY3R1
YWxseSBpbnRlbmRlZCBlcGhlbWVyYWwgc2Vzc2lvbnMgdG8gY29uc3VtZSB0aGUgZXhpc3Rpbmcg
cmVzb3VyY2UgbG9hZCBkYXRhIChwcmVzdW1hYmx5IGNhcHR1cmVkIGR1cmluZworICAgICAgICBu
b24tZXBoZW1lcmFsIGJyb3dzaW5nKS4gVGhpcyB3b3VsZCBiZSBhIHJlYWQtb25seSBtb2RlLCB3
aGVyZSBpdCB3b3VsZCBub3QgYWRkIG5ldyBlbnRyaWVzIHRvIHRoZSBsb2FkCisgICAgICAgIHN0
YXRpc3RpY3MsIGJ1dCB3b3VsZCB0YWtlIGFkdmFudGFnZSBvZiBleGlzdGluZyBvYnNlcnZhdGlv
bnMuIEN1cnJlbnRseSB0aGF0IGRvZXMgbm90IGhhcHBlbiAoZm9yIHRoaXMgdHlwZQorICAgICAg
ICBvZiBXZWJLaXQgZW1iZWQpLCB3aGljaCBmb3JjZXMgZWFjaCBydW4gYXMgYW4gZXBoZW1lcmFs
IHNlc3Npb24gdG8gYnVpbGQgdXAgaW4tbWVtb3J5IGJyb3dzaW5nIGRhdGEgdW50aWwgaXQgaGFz
CisgICAgICAgIGVub3VnaCBvYnNlcnZhdGlvbnMgdG8gYmVnaW4gbW9kaWZ5aW5nIGxvYWRzLgor
CisgICAgICAgIFdlIG5lZWQgdG8gc2V0IHRoZSBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2Ugb2JqZWN0IHRvIGEgInJlYWQgb25seSIgbW9kZSBpbiB0aGlzIGNhc2UsIHNv
CisgICAgICAgIHRoYXQgaXQgcmVhZCAoYnV0IGRvZXMgbm90IHdyaXRlKSBmcm9tIHRoaXMgZGF0
YWJhc2UuCisKKyAgICAgICAgVGVzdGVkIGJ5IGVwaGVtZXJhbCB3ZWJzaXRlIGRhdGEgVGVzdFdl
YktpdEFQSSB0ZXN0cy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmNyZWF0ZSk6IEFkZGVkIHRvIGFsbG93IGNyZWF0
aW9uIG9mIHRoZSByaWdodCBzdHlsZSBvZgorICAgICAgICBQZXJzaXN0ZW50IFN0b3JhZ2UuCisg
ICAgICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKTogU3RvcCB0aGUgYXN5bmMK
KyAgICAgICAgd3JpdGUgdGltZXIgaWYgd2UgYXJlIG5ldmVyIGdvaW5nIHRvIGRvIGFueSB3cml0
ZSBvcGVyYXRpb25zLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVkKTogUkVMRUFTRV9BU1NFUlQgdGhh
dCB3ZSBuZXZlciBydW4KKyAgICAgICAgdGhpcyBtZXRob2Qgd2hlbiBpbiAicmVhZCBvbmx5IiBt
b2RlLgorICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2spOiBEaXR0by4KKyAgICAgICAgKiBVSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmg6CisgICAgICAgIChX
ZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NNdXRhYmxlUGVyc2lzdGVudFN0b3JhZ2U6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NNdXRhYmxlUGVyc2lzdGVudFN0b3JhZ2UpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1JlYWRPbmx5UGVyc2lzdGVudFN0
b3JhZ2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NSZWFkT25seVBlcnNpc3RlbnRTdG9yYWdlKTog
QWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKTogVXNlIHRoZSBuZXcgY3JlYXRlIG1ldGhv
ZCBmb3IgdGhlCisgICAgICAgIFJlc291cmNlTG9hZFN0YWlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
IG9iamVjdC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3Jl
Ojp+V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKTogVXBkYXRlIGZvciBtX3BlcnNpc3Rl
bnRTdG9yYWdlIGJlaW5nCisgICAgICAgIGEgUmVmPD4gcmF0aGVyIHRoYW4gYSBiYXJlIG9iamVj
dC4KKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpwcm9j
ZXNzU3RhdGlzdGljc0FuZERhdGFSZWNvcmRzKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6Oldl
YlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhbmRmYXRoZXJFeGlzdGluZ1dlYnNpdGVE
YXRhKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZTo6YXBwbGljYXRpb25XaWxsVGVybWluYXRlKTogRGl0dG8uCisgICAgICAgIChXZWJLaXQ6
OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5k
UGVyc2lzdGVudCk6IERpdHRvLgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFt
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgcHJvdGVjdGVkVGhpcyBmb3IgdGhlICd1cGRhdGVQ
cmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcycgbGFtYmRhCkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAJKHJldmlzaW9uIDIyNjc0MikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5o
IgogCisjaW5jbHVkZSAiQVBJV2Vic2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcu
aCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRl
IDxXZWJDb3JlL0ZpbGVNb25pdG9yLmg+CkBAIC04MiwxMyArODMsMjcgQEAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZQogICAgIHJldHVybiBLZXllZERlY29kZXI6OmRl
Y29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1
ZmZlci5zaXplKCkpOwogfQogCi1SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoKQorUmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjcmVhdGUoV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0
aCkKK3sKKyAgICBpZiAoc3RvcmFnZURpcmVjdG9yeVBhdGguaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUmVhZE9ubHlQZXJzaXN0
ZW50U3RvcmFnZShzdG9yZSwgQVBJOjpXZWJzaXRlRGF0YVN0b3JlOjpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSgpKSk7CisKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzTXV0YWJsZVBlcnNpc3RlbnRTdG9yYWdlKHN0b3JlLCBzdG9y
YWdlRGlyZWN0b3J5UGF0aCkpOworfQorCitSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJl
Y3RvcnlQYXRoLCBQZXJzaXN0ZW50U3RvcmFnZVR5cGUgc3RvcmFnZVR5cGUpCiAgICAgOiBtX21l
bW9yeVN0b3JlKHN0b3JlKQogICAgICwgbV9zdG9yYWdlRGlyZWN0b3J5UGF0aChzdG9yYWdlRGly
ZWN0b3J5UGF0aCkKICAgICAsIG1fYXN5bmNXcml0ZVRpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRp
bWVyRmlyZWQpCisgICAgLCBtX3N0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlKQogewogfQogCit2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c3RvcEFzeW5jV3JpdGVU
aW1lcigpCit7CisgICAgbV9hc3luY1dyaXRlVGltZXIuc3RvcCgpOworfQorCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6aW5pdGlhbGl6ZSgpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CkBAIC0yMzksNiArMjU0LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0bwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVkKCkKIHsKICAgICBBU1NF
UlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1fc3RvcmFnZVR5cGUg
IT0gUGVyc2lzdGVudFN0b3JhZ2VUeXBlOjpSZWFkT25seSk7CiAgICAgbV9tZW1vcnlTdG9yZS5z
dGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIHdy
aXRlTWVtb3J5U3RvcmVUb0Rpc2soKTsKICAgICB9KTsKQEAgLTI0Nyw2ICsyNjMsNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9zdG9y
YWdlVHlwZSAhPSBQZXJzaXN0ZW50U3RvcmFnZVR5cGU6OlJlYWRPbmx5KTsKIAogICAgIG1faGFz
UGVuZGluZ1dyaXRlID0gZmFsc2U7CiAgICAgc3RvcE1vbml0b3JpbmdEaXNrKCk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0
b3JhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAkocmV2aXNpb24gMjI2NzQyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtNDEsOCArNDEsMTMgQEAgY2xhc3MgV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVu
dFN0b3JhZ2UgewogcHVibGljOgotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmLCBjb25zdCBTdHJpbmcmIHN0
b3JhZ2VEaXJlY3RvcnlQYXRoKTsKLSAgICB+UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlKCk7CisgICAgZW51bSBjbGFzcyBQZXJzaXN0ZW50U3RvcmFnZVR5cGUgeworICAg
ICAgICBSZWFkT25seSwKKyAgICAgICAgUmVhZFdyaXRlLAorICAgIH07CisgICAgdmlydHVhbCB+
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKCk7CisKKyAgICBzdGF0aWMg
UmVmPFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZT4gY3JlYXRlKFdlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9y
eVBhdGgpOwogCiAgICAgdm9pZCBpbml0aWFsaXplKCk7CiAgICAgdm9pZCBjbGVhcigpOwpAQCAt
NTYsNyArNjEsMTMgQEAgcHVibGljOgogICAgICAgICBObywKICAgICAgICAgWWVzLAogICAgIH07
Ci0gICAgdm9pZCBzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUltbWVkaWF0ZVdyaXRl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoRm9yY2VJbW1l
ZGlhdGVXcml0ZSk7CisKK3Byb3RlY3RlZDoKKyAgICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiwgY29uc3QgU3Ry
aW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgUGVyc2lzdGVudFN0b3JhZ2VUeXBlKTsKKworICAg
IHZpcnR1YWwgdm9pZCB3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCk7CisgICAgdm9pZCBzdG9wQXN5
bmNXcml0ZVRpbWVyKCk7CiAKIHByaXZhdGU6CiAgICAgU3RyaW5nIHN0b3JhZ2VEaXJlY3RvcnlQ
YXRoKCkgY29uc3Q7CkBAIC02Niw3ICs3Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzdG9wTW9u
aXRvcmluZ0Rpc2soKTsKICAgICB2b2lkIG1vbml0b3JEaXJlY3RvcnlGb3JOZXdTdGF0aXN0aWNz
KCk7CiAKLSAgICB2b2lkIHdyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKTsKICAgICB2b2lkIHBvcHVs
YXRlTWVtb3J5U3RvcmVGcm9tRGlzaygpOwogICAgIHZvaWQgZXhjbHVkZUZyb21CYWNrdXAoKSBj
b25zdDsKICAgICB2b2lkIHJlZnJlc2hNZW1vcnlTdG9yZUZyb21EaXNrKCk7CkBAIC03OCw3ICs4
OCwzNCBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpGaWxlTW9uaXRv
cj4gbV9maWxlTW9uaXRvcjsKICAgICBXYWxsVGltZSBtX2xhc3RTdGF0aXN0aWNzRmlsZVN5bmNU
aW1lOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0U3RhdGlzdGljc1dyaXRlVGltZTsKKyAgICBQ
ZXJzaXN0ZW50U3RvcmFnZVR5cGUgbV9zdG9yYWdlVHlwZSB7IFBlcnNpc3RlbnRTdG9yYWdlVHlw
ZTo6UmVhZFdyaXRlIH07CiAgICAgYm9vbCBtX2hhc1BlbmRpbmdXcml0ZSB7IGZhbHNlIH07CiB9
OwogCitjbGFzcyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzTXV0YWJsZVBlcnNpc3RlbnRTdG9yYWdl
IDogcHVibGljIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSB7CitwdWJs
aWM6CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc011dGFibGVQZXJzaXN0ZW50U3RvcmFnZShX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25zdCBTdHJpbmcmIHN0b3Jh
Z2VEaXJlY3RvcnlQYXRoKQorICAgICAgICA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZShzdG9yZSwgc3RvcmFnZURpcmVjdG9yeVBhdGgsIFBlcnNpc3RlbnRTdG9yYWdl
VHlwZTo6UmVhZFdyaXRlKQorICAgIHsKKyAgICB9Cit9OworCitjbGFzcyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUmVhZE9ubHlQZXJzaXN0ZW50U3RvcmFnZSA6IHB1YmxpYyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgeworcHVibGljOgorICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NSZWFkT25seVBlcnNpc3RlbnRTdG9yYWdlKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSYgc3RvcmUsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgpCisgICAg
ICAgIDogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKHN0b3JlLCBzdG9y
YWdlRGlyZWN0b3J5UGF0aCwgUGVyc2lzdGVudFN0b3JhZ2VUeXBlOjpSZWFkT25seSkKKyAgICB7
CisgICAgICAgIHN0b3BBc3luY1dyaXRlVGltZXIoKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
dm9pZCBzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUltbWVkaWF0ZVdyaXRlKSBvdmVy
cmlkZQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIHdyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKSBv
dmVycmlkZQorICAgIHsKKyAgICB9Cit9OworCiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJ
KHJldmlzaW9uIDIyNjc0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDksNyArMTQ5LDcg
QEAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZU9wZXJhdAogCiBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIs
IFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCiAg
ICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2Vy
aWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCi0gICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdl
KCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KQorICAgICwgbV9wZXJzaXN0
ZW50U3RvcmFnZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmNyZWF0
ZSgqdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkpCiAgICAgLCBtX3VwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihXVEZNb3Zl
KHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcikp
CiAgICAgLCBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShoYXNTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkKICAgICAsIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyKFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkK
QEAgLTE2NCw3ICsxNjQsNyBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJl
c291CiAjZW5kaWYKIAogICAgIG1fc3RhdGlzdGljc1F1ZXVlLT5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSB7Ci0gICAgICAgIG1fcGVyc2lzdGVudFN0b3Jh
Z2UuaW5pdGlhbGl6ZSgpOworICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLT5pbml0aWFsaXpl
KCk7CiAgICAgICAgIGluY2x1ZGVUb2RheUFzT3BlcmF0aW5nRGF0ZUlmTmVjZXNzYXJ5KCk7CiAg
ICAgfSk7CiAKQEAgLTE3OCw3ICsxNzgsNyBAQCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3Rv
cmU6OldlYlJlc291CiAKIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6fldlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpCiB7Ci0gICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5maW5p
c2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkoKTsKKyAgICBtX3BlcnNpc3RlbnRTdG9yYWdl
LT5maW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkoKTsKIH0KICAgICAKIHZvaWQgV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpyZW1vdmVEYXRhUmVjb3JkcygpCkBAIC0yNDEs
NyArMjQxLDcgQEAgdm9pZCBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnBybwogICAg
ICAgICB9KTsKICAgICB9CiAKLSAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLnNjaGVkdWxlT3JXcml0
ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Rm9y
Y2VJbW1lZGlhdGVXcml0ZTo6Tm8pOworICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UtPnNjaGVkdWxl
T3JXcml0ZU1lbW9yeVN0b3JlKFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6Tm8pOwogfQogCiB2b2lkIFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZTo6cmVzb3VyY2VMb2FkU3RhdGlzdGljc1VwZGF0ZWQoVmVjdG9yPFdlYkNv
cmU6OlJlc291cmNlTG9hZFN0YXRpc3RpY3M+JiYgb3JpZ2lucykKQEAgLTMxOSw3ICszMTksNyBA
QCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Z3JhCiAgICAgICAgICAgICAg
ICAgICAgIHN0YXRpc3RpYy5ncmFuZGZhdGhlcmVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgbV9lbmRPZkdyYW5kZmF0aGVyaW5nVGltZXN0YW1wID0gV2FsbFRp
bWU6Om5vdygpICsgbV9wYXJhbWV0ZXJzLmdyYW5kZmF0aGVyaW5nVGltZTsKLSAgICAgICAgICAg
ICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLnNjaGVkdWxlT3JXcml0ZU1lbW9yeVN0b3JlKFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6Rm9yY2VJbW1lZGlhdGVXcml0ZTo6
WWVzKTsKKyAgICAgICAgICAgICAgICBtX3BlcnNpc3RlbnRTdG9yYWdlLT5zY2hlZHVsZU9yV3Jp
dGVNZW1vcnlTdG9yZShSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OkZv
cmNlSW1tZWRpYXRlV3JpdGU6Olllcyk7CiAgICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAg
bG9nVGVzdGluZ0V2ZW50KEFTQ0lJTGl0ZXJhbCgiR3JhbmRmYXRoZXJlZCIpKTsKQEAgLTMzOSw3
ICszMzksNyBAQCB2b2lkIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6cHJvCiAKIHZv
aWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjphcHBsaWNhdGlvbldpbGxUZXJtaW5h
dGUoKQogewotICAgIG1fcGVyc2lzdGVudFN0b3JhZ2UuZmluaXNoQWxsUGVuZGluZ1dvcmtTeW5j
aHJvbm91c2x5KCk7CisgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS0+ZmluaXNoQWxsUGVuZGluZ1dv
cmtTeW5jaHJvbm91c2x5KCk7CiB9CiAKIHZvaWQgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlOjpwZXJmb3JtRGFpbHlUYXNrcygpCkBAIC01OTgsNyArNTk4LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OnNjaAogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4o
KSk7CiAgICAgbV9zdGF0aXN0aWNzUXVldWUtPmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIHNob3VsZEdyYW5kZmF0aGVyXSB7CiAgICAgICAgIGNsZWFySW5N
ZW1vcnkoKTsKLSAgICAgICAgbV9wZXJzaXN0ZW50U3RvcmFnZS5jbGVhcigpOworICAgICAgICBt
X3BlcnNpc3RlbnRTdG9yYWdlLT5jbGVhcigpOwogICAgICAgICAKICAgICAgICAgaWYgKHNob3Vs
ZEdyYW5kZmF0aGVyID09IFNob3VsZEdyYW5kZmF0aGVyOjpZZXMpCiAgICAgICAgICAgICBncmFu
ZGZhdGhlckV4aXN0aW5nV2Vic2l0ZURhdGEoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCShyZXZp
c2lvbiAyMjY3NDIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE5Miw3ICsxOTIsNyBAQCBwcml2
YXRlOgogICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NDbGFzc2lmaWVyIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0NsYXNzaWZpZXI7CiAjZW5kaWYKICAgICBSZWY8V1RGOjpXb3JrUXVldWU+IG1f
c3RhdGlzdGljc1F1ZXVlOwotICAgIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3Rv
cmFnZSBtX3BlcnNpc3RlbnRTdG9yYWdlOworICAgIFJlZjxSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2U+IG1fcGVyc2lzdGVudFN0b3JhZ2U7CiAgICAgVmVjdG9yPE9wZXJh
dGluZ0RhdGU+IG1fb3BlcmF0aW5nRGF0ZXM7CiAKICAgICBVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgbV91cGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXI7CkluZGV4OiBUb29scy9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY3NDUpCisrKyBUb29s
cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMS0xMCAg
QnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyMTk1MzApOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Ugc2hvdWxk
IG5vdCBiZSB1c2VkIGluIGVwaGVtZXJhbCBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8zNjExNjYwND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgYSBuZXcgQVBJIHRlc3QgdG8gY29uZmlybSB0aGF0IFJlc291cmNlTG9hZFN0YXRp
c3RpY3MgY2FuIGJlIHR1cm5lZCBvbiBzYWZlbHkgZm9yIGVwaGVtZXJhbAorICAgICAgICBicm93
c2luZyBzZXNzaW9ucy4KKworICAgICAgICogU2NyaXB0cy9ydW4tZ3RrLXRlc3RzOgorICAgICAg
IChHdGtUZXN0UnVubmVyKTogVW5za2lwIHRlc3Qgbm93IHRoYXQgaXQgcGFzc2VzLgorICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW06CisgICAgICAgKFRFU1QpOiBBZGQgbmV3IFdlYnNpdGVEYXRhU3RvcmVFcGhlbWVy
YWwgdGVzdC4KKwogMjAxOC0wMS0xMCAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5j
b20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIyNjcxNSk6IGlnbm9yZSBXQVJOSU5HIG91dHB1
dCBpbiBsaW50ZXIgdGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMJKHJldmlzaW9uIDIyNjc0MikK
KysrIFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNiBAQCBjbGFzcyBHdGtUZXN0UnVubmVyKFRlc3RSdW5uZXIpOgogICAgICAgICBTa2lwcGVk
VGVzdCgiV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvciIsICIvd2Via2l0Mi9XZWJLaXRXZWJW
aWV3L2VkaXRhYmxlL2VkaXRhYmxlIiwgIlRlc3QgaGl0cyBhbiBhc3NlcnRpb24gaW4gRGVidWcg
YnVpbGRzIiwgMTUxNjU0LCAiRGVidWciKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJH
dGsvVGVzdFdlYkV4dGVuc2lvbnMiLCAiL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9pbnN0YWxsLW1p
c3NpbmctcGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVlc3QiLCAiVGVzdCB0aW1lcyBvdXQiLCAxNDc4
MjIpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0V2Vic2l0ZURhdGEiLCAi
L3dlYmtpdDIvV2ViS2l0V2Vic2l0ZURhdGEvZGF0YWJhc2VzIiwgIlRlc3QgZmFpbHMgdG8gY2xl
YXIgZGF0YWJhc2UgZGF0YSIsIDE4MTI1MSksCi0gICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQy
R3RrL1Rlc3RXZWJzaXRlRGF0YSIsICIvd2Via2l0Mi9XZWJLaXRXZWJzaXRlRGF0YS9lcGhlbWVy
YWwiLCAiVGVzdCBoaXRzIGFuIGFzc2VydGlvbiBpbiBEZWJ1ZyBidWlsZHMiLCAxODExMzYsICJE
ZWJ1ZyIpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQiLCAiV2ViS2l0
Lk1vdXNlTW92ZUFmdGVyQ3Jhc2giLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKICAgICAgICAg
U2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMiLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKICAgICAg
ICAgU2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMiLCAiVGVzdCBmYWlscyIsIDg1MDM3KSwKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCShyZXZpc2lvbiAyMjY3NDIpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDQgKzIxOSw0NiBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzCiAgICAgRVhQRUNUX0ZBTFNFKFtXS1dl
YnNpdGVEYXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKTsKIH0KIAorVEVTVChXZWJL
aXQsIFdlYnNpdGVEYXRhU3RvcmVFcGhlbWVyYWwpCit7CisgICAgUmV0YWluUHRyPFdlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBOU1VSTCAqZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xp
YnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisK
KyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGggZXJyb3I6bmlsXTsKKworICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKworICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lz
dGVudERhdGFTdG9yZV07CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9y
ZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKworICAgIC8vIFdlIGV4
cGVjdCB0aGUgZGlyZWN0b3J5IHRvIGJlIGNyZWF0ZWQgYnkgc3RhcnRpbmcgdXAgdGhlIGRhdGEg
c3RvcmUgbWFjaGluZXJ5LCBidXQgbm90IHRoZSBkYXRhIGZpbGUuCisgICAgRVhQRUNUX1RSVUUo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7CisKKyAgICBOU1VSTCAqZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaWxlUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Ai
fi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0IiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107CisgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpbGVQYXRoLnBhdGhdKTsKKworICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CisKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29s
XSBfc3luY05ldHdvcmtQcm9jZXNzQ29va2llc107CisKKyAgICAvLyBGb3JjaWJseSBzaHV0IGRv
d24gZXZlcnl0aGluZyBvZiBXZWJLaXQgdGhhdCB3ZSBjYW4uCisgICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzXTsKKyAgICBh
dXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgaWYgKHBpZCkK
KyAgICAgICAga2lsbChwaWQsIFNJR0tJTEwpOworCisgICAgd2ViVmlldyA9IG5pbDsKKyAgICBo
YW5kbGVyID0gbmlsOworICAgIGNvbmZpZ3VyYXRpb24gPSBuaWw7CisKKyAgICBFWFBFQ1RfVFJV
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlsZVBhdGgucGF0aF0pOworfQorCiAjZW5kaWYK
</data>
<flag name="review"
          id="350011"
          type_id="1"
          status="-"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331140</attachid>
            <date>2018-01-11 16:46:49 -0800</date>
            <delta_ts>2018-01-11 16:57:18 -0800</delta_ts>
            <desc>Revised with Chris&apos;s comments.</desc>
            <filename>bug181136.patch</filename>
            <type>text/plain</type>
            <size>20675</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY3NDIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTEwICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgYmUgcmVhZC1v
bmx5IGluIGVwaGVtZXJhbCBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjExNjYw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHVzZXMgb2YgV2ViS2l0IGludm9sdmUgcnVubmluZyBhIFVJUHJvY2VzcyBhcyBhbiBlcGhlbWVy
YWwgc2Vzc2lvbiBmb3IgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3MuIEluIHRoaXMKKyAgICAgICAg
Y2FzZSwgd2UgZG8gbm90IGluaXRpYWxpemUgdGhlIGRhdGEgcGF0aCBmb3IgdGhlIHNldCBvZiBs
b2FkIHN0YXRpc3RpY3MgdHJpZ2dlcmluZyBhbiBhc3NlcnRpb24uCisKKyAgICAgICAgV2UgYWN0
dWFsbHkgaW50ZW5kZWQgZXBoZW1lcmFsIHNlc3Npb25zIHRvIGNvbnN1bWUgdGhlIGV4aXN0aW5n
IHJlc291cmNlIGxvYWQgZGF0YSAocHJlc3VtYWJseSBjYXB0dXJlZCBkdXJpbmcKKyAgICAgICAg
bm9uLWVwaGVtZXJhbCBicm93c2luZykuIFRoaXMgd291bGQgYmUgYSByZWFkLW9ubHkgbW9kZSwg
d2hlcmUgaXQgd291bGQgbm90IGFkZCBuZXcgZW50cmllcyB0byB0aGUgbG9hZAorICAgICAgICBz
dGF0aXN0aWNzLCBidXQgd291bGQgdGFrZSBhZHZhbnRhZ2Ugb2YgZXhpc3Rpbmcgb2JzZXJ2YXRp
b25zLiBDdXJyZW50bHkgdGhhdCBkb2VzIG5vdCBoYXBwZW4gKGZvciB0aGlzIHR5cGUKKyAgICAg
ICAgb2YgV2ViS2l0IGVtYmVkKSwgd2hpY2ggZm9yY2VzIGVhY2ggcnVuIGFzIGFuIGVwaGVtZXJh
bCBzZXNzaW9uIHRvIGJ1aWxkIHVwIGluLW1lbW9yeSBicm93c2luZyBkYXRhIHVudGlsIGl0IGhh
cworICAgICAgICBlbm91Z2ggb2JzZXJ2YXRpb25zIHRvIGJlZ2luIG1vZGlmeWluZyBsb2Fkcy4K
KworICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlIG9iamVjdCB0byBhICJyZWFkIG9ubHkiIG1vZGUgaW4gdGhpcyBjYXNlLCBz
bworICAgICAgICB0aGF0IGl0IHJlYWQgKGJ1dCBkb2VzIG5vdCB3cml0ZSkgZnJvbSB0aGlzIGRh
dGFiYXNlLgorCisgICAgICAgIFRlc3RlZCBieSBlcGhlbWVyYWwgd2Vic2l0ZSBkYXRhIFRlc3RX
ZWJLaXRBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjcmVhdGUpOiBBZGRlZCB0byBhbGxvdyBjcmVh
dGlvbiBvZiB0aGUgcmlnaHQgc3R5bGUgb2YKKyAgICAgICAgUGVyc2lzdGVudCBTdG9yYWdlLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSk6IEluaXRpYWxpemUgdGhl
CisgICAgICAgIG5ldyBkYXRhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCk6IFJFTEVB
U0VfQVNTRVJUIHRoYXQgd2UgbmV2ZXIgcnVuCisgICAgICAgIHRoaXMgbWV0aG9kIHdoZW4gaW4g
InJlYWQgb25seSIgbW9kZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c2No
ZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUpOiBSZXR1cm4gZWFybHkgaWYgYXNrZWQgdG8KKyAgICAg
ICAgc2NoZWR1bGUgYSB3cml0ZSBvcGVyYXRpb24gZm9yIGEgInJlYWQgb25seSIgcGVyc2lzdGVu
dCBzdG9yZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkpOiBSRUxFQVNFX0FT
U0VSVCBpZiB3ZQorICAgICAgICBldmVyIHNodXQgZG93biBpbiAicmVhZCBvbmx5IiBtb2RlIHdp
dGggYW4gYWN0aXZlIHdyaXRlIHRpbWVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OiBQYXNzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCisgICAgICAgIHN0b3JhZ2Ugc2Vz
c2lvbiBpcyBlcGhlbWVyYWwgb3Igbm90LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0xMCAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgcHJvdGVjdGVkVGhpcyBmb3IgdGhlICd1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llcycgbGFtYmRhCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAJKHJldmlzaW9uIDIyNjc0
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODIsMTAgKzgyLDExIEBAIHN0YXRpYyBz
dGQ6OnVuaXF1ZV9wdHI8S2V5ZWREZWNvZGVyPiBjcmUKICAgICByZXR1cm4gS2V5ZWREZWNvZGVy
OjpkZWNvZGVyKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGJ1ZmZlci5kYXRhKCkp
LCBidWZmZXIuc2l6ZSgpKTsKIH0KIAotUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0
b3J5UGF0aCkKK1Jlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFdlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZSYgc3RvcmUsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgsIElzUmVh
ZE9ubHkgaXNSZWFkT25seSkKICAgICA6IG1fbWVtb3J5U3RvcmUoc3RvcmUpCiAgICAgLCBtX3N0
b3JhZ2VEaXJlY3RvcnlQYXRoKHN0b3JhZ2VEaXJlY3RvcnlQYXRoKQogICAgICwgbV9hc3luY1dy
aXRlVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCkKKyAgICAsIG1faXNSZWFkT25s
eShpc1JlYWRPbmx5KQogewogfQogCkBAIC0yMzksNiArMjQwLDcgQEAgdm9pZCBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0bwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVkKCkKIHsKICAgICBBU1NFUlQoUnVu
TG9vcDo6aXNNYWluKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNSZWFkT25seSAhPSBJc1Jl
YWRPbmx5OjpZZXMpOwogICAgIG1fbWVtb3J5U3RvcmUuc3RhdGlzdGljc1F1ZXVlKCkuZGlzcGF0
Y2goW3RoaXNdICgpIG11dGFibGUgewogICAgICAgICB3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKCk7
CiAgICAgfSk7CkBAIC0yNDcsNiArMjQ5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0bwogdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3Jh
Z2U6OndyaXRlTWVtb3J5U3RvcmVUb0Rpc2soKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG1faXNSZWFkT25seSAhPSBJc1JlYWRPbmx5OjpZ
ZXMpOwogCiAgICAgbV9oYXNQZW5kaW5nV3JpdGUgPSBmYWxzZTsKICAgICBzdG9wTW9uaXRvcmlu
Z0Rpc2soKTsKQEAgLTI4MSw2ICsyODQsOCBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFn
ZTo6c2NoZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUoRm9yY2VJbW1lZGlhdGVXcml0ZSBmb3JjZUlt
bWVkaWF0ZVdyaXRlKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNNYWluKCkpOworICAgIGlm
IChtX2lzUmVhZE9ubHkgPT0gSXNSZWFkT25seTo6WWVzKQorICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIHRpbWVTaW5jZUxhc3RXcml0ZSA9IE1vbm90b25pY1RpbWU6Om5vdygpIC0gbV9sYXN0
U3RhdGlzdGljc1dyaXRlVGltZTsKICAgICBpZiAoZm9yY2VJbW1lZGlhdGVXcml0ZSAhPSBGb3Jj
ZUltbWVkaWF0ZVdyaXRlOjpZZXMgJiYgdGltZVNpbmNlTGFzdFdyaXRlIDwgbWluaW11bVdyaXRl
SW50ZXJ2YWwpIHsKQEAgLTMxMiw2ICszMTcsMTEgQEAgdm9pZCBSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzUGVyc2lzdGVudFN0bwogCiB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50
U3RvcmFnZTo6ZmluaXNoQWxsUGVuZGluZ1dvcmtTeW5jaHJvbm91c2x5KCkKIHsKKyAgICBpZiAo
bV9pc1JlYWRPbmx5ID09IElzUmVhZE9ubHk6OlllcykgeworICAgICAgICBSRUxFQVNFX0FTU0VS
VCghbV9hc3luY1dyaXRlVGltZXIuaXNBY3RpdmUoKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBtX2FzeW5jV3JpdGVUaW1lci5zdG9wKCk7CiAKICAgICBCaW5hcnlTZW1hcGhvcmUg
c2VtYXBob3JlOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgJKHJldmlz
aW9uIDIyNjc0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQxLDcgKzQxLDggQEAgY2xh
c3MgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOwogCiBjbGFzcyBSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UgewogcHVibGljOgotICAgIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUm
LCBjb25zdCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKTsKKyAgICBlbnVtIGNsYXNzIElz
UmVhZE9ubHkgeyBObywgWWVzIH07CisgICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlKFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYg
c3RvcmFnZURpcmVjdG9yeVBhdGgsIElzUmVhZE9ubHkpOwogICAgIH5SZXNvdXJjZUxvYWRTdGF0
aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZSgpOwpAQCAt
NzgsNiArNzksNyBAQCBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpGaWxl
TW9uaXRvcj4gbV9maWxlTW9uaXRvcjsKICAgICBXYWxsVGltZSBtX2xhc3RTdGF0aXN0aWNzRmls
ZVN5bmNUaW1lOwogICAgIE1vbm90b25pY1RpbWUgbV9sYXN0U3RhdGlzdGljc1dyaXRlVGltZTsK
KyAgICBJc1JlYWRPbmx5IG1faXNSZWFkT25seSB7IElzUmVhZE9ubHk6Ok5vIH07CiAgICAgYm9v
bCBtX2hhc1BlbmRpbmdXcml0ZSB7IGZhbHNlIH07CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZS5jcHAJKHJldmlzaW9uIDIyNjc0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJl
c291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcsOSAr
MTQ3LDkgQEAgc3RhdGljIFZlY3RvcjxPcGVyYXRpbmdEYXRlPiBtZXJnZU9wZXJhdAogICAgIHJl
dHVybiBtZXJnZWREYXRlczsKIH0KIAotV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3Rp
bmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tp
ZXNIYW5kbGVyLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlciwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYg
Z3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5z
SGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyKQorV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYp
PiYmIHRlc3RpbmdDYWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9t
YWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYgdXBkYXRlUHJldmFsZW50RG9t
YWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyLCBIYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyJiYgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciwgR3JhbnRTdG9y
YWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVy
KQogICAgIDogbV9zdGF0aXN0aWNzUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoIldlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSBQcm9jZXNzIERhdGEgUXVldWUiLCBXb3JrUXVldWU6OlR5cGU6
OlNlcmlhbCwgV29ya1F1ZXVlOjpRT1M6OlV0aWxpdHkpKQotICAgICwgbV9wZXJzaXN0ZW50U3Rv
cmFnZSgqdGhpcywgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSkKKyAgICAsIG1fcGVy
c2lzdGVudFN0b3JhZ2UoKnRoaXMsIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIGlz
RXBoZW1lcmFsID8gUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpJc1Jl
YWRPbmx5OjpZZXMgOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6Oklz
UmVhZE9ubHk6Ok5vKQogICAgICwgbV91cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25P
ckJsb2NrQ29va2llc0hhbmRsZXIoV1RGTW92ZSh1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0
aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpKQogICAgICwgbV9oYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyKFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcikpCiAg
ICAgLCBtX2dyYW50U3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihXVEZNb3ZlKGdyYW50U3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcikpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkocmV2aXNp
b24gMjI2NzQyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDE2LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDE2LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02NSw5ICs2NSw5IEBAIHB1YmxpYzoK
ICAgICB1c2luZyBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gV1RGOjpGdW5jdGlv
bjx2b2lkKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQ
YXJ0eURvbWFpbiwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0
aW9uPHZvaWQoYm9vbCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNpbmcgR3JhbnRT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYgcmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCB3
YXNHcmFudGVkKT4mJiBjYWxsYmFjayk+OwogICAgIHVzaW5nIFJlbW92ZVByZXZhbGVudERvbWFp
bnNIYW5kbGVyID0gV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpPjsK
LSAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgRnVuY3Rpb248dm9p
ZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21h
aW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0b3I8U3Ry
aW5nPiYsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBTaG91
bGRDbGVhckZpcnN0KSB7IH0sIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNT
dG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsg
fSwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0
X3QsIHVpbnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlUHJl
dmFsZW50RG9tYWluc0hhbmRsZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBW
ZWN0b3I8U3RyaW5nPiYpIHsgfSkKKyAgICBzdGF0aWMgUmVmPFdlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgcmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgRnVuY3Rpb248dm9pZCAoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNr
LCBib29sIGlzRXBoZW1lcmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJs
b2NrQ29va2llc0hhbmRsZXIgPSBbXShjb25zdCBWZWN0b3I8U3RyaW5nPiYsIGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBTaG91bGRDbGVhckZpcnN0KSB7IH0s
IEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyID0gW10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVp
bnQ2NF90LCBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgR3JhbnRTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyJiYgZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyID0g
W10oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QsIHVpbnQ2NF90LCBXVEY6
OkZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIHsgfSwgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRs
ZXImJiByZW1vdmVEb21haW5zSGFuZGxlciA9IFtdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYpIHsg
fSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZShyZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRl
c3RpbmdDYWxsYmFjayksIFdURk1vdmUodXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNIYW5kbGVyKSwgV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKSwgV1RGTW92ZShncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZN
b3ZlKHJlbW92ZURvbWFpbnNIYW5kbGVyKSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rp
cmVjdG9yeSwgV1RGTW92ZSh0ZXN0aW5nQ2FsbGJhY2spLCBpc0VwaGVtZXJhbCwgV1RGTW92ZSh1
cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBX
VEZNb3ZlKGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3Rv
cmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIp
KSk7CiAgICAgfQogCiAgICAgfldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSgpOwpAQCAt
MTQzLDcgKzE0Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGxvZ1Rlc3RpbmdFdmVudChjb25zdCBT
dHJpbmcmKTsKIAogcHJpdmF0ZToKLSAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUo
Y29uc3QgU3RyaW5nJiwgRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2Fs
bGJhY2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFu
ZGxlciYmLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIEdyYW50U3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlciYmLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmKTsK
KyAgICBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUoY29uc3QgU3RyaW5nJiwgRnVuY3Rp
b248dm9pZChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVy
YWwsIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
ciYmLCBIYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIEdyYW50U3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciYmLCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmKTsKIAog
ICAgIHZvaWQgcmVtb3ZlRGF0YVJlY29yZHMoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHJl
dmlzaW9uIDIyNjc0MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJBUElXZWJz
aXRlRGF0YVJlY29yZC5oIgorI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhU3RvcmUuaCIKICNpbmNs
dWRlICJOZXR3b3JrUHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZU1hbmFnZXIu
aCIKICNpbmNsdWRlICJTdG9yYWdlUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgpAQCAtOTMs
NiArOTQsNyBAQCBXZWJzaXRlRGF0YVN0b3JlOjpXZWJzaXRlRGF0YVN0b3JlKFBBTDo6CiAgICAg
LCBtX2NvbmZpZ3VyYXRpb24oKQogICAgICwgbV9xdWV1ZShXb3JrUXVldWU6OmNyZWF0ZSgiY29t
LmFwcGxlLldlYktpdC5XZWJzaXRlRGF0YVN0b3JlIikpCiB7CisgICAgY29uc3RfY2FzdDxDb25m
aWd1cmF0aW9uKj4oJm1fY29uZmlndXJhdGlvbiktPnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkgPSBBUEk6OldlYnNpdGVEYXRhU3RvcmU6OmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0
aWNzRGlyZWN0b3J5KCk7CiAgICAgbWF5YmVSZWdpc3RlcldpdGhTZXNzaW9uSURNYXAoKTsKICAg
ICBwbGF0Zm9ybUluaXRpYWxpemUoKTsKIH0KQEAgLTE0MDEsNyArMTQwMyw3IEBAIHZvaWQgV2Vi
c2l0ZURhdGFTdG9yZTo6ZW5hYmxlUmVzb3VyY2VMb2EKICAgICB9CiAKICNpZiBIQVZFKENGTkVU
V09SS19TVE9SQUdFX1BBUlRJVElPTklORykKLSAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3Mg
PSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24u
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldIChjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZG9tYWluc1RvUGFydGl0aW9uLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvQmxvY2ss
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9OZWl0aGVyUGFydGl0aW9uTm9yQmxvY2ss
IFNob3VsZENsZWFyRmlyc3Qgc2hvdWxkQ2xlYXJGaXJzdCkgeworICAgIG1fcmVzb3VyY2VMb2Fk
U3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29u
ZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxi
YWNrKSwgbV9zZXNzaW9uSUQuaXNFcGhlbWVyYWwoKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBt
YWtlUmVmKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24s
IGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBz
aG91bGRDbGVhckZpcnN0KSB7CiAgICAgICAgIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRp
dGlvbk9yQmxvY2tDb29raWVzKGRvbWFpbnNUb1BhcnRpdGlvbiwgZG9tYWluc1RvQmxvY2ssIGRv
bWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgc2hvdWxkQ2xlYXJGaXJzdCk7CiAgICAg
fSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFN0cmluZyYg
cmVzb3VyY2VEb21haW4sIGNvbnN0IFN0cmluZyYgZmlyc3RQYXJ0eURvbWFpbiwgdWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgcGFnZUlELCBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCBoYXNBY2Nlc3MpPiYmIGNhbGxiYWNrKSB7CiAgICAgICAgIGhhc1N0b3JhZ2VBY2Nlc3NGb3JG
cmFtZUhhbmRsZXIocmVzb3VyY2VEb21haW4sIGZpcnN0UGFydHlEb21haW4sIGZyYW1lSUQsIHBh
Z2VJRCwgV1RGTW92ZShjYWxsYmFjaykpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjI2NzQ1KQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDEtMTAgIEJyZW50IEZ1
bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjE5NTMw
KTogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlIHNob3VsZCBiZSByZWFk
LW9ubHkgaW4gZXBoZW1lcmFsIHNlc3Npb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xODExMzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTE2
NjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBhIG5ldyBBUEkgdGVzdCB0byBjb25maXJtIHRoYXQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBj
YW4gYmUgdHVybmVkIG9uIHNhZmVseSBmb3IgZXBoZW1lcmFsCisgICAgICAgIGJyb3dzaW5nIHNl
c3Npb25zLgorCisgICAgICAgKiBTY3JpcHRzL3J1bi1ndGstdGVzdHM6CisgICAgICAgKEd0a1Rl
c3RSdW5uZXIpOiBVbnNraXAgdGVzdCBub3cgdGhhdCBpdCBwYXNzZXMuCisgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5t
bToKKyAgICAgICAoVEVTVCk6IEFkZCBuZXcgV2Vic2l0ZURhdGFTdG9yZUVwaGVtZXJhbCB0ZXN0
LgorCiAyMDE4LTAxLTEwICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSRUdSRVNTSU9OIChyMjI2NzE1KTogaWdub3JlIFdBUk5JTkcgb3V0cHV0IGluIGxp
bnRlciB0ZXN0cwpJbmRleDogVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwkocmV2aXNpb24gMjI2NzQyKQorKysgVG9v
bHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBA
IGNsYXNzIEd0a1Rlc3RSdW5uZXIoVGVzdFJ1bm5lcik6CiAgICAgICAgIFNraXBwZWRUZXN0KCJX
ZWJLaXQyR3RrL1Rlc3RXZWJWaWV3RWRpdG9yIiwgIi93ZWJraXQyL1dlYktpdFdlYlZpZXcvZWRp
dGFibGUvZWRpdGFibGUiLCAiVGVzdCBoaXRzIGFuIGFzc2VydGlvbiBpbiBEZWJ1ZyBidWlsZHMi
LCAxNTE2NTQsICJEZWJ1ZyIpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0
V2ViRXh0ZW5zaW9ucyIsICIvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L2luc3RhbGwtbWlzc2luZy1w
bHVnaW5zLXBlcm1pc3Npb24tcmVxdWVzdCIsICJUZXN0IHRpbWVzIG91dCIsIDE0NzgyMiksCiAg
ICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rlc3RXZWJzaXRlRGF0YSIsICIvd2Via2l0
Mi9XZWJLaXRXZWJzaXRlRGF0YS9kYXRhYmFzZXMiLCAiVGVzdCBmYWlscyB0byBjbGVhciBkYXRh
YmFzZSBkYXRhIiwgMTgxMjUxKSwKLSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsvVGVz
dFdlYnNpdGVEYXRhIiwgIi93ZWJraXQyL1dlYktpdFdlYnNpdGVEYXRhL2VwaGVtZXJhbCIsICJU
ZXN0IGhpdHMgYW4gYXNzZXJ0aW9uIGluIERlYnVnIGJ1aWxkcyIsIDE4MTEzNiwgIkRlYnVnIiks
CiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQvVGVzdFdlYktpdCIsICJXZWJLaXQuTW91c2VN
b3ZlQWZ0ZXJDcmFzaCIsICJUZXN0IGlzIGZsYWt5IiwgODUwNjYpLAogICAgICAgICBTa2lwcGVk
VGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQiLCAiV2ViS2l0Lk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0
eUxheW91dEZvckltYWdlcyIsICJUZXN0IGlzIGZsYWt5IiwgODUwNjYpLAogICAgICAgICBTa2lw
cGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQiLCAiV2ViS2l0Lk5ld0ZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dEZyYW1lcyIsICJUZXN0IGZhaWxzIiwgODUwMzcpLApJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0JKHJldmlzaW9uIDIyNjc0MikKKysrIFRvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBh
dGhzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksNCArMjE5LDQ2IEBAIFRFU1QoV2ViS2l0LCBX
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMKICAgICBFWFBFQ1RfRkFMU0UoW1dLV2Vic2l0ZURh
dGFTdG9yZSBfZGVmYXVsdERhdGFTdG9yZUV4aXN0c10pOwogfQogCitURVNUKFdlYktpdCwgV2Vi
c2l0ZURhdGFTdG9yZUVwaGVtZXJhbCkKK3sKKyAgICBSZXRhaW5QdHI8V2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURh
dGFTdG9yZUN1c3RvbVBhdGhzTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRh
aW5QdHI8V0tXZWJWaWV3Q29uZmlndXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tX
S1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9u
IHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBuYW1lOkAidGVzdEhhbmRsZXIiXTsKKworICAgIE5TVVJMICpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9X
ZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLyIg
c3RyaW5nQnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGF0aCBlcnJvcjpuaWxdOworCisgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhdGgucGF0aF0pOworCisgICAgY29uZmlndXJhdGlvbi5nZXQo
KS53ZWJzaXRlRGF0YVN0b3JlID0gW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0
YVN0b3JlXTsKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9zZXRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZDpZRVNdOworCisgICAgLy8gV2UgZXhwZWN0IHRo
ZSBkaXJlY3RvcnkgdG8gYmUgY3JlYXRlZCBieSBzdGFydGluZyB1cCB0aGUgZGF0YSBzdG9yZSBt
YWNoaW5lcnksIGJ1dCBub3QgdGhlIGRhdGEgZmlsZS4KKyAgICBFWFBFQ1RfVFJVRShbW05TRmls
ZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKworICAgIE5TVVJMICpkZWZhdWx0UmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpbGVQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJh
cnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
cy9mdWxsX2Jyb3dzaW5nX3Nlc3Npb25fcmVzb3VyY2VMb2cucGxpc3QiIHN0cmluZ0J5RXhwYW5k
aW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5Ok5PXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRmlsZVBhdGgucGF0aF0pOworCisgICAgUmV0YWluUHRyPFdLV2ViVmll
dz4gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJXZWJzaXRlRGF0
YVN0b3JlQ3VzdG9tUGF0aHMiIHdpdGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJU
ZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1
ZXN0XTsKKworICAgIFtbW3dlYlZpZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zeW5j
TmV0d29ya1Byb2Nlc3NDb29raWVzXTsKKworICAgIC8vIEZvcmNpYmx5IHNodXQgZG93biBldmVy
eXRoaW5nIG9mIFdlYktpdCB0aGF0IHdlIGNhbi4KKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dIHByb2Nlc3NQb29sXSBfdGVybWluYXRlU3RvcmFnZVByb2Nlc3NdOworICAgIGF1dG8gcGlk
ID0gW3dlYlZpZXcgX3dlYlByb2Nlc3NJZGVudGlmaWVyXTsKKyAgICBpZiAocGlkKQorICAgICAg
ICBraWxsKHBpZCwgU0lHS0lMTCk7CisKKyAgICB3ZWJWaWV3ID0gbmlsOworICAgIGhhbmRsZXIg
PSBuaWw7CisgICAgY29uZmlndXJhdGlvbiA9IG5pbDsKKworICAgIEVYUEVDVF9UUlVFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BhdGgucGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1h
bmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291cmNlTG9h
ZFN0YXRpc3RpY3NGaWxlUGF0aC5wYXRoXSk7Cit9CisKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331141</attachid>
            <date>2018-01-11 16:57:20 -0800</date>
            <delta_ts>2018-01-11 17:45:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-181136-20180111165719.patch</filename>
            <type>text/plain</type>
            <size>21110</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTExICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgYmUgcmVhZC1v
bmx5IGluIGVwaGVtZXJhbCBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjExNjYw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHVzZXMgb2YgV2ViS2l0IGludm9sdmUgcnVubmluZyBhIFVJUHJvY2VzcyBhcyBhbiBlcGhlbWVy
YWwgc2Vzc2lvbiBmb3IgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3MuIEluIHRoaXMKKyAgICAgICAg
Y2FzZSwgd2UgZG8gbm90IGluaXRpYWxpemUgdGhlIGRhdGEgcGF0aCBmb3IgdGhlIHNldCBvZiBs
b2FkIHN0YXRpc3RpY3MgdHJpZ2dlcmluZyBhbiBhc3NlcnRpb24uCisKKyAgICAgICAgV2UgYWN0
dWFsbHkgaW50ZW5kZWQgZXBoZW1lcmFsIHNlc3Npb25zIHRvIGNvbnN1bWUgdGhlIGV4aXN0aW5n
IHJlc291cmNlIGxvYWQgZGF0YSAocHJlc3VtYWJseSBjYXB0dXJlZCBkdXJpbmcKKyAgICAgICAg
bm9uLWVwaGVtZXJhbCBicm93c2luZykuIFRoaXMgd291bGQgYmUgYSByZWFkLW9ubHkgbW9kZSwg
d2hlcmUgaXQgd291bGQgbm90IGFkZCBuZXcgZW50cmllcyB0byB0aGUgbG9hZAorICAgICAgICBz
dGF0aXN0aWNzLCBidXQgd291bGQgdGFrZSBhZHZhbnRhZ2Ugb2YgZXhpc3Rpbmcgb2JzZXJ2YXRp
b25zLiBDdXJyZW50bHkgdGhhdCBkb2VzIG5vdCBoYXBwZW4gKGZvciB0aGlzIHR5cGUKKyAgICAg
ICAgb2YgV2ViS2l0IGVtYmVkKSwgd2hpY2ggZm9yY2VzIGVhY2ggcnVuIGFzIGFuIGVwaGVtZXJh
bCBzZXNzaW9uIHRvIGJ1aWxkIHVwIGluLW1lbW9yeSBicm93c2luZyBkYXRhIHVudGlsIGl0IGhh
cworICAgICAgICBlbm91Z2ggb2JzZXJ2YXRpb25zIHRvIGJlZ2luIG1vZGlmeWluZyBsb2Fkcy4K
KworICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlIG9iamVjdCB0byBhICJyZWFkIG9ubHkiIG1vZGUgaW4gdGhpcyBjYXNlLCBz
bworICAgICAgICB0aGF0IGl0IHJlYWQgKGJ1dCBkb2VzIG5vdCB3cml0ZSkgZnJvbSB0aGlzIGRh
dGFiYXNlLgorCisgICAgICAgIFRlc3RlZCBieSBlcGhlbWVyYWwgd2Vic2l0ZSBkYXRhIFRlc3RX
ZWJLaXRBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjcmVhdGUpOiBBZGRlZCB0byBhbGxvdyBjcmVh
dGlvbiBvZiB0aGUgcmlnaHQgc3R5bGUgb2YKKyAgICAgICAgUGVyc2lzdGVudCBTdG9yYWdlLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSk6IEluaXRpYWxpemUgdGhl
CisgICAgICAgIG5ldyBkYXRhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCk6IFJFTEVB
U0VfQVNTRVJUIHRoYXQgd2UgbmV2ZXIgcnVuCisgICAgICAgIHRoaXMgbWV0aG9kIHdoZW4gaW4g
InJlYWQgb25seSIgbW9kZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c2No
ZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUpOiBSZXR1cm4gZWFybHkgaWYgYXNrZWQgdG8KKyAgICAg
ICAgc2NoZWR1bGUgYSB3cml0ZSBvcGVyYXRpb24gZm9yIGEgInJlYWQgb25seSIgcGVyc2lzdGVu
dCBzdG9yZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkpOiBSRUxFQVNFX0FT
U0VSVCBpZiB3ZQorICAgICAgICBldmVyIHNodXQgZG93biBpbiAicmVhZCBvbmx5IiBtb2RlIHdp
dGggYW4gYWN0aXZlIHdyaXRlIHRpbWVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OiBQYXNzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCisgICAgICAgIHN0b3JhZ2Ugc2Vz
c2lvbiBpcyBlcGhlbWVyYWwgb3Igbm90LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0xMSAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIyNjc4OSBhbmQgcjIyNjc5NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
MiwxMCArODIsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZQog
ICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwogfQogCi1SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uo
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlRGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSBpc1JlYWRPbmx5KQogICAgIDogbV9tZW1vcnlT
dG9yZShzdG9yZSkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZURpcmVjdG9y
eVBhdGgpCiAgICAgLCBtX2FzeW5jV3JpdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZp
cmVkKQorICAgICwgbV9pc1JlYWRPbmx5KGlzUmVhZE9ubHkpCiB7CiB9CiAKQEAgLTIzOSw2ICsy
NDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRpbWVyRmly
ZWQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9pc1JlYWRPbmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAgICAgbV9tZW1vcnlTdG9yZS5z
dGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIHdy
aXRlTWVtb3J5U3RvcmVUb0Rpc2soKTsKICAgICB9KTsKQEAgLTI0Nyw2ICsyNDksNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc1Jl
YWRPbmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAKICAgICBtX2hhc1BlbmRpbmdXcml0ZSA9IGZh
bHNlOwogICAgIHN0b3BNb25pdG9yaW5nRGlzaygpOwpAQCAtMjgxLDYgKzI4NCw4IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3Jj
ZUltbWVkaWF0ZVdyaXRlIGZvcmNlSW1tZWRpYXRlV3JpdGUpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgaWYgKG1faXNSZWFkT25seSA9PSBJc1JlYWRPbmx5OjpZZXMp
CisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGltZVNpbmNlTGFzdFdyaXRlID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lOwogICAgIGlmIChmb3Jj
ZUltbWVkaWF0ZVdyaXRlICE9IEZvcmNlSW1tZWRpYXRlV3JpdGU6OlllcyAmJiB0aW1lU2luY2VM
YXN0V3JpdGUgPCBtaW5pbXVtV3JpdGVJbnRlcnZhbCkgewpAQCAtMzEyLDYgKzMxNywxMSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiAKIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNo
cm9ub3VzbHkoKQogeworICAgIGlmIChtX2lzUmVhZE9ubHkgPT0gSXNSZWFkT25seTo6WWVzKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FzeW5jV3JpdGVUaW1lci5pc0FjdGl2ZSgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fYXN5bmNXcml0ZVRpbWVyLnN0b3AoKTsK
IAogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDEsNyArNDEsOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7
CiAKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSB7CiBwdWJs
aWM6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBh
dGgpOworICAgIGVudW0gY2xhc3MgSXNSZWFkT25seSB7IE5vLCBZZXMgfTsKKyAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSk7
CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAg
dm9pZCBpbml0aWFsaXplKCk7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX2ZpbGVNb25pdG9yOwogICAgIFdhbGxU
aW1lIG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWU7CiAgICAgTW9ub3RvbmljVGltZSBtX2xh
c3RTdGF0aXN0aWNzV3JpdGVUaW1lOworICAgIElzUmVhZE9ubHkgbV9pc1JlYWRPbmx5IHsgSXNS
ZWFkT25seTo6Tm8gfTsKICAgICBib29sIG1faGFzUGVuZGluZ1dyaXRlIHsgZmFsc2UgfTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE0Nyw5ICsxNDcsOSBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0Rh
dGU+IG1lcmdlT3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIs
IFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCitX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1l
cmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRs
ZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRs
ZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVy
JiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVl
dWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBR
dWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkp
Ci0gICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KQorICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgaXNFcGhlbWVyYWwgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2U6OklzUmVhZE9ubHk6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6SXNSZWFkT25seTo6Tm8pCiAgICAgLCBtX3VwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAg
LCBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyKSkKICAgICAsIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJh
Y2spPjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNp
bmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJh
Y2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
ciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
ciA9IFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJikgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFp
bnNIYW5kbGVyID0gW10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQorICAgIHN0YXRpYyBS
ZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYm
IGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1v
dmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayks
IGlzRXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlciksIFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92
ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
bG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZh
bGVudERvbWFpbnNIYW5kbGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdD
YWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVu
dERvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCkBAIC05Myw2ICs5NCw3IEBAIFdlYnNpdGVEYXRhU3RvcmU6OldlYnNp
dGVEYXRhU3RvcmUoUEFMOjoKICAgICAsIG1fY29uZmlndXJhdGlvbigpCiAgICAgLCBtX3F1ZXVl
KFdvcmtRdWV1ZTo6Y3JlYXRlKCJjb20uYXBwbGUuV2ViS2l0LldlYnNpdGVEYXRhU3RvcmUiKSkK
IHsKKyAgICBjb25zdF9jYXN0PENvbmZpZ3VyYXRpb24qPigmbV9jb25maWd1cmF0aW9uKS0+cmVz
b3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSA9IEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKTsKICAgICBtYXliZVJlZ2lzdGVy
V2l0aFNlc3Npb25JRE1hcCgpOwogICAgIHBsYXRmb3JtSW5pdGlhbGl6ZSgpOwogfQpAQCAtMTQw
MSw3ICsxNDAzLDcgQEAgdm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQog
ICAgIH0KIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1f
cmVzb3VyY2VMb2FkU3RhdGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6
Y3JlYXRlKG1fY29uZmlndXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBX
VEZNb3ZlKGNhbGxiYWNrKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0g
KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05l
aXRoZXJQYXJ0aXRpb25Ob3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0
KSB7CisgICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnksIFdURk1vdmUoY2FsbGJhY2spLCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpLCBb
dGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGRvbWFpbnNUb1BhcnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Js
b2NrLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJs
b2NrLCBTaG91bGRDbGVhckZpcnN0IHNob3VsZENsZWFyRmlyc3QpIHsKICAgICAgICAgdXBkYXRl
UHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0
aW9uLCBkb21haW5zVG9CbG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBz
aG91bGRDbGVhckZpcnN0KTsKICAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXSAoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJz
dFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKICAgICAg
ICAgaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQ
YXJ0eURvbWFpbiwgZnJhbWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNDEx
LDcgKzE0MTMsNyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hCiAg
ICAgICAgIHJlbW92ZVByZXZhbGVudERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKICAgICB9KTsK
ICNlbHNlCi0gICAgbV9yZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlOjpjcmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRp
c3RpY3MgPSBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3Vy
YXRpb24ucmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayks
IG1fc2Vzc2lvbklELmlzRXBoZW1lcmFsKCkpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHBy
b2Nlc3NQb29sIDogcHJvY2Vzc1Bvb2xzKCkpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY4MjIpCisrKyBUb29scy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxOC0wMS0xMSAgQnJlbnQg
RnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIyMTk1
MzApOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Ugc2hvdWxkIGJlIHJl
YWQtb25seSBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTEzNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYx
MTY2MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGEgbmV3IEFQSSB0ZXN0IHRvIGNvbmZpcm0gdGhhdCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
IGNhbiBiZSB0dXJuZWQgb24gc2FmZWx5IGZvciBlcGhlbWVyYWwKKyAgICAgICAgYnJvd3Npbmcg
c2Vzc2lvbnMuCisKKyAgICAgICAqIFNjcmlwdHMvcnVuLWd0ay10ZXN0czoKKyAgICAgICAoR3Rr
VGVzdFJ1bm5lcik6IFVuc2tpcCB0ZXN0IG5vdyB0aGF0IGl0IHBhc3Nlcy4KKyAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tOgorICAgICAgIChURVNUKTogQWRkIG5ldyBXZWJzaXRlRGF0YVN0b3JlRXBoZW1lcmFsIHRl
c3QuCisKIDIwMTgtMDEtMTEgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIHdlYmtpdHB5OiBGaXggZmxha2V5IHdlYnNlcnZlciB0ZXN0cwpJbmRleDogVG9v
bHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVu
LWd0ay10ZXN0cwkocmV2aXNpb24gMjI2ODIyKQorKysgVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRl
c3RzCSh3b3JraW5nIGNvcHkpCkBAIC00Myw3ICs0Myw2IEBAIGNsYXNzIEd0a1Rlc3RSdW5uZXIo
VGVzdFJ1bm5lcik6CiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rlc3RXZWJWaWV3
RWRpdG9yIiwgIi93ZWJraXQyL1dlYktpdFdlYlZpZXcvZWRpdGFibGUvZWRpdGFibGUiLCAiVGVz
dCBoaXRzIGFuIGFzc2VydGlvbiBpbiBEZWJ1ZyBidWlsZHMiLCAxNTE2NTQsICJEZWJ1ZyIpLAog
ICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0V2ViRXh0ZW5zaW9ucyIsICIvd2Vi
a2l0Mi9XZWJLaXRXZWJWaWV3L2luc3RhbGwtbWlzc2luZy1wbHVnaW5zLXBlcm1pc3Npb24tcmVx
dWVzdCIsICJUZXN0IHRpbWVzIG91dCIsIDE0NzgyMiksCiAgICAgICAgIFNraXBwZWRUZXN0KCJX
ZWJLaXQyR3RrL1Rlc3RXZWJzaXRlRGF0YSIsICIvd2Via2l0Mi9XZWJLaXRXZWJzaXRlRGF0YS9k
YXRhYmFzZXMiLCAiVGVzdCBmYWlscyB0byBjbGVhciBkYXRhYmFzZSBkYXRhIiwgMTgxMjUxKSwK
LSAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsvVGVzdFdlYnNpdGVEYXRhIiwgIi93ZWJr
aXQyL1dlYktpdFdlYnNpdGVEYXRhL2VwaGVtZXJhbCIsICJUZXN0IGhpdHMgYW4gYXNzZXJ0aW9u
IGluIERlYnVnIGJ1aWxkcyIsIDE4MTEzNiwgIkRlYnVnIiksCiAgICAgICAgIFNraXBwZWRUZXN0
KCJXZWJLaXQvVGVzdFdlYktpdCIsICJXZWJLaXQuTW91c2VNb3ZlQWZ0ZXJDcmFzaCIsICJUZXN0
IGlzIGZsYWt5IiwgODUwNjYpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJL
aXQiLCAiV2ViS2l0Lk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckltYWdlcyIsICJU
ZXN0IGlzIGZsYWt5IiwgODUwNjYpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RX
ZWJLaXQiLCAiV2ViS2l0Lk5ld0ZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZyYW1lcyIsICJU
ZXN0IGZhaWxzIiwgODUwMzcpLApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW0JKHJldmlzaW9uIDIyNjgyMikKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTksNCArMjE5LDQ2IEBAIFRFU1QoV2ViS2l0LCBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMKICAgICBFWFBFQ1RfRkFMU0UoW1dLV2Vic2l0ZURhdGFTdG9yZSBfZGVmYXVsdERhdGFT
dG9yZUV4aXN0c10pOwogfQogCitURVNUKFdlYktpdCwgV2Vic2l0ZURhdGFTdG9yZUVwaGVtZXJh
bCkKK3sKKyAgICBSZXRhaW5QdHI8V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzTWVzc2FnZUhh
bmRsZXI+IGhhbmRsZXIgPSBhZG9wdE5TKFtbV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzTWVz
c2FnZUhhbmRsZXIgYWxsb2NdIGluaXRdKTsKKyAgICBSZXRhaW5QdHI8V0tXZWJWaWV3Q29uZmln
dXJhdGlvbj4gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9u
IGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBuYW1lOkAidGVzdEhhbmRs
ZXIiXTsKKworICAgIE5TVVJMICpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGggPSBb
TlNVUkwgZmlsZVVSTFdpdGhQYXRoOltAIn4vTGlicmFyeS9XZWJLaXQvVGVzdFdlYktpdEFQSS9X
ZWJzaXRlRGF0YS9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzLyIgc3RyaW5nQnlFeHBhbmRpbmdUaWxk
ZUluUGF0aF0gaXNEaXJlY3Rvcnk6WUVTXTsKKworICAgIFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gcmVtb3ZlSXRlbUF0VVJMOmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0
aCBlcnJvcjpuaWxdOworCisgICAgRVhQRUNUX0ZBTFNFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0
TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bh
dGgucGF0aF0pOworCisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0g
W1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXTsKKyAgICBbY29uZmln
dXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlIF9zZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RW5hYmxlZDpZRVNdOworCisgICAgLy8gV2UgZXhwZWN0IHRoZSBkaXJlY3RvcnkgdG8gYmUgY3Jl
YXRlZCBieSBzdGFydGluZyB1cCB0aGUgZGF0YSBzdG9yZSBtYWNoaW5lcnksIGJ1dCBub3QgdGhl
IGRhdGEgZmlsZS4KKyAgICBFWFBFQ1RfVFJVRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFn
ZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBh
dGhdKTsKKworICAgIE5TVVJMICpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpbGVQYXRo
ID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRB
UEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy9mdWxsX2Jyb3dzaW5nX3Nlc3Np
b25fcmVzb3VyY2VMb2cucGxpc3QiIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGly
ZWN0b3J5Ok5PXTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5h
Z2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlsZVBh
dGgucGF0aF0pOworCisgICAgUmV0YWluUHRyPFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFp
bkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMiIHdp
dGhFeHRlbnNpb246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNl
cyJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFtbW3dlYlZp
ZXcgY29uZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF9zeW5jTmV0d29ya1Byb2Nlc3NDb29raWVz
XTsKKworICAgIC8vIEZvcmNpYmx5IHNodXQgZG93biBldmVyeXRoaW5nIG9mIFdlYktpdCB0aGF0
IHdlIGNhbi4KKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfdGVy
bWluYXRlU3RvcmFnZVByb2Nlc3NdOworICAgIGF1dG8gcGlkID0gW3dlYlZpZXcgX3dlYlByb2Nl
c3NJZGVudGlmaWVyXTsKKyAgICBpZiAocGlkKQorICAgICAgICBraWxsKHBpZCwgU0lHS0lMTCk7
CisKKyAgICB3ZWJWaWV3ID0gbmlsOworICAgIGhhbmRsZXIgPSBuaWw7CisgICAgY29uZmlndXJh
dGlvbiA9IG5pbDsKKworICAgIEVYUEVDVF9UUlVFKFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFu
YWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgu
cGF0aF0pOworICAgIEVYUEVDVF9GQUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJd
IGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaWxlUGF0aC5w
YXRoXSk7Cit9CisKICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331147</attachid>
            <date>2018-01-11 17:45:39 -0800</date>
            <delta_ts>2018-01-11 17:58:50 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181136-20180111174538.patch</filename>
            <type>text/plain</type>
            <size>21816</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTExICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgYmUgcmVhZC1v
bmx5IGluIGVwaGVtZXJhbCBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjExNjYw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTb21l
IHVzZXMgb2YgV2ViS2l0IGludm9sdmUgcnVubmluZyBhIFVJUHJvY2VzcyBhcyBhbiBlcGhlbWVy
YWwgc2Vzc2lvbiBmb3IgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3MuIEluIHRoaXMKKyAgICAgICAg
Y2FzZSwgd2UgZG8gbm90IGluaXRpYWxpemUgdGhlIGRhdGEgcGF0aCBmb3IgdGhlIHNldCBvZiBs
b2FkIHN0YXRpc3RpY3MgdHJpZ2dlcmluZyBhbiBhc3NlcnRpb24uCisKKyAgICAgICAgV2UgYWN0
dWFsbHkgaW50ZW5kZWQgZXBoZW1lcmFsIHNlc3Npb25zIHRvIGNvbnN1bWUgdGhlIGV4aXN0aW5n
IHJlc291cmNlIGxvYWQgZGF0YSAocHJlc3VtYWJseSBjYXB0dXJlZCBkdXJpbmcKKyAgICAgICAg
bm9uLWVwaGVtZXJhbCBicm93c2luZykuIFRoaXMgd291bGQgYmUgYSByZWFkLW9ubHkgbW9kZSwg
d2hlcmUgaXQgd291bGQgbm90IGFkZCBuZXcgZW50cmllcyB0byB0aGUgbG9hZAorICAgICAgICBz
dGF0aXN0aWNzLCBidXQgd291bGQgdGFrZSBhZHZhbnRhZ2Ugb2YgZXhpc3Rpbmcgb2JzZXJ2YXRp
b25zLiBDdXJyZW50bHkgdGhhdCBkb2VzIG5vdCBoYXBwZW4gKGZvciB0aGlzIHR5cGUKKyAgICAg
ICAgb2YgV2ViS2l0IGVtYmVkKSwgd2hpY2ggZm9yY2VzIGVhY2ggcnVuIGFzIGFuIGVwaGVtZXJh
bCBzZXNzaW9uIHRvIGJ1aWxkIHVwIGluLW1lbW9yeSBicm93c2luZyBkYXRhIHVudGlsIGl0IGhh
cworICAgICAgICBlbm91Z2ggb2JzZXJ2YXRpb25zIHRvIGJlZ2luIG1vZGlmeWluZyBsb2Fkcy4K
KworICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlIG9iamVjdCB0byBhICJyZWFkIG9ubHkiIG1vZGUgaW4gdGhpcyBjYXNlLCBz
bworICAgICAgICB0aGF0IGl0IHJlYWQgKGJ1dCBkb2VzIG5vdCB3cml0ZSkgZnJvbSB0aGlzIGRh
dGFiYXNlLgorCisgICAgICAgIFRlc3RlZCBieSBlcGhlbWVyYWwgd2Vic2l0ZSBkYXRhIFRlc3RX
ZWJLaXRBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjcmVhdGUpOiBBZGRlZCB0byBhbGxvdyBjcmVh
dGlvbiBvZiB0aGUgcmlnaHQgc3R5bGUgb2YKKyAgICAgICAgUGVyc2lzdGVudCBTdG9yYWdlLgor
ICAgICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6
OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSk6IEluaXRpYWxpemUgdGhl
CisgICAgICAgIG5ldyBkYXRhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCk6IFJFTEVB
U0VfQVNTRVJUIHRoYXQgd2UgbmV2ZXIgcnVuCisgICAgICAgIHRoaXMgbWV0aG9kIHdoZW4gaW4g
InJlYWQgb25seSIgbW9kZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKTogRGl0dG8uCisgICAg
ICAgIChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c2No
ZWR1bGVPcldyaXRlTWVtb3J5U3RvcmUpOiBSZXR1cm4gZWFybHkgaWYgYXNrZWQgdG8KKyAgICAg
ICAgc2NoZWR1bGUgYSB3cml0ZSBvcGVyYXRpb24gZm9yIGEgInJlYWQgb25seSIgcGVyc2lzdGVu
dCBzdG9yZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkpOiBSRUxFQVNFX0FT
U0VSVCBpZiB3ZQorICAgICAgICBldmVyIHNodXQgZG93biBpbiAicmVhZCBvbmx5IiBtb2RlIHdp
dGggYW4gYWN0aXZlIHdyaXRlIHRpbWVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUp
OiBQYXNzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCisgICAgICAgIHN0b3JhZ2Ugc2Vz
c2lvbiBpcyBlcGhlbWVyYWwgb3Igbm90LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0xMSAgQ29tbWl0IFF1ZXVlICA8Y29t
bWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjIyNjc4OSBhbmQgcjIyNjc5NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9y
YWdlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04
MiwxMCArODIsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZQog
ICAgIHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwogfQogCi1SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJz
aXN0ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25z
dCBTdHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2Uo
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9y
YWdlRGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSBpc1JlYWRPbmx5KQogICAgIDogbV9tZW1vcnlT
dG9yZShzdG9yZSkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZURpcmVjdG9y
eVBhdGgpCiAgICAgLCBtX2FzeW5jV3JpdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZp
cmVkKQorICAgICwgbV9pc1JlYWRPbmx5KGlzUmVhZE9ubHkpCiB7CiB9CiAKQEAgLTIzOSw2ICsy
NDAsNyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRpbWVyRmly
ZWQoKQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQobV9pc1JlYWRPbmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAgICAgbV9tZW1vcnlTdG9yZS5z
dGF0aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIHdy
aXRlTWVtb3J5U3RvcmVUb0Rpc2soKTsKICAgICB9KTsKQEAgLTI0Nyw2ICsyNDksNyBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0
YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiB7CiAg
ICAgQVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc1Jl
YWRPbmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAKICAgICBtX2hhc1BlbmRpbmdXcml0ZSA9IGZh
bHNlOwogICAgIHN0b3BNb25pdG9yaW5nRGlzaygpOwpAQCAtMjgxLDYgKzI4NCw4IEBAIHZvaWQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KIHZvaWQgUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3Jj
ZUltbWVkaWF0ZVdyaXRlIGZvcmNlSW1tZWRpYXRlV3JpdGUpCiB7CiAgICAgQVNTRVJUKCFSdW5M
b29wOjppc01haW4oKSk7CisgICAgaWYgKG1faXNSZWFkT25seSA9PSBJc1JlYWRPbmx5OjpZZXMp
CisgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGltZVNpbmNlTGFzdFdyaXRlID0gTW9ub3Rv
bmljVGltZTo6bm93KCkgLSBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lOwogICAgIGlmIChmb3Jj
ZUltbWVkaWF0ZVdyaXRlICE9IEZvcmNlSW1tZWRpYXRlV3JpdGU6OlllcyAmJiB0aW1lU2luY2VM
YXN0V3JpdGUgPCBtaW5pbXVtV3JpdGVJbnRlcnZhbCkgewpAQCAtMzEyLDYgKzMxNywxMSBAQCB2
b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiAKIHZvaWQgUmVzb3VyY2VM
b2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNo
cm9ub3VzbHkoKQogeworICAgIGlmIChtX2lzUmVhZE9ubHkgPT0gSXNSZWFkT25seTo6WWVzKSB7
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FzeW5jV3JpdGVUaW1lci5pc0FjdGl2ZSgpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fYXN5bmNXcml0ZVRpbWVyLnN0b3AoKTsK
IAogICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2UuaAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNDEsNyArNDEsOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7
CiAKIGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSB7CiBwdWJs
aWM6Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBh
dGgpOworICAgIGVudW0gY2xhc3MgSXNSZWFkT25seSB7IE5vLCBZZXMgfTsKKyAgICBSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1N0b3JlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSk7
CiAgICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAg
dm9pZCBpbml0aWFsaXplKCk7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1
bmlxdWVfcHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX2ZpbGVNb25pdG9yOwogICAgIFdhbGxU
aW1lIG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWU7CiAgICAgTW9ub3RvbmljVGltZSBtX2xh
c3RTdGF0aXN0aWNzV3JpdGVUaW1lOworICAgIElzUmVhZE9ubHkgbV9pc1JlYWRPbmx5IHsgSXNS
ZWFkT25seTo6Tm8gfTsKICAgICBib29sIG1faGFzUGVuZGluZ1dyaXRlIHsgZmFsc2UgfTsKIH07
CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NTdG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
NyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTE0Nyw5ICsxNDcsOSBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0Rh
dGU+IG1lcmdlT3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1XZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25z
dCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5z
VG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIs
IFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCitX
ZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0
aW9uPHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1l
cmFsLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRs
ZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRs
ZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9y
RnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVy
JiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVl
dWU6OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBR
dWV1ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkp
Ci0gICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5KQorICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgaXNFcGhlbWVyYWwgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
UGVyc2lzdGVudFN0b3JhZ2U6OklzUmVhZE9ubHk6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NQZXJzaXN0ZW50U3RvcmFnZTo6SXNSZWFkT25seTo6Tm8pCiAgICAgLCBtX3VwZGF0ZVByZXZh
bGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0
ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAg
LCBtX2hhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShoYXNTdG9yYWdlQWNj
ZXNzRm9yRnJhbWVIYW5kbGVyKSkKICAgICAsIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVI
YW5kbGVyKFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0
YXRpc3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTY1LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFt
ZUhhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFp
biwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50
NjRfdCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJh
Y2spPjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6
OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5n
JiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdU
Rjo6RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNp
bmcgUmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJh
Y2ssIFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
ciYmIHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxl
ciA9IFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25z
dCBWZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVu
Y3Rpb248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChi
b29sKT4mJikgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFp
bnNIYW5kbGVyID0gW10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQorICAgIHN0YXRpYyBS
ZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFZlY3Rv
cjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYm
IGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25z
dCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4m
JikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VB
Y2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1
aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1v
dmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNv
bnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3Rp
Y3NEaXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRhdGVQcmV2
YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShy
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayks
IGlzRXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9y
QmxvY2tDb29raWVzSGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFu
ZGxlciksIFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92
ZShyZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1N0b3JlKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQg
bG9nVGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291
cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0
IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFy
dGl0aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZh
bGVudERvbWFpbnNIYW5kbGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdD
YWxsYmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVu
dERvbWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiQVBJV2Vi
c2l0ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNp
bmNsdWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgiCkBAIC03OCw2ICs3OSwxMSBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4g
V2Vic2l0ZURhdGFTdG9yZTo6CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFT
dG9yZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKIH0KIAorV2Vic2l0ZURh
dGFTdG9yZTo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCisgICAgOiByZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKK3sKK30KKwogV2Vic2l0ZURhdGFTdG9yZTo6
V2Vic2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fY29u
ZmlndXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQpAQCAtMTQwMSw3ICsxNDA3LDcgQEAg
dm9pZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogICAgIH0KIAogI2lmIEhB
VkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmln
dXJhdGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNr
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5z
VG9CbG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25O
b3JCbG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1v
dmUoY2FsbGJhY2spLCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1Bh
cnRpdGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVh
ckZpcnN0IHNob3VsZENsZWFyRmlyc3QpIHsKICAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWlu
c1RvUGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9C
bG9jaywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0
KTsKICAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3Qg
U3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaGFzU3RvcmFnZUFj
Y2Vzc0ZvckZyYW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJh
bWVJRCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNDExLDcgKzE0MTcsNyBAQCB2
b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hCiAgICAgICAgIHJlbW92ZVBy
ZXZhbGVudERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKICAgICB9KTsKICNlbHNlCi0gICAgbV9y
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpj
cmVhdGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdU
Rk1vdmUoY2FsbGJhY2spKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIG1fc2Vzc2lvbklELmlz
RXBoZW1lcmFsKCkpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJv
Y2Vzc1Bvb2xzKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9X
ZWJzaXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25m
aWd1cmF0aW9uRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgY29va2llU3RvcmFnZUZpbGU7CisK
KyAgICAgICAgQ29uZmlndXJhdGlvbigpOwogICAgIH07CiAgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxXZWJzaXRl
RGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQpOwpJbmRleDog
VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24g
MjI2ODIyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkg
QEAKKzIwMTgtMDEtMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAg
ICAgICAgUkVHUkVTU0lPTihyMjE5NTMwKTogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlIHNob3VsZCBiZSByZWFkLW9ubHkgaW4gZXBoZW1lcmFsIHNlc3Npb25zCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExMzYKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTE2NjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0byBjb25maXJtIHRoYXQg
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyBjYW4gYmUgdHVybmVkIG9uIHNhZmVseSBmb3IgZXBoZW1l
cmFsCisgICAgICAgIGJyb3dzaW5nIHNlc3Npb25zLgorCisgICAgICAgKiBTY3JpcHRzL3J1bi1n
dGstdGVzdHM6CisgICAgICAgKEd0a1Rlc3RSdW5uZXIpOiBVbnNraXAgdGVzdCBub3cgdGhhdCBp
dCBwYXNzZXMuCisgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNp
dGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAoVEVTVCk6IEFkZCBuZXcgV2Vic2l0
ZURhdGFTdG9yZUVwaGVtZXJhbCB0ZXN0LgorCiAyMDE4LTAxLTExICBKb25hdGhhbiBCZWRhcmQg
IDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogRml4IGZsYWtleSB3ZWJz
ZXJ2ZXIgdGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMJKHJldmlzaW9uIDIyNjgyMikKKysrIFRv
b2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBA
QCBjbGFzcyBHdGtUZXN0UnVubmVyKFRlc3RSdW5uZXIpOgogICAgICAgICBTa2lwcGVkVGVzdCgi
V2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvciIsICIvd2Via2l0Mi9XZWJLaXRXZWJWaWV3L2Vk
aXRhYmxlL2VkaXRhYmxlIiwgIlRlc3QgaGl0cyBhbiBhc3NlcnRpb24gaW4gRGVidWcgYnVpbGRz
IiwgMTUxNjU0LCAiRGVidWciKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsvVGVz
dFdlYkV4dGVuc2lvbnMiLCAiL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9pbnN0YWxsLW1pc3Npbmct
cGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVlc3QiLCAiVGVzdCB0aW1lcyBvdXQiLCAxNDc4MjIpLAog
ICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0V2Vic2l0ZURhdGEiLCAiL3dlYmtp
dDIvV2ViS2l0V2Vic2l0ZURhdGEvZGF0YWJhc2VzIiwgIlRlc3QgZmFpbHMgdG8gY2xlYXIgZGF0
YWJhc2UgZGF0YSIsIDE4MTI1MSksCi0gICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQyR3RrL1Rl
c3RXZWJzaXRlRGF0YSIsICIvd2Via2l0Mi9XZWJLaXRXZWJzaXRlRGF0YS9lcGhlbWVyYWwiLCAi
VGVzdCBoaXRzIGFuIGFzc2VydGlvbiBpbiBEZWJ1ZyBidWlsZHMiLCAxODExMzYsICJEZWJ1ZyIp
LAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQiLCAiV2ViS2l0Lk1vdXNl
TW92ZUFmdGVyQ3Jhc2giLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKICAgICAgICAgU2tpcHBl
ZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3VhbGx5Tm9uRW1w
dHlMYXlvdXRGb3JJbWFnZXMiLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKICAgICAgICAgU2tp
cHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlMYXlvdXRGcmFtZXMiLCAiVGVzdCBmYWlscyIsIDg1MDM3KSwKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhz
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCShyZXZpc2lvbiAyMjY4MjIpCisrKyBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDQgKzIxOSw0NiBAQCBURVNUKFdlYktpdCwg
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzCiAgICAgRVhQRUNUX0ZBTFNFKFtXS1dlYnNpdGVE
YXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKTsKIH0KIAorVEVTVChXZWJLaXQsIFdl
YnNpdGVEYXRhU3RvcmVFcGhlbWVyYWwpCit7CisgICAgUmV0YWluUHRyPFdlYnNpdGVEYXRhU3Rv
cmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1dlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgUmV0
YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlv
biB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhhbmRsZXIu
Z2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBOU1VSTCAqZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xpYnJhcnkv
V2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlzdGljcy8i
IHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisKKyAgICBb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BhdGggZXJyb3I6bmlsXTsKKworICAgIEVYUEVDVF9GQUxTRShb
W05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERh
dGFTdG9yZV07CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSBfc2V0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKworICAgIC8vIFdlIGV4cGVjdCB0
aGUgZGlyZWN0b3J5IHRvIGJlIGNyZWF0ZWQgYnkgc3RhcnRpbmcgdXAgdGhlIGRhdGEgc3RvcmUg
bWFjaGluZXJ5LCBidXQgbm90IHRoZSBkYXRhIGZpbGUuCisgICAgRVhQRUNUX1RSVUUoW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7CisKKyAgICBOU1VSTCAqZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NGaWxlUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9MaWJy
YXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL1Jlc291cmNlTG9hZFN0YXRpc3Rp
Y3MvZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0IiBzdHJpbmdCeUV4cGFu
ZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107CisgICAgRVhQRUNUX0ZBTFNFKFtbTlNG
aWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpbGVQYXRoLnBhdGhdKTsKKworICAgIFJldGFpblB0cjxXS1dlYlZp
ZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiV2Vic2l0ZURh
dGFTdG9yZUN1c3RvbVBhdGhzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29sXSBfc3lu
Y05ldHdvcmtQcm9jZXNzQ29va2llc107CisKKyAgICAvLyBGb3JjaWJseSBzaHV0IGRvd24gZXZl
cnl0aGluZyBvZiBXZWJLaXQgdGhhdCB3ZSBjYW4uCisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0
aW9uXSBwcm9jZXNzUG9vbF0gX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzXTsKKyAgICBhdXRvIHBp
ZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgaWYgKHBpZCkKKyAgICAg
ICAga2lsbChwaWQsIFNJR0tJTEwpOworCisgICAgd2ViVmlldyA9IG5pbDsKKyAgICBoYW5kbGVy
ID0gbmlsOworICAgIGNvbmZpZ3VyYXRpb24gPSBuaWw7CisKKyAgICBFWFBFQ1RfVFJVRShbW05T
RmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVsdFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tOU0ZpbGVN
YW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRmlsZVBhdGgucGF0aF0pOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331149</attachid>
            <date>2018-01-11 17:58:53 -0800</date>
            <delta_ts>2018-01-11 18:04:24 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181136-20180111175852.patch</filename>
            <type>text/plain</type>
            <size>21879</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTExICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgYmUgcmVhZC1v
bmx5IGluIGVwaGVtZXJhbCBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjExNjYw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBTb21lIHVz
ZXMgb2YgV2ViS2l0IGludm9sdmUgcnVubmluZyBhIFVJUHJvY2VzcyBhcyBhbiBlcGhlbWVyYWwg
c2Vzc2lvbiBmb3IgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3MuIEluIHRoaXMKKyAgICAgICAgY2Fz
ZSwgd2UgZG8gbm90IGluaXRpYWxpemUgdGhlIGRhdGEgcGF0aCBmb3IgdGhlIHNldCBvZiBsb2Fk
IHN0YXRpc3RpY3MgdHJpZ2dlcmluZyBhbiBhc3NlcnRpb24uCisKKyAgICAgICAgV2UgYWN0dWFs
bHkgaW50ZW5kZWQgZXBoZW1lcmFsIHNlc3Npb25zIHRvIGNvbnN1bWUgdGhlIGV4aXN0aW5nIHJl
c291cmNlIGxvYWQgZGF0YSAocHJlc3VtYWJseSBjYXB0dXJlZCBkdXJpbmcKKyAgICAgICAgbm9u
LWVwaGVtZXJhbCBicm93c2luZykuIFRoaXMgd291bGQgYmUgYSByZWFkLW9ubHkgbW9kZSwgd2hl
cmUgaXQgd291bGQgbm90IGFkZCBuZXcgZW50cmllcyB0byB0aGUgbG9hZAorICAgICAgICBzdGF0
aXN0aWNzLCBidXQgd291bGQgdGFrZSBhZHZhbnRhZ2Ugb2YgZXhpc3Rpbmcgb2JzZXJ2YXRpb25z
LiBDdXJyZW50bHkgdGhhdCBkb2VzIG5vdCBoYXBwZW4gKGZvciB0aGlzIHR5cGUKKyAgICAgICAg
b2YgV2ViS2l0IGVtYmVkKSwgd2hpY2ggZm9yY2VzIGVhY2ggcnVuIGFzIGFuIGVwaGVtZXJhbCBz
ZXNzaW9uIHRvIGJ1aWxkIHVwIGluLW1lbW9yeSBicm93c2luZyBkYXRhIHVudGlsIGl0IGhhcwor
ICAgICAgICBlbm91Z2ggb2JzZXJ2YXRpb25zIHRvIGJlZ2luIG1vZGlmeWluZyBsb2Fkcy4KKwor
ICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlIG9iamVjdCB0byBhICJyZWFkIG9ubHkiIG1vZGUgaW4gdGhpcyBjYXNlLCBzbwor
ICAgICAgICB0aGF0IGl0IHJlYWQgKGJ1dCBkb2VzIG5vdCB3cml0ZSkgZnJvbSB0aGlzIGRhdGFi
YXNlLgorCisgICAgICAgIFRlc3RlZCBieSBlcGhlbWVyYWwgd2Vic2l0ZSBkYXRhIFRlc3RXZWJL
aXRBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjcmVhdGUpOiBBZGRlZCB0byBhbGxvdyBjcmVhdGlv
biBvZiB0aGUgcmlnaHQgc3R5bGUgb2YKKyAgICAgICAgUGVyc2lzdGVudCBTdG9yYWdlLgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSk6IEluaXRpYWxpemUgdGhlCisg
ICAgICAgIG5ldyBkYXRhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCk6IFJFTEVBU0Vf
QVNTRVJUIHRoYXQgd2UgbmV2ZXIgcnVuCisgICAgICAgIHRoaXMgbWV0aG9kIHdoZW4gaW4gInJl
YWQgb25seSIgbW9kZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c2NoZWR1
bGVPcldyaXRlTWVtb3J5U3RvcmUpOiBSZXR1cm4gZWFybHkgaWYgYXNrZWQgdG8KKyAgICAgICAg
c2NoZWR1bGUgYSB3cml0ZSBvcGVyYXRpb24gZm9yIGEgInJlYWQgb25seSIgcGVyc2lzdGVudCBz
dG9yZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkpOiBSRUxFQVNFX0FTU0VS
VCBpZiB3ZQorICAgICAgICBldmVyIHNodXQgZG93biBpbiAicmVhZCBvbmx5IiBtb2RlIHdpdGgg
YW4gYWN0aXZlIHdyaXRlIHRpbWVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOiBQ
YXNzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCisgICAgICAgIHN0b3JhZ2Ugc2Vzc2lv
biBpcyBlcGhlbWVyYWwgb3Igbm90LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIy
Njc4OSBhbmQgcjIyNjc5NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miwx
MCArODIsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZQogICAg
IHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwogfQogCi1SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdl
RGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSBpc1JlYWRPbmx5KQogICAgIDogbV9tZW1vcnlTdG9y
ZShzdG9yZSkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZURpcmVjdG9yeVBh
dGgpCiAgICAgLCBtX2FzeW5jV3JpdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVk
KQorICAgICwgbV9pc1JlYWRPbmx5KGlzUmVhZE9ubHkpCiB7CiB9CiAKQEAgLTIzOSw2ICsyNDAs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRpbWVyRmlyZWQo
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9pc1JlYWRPbmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAgICAgbV9tZW1vcnlTdG9yZS5zdGF0
aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIHdyaXRl
TWVtb3J5U3RvcmVUb0Rpc2soKTsKICAgICB9KTsKQEAgLTI0Nyw2ICsyNDksNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc1JlYWRP
bmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAKICAgICBtX2hhc1BlbmRpbmdXcml0ZSA9IGZhbHNl
OwogICAgIHN0b3BNb25pdG9yaW5nRGlzaygpOwpAQCAtMjgxLDYgKzI4NCw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUlt
bWVkaWF0ZVdyaXRlIGZvcmNlSW1tZWRpYXRlV3JpdGUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgaWYgKG1faXNSZWFkT25seSA9PSBJc1JlYWRPbmx5OjpZZXMpCisg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGltZVNpbmNlTGFzdFdyaXRlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lOwogICAgIGlmIChmb3JjZUlt
bWVkaWF0ZVdyaXRlICE9IEZvcmNlSW1tZWRpYXRlV3JpdGU6OlllcyAmJiB0aW1lU2luY2VMYXN0
V3JpdGUgPCBtaW5pbXVtV3JpdGVJbnRlcnZhbCkgewpAQCAtMzEyLDYgKzMxNywxMSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9u
b3VzbHkoKQogeworICAgIGlmIChtX2lzUmVhZE9ubHkgPT0gSXNSZWFkT25seTo6WWVzKSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FzeW5jV3JpdGVUaW1lci5pc0FjdGl2ZSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fYXN5bmNXcml0ZVRpbWVyLnN0b3AoKTsKIAog
ICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuaAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDEsOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiAK
IGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSB7CiBwdWJsaWM6
Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgp
OworICAgIGVudW0gY2xhc3MgSXNSZWFkT25seSB7IE5vLCBZZXMgfTsKKyAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSk7CiAg
ICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAgdm9p
ZCBpbml0aWFsaXplKCk7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX2ZpbGVNb25pdG9yOwogICAgIFdhbGxUaW1l
IG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWU7CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RT
dGF0aXN0aWNzV3JpdGVUaW1lOworICAgIElzUmVhZE9ubHkgbV9pc1JlYWRPbmx5IHsgSXNSZWFk
T25seTo6Tm8gfTsKICAgICBib29sIG1faGFzUGVuZGluZ1dyaXRlIHsgZmFsc2UgfTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE0Nyw5ICsxNDcsOSBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+
IG1lcmdlT3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBT
dHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJl
bW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCitXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFs
LCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIm
JiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIs
IEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYg
cmVtb3ZlRG9tYWluc0hhbmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1
ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCi0g
ICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KQorICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgaXNFcGhlbWVyYWwgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6OklzUmVhZE9ubHk6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6SXNSZWFkT25seTo6Tm8pCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAgLCBt
X2hhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKSkKICAgICAsIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1
LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2sp
PjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6
RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNpbmcg
UmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ss
IFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYm
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9
IFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIm
JiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29s
KT4mJikgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNI
YW5kbGVyID0gW10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQorICAgIHN0YXRpYyBSZWY8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
KT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFNo
b3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikg
eyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1vdmVQ
cmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIGlz
RXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxv
Y2tDb29raWVzSGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
ciksIFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShy
ZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVu
dERvbWFpbnNIYW5kbGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShj
b25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxs
YmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIm
JiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERv
bWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCkBAIC03OCw2ICs3OSwxMSBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vi
c2l0ZURhdGFTdG9yZTo6CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9y
ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKIH0KIAorV2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCisgICAgOiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKK3sKK30KKwogV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fY29uZmln
dXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQpAQCAtMTQwMSw3ICsxNDA3LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogICAgIH0KIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9C
bG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JC
bG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
bV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRp
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZp
cnN0IHNob3VsZENsZWFyRmlyc3QpIHsKICAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9j
aywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsK
ICAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNDExLDcgKzE0MTcsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hCiAgICAgICAgIHJlbW92ZVByZXZh
bGVudERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKICAgICB9KTsKICNlbHNlCi0gICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIG1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDYgKzg2LDkgQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgY29va2llU3RvcmFnZUZpbGU7CisKKyAg
ICAgICAgZXhwbGljaXQgQ29uZmlndXJhdGlvbigpOworICAgICAgICBDb25maWd1cmF0aW9uKGNv
bnN0IENvbmZpZ3VyYXRpb24mKSA9IGRlZmF1bHQ7CiAgICAgfTsKICAgICBzdGF0aWMgUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IGNyZWF0ZU5vblBlcnNpc3RlbnQoKTsKICAgICBzdGF0aWMgUmVmPFdl
YnNpdGVEYXRhU3RvcmU+IGNyZWF0ZShDb25maWd1cmF0aW9uLCBQQUw6OlNlc3Npb25JRCk7Cklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjY4MjIpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxOSBAQAorMjAxOC0wMS0xMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4K
KworICAgICAgICBSRUdSRVNTSU9OKHIyMTk1MzApOiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2Ugc2hvdWxkIGJlIHJlYWQtb25seSBpbiBlcGhlbWVyYWwgc2Vzc2lvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTEzNgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzYxMTY2MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Q2hyaXMgRHVtZXouCisKKyAgICAgICAgQWRkIGEgbmV3IEFQSSB0ZXN0IHRvIGNvbmZpcm0gdGhh
dCBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGNhbiBiZSB0dXJuZWQgb24gc2FmZWx5IGZvciBlcGhl
bWVyYWwKKyAgICAgICAgYnJvd3Npbmcgc2Vzc2lvbnMuCisKKyAgICAgICAgKiBTY3JpcHRzL3J1
bi1ndGstdGVzdHM6CisgICAgICAgIChHdGtUZXN0UnVubmVyKTogVW5za2lwIHRlc3Qgbm93IHRo
YXQgaXQgcGFzc2VzLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
V2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tOgorICAgICAgICAoVEVTVCk6IEFkZCBuZXcg
V2Vic2l0ZURhdGFTdG9yZUVwaGVtZXJhbCB0ZXN0LgorCiAyMDE4LTAxLTExICBKb25hdGhhbiBC
ZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJraXRweTogRml4IGZsYWtl
eSB3ZWJzZXJ2ZXIgdGVzdHMKSW5kZXg6IFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMJKHJldmlzaW9uIDIyNjgyMikK
KysrIFRvb2xzL1NjcmlwdHMvcnVuLWd0ay10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtNDMsNyAr
NDMsNiBAQCBjbGFzcyBHdGtUZXN0UnVubmVyKFRlc3RSdW5uZXIpOgogICAgICAgICBTa2lwcGVk
VGVzdCgiV2ViS2l0Mkd0ay9UZXN0V2ViVmlld0VkaXRvciIsICIvd2Via2l0Mi9XZWJLaXRXZWJW
aWV3L2VkaXRhYmxlL2VkaXRhYmxlIiwgIlRlc3QgaGl0cyBhbiBhc3NlcnRpb24gaW4gRGVidWcg
YnVpbGRzIiwgMTUxNjU0LCAiRGVidWciKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJH
dGsvVGVzdFdlYkV4dGVuc2lvbnMiLCAiL3dlYmtpdDIvV2ViS2l0V2ViVmlldy9pbnN0YWxsLW1p
c3NpbmctcGx1Z2lucy1wZXJtaXNzaW9uLXJlcXVlc3QiLCAiVGVzdCB0aW1lcyBvdXQiLCAxNDc4
MjIpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0Mkd0ay9UZXN0V2Vic2l0ZURhdGEiLCAi
L3dlYmtpdDIvV2ViS2l0V2Vic2l0ZURhdGEvZGF0YWJhc2VzIiwgIlRlc3QgZmFpbHMgdG8gY2xl
YXIgZGF0YWJhc2UgZGF0YSIsIDE4MTI1MSksCi0gICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQy
R3RrL1Rlc3RXZWJzaXRlRGF0YSIsICIvd2Via2l0Mi9XZWJLaXRXZWJzaXRlRGF0YS9lcGhlbWVy
YWwiLCAiVGVzdCBoaXRzIGFuIGFzc2VydGlvbiBpbiBEZWJ1ZyBidWlsZHMiLCAxODExMzYsICJE
ZWJ1ZyIpLAogICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0L1Rlc3RXZWJLaXQiLCAiV2ViS2l0
Lk1vdXNlTW92ZUFmdGVyQ3Jhc2giLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKICAgICAgICAg
U2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3VhbGx5
Tm9uRW1wdHlMYXlvdXRGb3JJbWFnZXMiLCAiVGVzdCBpcyBmbGFreSIsIDg1MDY2KSwKICAgICAg
ICAgU2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktpdC5OZXdGaXJzdFZpc3Vh
bGx5Tm9uRW1wdHlMYXlvdXRGcmFtZXMiLCAiVGVzdCBmYWlscyIsIDg1MDM3KSwKSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3Rv
bVBhdGhzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tCShyZXZpc2lvbiAyMjY4MjIpCisr
KyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVD
dXN0b21QYXRocy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE5LDQgKzIxOSw0NiBAQCBURVNUKFdl
YktpdCwgV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzCiAgICAgRVhQRUNUX0ZBTFNFKFtXS1dl
YnNpdGVEYXRhU3RvcmUgX2RlZmF1bHREYXRhU3RvcmVFeGlzdHNdKTsKIH0KIAorVEVTVChXZWJL
aXQsIFdlYnNpdGVEYXRhU3RvcmVFcGhlbWVyYWwpCit7CisgICAgUmV0YWluUHRyPFdlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyPiBoYW5kbGVyID0gYWRvcHROUyhbW1dl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRoc01lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgUmV0YWluUHRyPFdLV2ViVmlld0NvbmZpZ3VyYXRpb24+IGNvbmZpZ3VyYXRpb24gPSBhZG9w
dE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmln
dXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOmhh
bmRsZXIuZ2V0KCkgbmFtZTpAInRlc3RIYW5kbGVyIl07CisKKyAgICBOU1VSTCAqZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQYXRoID0gW05TVVJMIGZpbGVVUkxXaXRoUGF0aDpbQCJ+L0xp
YnJhcnkvV2ViS2l0L1Rlc3RXZWJLaXRBUEkvV2Vic2l0ZURhdGEvUmVzb3VyY2VMb2FkU3RhdGlz
dGljcy8iIHN0cmluZ0J5RXhwYW5kaW5nVGlsZGVJblBhdGhdIGlzRGlyZWN0b3J5OllFU107CisK
KyAgICBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIHJlbW92ZUl0ZW1BdFVSTDpkZWZh
dWx0UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGggZXJyb3I6bmlsXTsKKworICAgIEVYUEVDVF9G
QUxTRShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKworICAgIGNvbmZpZ3VyYXRp
b24uZ2V0KCkud2Vic2l0ZURhdGFTdG9yZSA9IFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lz
dGVudERhdGFTdG9yZV07CisgICAgW2NvbmZpZ3VyYXRpb24uZ2V0KCkud2Vic2l0ZURhdGFTdG9y
ZSBfc2V0UmVzb3VyY2VMb2FkU3RhdGlzdGljc0VuYWJsZWQ6WUVTXTsKKworICAgIC8vIFdlIGV4
cGVjdCB0aGUgZGlyZWN0b3J5IHRvIGJlIGNyZWF0ZWQgYnkgc3RhcnRpbmcgdXAgdGhlIGRhdGEg
c3RvcmUgbWFjaGluZXJ5LCBidXQgbm90IHRoZSBkYXRhIGZpbGUuCisgICAgRVhQRUNUX1RSVUUo
W1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7CisKKyAgICBOU1VSTCAqZGVmYXVsdFJl
c291cmNlTG9hZFN0YXRpc3RpY3NGaWxlUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Ai
fi9MaWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL1Jlc291cmNlTG9hZFN0
YXRpc3RpY3MvZnVsbF9icm93c2luZ19zZXNzaW9uX3Jlc291cmNlTG9nLnBsaXN0IiBzdHJpbmdC
eUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpOT107CisgICAgRVhQRUNUX0ZBTFNF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc0ZpbGVQYXRoLnBhdGhdKTsKKworICAgIFJldGFpblB0cjxX
S1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiV2Vi
c2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0
b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6cmVxdWVzdF07CisKKyAgICBbW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dIHByb2Nlc3NQb29s
XSBfc3luY05ldHdvcmtQcm9jZXNzQ29va2llc107CisKKyAgICAvLyBGb3JjaWJseSBzaHV0IGRv
d24gZXZlcnl0aGluZyBvZiBXZWJLaXQgdGhhdCB3ZSBjYW4uCisgICAgW1tbd2ViVmlldyBjb25m
aWd1cmF0aW9uXSBwcm9jZXNzUG9vbF0gX3Rlcm1pbmF0ZVN0b3JhZ2VQcm9jZXNzXTsKKyAgICBh
dXRvIHBpZCA9IFt3ZWJWaWV3IF93ZWJQcm9jZXNzSWRlbnRpZmllcl07CisgICAgaWYgKHBpZCkK
KyAgICAgICAga2lsbChwaWQsIFNJR0tJTEwpOworCisgICAgd2ViVmlldyA9IG5pbDsKKyAgICBo
YW5kbGVyID0gbmlsOworICAgIGNvbmZpZ3VyYXRpb24gPSBuaWw7CisKKyAgICBFWFBFQ1RfVFJV
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoLnBhdGhdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW1tO
U0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1bHRSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRmlsZVBhdGgucGF0aF0pOworfQorCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>331150</attachid>
            <date>2018-01-11 18:04:28 -0800</date>
            <delta_ts>2018-01-11 19:13:11 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181136-20180111180427.patch</filename>
            <type>text/plain</type>
            <size>21823</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQzIEBACisyMDE4LTAxLTExICBCcmVudCBGdWxn
aGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxOTUzMCk6
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSBzaG91bGQgYmUgcmVhZC1v
bmx5IGluIGVwaGVtZXJhbCBzZXNzaW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTM2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjExNjYw
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICBTb21lIHVz
ZXMgb2YgV2ViS2l0IGludm9sdmUgcnVubmluZyBhIFVJUHJvY2VzcyBhcyBhbiBlcGhlbWVyYWwg
c2Vzc2lvbiBmb3IgdGhlIGxpZmUgb2YgdGhlIHByb2Nlc3MuIEluIHRoaXMKKyAgICAgICAgY2Fz
ZSwgd2UgZG8gbm90IGluaXRpYWxpemUgdGhlIGRhdGEgcGF0aCBmb3IgdGhlIHNldCBvZiBsb2Fk
IHN0YXRpc3RpY3MgdHJpZ2dlcmluZyBhbiBhc3NlcnRpb24uCisKKyAgICAgICAgV2UgYWN0dWFs
bHkgaW50ZW5kZWQgZXBoZW1lcmFsIHNlc3Npb25zIHRvIGNvbnN1bWUgdGhlIGV4aXN0aW5nIHJl
c291cmNlIGxvYWQgZGF0YSAocHJlc3VtYWJseSBjYXB0dXJlZCBkdXJpbmcKKyAgICAgICAgbm9u
LWVwaGVtZXJhbCBicm93c2luZykuIFRoaXMgd291bGQgYmUgYSByZWFkLW9ubHkgbW9kZSwgd2hl
cmUgaXQgd291bGQgbm90IGFkZCBuZXcgZW50cmllcyB0byB0aGUgbG9hZAorICAgICAgICBzdGF0
aXN0aWNzLCBidXQgd291bGQgdGFrZSBhZHZhbnRhZ2Ugb2YgZXhpc3Rpbmcgb2JzZXJ2YXRpb25z
LiBDdXJyZW50bHkgdGhhdCBkb2VzIG5vdCBoYXBwZW4gKGZvciB0aGlzIHR5cGUKKyAgICAgICAg
b2YgV2ViS2l0IGVtYmVkKSwgd2hpY2ggZm9yY2VzIGVhY2ggcnVuIGFzIGFuIGVwaGVtZXJhbCBz
ZXNzaW9uIHRvIGJ1aWxkIHVwIGluLW1lbW9yeSBicm93c2luZyBkYXRhIHVudGlsIGl0IGhhcwor
ICAgICAgICBlbm91Z2ggb2JzZXJ2YXRpb25zIHRvIGJlZ2luIG1vZGlmeWluZyBsb2Fkcy4KKwor
ICAgICAgICBXZSBuZWVkIHRvIHNldCB0aGUgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3Rl
bnRTdG9yYWdlIG9iamVjdCB0byBhICJyZWFkIG9ubHkiIG1vZGUgaW4gdGhpcyBjYXNlLCBzbwor
ICAgICAgICB0aGF0IGl0IHJlYWQgKGJ1dCBkb2VzIG5vdCB3cml0ZSkgZnJvbSB0aGlzIGRhdGFi
YXNlLgorCisgICAgICAgIFRlc3RlZCBieSBlcGhlbWVyYWwgd2Vic2l0ZSBkYXRhIFRlc3RXZWJL
aXRBUEkgdGVzdHMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c1BlcnNpc3RlbnRTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpjcmVhdGUpOiBBZGRlZCB0byBhbGxvdyBjcmVhdGlv
biBvZiB0aGUgcmlnaHQgc3R5bGUgb2YKKyAgICAgICAgUGVyc2lzdGVudCBTdG9yYWdlLgorICAg
ICAgICAoV2ViS2l0OjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OlJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSk6IEluaXRpYWxpemUgdGhlCisg
ICAgICAgIG5ldyBkYXRhIG1lbWJlci4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjphc3luY1dyaXRlVGltZXJGaXJlZCk6IFJFTEVBU0Vf
QVNTRVJUIHRoYXQgd2UgbmV2ZXIgcnVuCisgICAgICAgIHRoaXMgbWV0aG9kIHdoZW4gaW4gInJl
YWQgb25seSIgbW9kZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlOjp3cml0ZU1lbW9yeVN0b3JlVG9EaXNrKTogRGl0dG8uCisgICAgICAg
IChXZWJLaXQ6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6c2NoZWR1
bGVPcldyaXRlTWVtb3J5U3RvcmUpOiBSZXR1cm4gZWFybHkgaWYgYXNrZWQgdG8KKyAgICAgICAg
c2NoZWR1bGUgYSB3cml0ZSBvcGVyYXRpb24gZm9yIGEgInJlYWQgb25seSIgcGVyc2lzdGVudCBz
dG9yZS4KKyAgICAgICAgKFdlYktpdDo6UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRT
dG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9ub3VzbHkpOiBSRUxFQVNFX0FTU0VS
VCBpZiB3ZQorICAgICAgICBldmVyIHNodXQgZG93biBpbiAicmVhZCBvbmx5IiBtb2RlIHdpdGgg
YW4gYWN0aXZlIHdyaXRlIHRpbWVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlOjpXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUpOiBQ
YXNzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCisgICAgICAgIHN0b3JhZ2Ugc2Vzc2lv
biBpcyBlcGhlbWVyYWwgb3Igbm90LgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaDoKKwogMjAxOC0wMS0xMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIy
Njc4OSBhbmQgcjIyNjc5NC4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdl
LmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC04Miwx
MCArODIsMTEgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxLZXllZERlY29kZXI+IGNyZQogICAg
IHJldHVybiBLZXllZERlY29kZXI6OmRlY29kZXIocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50
OF90Kj4oYnVmZmVyLmRhdGEoKSksIGJ1ZmZlci5zaXplKCkpOwogfQogCi1SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OlJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0
ZW50U3RvcmFnZShXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUmIHN0b3JlLCBjb25zdCBT
dHJpbmcmIHN0b3JhZ2VEaXJlY3RvcnlQYXRoKQorUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNp
c3RlbnRTdG9yYWdlOjpSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2Vi
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlJiBzdG9yZSwgY29uc3QgU3RyaW5nJiBzdG9yYWdl
RGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSBpc1JlYWRPbmx5KQogICAgIDogbV9tZW1vcnlTdG9y
ZShzdG9yZSkKICAgICAsIG1fc3RvcmFnZURpcmVjdG9yeVBhdGgoc3RvcmFnZURpcmVjdG9yeVBh
dGgpCiAgICAgLCBtX2FzeW5jV3JpdGVUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZSZXNv
dXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2U6OmFzeW5jV3JpdGVUaW1lckZpcmVk
KQorICAgICwgbV9pc1JlYWRPbmx5KGlzUmVhZE9ubHkpCiB7CiB9CiAKQEAgLTIzOSw2ICsyNDAs
NyBAQCB2b2lkIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291
cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6YXN5bmNXcml0ZVRpbWVyRmlyZWQo
KQogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQo
bV9pc1JlYWRPbmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAgICAgbV9tZW1vcnlTdG9yZS5zdGF0
aXN0aWNzUXVldWUoKS5kaXNwYXRjaChbdGhpc10gKCkgbXV0YWJsZSB7CiAgICAgICAgIHdyaXRl
TWVtb3J5U3RvcmVUb0Rpc2soKTsKICAgICB9KTsKQEAgLTI0Nyw2ICsyNDksNyBAQCB2b2lkIFJl
c291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiB2b2lkIFJlc291cmNlTG9hZFN0YXRp
c3RpY3NQZXJzaXN0ZW50U3RvcmFnZTo6d3JpdGVNZW1vcnlTdG9yZVRvRGlzaygpCiB7CiAgICAg
QVNTRVJUKCFSdW5Mb29wOjppc01haW4oKSk7CisgICAgUkVMRUFTRV9BU1NFUlQobV9pc1JlYWRP
bmx5ICE9IElzUmVhZE9ubHk6Olllcyk7CiAKICAgICBtX2hhc1BlbmRpbmdXcml0ZSA9IGZhbHNl
OwogICAgIHN0b3BNb25pdG9yaW5nRGlzaygpOwpAQCAtMjgxLDYgKzI4NCw4IEBAIHZvaWQgUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG8KIHZvaWQgUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1BlcnNpc3RlbnRTdG9yYWdlOjpzY2hlZHVsZU9yV3JpdGVNZW1vcnlTdG9yZShGb3JjZUlt
bWVkaWF0ZVdyaXRlIGZvcmNlSW1tZWRpYXRlV3JpdGUpCiB7CiAgICAgQVNTRVJUKCFSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgaWYgKG1faXNSZWFkT25seSA9PSBJc1JlYWRPbmx5OjpZZXMpCisg
ICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGltZVNpbmNlTGFzdFdyaXRlID0gTW9ub3Rvbmlj
VGltZTo6bm93KCkgLSBtX2xhc3RTdGF0aXN0aWNzV3JpdGVUaW1lOwogICAgIGlmIChmb3JjZUlt
bWVkaWF0ZVdyaXRlICE9IEZvcmNlSW1tZWRpYXRlV3JpdGU6OlllcyAmJiB0aW1lU2luY2VMYXN0
V3JpdGUgPCBtaW5pbXVtV3JpdGVJbnRlcnZhbCkgewpAQCAtMzEyLDYgKzMxNywxMSBAQCB2b2lk
IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvCiAKIHZvaWQgUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlOjpmaW5pc2hBbGxQZW5kaW5nV29ya1N5bmNocm9u
b3VzbHkoKQogeworICAgIGlmIChtX2lzUmVhZE9ubHkgPT0gSXNSZWFkT25seTo6WWVzKSB7Cisg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2FzeW5jV3JpdGVUaW1lci5pc0FjdGl2ZSgpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIG1fYXN5bmNXcml0ZVRpbWVyLnN0b3AoKTsKIAog
ICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVyc2lz
dGVudFN0b3JhZ2UuaAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNDEsNyArNDEsOCBAQCBjbGFzcyBXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU7CiAK
IGNsYXNzIFJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSB7CiBwdWJsaWM6
Ci0gICAgUmVzb3VyY2VMb2FkU3RhdGlzdGljc1BlcnNpc3RlbnRTdG9yYWdlKFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZSYsIGNvbnN0IFN0cmluZyYgc3RvcmFnZURpcmVjdG9yeVBhdGgp
OworICAgIGVudW0gY2xhc3MgSXNSZWFkT25seSB7IE5vLCBZZXMgfTsKKyAgICBSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzUGVyc2lzdGVudFN0b3JhZ2UoV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlJiwgY29uc3QgU3RyaW5nJiBzdG9yYWdlRGlyZWN0b3J5UGF0aCwgSXNSZWFkT25seSk7CiAg
ICAgflJlc291cmNlTG9hZFN0YXRpc3RpY3NQZXJzaXN0ZW50U3RvcmFnZSgpOwogCiAgICAgdm9p
ZCBpbml0aWFsaXplKCk7CkBAIC03OCw2ICs3OSw3IEBAIHByaXZhdGU6CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFdlYkNvcmU6OkZpbGVNb25pdG9yPiBtX2ZpbGVNb25pdG9yOwogICAgIFdhbGxUaW1l
IG1fbGFzdFN0YXRpc3RpY3NGaWxlU3luY1RpbWU7CiAgICAgTW9ub3RvbmljVGltZSBtX2xhc3RT
dGF0aXN0aWNzV3JpdGVUaW1lOworICAgIElzUmVhZE9ubHkgbV9pc1JlYWRPbmx5IHsgSXNSZWFk
T25seTo6Tm8gfTsKICAgICBib29sIG1faGFzUGVuZGluZ1dyaXRlIHsgZmFsc2UgfTsKIH07CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NT
dG9yZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAx
OCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTE0Nyw5ICsxNDcsOSBAQCBzdGF0aWMgVmVjdG9yPE9wZXJhdGluZ0RhdGU+
IG1lcmdlT3BlcmF0CiAgICAgcmV0dXJuIG1lcmdlZERhdGVzOwogfQogCi1XZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBT
dHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9uPHZvaWQoY29u
c3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXImJiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9Q
YXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJl
bW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYgcmVtb3ZlRG9tYWluc0hhbmRsZXIpCitXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmU6OldlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9y
ZShjb25zdCBTdHJpbmcmIHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIEZ1bmN0aW9u
PHZvaWQoY29uc3QgU3RyaW5nJik+JiYgdGVzdGluZ0NhbGxiYWNrLCBib29sIGlzRXBoZW1lcmFs
LCBVcGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIm
JiB1cGRhdGVQcmV2YWxlbnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIs
IEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBoYXNTdG9yYWdlQWNjZXNzRm9yRnJh
bWVIYW5kbGVyLCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3Jh
Z2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIsIFJlbW92ZVByZXZhbGVudERvbWFpbnNIYW5kbGVyJiYg
cmVtb3ZlRG9tYWluc0hhbmRsZXIpCiAgICAgOiBtX3N0YXRpc3RpY3NRdWV1ZShXb3JrUXVldWU6
OmNyZWF0ZSgiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlIFByb2Nlc3MgRGF0YSBRdWV1
ZSIsIFdvcmtRdWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCi0g
ICAgLCBtX3BlcnNpc3RlbnRTdG9yYWdlKCp0aGlzLCByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5KQorICAgICwgbV9wZXJzaXN0ZW50U3RvcmFnZSgqdGhpcywgcmVzb3VyY2VMb2FkU3Rh
dGlzdGljc0RpcmVjdG9yeSwgaXNFcGhlbWVyYWwgPyBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGVy
c2lzdGVudFN0b3JhZ2U6OklzUmVhZE9ubHk6OlllcyA6IFJlc291cmNlTG9hZFN0YXRpc3RpY3NQ
ZXJzaXN0ZW50U3RvcmFnZTo6SXNSZWFkT25seTo6Tm8pCiAgICAgLCBtX3VwZGF0ZVByZXZhbGVu
dERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcihXVEZNb3ZlKHVwZGF0ZVBy
ZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlcikpCiAgICAgLCBt
X2hhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIoV1RGTW92ZShoYXNTdG9yYWdlQWNjZXNz
Rm9yRnJhbWVIYW5kbGVyKSkKICAgICAsIG1fZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5k
bGVyKFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1
LDkgKzY1LDkgQEAgcHVibGljOgogICAgIHVzaW5nIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhh
bmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwg
Y29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRf
dCBwYWdlSUQsIFdURjo6RnVuY3Rpb248dm9pZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2sp
PjsKICAgICB1c2luZyBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBXVEY6OkZ1
bmN0aW9uPHZvaWQoY29uc3QgU3RyaW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBm
aXJzdFBhcnR5RG9tYWluLCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6
RnVuY3Rpb248dm9pZChib29sIHdhc0dyYW50ZWQpPiYmIGNhbGxiYWNrKT47CiAgICAgdXNpbmcg
UmVtb3ZlUHJldmFsZW50RG9tYWluc0hhbmRsZXIgPSBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jik+OwotICAgIHN0YXRpYyBSZWY8V2ViUmVzb3VyY2VMb2FkU3RhdGlz
dGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGly
ZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmKT4mJiB0ZXN0aW5nQ2FsbGJhY2ss
IFVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYm
IHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9
IFtdKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBW
ZWN0b3I8U3RyaW5nPiYsIFNob3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lSGFuZGxlciYmIGhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25z
dCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rp
b248dm9pZChib29sKT4mJikgeyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIm
JiBncmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBj
b25zdCBTdHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29s
KT4mJikgeyB9LCBSZW1vdmVQcmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNI
YW5kbGVyID0gW10gKGNvbnN0IFZlY3RvcjxTdHJpbmc+JikgeyB9KQorICAgIHN0YXRpYyBSZWY8
V2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlPiBjcmVhdGUoY29uc3QgU3RyaW5nJiByZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
KT4mJiB0ZXN0aW5nQ2FsbGJhY2ssIGJvb2wgaXNFcGhlbWVyYWwsIFVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciYmIHVwZGF0ZVByZXZhbGVudERv
bWFpbnNUb1BhcnRpdGlvbk9yQmxvY2tDb29raWVzSGFuZGxlciA9IFtdKGNvbnN0IFZlY3RvcjxT
dHJpbmc+JiwgY29uc3QgVmVjdG9yPFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYsIFNo
b3VsZENsZWFyRmlyc3QpIHsgfSwgSGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxlciYmIGhh
c1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCB1aW50NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikg
eyB9LCBHcmFudFN0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXImJiBncmFudFN0b3JhZ2VBY2Nl
c3NGb3JGcmFtZUhhbmRsZXIgPSBbXShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCB1aW50
NjRfdCwgdWludDY0X3QsIFdURjo6RnVuY3Rpb248dm9pZChib29sKT4mJikgeyB9LCBSZW1vdmVQ
cmV2YWxlbnREb21haW5zSGFuZGxlciYmIHJlbW92ZURvbWFpbnNIYW5kbGVyID0gW10gKGNvbnN0
IFZlY3RvcjxTdHJpbmc+JikgeyB9KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NE
aXJlY3RvcnksIFdURk1vdmUodGVzdGluZ0NhbGxiYWNrKSwgV1RGTW92ZSh1cGRhdGVQcmV2YWxl
bnREb21haW5zVG9QYXJ0aXRpb25PckJsb2NrQ29va2llc0hhbmRsZXIpLCBXVEZNb3ZlKGhhc1N0
b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIpLCBXVEZNb3ZlKGdyYW50U3RvcmFnZUFjY2Vzc0Zv
ckZyYW1lSGFuZGxlciksIFdURk1vdmUocmVtb3ZlRG9tYWluc0hhbmRsZXIpKSk7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKHRlc3RpbmdDYWxsYmFjayksIGlz
RXBoZW1lcmFsLCBXVEZNb3ZlKHVwZGF0ZVByZXZhbGVudERvbWFpbnNUb1BhcnRpdGlvbk9yQmxv
Y2tDb29raWVzSGFuZGxlciksIFdURk1vdmUoaGFzU3RvcmFnZUFjY2Vzc0ZvckZyYW1lSGFuZGxl
ciksIFdURk1vdmUoZ3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyKSwgV1RGTW92ZShy
ZW1vdmVEb21haW5zSGFuZGxlcikpKTsKICAgICB9CiAKICAgICB+V2ViUmVzb3VyY2VMb2FkU3Rh
dGlzdGljc1N0b3JlKCk7CkBAIC0xNDMsNyArMTQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgbG9n
VGVzdGluZ0V2ZW50KGNvbnN0IFN0cmluZyYpOwogCiBwcml2YXRlOgotICAgIFdlYlJlc291cmNl
TG9hZFN0YXRpc3RpY3NTdG9yZShjb25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0
cmluZyYpPiYmIHRlc3RpbmdDYWxsYmFjaywgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0
aW9uT3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRs
ZXImJiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVu
dERvbWFpbnNIYW5kbGVyJiYpOworICAgIFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZShj
b25zdCBTdHJpbmcmLCBGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmIHRlc3RpbmdDYWxs
YmFjaywgYm9vbCBpc0VwaGVtZXJhbCwgVXBkYXRlUHJldmFsZW50RG9tYWluc1RvUGFydGl0aW9u
T3JCbG9ja0Nvb2tpZXNIYW5kbGVyJiYsIEhhc1N0b3JhZ2VBY2Nlc3NGb3JGcmFtZUhhbmRsZXIm
JiwgR3JhbnRTdG9yYWdlQWNjZXNzRm9yRnJhbWVIYW5kbGVyJiYsIFJlbW92ZVByZXZhbGVudERv
bWFpbnNIYW5kbGVyJiYpOwogCiAgICAgdm9pZCByZW1vdmVEYXRhUmVjb3JkcygpOwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmNwcAkocmV2aXNpb24gMjI2ODIyKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIkFQSVdlYnNpdGVEYXRhUmVjb3JkLmgiCisjaW5jbHVkZSAiQVBJV2Vic2l0
ZURhdGFTdG9yZS5oIgogI2luY2x1ZGUgIk5ldHdvcmtQcm9jZXNzTWVzc2FnZXMuaCIKICNpbmNs
dWRlICJTdG9yYWdlTWFuYWdlci5oIgogI2luY2x1ZGUgIlN0b3JhZ2VQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmgiCkBAIC03OCw2ICs3OSwxMSBAQCBSZWY8V2Vic2l0ZURhdGFTdG9yZT4gV2Vi
c2l0ZURhdGFTdG9yZTo6CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2Vic2l0ZURhdGFTdG9y
ZShXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pLCBzZXNzaW9uSUQpKTsKIH0KIAorV2Vic2l0ZURhdGFT
dG9yZTo6Q29uZmlndXJhdGlvbjo6Q29uZmlndXJhdGlvbigpCisgICAgOiByZXNvdXJjZUxvYWRT
dGF0aXN0aWNzRGlyZWN0b3J5KEFQSTo6V2Vic2l0ZURhdGFTdG9yZTo6ZGVmYXVsdFJlc291cmNl
TG9hZFN0YXRpc3RpY3NEaXJlY3RvcnkoKSkKK3sKK30KKwogV2Vic2l0ZURhdGFTdG9yZTo6V2Vi
c2l0ZURhdGFTdG9yZShDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sIFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCkKICAgICA6IG1fc2Vzc2lvbklEKHNlc3Npb25JRCkKICAgICAsIG1fY29uZmln
dXJhdGlvbihXVEZNb3ZlKGNvbmZpZ3VyYXRpb24pKQpAQCAtMTQwMSw3ICsxNDA3LDcgQEAgdm9p
ZCBXZWJzaXRlRGF0YVN0b3JlOjplbmFibGVSZXNvdXJjZUxvYQogICAgIH0KIAogI2lmIEhBVkUo
Q0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5HKQotICAgIG1fcmVzb3VyY2VMb2FkU3RhdGlz
dGljcyA9IFdlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZTo6Y3JlYXRlKG1fY29uZmlndXJh
dGlvbi5yZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5LCBXVEZNb3ZlKGNhbGxiYWNrKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0gKGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBkb21haW5zVG9QYXJ0aXRpb24sIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkb21haW5zVG9C
bG9jaywgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb05laXRoZXJQYXJ0aXRpb25Ob3JC
bG9jaywgU2hvdWxkQ2xlYXJGaXJzdCBzaG91bGRDbGVhckZpcnN0KSB7CisgICAgbV9yZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVhdGUo
bV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1vdmUo
Y2FsbGJhY2spLCBtX3Nlc3Npb25JRC5pc0VwaGVtZXJhbCgpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb1BhcnRp
dGlvbiwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGRvbWFpbnNUb0Jsb2NrLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBTaG91bGRDbGVhckZp
cnN0IHNob3VsZENsZWFyRmlyc3QpIHsKICAgICAgICAgdXBkYXRlUHJldmFsZW50RG9tYWluc1Rv
UGFydGl0aW9uT3JCbG9ja0Nvb2tpZXMoZG9tYWluc1RvUGFydGl0aW9uLCBkb21haW5zVG9CbG9j
aywgZG9tYWluc1RvTmVpdGhlclBhcnRpdGlvbk5vckJsb2NrLCBzaG91bGRDbGVhckZpcnN0KTsK
ICAgICB9LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpXSAoY29uc3QgU3Ry
aW5nJiByZXNvdXJjZURvbWFpbiwgY29uc3QgU3RyaW5nJiBmaXJzdFBhcnR5RG9tYWluLCB1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBwYWdlSUQsIFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGhhc0FjY2Vzcyk+JiYgY2FsbGJhY2spIHsKICAgICAgICAgaGFzU3RvcmFnZUFjY2Vz
c0ZvckZyYW1lSGFuZGxlcihyZXNvdXJjZURvbWFpbiwgZmlyc3RQYXJ0eURvbWFpbiwgZnJhbWVJ
RCwgcGFnZUlELCBXVEZNb3ZlKGNhbGxiYWNrKSk7CkBAIC0xNDExLDcgKzE0MTcsNyBAQCB2b2lk
IFdlYnNpdGVEYXRhU3RvcmU6OmVuYWJsZVJlc291cmNlTG9hCiAgICAgICAgIHJlbW92ZVByZXZh
bGVudERvbWFpbnMoZG9tYWluc1RvUmVtb3ZlKTsKICAgICB9KTsKICNlbHNlCi0gICAgbV9yZXNv
dXJjZUxvYWRTdGF0aXN0aWNzID0gV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlOjpjcmVh
dGUobV9jb25maWd1cmF0aW9uLnJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnksIFdURk1v
dmUoY2FsbGJhY2spKTsKKyAgICBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3MgPSBXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmU6OmNyZWF0ZShtX2NvbmZpZ3VyYXRpb24ucmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RpcmVjdG9yeSwgV1RGTW92ZShjYWxsYmFjayksIG1fc2Vzc2lvbklELmlzRXBo
ZW1lcmFsKCkpOwogI2VuZGlmCiAKICAgICBmb3IgKGF1dG8mIHByb2Nlc3NQb29sIDogcHJvY2Vz
c1Bvb2xzKCkpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
c2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5oCShyZXZpc2lvbiAyMjY4MjIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogICAgICAgICBTdHJpbmcgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RpcmVjdG9yeTsKICAgICAgICAgU3RyaW5nIGphdmFTY3JpcHRDb25maWd1
cmF0aW9uRGlyZWN0b3J5OwogICAgICAgICBTdHJpbmcgY29va2llU3RvcmFnZUZpbGU7CisKKyAg
ICAgICAgZXhwbGljaXQgQ29uZmlndXJhdGlvbigpOwogICAgIH07CiAgICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGVOb25QZXJzaXN0ZW50KCk7CiAgICAgc3RhdGljIFJlZjxX
ZWJzaXRlRGF0YVN0b3JlPiBjcmVhdGUoQ29uZmlndXJhdGlvbiwgUEFMOjpTZXNzaW9uSUQpOwpJ
bmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjI2ODIyKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTkgQEAKKzIwMTgtMDEtMTEgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+
CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjE5NTMwKTogUmVzb3VyY2VMb2FkU3RhdGlzdGljc1Bl
cnNpc3RlbnRTdG9yYWdlIHNob3VsZCBiZSByZWFkLW9ubHkgaW4gZXBoZW1lcmFsIHNlc3Npb25z
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODExMzYK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2MTE2NjA0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IENocmlzIER1bWV6LgorCisgICAgICAgIEFkZCBhIG5ldyBBUEkgdGVzdCB0byBjb25maXJtIHRo
YXQgUmVzb3VyY2VMb2FkU3RhdGlzdGljcyBjYW4gYmUgdHVybmVkIG9uIHNhZmVseSBmb3IgZXBo
ZW1lcmFsCisgICAgICAgIGJyb3dzaW5nIHNlc3Npb25zLgorCisgICAgICAgICogU2NyaXB0cy9y
dW4tZ3RrLXRlc3RzOgorICAgICAgICAoR3RrVGVzdFJ1bm5lcik6IFVuc2tpcCB0ZXN0IG5vdyB0
aGF0IGl0IHBhc3Nlcy4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbToKKyAgICAgICAgKFRFU1QpOiBBZGQgbmV3
IFdlYnNpdGVEYXRhU3RvcmVFcGhlbWVyYWwgdGVzdC4KKwogMjAxOC0wMS0xMSAgSm9uYXRoYW4g
QmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAgd2Via2l0cHk6IEZpeCBmbGFr
ZXkgd2Vic2VydmVyIHRlc3RzCkluZGV4OiBUb29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCShyZXZpc2lvbiAyMjY4MjIp
CisrKyBUb29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMJKHdvcmtpbmcgY29weSkKQEAgLTQzLDcg
KzQzLDYgQEAgY2xhc3MgR3RrVGVzdFJ1bm5lcihUZXN0UnVubmVyKToKICAgICAgICAgU2tpcHBl
ZFRlc3QoIldlYktpdDJHdGsvVGVzdFdlYlZpZXdFZGl0b3IiLCAiL3dlYmtpdDIvV2ViS2l0V2Vi
Vmlldy9lZGl0YWJsZS9lZGl0YWJsZSIsICJUZXN0IGhpdHMgYW4gYXNzZXJ0aW9uIGluIERlYnVn
IGJ1aWxkcyIsIDE1MTY1NCwgIkRlYnVnIiksCiAgICAgICAgIFNraXBwZWRUZXN0KCJXZWJLaXQy
R3RrL1Rlc3RXZWJFeHRlbnNpb25zIiwgIi93ZWJraXQyL1dlYktpdFdlYlZpZXcvaW5zdGFsbC1t
aXNzaW5nLXBsdWdpbnMtcGVybWlzc2lvbi1yZXF1ZXN0IiwgIlRlc3QgdGltZXMgb3V0IiwgMTQ3
ODIyKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdDJHdGsvVGVzdFdlYnNpdGVEYXRhIiwg
Ii93ZWJraXQyL1dlYktpdFdlYnNpdGVEYXRhL2RhdGFiYXNlcyIsICJUZXN0IGZhaWxzIHRvIGNs
ZWFyIGRhdGFiYXNlIGRhdGEiLCAxODEyNTEpLAotICAgICAgICBTa2lwcGVkVGVzdCgiV2ViS2l0
Mkd0ay9UZXN0V2Vic2l0ZURhdGEiLCAiL3dlYmtpdDIvV2ViS2l0V2Vic2l0ZURhdGEvZXBoZW1l
cmFsIiwgIlRlc3QgaGl0cyBhbiBhc3NlcnRpb24gaW4gRGVidWcgYnVpbGRzIiwgMTgxMTM2LCAi
RGVidWciKSwKICAgICAgICAgU2tpcHBlZFRlc3QoIldlYktpdC9UZXN0V2ViS2l0IiwgIldlYktp
dC5Nb3VzZU1vdmVBZnRlckNyYXNoIiwgIlRlc3QgaXMgZmxha3kiLCA4NTA2NiksCiAgICAgICAg
IFNraXBwZWRUZXN0KCJXZWJLaXQvVGVzdFdlYktpdCIsICJXZWJLaXQuTmV3Rmlyc3RWaXN1YWxs
eU5vbkVtcHR5TGF5b3V0Rm9ySW1hZ2VzIiwgIlRlc3QgaXMgZmxha3kiLCA4NTA2NiksCiAgICAg
ICAgIFNraXBwZWRUZXN0KCJXZWJLaXQvVGVzdFdlYktpdCIsICJXZWJLaXQuTmV3Rmlyc3RWaXN1
YWxseU5vbkVtcHR5TGF5b3V0RnJhbWVzIiwgIlRlc3QgZmFpbHMiLCA4NTAzNyksCkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbQkocmV2aXNpb24gMjI2ODIyKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxOSw0ICsyMTksNDYgQEAgVEVTVChX
ZWJLaXQsIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocwogICAgIEVYUEVDVF9GQUxTRShbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9kZWZhdWx0RGF0YVN0b3JlRXhpc3RzXSk7CiB9CiAKK1RFU1QoV2Vi
S2l0LCBXZWJzaXRlRGF0YVN0b3JlRXBoZW1lcmFsKQoreworICAgIFJldGFpblB0cjxXZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHNNZXNzYWdlSGFuZGxlcj4gaGFuZGxlciA9IGFkb3B0TlMoW1tX
ZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOwor
ICAgIFJldGFpblB0cjxXS1dlYlZpZXdDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBbW2NvbmZp
Z3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRTY3JpcHRNZXNzYWdlSGFuZGxlcjpo
YW5kbGVyLmdldCgpIG5hbWU6QCJ0ZXN0SGFuZGxlciJdOworCisgICAgTlNVUkwgKmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aCA9IFtOU1VSTCBmaWxlVVJMV2l0aFBhdGg6W0Aifi9M
aWJyYXJ5L1dlYktpdC9UZXN0V2ViS2l0QVBJL1dlYnNpdGVEYXRhL1Jlc291cmNlTG9hZFN0YXRp
c3RpY3MvIiBzdHJpbmdCeUV4cGFuZGluZ1RpbGRlSW5QYXRoXSBpc0RpcmVjdG9yeTpZRVNdOwor
CisgICAgW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSByZW1vdmVJdGVtQXRVUkw6ZGVm
YXVsdFJlc291cmNlTG9hZFN0YXRpc3RpY3NQYXRoIGVycm9yOm5pbF07CisKKyAgICBFWFBFQ1Rf
RkFMU0UoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRl
ZmF1bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7CisKKyAgICBjb25maWd1cmF0
aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNp
c3RlbnREYXRhU3RvcmVdOworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgX3NldFJlc291cmNlTG9hZFN0YXRpc3RpY3NFbmFibGVkOllFU107CisKKyAgICAvLyBXZSBl
eHBlY3QgdGhlIGRpcmVjdG9yeSB0byBiZSBjcmVhdGVkIGJ5IHN0YXJ0aW5nIHVwIHRoZSBkYXRh
IHN0b3JlIG1hY2hpbmVyeSwgYnV0IG5vdCB0aGUgZGF0YSBmaWxlLgorICAgIEVYUEVDVF9UUlVF
KFtbTlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0
UmVzb3VyY2VMb2FkU3RhdGlzdGljc1BhdGgucGF0aF0pOworCisgICAgTlNVUkwgKmRlZmF1bHRS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzRmlsZVBhdGggPSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOltA
In4vTGlicmFyeS9XZWJLaXQvVGVzdFdlYktpdEFQSS9XZWJzaXRlRGF0YS9SZXNvdXJjZUxvYWRT
dGF0aXN0aWNzL2Z1bGxfYnJvd3Npbmdfc2Vzc2lvbl9yZXNvdXJjZUxvZy5wbGlzdCIgc3RyaW5n
QnlFeHBhbmRpbmdUaWxkZUluUGF0aF0gaXNEaXJlY3Rvcnk6Tk9dOworICAgIEVYUEVDVF9GQUxT
RShbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6ZGVmYXVs
dFJlc291cmNlTG9hZFN0YXRpc3RpY3NGaWxlUGF0aC5wYXRoXSk7CisKKyAgICBSZXRhaW5QdHI8
V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b24uZ2V0KCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W1tOU0J1bmRsZSBtYWluQnVuZGxlXSBVUkxGb3JSZXNvdXJjZTpAIldl
YnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocyIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVj
dG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnJlcXVlc3RdOworCisgICAgW1tbd2ViVmlldyBjb25maWd1cmF0aW9uXSBwcm9jZXNzUG9v
bF0gX3N5bmNOZXR3b3JrUHJvY2Vzc0Nvb2tpZXNdOworCisgICAgLy8gRm9yY2libHkgc2h1dCBk
b3duIGV2ZXJ5dGhpbmcgb2YgV2ViS2l0IHRoYXQgd2UgY2FuLgorICAgIFtbW3dlYlZpZXcgY29u
ZmlndXJhdGlvbl0gcHJvY2Vzc1Bvb2xdIF90ZXJtaW5hdGVTdG9yYWdlUHJvY2Vzc107CisgICAg
YXV0byBwaWQgPSBbd2ViVmlldyBfd2ViUHJvY2Vzc0lkZW50aWZpZXJdOworICAgIGlmIChwaWQp
CisgICAgICAgIGtpbGwocGlkLCBTSUdLSUxMKTsKKworICAgIHdlYlZpZXcgPSBuaWw7CisgICAg
aGFuZGxlciA9IG5pbDsKKyAgICBjb25maWd1cmF0aW9uID0gbmlsOworCisgICAgRVhQRUNUX1RS
VUUoW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOmRlZmF1
bHRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzUGF0aC5wYXRoXSk7CisgICAgRVhQRUNUX0ZBTFNFKFtb
TlNGaWxlTWFuYWdlciBkZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpkZWZhdWx0UmVz
b3VyY2VMb2FkU3RhdGlzdGljc0ZpbGVQYXRoLnBhdGhdKTsKK30KKwogI2VuZGlmCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>