<?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>92919</bug_id>
          
          <creation_ts>2012-08-01 16:00:18 -0700</creation_ts>
          <short_desc>Out-of-process plug-ins should support asynchronous initialization.</short_desc>
          <delta_ts>2012-08-06 16:44:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>andersca</cc>
    
    <cc>gustavo</cc>
    
    <cc>philn</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>684703</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-01 16:00:18 -0700</bug_when>
    <thetext>Out-of-process plug-ins should support asynchronous initialization.

Currently the WebProcess synchronously waits for plug-ins to initialize.  It shouldn&apos;t have to.

To help reviewers I&apos;ll be trying to break this into a few different patches, the first of which will be dead code until they all land.

In radar as &lt;rdar://problem/10598594&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684760</commentid>
    <comment_count>1</comment_count>
      <attachid>155921</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-01 16:43:56 -0700</bug_when>
    <thetext>Created attachment 155921
Part 1 - Add two related preferences to the API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>684806</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-01 17:27:44 -0700</bug_when>
    <thetext>Part 1 landed in http://trac.webkit.org/changeset/124393

I will be prepping the remainder into either 1 or 2 patches tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687099</commentid>
    <comment_count>3</comment_count>
      <attachid>156446</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 13:31:39 -0700</bug_when>
    <thetext>Created attachment 156446
Part 2 - More preference API and groundwork for regression testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687110</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 13:50:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/124649

Final patch will (unfortunately) be much larger.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687114</commentid>
    <comment_count>5</comment_count>
      <attachid>156446</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-03 13:56:47 -0700</bug_when>
    <thetext>Comment on attachment 156446
Part 2 - More preference API and groundwork for regression testing

Attachment 156446 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13437016</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687128</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 14:07:51 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 156446 [details])
&gt; Attachment 156446 [details] did not pass win-ews (win):
&gt; Output: http://queues.webkit.org/results/13437016

This failure is because the Windows builder didn&apos;t pick up the WebPreferences changes and regenerate everything.  I don&apos;t know what to do about that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687129</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 14:09:03 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 156446 [details] [details])
&gt; &gt; Attachment 156446 [details] [details] did not pass win-ews (win):
&gt; &gt; Output: http://queues.webkit.org/results/13437016
&gt; 
&gt; This failure is because the Windows builder didn&apos;t pick up the WebPreferences changes and regenerate everything.  I don&apos;t know what to do about that.

Actually, wait, I might have failed on a much more epic level - Might not have gotten the new pref in my patch...  =/

Dealing with git right now to try and fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687135</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 14:13:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/124652

Sorry about that!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687142</commentid>
    <comment_count>9</comment_count>
      <attachid>156446</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-08-03 14:19:18 -0700</bug_when>
    <thetext>Comment on attachment 156446
Part 2 - More preference API and groundwork for regression testing

Attachment 156446 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13425769</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687155</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 14:31:02 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 156446 [details])
&gt; Attachment 156446 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/13425769

Will be fixed by http://trac.webkit.org/changeset/124652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687278</commentid>
    <comment_count>11</comment_count>
      <attachid>156485</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 17:12:54 -0700</bug_when>
    <thetext>Created attachment 156485
Part 3 - Add the feature (with some tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687279</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-03 17:16:42 -0700</bug_when>
    <thetext>Attachment 156485 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h:64:  The parameter name &quot;pluginProcessConnectionManager&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687281</commentid>
    <comment_count>13</comment_count>
      <attachid>156485</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-08-03 17:21:07 -0700</bug_when>
    <thetext>Comment on attachment 156485
Part 3 - Add the feature (with some tests)

Attachment 156485 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/13424873</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687283</commentid>
    <comment_count>14</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 17:23:57 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 156485 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
&gt; Source/WebKit2/WebProcess/Plugins/PluginProcessConnection.h:64:  The parameter name &quot;pluginProcessConnectionManager&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 1 in 38 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Fixed locally, won&apos;t bother uploading a new patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687284</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 17:25:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 156485 [details])
&gt; Attachment 156485 [details] did not pass gtk-ews (gtk):
&gt; Output: http://queues.webkit.org/results/13424873

Last 500 characters of output:
xy::DidCreateWebProcessConnection&amp;)
./DerivedSources/WebKit2/PluginProcessProxyMessages.h:55:8: note:   no known conversion for argument 1 from &apos;CoreIPC::Attachment&apos; to &apos;const Messages::PluginProcessProxy::DidCreateWebProcessConnection&amp;&apos;

This appears to be a compatibility problem with the compiler GTK is using.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687285</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 17:27:26 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #13)
&gt; &gt; (From update of attachment 156485 [details] [details])
&gt; &gt; Attachment 156485 [details] [details] did not pass gtk-ews (gtk):
&gt; &gt; Output: http://queues.webkit.org/results/13424873
&gt; 
&gt; Last 500 characters of output:
&gt; xy::DidCreateWebProcessConnection&amp;)
&gt; ./DerivedSources/WebKit2/PluginProcessProxyMessages.h:55:8: note:   no known conversion for argument 1 from &apos;CoreIPC::Attachment&apos; to &apos;const Messages::PluginProcessProxy::DidCreateWebProcessConnection&amp;&apos;
&gt; 
&gt; This appears to be a compatibility problem with the compiler GTK is using.

This is a generated file.

And looking at the PluginProcessProxyMessages.h generated locally I&apos;m not sure exactly why it&apos;s broken on GTK - Maybe their generated PluginProcessProxyMessages.h is different and broken?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687301</commentid>
    <comment_count>17</comment_count>
      <attachid>156485</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-03 17:58:28 -0700</bug_when>
    <thetext>Comment on attachment 156485
Part 3 - Add the feature (with some tests)

Attachment 156485 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13421996</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687342</commentid>
    <comment_count>18</comment_count>
      <attachid>156485</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-08-03 19:24:53 -0700</bug_when>
    <thetext>Comment on attachment 156485
Part 3 - Add the feature (with some tests)

Attachment 156485 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/13425852</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>687383</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-03 22:33:55 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 156485 [details])
&gt; Attachment 156485 [details] did not pass qt-wk2-ews (qt):
&gt; Output: http://queues.webkit.org/results/13421996

(In reply to comment #18)
&gt; (From update of attachment 156485 [details])
&gt; Attachment 156485 [details] did not pass mac-ews (mac):
&gt; Output: http://queues.webkit.org/results/13425852

Okay, clearly something quite real is happening.

I did build successfully on Mac before uploading.  Maybe I&apos;ll need to try a clean build to sort it out...

Reviewing the patch is still an admirable task in the meantime.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688245</commentid>
    <comment_count>20</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 10:22:50 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; (In reply to comment #17)
&gt; &gt; (From update of attachment 156485 [details] [details])
&gt; &gt; Attachment 156485 [details] [details] did not pass qt-wk2-ews (qt):
&gt; &gt; Output: http://queues.webkit.org/results/13421996
&gt; 
&gt; (In reply to comment #18)
&gt; &gt; (From update of attachment 156485 [details] [details])
&gt; &gt; Attachment 156485 [details] [details] did not pass mac-ews (mac):
&gt; &gt; Output: http://queues.webkit.org/results/13425852
&gt; 
&gt; Okay, clearly something quite real is happening.
&gt; 
&gt; I did build successfully on Mac before uploading.  Maybe I&apos;ll need to try a clean build to sort it out...
&gt; 
&gt; Reviewing the patch is still an admirable task in the meantime.  :)

I did a 100% clean build on Mac with the patch as is...  *sigh*  Digging in to the specific failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688248</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 10:25:47 -0700</bug_when>
    <thetext>I see, probably compiler differences with OwnPtr = 0.  Something my compiler supports but older ones don&apos;t, I guess.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688250</commentid>
    <comment_count>22</comment_count>
      <attachid>156721</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 10:28:24 -0700</bug_when>
    <thetext>Created attachment 156721
Part 3 - v2 - Add the feature (with some tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688308</commentid>
    <comment_count>23</comment_count>
      <attachid>156721</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-08-06 11:33:06 -0700</bug_when>
    <thetext>Comment on attachment 156721
Part 3 - v2 - Add the feature (with some tests)

Attachment 156721 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/13445358</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688315</commentid>
    <comment_count>24</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 11:42:54 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 156721 [details])
&gt; Attachment 156721 [details] did not pass qt-wk2-ews (qt):
&gt; Output: http://queues.webkit.org/results/13445358

AHA, realized what the deal is.  Didn&apos;t update the non-Mac block here.  New patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688318</commentid>
    <comment_count>25</comment_count>
      <attachid>156734</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 11:44:32 -0700</bug_when>
    <thetext>Created attachment 156734
Part 3 - v3 - Add the feature (with some tests) (and non-Mac build fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688512</commentid>
    <comment_count>26</comment_count>
      <attachid>156781</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 16:06:37 -0700</bug_when>
    <thetext>Created attachment 156781
Part 3 - v4 - Add the feature (with some tests) (and Qt build fixes) (and possibly GTK build fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688513</commentid>
    <comment_count>27</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 16:07:26 -0700</bug_when>
    <thetext>GTK doesn&apos;t have sleep() declared... trying a direct include of &lt;unistd.h&gt; as a fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688517</commentid>
    <comment_count>28</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-06 16:09:30 -0700</bug_when>
    <thetext>Attachment 156781 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Source/WebKit2/PluginProcess/WebProcessConnection.cpp:38:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688523</commentid>
    <comment_count>29</comment_count>
      <attachid>156781</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2012-08-06 16:12:56 -0700</bug_when>
    <thetext>Comment on attachment 156781
Part 3 - v4 - Add the feature (with some tests) (and Qt build fixes) (and possibly GTK build fixes)

&gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:93
&gt; +static HashSet&lt;uint64_t&gt;&amp; asynchronousInstanceIDsToIgnore()
&gt; +{
&gt; +    DEFINE_STATIC_LOCAL(HashSet&lt;uint64_t&gt;, instances, ());
&gt; +    return instances;
&gt; +}

This should be a member of WebProcessConnection. pluginInstanceIDs are not unique across multiple WebProcesses.

&gt; Source/WebKit2/PluginProcess/WebProcessConnection.cpp:311
&gt; +    if (creationParameters.artificialPluginInitializationDelayEnabled) {
&gt; +        static unsigned int artificialPluginInitializationDelay = 5;
&gt; +        sleep(artificialPluginInitializationDelay);
&gt; +    }

I don&apos;t like that this test code is here, but I guess it&apos;s OK. The constant should not be static, and you can just use unsigned instead of unsigned int.

&gt; Source/WebKit2/WebProcess/Plugins/Plugin.h:88
&gt; +    virtual bool isInitializingAsynchronously() const = 0;

How about isBeingAsynchronouslyInitialized() instead? Also, add a comment indicating what this function does.

&gt; Source/WebKit2/WebProcess/Plugins/PluginController.h:164
&gt; +    virtual void didInitializePlugin() = 0;
&gt; +    virtual void didFailToInitializePlugin() = 0;

Please add comments indicating what these functions are supposed to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688534</commentid>
    <comment_count>30</comment_count>
      <attachid>156785</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 16:23:02 -0700</bug_when>
    <thetext>Created attachment 156785
Part 3 - v5 - Add the feature, address review comments, and maybe have 100% working builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>688558</commentid>
    <comment_count>31</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2012-08-06 16:44:02 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/124815</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>155921</attachid>
            <date>2012-08-01 16:43:56 -0700</date>
            <delta_ts>2012-08-01 17:21:26 -0700</delta_ts>
            <desc>Part 1 - Add two related preferences to the API</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6993</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCA1ODIyZDcxLi40OGM3ODE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIg
QEAKKzIwMTItMDgtMDEgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNtYWxsIHBhcnQgb2YgIk91dC1vZi1wcm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0
IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbi4iCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjkx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBB
UEktbGV2ZWwgcHJlZmVyZW5jZXMgZm9yOgorICAgICAgICAtIElzIGFzeW5jaHJvbm91cyBwbHVn
LWluIGluaXRpYWxpemF0aW9uIGVuYWJsZWQuCisgICAgICAgIC0gSXMgYW4gYXJ0aWZpY2lhbCBp
bml0aWFsaXphdGlvbiBkZWxheSAoZm9yIHRlc3RpbmcgcHVycG9zZXMpIGVuYWJsZWQuCisKKyAg
ICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXNTdG9yZS5oOgorICAgICAgICAoV2ViS2l0KToK
KworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAg
KFdLUHJlZmVyZW5jZXNTZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQp
OgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZCk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0QXJ0aWZpY2lhbFBsdWdpbklu
aXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKToKKyAgICAgICAgKFdLUHJlZmVyZW5jZXNHZXRBcnRp
ZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oOgorCisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpXZWJQYWdl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxl
ZCk6CisgICAgICAgIChXZWJQYWdlKToKKwogMjAxMi0wNy0zMSAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFByZWZlciB0aGUgT3JhY2xlIEphdmEgcGx1
Zy1pbiBvdmVyIHRoZSBBcHBsZSBKYXZhIHBsdWctaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2ViUHJlZmVyZW5jZXNTdG9yZS5oCmluZGV4IDgzZTA1OTYuLjExZmU1MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcmVmZXJlbmNlc1N0b3JlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByZWZlcmVuY2VzU3RvcmUuaApAQCAtMTE0LDYgKzExNCw4IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgIG1hY3JvKFdhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2Fk
aW5nQmVoYXZpb3IsIHdhbnRzQmFsYW5jZWRTZXREZWZlcnNMb2FkaW5nQmVoYXZpb3IsIEJvb2ws
IGJvb2wsIGZhbHNlKSBcCiAgICAgbWFjcm8oUmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCwg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lRW5hYmxlZCwgQm9vbCwgYm9vbCwgdHJ1ZSkgXAogICAgIG1h
Y3JvKERpYWdub3N0aWNMb2dnaW5nRW5hYmxlZCwgZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uRW5hYmxlZCwgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkLCBC
b29sLCBib29sLCBmYWxzZSkgXAorICAgIG1hY3JvKEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXph
dGlvbkRlbGF5RW5hYmxlZCwgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkLCBCb29sLCBib29sLCBmYWxzZSkgXAogICAgIFwKIAogI2RlZmluZSBGT1JfRUFDSF9XRUJL
SVRfRE9VQkxFX1BSRUZFUkVOQ0UobWFjcm8pIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCAyNDNhMTczLi45OGE4ZDlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBA
IC04MzMsMyArODMzLDIzIEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldERpYWdub3N0aWNMb2dnaW5n
RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQogewogICAgIHJldHVybiB0
b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQoKTsKIH0KKwor
dm9pZCBXS1ByZWZlcmVuY2VzU2V0QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFi
bGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbkVuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmKQoreworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5hc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKTsKK30KKwordm9pZCBXS1ByZWZlcmVuY2Vz
U2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVy
ZW5jZXNSZWYpLT5zZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQo
ZW5hYmxlZCk7Cit9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dldEFydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQor
eworICAgIHJldHVybiB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5hcnRpZmljaWFsUGx1Z2luSW5p
dGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmgKaW5kZXggMzcxYzUzOS4uNmRl
ZWJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVy
ZW5jZXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNQcml2YXRlLmgKQEAgLTE5MSw2ICsxOTEsMTQgQEAgV0tfRVhQT1JUIGJvb2wgV0tQ
cmVmZXJlbmNlc0dldFJlcXVlc3RBbmltYXRpb25GcmFtZUVuYWJsZWQoV0tQcmVmZXJlbmNlc1Jl
Zik7CiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0RGlhZ25vc3RpY0xvZ2dpbmdFbmFi
bGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiBXS19F
WFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0RGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCisvLyBEZWZhdWx0cyB0byBmYWxzZQorV0tf
RVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVuYWJsZWQp
OworV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsKKworLy8g
RGVmYXVsdHMgdG8gZmFsc2UKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRBcnRpZmlj
aWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNH
ZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoV0tQcmVmZXJlbmNl
c1JlZiBwcmVmZXJlbmNlc1JlZik7CisKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNSZXNl
dFRlc3RSdW5uZXJPdmVycmlkZXMoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiAK
ICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IDU5ZDNiYzUuLmQ0N2FmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIwNyw2ICsyMDcsOCBAQCBXZWJQ
YWdlOjpXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1l
dGVycyYgcGFyYW1ldGVycykKICAgICAsIG1faXNJblJlZG8oZmFsc2UpCiAgICAgLCBtX2lzQ2xv
c2VkKGZhbHNlKQogICAgICwgbV90YWJUb0xpbmtzKGZhbHNlKQorICAgICwgbV9hc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoZmFsc2UpCisgICAgLCBtX2FydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChmYWxzZSkKICNpZiBQTEFURk9STShNQUMp
CiAgICAgLCBtX3dpbmRvd0lzVmlzaWJsZShmYWxzZSkKICAgICAsIG1faXNTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQocGFyYW1ldGVycy5pc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCkKQEAgLTE5
NzYsNiArMTk3OCw4IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2Vi
UHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUpCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9wYWdl
LT5zZXR0aW5ncygpOwogCiAgICAgbV90YWJUb0xpbmtzID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9y
S2V5KFdlYlByZWZlcmVuY2VzS2V5Ojp0YWJzVG9MaW5rc0tleSgpKTsKKyAgICBtX2FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktl
eShXZWJQcmVmZXJlbmNlc0tleTo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFi
bGVkS2V5KCkpOworICAgIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkID0gc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjphcnRpZmlj
aWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWRLZXkoKSk7CiAKICAgICAvLyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgZ2VuZXJhdGVkIGZyb20gbWFjcm8gZXhwYW5zaW9uIGZvciBhbGwg
cHJlZmVyZW5jZXMsCiAgICAgLy8gYnV0IHdlIGN1cnJlbnRseSBkb24ndCBtYXRjaCB0aGUgbmFt
aW5nIG9mIFdlYkNvcmUgZXhhY3RseSBzbyB3ZSBhcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGUzMjU3YTMuLjNiNjVlYzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTcwLDYgKzU3MCw5IEBA
IHB1YmxpYzoKICAgICB1aW50NjRfdCBuYXRpdmVXaW5kb3dIYW5kbGUoKSB7IHJldHVybiBtX25h
dGl2ZVdpbmRvd0hhbmRsZTsgfQogI2VuZGlmCiAKKyAgICBib29sIGFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkOyB9CisgICAgYm9vbCBhcnRpZmljaWFsUGx1Z2luSW5p
dGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FydGlmaWNpYWxQbHVn
aW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZDsgfQorCiBwcml2YXRlOgogICAgIFdlYlBhZ2Uo
dWludDY0X3QgcGFnZUlELCBjb25zdCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKQEAg
LTc1OCw2ICs3NjEsOSBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9pc0Nsb3NlZDsKIAogICAgIGJv
b2wgbV90YWJUb0xpbmtzOworICAgIAorICAgIGJvb2wgbV9hc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbkVuYWJsZWQ7CisgICAgYm9vbCBtX2FydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXph
dGlvbkRlbGF5RW5hYmxlZDsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICAvLyBXaGV0aGVyIHRo
ZSBjb250YWluaW5nIHdpbmRvdyBpcyB2aXNpYmxlIG9yIG5vdC4K
</data>
<flag name="review"
          id="165490"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156446</attachid>
            <date>2012-08-03 13:31:39 -0700</date>
            <delta_ts>2012-08-03 14:19:18 -0700</delta_ts>
            <desc>Part 2 - More preference API and groundwork for regression testing</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10326</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBkYmY2N2Y3Li4wOWM3MTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMTItMDgtMDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAg
ICAgIFNtYWxsIHBhcnQgb2YgIk91dC1vZi1wcm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0
IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbi4iCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjkx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC1BZGQg
QVBJLWxldmVsIHByZWZlcmVuY2VzIGZvciBmb3JjaW5nIGFzeW5jaHJvbm91cyBpbml0aWFsaXph
dGlvbiBvZiBhbGwgcGx1Zy1pbnMgKGZvciB0ZXN0aW5nKS4KKyAgICAgICAgLU1ha2Ugc3VyZSAi
b3ZlcnJpZGVQcmVmZXJlbmNlIiBpcyBob29rZWQgdXAgcHJvcGVybHkgZm9yIGFsbCBuZWVkZWQg
cHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzR2V0QXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyk6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNQcml2YXRlLmg6CisKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6SW5qZWN0ZWRCdW5kbGU6Om92ZXJyaWRlQm9vbFByZWZlcmVuY2VGb3JUZXN0UnVu
bmVyKToKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6V2ViUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OnVwZGF0ZVByZWZlcmVuY2VzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbkVuYWJsZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6c2V0QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVk
Rm9yQWxsUGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCk6CisgICAgICAgIChXZWJQYWdlKToKKwog
MjAxMi0wOC0wMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAg
U21hbGwgcGFydCBvZiAiT3V0LW9mLXByb2Nlc3MgcGx1Zy1pbnMgc2hvdWxkIHN1cHBvcnQgYXN5
bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLiIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA5OGE4ZDlkLi4xOGY4MzJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC04
NDQsNiArODQ0LDE2IEBAIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByCiAgICAgcmV0dXJuIHRvSW1w
bChwcmVmZXJlbmNlc1JlZiktPmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxl
ZCgpOwogfQogCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNS
ZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICB0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKGVuYWJsZWQp
OworfQorCitib29sIFdLUHJlZmVyZW5jZXNHZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYp
Cit7CisgICAgcmV0dXJuIHRvSW1wbChwcmVmZXJlbmNlc1JlZiktPmFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoKTsKK30KKwogdm9pZCBXS1ByZWZl
cmVuY2VzU2V0QXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKFdLUHJl
ZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKIHsKICAgICB0b0ltcGwo
cHJlZmVyZW5jZXNSZWYpLT5zZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVu
YWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlc1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5oCmluZGV4IDZkZWViZjUuLjJiYmY4ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUHJpdmF0
ZS5oCkBAIC0xOTYsNiArMTk2LDEwIEBAIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoV0tQcmVmZXJlCiBXS19FWFBP
UlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0QXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25F
bmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOwogCiAvLyBEZWZhdWx0cyB0
byBmYWxzZQorV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKK1dLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNH
ZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKFdL
UHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYpOworCisvLyBEZWZhdWx0cyB0byBmYWxzZQog
V0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldEFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXph
dGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVu
YWJsZWQpOwogV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldEFydGlmaWNpYWxQbHVnaW5J
bml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVm
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAppbmRleCBkODA5ZDYxLi5lMWQ2NzEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVu
ZGxlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlLmNwcApAQCAtMTMxLDYgKzEzMSwzMCBAQCB2b2lkIEluamVjdGVkQnVuZGxl
OjpvdmVycmlkZUJvb2xQcmVmZXJlbmNlRm9yVGVzdFJ1bm5lcihXZWJQYWdlR3JvdXBQcm94eSog
cGFnZQogCiAgICAgLy8gRklYTUU6IE5lZWQgYW4gZXhwbGljaXQgd2F5IHRvIHNldCAiV2ViS2l0
VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiIGRpcmVjdGx5IGluIFdlYlBhZ2UuCiAKKyAgICBpZiAo
cHJlZmVyZW5jZSA9PSAiV2ViS2l0MkFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5h
YmxlZCIpIHsKKyAgICAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6b3ZlcnJpZGVCb29sVmFsdWVG
b3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
RW5hYmxlZEtleSgpLCBlbmFibGVkKTsKKyAgICAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6aXRl
cmF0b3IgaSA9IHBhZ2VzLmJlZ2luKCk7IGkgIT0gcGFnZXMuZW5kKCk7ICsraSkgeworICAgICAg
ICAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lTG9hZGVyQ2xpZW50
Kj4oKCppKS0+bWFpbkZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCktPnBh
Z2UoKTsKKyAgICAgICAgICAgIHdlYlBhZ2UtPnNldEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uRW5hYmxlZChlbmFibGVkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChwcmVm
ZXJlbmNlID09ICJXZWJLaXQyQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVk
Rm9yQWxsUGx1Z2lucyIpIHsKKyAgICAgICAgV2ViUHJlZmVyZW5jZXNTdG9yZTo6b3ZlcnJpZGVC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnNLZXkoKSwgZW5hYmxlZCk7CisgICAgICAgIGZv
ciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGkgPSBwYWdlcy5iZWdpbigpOyBpICE9IHBhZ2Vz
LmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBzdGF0aWNfY2Fz
dDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCgqaSktPm1haW5GcmFtZSgpLT5sb2FkZXIoKS0+Y2xp
ZW50KCkpLT53ZWJGcmFtZSgpLT5wYWdlKCk7CisgICAgICAgICAgICB3ZWJQYWdlLT5zZXRBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKGVuYWJsZWQp
OworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHByZWZlcmVuY2UgPT0gIldlYktpdDJBcnRp
ZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQiKSB7CisgICAgICAgIFdlYlBy
ZWZlcmVuY2VzU3RvcmU6Om92ZXJyaWRlQm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5
OjphcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWRLZXkoKSwgZW5hYmxl
ZCk7CisgICAgICAgIGZvciAoSGFzaFNldDxQYWdlKj46Oml0ZXJhdG9yIGkgPSBwYWdlcy5iZWdp
bigpOyBpICE9IHBhZ2VzLmVuZCgpOyArK2kpIHsKKyAgICAgICAgICAgIFdlYlBhZ2UqIHdlYlBh
Z2UgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUxvYWRlckNsaWVudCo+KCgqaSktPm1haW5GcmFtZSgp
LT5sb2FkZXIoKS0+Y2xpZW50KCkpLT53ZWJGcmFtZSgpLT5wYWdlKCk7CisgICAgICAgICAgICB3
ZWJQYWdlLT5zZXRBcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZW5h
YmxlZCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBNYXAgdGhlIG5hbWVzIHVzZWQgaW4g
TGF5b3V0VGVzdHMgd2l0aCB0aGUgbmFtZXMgdXNlZCBpbiBXZWJDb3JlOjpTZXR0aW5ncyBhbmQg
V2ViUHJlZmVyZW5jZXNTdG9yZS4KICNkZWZpbmUgRk9SX0VBQ0hfT1ZFUlJJREVfQk9PTF9QUkVG
RVJFTkNFKG1hY3JvKSBcCiAgICAgbWFjcm8oV2ViS2l0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQsIEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkLCBhY2NlbGVyYXRlZENvbXBvc2l0
aW5nRW5hYmxlZCkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGQ0N2FmMDkuLjdhMWM2YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTIwOCw2ICsyMDgsNyBAQCBXZWJQYWdlOjpX
ZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKICAgICAsIG1faXNDbG9zZWQoZmFsc2UpCiAgICAgLCBtX3RhYlRvTGlua3Mo
ZmFsc2UpCiAgICAgLCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZChm
YWxzZSkKKyAgICAsIG1fYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9y
QWxsUGx1Z2lucyhmYWxzZSkKICAgICAsIG1fYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9u
RGVsYXlFbmFibGVkKGZhbHNlKQogI2lmIFBMQVRGT1JNKE1BQykKICAgICAsIG1fd2luZG93SXNW
aXNpYmxlKGZhbHNlKQpAQCAtMTk3OSw2ICsxOTgwLDcgQEAgdm9pZCBXZWJQYWdlOjp1cGRhdGVQ
cmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSkKIAogICAgIG1fdGFi
VG9MaW5rcyA9IHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6dGFi
c1RvTGlua3NLZXkoKSk7CiAgICAgbV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVu
YWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEtleSgpKTsKKyAgICBtX2FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMgPSBzdG9yZS5nZXRC
b29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnNLZXkoKSk7CiAgICAgbV9hcnRpZmljaWFsUGx1
Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQgPSBzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXko
V2ViUHJlZmVyZW5jZXNLZXk6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5h
YmxlZEtleSgpKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBnZW5lcmF0ZWQgZnJv
bSBtYWNybyBleHBhbnNpb24gZm9yIGFsbCBwcmVmZXJlbmNlcywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDNiNjVlYzQuLjI1NmI3OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtNTcxLDcgKzU3
MSwxMSBAQCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9hc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbkVuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEFzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9hc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbkVuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgYm9vbCBhc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkgY29uc3QgeyByZXR1cm4g
bV9hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zOyB9
CisgICAgdm9pZCBzZXRBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JB
bGxQbHVnaW5zKGJvb2wgZW5hYmxlZCkgeyBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMgPSBlbmFibGVkOyB9CiAgICAgYm9vbCBhcnRpZmljaWFs
UGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2FydGlm
aWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZDsgfQorICAgIHZvaWQgc2V0QXJ0
aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBt
X2FydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IGVuYWJsZWQ7IH0K
IAogcHJpdmF0ZToKICAgICBXZWJQYWdlKHVpbnQ2NF90IHBhZ2VJRCwgY29uc3QgV2ViUGFnZUNy
ZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtNzYzLDYgKzc2Nyw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX3RhYlRvTGlua3M7CiAgICAgCiAgICAgYm9vbCBtX2FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZDsKKyAgICBib29sIG1fYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb25FbmFibGVkRm9yQWxsUGx1Z2luczsKICAgICBib29sIG1fYXJ0aWZpY2lhbFBsdWdpbklu
aXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGU5ZDY2ZGEuLmY4ODBk
OGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wOC0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgU21hbGwgcGFydCBvZiAiT3V0LW9mLXByb2Nlc3MgcGx1Zy1pbnMgc2hv
dWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLiIKKyAgICAgICAgPHJkYXI6
Ly9wcm9ibGVtLzEwNTk4NTk0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTkyOTE5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdU
Ujo6VGVzdENvbnRyb2xsZXI6OnJlc2V0U3RhdGVUb0NvbnNpc3RlbnRWYWx1ZXMpOiBSZXNldCBh
bGwgcHJlZmVyZW5jZXMgcmVsYXRlZCB0byBhc3luY2hyb25vdXMgcGx1Z2luIGluaXRpYWxpemF0
aW9uLgorCiAyMDEyLTA4LTAxICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIHRlc3Qtd2Via2l0cHk6IGNsZWFuIHVwIGhhbmRsaW5nIG9mIHRlc3RzIHRvIHNr
aXAKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3Bw
IGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggZDAyMzI5
OS4uMzI3NzA1OCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJv
bGxlci5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAK
QEAgLTQ2Myw2ICs0NjMsOSBAQCBib29sIFRlc3RDb250cm9sbGVyOjpyZXNldFN0YXRlVG9Db25z
aXN0ZW50VmFsdWVzKCkKICAgICBXS1ByZWZlcmVuY2VzU2V0RnVsbFNjcmVlbkVuYWJsZWQocHJl
ZmVyZW5jZXMsIHRydWUpOwogI2VuZGlmCiAgICAgV0tQcmVmZXJlbmNlc1NldFBhZ2VDYWNoZUVu
YWJsZWQocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0QXN5bmNocm9u
b3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKHByZWZlcmVuY2VzLCBmYWxzZSk7CisgICAg
V0tQcmVmZXJlbmNlc1NldEFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZv
ckFsbFBsdWdpbnMocHJlZmVyZW5jZXMsIGZhbHNlKTsKKyAgICBXS1ByZWZlcmVuY2VzU2V0QXJ0
aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKHByZWZlcmVuY2VzLCBmYWxz
ZSk7CiAKIC8vIFtRdF1bV0syXVJFR1JFU1NJT04ocjEwNDg4MSk6SXQgYnJva2UgaHVuZHJlZHMg
b2YgdGVzdHMKIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzYyNDcK
</data>
<flag name="review"
          id="166141"
          type_id="1"
          status="+"
          setter="andersca"
    />
    <flag name="commit-queue"
          id="166146"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156485</attachid>
            <date>2012-08-03 17:12:54 -0700</date>
            <delta_ts>2012-08-06 10:28:24 -0700</delta_ts>
            <desc>Part 3 - Add the feature (with some tests)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68288</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzYjAwNmJmLi41MTQyNzMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgt
MDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1w
cm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
bgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA1OTg1OTQ+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gbWFrZSBzdXJlIGEgcGx1Zy1pbiB3
aXRoIGEgbG9uZyBydW5uaW5nIE5QUF9OZXcgZG9lcyBub3QgYmxvY2sgdGhlIHdlYiB0aHJlYWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMt
cGx1Z2luLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVs
dGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Ns
b3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3Vz
LXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbDogQWRkZWQuCisKIDIw
MTItMDgtMDMgIERtaXRyeSBUaXRvdiAgPGRpbWljaEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QWRkZWQgJ2NyYXNoJyBleHBlY3RhdGlvbiB0byBhIGZsYWt5IHRlc3QgZmFzdC9tdWx0aWNvbC9j
b2x1bW4tc3Bhbi1wYXJlbnQtY29udGludWF0aW9uLWNyYXNoLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVn
aW4taW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxMWM1NQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93
L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsNyBAQAorVGVzdCB0aGF0IGxvYWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAoNTUwbXMg
c2Vjb25kIHNsZWVwIGluIE5QUF9uZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nlc3MKKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgQXBwZW5kaW5nIHBsdWctaW4gZWxl
bWVudCB0b29rIHVuZGVyIDUwMG1zLCBwbHVnLWluIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNs
eS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Ns
b3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25v
dXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDk2ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdp
bi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitU
aGlzIGZpbmlzaGVzIHRoZSB0ZXN0IGFuZCBzZWUncyBob3cgbXVjaCB0aW1lIHBhc3NlZC4KK09u
bHkgb25lIG9mIHRoZSAyMCBwbHVnLWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFu
ZCBOUFBfRGVzdHJveSBydW4gdG8gY29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMu
CitUaGUgb3RoZXIgMTkgc2hvdWxkIG5ldmVyIGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQgYXQgYWxs
LgorUEFTUyBBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0
b29rIGJldHdlZW4gNTUwbXMgYW5kIDExMDBtcyBzdWdnZXN0aW5nIGEgc2luZ2xlIHBsdWctaW4g
d2FzIGNyZWF0ZWQgYW5kIHRoZW4gZGVzdHJveWVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRp
YWxpemF0aW9uLW11bHRpcGxlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y4MWNhMQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5j
aHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ3
IEBACis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3Qo
KSI+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdD4KKworZnVuY3Rpb24gY3JlYXRlVGVzdFBsdWdpbih0ZXN0TmFtZSkKK3sKKyAgICB2
YXIgcGx1Z2luID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZW1iZWQiKTsKKyAgICBwbHVnaW4u
dHlwZSA9ICJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5ldHNjYXBlIjsKKyAgICBwbHVnaW4u
c2V0QXR0cmlidXRlKCd0ZXN0JywgdGVzdE5hbWUpOworCisgICAgcmV0dXJuIHBsdWdpbjsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpIAoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsK
KyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJl
bmRlclRyZWUgYmVjYXVzZSBpdCByZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAg
IHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCJXZWJLaXQyQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkIiwg
IjEiKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0MkFzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMiLCAiMSIpOworCisg
ICAgLy8gR3JhYiB0aGUgdGltZSBiZWZvcmUgd2UgY3JlYXRlIGFuZCBhcHBlbmQgMjAgc2xvdyBw
bHVnLWlucy4KKyAgICBzZXNzaW9uU3RvcmFnZS5iZWZvcmVEYXRlID0gKG5ldyBEYXRlKS52YWx1
ZU9mKCk7CisgICAgCisgICAgdmFyIHBsdWdpbnMgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDIwOyArK2kpCisgICAgICAgIHBsdWdpbnNbaV0gPSBjcmVhdGVUZXN0UGx1
Z2luKCdzbG93LW5wcC1uZXcnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpCisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGx1Z2luc1tpXSk7CisKKyAgICAvLyBU
cnkgdG8gZm9yY2UgYSBsYXlvdXQgc28gdGhlIHBsdWctaW5zIGluc3RhbnRpYXRlCisgICAgdmFy
IGZvbyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOworICAgIAorICAgIHNldFRpbWVvdXQoImxv
Y2F0aW9uLmhyZWYgPSAncmVzb3VyY2VzL2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRp
b24tbXVsdGlwbGUtZmluaXNoLmh0bWwnIiwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0
aGF0IGxvYWRpbmcgbXVsdGlwbGUgc2xvdyBpbml0aWFsaXppbmcgcGx1Zy1pbnMgYW5kIHRoZW4g
bmF2aWdhdGluZyBvbmx5IGhhcyB0byB3YWl0IGZvciBvbmUgb2YgdGhlbSB0byBmaW5pc2ggYmVp
bmcgZGVzdHJveWVkLiIpOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6
YXRpb24uaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2Fz
eW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40NmI4NWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFs
aXphdGlvbi5odG1sCkBAIC0wLDAgKzEsNDkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
Ly4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBjcmVhdGVUZXN0
UGx1Z2luKHRlc3ROYW1lKQoreworICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJlbWJlZCIpOworICAgIHBsdWdpbi50eXBlID0gImFwcGxpY2F0aW9uL3gtd2Via2l0LXRl
c3QtbmV0c2NhcGUiOworICAgIHBsdWdpbi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCB0ZXN0TmFtZSk7
CisKKyAgICByZXR1cm4gcGx1Z2luOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAg
aWYgKCF3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBv
bmx5IHJ1biBmcm9tIHdpdGhpbiBEdW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRl
c3ROZXRzY2FwZVBsdWdpbi5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVz
dFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Cisg
ICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdDJBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbkVuYWJsZWQiLCAiMSIpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQ
cmVmZXJlbmNlKCJXZWJLaXQyQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVk
Rm9yQWxsUGx1Z2lucyIsICIxIik7CisKKyAgICB2YXIgYmVmb3JlRGF0ZSA9IG5ldyBEYXRlOwor
ICAgIAorICAgIHBsdWdpbiA9IGNyZWF0ZVRlc3RQbHVnaW4oJ3Nsb3ctbnBwLW5ldycpOworICAg
IGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocGx1Z2luKTsKKyAgICAvLyBUcnkgdG8gZm9yY2Ug
YSBsYXlvdXQgc28gdGhlIHBsdWctaW4gaW5zdGFudGlhdGVzCisgICAgdmFyIGZvbyA9IGRvY3Vt
ZW50LmJvZHkub2Zmc2V0VG9wOworICAgIAorICAgIHZhciBhZnRlckRhdGUgPSBuZXcgRGF0ZTsK
KyAgICAKKyAgICBpZiAoYWZ0ZXJEYXRlIC0gYmVmb3JlRGF0ZSA+IDUwMCkKKyAgICAgICAgdGVz
dEZhaWxlZCgiQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudCB0b29rIG92ZXIgNTAwbXMgKCIgKyAo
YWZ0ZXJEYXRlIC0gYmVmb3JlRGF0ZSkgKyAibXMpIHNvIHRoZSBwbHVnLWluIHdhcyBwcm9iYWJs
eSBiZWluZyBpbml0aWFsaXplZCBzeW5jaHJvbm91c2x5Iik7CisgICAgZWxzZQorICAgICAgICB0
ZXN0UGFzc2VkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50IHRvb2sgdW5kZXIgNTAwbXMsIHBs
dWctaW4gaW5pdGlhbGl6aW5nIGFzeW5jaHJvbm91c2x5LiIpOworICAgIAorICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworfQorCitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGxvYWRpbmcgYSBz
bG93IGxvYWRpbmcgcGx1Zy1pbiAoNTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9uZXcpIGRvZXNu
J3QgYmxvY2sgdGhlIFdlYlByb2Nlc3MiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9u
b3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L3Jlc291cmNlcy9hc3luY2hyb25vdXMt
cGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLWZpbmlzaC5odG1sCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZmJhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3Vz
LXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbApAQCAtMCwwICsxLDMz
IEBACis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9h
ZGVkKCk7Ij4KK1RoaXMgZmluaXNoZXMgdGhlIHRlc3QgYW5kIHNlZSdzIGhvdyBtdWNoIHRpbWUg
cGFzc2VkLjxicj4KK09ubHkgb25lIG9mIHRoZSAyMCBwbHVnLWlucyBzaG91bGQgaGF2ZSBoYWQg
aXQncyBOUFBfTmV3IGFuZCBOUFBfRGVzdHJveSBydW4gdG8gY29tcGxldGlvbiwgdGFraW5nIGEg
Yml0IG92ZXIgNTUwbXMuPGJyPgorVGhlIG90aGVyIDE5IHNob3VsZCBuZXZlciBoYXZlIGJlZW4g
aW5zdGFudGlhdGVkIGF0IGFsbC48YnI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9k
eT4KKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGxvYWRlZCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgICAgIGFsZXJ0KCJDYW4gb25seSBiZSBydW4gdXNpbmcgV2ViS2l0VGVz
dFJ1bm5lciIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIHZhciB0aW1lTGFw
c2VkID0gKG5ldyBEYXRlKS52YWx1ZU9mKCkgLSBzZXNzaW9uU3RvcmFnZS5iZWZvcmVEYXRlOwor
CisgICAgaWYgKHRpbWVMYXBzZWQgPiAxMTAwKQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRp
bmcgcGx1Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIG92ZXIgMTEwMG1z
ICgiICsgdGltZUxhcHNlZCArICJtcykgc28gbW9yZSB0aGFuIG9uZSBwbHVnLWluIHdhcyBwcm9i
YWJseSBiZWluZyBpbml0aWFsaXplZCBiZWZvcmUgYW55IHdlcmUgZGVzdHJveWVkLiIpOworICAg
IGlmICh0aW1lTGFwc2VkIDwgNTUwKQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1
Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIGxlc3MgdGhhbiA1NTBtcyAo
IiArIHRpbWVMYXBzZWQgKyAibXMpLiAgV2UgZXhwZWN0ZWQgYSBzaW5nbGUgcGx1Zy1pbiB0byBi
ZSBjcmVhdGVkIGFuZCB0aGVuIGRlc3Ryb3llZCBhbmQgdGhhdCBkaWRuJ3QgaGFwcGVuLiIpOwor
ICAgIGVsc2UKKyAgICAgICAgdGVzdFBhc3NlZCgiQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudHMg
dGhlbiBuYXZpZ2F0aW5nIGF3YXkgdG9vayBiZXR3ZWVuIDU1MG1zIGFuZCAxMTAwbXMgc3VnZ2Vz
dGluZyBhIHNpbmdsZSBwbHVnLWluIHdhcyBjcmVhdGVkIGFuZCB0aGVuIGRlc3Ryb3llZC4iKTsK
KworICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKworCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggZjk0MWI2Zi4uZDlkMWE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE1NSBAQAog
MjAxMi0wOC0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAg
T3V0LW9mLXByb2Nlc3MgcGx1Zy1pbnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRp
YWxpemF0aW9uCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIElmIGEgcGx1Zy1pbiBoYXMgYmVlbiBkZWVt
ZWQgY2FwYWJsZSBvZiBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gd2hlbiBydW4gb3V0IG9m
IHByb2Nlc3MuLi4KKyAgICAgICAgLi4udGhlbiBkbyB0aGF0IQorCisgICAgICAgIEFkZCBmbGFn
cyB0byBjb21tdW5pY2F0ZSB0aGF0IHRoaXMgcGx1Z2luIGNyZWF0ZSBpcyBtZWFudCB0byBjcmVh
dGUgYSBwbHVnLWluIGFscmVhZHkgcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGFuZAorICAgICAg
ICB0byBpbmNsdWRlIHdoZXRoZXIgb3Igbm90IHRoZSBpbml0aWFsaXplIGNhbGwgc2hvdWxkIGlu
Y2x1ZGUgYW4gYXJ0aWZpY2lhbCBkZWxheSAoZm9yIHRlc3RpbmcpOgorICAgICAgICAqIFBsdWdp
blByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAg
IChXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBQ
bHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzKToKKworICAgICAgICBBZGQgYSBmbGFnIGZvciB0aGUgVUkgUHJv
Y2VzcyB0byB0ZWxsIHRoZSBQbHVnaW5Qcm9jZXNzIHRoYXQgaXQgc3VwcG9ydHMgYXN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2Rl
KToKKyAgICAgICAgKiBTaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmg6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKworICAg
ICAgICBBbGxvdyB0aGUgVUkgUHJvY2VzcyB0byBwYXNzIGFsb25nIHdoZXRoZXIgdGhlIHBsdWct
b24gc3VwcG9ydHMgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgIChQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAg
ICBBbGxvdyB0aGUgUGx1Z2luIFByb2Nlc3MgdG8gcGFzcyB3aGV0aGVyIG9yIG5vdCBpdCBzdXBw
b3J0cyBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24sIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZAor
ICAgICAgICBpbiB0aGUgVUkgUHJvY2VzcywgYWxvbmcgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJvY2Vzczo6UGx1Z2luUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b2Nlc3M6OmluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblBy
b2Nlc3MvUGx1Z2luUHJvY2Vzcy5oOgorICAgICAgICAoUGx1Z2luUHJvY2Vzcyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisg
ICAgICAgIEFkZCBhIGZsYWcgc28gUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHJlbWVtYmVyIHdo
ZXRoZXIgb3Igbm90IHRoZXkgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb246Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNl
dFN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpzdXBwb3J0c0FzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKToKKworICAgICAgICBDcmVhdGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHdpdGgg
dGhlIGZsYWcgcGFzc2VkIGRvd24gZnJvbSB0aGUgUGx1Z2luUHJvY2VzcyBhYm91dCB3aGV0aGVy
IG9yIG5vdCB0aGV5CisgICAgICAgIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9u
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKworICAgICAgICBSZXNwb25kaW5nIHRv
IG1lc3NhZ2VzIGZyb20gdGhlIFdlYlByb2Nlc3MsIG1vc3Qgb2YgdGhlIGhlYXZ5IGRlY2lzaW9u
IG1ha2luZyBpbiBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gaXMgaGVyZToKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6YXN5bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZSk6IEEgc2V0IG9mIGluc3RhbmNlIElE
cyB0byAqbm90KiBjcmVhdGUgYXN5bmNocm9ub3VzbHkgbGF0ZXIgYmVjYXVzZSB3ZSBrbm93Cisg
ICAgICAgICAgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbik6IElmIHRo
ZSBwbHVnLWluIGRvZXNuJ3QgZXhpc3QgYnV0IGlzIGF3YWl0aW5nIGFzeW5jaHJvbm91cyBjcmVh
dGlvbiwgZmxhZyAKKyAgICAgICAgICB0aGlzIGluc3RhbmNlIElEIGluIHRoZSAiYXN5bmNocm9u
b3VzIGlnbm9yZSBzZXQiLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlUGx1Z2luSW50ZXJuYWwpOiBSZW5hbWVkIGZyb20gY3JlYXRlUGx1Z2luLCBhY3R1YWxs
eSBkb2VzIHRoZSBwbHVnLWluIGNyZWF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKTogQWRkcyB0aGUgaW5zdGFuY2UgSUQgdG8gdGhlICJh
c3luY2hyb25vdXMgaWdub3JlIHNldCIgdGhlbiBjYWxscyBjcmVhdGVQbHVnaW5JbnRlcm5hbC4K
KyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5j
aHJvbm91c2x5KTogSWYgdGhlIGluc3RhbmNlIElEIGlzIGluIHRoZSAiYXN5bmNocm9ub3VzIGln
bm9yZSBzZXQiLCByZW1vdmUgaXQgZnJvbSB0aGUKKyAgICAgICAgICBzZXQgYW5kIGRvIG5vdGhp
bmcgZWxzZS4gT3RoZXJ3aXNlLCBwZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBz
ZW5kIHRoZSBhc3luY2hyb25vdXMgcmVzdWx0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24ubWVzc2FnZXMuaW46CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGFzeW5jaHJv
bm91cyBpbml0aWFsaXphdGlvbiB0aGF0IGFsbCBwbHVnLWluIHR5cGVzIG11c3QgaW1wbGVtZW50
OgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFBsdWdp
bik6CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
biB0aGF0IHBsdWctaW4gY29udHJvbGxlcnMgY2FuIG92ZXJyaWRlOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgIChQbHVnaW5Db250cm9s
bGVyKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJv
bGxlcjo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lu
cyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xsZXI6OmFydGlmaWNpYWxQbHVnaW5J
bml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCk6CisKKyAgICAgICAgR2l2ZSBQbHVnaW5Qcm94eXMg
dGhlIGFiaWxpdHkgdG8gaW5pdGlhbGl6ZSBlaXRoZXIgYXN5bmNocm9ub3VzbHkgb3Igc3luY2hy
b25vdXNseSwgYW5kIGFsc28gdGhlIGFiaWxpdHkgdG8gc3luY2hyb25vdXNseQorICAgICAgICB3
YWl0IGZvciBwcmV2aW91c2x5IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiAoaW4gY2FzZSB0
aGVpciBQbHVnaW5TY3JpcHRPYmplY3QgaXMgcmVxdWlyZWQpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
OjpQbHVnaW5Qcm94eSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXpl
KTogU3RvcmUgdGhlIHBsdWdpbiBjcmVhdGlvbiBwYXJhbWV0ZXJzIGFzIGEgbWVtYmVyLCBhbmQg
ZGVjaWRlIHdoZXRoZXIgdG8gdHJ5IHN5bmNocm9ub3VzCisgICAgICAgICAgb3IgYXN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luUHJveHk6OmNhbkluaXRpYWxpemVBc3luY2hyb25vdXNseSk6IEFuc3dlciBiYXNlZCBv
biBwcmVmZXJlbmNlcyBhbmQgd2hhdCB0aGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gc2F5cwor
ICAgICAgICAgIHRoYXQgaXQgc3VwcG9ydHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5
Ojp3YWl0Rm9yQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOiBTeW5jaHJvbm91c2x5IHdhaXQg
b24gaW5pdGlhbGl6YXRpb24gd2hlbiBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KKyAgICAg
ICAgICB3YXMgcHJldmlvdXNseSByZXF1ZXN0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b3h5Ojppbml0aWFsaXplU3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b3h5OjpkaWRDcmVhdGVQbHVnaW4pOiBEb3VibGUtY2hlY2sgdGhhdCB3ZSdyZSBzdGlsbCBleHBl
Y3RpbmcgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLCB0aGVuIGNhbGwKKyAgICAgICAgICB0
aHJvdWdoIHRvIGRpZENyZWF0ZVBsdWdpbkludGVybmFsLgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5Qcm94eTo6ZGlkQ3JlYXRlUGx1Z2luSW50ZXJuYWwpOiBIYW5kbGUgY29tcGxldGlvbiBvZiBp
bml0aWFsaXphdGlvbiAoYm90aCBzeW5jaHJvbm91c2x5IGFuZCBhc3luY2hyb25vdXNseSkKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbik6IERvdWJs
ZS1jaGVjayB0aGF0IHdlJ3JlIHN0aWxsIGV4cGVjdGluZyBhc3luY2hyb25vdXMgaW5pdGlhbGl6
YXRpb24sIHRoZW4gY2FsbAorICAgICAgICAgIHRocm91Z2ggdG8gZGlkRmFpbFRvQ3JlYXRlUGx1
Z2luSW50ZXJuYWwuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVh
dGVQbHVnaW5JbnRlcm5hbCk6IEhhbmRsZSBmYWlsdXJlIHRvIGluaXRpYWxpemUgKGJvdGggc3lu
Y2hyb25vdXNseSBhbmQgYXN5bmNocm9ub3VzbHkpCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblBy
b3h5OjpkZXN0cm95KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc0lu
aXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KToKKyAgICAgICAgKFBsdWdpblByb3h5KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OlBsdWdpblZpZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp+
UGx1Z2luVmlldyk6IEFsd2F5cyBkZXN0cm95IHRoZSBwbHVnLWluIGV2ZW4gaWYgaXQgaGFzbid0
IGJlZW4gaW5pdGlhbGl6ZWQgeWV0LCBhcyBpdCBtaWdodCBiZSBpbml0aWFsaXppbmcKKyAgICAg
ICAgICByaWdodCBub3cuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmluaXRpYWxpemVQ
bHVnaW4pOiBEb24ndCBoYW5kbGUgdGhlIHJlc3VsdCBvZiBpbml0aWFsaXphdGlvbiBpbW1lZGlh
dGVseS4gQnJlYWsgdGhhdCBvdXQgaW4gdG8gdHdvCisgICAgICAgICAgbWV0aG9kcyB0aGF0IHdp
bGwgYmUgY2FsbGVkIGxhdGVyLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
UGx1Z2luVmlldzo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW5WaWV3OjpzY3JpcHRPYmplY3QpOiBJZiB3ZSB0cnVseSBuZWVkIHRoZSBzY3JpcHQgb2JqZWN0
LCB0aGVuIHdhaXQgZm9yIGEgc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWct
aW4uCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMpOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5WaWV3OjphcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVu
YWJsZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAg
ICAgIChQbHVnaW5WaWV3KToKKworICAgICAgICBUaGVzZSBtZXRob2RzIHNob3VsZG4ndCBiZSBj
YWxsZWQgaW4gdGhlIFBsdWdpblByb2Nlc3MsIG9ubHkgaW4gdGhlIFdlYlByb2Nlc3M6CisgICAg
ICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5Ojpk
aWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5oOgorICAgICAgICAoUGx1Z2luQ29udHJvbGxlclByb3h5KToKKwor
ICAgICAgICBOZXRzY2FwZVBsdWdpbiBpcyBmb3IgaW4tcHJvY2VzcyBwbHVnLWluczoKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAg
ICAgKE5ldHNjYXBlUGx1Z2luKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46Ondh
aXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luOjppc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KToKKworICAgICAgICBCdWls
dC1pbiBQREZWaWV3IGlzIGN1cnJlbnRseSBvbmx5IGluLXByb2Nlc3M6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oOgorICAgICAgICAoQnVpbHRJblBE
RlZpZXcpOgorICAgICAgICAoV2ViS2l0OjpCdWlsdEluUERGVmlldzo6d2FpdEZvckFzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6Omlz
SW5pdGlhbGl6aW5nQXN5bmNocm9ub3VzbHkpOgorCisyMDEyLTA4LTAzICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBTbWFsbCBwYXJ0IG9mICJPdXQtb2YtcHJv
Y2VzcyBwbHVnLWlucyBzaG91bGQgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24u
IgogICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA1OTg1OTQ+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MTkKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IDI0YThjZWUu
LmFiNjBmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTMxNyw2ICszMTcsMTggQEAgdm9pZCBQbHVnaW5D
b250cm9sbGVyUHJveHk6OndpbGxTZW5kRXZlbnRUb1BsdWdpbigpCiAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CiB9CiAKK3ZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRJbml0aWFsaXpl
UGx1Z2luKCkKK3sKKyAgICAvLyBUaGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgcGx1
Z2luIGluIHRoZSB3ZWIgcHJvY2Vzcy4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
dm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKQor
eworICAgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uIHRoZSBwbHVnaW4gaW4gdGhl
IHdlYiBwcm9jZXNzLgorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiBmbG9hdCBQbHVn
aW5Db250cm9sbGVyUHJveHk6OmNvbnRlbnRzU2NhbGVGYWN0b3IoKQogewogICAgIHJldHVybiBt
X2NvbnRlbnRzU2NhbGVGYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCBhNGFmNTQzLi40NmRhMWE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclBy
b3h5LmgKQEAgLTkwLDYgKzkwLDggQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRW5hYmxlZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Qcm9j
ZXNzQ3Jhc2hlZCgpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2VuZEV2ZW50VG9QbHVnaW4oKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkSW5pdGlhbGl6ZVBsdWdpbigpIE9WRVJSSURFOworICAgIHZp
cnR1YWwgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkgT1ZFUlJJREU7CiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgdmlydHVhbCB2b2lkIHBsdWdpbkZvY3VzT3JXaW5kb3dGb2N1c0No
YW5nZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1Bs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggZTI5ZTk3NC4uYmMyZTk5MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcApAQCAtMzcsNiArMzcsOCBAQCBQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnM6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycygpCiAgICAgLCB3aW5kb3dOUE9iamVjdElEKDAp
CiAgICAgLCBjb250ZW50c1NjYWxlRmFjdG9yKDEpCiAgICAgLCBpc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoZmFsc2UpCisgICAgLCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUoZmFsc2Up
CisgICAgLCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZmFsc2Up
CiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgICwgaXNBY2NlbGVyYXRlZENv
bXBvc2l0aW5nRW5hYmxlZChmYWxzZSkKICNlbmRpZgpAQCAtNTEsNiArNTMsOCBAQCB2b2lkIFBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlciog
ZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyLT5lbmNvZGUodXNlckFnZW50KTsKICAgICBlbmNv
ZGVyLT5lbmNvZGUoY29udGVudHNTY2FsZUZhY3Rvcik7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGlz
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGFzeW5jaHJvbm91
c0NyZWF0aW9uSW5jb21wbGV0ZSk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKGFydGlmaWNpYWxQbHVn
aW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCk7CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQpOwpAQCAtNzcsNiArODEsMTIgQEAgYm9vbCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6
OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqIGRlY29kZXIsIFBsdWdpbkMKICAgICBp
ZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQuaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LmFz
eW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6
YXRpb25EZWxheUVuYWJsZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0Lmlz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMuaAppbmRleCBmY2Q1MzQ5Li42ZjA1YmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTYw
LDYgKzYwLDEyIEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgewogCiAgICAgLy8g
V2hldGhlciBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQgYXQgdGhlIHRpbWUgb2YgaW5zdGFu
dGlhdGlvbi4KICAgICBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICAKKyAgICAv
LyBJZiByZXF1ZXN0aW5nIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLCB3aGV0aGVyIHRoaXMg
cGx1Z2luIGhhZCBwcmV2aW91c2x5IGJlZW4gcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5CisgICAg
Ym9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGU7CisKKyAgICAvLyBTaW11bGF0ZWQg
aW5pdGlhbGl6YXRpb24gZGVsYXkgdGVzdCBhc3luY2hyb25vdXMgcGx1Z2luIGluaXRpYWxpemF0
aW9uCisgICAgYm9vbCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQ7
CiAKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAgICAgLy8gV2hldGhlciBhY2Nl
bGVyYXRlZCBjb21wb3NpdGluZyBpcyBlbmFibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKaW5kZXggYmIxYjNiOC4uYmQyYmM3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuY3BwCkBAIC0zMiw4
ICszMiw5IEBACiAjaW5jbHVkZSAiQXR0YWNobWVudC5oIgogI2luY2x1ZGUgIk5ldHNjYXBlUGx1
Z2luLmgiCiAjaW5jbHVkZSAiTmV0c2NhcGVQbHVnaW5Nb2R1bGUuaCIKLSNpbmNsdWRlICJQbHVn
aW5Qcm9jZXNzUHJveHlNZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZXMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmgiCisjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJX
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KQEAgLTc0LDYgKzc1LDcgQEAgUGx1Z2lu
UHJvY2VzcyYgUGx1Z2luUHJvY2Vzczo6c2hhcmVkKCkKIAogUGx1Z2luUHJvY2Vzczo6UGx1Z2lu
UHJvY2VzcygpCiAgICAgOiBDaGlsZFByb2Nlc3Moc2h1dGRvd25UaW1lb3V0KQorICAgICwgbV9z
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKGZhbHNlKQogI2lmIFBMQVRG
T1JNKE1BQykKICAgICAsIG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0KE1BQ0hfUE9SVF9O
VUxMKQogI2VuZGlmCkBAIC0xNTksNiArMTYxLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjppbml0
aWFsaXplUGx1Z2luUHJvY2Vzcyhjb25zdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXIK
ICAgICBBU1NFUlQoIW1fcGx1Z2luTW9kdWxlKTsKIAogICAgIG1fcGx1Z2luUGF0aCA9IHBhcmFt
ZXRlcnMucGx1Z2luUGF0aDsKKyAgICBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24gPSBwYXJhbWV0ZXJzLnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb247CiAKICAgICBwbGF0Zm9ybUluaXRpYWxpemUocGFyYW1ldGVycyk7CiB9CkBAIC0xNzcs
NyArMTgwLDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlv
bigpCiAgICAgbV93ZWJQcm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFz
ZSgpKTsKIAogICAgIENvcmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50UG9ydChsaXN0ZW5pbmdQb3J0
LCBNQUNIX01TR19UWVBFX01BS0VfU0VORCk7Ci0gICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3Nh
Z2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNs
aWVudFBvcnQpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQoTWVzc2FnZXM6OlBsdWdpblBy
b2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY2xpZW50UG9ydCwgbV9z
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSwgMCk7CiAjZWxpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKICAgICBpbnQgc29ja2V0c1syXTsKICAgICBpZiAoc29ja2V0
cGFpcihBRl9VTklYLCBTT0NLRVRfVFlQRSwgMCwgc29ja2V0cykgPT0gLTEpIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgKaW5kZXggNjMzYmI0MS4uYmNi
ZDIwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmgK
QEAgLTk5LDYgKzk5LDggQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgcGx1Zy1pbiBtb2R1bGUuCiAg
ICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luTW9kdWxlPiBtX3BsdWdpbk1vZHVsZTsKICAgICAKKyAg
ICBib29sIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKKyAgICAK
ICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpICYmIFBMQVRGT1JNKE1BQykKICAgICAv
LyBUaGUgTWFjaCBwb3J0IHVzZWQgZm9yIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nLgogICAgIG1h
Y2hfcG9ydF90IG1fY29tcG9zaXRpbmdSZW5kZXJTZXJ2ZXJQb3J0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA1
YWU4MGI5Li4zMWZiOTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIK
ICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgiCisjaW5jbHVkZSAi
UGx1Z2luUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUnVuTG9vcC5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKQEAgLTg1LDYgKzg2LDEyIEBAIHN0YXRpYyBDb25uZWN0
aW9uU3RhY2smIGNvbm5lY3Rpb25TdGFjaygpCiAgICAgcmV0dXJuIGNvbm5lY3Rpb25TdGFjazsK
IH0KIAorc3RhdGljIEhhc2hTZXQ8dWludDY0X3Q+JiBhc3luY2hyb25vdXNJbnN0YW5jZUlEc1Rv
SWdub3JlKCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8dWludDY0X3Q+LCBp
bnN0YW5jZXMsICgpKTsKKyAgICByZXR1cm4gaW5zdGFuY2VzOworfQorCiBQYXNzUmVmUHRyPFdl
YlByb2Nlc3NDb25uZWN0aW9uPiBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKENvcmVJUEM6
OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25uZWN0aW9uSWRlbnRpZmll
cikpOwpAQCAtMTYwLDYgKzE2NywxMSBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRS
ZWNlaXZlTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDbwogewogICAg
IENvbm5lY3Rpb25TdGFjazo6Q3VycmVudENvbm5lY3Rpb25QdXNoZXIgY3VycmVudENvbm5lY3Rp
b24oY29ubmVjdGlvblN0YWNrKCksIGNvbm5lY3Rpb24pOwogCisgICAgaWYgKG1lc3NhZ2VJRC5p
czxDb3JlSVBDOjpNZXNzYWdlQ2xhc3NXZWJQcm9jZXNzQ29ubmVjdGlvbj4oKSkgeworICAgICAg
ICBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKGNvbm5lY3Rpb24sIG1lc3Nh
Z2VJRCwgYXJndW1lbnRzKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIGlmICghYXJn
dW1lbnRzLT5kZXN0aW5hdGlvbklEKCkpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgIHJldHVybjsKQEAgLTIwOCwxMSArMjIwLDIwIEBAIHZvaWQgV2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OmRpZENsb3NlKENvcmVJUEM6OkNvbm5lY3Rpb24qKQogICAgICAgICBkZXN0cm95
UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJzW2ldKTsKIH0KIAotdm9pZCBX
ZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5j
ZUlEKQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbih1aW50NjRfdCBw
bHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSkKIHsK
ICAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1fcGx1
Z2luQ29udHJvbGxlcnMuZ2V0KHBsdWdpbkluc3RhbmNlSUQpOwotICAgIEFTU0VSVChwbHVnaW5D
b250cm9sbGVyUHJveHkpOwotCisgICAgCisgICAgLy8gSWYgdGhlcmUgaXMgbm8gUGx1Z2luQ29u
dHJvbGxlclByb3h5IHRoZW4gdGhpcyBwbHVnLWluIGRvZXNuJ3QgZXhpc3QgeWV0IGFuZCB3ZSBw
cm9iYWJseSBoYXZlIG5vdGhpbmcgdG8gZG8uCisgICAgaWYgKCFwbHVnaW5Db250cm9sbGVyUHJv
eHkpIHsKKyAgICAgICAgLy8gSWYgdGhlIHBsdWdpbiB3ZSdyZSBzdXBwb3NlZCB0byBkZXN0cm95
IHdhcyByZXF1ZXN0ZWQgYXN5bmNocm9ub3VzbHkgYW5kIGRvZXNuJ3QgZXhpc3QgeWV0LAorICAg
ICAgICAvLyB3ZSBuZWVkIHRvIGZsYWcgdGhlIGluc3RhbmNlIElEIHNvIGl0IGlzIG5vdCBjcmVh
dGVkIGxhdGVyLgorICAgICAgICBpZiAoYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKQor
ICAgICAgICAgICAgYXN5bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZSgpLmFkZChwbHVnaW5J
bnN0YW5jZUlEKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCiAgICAg
ZGVzdHJveVBsdWdpbkNvbnRyb2xsZXJQcm94eShwbHVnaW5Db250cm9sbGVyUHJveHkpOwogfQog
CkBAIC0yMjUsNyArMjQ2LDcgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6c3luY01lc3Nh
Z2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopCiB7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZl
bnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQogewogICAgIE93blB0cjxQbHVnaW5D
b250cm9sbGVyUHJveHk+IHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IFBsdWdpbkNvbnRyb2xsZXJQ
cm94eTo6Y3JlYXRlKHRoaXMsIGNyZWF0aW9uUGFyYW1ldGVycyk7CiAKQEAgLTI0Nyw2ICsyNjgs
NTggQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb24KICNlbmRpZgogfQogCit2b2lkIFdlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJz
JiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50
cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCit7CisgICAgUGx1Z2luQ29udHJvbGxl
clByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJzLmdldChj
cmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7CisKKyAgICAvLyBUaGUgcGx1Zy1p
biB3ZSdyZSBiZWluZyBhc2tlZCB0byBjcmVhdGUgc3luY2hyb25vdXNseSBtaWdodCBhbHJlYWR5
IGV4aXN0IGlmIHdlIGp1c3QgZmluaXNoZWQgY3JlYXRpbmcgaXQgYXN5bmNocm9ub3VzbHkuCisg
ICAgLy8gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gbm90IGNyZWF0ZSBpdCBhZ2FpbiAoYnV0IGFs
c28gbmVlZCB0byByZXR1cm4gdGhlIGNvcnJlY3QgaW5mb3JtYXRpb24gYWJvdXQgaXRzIGNyZWF0
aW9uKS4KKyAgICBpZiAocGx1Z2luQ29udHJvbGxlclByb3h5KSB7CisgICAgICAgIHJlc3VsdCA9
IHRydWU7CisgICAgICAgIHdhbnRzV2hlZWxFdmVudHMgPSBwbHVnaW5Db250cm9sbGVyUHJveHkt
PndhbnRzV2hlZWxFdmVudHMoKTsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgIHJlbW90ZUxh
eWVyQ2xpZW50SUQgPSBwbHVnaW5Db250cm9sbGVyUHJveHktPnJlbW90ZUxheWVyQ2xpZW50SUQo
KTsKKyNlbmRpZgorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIFRoZSBwbHVn
aW4gd2UncmUgc3VwcG9zZWQgdG8gY3JlYXRlIG1pZ2h0IGhhdmUgYmVlbiByZXF1ZXN0ZWQgYXN5
bmNocm9ub3VzbHkgYmVmb3JlLgorICAgIC8vIEluIHRoYXQgY2FzZSB3ZSBuZWVkIHRvIGNyZWF0
ZSBpdCBzeW5jaHJvbm91c2x5IG5vdyBidXQgZmxhZyB0aGUgaW5zdGFuY2UgSUQgc28gd2UgZG9u
J3QgcmVjcmVhdGUgaXQgYXN5bmNocm9ub3VzbHkgbGF0ZXIuCisgICAgaWYgKGNyZWF0aW9uUGFy
YW1ldGVycy5hc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpCisgICAgICAgIGFzeW5jaHJv
bm91c0luc3RhbmNlSURzVG9JZ25vcmUoKS5hZGQoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbklu
c3RhbmNlSUQpOworICAgIAorICAgIGNyZWF0ZVBsdWdpbkludGVybmFsKGNyZWF0aW9uUGFyYW1l
dGVycywgcmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKK30K
Kwordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHko
Y29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMpCit7Cisg
ICAgLy8gSW4gdGhlIHRpbWUgc2luY2UgdGhpcyBwbHVnaW4gd2FzIHJlcXVlc3RlZCBhc3luY2hy
b25vdXNseSB3ZSBtaWdodCBoYXZlIGNyZWF0ZWQgaXQgc3luY2hyb25vdXNseSBvciBkZXN0cm95
ZWQgaXQuCisgICAgLy8gSW4gZWl0aGVyIG9mIHRob3NlIGNhc2VzIHdlIG5lZWQgdG8gaWdub3Jl
IHRoaXMgY3JlYXRpb24gcmVxdWVzdC4KKyAgICBpZiAoYXN5bmNocm9ub3VzSW5zdGFuY2VJRHNU
b0lnbm9yZSgpLmNvbnRhaW5zKGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKSkg
eworICAgICAgICBhc3luY2hyb25vdXNJbnN0YW5jZUlEc1RvSWdub3JlKCkucmVtb3ZlKGNyZWF0
aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICAvLyBUaGlzIHZlcnNpb24gb2YgQ3JlYXRlUGx1Z2luIGlzIG9ubHkgdXNlZCBi
eSBwbHVnLWlucyB0aGF0IGFyZSBrbm93biB0byBiZWhhdmUgd2hlbiBzdGFydGVkIGFzeW5jaHJv
bm91c2x5LgorICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgdWludDMyX3QgcmVtb3RlTGF5
ZXJDbGllbnRJRCA9IDA7CisgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzID0gZmFsc2U7CisgICAg
CisgICAgaWYgKGNyZWF0aW9uUGFyYW1ldGVycy5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRp
b25EZWxheUVuYWJsZWQpIHsKKyAgICAgICAgc3RhdGljIHVuc2lnbmVkIGludCBhcnRpZmljaWFs
UGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheSA9IDU7CisgICAgICAgIHNsZWVwKGFydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5KTsKKyAgICB9CisKKyAgICBjcmVhdGVQbHVnaW5JbnRl
cm5hbChjcmVhdGlvblBhcmFtZXRlcnMsIHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3Rl
TGF5ZXJDbGllbnRJRCk7CisKKyAgICBpZiAoIXJlc3VsdCkgeworICAgICAgICBtX2Nvbm5lY3Rp
b24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkRmFpbFRvQ3JlYXRlUGx1Z2lu
KCksIE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkRmFpbFRvQ3JlYXRlUGx1Z2luOjpSZXBseSgp
LCBjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVnaW5Qcm94
eTo6RGlkQ3JlYXRlUGx1Z2luKHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQp
LCBNZXNzYWdlczo6UGx1Z2luUHJveHk6OkRpZENyZWF0ZVBsdWdpbjo6UmVwbHkoKSwgY3JlYXRp
b25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKIAogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBmMzg0Njcx
Li44ZDdmNjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQ
cm9jZXNzQ29ubmVjdGlvbi5oCkBAIC02Nyw5ICs2NywxMyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKik7CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgorICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlE
LCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1
bWVudEVuY29kZXI+Jik7CiAgICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzJiwgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50
MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCk7Ci0gICAgdm9pZCBkZXN0cm95UGx1Z2luKHVpbnQ2
NF90IHBsdWdpbkluc3RhbmNlSUQpOworICAgIHZvaWQgY3JlYXRlUGx1Z2luQXN5bmNocm9ub3Vz
bHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBkZXN0cm95UGx1
Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRpb25J
bmNvbXBsZXRlKTsKKyAgICAKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0IFBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2
ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogCiAgICAgUmVmUHRyPENvcmVJ
UEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
aW5kZXggMDdjM2MyNy4uZjFhODM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2lu
UHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0y
Niw4ICsyNiwxMSBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzQ29ubmVjdGlvbiB7CiAgICAgIyBD
cmVhdGVzIGEgcGx1Zy1pbiBpbnN0YW5jZSB1c2luZyB0aGUgZ2l2ZW4gY3JlYXRpb24gcGFyYW1l
dGVycy4KICAgICBDcmVhdGVQbHVnaW4oV2ViS2l0OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMg
cGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQsIGJvb2wgd2FudHNXaGVl
bEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkKIAorICAgICMgQ3JlYXRlcyBh
IHBsdWctaW4gaW5zdGFuY2UgYXN5bmNocm9ub3VzbHkgdXNpbmcgdGhlIGdpdmVuIGNyZWF0aW9u
IHBhcmFtZXRlcnMuCisgICAgQ3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoV2ViS2l0OjpQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMgcGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKQorCiAgICAgIyBE
ZXN0cm95cyB0aGUgcGx1Zy1pbiBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBpbnN0YW5jZSBJRC4K
LSAgICBEZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQpIC0+ICgpCisgICAg
RGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91
c0NyZWF0aW9uSW5jb21wbGV0ZSkgLT4gKCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IGM2Yzg3YTYuLjBmMDM2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zMywxMiArMzMsMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCiBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzKCkKKyAgICA6IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24oZmFsc2UpCiB7CiB9CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZW5jb2RlKENvcmVJUEM6OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAg
ICBlbmNvZGVyLT5lbmNvZGUocGx1Z2luUGF0aCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogCiAjaWYgUExBVEZPUk0oTUFD
KQogICAgIGVuY29kZXItPmVuY29kZShwYXJlbnRQcm9jZXNzTmFtZSk7CkBAIC01MCw2ICs1Miw4
IEBAIGJvb2wgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6
OkFyZ3VtZW50RGVjb2RlciogZGVjb2RlciwKIHsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShy
ZXN1bHQucGx1Z2luUGF0aCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bikpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAo
IWRlY29kZXItPmRlY29kZShyZXN1bHQucGFyZW50UHJvY2Vzc05hbWUpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IDYyY2Y0YmIuLmNmYWVkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKQEAgLTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMgewogICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVu
dERlY29kZXIqLCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKICAgICBTdHJp
bmcgcGx1Z2luUGF0aDsKKyAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb247CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgU3RyaW5nIHBhcmVudFByb2Nlc3NO
YW1lOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5jcHAKaW5kZXggNDNmYTJmNC4uYzllMDEzMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3Bw
CkBAIC0xMzcsOSArMTM3LDkgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nl
c3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpCiAgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiBy
ZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgUExB
VEZPUk0oTUFDKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1B
Q0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0
dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7CiAjZWxpZiBVU0Uo
VU5JWF9ET01BSU5fU09DS0VUUykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNo
bWVudCgpKTsKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgpLCBmYWxz
ZSk7CiAjZWxzZQogICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yMjgsNyAr
MjI4LDcgQEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9j
ZXNzTGF1bmNoZXIqLCBDb3JlSVBDOjpDb25uZWN0aW8KICAgICBtX251bVBlbmRpbmdDb25uZWN0
aW9uUmVxdWVzdHMgPSAwOwogfQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlv
bklkZW50aWZpZXIpCit2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIHsKICAg
ICBBU1NFUlQoIW1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKQEAgLTIz
Niw5ICsyMzYsOSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vz
c0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudAogICAgIFJlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiByZXBseSA9IG1fcGVuZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAj
aWYgUExBVEZPUk0oTUFDKQotICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29u
bmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworICAg
IHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9y
dCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb24pOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVw
bHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsK
ICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCAwYTUx
ZDliLi5lMGZlMTVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAK
ICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJvY2Vz
c1Byb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBD
b3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlByb2Nlc3ND
b25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZENyZWF0
ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmLCBib29sIHN1
cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwogICAgIHZvaWQgZGlkR2V0
U2l0ZXNXaXRoRGF0YShjb25zdCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpOwogICAgIHZvaWQgZGlkQ2xlYXJTaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdiNTlhZWYuLjE4M2NiMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFC
TEUoUExVR0lOX1BST0NFU1MpCiAKIG1lc3NhZ2VzIC0+IFBsdWdpblByb2Nlc3NQcm94eSB7Ci0g
ICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudCBjb25u
ZWN0aW9uSWRlbnRpZmllcikKKyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihDb3Jl
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAKICAgICBEaWRHZXRTaXRlc1dpdGhEYXRhKFZl
Y3RvcjxXVEY6OlN0cmluZz4gc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkQ2xl
YXJTaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0K
aW5kZXggMzQ4NmRlNC4uZDRiNGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0x
MTgsNiArMTE4LDkgQEAgYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVByb3BlcnR5TGlz
dEZpbGUoY29uc3QgUGx1Z2luTW9kdWxlSW5mbyYgcGx1Z2luKQogCiB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogeworICAgIC8vIEZvciBrbm93IG9ubHkgRmxh
c2ggaXMga25vd24gdG8gYmVoYXZlIHdpdGggYXN5bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6
YXRpb24uCisgICAgcGFyYW1ldGVycy5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uID0gbV9wbHVnaW5JbmZvLmJ1bmRsZUlkZW50aWZpZXIgPT0gImNvbS5tYWNyb21lZGlh
LkZsYXNoIFBsYXllci5wbHVnaW4iOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KSAmJiBIQVZFKEhPU1RFRF9DT1JFX0FOSU1BVElPTikKICAgICBwYXJhbWV0ZXJzLnBhcmVudFBy
b2Nlc3NOYW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CiAj
aWYgX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5
ZTdiNTI5Li44NDgwNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KQEAgLTM0LDcgKzM0LDcgQEAgbWVzc2FnZXMgLT4g
V2ViUHJvY2Vzc1Byb3h5IHsKICAgICBTaG91bGRUZXJtaW5hdGUoKSAtPiAoYm9vbCBzaG91bGRU
ZXJtaW5hdGUpCiAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgR2V0UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENvcmVJUEM6OkF0dGFj
aG1lbnQgY29ubmVjdGlvbkhhbmRsZSkgRGVsYXllZAorICAgIEdldFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKFdURjo6U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25IYW5kbGUsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikg
RGVsYXllZAogICAgIFBsdWdpblN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KFdURjo6U3RyaW5nIHBs
dWdpblBhdGgpCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCAxYzQ5YzYwLi5l
MDYzNjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtNTQsNiArNTQsMTAgQEAgcHVibGlj
OgogCiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQKTsK
IAorICAgIC8vIEluLXByb2Nlc3MgTmV0c2NhcGVQbHVnaW5zIGRvbid0IHN1cHBvcnQgYXN5bmNo
cm9ub3VzIGluaXRpYWxpemF0aW9uLgorICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQXN5bmNocm9u
b3VzSW5pdGlhbGl6YXRpb24oKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNJbml0aWFsaXppbmdB
c3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKICNpZiBQTEFURk9STShN
QUMpCiAgICAgTlBFcnJvciBzZXREcmF3aW5nTW9kZWwoTlBEcmF3aW5nTW9kZWwpOwogICAgIE5Q
RXJyb3Igc2V0RXZlbnRNb2RlbChOUEV2ZW50TW9kZWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCmluZGV4IDZkMTFj
ODUuLjBlMTBkMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QREYvQnVpbHRJblBERlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKQEAgLTUwLDYgKzUwLDEwIEBAIHB1YmxpYzoKIAog
ICAgIHN0YXRpYyBXZWJDb3JlOjpQbHVnaW5JbmZvIHBsdWdpbkluZm8oKTsKIAorICAgIC8vIElu
LXByb2Nlc3MgUERGVmlld3MgZG9uJ3Qgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRp
b24uCisgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigp
IHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBCdWlsdEluUERG
VmlldyhXZWJGcmFtZSopOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKaW5kZXggNWJlODRmNC4uZTNjMTAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtODMsNiArODMsMTAgQEAgcHVibGljOgogICAgIC8vIFNl
dHMgdGhlIGFjdGl2ZSBwbHVnLWluIGNvbnRyb2xsZXIgYW5kIGluaXRpYWxpemVzIHRoZSBwbHVn
LWluLgogICAgIGJvb2wgaW5pdGlhbGl6ZShQbHVnaW5Db250cm9sbGVyKiwgY29uc3QgUGFyYW1l
dGVycyYpOwogCisgICAgLy8gRm9yY2VzIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uIG9mIGEg
cGx1Z2luIHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgYXN5bmNocm9ub3VzbHkuCisgICAgdmlydHVh
bCB2b2lkIHdhaXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigpID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNJbml0aWFsaXppbmdBc3luY2hyb25vdXNseSgpIGNvbnN0ID0gMDsKKwogICAg
IC8vIERlc3Ryb3lzIHRoZSBwbHVnLWluLgogICAgIHZvaWQgZGVzdHJveVBsdWdpbigpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJv
bGxlci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaAppbmRleCA0MmMyOTU5Li40NGVhMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTEzOCw2ICsxMzgsMTUg
QEAgcHVibGljOgogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHByaXZhdGUgYnJvd3NpbmcgaXMg
ZW5hYmxlZC4KICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPSAw
OworICAgIAorICAgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgYXN5bmNocm9ub3VzIHBsdWdp
biBpbml0aWFsaXphdGlvbiBpcyBlbmFibGVkLgorICAgIHZpcnR1YWwgYm9vbCBhc3luY2hyb25v
dXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQor
ICAgIAorICAgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgYXN5bmNocm9ub3VzIHBsdWdpbiBp
bml0aWFsaXphdGlvbiBzaG91bGQgYmUgYXR0ZW1wdGVkIGZvciBhbGwgcGx1Z2lucy4KKyAgICB2
aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxs
UGx1Z2lucygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgLy8gUmV0dXJucyB0
aGUgYXJ0aWNpZmljYWwgcGx1Z2luIGRlbGF5IHRvIHVzZSBmb3IgdGVzdGluZyBvZiBhc3luY2hy
b25vdXMgcGx1Z2luIGluaXRpYWxpemF0aW9uLgorICAgIHZpcnR1YWwgYm9vbCBhcnRpZmljaWFs
UGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCiAgICAgLy8gSW5jcmVtZW50cyBhIGNvdW50ZXIgdGhhdCBwcmV2ZW50cyB0aGUgcGx1Zy1p
biBmcm9tIGJlaW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFBsdWdpbkZy
b21EZXN0cnVjdGlvbigpID0gMDsKQEAgLTE1MSw2ICsxNjAsOSBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2ViQ29yZTo6
SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVjdCwgdWlu
dDY0X3Qgd2luZG93SUQpID0gMDsKICNlbmRpZgogCisgICAgdmlydHVhbCB2b2lkIGRpZEluaXRp
YWxpemVQbHVnaW4oKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW4oKSA9IDA7CisKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRlc3RydWN0
aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3RlY3RvciB7
CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggODMzOWFkNC4uY2Mz
MTNkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC03Myw5ICs3MywxMCBAQCBzdGF0
aWMgZG91YmxlIGRlZmF1bHRTeW5jTWVzc2FnZVRpbWVvdXQoY29uc3QgU3RyaW5nJiBwbHVnaW5Q
YXRoKQogICAgIHJldHVybiBzeW5jTWVzc2FnZVRpbWVvdXQ7CiB9CiAKLVBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBw
bHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVu
dGlmaWVyKQorUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246Oklk
ZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbikKICAgICA6IG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUGF0aChw
bHVnaW5QYXRoKQorICAgICwgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiB7CiAgICAgbV9j
b25uZWN0aW9uID0gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbihj
b25uZWN0aW9uSWRlbnRpZmllciwgdGhpcywgV2ViUHJvY2Vzczo6c2hhcmVkKCkucnVuTG9vcCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaAppbmRleCA2MWM0YWMyLi5mZjAwYmYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24uaApAQCAtNDMsOSArNDMsOSBAQCBjbGFzcyBQbHVnaW5Qcm94eTsKICAg
ICAKIGNsYXNzIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+LCBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBjcmVh
dGUoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6
SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKICAgICB7
Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRp
ZmllcikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgY29ubmVjdGlv
bklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKTsK
ICAgICB9CiAgICAgflBsdWdpblByb2Nlc3NDb25uZWN0aW9uKCk7CiAKQEAgLTU4LDggKzU4LDEw
IEBAIHB1YmxpYzoKIAogICAgIE5QUmVtb3RlT2JqZWN0TWFwKiBucFJlbW90ZU9iamVjdE1hcCgp
IGNvbnN0IHsgcmV0dXJuIG1fbnBSZW1vdGVPYmplY3RNYXAuZ2V0KCk7IH0KIAorICAgIGJvb2wg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsgfQorCiBwcml2YXRl
OgotICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFu
YWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdp
blBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZp
ZXIpOworICAgIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbik7CiAKICAgICAv
LyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKik7CkBAIC04Miw2ICs4NCw4IEBAIHByaXZhdGU6CiAgICAgSGFz
aE1hcDx1aW50NjRfdCwgUGx1Z2luUHJveHkqPiBtX3BsdWdpbnM7CiAKICAgICBSZWZQdHI8TlBS
ZW1vdGVPYmplY3RNYXA+IG1fbnBSZW1vdGVPYmplY3RNYXA7CisgICAgCisgICAgYm9vbCBtX3N1
cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKaW5kZXgg
ZmQxOTA2ZC4uMzNkMTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5j
cHAKQEAgLTU3LDggKzU3LDkgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24qIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QKICAgICB9CiAKICAg
ICBDb3JlSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllcjsKKyAgICBi
b29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247CiAgICAgaWYgKCFXZWJQcm9j
ZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
UHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBhdGgpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENv
bm5lY3Rpb25JZGVudGlmaWVyKSwgMCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXIsIHN1
cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCAwKSkKICAgICAgICAgcmV0dXJuIDA7
CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC03MSw3ICs3Miw3IEBAIFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0CiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRpZmllcik7
CisgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwg
Y29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24p
OwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbik7CiAKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBkNGEzNTQ5Li5iNzhjMDg3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKQEAgLTY4LDYg
KzY4LDcgQEAgUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0
aCkKICAgICAsIG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRlKGZhbHNlKQogICAg
ICwgbV93YW50c1doZWVsRXZlbnRzKGZhbHNlKQogICAgICwgbV9yZW1vdGVMYXllckNsaWVudElE
KDApCisgICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQog
ewogfQogCkBAIC05MywzOCArOTQsMTA5IEBAIGJvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemUo
Y29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rpb24tPmFkZFBsdWdp
blByb3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nlc3MgdG8gY3JlYXRl
IGEgcGx1Zy1pbi4KLSAgICBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0
ZXJzOwotICAgIGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEID0gbV9wbHVnaW5J
bnN0YW5jZUlEOwotICAgIGNyZWF0aW9uUGFyYW1ldGVycy53aW5kb3dOUE9iamVjdElEID0gd2lu
ZG93TlBPYmplY3RJRCgpOwotICAgIGNyZWF0aW9uUGFyYW1ldGVycy5wYXJhbWV0ZXJzID0gcGFy
YW1ldGVyczsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMudXNlckFnZW50ID0gY29udHJvbGxlcigp
LT51c2VyQWdlbnQoKTsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMuY29udGVudHNTY2FsZUZhY3Rv
ciA9IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMuaXNQcml2
YXRlQnJvd3NpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5pc1ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSBhZG9wdFB0cihu
ZXcgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKTsKKworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKKyAg
ICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPndpbmRvd05QT2JqZWN0SUQgPSB3
aW5kb3dOUE9iamVjdElEKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJz
LT5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMtPnVzZXJBZ2VudCA9IGNvbnRyb2xsZXIoKS0+dXNlckFnZW50KCk7CisgICAgbV9w
ZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5jb250ZW50c1NjYWxlRmFjdG9yID0gY29u
dGVudHNTY2FsZUZhY3RvcigpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5pc1ByaXZhdGVCcm93
c2luZ0VuYWJsZWQoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmFy
dGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IGNvbnRyb2xsZXIoKS0+
YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCk7CisKICNpZiBVU0Uo
QUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgY3JlYXRpb25QYXJhbWV0ZXJzLmlzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMt
PmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKICNlbmRpZgogCisgICAgaWYgKCFjYW5Jbml0aWFs
aXplQXN5bmNocm9ub3VzbHkoKSkKKyAgICAgICAgcmV0dXJuIGluaXRpYWxpemVTeW5jaHJvbm91
c2x5KCk7CisKKyAgICAvLyBSZW1lbWJlciB0aGF0IHdlIHRyaWVkIHRvIGNyZWF0ZSB0aGlzIHBs
dWctaW4gYXN5bmNocm9ub3VzbHkgaW4gY2FzZSB3ZSBuZWVkIHRvIGNyZWF0ZSBpdCBzeW5jaHJv
bm91c2x5IGxhdGVyLgorICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24g
PSB0cnVlOworICAgIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlvblBhcmFtZXRlcnMo
Km1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5nZXQoKSk7CisgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpD
cmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShjcmVhdGlvblBhcmFtZXRlcnMpLCBtX3BsdWdpbklu
c3RhbmNlSUQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBsdWdpblByb3h5OjpjYW5J
bml0aWFsaXplQXN5bmNocm9ub3VzbHkoKSBjb25zdAoreworICAgIHJldHVybiBjb250cm9sbGVy
KCktPmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpICYmIChtX2Nvbm5l
Y3Rpb24tPnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24oKSB8fCBjb250
cm9sbGVyKCktPmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBs
dWdpbnMoKSk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OndhaXRGb3JBc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbigpCit7CisgICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7CisgICAgQVNTRVJUKG1f
d2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworCisgICAgaW5pdGlhbGl6ZVN5
bmNocm9ub3VzbHkoKTsKK30KKworYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZVN5bmNocm9u
b3VzbHkoKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMp
OworCisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5hc3luY2hyb25vdXND
cmVhdGlvbkluY29tcGxldGUgPSBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
OwogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgYm9vbCB3YW50c1doZWVsRXZlbnRzID0g
ZmFsc2U7CiAgICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IDA7CisgICAgCisgICAg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKm1fcGVuZGluZ1BsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycy5nZXQoKSk7CiAKLSAgICBpZiAoIW1fY29ubmVjdGlvbi0+Y29ubmVjdGlv
bigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdp
bihjcmVhdGlvblBhcmFtZXRlcnMpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNy
ZWF0ZVBsdWdpbjo6UmVwbHkocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNs
aWVudElEKSwgMCkgfHwgIXJlc3VsdCkgewotICAgICAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVBs
dWdpblByb3h5KHRoaXMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQorICAgIGlmICgh
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luKHBhcmFtZXRlcnMpLCBNZXNzYWdlczo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6UmVwbHkocmVzdWx0LCB3YW50c1doZWVsRXZlbnRz
LCByZW1vdGVMYXllckNsaWVudElEKSwgMCkgfHwgIXJlc3VsdCkKKyAgICAgICAgZGlkRmFpbFRv
Q3JlYXRlUGx1Z2luSW50ZXJuYWwoKTsKKyAgICBlbHNlCisgICAgICAgIGRpZENyZWF0ZVBsdWdp
bkludGVybmFsKHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOworICAgIAor
ICAgIHJldHVybiByZXN1bHQ7Cit9CiAKK3ZvaWQgUGx1Z2luUHJveHk6OmRpZENyZWF0ZVBsdWdp
bihib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQpCit7
CisgICAgLy8gV2UgbWlnaHQgaGF2ZSB0cmllZCB0byBjcmVhdGUgdGhlIHBsdWctaW4gc3ljaHJv
bm91c2x5IHdoaWxlIHdhaXRpbmcgb24gdGhlIGFzeW5jaHJvbm91cyByZXBseSwKKyAgICAvLyBp
biB3aGljaCBjYXNlIHdlIHNob3VsZCBpZ25vcmUgdGhpcyBtZXNzYWdlLgorICAgIGlmICghbV93
YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZGlkQ3JlYXRlUGx1Z2luSW50ZXJuYWwod2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJD
bGllbnRJRCk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbigp
Cit7CisgICAgLy8gV2UgbWlnaHQgaGF2ZSB0cmllZCB0byBjcmVhdGUgdGhlIHBsdWctaW4gc3lj
aHJvbm91c2x5IHdoaWxlIHdhaXRpbmcgb24gdGhlIGFzeW5jaHJvbm91cyByZXBseSwKKyAgICAv
LyBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBpZ25vcmUgdGhpcyBtZXNzYWdlLgorICAgIGlmICgh
bV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikKKyAgICAgICAgcmV0dXJuOwor
CisgICAgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwoKTsKK30KKwordm9pZCBQbHVnaW5Q
cm94eTo6ZGlkQ3JlYXRlUGx1Z2luSW50ZXJuYWwoYm9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50
MzJfdCByZW1vdGVMYXllckNsaWVudElEKQorewogICAgIG1fd2FudHNXaGVlbEV2ZW50cyA9IHdh
bnRzV2hlZWxFdmVudHM7CiAgICAgbV9yZW1vdGVMYXllckNsaWVudElEID0gcmVtb3RlTGF5ZXJD
bGllbnRJRDsKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CisgICAgY29udHJvbGxlcigpLT5kaWRJ
bml0aWFsaXplUGx1Z2luKCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBXaGV0aGVyIHN5
bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHksIHRoaXMgcGx1Zy1pbiB3YXMgY3JlYXRlZCBh
bmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gcmVtZW1iZXIKKyAgICAvLyBhbnl0aGluZyBhYm91dCBo
b3cuCisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gMDsKKyAgICBtX3dh
aXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gZmFsc2U7CiB9CiAKLXZvaWQgUGx1
Z2luUHJveHk6OmRlc3Ryb3koKQordm9pZCBQbHVnaW5Qcm94eTo6ZGlkRmFpbFRvQ3JlYXRlUGx1
Z2luSW50ZXJuYWwoKQogewotICAgIEFTU0VSVChtX2lzU3RhcnRlZCk7CisgICAgbV9jb25uZWN0
aW9uLT5yZW1vdmVQbHVnaW5Qcm94eSh0aGlzKTsKKyAgICBjb250cm9sbGVyKCktPmRpZEZhaWxU
b0luaXRpYWxpemVQbHVnaW4oKTsKIAotICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5z
ZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW4obV9w
bHVnaW5JbnN0YW5jZUlEKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95
UGx1Z2luOjpSZXBseSgpLCAwKTsKKyAgICAvLyBXaGV0aGVyIHN5bmNocm9ub3VzbHkgb3IgYXN5
bmNocm9ub3VzbHksIHRoaXMgcGx1Zy1pbiBmYWlsZWQgdG8gY3JlYXRlIGFuZCB3ZSBzaG91bGRu
J3QgbmVlZCB0byByZW1lbWJlcgorICAgIC8vIGFueXRoaW5nIGFib3V0IGhvdy4KKyAgICBtX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgPSAwOworICAgIG1fd2FpdGluZ09uQXN5bmNo
cm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKK30KKwordm9pZCBQbHVnaW5Qcm94eTo6ZGVz
dHJveSgpCit7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbihtX3BsdWdpbkluc3RhbmNl
SUQsIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCBNZXNzYWdlczo6V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46OlJlcGx5KCksIDApOwogCiAgICAgbV9p
c1N0YXJ0ZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaAppbmRleCBiZTA3Y2FhLi5hZTRmMjkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtNDksNiArNDksOCBA
QCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBOUFZhcmlhbnREYXRhOwogY2xhc3MgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb247CiAKK3N0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7
CisKIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpOwpAQCAtNjAsMTEgKzYyLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVn
aW5Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCBt
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKTsKICAgICB2b2lk
IGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAKKyAgICBib29sIGlzSW5pdGlhbGl6aW5nQXN5bmNo
cm9ub3VzbHkoKSBjb25zdCB7IHJldHVybiBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3Ry
aW5nJiBwbHVnaW5QYXRoKTsKIAogICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0
aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBib29sIGluaXRpYWxpemVTeW5jaHJvbm91
c2x5KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnQoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGly
dHlSZWN0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hv
dCgpOwpAQCAtMTQxLDYgKzE0OCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93ZWRQbHVn
aW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5k
aWYKIAorICAgIGJvb2wgY2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkgY29uc3Q7CisKKyAg
ICB2b2lkIGRpZENyZWF0ZVBsdWdpbihib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJl
bW90ZUxheWVyQ2xpZW50SUQpOworICAgIHZvaWQgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCk7Cisg
ICAgCisgICAgdm9pZCBkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbChib29sIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQpOworICAgIHZvaWQgZGlkRmFpbFRvQ3Jl
YXRlUGx1Z2luSW50ZXJuYWwoKTsKKwogICAgIFN0cmluZyBtX3BsdWdpblBhdGg7CiAKICAgICBS
ZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKQEAgLTE3NCw2ICsx
ODksOSBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhlIGNsaWVudCBJRCBmb3IgdGhlIENBIGxheWVy
IGluIHRoZSBwbHVnLWluIHByb2Nlc3MuIFdpbGwgYmUgMCBpZiB0aGUgcGx1Zy1pbiBpcyBub3Qg
YSBDQSBwbHVnLWluLgogICAgIHVpbnQzMl90IG1fcmVtb3RlTGF5ZXJDbGllbnRJRDsKKyAgICAK
KyAgICBPd25QdHI8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPiBtX3BlbmRpbmdQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnM7CisgICAgYm9vbCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3Bs
dWdpbkxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGEyZWYzMTkuLjQ1M2MwZjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNz
YWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkubWVzc2FnZXMuaW4KQEAgLTc0LDYgKzc0LDEyIEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb3h5
IHsKICAgICAjIFVwZGF0ZSBnZW9tZXRyeSBvZiB3aW5kb3dlZCBwbHVnaW4gd2lkZ2V0CiAgICAg
V2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVj
dCwgV2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYK
KworICAgICMgVGVsbHMgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgcGx1Zy1pbiB3YXMgc3VjY2Vz
c2Z1bGx5IGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5CisgICAgRGlkQ3JlYXRlUGx1Z2luKGJv
b2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkgLT4gKCkK
KyAgICAKKyAgICAjIFRlbGxzIHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIHBsdWctaW4gZmFpbGVk
IHRvIGluaXRpYWxpemUuCisgICAgRGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCkgLT4gKCkKIH0KIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAKaW5kZXggMDcyYTY5Yy4uY2I2MTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjYwLDYgKzI2MCw3IEBAIFBsdWdp
blZpZXc6OlBsdWdpblZpZXcoUGFzc1JlZlB0cjxIVE1MUGx1Z0luRWxlbWVudD4gcGx1Z2luRWxl
bWVudCwgUGFzc1JlZlB0cjxQCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1l
bnQuZ2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX2lzSW5p
dGlhbGl6ZWQoZmFsc2UpCisgICAgLCBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24oZmFsc2UpCiAgICAgLCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydChmYWxzZSkK
ICAgICAsIG1faXNCZWluZ0Rlc3Ryb3llZChmYWxzZSkKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVl
c3RzVGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJl
cXVlc3RzVGltZXJGaXJlZCkKQEAgLTI4NSw3ICsyODYsNyBAQCBQbHVnaW5WaWV3Ojp+UGx1Z2lu
VmlldygpCiAgICAgZm9yIChGcmFtZUxvYWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRnJh
bWVMb2Fkcy5iZWdpbigpLCBlbmQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmVuZCgpOyBpdCAhPSBl
bmQ7ICsraXQpCiAgICAgICAgIGl0LT5maXJzdC0+c2V0TG9hZExpc3RlbmVyKDApOwogCi0gICAg
aWYgKG1fcGx1Z2luICYmIG1faXNJbml0aWFsaXplZCkgeworICAgIGlmIChtX3BsdWdpbikgewog
ICAgICAgICBtX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlOwogICAgICAgICBtX3BsdWdpbi0+ZGVz
dHJveVBsdWdpbigpOwogICAgICAgICBtX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTsKQEAgLTQ4
NywxNSArNDg4LDIwIEBAIHZvaWQgUGx1Z2luVmlldzo6aW5pdGlhbGl6ZVBsdWdpbigpCiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgaWYgKCFtX3BsdWdpbi0+aW5p
dGlhbGl6ZSh0aGlzLCBtX3BhcmFtZXRlcnMpKSB7Ci0gICAgICAgIC8vIFdlIGZhaWxlZCB0byBp
bml0aWFsaXplIHRoZSBwbHVnLWluLgotICAgICAgICBtX3BsdWdpbiA9IDA7CiAKLSAgICAgICAg
bV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxp
emVQbHVnaW4obV9wYXJhbWV0ZXJzLm1pbWVUeXBlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
CisgICAgbV9wbHVnaW4tPmluaXRpYWxpemUodGhpcywgbV9wYXJhbWV0ZXJzKTsKICAgICAKKyAg
ICAvLyBQbHVnLWluIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlZCBpbiBkaWRGYWlsVG9Jbml0aWFs
aXplUGx1Z2luKCkgb3IgZGlkSW5pdGlhbGl6ZVBsdWdpbigpLgorfQorCit2b2lkIFBsdWdpblZp
ZXc6OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKQoreworICAgIG1fcGx1Z2luID0gMDsKKyAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvSW5pdGlh
bGl6ZVBsdWdpbihtX3BhcmFtZXRlcnMubWltZVR5cGUpKTsKK30KKwordm9pZCBQbHVnaW5WaWV3
OjpkaWRJbml0aWFsaXplUGx1Z2luKCkKK3sKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwog
CiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNTM5LDYgKzU0NSwxOSBAQCBQbGF0Zm9ybUxheWVyKiBQ
bHVnaW5WaWV3OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIAogSlNPYmplY3QqIFBsdWdpblZpZXc6
OnNjcmlwdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIC8vIElm
IHdlJ3JlIGFscmVhZHkgd2FpdGluZyBmb3Igc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2Yg
dGhlIHBsdWdpbiwKKyAgICAvLyBjYWxscyB0byBzY3JpcHRPYmplY3QoKSBhcmUgZnJvbSB0aGUg
cGx1Zy1pbiBpdHNlbGYgYW5kIG5lZWQgdG8gcmV0dXJuIDA7CisgICAgaWYgKG1faXNXYWl0aW5n
Rm9yU3luY2hyb25vdXNJbml0aWFsaXphdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAv
LyBJZiB0aGUgcGx1Zy1pbiBleGlzdHMgYnV0IGlzIG5vdCBpbml0aWFsaXplZCB0aGVuIHdlJ3Jl
IHN0aWxsIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseS4KKyAgICAvLyBXZSBuZWVkIHRvIHdh
aXQgaGVyZSB1bnRpbCBpbml0aWFsaXphdGlvbiBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBmYWls
ZWQuCisgICAgaWYgKG1fcGx1Z2luLT5pc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KCkpIHsK
KyAgICAgICAgbV9pc1dhaXRpbmdGb3JTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsK
KyAgICAgICAgbV9wbHVnaW4tPndhaXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigpOwor
ICAgICAgICBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsK
KyAgICB9CisKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxl
ZCB0byBpbml0aWFsaXplLgogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikK
ICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMjUwLDYgKzEyNjksMjEgQEAgYm9vbCBQbHVnaW5WaWV3
Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQogICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCitib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFn
ZS0+YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKCk7Cit9CisKK2Jvb2wg
UGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxs
UGx1Z2lucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+YXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucygpOworfQorCitib29sIFBsdWdp
blZpZXc6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9u
RGVsYXlFbmFibGVkKCk7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6cHJvdGVjdFBsdWdpbkZyb21E
ZXN0cnVjdGlvbigpCiB7CiAgICAgaWYgKCFtX2lzQmVpbmdEZXN0cm95ZWQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCBmMTAxYjJmLi5h
NmEwNTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmgKQEAgLTgwLDcgKzgwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5QbHVnaW5WaWV3
KCk7CiAKICAgICB2b2lkIGluaXRpYWxpemVQbHVnaW4oKTsKLSAgICB2b2lkIGRlc3Ryb3lQbHVn
aW4oKTsKIAogICAgIHZvaWQgdmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB2aWV3
VmlzaWJpbGl0eURpZENoYW5nZSgpOwpAQCAtMTY0LDYgKzE2Myw5IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNv
bnN0IFN0cmluZyYgY29va2llU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGlj
YXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5h
bWUsIFN0cmluZyYgcGFzc3dvcmQpOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb25FbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGJvb2wgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CiAjaWYgUExVR0lO
X0FSQ0hJVEVDVFVSRShYMTEpCkBAIC0xNzEsNiArMTczLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50
NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRJbml0aWFsaXpl
UGx1Z2luKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKTsK
KwogICAgIC8vIFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTG9hZChXZWJGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFt
ZSosIGJvb2wgd2FzQ2FuY2VsbGVkKTsKQEAgLTE4MSw2ICsxODYsNyBAQCBwcml2YXRlOgogICAg
IFBsdWdpbjo6UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgCiAgICAgYm9vbCBtX2lzSW5p
dGlhbGl6ZWQ7CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRp
b247CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydDsKICAgICBib29sIG1f
aXNCZWluZ0Rlc3Ryb3llZDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMv
Q2hhbmdlTG9nCmluZGV4IDU0ZDgwNTYuLjhlNjA5NzggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0wMyAg
QnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nl
c3MgcGx1Zy1pbnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZCBhIHBsdWctaW4gd2l0aCBhbiBOUFBfTmV3IHRoYXQgdGFr
ZXMgNTUwbXMgKGEgcmVhc29uYWJsZSB0cmFkZS1vZmYgYmV0d2VlbiBhIHNvbGlkIHRlc3QgYW5k
IGEgc2xvdyBydW5uaW5nIHRlc3QpCisgICAgICAgIGZvciB0ZXN0aW5nIGFzeW5jaHJvbm91cyBw
bHVnLWluIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJl
bmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvU2xvd05QUE5ldy5jcHA6IENvcGllZCBmcm9t
IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaC4KKyAgICAgICAgKFNsb3dOUFBOZXcpOgorICAgICAgICAoU2xvd05QUE5ldzo6U2xv
d05QUE5ldyk6CisgICAgICAgIChTbG93TlBQTmV3OjpOUFBfTmV3KToKKwogMjAxMi0wOC0wMyAg
U2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyNDYyOC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDQ4MTA2NGUuLmI3OTA0ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1
bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjcs
NiArNjcsNyBAQAogCQk0NDM3NzMwRTEyNUNCQzM2MDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBT
dXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0QTk5NzgzMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICov
OyB9OwogCQk0NDM3NzMwRjEyNUNCQzREMDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4
MjBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi87IH07CiAJCTRB
RDZBMTE0MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8q
IEZvcm1WYWx1ZS5jcHAgKi87IH07CisJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93
TlBQTmV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMDY4MDNEMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCAqLzsgfTsKIAkJNTE1
RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNB
bGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0
T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87IH07CiAJCTUxODVGNkIyMTA3MTRFMDcwMDdB
QTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVn
YXRlLm1tICovOyB9OwogCQk1MTg1RjZCMzEwNzE0RTEyMDA3QUEzOTMgLyogSGlzdG9yeURlbGVn
YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1
RjY5RTEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLmggKi87IH07CkBAIC0yNzgs
NiArMjc5LDcgQEAKIAkJNDRBOTk3ODIwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1w
U3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBcmNoaXZlRHVt
cFN1cHBvcnQuaDsgcGF0aCA9IGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0NEE5OTc4MzBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdl
YkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHBhdGggPSBjZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0QUQ2QTExMzEzQzgxMjQwMDBFQTk3
MzcgLyogRm9ybVZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEZvcm1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDY4MDNEMTVD
QzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFNsb3dOUFBOZXcuY3BwOyBwYXRoID0gVGVzdE5ldHNjYXBlUGx1Z0luL1Rl
c3RzL1Nsb3dOUFBOZXcuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxNUY0
MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxs
UHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlFMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVs
ZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGlzdG9yeURlbGVnYXRl
Lmg7IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUxODVGNjlGMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5tbTsg
cGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC01NTMsNiArNTU1LDcgQEAKIAkJCQkxQUQ5RDJGRDEyMDI4NDA5MDAxQTcwRDEgLyogUGx1
Z2luU2NyaXB0YWJsZU5QT2JqZWN0SW52b2tlRGVmYXVsdC5jcHAgKi8sCiAJCQkJNTE1RjQyOUIx
NUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9w
ZXJ0aWVzLmNwcCAqLywKIAkJCQkxQTFFNDI5NjE0MTE0MUM0MDAzODg3NTggLyogUHJpdmF0ZUJy
b3dzaW5nLmNwcCAqLywKKwkJCQk1MTA2ODAzRDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5l
dy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTkwMiw2ICs5MDUsNyBAQAogCQkJCTFBMUU0Mjk4MTQxMTQxQzQwMDM4ODc1OCAv
KiBQcml2YXRlQnJvd3NpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NkMzNTExNDU3NkE5
MjAwOTlBMTE1IC8qIENvbnRlbnRzU2NhbGVGYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlk
ZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDY4MDNFMTVDQzdCMTAw
MDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBO
ZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMmE3NmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVz
dHMvU2xvd05QUE5ldy5jcHAKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJQbHVnaW5UZXN0LmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNl
IHN0ZDsKKworY2xhc3MgU2xvd05QUE5ldyA6IHB1YmxpYyBQbHVnaW5UZXN0IHsKK3B1YmxpYzoK
KyAgICBTbG93TlBQTmV3KE5QUCBucHAsIGNvbnN0IHN0cmluZyYgaWRlbnRpZmllcikKKyAgICAg
ICAgOiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorICAgIAorcHJp
dmF0ZToKKyAgICAKKyAgICB2aXJ0dWFsIE5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdp
blR5cGUsIHVpbnQxNl90IG1vZGUsIGludDE2X3QgYXJnYywgY2hhciogYXJnbltdLCBjaGFyKiBh
cmd2W10sIE5QU2F2ZWREYXRhICpzYXZlZCkKKyAgICB7CisgICAgICAgIHVzbGVlcCg1NTAwMDAp
OworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorfTsKKworc3RhdGljIFBs
dWdpblRlc3Q6OlJlZ2lzdGVyPFNsb3dOUFBOZXc+IHNsb3dOUFBOZXcoInNsb3ctbnBwLW5ldyIp
Owo=
</data>
<flag name="commit-queue"
          id="166189"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156721</attachid>
            <date>2012-08-06 10:28:24 -0700</date>
            <delta_ts>2012-08-06 11:44:32 -0700</delta_ts>
            <desc>Part 3 - v2 - Add the feature (with some tests)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68144</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYTAyZGE2Li44MzAxZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgt
MDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1w
cm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
bgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA1OTg1OTQ+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gbWFrZSBzdXJlIGEgcGx1Zy1pbiB3
aXRoIGEgbG9uZyBydW5uaW5nIE5QUF9OZXcgZG9lcyBub3QgYmxvY2sgdGhlIHdlYiB0aHJlYWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMt
cGx1Z2luLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVs
dGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Ns
b3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3Vz
LXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbDogQWRkZWQuCisKIDIw
MTItMDgtMDYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1l
ZEZsb3dSZW1vdmVkIiBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5
bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxMWM1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4t
aW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IGxv
YWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAoNTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9u
ZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nlc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudCB0b29rIHVuZGVyIDUwMG1z
LCBwbHVnLWluIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdp
bi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0
aW9uLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MDk2ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0
aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIGZpbmlzaGVzIHRoZSB0ZXN0
IGFuZCBzZWUncyBob3cgbXVjaCB0aW1lIHBhc3NlZC4KK09ubHkgb25lIG9mIHRoZSAyMCBwbHVn
LWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBfRGVzdHJveSBydW4gdG8g
Y29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuCitUaGUgb3RoZXIgMTkgc2hvdWxk
IG5ldmVyIGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQgYXQgYWxsLgorUEFTUyBBcHBlbmRpbmcgcGx1
Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIGJldHdlZW4gNTUwbXMgYW5k
IDExMDBtcyBzdWdnZXN0aW5nIGEgc2luZ2xlIHBsdWctaW4gd2FzIGNyZWF0ZWQgYW5kIHRoZW4g
ZGVzdHJveWVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25v
dXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2Y4MWNhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlh
bGl6YXRpb24tbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
Y3JlYXRlVGVzdFBsdWdpbih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94
LXdlYmtpdC10ZXN0LW5ldHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0Jywg
dGVzdE5hbWUpOworCisgICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
IAoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMg
dGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCBy
ZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkIiwgIjEiKTsKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0MkFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMiLCAiMSIpOworCisgICAgLy8gR3JhYiB0aGUgdGltZSBi
ZWZvcmUgd2UgY3JlYXRlIGFuZCBhcHBlbmQgMjAgc2xvdyBwbHVnLWlucy4KKyAgICBzZXNzaW9u
U3RvcmFnZS5iZWZvcmVEYXRlID0gKG5ldyBEYXRlKS52YWx1ZU9mKCk7CisgICAgCisgICAgdmFy
IHBsdWdpbnMgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kp
CisgICAgICAgIHBsdWdpbnNbaV0gPSBjcmVhdGVUZXN0UGx1Z2luKCdzbG93LW5wcC1uZXcnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpCisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQocGx1Z2luc1tpXSk7CisKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQg
c28gdGhlIHBsdWctaW5zIGluc3RhbnRpYXRlCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOworICAgIAorICAgIHNldFRpbWVvdXQoImxvY2F0aW9uLmhyZWYgPSAncmVzb3Vy
Y2VzL2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVsdGlwbGUtZmluaXNoLmh0
bWwnIiwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGxvYWRpbmcgbXVsdGlwbGUg
c2xvdyBpbml0aWFsaXppbmcgcGx1Zy1pbnMgYW5kIHRoZW4gbmF2aWdhdGluZyBvbmx5IGhhcyB0
byB3YWl0IGZvciBvbmUgb2YgdGhlbSB0byBmaW5pc2ggYmVpbmcgZGVzdHJveWVkLiIpOworCis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5p
dGlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmI4
NWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBjcmVhdGVUZXN0UGx1Z2luKHRlc3ROYW1lKQorewor
ICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOworICAgIHBs
dWdpbi50eXBlID0gImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiOworICAgIHBs
dWdpbi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCB0ZXN0TmFtZSk7CisKKyAgICByZXR1cm4gcGx1Z2lu
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5IHJ1biBmcm9tIHdpdGhpbiBE
dW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3ROZXRzY2FwZVBsdWdpbi5cbiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdDJBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJs
ZWQiLCAiMSIpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyIsICIxIik7
CisKKyAgICB2YXIgYmVmb3JlRGF0ZSA9IG5ldyBEYXRlOworICAgIAorICAgIHBsdWdpbiA9IGNy
ZWF0ZVRlc3RQbHVnaW4oJ3Nsb3ctbnBwLW5ldycpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocGx1Z2luKTsKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQgc28gdGhlIHBsdWct
aW4gaW5zdGFudGlhdGVzCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwor
ICAgIAorICAgIHZhciBhZnRlckRhdGUgPSBuZXcgRGF0ZTsKKyAgICAKKyAgICBpZiAoYWZ0ZXJE
YXRlIC0gYmVmb3JlRGF0ZSA+IDUwMCkKKyAgICAgICAgdGVzdEZhaWxlZCgiQXBwZW5kaW5nIHBs
dWctaW4gZWxlbWVudCB0b29rIG92ZXIgNTAwbXMgKCIgKyAoYWZ0ZXJEYXRlIC0gYmVmb3JlRGF0
ZSkgKyAibXMpIHNvIHRoZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXplZCBz
eW5jaHJvbm91c2x5Iik7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCJBcHBlbmRpbmcg
cGx1Zy1pbiBlbGVtZW50IHRvb2sgdW5kZXIgNTAwbXMsIHBsdWctaW4gaW5pdGlhbGl6aW5nIGFz
eW5jaHJvbm91c2x5LiIpOworICAgIAorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGxvYWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAo
NTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9uZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nl
c3MiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbG93L3Jlc291cmNlcy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9u
LW11bHRpcGxlLWZpbmlzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjZhZmJhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlv
bi1tdWx0aXBsZS1maW5pc2guaHRtbApAQCAtMCwwICsxLDMzIEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgZmluaXNo
ZXMgdGhlIHRlc3QgYW5kIHNlZSdzIGhvdyBtdWNoIHRpbWUgcGFzc2VkLjxicj4KK09ubHkgb25l
IG9mIHRoZSAyMCBwbHVnLWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBf
RGVzdHJveSBydW4gdG8gY29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuPGJyPgor
VGhlIG90aGVyIDE5IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gaW5zdGFudGlhdGVkIGF0IGFsbC48
YnI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRlZCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGFs
ZXJ0KCJDYW4gb25seSBiZSBydW4gdXNpbmcgV2ViS2l0VGVzdFJ1bm5lciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHZhciB0aW1lTGFwc2VkID0gKG5ldyBEYXRlKS52YWx1
ZU9mKCkgLSBzZXNzaW9uU3RvcmFnZS5iZWZvcmVEYXRlOworCisgICAgaWYgKHRpbWVMYXBzZWQg
PiAxMTAwKQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0
aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIG92ZXIgMTEwMG1zICgiICsgdGltZUxhcHNlZCArICJt
cykgc28gbW9yZSB0aGFuIG9uZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXpl
ZCBiZWZvcmUgYW55IHdlcmUgZGVzdHJveWVkLiIpOworICAgIGlmICh0aW1lTGFwc2VkIDwgNTUw
KQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0aGVuIG5h
dmlnYXRpbmcgYXdheSB0b29rIGxlc3MgdGhhbiA1NTBtcyAoIiArIHRpbWVMYXBzZWQgKyAibXMp
LiAgV2UgZXhwZWN0ZWQgYSBzaW5nbGUgcGx1Zy1pbiB0byBiZSBjcmVhdGVkIGFuZCB0aGVuIGRl
c3Ryb3llZCBhbmQgdGhhdCBkaWRuJ3QgaGFwcGVuLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVz
dFBhc3NlZCgiQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudHMgdGhlbiBuYXZpZ2F0aW5nIGF3YXkg
dG9vayBiZXR3ZWVuIDU1MG1zIGFuZCAxMTAwbXMgc3VnZ2VzdGluZyBhIHNpbmdsZSBwbHVnLWlu
IHdhcyBjcmVhdGVkIGFuZCB0aGVuIGRlc3Ryb3llZC4iKTsKKworICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTMwMDViNi4uN2Yw
ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMi0wOC0wMyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nlc3MgcGx1Zy1p
bnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIGEgcGx1Zy1pbiBoYXMgYmVlbiBkZWVtZWQgY2FwYWJsZSBvZiBhc3luY2hy
b25vdXMgaW5pdGlhbGl6YXRpb24gd2hlbiBydW4gb3V0IG9mIHByb2Nlc3MuLi4KKyAgICAgICAg
Li4udGhlbiBkbyB0aGF0IQorCisgICAgICAgIEFkZCBmbGFncyB0byBjb21tdW5pY2F0ZSB0aGF0
IHRoaXMgcGx1Z2luIGNyZWF0ZSBpcyBtZWFudCB0byBjcmVhdGUgYSBwbHVnLWluIGFscmVhZHkg
cmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGFuZAorICAgICAgICB0byBpbmNsdWRlIHdoZXRoZXIg
b3Igbm90IHRoZSBpbml0aWFsaXplIGNhbGwgc2hvdWxkIGluY2x1ZGUgYW4gYXJ0aWZpY2lhbCBk
ZWxheSAoZm9yIHRlc3RpbmcpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToK
KworICAgICAgICBBZGQgYSBmbGFnIGZvciB0aGUgVUkgUHJvY2VzcyB0byB0ZWxsIHRoZSBQbHVn
aW5Qcm9jZXNzIHRoYXQgaXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKworICAgICAgICBBbGxvdyB0aGUgVUkgUHJv
Y2VzcyB0byBwYXNzIGFsb25nIHdoZXRoZXIgdGhlIHBsdWctb24gc3VwcG9ydHMgYXN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGx1
Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBBbGxvdyB0aGUgUGx1Z2luIFBy
b2Nlc3MgdG8gcGFzcyB3aGV0aGVyIG9yIG5vdCBpdCBzdXBwb3J0cyBhc3luY2hyb25vdXMgaW5p
dGlhbGl6YXRpb24sIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZAorICAgICAgICBpbiB0aGUgVUkgUHJv
Y2VzcywgYWxvbmcgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6UGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVn
aW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAoUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBhIGZsYWcgc28g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHJlbWVtYmVyIHdoZXRoZXIgb3Igbm90IHRoZXkgc3Vw
cG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb246CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNldFN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKworICAgICAgICBD
cmVhdGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHdpdGggdGhlIGZsYWcgcGFzc2VkIGRvd24g
ZnJvbSB0aGUgUGx1Z2luUHJvY2VzcyBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGV5CisgICAgICAg
IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKToKKworICAgICAgICBSZXNwb25kaW5nIHRvIG1lc3NhZ2VzIGZyb20gdGhlIFdl
YlByb2Nlc3MsIG1vc3Qgb2YgdGhlIGhlYXZ5IGRlY2lzaW9uIG1ha2luZyBpbiBhc3luY2hyb25v
dXMgaW5pdGlhbGl6YXRpb24gaXMgaGVyZToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YXN5bmNocm9ub3VzSW5zdGFu
Y2VJRHNUb0lnbm9yZSk6IEEgc2V0IG9mIGluc3RhbmNlIElEcyB0byAqbm90KiBjcmVhdGUgYXN5
bmNocm9ub3VzbHkgbGF0ZXIgYmVjYXVzZSB3ZSBrbm93CisgICAgICAgICAgd2Ugbm8gbG9uZ2Vy
IG5lZWQgdG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbik6IElmIHRoZSBwbHVnLWluIGRvZXNuJ3QgZXhp
c3QgYnV0IGlzIGF3YWl0aW5nIGFzeW5jaHJvbm91cyBjcmVhdGlvbiwgZmxhZyAKKyAgICAgICAg
ICB0aGlzIGluc3RhbmNlIElEIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwp
OiBSZW5hbWVkIGZyb20gY3JlYXRlUGx1Z2luLCBhY3R1YWxseSBkb2VzIHRoZSBwbHVnLWluIGNy
ZWF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1
Z2luKTogQWRkcyB0aGUgaW5zdGFuY2UgSUQgdG8gdGhlICJhc3luY2hyb25vdXMgaWdub3JlIHNl
dCIgdGhlbiBjYWxscyBjcmVhdGVQbHVnaW5JbnRlcm5hbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KTogSWYgdGhlIGlu
c3RhbmNlIElEIGlzIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLCByZW1vdmUgaXQg
ZnJvbSB0aGUKKyAgICAgICAgICBzZXQgYW5kIGRvIG5vdGhpbmcgZWxzZS4gT3RoZXJ3aXNlLCBw
ZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBzZW5kIHRoZSBhc3luY2hyb25vdXMg
cmVzdWx0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0
aGF0IGFsbCBwbHVnLWluIHR5cGVzIG11c3QgaW1wbGVtZW50OgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFBsdWdpbik6CisKKyAgICAgICAgQWRkIGhl
bHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0aGF0IHBsdWctaW4gY29udHJv
bGxlcnMgY2FuIG92ZXJyaWRlOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5D
b250cm9sbGVyLmg6CisgICAgICAgIChQbHVnaW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpbkNvbnRyb2xsZXI6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5h
YmxlZCk6CisKKyAgICAgICAgR2l2ZSBQbHVnaW5Qcm94eXMgdGhlIGFiaWxpdHkgdG8gaW5pdGlh
bGl6ZSBlaXRoZXIgYXN5bmNocm9ub3VzbHkgb3Igc3luY2hyb25vdXNseSwgYW5kIGFsc28gdGhl
IGFiaWxpdHkgdG8gc3luY2hyb25vdXNseQorICAgICAgICB3YWl0IGZvciBwcmV2aW91c2x5IGFz
eW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiAoaW4gY2FzZSB0aGVpciBQbHVnaW5TY3JpcHRPYmpl
Y3QgaXMgcmVxdWlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKTogU3RvcmUgdGhlIHBsdWdpbiBj
cmVhdGlvbiBwYXJhbWV0ZXJzIGFzIGEgbWVtYmVyLCBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gdHJ5
IHN5bmNocm9ub3VzCisgICAgICAgICAgb3IgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNhbkluaXRp
YWxpemVBc3luY2hyb25vdXNseSk6IEFuc3dlciBiYXNlZCBvbiBwcmVmZXJlbmNlcyBhbmQgd2hh
dCB0aGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gc2F5cworICAgICAgICAgIHRoYXQgaXQgc3Vw
cG9ydHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojp3YWl0Rm9yQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOiBTeW5jaHJvbm91c2x5IHdhaXQgb24gaW5pdGlhbGl6YXRpb24gd2hl
biBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICB3YXMgcHJldmlvdXNseSBy
ZXF1ZXN0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplU3luY2hy
b25vdXNseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4p
OiBEb3VibGUtY2hlY2sgdGhhdCB3ZSdyZSBzdGlsbCBleHBlY3RpbmcgYXN5bmNocm9ub3VzIGlu
aXRpYWxpemF0aW9uLCB0aGVuIGNhbGwKKyAgICAgICAgICB0aHJvdWdoIHRvIGRpZENyZWF0ZVBs
dWdpbkludGVybmFsLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6ZGlkQ3JlYXRlUGx1
Z2luSW50ZXJuYWwpOiBIYW5kbGUgY29tcGxldGlvbiBvZiBpbml0aWFsaXphdGlvbiAoYm90aCBz
eW5jaHJvbm91c2x5IGFuZCBhc3luY2hyb25vdXNseSkKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbik6IERvdWJsZS1jaGVjayB0aGF0IHdlJ3JlIHN0
aWxsIGV4cGVjdGluZyBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24sIHRoZW4gY2FsbAorICAg
ICAgICAgIHRocm91Z2ggdG8gZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6IEhh
bmRsZSBmYWlsdXJlIHRvIGluaXRpYWxpemUgKGJvdGggc3luY2hyb25vdXNseSBhbmQgYXN5bmNo
cm9ub3VzbHkpCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkZXN0cm95KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc0luaXRpYWxpemluZ0FzeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFBsdWdpblByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp+UGx1Z2luVmlldyk6IEFsd2F5cyBk
ZXN0cm95IHRoZSBwbHVnLWluIGV2ZW4gaWYgaXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0
LCBhcyBpdCBtaWdodCBiZSBpbml0aWFsaXppbmcKKyAgICAgICAgICByaWdodCBub3cuCisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmluaXRpYWxpemVQbHVnaW4pOiBEb24ndCBoYW5kbGUg
dGhlIHJlc3VsdCBvZiBpbml0aWFsaXphdGlvbiBpbW1lZGlhdGVseS4gQnJlYWsgdGhhdCBvdXQg
aW4gdG8gdHdvCisgICAgICAgICAgbWV0aG9kcyB0aGF0IHdpbGwgYmUgY2FsbGVkIGxhdGVyLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZGlkRmFpbFRv
SW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmRpZEluaXRp
YWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzY3JpcHRPYmplY3Qp
OiBJZiB3ZSB0cnVseSBuZWVkIHRoZSBzY3JpcHQgb2JqZWN0LCB0aGVuIHdhaXQgZm9yIGEgc3lu
Y2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWctaW4uCisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojph
cnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHNob3VsZG4ndCBiZSBjYWxsZWQgaW4gdGhlIFBsdWdpblBy
b2Nlc3MsIG9ubHkgaW4gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAoUGx1Z2luQ29udHJvbGxlclByb3h5KToKKworICAgICAgICBOZXRzY2FwZVBsdWdp
biBpcyBmb3IgaW4tcHJvY2VzcyBwbHVnLWluczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhaXRGb3JBc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc0luaXRpYWxp
emluZ0FzeW5jaHJvbm91c2x5KToKKworICAgICAgICBCdWlsdC1pbiBQREZWaWV3IGlzIGN1cnJl
bnRseSBvbmx5IGluLXByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9C
dWlsdEluUERGVmlldy5oOgorICAgICAgICAoQnVpbHRJblBERlZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpCdWlsdEluUERGVmlldzo6d2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OmlzSW5pdGlhbGl6aW5nQXN5bmNocm9u
b3VzbHkpOgorCiAyMDEyLTA4LTA2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdIEltcHJvdmVtZW50cyBmb3IgdGhlIG5ldyBz
cGVsbC1jaGVja2luZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCAyNGE4Y2VlLi5hYjYwZjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCkBAIC0zMTcsNiArMzE3LDE4IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aWxsU2VuZEV2ZW50VG9QbHVnaW4oKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Cit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCit7Cisg
ICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIHBsdWdpbiBpbiB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkKK3sKKyAgICAvLyBUaGlz
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgcGx1Z2luIGluIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZmxvYXQgUGx1Z2luQ29udHJvbGxlclBy
b3h5Ojpjb250ZW50c1NjYWxlRmFjdG9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZW50c1NjYWxl
RmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggYTRhZjU0My4uNDZkYTFhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC05MCw2
ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRFdmVudFRvUGx1Z2luKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOWU5NzQuLmJjMmU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTM3LDYgKzM3LDggQEAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMoKQogICAgICwgd2luZG93TlBPYmplY3RJRCgwKQogICAgICwgY29udGVu
dHNTY2FsZUZhY3RvcigxKQogICAgICwgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKGZhbHNlKQorICAgICwgYXJ0aWZp
Y2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGZhbHNlKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTUxLDYgKzUzLDggQEAgdm9pZCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVzZXJBZ2VudCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNv
bnRlbnRzU2NhbGVGYWN0b3IpOwogICAgIGVuY29kZXItPmVuY29kZShpc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpOworICAgIGVuY29kZXItPmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29t
cGxldGUpOworICAgIGVuY29kZXItPmVuY29kZShhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRp
b25EZWxheUVuYWJsZWQpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IGVuY29kZXItPmVuY29kZShpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKQEAgLTc3
LDYgKzgxLDEyIEBAIGJvb2wgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbHVnaW5DCiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzdWx0LmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hc3luY2hyb25vdXNDcmVh
dGlvbkluY29tcGxldGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggZmNkNTM0OS4uNmYwNWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC02MCw2ICs2MCwxMiBAQCBz
dHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIC8vIFdoZXRoZXIgcHJpdmF0
ZSBicm93c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24uCiAgICAg
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgCisgICAgLy8gSWYgcmVxdWVzdGlu
ZyBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiwgd2hldGhlciB0aGlzIHBsdWdpbiBoYWQgcHJl
dmlvdXNseSBiZWVuIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseQorICAgIGJvb2wgYXN5bmNocm9u
b3VzQ3JlYXRpb25JbmNvbXBsZXRlOworCisgICAgLy8gU2ltdWxhdGVkIGluaXRpYWxpemF0aW9u
IGRlbGF5IHRlc3QgYXN5bmNocm9ub3VzIHBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgIGJvb2wg
YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFdoZXRoZXIgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCmluZGV4IGJiMWIzYjguLmJkMmJjNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApAQCAtMzIsOCArMzIsOSBAQAogI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1
ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC03NCw2ICs3NSw3IEBAIFBsdWdpblByb2Nlc3MmIFBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpCiAKIFBsdWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3MoKQogICAg
IDogQ2hpbGRQcm9jZXNzKHNodXRkb3duVGltZW91dCkKKyAgICAsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
LCBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydChNQUNIX1BPUlRfTlVMTCkKICNlbmRpZgpA
QCAtMTU5LDYgKzE2MSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblBy
b2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAgICAgQVNTRVJUKCFt
X3BsdWdpbk1vZHVsZSk7CiAKICAgICBtX3BsdWdpblBhdGggPSBwYXJhbWV0ZXJzLnBsdWdpblBh
dGg7CisgICAgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uID0gcGFy
YW1ldGVycy5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAg
cGxhdGZvcm1Jbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQpAQCAtMTc3LDcgKzE4MCw3IEBAIHZv
aWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBD
b3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgaW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwg
U09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCmluZGV4IDYzM2JiNDEuLmJjYmQyMDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5oCkBAIC05OSw2ICs5OSw4
IEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIHBsdWctaW4gbW9kdWxlLgogICAgIFJlZlB0cjxOZXRz
Y2FwZVBsdWdpbk1vZHVsZT4gbV9wbHVnaW5Nb2R1bGU7CiAgICAgCisgICAgYm9vbCBtX3N1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CisgICAgCiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBQTEFURk9STShNQUMpCiAgICAgLy8gVGhlIE1hY2ggcG9y
dCB1c2VkIGZvciBhY2NlbGVyYXRlZCBjb21wb3NpdGluZy4KICAgICBtYWNoX3BvcnRfdCBtX2Nv
bXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5jcHAKaW5kZXggNWFlODBiOS4uMzFmYjk2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAjaW5jbHVkZSAiUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIgorI2luY2x1ZGUgIlBsdWdpblByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1J1bkxvb3AuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CkBAIC04NSw2ICs4NiwxMiBAQCBzdGF0aWMgQ29ubmVjdGlvblN0YWNrJiBjb25u
ZWN0aW9uU3RhY2soKQogICAgIHJldHVybiBjb25uZWN0aW9uU3RhY2s7CiB9CiAKK3N0YXRpYyBI
YXNoU2V0PHVpbnQ2NF90PiYgYXN5bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZSgpCit7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PHVpbnQ2NF90PiwgaW5zdGFuY2VzLCAoKSk7
CisgICAgcmV0dXJuIGluc3RhbmNlczsKK30KKwogUGFzc1JlZlB0cjxXZWJQcm9jZXNzQ29ubmVj
dGlvbj4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZShDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50aWZpZXIpKTsKQEAgLTE2MCw2
ICsxNjcsMTEgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ28KIHsKICAgICBDb25uZWN0aW9uU3Rh
Y2s6OkN1cnJlbnRDb25uZWN0aW9uUHVzaGVyIGN1cnJlbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25T
dGFjaygpLCBjb25uZWN0aW9uKTsKIAorICAgIGlmIChtZXNzYWdlSUQuaXM8Q29yZUlQQzo6TWVz
c2FnZUNsYXNzV2ViUHJvY2Vzc0Nvbm5lY3Rpb24+KCkpIHsKKyAgICAgICAgZGlkUmVjZWl2ZVdl
YlByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsIGFyZ3VtZW50
cyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVzdGlu
YXRpb25JRCgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICByZXR1
cm47CkBAIC0yMDgsMTEgKzIyMCwyMCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkaWRD
bG9zZShDb3JlSVBDOjpDb25uZWN0aW9uKikKICAgICAgICAgZGVzdHJveVBsdWdpbkNvbnRyb2xs
ZXJQcm94eShwbHVnaW5Db250cm9sbGVyc1tpXSk7CiB9CiAKLXZvaWQgV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCkKK3ZvaWQgV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJ
RCwgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpCiB7CiAgICAgUGx1Z2luQ29u
dHJvbGxlclByb3h5KiBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBtX3BsdWdpbkNvbnRyb2xsZXJz
LmdldChwbHVnaW5JbnN0YW5jZUlEKTsKLSAgICBBU1NFUlQocGx1Z2luQ29udHJvbGxlclByb3h5
KTsKLQorICAgIAorICAgIC8vIElmIHRoZXJlIGlzIG5vIFBsdWdpbkNvbnRyb2xsZXJQcm94eSB0
aGVuIHRoaXMgcGx1Zy1pbiBkb2Vzbid0IGV4aXN0IHlldCBhbmQgd2UgcHJvYmFibHkgaGF2ZSBu
b3RoaW5nIHRvIGRvLgorICAgIGlmICghcGx1Z2luQ29udHJvbGxlclByb3h5KSB7CisgICAgICAg
IC8vIElmIHRoZSBwbHVnaW4gd2UncmUgc3VwcG9zZWQgdG8gZGVzdHJveSB3YXMgcmVxdWVzdGVk
IGFzeW5jaHJvbm91c2x5IGFuZCBkb2Vzbid0IGV4aXN0IHlldCwKKyAgICAgICAgLy8gd2UgbmVl
ZCB0byBmbGFnIHRoZSBpbnN0YW5jZSBJRCBzbyBpdCBpcyBub3QgY3JlYXRlZCBsYXRlci4KKyAg
ICAgICAgaWYgKGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSkKKyAgICAgICAgICAgIGFz
eW5jaHJvbm91c0luc3RhbmNlSURzVG9JZ25vcmUoKS5hZGQocGx1Z2luSW5zdGFuY2VJRCk7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm47CisgICAgfQorICAgIAogICAgIGRlc3Ryb3lQbHVnaW5D
b250cm9sbGVyUHJveHkocGx1Z2luQ29udHJvbGxlclByb3h5KTsKIH0KIApAQCAtMjI1LDcgKzI0
Niw3IEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OnN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0
KENvcmVJUEM6OkNvbm5lY3Rpb24qKQogewogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9u
OjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBh
cmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3Qm
IHJlbW90ZUxheWVyQ2xpZW50SUQpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQ
bHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFy
YW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYg
cmVtb3RlTGF5ZXJDbGllbnRJRCkKIHsKICAgICBPd25QdHI8UGx1Z2luQ29udHJvbGxlclByb3h5
PiBwbHVnaW5Db250cm9sbGVyUHJveHkgPSBQbHVnaW5Db250cm9sbGVyUHJveHk6OmNyZWF0ZSh0
aGlzLCBjcmVhdGlvblBhcmFtZXRlcnMpOwogCkBAIC0yNDcsNiArMjY4LDU4IEBAIHZvaWQgV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMmIGNyZWF0aW9uCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJh
bWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiBy
ZW1vdGVMYXllckNsaWVudElEKQoreworICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2lu
Q29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVycy5nZXQoY3JlYXRpb25QYXJhbWV0
ZXJzLnBsdWdpbkluc3RhbmNlSUQpOworCisgICAgLy8gVGhlIHBsdWctaW4gd2UncmUgYmVpbmcg
YXNrZWQgdG8gY3JlYXRlIHN5bmNocm9ub3VzbHkgbWlnaHQgYWxyZWFkeSBleGlzdCBpZiB3ZSBq
dXN0IGZpbmlzaGVkIGNyZWF0aW5nIGl0IGFzeW5jaHJvbm91c2x5LgorICAgIC8vIEluIHRoYXQg
Y2FzZSB3ZSBuZWVkIHRvIG5vdCBjcmVhdGUgaXQgYWdhaW4gKGJ1dCBhbHNvIG5lZWQgdG8gcmV0
dXJuIHRoZSBjb3JyZWN0IGluZm9ybWF0aW9uIGFib3V0IGl0cyBjcmVhdGlvbikuCisgICAgaWYg
KHBsdWdpbkNvbnRyb2xsZXJQcm94eSkgeworICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAg
ICB3YW50c1doZWVsRXZlbnRzID0gcGx1Z2luQ29udHJvbGxlclByb3h5LT53YW50c1doZWVsRXZl
bnRzKCk7CisjaWYgUExBVEZPUk0oTUFDKQorICAgICAgICByZW1vdGVMYXllckNsaWVudElEID0g
cGx1Z2luQ29udHJvbGxlclByb3h5LT5yZW1vdGVMYXllckNsaWVudElEKCk7CisjZW5kaWYKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICAvLyBUaGUgcGx1Z2luIHdlJ3JlIHN1cHBv
c2VkIHRvIGNyZWF0ZSBtaWdodCBoYXZlIGJlZW4gcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGJl
Zm9yZS4KKyAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgaXQgc3luY2hyb25v
dXNseSBub3cgYnV0IGZsYWcgdGhlIGluc3RhbmNlIElEIHNvIHdlIGRvbid0IHJlY3JlYXRlIGl0
IGFzeW5jaHJvbm91c2x5IGxhdGVyLgorICAgIGlmIChjcmVhdGlvblBhcmFtZXRlcnMuYXN5bmNo
cm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKQorICAgICAgICBhc3luY2hyb25vdXNJbnN0YW5jZUlE
c1RvSWdub3JlKCkuYWRkKGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKKyAg
ICAKKyAgICBjcmVhdGVQbHVnaW5JbnRlcm5hbChjcmVhdGlvblBhcmFtZXRlcnMsIHJlc3VsdCwg
d2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7Cit9CisKK3ZvaWQgV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzKQoreworICAgIC8vIEluIHRoZSB0
aW1lIHNpbmNlIHRoaXMgcGx1Z2luIHdhcyByZXF1ZXN0ZWQgYXN5bmNocm9ub3VzbHkgd2UgbWln
aHQgaGF2ZSBjcmVhdGVkIGl0IHN5bmNocm9ub3VzbHkgb3IgZGVzdHJveWVkIGl0LgorICAgIC8v
IEluIGVpdGhlciBvZiB0aG9zZSBjYXNlcyB3ZSBuZWVkIHRvIGlnbm9yZSB0aGlzIGNyZWF0aW9u
IHJlcXVlc3QuCisgICAgaWYgKGFzeW5jaHJvbm91c0luc3RhbmNlSURzVG9JZ25vcmUoKS5jb250
YWlucyhjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCkpIHsKKyAgICAgICAgYXN5
bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZSgpLnJlbW92ZShjcmVhdGlvblBhcmFtZXRlcnMu
cGx1Z2luSW5zdGFuY2VJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8g
VGhpcyB2ZXJzaW9uIG9mIENyZWF0ZVBsdWdpbiBpcyBvbmx5IHVzZWQgYnkgcGx1Zy1pbnMgdGhh
dCBhcmUga25vd24gdG8gYmVoYXZlIHdoZW4gc3RhcnRlZCBhc3luY2hyb25vdXNseS4KKyAgICBi
b29sIHJlc3VsdCA9IGZhbHNlOworICAgIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQgPSAw
OworICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cyA9IGZhbHNlOworICAgIAorICAgIGlmIChjcmVh
dGlvblBhcmFtZXRlcnMuYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVk
KSB7CisgICAgICAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXkgPSA1OworICAgICAgICBzbGVlcChhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6
YXRpb25EZWxheSk7CisgICAgfQorCisgICAgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY3JlYXRpb25Q
YXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQp
OworCisgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgbV9jb25uZWN0aW9uLT5zZW5kU3luYyhN
ZXNzYWdlczo6UGx1Z2luUHJveHk6OkRpZEZhaWxUb0NyZWF0ZVBsdWdpbigpLCBNZXNzYWdlczo6
UGx1Z2luUHJveHk6OkRpZEZhaWxUb0NyZWF0ZVBsdWdpbjo6UmVwbHkoKSwgY3JlYXRpb25QYXJh
bWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
bV9jb25uZWN0aW9uLT5zZW5kU3luYyhNZXNzYWdlczo6UGx1Z2luUHJveHk6OkRpZENyZWF0ZVBs
dWdpbih3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKSwgTWVzc2FnZXM6OlBs
dWdpblByb3h5OjpEaWRDcmVhdGVQbHVnaW46OlJlcGx5KCksIGNyZWF0aW9uUGFyYW1ldGVycy5w
bHVnaW5JbnN0YW5jZUlEKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAv
LyBFTkFCTEUoUExVR0lOX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKaW5kZXggZjM4NDY3MS4uOGQ3ZjY4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24uaApAQCAtNjcsOSArNjcsMTMgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc3luY01l
c3NhZ2VTZW5kVGltZWRPdXQoQ29yZUlQQzo6Q29ubmVjdGlvbiopOwogCiAgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycy4KKyAgICB2b2lkIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJn
dW1lbnREZWNvZGVyKik7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY1dlYlByb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3Jl
SVBDOjpBcmd1bWVudERlY29kZXIqLCBPd25QdHI8Q29yZUlQQzo6QXJndW1lbnRFbmNvZGVyPiYp
OwogICAgIHZvaWQgY3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYs
IGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxh
eWVyQ2xpZW50SUQpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBwbHVnaW5JbnN0
YW5jZUlEKTsKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KGNvbnN0IFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyYpOworICAgIHZvaWQgZGVzdHJveVBsdWdpbih1aW50NjRfdCBw
bHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSk7Cisg
ICAgCisgICAgdm9pZCBjcmVhdGVQbHVnaW5JbnRlcm5hbChjb25zdCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90
JiByZW1vdGVMYXllckNsaWVudElEKTsKIAogICAgIFJlZlB0cjxDb3JlSVBDOjpDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDA3YzNjMjcu
LmYxYTgzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMjYsOCArMjYsMTEgQEAg
bWVzc2FnZXMgLT4gV2ViUHJvY2Vzc0Nvbm5lY3Rpb24gewogICAgICMgQ3JlYXRlcyBhIHBsdWct
aW4gaW5zdGFuY2UgdXNpbmcgdGhlIGdpdmVuIGNyZWF0aW9uIHBhcmFtZXRlcnMuCiAgICAgQ3Jl
YXRlUGx1Z2luKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHBsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycykgLT4gKGJvb2wgcmVzdWx0LCBib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQz
Ml90IHJlbW90ZUxheWVyQ2xpZW50SUQpCiAKKyAgICAjIENyZWF0ZXMgYSBwbHVnLWluIGluc3Rh
bmNlIGFzeW5jaHJvbm91c2x5IHVzaW5nIHRoZSBnaXZlbiBjcmVhdGlvbiBwYXJhbWV0ZXJzLgor
ICAgIENyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzIHBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycykKKwogICAgICMgRGVzdHJveXMgdGhlIHBs
dWctaW4gaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gaW5zdGFuY2UgSUQuCi0gICAgRGVzdHJveVBs
dWdpbih1aW50NjRfdCBwbHVnaW5JbnN0YW5jZUlEKSAtPiAoKQorICAgIERlc3Ryb3lQbHVnaW4o
dWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29t
cGxldGUpIC0+ICgpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBjNmM4N2E2Li4wZjAzNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcApAQCAtMzMsMTIgKzMzLDE0IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycygp
CisgICAgOiBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKGZhbHNlKQog
ewogfQogCiB2b2lkIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZShDb3Jl
SVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0CiB7CiAgICAgZW5jb2Rlci0+ZW5j
b2RlKHBsdWdpblBhdGgpOworICAgIGVuY29kZXItPmVuY29kZShzdXBwb3J0c0FzeW5jaHJvbm91
c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBlbmNvZGVy
LT5lbmNvZGUocGFyZW50UHJvY2Vzc05hbWUpOwpAQCAtNTAsNiArNTIsOCBAQCBib29sIFBsdWdp
blByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29k
ZXIqIGRlY29kZXIsCiB7CiAgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVzdWx0LnBsdWdpblBh
dGgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFkZWNvZGVyLT5kZWNvZGUocmVz
dWx0LnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgaWYgKCFkZWNvZGVyLT5kZWNv
ZGUocmVzdWx0LnBhcmVudFByb2Nlc3NOYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAppbmRleCA2MmNmNGJiLi5jZmFlZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFy
ZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CkBAIC00OCw2ICs0OCw3IEBAIHN0cnVjdCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKICAgICBzdGF0aWMgYm9vbCBkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYpOwogCiAgICAgU3RyaW5nIHBsdWdpblBhdGg7
CisgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIFN0cmluZyBwYXJlbnRQcm9jZXNzTmFtZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
Y3BwCmluZGV4IDQzZmEyZjQuLmM5ZTAxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTM3LDkgKzEz
Nyw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFp
bGVkVG9MYXVuY2goKQogICAgICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBtX3BlbmRp
bmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01P
VkVfU0VORCkpOworICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1B
Q0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgZmFsc2UpOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoKSk7CisgICAg
ICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoKSwgZmFsc2UpOwogI2Vsc2UKICAg
ICAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQg
UGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwg
Q29yZUlQQzo6Q29ubmVjdGlvCiAgICAgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzID0g
MDsKIH0KIAotdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25u
ZWN0aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyKQor
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiB7CiAgICAgQVNTRVJUKCFtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5pc0VtcHR5KCkpOwogCkBAIC0yMzYsOSArMjM2LDkgQEAg
dm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OmRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNv
bnN0IENvcmVJUEM6OkF0dGFjaG1lbnQKICAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQ
cm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4gcmVwbHkgPSBt
X3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy50YWtlRmlyc3QoKTsKIAogI2lmIFBMQVRGT1JNKE1B
QykKLSAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlm
aWVyLnBvcnQoKSwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICByZXBseS0+c2VuZChD
b3JlSVBDOjpBdHRhY2htZW50KGNvbm5lY3Rpb25JZGVudGlmaWVyLnBvcnQoKSwgTUFDSF9NU0df
VFlQRV9NT1ZFX1NFTkQpLCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgIHJlcGx5LT5zZW5kKGNvbm5l
Y3Rpb25JZGVudGlmaWVyKTsKKyAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllciwg
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxzZQogICAgIG5v
dEltcGxlbWVudGVkKCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggMGE1MWQ5Yi4uZTBmZTE1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc1Byb3h5LmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2Fn
ZSBoYW5kbGVycwogICAgIHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2Uo
Q29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1l
bnREZWNvZGVyKik7Ci0gICAgdm9pZCBkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25z
dCBDb3JlSVBDOjpBdHRhY2htZW50Jik7CisgICAgdm9pZCBkaWRDcmVhdGVXZWJQcm9jZXNzQ29u
bmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICAgICB2b2lkIGRpZEdldFNpdGVzV2l0aERhdGEo
Y29uc3QgVmVjdG9yPFN0cmluZz4mIHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKTsKICAgICB2
b2lkIGRpZENsZWFyU2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5tZXNzYWdlcy5pbgppbmRleCA3YjU5YWVmLi4xODNjYjBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCkBAIC0yMyw3ICsyMyw3IEBACiAjaWYgRU5BQkxFKFBMVUdJTl9QUk9D
RVNTKQogCiBtZXNzYWdlcyAtPiBQbHVnaW5Qcm9jZXNzUHJveHkgewotICAgIERpZENyZWF0ZVdl
YlByb2Nlc3NDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZp
ZXIpCisgICAgRGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVu
dCBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKQogCiAgICAgRGlkR2V0U2l0ZXNXaXRoRGF0YShWZWN0b3I8V1RGOjpTdHJp
bmc+IHNpdGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQogICAgIERpZENsZWFyU2l0ZURhdGEodWlu
dDY0X3QgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Q
bHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCmluZGV4IDM0ODZkZTQu
LmQ0YjRiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21h
Yy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpAQCAtMTE4LDYgKzExOCw5IEBA
IGJvb2wgUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGVQcm9wZXJ0eUxpc3RGaWxlKGNvbnN0IFBs
dWdpbk1vZHVsZUluZm8mIHBsdWdpbikKIAogdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsYXRm
b3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyYgcGFyYW1ldGVycykKIHsKKyAgICAvLyBGb3Iga25vdyBvbmx5IEZsYXNoIGlzIGtub3duIHRv
IGJlaGF2ZSB3aXRoIGFzeW5jaHJvbm91cyBwbHVnLWluIGluaXRpYWxpemF0aW9uLgorICAgIHBh
cmFtZXRlcnMuc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiA9IG1fcGx1
Z2luSW5mby5idW5kbGVJZGVudGlmaWVyID09ICJjb20ubWFjcm9tZWRpYS5GbGFzaCBQbGF5ZXIu
cGx1Z2luIjsKKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgSEFWRShIT1NU
RURfQ09SRV9BTklNQVRJT04pCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9IFtb
TlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogI2lmIF9fTUFDX09TX1hf
VkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gMTA3MApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggOWU3YjUyOS4uODQ4MDVk
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCkBAIC0zNCw3ICszNCw3IEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NQcm94
eSB7CiAgICAgU2hvdWxkVGVybWluYXRlKCkgLT4gKGJvb2wgc2hvdWxkVGVybWluYXRlKQogCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQotICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
KFdURjo6U3RyaW5nIHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rp
b25IYW5kbGUpIERlbGF5ZWQKKyAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0
cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxl
LCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pIERlbGF5ZWQKICAgICBQ
bHVnaW5TeW5jTWVzc2FnZVNlbmRUaW1lZE91dChXVEY6OlN0cmluZyBwbHVnaW5QYXRoKQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggMWM0OWM2MC4uZTA2MzY0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTU0LDYgKzU0LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBmcm9tTlBQKE5QUCk7CiAKKyAgICAvLyBJbi1w
cm9jZXNzIE5ldHNjYXBlUGx1Z2lucyBkb24ndCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFs
aXphdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKCkgeyB9CisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6aW5nQXN5bmNocm9ub3VzbHko
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5QRXJy
b3Igc2V0RHJhd2luZ01vZGVsKE5QRHJhd2luZ01vZGVsKTsKICAgICBOUEVycm9yIHNldEV2ZW50
TW9kZWwoTlBFdmVudE1vZGVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAppbmRleCA2ZDExYzg1Li4wZTEwZDJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5Q
REZWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWls
dEluUERGVmlldy5oCkBAIC01MCw2ICs1MCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2Vi
Q29yZTo6UGx1Z2luSW5mbyBwbHVnaW5JbmZvKCk7CiAKKyAgICAvLyBJbi1wcm9jZXNzIFBERlZp
ZXdzIGRvbid0IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgorICAgIHZpcnR1
YWwgdm9pZCB3YWl0Rm9yQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNJbml0aWFsaXppbmdBc3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQnVpbHRJblBERlZpZXcoV2ViRnJhbWUq
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
bi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCmluZGV4IDVi
ZTg0ZjQuLmUzYzEwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luLmgKQEAgLTgzLDYgKzgzLDEwIEBAIHB1YmxpYzoKICAgICAvLyBTZXRzIHRoZSBhY3RpdmUg
cGx1Zy1pbiBjb250cm9sbGVyIGFuZCBpbml0aWFsaXplcyB0aGUgcGx1Zy1pbi4KICAgICBib29s
IGluaXRpYWxpemUoUGx1Z2luQ29udHJvbGxlciosIGNvbnN0IFBhcmFtZXRlcnMmKTsKIAorICAg
IC8vIEZvcmNlcyBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiBvZiBhIHBsdWdpbiBwcmV2aW91
c2x5IGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5LgorICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9y
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oKSA9IDA7CisgICAgdmlydHVhbCBib29sIGlzSW5p
dGlhbGl6aW5nQXN5bmNocm9ub3VzbHkoKSBjb25zdCA9IDA7CisKICAgICAvLyBEZXN0cm95cyB0
aGUgcGx1Zy1pbi4KICAgICB2b2lkIGRlc3Ryb3lQbHVnaW4oKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggNDJj
Mjk1OS4uNDRlYTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0xMzgsNiArMTM4LDE1IEBAIHB1YmxpYzoKIAog
ICAgIC8vIFJldHVybnMgd2hldGhlciBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCiAgICAg
dmlydHVhbCBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpID0gMDsKKyAgICAKKyAgICAv
LyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IGFzeW5jaHJvbm91cyBwbHVnaW4gaW5pdGlhbGl6YXRp
b24gaXMgZW5hYmxlZC4KKyAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb25FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICAvLyBS
ZXR1cm5zIHdoZXRoZXIgb3Igbm90IGFzeW5jaHJvbm91cyBwbHVnaW4gaW5pdGlhbGl6YXRpb24g
c2hvdWxkIGJlIGF0dGVtcHRlZCBmb3IgYWxsIHBsdWdpbnMuCisgICAgdmlydHVhbCBib29sIGFz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorICAgIAorICAgIC8vIFJldHVybnMgdGhlIGFydGljaWZpY2Fs
IHBsdWdpbiBkZWxheSB0byB1c2UgZm9yIHRlc3Rpbmcgb2YgYXN5bmNocm9ub3VzIHBsdWdpbiBp
bml0aWFsaXphdGlvbi4KKyAgICB2aXJ0dWFsIGJvb2wgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxp
emF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIElu
Y3JlbWVudHMgYSBjb3VudGVyIHRoYXQgcHJldmVudHMgdGhlIHBsdWctaW4gZnJvbSBiZWluZyBk
ZXN0cm95ZWQuCiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24o
KSA9IDA7CkBAIC0xNTEsNiArMTYwLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB3aW5k
b3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1l
UmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lE
KSA9IDA7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRJbml0aWFsaXplUGx1Z2luKCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkgPSAwOwor
CiAgICAgLy8gSGVscGVyIGNsYXNzIGZvciBkZWxheWluZyBkZXN0cnVjdGlvbiBvZiBhIHBsdWct
aW4uCiAgICAgY2xhc3MgUGx1Z2luRGVzdHJ1Y3Rpb25Qcm90ZWN0b3IgewogICAgIHB1YmxpYzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDgzMzlhZDQuLmNjMzEzZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NDb25uZWN0aW9uLmNwcApAQCAtNzMsOSArNzMsMTAgQEAgc3RhdGljIGRvdWJsZSBkZWZh
dWx0U3luY01lc3NhZ2VUaW1lb3V0KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCkKICAgICByZXR1
cm4gc3luY01lc3NhZ2VUaW1lb3V0OwogfQogCi1QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKK1BsdWdp
blByb2Nlc3NDb25uZWN0aW9uOjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3Qg
U3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24pCiAgICAgOiBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcihwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIpCiAgICAgLCBtX3BsdWdpblBhdGgocGx1Z2luUGF0aCkKKyAg
ICAsIG1fc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogewogICAgIG1fY29ubmVjdGlvbiA9IENv
cmVJUEM6OkNvbm5lY3Rpb246OmNyZWF0ZUNsaWVudENvbm5lY3Rpb24oY29ubmVjdGlvbklkZW50
aWZpZXIsIHRoaXMsIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnJ1bkxvb3AoKSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3ND
b25uZWN0aW9uLmgKaW5kZXggNjFjNGFjMi4uYmM4NjZkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9u
LmgKQEAgLTQzLDkgKzQzLDkgQEAgY2xhc3MgUGx1Z2luUHJveHk7CiAgICAgCiBjbGFzcyBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uPiwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gY3JlYXRlKFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBv
cnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pCiAgICAgewotICAgICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblByb2Nlc3NDb25u
ZWN0aW9uTWFuYWdlciwgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIpKTsKKyAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKSk7CiAgICAgfQogICAgIH5Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbigpOwogCkBAIC01OCw4ICs1OCwxMCBAQCBwdWJsaWM6CiAK
ICAgICBOUFJlbW90ZU9iamVjdE1hcCogbnBSZW1vdGVPYmplY3RNYXAoKSBjb25zdCB7IHJldHVy
biBtX25wUmVtb3RlT2JqZWN0TWFwLmdldCgpOyB9CiAKKyAgICBib29sIHN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24oKSBjb25zdCB7IHJldHVybiBtX3N1cHBvcnRzQXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247IH0KKwogcHJpdmF0ZToKLSAgICBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblBy
b2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBD
OjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKKyAgICBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbihQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqLCBjb25z
dCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29u
bmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlv
bik7CiAKICAgICAvLyBDb3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKICAgICB2aXJ0dWFsIHZv
aWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3Nh
Z2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKik7CkBAIC04Miw2ICs4NCw4IEBAIHByaXZh
dGU6CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgUGx1Z2luUHJveHkqPiBtX3BsdWdpbnM7CiAKICAg
ICBSZWZQdHI8TlBSZW1vdGVPYmplY3RNYXA+IG1fbnBSZW1vdGVPYmplY3RNYXA7CisgICAgCisg
ICAgYm9vbCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdl
ci5jcHAKaW5kZXggZmQxOTA2ZC4uMzNkMTJjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0
aW9uTWFuYWdlci5jcHAKQEAgLTU3LDggKzU3LDkgQEAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24q
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlcjo6Z2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3QK
ICAgICB9CiAKICAgICBDb3JlSVBDOjpBdHRhY2htZW50IGVuY29kZWRDb25uZWN0aW9uSWRlbnRp
ZmllcjsKKyAgICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247CiAgICAg
aWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKHBsdWdpblBhdGgp
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVw
bHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyKSwgMCkpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJv
eHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpSZXBseShlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCAwKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC03MSw3ICs3Miw3IEBAIFBsdWdp
blByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBs
dWdpblByb2Nlc3NDb25uZWN0CiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKLSAgICBSZWZQ
dHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IHBsdWdpblByb2Nlc3NDb25uZWN0aW9uID0gUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSh0aGlzLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9u
SWRlbnRpZmllcik7CisgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywg
cGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24pOwogICAgIG1fcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbik7CiAKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAppbmRleCBkNGEzNTQ5Li5kM2FmMDZiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5j
cHAKQEAgLTY4LDYgKzY4LDcgQEAgUGx1Z2luUHJveHk6OlBsdWdpblByb3h5KGNvbnN0IFN0cmlu
ZyYgcGx1Z2luUGF0aCkKICAgICAsIG1fd2FpdGluZ0ZvclBhaW50SW5SZXNwb25zZVRvVXBkYXRl
KGZhbHNlKQogICAgICwgbV93YW50c1doZWVsRXZlbnRzKGZhbHNlKQogICAgICwgbV9yZW1vdGVM
YXllckNsaWVudElEKDApCisgICAgLCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKGZhbHNlKQogewogfQogCkBAIC05MywzOCArOTQsMTA5IEBAIGJvb2wgUGx1Z2luUHJveHk6
OmluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYgcGFyYW1ldGVycykKICAgICBtX2Nvbm5lY3Rp
b24tPmFkZFBsdWdpblByb3h5KHRoaXMpOwogCiAgICAgLy8gQXNrIHRoZSBwbHVnLWluIHByb2Nl
c3MgdG8gY3JlYXRlIGEgcGx1Zy1pbi4KLSAgICBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgY3Jl
YXRpb25QYXJhbWV0ZXJzOwotICAgIGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlE
ID0gbV9wbHVnaW5JbnN0YW5jZUlEOwotICAgIGNyZWF0aW9uUGFyYW1ldGVycy53aW5kb3dOUE9i
amVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOwotICAgIGNyZWF0aW9uUGFyYW1ldGVycy5wYXJh
bWV0ZXJzID0gcGFyYW1ldGVyczsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMudXNlckFnZW50ID0g
Y29udHJvbGxlcigpLT51c2VyQWdlbnQoKTsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMuY29udGVu
dHNTY2FsZUZhY3RvciA9IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKLSAgICBjcmVhdGlvblBhcmFt
ZXRlcnMuaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5pc1ByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMg
PSBhZG9wdFB0cihuZXcgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKTsKKworICAgIG1fcGVuZGlu
Z1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5z
dGFuY2VJRDsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPndpbmRvd05Q
T2JqZWN0SUQgPSB3aW5kb3dOUE9iamVjdElEKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLT5wYXJhbWV0ZXJzID0gcGFyYW1ldGVyczsKKyAgICBtX3BlbmRpbmdQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMtPnVzZXJBZ2VudCA9IGNvbnRyb2xsZXIoKS0+dXNlckFnZW50
KCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5jb250ZW50c1NjYWxl
RmFjdG9yID0gY29udGVudHNTY2FsZUZhY3RvcigpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycy0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5p
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMtPmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCA9IGNv
bnRyb2xsZXIoKS0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCk7
CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgY3JlYXRpb25QYXJhbWV0
ZXJzLmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMtPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBjb250cm9sbGVy
KCktPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKTsKICNlbmRpZgogCisgICAgaWYg
KCFjYW5Jbml0aWFsaXplQXN5bmNocm9ub3VzbHkoKSkKKyAgICAgICAgcmV0dXJuIGluaXRpYWxp
emVTeW5jaHJvbm91c2x5KCk7CisKKyAgICAvLyBSZW1lbWJlciB0aGF0IHdlIHRyaWVkIHRvIGNy
ZWF0ZSB0aGlzIHBsdWctaW4gYXN5bmNocm9ub3VzbHkgaW4gY2FzZSB3ZSBuZWVkIHRvIGNyZWF0
ZSBpdCBzeW5jaHJvbm91c2x5IGxhdGVyLgorICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24gPSB0cnVlOworICAgIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBjcmVhdGlv
blBhcmFtZXRlcnMoKm1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5nZXQoKSk7Cisg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3ND
b25uZWN0aW9uOjpDcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShjcmVhdGlvblBhcmFtZXRlcnMp
LCBtX3BsdWdpbkluc3RhbmNlSUQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFBsdWdp
blByb3h5OjpjYW5Jbml0aWFsaXplQXN5bmNocm9ub3VzbHkoKSBjb25zdAoreworICAgIHJldHVy
biBjb250cm9sbGVyKCktPmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgp
ICYmIChtX2Nvbm5lY3Rpb24tPnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24oKSB8fCBjb250cm9sbGVyKCktPmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5h
YmxlZEZvckFsbFBsdWdpbnMoKSk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OndhaXRGb3JBc3lu
Y2hyb25vdXNJbml0aWFsaXphdGlvbigpCit7CisgICAgQVNTRVJUKCFtX2lzU3RhcnRlZCk7Cisg
ICAgQVNTRVJUKG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOworCisgICAg
aW5pdGlhbGl6ZVN5bmNocm9ub3VzbHkoKTsKK30KKworYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlh
bGl6ZVN5bmNocm9ub3VzbHkoKQoreworICAgIEFTU0VSVChtX3BlbmRpbmdQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMpOworCisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5h
c3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUgPSBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0lu
aXRpYWxpemF0aW9uOwogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgYm9vbCB3YW50c1do
ZWVsRXZlbnRzID0gZmFsc2U7CiAgICAgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IDA7
CisgICAgCisgICAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHBhcmFtZXRlcnMoKm1fcGVuZGlu
Z1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5nZXQoKSk7CiAKLSAgICBpZiAoIW1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbihjcmVhdGlvblBhcmFtZXRlcnMpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nv
bm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6UmVwbHkocmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCBy
ZW1vdGVMYXllckNsaWVudElEKSwgMCkgfHwgIXJlc3VsdCkgewotICAgICAgICBtX2Nvbm5lY3Rp
b24tPnJlbW92ZVBsdWdpblByb3h5KHRoaXMpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQorICAgIGlmICghbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luKHBhcmFtZXRlcnMpLCBNZXNzYWdl
czo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbjo6UmVwbHkocmVzdWx0LCB3YW50
c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKSwgMCkgfHwgIXJlc3VsdCkKKyAgICAg
ICAgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwoKTsKKyAgICBlbHNlCisgICAgICAgIGRp
ZENyZWF0ZVBsdWdpbkludGVybmFsKHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50
SUQpOworICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CiAKK3ZvaWQgUGx1Z2luUHJveHk6OmRp
ZENyZWF0ZVBsdWdpbihib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90ZUxheWVy
Q2xpZW50SUQpCit7CisgICAgLy8gV2UgbWlnaHQgaGF2ZSB0cmllZCB0byBjcmVhdGUgdGhlIHBs
dWctaW4gc3ljaHJvbm91c2x5IHdoaWxlIHdhaXRpbmcgb24gdGhlIGFzeW5jaHJvbm91cyByZXBs
eSwKKyAgICAvLyBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBpZ25vcmUgdGhpcyBtZXNzYWdlLgor
ICAgIGlmICghbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgZGlkQ3JlYXRlUGx1Z2luSW50ZXJuYWwod2FudHNXaGVlbEV2ZW50cywg
cmVtb3RlTGF5ZXJDbGllbnRJRCk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OmRpZEZhaWxUb0Ny
ZWF0ZVBsdWdpbigpCit7CisgICAgLy8gV2UgbWlnaHQgaGF2ZSB0cmllZCB0byBjcmVhdGUgdGhl
IHBsdWctaW4gc3ljaHJvbm91c2x5IHdoaWxlIHdhaXRpbmcgb24gdGhlIGFzeW5jaHJvbm91cyBy
ZXBseSwKKyAgICAvLyBpbiB3aGljaCBjYXNlIHdlIHNob3VsZCBpZ25vcmUgdGhpcyBtZXNzYWdl
LgorICAgIGlmICghbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikKKyAgICAg
ICAgcmV0dXJuOworCisgICAgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwoKTsKK30KKwor
dm9pZCBQbHVnaW5Qcm94eTo6ZGlkQ3JlYXRlUGx1Z2luSW50ZXJuYWwoYm9vbCB3YW50c1doZWVs
RXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEKQorewogICAgIG1fd2FudHNXaGVl
bEV2ZW50cyA9IHdhbnRzV2hlZWxFdmVudHM7CiAgICAgbV9yZW1vdGVMYXllckNsaWVudElEID0g
cmVtb3RlTGF5ZXJDbGllbnRJRDsKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CisgICAgY29udHJv
bGxlcigpLT5kaWRJbml0aWFsaXplUGx1Z2luKCk7CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAv
LyBXaGV0aGVyIHN5bmNocm9ub3VzbHkgb3IgYXN5bmNocm9ub3VzbHksIHRoaXMgcGx1Zy1pbiB3
YXMgY3JlYXRlZCBhbmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gcmVtZW1iZXIKKyAgICAvLyBhbnl0
aGluZyBhYm91dCBob3cuCisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNs
ZWFyKCk7CisgICAgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiA9IGZhbHNl
OwogfQogCi12b2lkIFBsdWdpblByb3h5OjpkZXN0cm95KCkKK3ZvaWQgUGx1Z2luUHJveHk6OmRp
ZEZhaWxUb0NyZWF0ZVBsdWdpbkludGVybmFsKCkKIHsKLSAgICBBU1NFUlQobV9pc1N0YXJ0ZWQp
OworICAgIG1fY29ubmVjdGlvbi0+cmVtb3ZlUGx1Z2luUHJveHkodGhpcyk7CisgICAgY29udHJv
bGxlcigpLT5kaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCk7CiAKLSAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpE
ZXN0cm95UGx1Z2luKG1fcGx1Z2luSW5zdGFuY2VJRCksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6UmVwbHkoKSwgMCk7CisgICAgLy8gV2hldGhlciBzeW5j
aHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5LCB0aGlzIHBsdWctaW4gZmFpbGVkIHRvIGNyZWF0
ZSBhbmQgd2Ugc2hvdWxkbid0IG5lZWQgdG8gcmVtZW1iZXIKKyAgICAvLyBhbnl0aGluZyBhYm91
dCBob3cuCisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNsZWFyKCk7Cisg
ICAgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbiA9IGZhbHNlOworfQorCit2
b2lkIFBsdWdpblByb3h5OjpkZXN0cm95KCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpEZXN0cm95UGx1
Z2luKG1fcGx1Z2luSW5zdGFuY2VJRCwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXph
dGlvbiksIE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbjo6UmVw
bHkoKSwgMCk7CiAKICAgICBtX2lzU3RhcnRlZCA9IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4IGJlMDdjYWEuLmFlNGYy
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCkBAIC00OSw2ICs0OSw4IEBAIGNsYXNzIFNoYXJlYWJsZUJpdG1hcDsKIGNsYXNzIE5QVmFy
aWFudERhdGE7CiBjbGFzcyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjsKIAorc3RydWN0IFBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVyczsKKwogY2xhc3MgUGx1Z2luUHJveHkgOiBwdWJsaWMgUGx1Z2lu
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxQbHVnaW5Qcm94eT4gY3JlYXRlKGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CkBAIC02MCwxMSArNjIsMTYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkUmVjZWl2ZVBsdWdpblByb3h5TWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwg
Q29yZUlQQzo6TWVzc2FnZUlEIG1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBh
cmd1bWVudHMpOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNQbHVnaW5Qcm94eU1lc3NhZ2UoQ29y
ZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnRE
ZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKIAorICAgIGJvb2wg
aXNJbml0aWFsaXppbmdBc3luY2hyb25vdXNseSgpIGNvbnN0IHsgcmV0dXJuIG1fd2FpdGluZ09u
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247IH0KKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBQ
bHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwogCiAgICAgLy8gUGx1Z2luCiAg
ICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoY29uc3QgUGFyYW1ldGVycyYpOworICAgIGJvb2wg
aW5pdGlhbGl6ZVN5bmNocm9ub3VzbHkoKTsKKworICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQXN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQqLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBkaXJ0eVJlY3QpOwogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxTaGFy
ZWFibGVCaXRtYXA+IHNuYXBzaG90KCk7CkBAIC0xNDEsNiArMTQ4LDE0IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2
NF90IHdpbmRvd0lEKTsKICNlbmRpZgogCisgICAgYm9vbCBjYW5Jbml0aWFsaXplQXN5bmNocm9u
b3VzbHkoKSBjb25zdDsKKworICAgIHZvaWQgZGlkQ3JlYXRlUGx1Z2luKGJvb2wgd2FudHNXaGVl
bEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisgICAgdm9pZCBkaWRGYWls
VG9DcmVhdGVQbHVnaW4oKTsKKyAgICAKKyAgICB2b2lkIGRpZENyZWF0ZVBsdWdpbkludGVybmFs
KGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCk7Cisg
ICAgdm9pZCBkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCgpOworCiAgICAgU3RyaW5nIG1f
cGx1Z2luUGF0aDsKIAogICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gbV9jb25u
ZWN0aW9uOwpAQCAtMTc0LDYgKzE4OSw5IEBAIHByaXZhdGU6CiAKICAgICAvLyBUaGUgY2xpZW50
IElEIGZvciB0aGUgQ0EgbGF5ZXIgaW4gdGhlIHBsdWctaW4gcHJvY2Vzcy4gV2lsbCBiZSAwIGlm
IHRoZSBwbHVnLWluIGlzIG5vdCBhIENBIHBsdWctaW4uCiAgICAgdWludDMyX3QgbV9yZW1vdGVM
YXllckNsaWVudElEOworICAgIAorICAgIE93blB0cjxQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM+
IG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczsKKyAgICBib29sIG1fd2FpdGluZ09u
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgUmV0
YWluUHRyPENBTGF5ZXI+IG1fcGx1Z2luTGF5ZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KaW5kZXggYTJl
ZjMxOS4uNDUzYzBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgpAQCAtNzQsNiArNzQsMTIgQEAgbWVz
c2FnZXMgLT4gUGx1Z2luUHJveHkgewogICAgICMgVXBkYXRlIGdlb21ldHJ5IG9mIHdpbmRvd2Vk
IHBsdWdpbiB3aWRnZXQKICAgICBXaW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKFdlYkNv
cmU6OkludFJlY3QgZnJhbWVSZWN0LCBXZWJDb3JlOjpJbnRSZWN0IGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCkKICNlbmRpZgorCisgICAgIyBUZWxscyB0aGUgV2ViUHJvY2VzcyB0aGF0IHRo
ZSBwbHVnLWluIHdhcyBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgYXN5bmNocm9ub3VzbHkKKyAg
ICBEaWRDcmVhdGVQbHVnaW4oYm9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVM
YXllckNsaWVudElEKSAtPiAoKQorICAgIAorICAgICMgVGVsbHMgdGhlIFdlYlByb2Nlc3MgdGhh
dCB0aGUgcGx1Zy1pbiBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4KKyAgICBEaWRGYWlsVG9DcmVhdGVQ
bHVnaW4oKSAtPiAoKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCAwNzJhNjljLi5jYjYxNjcyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCkBAIC0y
NjAsNiArMjYwLDcgQEAgUGx1Z2luVmlldzo6UGx1Z2luVmlldyhQYXNzUmVmUHRyPEhUTUxQbHVn
SW5FbGVtZW50PiBwbHVnaW5FbGVtZW50LCBQYXNzUmVmUHRyPFAKICAgICAsIG1fd2ViUGFnZSh3
ZWJQYWdlKG1fcGx1Z2luRWxlbWVudC5nZXQoKSkpCiAgICAgLCBtX3BhcmFtZXRlcnMocGFyYW1l
dGVycykKICAgICAsIG1faXNJbml0aWFsaXplZChmYWxzZSkKKyAgICAsIG1faXNXYWl0aW5nRm9y
U3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxzZSkKICAgICAsIG1faXNXYWl0aW5nVW50aWxN
ZWRpYUNhblN0YXJ0KGZhbHNlKQogICAgICwgbV9pc0JlaW5nRGVzdHJveWVkKGZhbHNlKQogICAg
ICwgbV9wZW5kaW5nVVJMUmVxdWVzdHNUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQbHVn
aW5WaWV3OjpwZW5kaW5nVVJMUmVxdWVzdHNUaW1lckZpcmVkKQpAQCAtMjg1LDcgKzI4Niw3IEBA
IFBsdWdpblZpZXc6On5QbHVnaW5WaWV3KCkKICAgICBmb3IgKEZyYW1lTG9hZE1hcDo6aXRlcmF0
b3IgaXQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmJlZ2luKCksIGVuZCA9IG1fcGVuZGluZ0ZyYW1l
TG9hZHMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkKICAgICAgICAgaXQtPmZpcnN0LT5zZXRMb2Fk
TGlzdGVuZXIoMCk7CiAKLSAgICBpZiAobV9wbHVnaW4gJiYgbV9pc0luaXRpYWxpemVkKSB7Cisg
ICAgaWYgKG1fcGx1Z2luKSB7CiAgICAgICAgIG1faXNCZWluZ0Rlc3Ryb3llZCA9IHRydWU7CiAg
ICAgICAgIG1fcGx1Z2luLT5kZXN0cm95UGx1Z2luKCk7CiAgICAgICAgIG1faXNCZWluZ0Rlc3Ry
b3llZCA9IGZhbHNlOwpAQCAtNDg3LDE1ICs0ODgsMjAgQEAgdm9pZCBQbHVnaW5WaWV3Ojppbml0
aWFsaXplUGx1Z2luKCkKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICAKLSAg
ICBpZiAoIW1fcGx1Z2luLT5pbml0aWFsaXplKHRoaXMsIG1fcGFyYW1ldGVycykpIHsKLSAgICAg
ICAgLy8gV2UgZmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHBsdWctaW4uCi0gICAgICAgIG1fcGx1
Z2luID0gMDsKIAotICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihtX3BhcmFtZXRlcnMubWltZVR5cGUpKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX3BsdWdpbi0+aW5pdGlhbGl6ZSh0aGlzLCBtX3Bh
cmFtZXRlcnMpOwogICAgIAorICAgIC8vIFBsdWctaW4gaW5pdGlhbGl6YXRpb24gY29udGludWVk
IGluIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKSBvciBkaWRJbml0aWFsaXplUGx1Z2luKCku
Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpCit7Cisg
ICAgbV9wbHVnaW4gPSAwOworICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKG1fcGFyYW1ldGVycy5taW1lVHlwZSkpOwor
fQorCit2b2lkIFBsdWdpblZpZXc6OmRpZEluaXRpYWxpemVQbHVnaW4oKQorewogICAgIG1faXNJ
bml0aWFsaXplZCA9IHRydWU7CiAKICNpZiBQTEFURk9STShNQUMpCkBAIC01MzksNiArNTQ1LDE5
IEBAIFBsYXRmb3JtTGF5ZXIqIFBsdWdpblZpZXc6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogCiBK
U09iamVjdCogUGx1Z2luVmlldzo6c2NyaXB0T2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CisgICAgLy8gSWYgd2UncmUgYWxyZWFkeSB3YWl0aW5nIGZvciBzeW5jaHJvbm91
cyBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGx1Z2luLAorICAgIC8vIGNhbGxzIHRvIHNjcmlwdE9i
amVjdCgpIGFyZSBmcm9tIHRoZSBwbHVnLWluIGl0c2VsZiBhbmQgbmVlZCB0byByZXR1cm4gMDsK
KyAgICBpZiAobV9pc1dhaXRpbmdGb3JTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIC8vIElmIHRoZSBwbHVnLWluIGV4aXN0cyBidXQgaXMgbm90IGlu
aXRpYWxpemVkIHRoZW4gd2UncmUgc3RpbGwgaW5pdGlhbGl6aW5nIGFzeW5jaHJvbm91c2x5Lgor
ICAgIC8vIFdlIG5lZWQgdG8gd2FpdCBoZXJlIHVudGlsIGluaXRpYWxpemF0aW9uIGhhcyBlaXRo
ZXIgc3VjY2VlZGVkIG9yIGZhaWxlZC4KKyAgICBpZiAobV9wbHVnaW4tPmlzSW5pdGlhbGl6aW5n
QXN5bmNocm9ub3VzbHkoKSkgeworICAgICAgICBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5p
dGlhbGl6YXRpb24gPSB0cnVlOworICAgICAgICBtX3BsdWdpbi0+d2FpdEZvckFzeW5jaHJvbm91
c0luaXRpYWxpemF0aW9uKCk7CisgICAgICAgIG1faXNXYWl0aW5nRm9yU3luY2hyb25vdXNJbml0
aWFsaXphdGlvbiA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIFRoZSBwbHVnLWluIGNhbiBiZSBu
dWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYgKCFtX2lzSW5pdGlh
bGl6ZWQgfHwgIW1fcGx1Z2luKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEyNTAsNiArMTI2OSwy
MSBAQCBib29sIFBsdWdpblZpZXc6OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpCiAgICAgcmV0
dXJuIHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKK2Jvb2wgUGx1Z2lu
Vmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV93ZWJQYWdlLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVu
YWJsZWQoKTsKK30KKworYm9vbCBQbHVnaW5WaWV3Ojphc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQ
YWdlLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5z
KCk7Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9u
RGVsYXlFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5hcnRpZmljaWFs
UGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKK30KKwogdm9pZCBQbHVnaW5WaWV3
Ojpwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkKIHsKICAgICBpZiAoIW1faXNCZWluZ0Rl
c3Ryb3llZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5oCmluZGV4IGYxMDFiMmYuLmE2YTA1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtODAsNyArODAsNiBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgflBsdWdpblZpZXcoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6ZVBsdWdpbigpOwot
ICAgIHZvaWQgZGVzdHJveVBsdWdpbigpOwogCiAgICAgdm9pZCB2aWV3R2VvbWV0cnlEaWRDaGFu
Z2UoKTsKICAgICB2b2lkIHZpZXdWaXNpYmlsaXR5RGlkQ2hhbmdlKCk7CkBAIC0xNjQsNiArMTYz
LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0ZvclVSTChjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpOwogICAgIHZpcnR1
YWwgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgV2ViQ29yZTo6UHJvdGVjdGlvblNw
YWNlJiwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCk7CiAgICAgdmlydHVhbCBi
b29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHZpcnR1YWwgYm9vbCBhc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucygp
IGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25E
ZWxheUVuYWJsZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFBsdWdpbkZyb21E
ZXN0cnVjdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1
Y3Rpb24oKTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKQEAgLTE3MSw2ICsxNzMsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hh
bmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKICNlbmRpZgogCisgICAgdmlydHVh
bCB2b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRv
SW5pdGlhbGl6ZVBsdWdpbigpOworCiAgICAgLy8gV2ViRnJhbWU6OkxvYWRMaXN0ZW5lcgogICAg
IHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7CiAgICAgdmlydHVhbCB2b2lk
IGRpZEZhaWxMb2FkKFdlYkZyYW1lKiwgYm9vbCB3YXNDYW5jZWxsZWQpOwpAQCAtMTgxLDYgKzE4
Niw3IEBAIHByaXZhdGU6CiAgICAgUGx1Z2luOjpQYXJhbWV0ZXJzIG1fcGFyYW1ldGVyczsKICAg
ICAKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKKyAgICBib29sIG1faXNXYWl0aW5nRm9yU3lu
Y2hyb25vdXNJbml0aWFsaXphdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5nVW50aWxNZWRpYUNh
blN0YXJ0OwogICAgIGJvb2wgbV9pc0JlaW5nRGVzdHJveWVkOwogCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmRiZTY1My4uYWFkMTM1OCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE5IEBACisyMDEyLTA4LTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBPdXQtb2YtcHJvY2VzcyBwbHVnLWlucyBzaG91bGQgc3VwcG9ydCBhc3luY2hyb25v
dXMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwNTk4NTk0PiBhbmQg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTE5CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgcGx1Zy1pbiB3aXRo
IGFuIE5QUF9OZXcgdGhhdCB0YWtlcyA1NTBtcyAoYSByZWFzb25hYmxlIHRyYWRlLW9mZiBiZXR3
ZWVuIGEgc29saWQgdGVzdCBhbmQgYSBzbG93IHJ1bm5pbmcgdGVzdCkKKyAgICAgICAgZm9yIHRl
c3RpbmcgYXN5bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24uCisKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93TlBQ
TmV3LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oLgorICAgICAgICAoU2xvd05QUE5ldyk6CisgICAg
ICAgIChTbG93TlBQTmV3OjpTbG93TlBQTmV3KToKKyAgICAgICAgKFNsb3dOUFBOZXc6Ok5QUF9O
ZXcpOgorCiAyMDEyLTA4LTA2ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBXVFIgc2hvdWxkIGJlIGFibGUgdG8gbG9hZCBleHRlcm5hbCByZXNvdXJjZXMK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ4MTA2NGUuLmI3OTA0ZjYgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjcsNiArNjcsNyBAQAogCQk0NDM3NzMwRTEyNUNCQzM2
MDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTk5NzgzMEZDREU4NjQwMDU4MEYxMCAvKiBX
ZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk0NDM3NzMwRjEyNUNCQzREMDBBQUUw
MkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4MjBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0LmggKi87IH07CiAJCTRBRDZBMTE0MTNDODEyNDAwMEVBOTczNyAvKiBGb3Jt
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgKi87IH07CisJCTUxMDY4
MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDY4MDNEMTVDQzdCMTAwMDFBOEEyMyAvKiBT
bG93TlBQTmV3LmNwcCAqLzsgfTsKIAkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdp
blNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5
MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87
IH07CiAJCTUxODVGNkIyMTA3MTRFMDcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0
QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tICovOyB9OwogCQk1MTg1RjZCMzEwNzE0
RTEyMDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RTEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9y
eURlbGVnYXRlLmggKi87IH07CkBAIC0yNzgsNiArMjc5LDcgQEAKIAkJNDRBOTk3ODIwRkNERTg2
NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgcGF0aCA9IGNmL1dlYkFyY2hp
dmVEdW1wU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NEE5OTc4MzBG
Q0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHA7IHBhdGgg
PSBjZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk0QUQ2QTExMzEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxMDY4MDNEMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNsb3dOUFBOZXcuY3BwOyBw
YXRoID0gVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3BwOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5T
Y3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxs
UHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlFMTA3
MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSGlzdG9yeURlbGVnYXRlLmg7IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlGMTA3MTRBNTcwMDdBQTM5
MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsg
bmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTMsNiArNTU1LDcgQEAKIAkJCQkxQUQ5
RDJGRDEyMDI4NDA5MDAxQTcwRDEgLyogUGx1Z2luU2NyaXB0YWJsZU5QT2JqZWN0SW52b2tlRGVm
YXVsdC5jcHAgKi8sCiAJCQkJNTE1RjQyOUIxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlw
dGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCAqLywKIAkJCQkxQTFFNDI5NjE0
MTE0MUM0MDAzODg3NTggLyogUHJpdmF0ZUJyb3dzaW5nLmNwcCAqLywKKwkJCQk1MTA2ODAzRDE1
Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi8sCiAJCQkpOwogCQkJcGF0aCA9IFRl
c3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkwMiw2ICs5MDUsNyBAQAogCQkJ
CTFBMUU0Mjk4MTQxMTQxQzQwMDM4ODc1OCAvKiBQcml2YXRlQnJvd3NpbmcuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUE2NkMzNTExNDU3NkE5MjAwOTlBMTE1IC8qIENvbnRlbnRzU2NhbGVGYWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBs
dWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBl
UGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5l
dHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJkMmE3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvU2xvd05QUE5ldy5jcHAKQEAgLTAsMCArMSw0
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisKKyNpbmNsdWRlIDxz
dHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworY2xhc3MgU2xvd05QUE5ldyA6IHB1
YmxpYyBQbHVnaW5UZXN0IHsKK3B1YmxpYzoKKyAgICBTbG93TlBQTmV3KE5QUCBucHAsIGNvbnN0
IHN0cmluZyYgaWRlbnRpZmllcikKKyAgICAgICAgOiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmll
cikKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICAKKyAgICB2aXJ0dWFsIE5QRXJy
b3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIHVpbnQxNl90IG1vZGUsIGludDE2X3Qg
YXJnYywgY2hhciogYXJnbltdLCBjaGFyKiBhcmd2W10sIE5QU2F2ZWREYXRhICpzYXZlZCkKKyAg
ICB7CisgICAgICAgIHVzbGVlcCg1NTAwMDApOworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJS
T1I7CisgICAgfQorfTsKKworc3RhdGljIFBsdWdpblRlc3Q6OlJlZ2lzdGVyPFNsb3dOUFBOZXc+
IHNsb3dOUFBOZXcoInNsb3ctbnBwLW5ldyIpOwo=
</data>
<flag name="commit-queue"
          id="166484"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156734</attachid>
            <date>2012-08-06 11:44:32 -0700</date>
            <delta_ts>2012-08-06 16:06:37 -0700</delta_ts>
            <desc>Part 3 - v3 - Add the feature (with some tests) (and non-Mac build fixes)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68613</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYTAyZGE2Li44MzAxZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgt
MDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1w
cm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
bgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA1OTg1OTQ+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gbWFrZSBzdXJlIGEgcGx1Zy1pbiB3
aXRoIGEgbG9uZyBydW5uaW5nIE5QUF9OZXcgZG9lcyBub3QgYmxvY2sgdGhlIHdlYiB0aHJlYWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMt
cGx1Z2luLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVs
dGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Ns
b3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3Vz
LXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbDogQWRkZWQuCisKIDIw
MTItMDgtMDYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1l
ZEZsb3dSZW1vdmVkIiBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5
bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxMWM1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4t
aW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IGxv
YWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAoNTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9u
ZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nlc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudCB0b29rIHVuZGVyIDUwMG1z
LCBwbHVnLWluIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdp
bi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0
aW9uLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MDk2ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0
aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIGZpbmlzaGVzIHRoZSB0ZXN0
IGFuZCBzZWUncyBob3cgbXVjaCB0aW1lIHBhc3NlZC4KK09ubHkgb25lIG9mIHRoZSAyMCBwbHVn
LWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBfRGVzdHJveSBydW4gdG8g
Y29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuCitUaGUgb3RoZXIgMTkgc2hvdWxk
IG5ldmVyIGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQgYXQgYWxsLgorUEFTUyBBcHBlbmRpbmcgcGx1
Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIGJldHdlZW4gNTUwbXMgYW5k
IDExMDBtcyBzdWdnZXN0aW5nIGEgc2luZ2xlIHBsdWctaW4gd2FzIGNyZWF0ZWQgYW5kIHRoZW4g
ZGVzdHJveWVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25v
dXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2Y4MWNhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlh
bGl6YXRpb24tbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
Y3JlYXRlVGVzdFBsdWdpbih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94
LXdlYmtpdC10ZXN0LW5ldHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0Jywg
dGVzdE5hbWUpOworCisgICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
IAoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMg
dGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCBy
ZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkIiwgIjEiKTsKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0MkFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMiLCAiMSIpOworCisgICAgLy8gR3JhYiB0aGUgdGltZSBi
ZWZvcmUgd2UgY3JlYXRlIGFuZCBhcHBlbmQgMjAgc2xvdyBwbHVnLWlucy4KKyAgICBzZXNzaW9u
U3RvcmFnZS5iZWZvcmVEYXRlID0gKG5ldyBEYXRlKS52YWx1ZU9mKCk7CisgICAgCisgICAgdmFy
IHBsdWdpbnMgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kp
CisgICAgICAgIHBsdWdpbnNbaV0gPSBjcmVhdGVUZXN0UGx1Z2luKCdzbG93LW5wcC1uZXcnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpCisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQocGx1Z2luc1tpXSk7CisKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQg
c28gdGhlIHBsdWctaW5zIGluc3RhbnRpYXRlCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOworICAgIAorICAgIHNldFRpbWVvdXQoImxvY2F0aW9uLmhyZWYgPSAncmVzb3Vy
Y2VzL2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVsdGlwbGUtZmluaXNoLmh0
bWwnIiwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGxvYWRpbmcgbXVsdGlwbGUg
c2xvdyBpbml0aWFsaXppbmcgcGx1Zy1pbnMgYW5kIHRoZW4gbmF2aWdhdGluZyBvbmx5IGhhcyB0
byB3YWl0IGZvciBvbmUgb2YgdGhlbSB0byBmaW5pc2ggYmVpbmcgZGVzdHJveWVkLiIpOworCis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5p
dGlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmI4
NWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBjcmVhdGVUZXN0UGx1Z2luKHRlc3ROYW1lKQorewor
ICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOworICAgIHBs
dWdpbi50eXBlID0gImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiOworICAgIHBs
dWdpbi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCB0ZXN0TmFtZSk7CisKKyAgICByZXR1cm4gcGx1Z2lu
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5IHJ1biBmcm9tIHdpdGhpbiBE
dW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3ROZXRzY2FwZVBsdWdpbi5cbiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdDJBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJs
ZWQiLCAiMSIpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyIsICIxIik7
CisKKyAgICB2YXIgYmVmb3JlRGF0ZSA9IG5ldyBEYXRlOworICAgIAorICAgIHBsdWdpbiA9IGNy
ZWF0ZVRlc3RQbHVnaW4oJ3Nsb3ctbnBwLW5ldycpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocGx1Z2luKTsKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQgc28gdGhlIHBsdWct
aW4gaW5zdGFudGlhdGVzCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwor
ICAgIAorICAgIHZhciBhZnRlckRhdGUgPSBuZXcgRGF0ZTsKKyAgICAKKyAgICBpZiAoYWZ0ZXJE
YXRlIC0gYmVmb3JlRGF0ZSA+IDUwMCkKKyAgICAgICAgdGVzdEZhaWxlZCgiQXBwZW5kaW5nIHBs
dWctaW4gZWxlbWVudCB0b29rIG92ZXIgNTAwbXMgKCIgKyAoYWZ0ZXJEYXRlIC0gYmVmb3JlRGF0
ZSkgKyAibXMpIHNvIHRoZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXplZCBz
eW5jaHJvbm91c2x5Iik7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCJBcHBlbmRpbmcg
cGx1Zy1pbiBlbGVtZW50IHRvb2sgdW5kZXIgNTAwbXMsIHBsdWctaW4gaW5pdGlhbGl6aW5nIGFz
eW5jaHJvbm91c2x5LiIpOworICAgIAorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGxvYWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAo
NTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9uZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nl
c3MiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbG93L3Jlc291cmNlcy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9u
LW11bHRpcGxlLWZpbmlzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjZhZmJhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlv
bi1tdWx0aXBsZS1maW5pc2guaHRtbApAQCAtMCwwICsxLDMzIEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgZmluaXNo
ZXMgdGhlIHRlc3QgYW5kIHNlZSdzIGhvdyBtdWNoIHRpbWUgcGFzc2VkLjxicj4KK09ubHkgb25l
IG9mIHRoZSAyMCBwbHVnLWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBf
RGVzdHJveSBydW4gdG8gY29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuPGJyPgor
VGhlIG90aGVyIDE5IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gaW5zdGFudGlhdGVkIGF0IGFsbC48
YnI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRlZCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGFs
ZXJ0KCJDYW4gb25seSBiZSBydW4gdXNpbmcgV2ViS2l0VGVzdFJ1bm5lciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHZhciB0aW1lTGFwc2VkID0gKG5ldyBEYXRlKS52YWx1
ZU9mKCkgLSBzZXNzaW9uU3RvcmFnZS5iZWZvcmVEYXRlOworCisgICAgaWYgKHRpbWVMYXBzZWQg
PiAxMTAwKQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0
aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIG92ZXIgMTEwMG1zICgiICsgdGltZUxhcHNlZCArICJt
cykgc28gbW9yZSB0aGFuIG9uZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXpl
ZCBiZWZvcmUgYW55IHdlcmUgZGVzdHJveWVkLiIpOworICAgIGlmICh0aW1lTGFwc2VkIDwgNTUw
KQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0aGVuIG5h
dmlnYXRpbmcgYXdheSB0b29rIGxlc3MgdGhhbiA1NTBtcyAoIiArIHRpbWVMYXBzZWQgKyAibXMp
LiAgV2UgZXhwZWN0ZWQgYSBzaW5nbGUgcGx1Zy1pbiB0byBiZSBjcmVhdGVkIGFuZCB0aGVuIGRl
c3Ryb3llZCBhbmQgdGhhdCBkaWRuJ3QgaGFwcGVuLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVz
dFBhc3NlZCgiQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudHMgdGhlbiBuYXZpZ2F0aW5nIGF3YXkg
dG9vayBiZXR3ZWVuIDU1MG1zIGFuZCAxMTAwbXMgc3VnZ2VzdGluZyBhIHNpbmdsZSBwbHVnLWlu
IHdhcyBjcmVhdGVkIGFuZCB0aGVuIGRlc3Ryb3llZC4iKTsKKworICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTMwMDViNi4uN2Yw
ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMi0wOC0wMyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nlc3MgcGx1Zy1p
bnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIGEgcGx1Zy1pbiBoYXMgYmVlbiBkZWVtZWQgY2FwYWJsZSBvZiBhc3luY2hy
b25vdXMgaW5pdGlhbGl6YXRpb24gd2hlbiBydW4gb3V0IG9mIHByb2Nlc3MuLi4KKyAgICAgICAg
Li4udGhlbiBkbyB0aGF0IQorCisgICAgICAgIEFkZCBmbGFncyB0byBjb21tdW5pY2F0ZSB0aGF0
IHRoaXMgcGx1Z2luIGNyZWF0ZSBpcyBtZWFudCB0byBjcmVhdGUgYSBwbHVnLWluIGFscmVhZHkg
cmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGFuZAorICAgICAgICB0byBpbmNsdWRlIHdoZXRoZXIg
b3Igbm90IHRoZSBpbml0aWFsaXplIGNhbGwgc2hvdWxkIGluY2x1ZGUgYW4gYXJ0aWZpY2lhbCBk
ZWxheSAoZm9yIHRlc3RpbmcpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToK
KworICAgICAgICBBZGQgYSBmbGFnIGZvciB0aGUgVUkgUHJvY2VzcyB0byB0ZWxsIHRoZSBQbHVn
aW5Qcm9jZXNzIHRoYXQgaXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKworICAgICAgICBBbGxvdyB0aGUgVUkgUHJv
Y2VzcyB0byBwYXNzIGFsb25nIHdoZXRoZXIgdGhlIHBsdWctb24gc3VwcG9ydHMgYXN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGx1
Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBBbGxvdyB0aGUgUGx1Z2luIFBy
b2Nlc3MgdG8gcGFzcyB3aGV0aGVyIG9yIG5vdCBpdCBzdXBwb3J0cyBhc3luY2hyb25vdXMgaW5p
dGlhbGl6YXRpb24sIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZAorICAgICAgICBpbiB0aGUgVUkgUHJv
Y2VzcywgYWxvbmcgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6UGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVn
aW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAoUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBhIGZsYWcgc28g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHJlbWVtYmVyIHdoZXRoZXIgb3Igbm90IHRoZXkgc3Vw
cG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb246CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNldFN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKworICAgICAgICBD
cmVhdGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHdpdGggdGhlIGZsYWcgcGFzc2VkIGRvd24g
ZnJvbSB0aGUgUGx1Z2luUHJvY2VzcyBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGV5CisgICAgICAg
IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKToKKworICAgICAgICBSZXNwb25kaW5nIHRvIG1lc3NhZ2VzIGZyb20gdGhlIFdl
YlByb2Nlc3MsIG1vc3Qgb2YgdGhlIGhlYXZ5IGRlY2lzaW9uIG1ha2luZyBpbiBhc3luY2hyb25v
dXMgaW5pdGlhbGl6YXRpb24gaXMgaGVyZToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YXN5bmNocm9ub3VzSW5zdGFu
Y2VJRHNUb0lnbm9yZSk6IEEgc2V0IG9mIGluc3RhbmNlIElEcyB0byAqbm90KiBjcmVhdGUgYXN5
bmNocm9ub3VzbHkgbGF0ZXIgYmVjYXVzZSB3ZSBrbm93CisgICAgICAgICAgd2Ugbm8gbG9uZ2Vy
IG5lZWQgdG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbik6IElmIHRoZSBwbHVnLWluIGRvZXNuJ3QgZXhp
c3QgYnV0IGlzIGF3YWl0aW5nIGFzeW5jaHJvbm91cyBjcmVhdGlvbiwgZmxhZyAKKyAgICAgICAg
ICB0aGlzIGluc3RhbmNlIElEIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwp
OiBSZW5hbWVkIGZyb20gY3JlYXRlUGx1Z2luLCBhY3R1YWxseSBkb2VzIHRoZSBwbHVnLWluIGNy
ZWF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1
Z2luKTogQWRkcyB0aGUgaW5zdGFuY2UgSUQgdG8gdGhlICJhc3luY2hyb25vdXMgaWdub3JlIHNl
dCIgdGhlbiBjYWxscyBjcmVhdGVQbHVnaW5JbnRlcm5hbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KTogSWYgdGhlIGlu
c3RhbmNlIElEIGlzIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLCByZW1vdmUgaXQg
ZnJvbSB0aGUKKyAgICAgICAgICBzZXQgYW5kIGRvIG5vdGhpbmcgZWxzZS4gT3RoZXJ3aXNlLCBw
ZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBzZW5kIHRoZSBhc3luY2hyb25vdXMg
cmVzdWx0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0
aGF0IGFsbCBwbHVnLWluIHR5cGVzIG11c3QgaW1wbGVtZW50OgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFBsdWdpbik6CisKKyAgICAgICAgQWRkIGhl
bHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0aGF0IHBsdWctaW4gY29udHJv
bGxlcnMgY2FuIG92ZXJyaWRlOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5D
b250cm9sbGVyLmg6CisgICAgICAgIChQbHVnaW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpbkNvbnRyb2xsZXI6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5h
YmxlZCk6CisKKyAgICAgICAgR2l2ZSBQbHVnaW5Qcm94eXMgdGhlIGFiaWxpdHkgdG8gaW5pdGlh
bGl6ZSBlaXRoZXIgYXN5bmNocm9ub3VzbHkgb3Igc3luY2hyb25vdXNseSwgYW5kIGFsc28gdGhl
IGFiaWxpdHkgdG8gc3luY2hyb25vdXNseQorICAgICAgICB3YWl0IGZvciBwcmV2aW91c2x5IGFz
eW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiAoaW4gY2FzZSB0aGVpciBQbHVnaW5TY3JpcHRPYmpl
Y3QgaXMgcmVxdWlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKTogU3RvcmUgdGhlIHBsdWdpbiBj
cmVhdGlvbiBwYXJhbWV0ZXJzIGFzIGEgbWVtYmVyLCBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gdHJ5
IHN5bmNocm9ub3VzCisgICAgICAgICAgb3IgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNhbkluaXRp
YWxpemVBc3luY2hyb25vdXNseSk6IEFuc3dlciBiYXNlZCBvbiBwcmVmZXJlbmNlcyBhbmQgd2hh
dCB0aGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gc2F5cworICAgICAgICAgIHRoYXQgaXQgc3Vw
cG9ydHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojp3YWl0Rm9yQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOiBTeW5jaHJvbm91c2x5IHdhaXQgb24gaW5pdGlhbGl6YXRpb24gd2hl
biBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICB3YXMgcHJldmlvdXNseSBy
ZXF1ZXN0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplU3luY2hy
b25vdXNseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4p
OiBEb3VibGUtY2hlY2sgdGhhdCB3ZSdyZSBzdGlsbCBleHBlY3RpbmcgYXN5bmNocm9ub3VzIGlu
aXRpYWxpemF0aW9uLCB0aGVuIGNhbGwKKyAgICAgICAgICB0aHJvdWdoIHRvIGRpZENyZWF0ZVBs
dWdpbkludGVybmFsLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6ZGlkQ3JlYXRlUGx1
Z2luSW50ZXJuYWwpOiBIYW5kbGUgY29tcGxldGlvbiBvZiBpbml0aWFsaXphdGlvbiAoYm90aCBz
eW5jaHJvbm91c2x5IGFuZCBhc3luY2hyb25vdXNseSkKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbik6IERvdWJsZS1jaGVjayB0aGF0IHdlJ3JlIHN0
aWxsIGV4cGVjdGluZyBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24sIHRoZW4gY2FsbAorICAg
ICAgICAgIHRocm91Z2ggdG8gZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6IEhh
bmRsZSBmYWlsdXJlIHRvIGluaXRpYWxpemUgKGJvdGggc3luY2hyb25vdXNseSBhbmQgYXN5bmNo
cm9ub3VzbHkpCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkZXN0cm95KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc0luaXRpYWxpemluZ0FzeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFBsdWdpblByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp+UGx1Z2luVmlldyk6IEFsd2F5cyBk
ZXN0cm95IHRoZSBwbHVnLWluIGV2ZW4gaWYgaXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0
LCBhcyBpdCBtaWdodCBiZSBpbml0aWFsaXppbmcKKyAgICAgICAgICByaWdodCBub3cuCisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmluaXRpYWxpemVQbHVnaW4pOiBEb24ndCBoYW5kbGUg
dGhlIHJlc3VsdCBvZiBpbml0aWFsaXphdGlvbiBpbW1lZGlhdGVseS4gQnJlYWsgdGhhdCBvdXQg
aW4gdG8gdHdvCisgICAgICAgICAgbWV0aG9kcyB0aGF0IHdpbGwgYmUgY2FsbGVkIGxhdGVyLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZGlkRmFpbFRv
SW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmRpZEluaXRp
YWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzY3JpcHRPYmplY3Qp
OiBJZiB3ZSB0cnVseSBuZWVkIHRoZSBzY3JpcHQgb2JqZWN0LCB0aGVuIHdhaXQgZm9yIGEgc3lu
Y2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWctaW4uCisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojph
cnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHNob3VsZG4ndCBiZSBjYWxsZWQgaW4gdGhlIFBsdWdpblBy
b2Nlc3MsIG9ubHkgaW4gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAoUGx1Z2luQ29udHJvbGxlclByb3h5KToKKworICAgICAgICBOZXRzY2FwZVBsdWdp
biBpcyBmb3IgaW4tcHJvY2VzcyBwbHVnLWluczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhaXRGb3JBc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc0luaXRpYWxp
emluZ0FzeW5jaHJvbm91c2x5KToKKworICAgICAgICBCdWlsdC1pbiBQREZWaWV3IGlzIGN1cnJl
bnRseSBvbmx5IGluLXByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9C
dWlsdEluUERGVmlldy5oOgorICAgICAgICAoQnVpbHRJblBERlZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpCdWlsdEluUERGVmlldzo6d2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OmlzSW5pdGlhbGl6aW5nQXN5bmNocm9u
b3VzbHkpOgorCiAyMDEyLTA4LTA2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdIEltcHJvdmVtZW50cyBmb3IgdGhlIG5ldyBz
cGVsbC1jaGVja2luZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCAyNGE4Y2VlLi5hYjYwZjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCkBAIC0zMTcsNiArMzE3LDE4IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aWxsU2VuZEV2ZW50VG9QbHVnaW4oKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Cit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCit7Cisg
ICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIHBsdWdpbiBpbiB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkKK3sKKyAgICAvLyBUaGlz
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgcGx1Z2luIGluIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZmxvYXQgUGx1Z2luQ29udHJvbGxlclBy
b3h5Ojpjb250ZW50c1NjYWxlRmFjdG9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZW50c1NjYWxl
RmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggYTRhZjU0My4uNDZkYTFhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC05MCw2
ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRFdmVudFRvUGx1Z2luKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOWU5NzQuLmJjMmU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTM3LDYgKzM3LDggQEAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMoKQogICAgICwgd2luZG93TlBPYmplY3RJRCgwKQogICAgICwgY29udGVu
dHNTY2FsZUZhY3RvcigxKQogICAgICwgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKGZhbHNlKQorICAgICwgYXJ0aWZp
Y2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGZhbHNlKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTUxLDYgKzUzLDggQEAgdm9pZCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVzZXJBZ2VudCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNv
bnRlbnRzU2NhbGVGYWN0b3IpOwogICAgIGVuY29kZXItPmVuY29kZShpc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpOworICAgIGVuY29kZXItPmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29t
cGxldGUpOworICAgIGVuY29kZXItPmVuY29kZShhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRp
b25EZWxheUVuYWJsZWQpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IGVuY29kZXItPmVuY29kZShpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKQEAgLTc3
LDYgKzgxLDEyIEBAIGJvb2wgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbHVnaW5DCiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzdWx0LmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hc3luY2hyb25vdXNDcmVh
dGlvbkluY29tcGxldGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggZmNkNTM0OS4uNmYwNWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC02MCw2ICs2MCwxMiBAQCBz
dHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIC8vIFdoZXRoZXIgcHJpdmF0
ZSBicm93c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24uCiAgICAg
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgCisgICAgLy8gSWYgcmVxdWVzdGlu
ZyBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiwgd2hldGhlciB0aGlzIHBsdWdpbiBoYWQgcHJl
dmlvdXNseSBiZWVuIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseQorICAgIGJvb2wgYXN5bmNocm9u
b3VzQ3JlYXRpb25JbmNvbXBsZXRlOworCisgICAgLy8gU2ltdWxhdGVkIGluaXRpYWxpemF0aW9u
IGRlbGF5IHRlc3QgYXN5bmNocm9ub3VzIHBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgIGJvb2wg
YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFdoZXRoZXIgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCmluZGV4IGJiMWIzYjguLjQzNDYxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApAQCAtMzIsOCArMzIsOSBAQAogI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1
ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC03NCw2ICs3NSw3IEBAIFBsdWdpblByb2Nlc3MmIFBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpCiAKIFBsdWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3MoKQogICAg
IDogQ2hpbGRQcm9jZXNzKHNodXRkb3duVGltZW91dCkKKyAgICAsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
LCBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydChNQUNIX1BPUlRfTlVMTCkKICNlbmRpZgpA
QCAtMTU5LDYgKzE2MSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblBy
b2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAgICAgQVNTRVJUKCFt
X3BsdWdpbk1vZHVsZSk7CiAKICAgICBtX3BsdWdpblBhdGggPSBwYXJhbWV0ZXJzLnBsdWdpblBh
dGg7CisgICAgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uID0gcGFy
YW1ldGVycy5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAg
cGxhdGZvcm1Jbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQpAQCAtMTc3LDcgKzE4MCw3IEBAIHZv
aWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBD
b3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgaW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwg
U09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7CkBAIC0yMDksNyArMjEyLDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAogICAgIENv
cmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pLCAwKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA2MzNiYjQxLi5iY2Jk
MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApA
QCAtOTksNiArOTksOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwbHVnLWluIG1vZHVsZS4KICAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1Z2luTW9kdWxlOwogICAgIAorICAg
IGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOworICAgIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQogICAgIC8v
IFRoZSBNYWNoIHBvcnQgdXNlZCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuCiAgICAgbWFj
aF9wb3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDVh
ZTgwYjkuLjMxZmI5NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAi
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQ
bHVnaW5Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CiAKIHVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODUsNiArODYsMTIgQEAgc3RhdGljIENvbm5lY3Rp
b25TdGFjayYgY29ubmVjdGlvblN0YWNrKCkKICAgICByZXR1cm4gY29ubmVjdGlvblN0YWNrOwog
fQogCitzdGF0aWMgSGFzaFNldDx1aW50NjRfdD4mIGFzeW5jaHJvbm91c0luc3RhbmNlSURzVG9J
Z25vcmUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDx1aW50NjRfdD4sIGlu
c3RhbmNlcywgKCkpOworICAgIHJldHVybiBpbnN0YW5jZXM7Cit9CisKIFBhc3NSZWZQdHI8V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUoQ29yZUlQQzo6
Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcikKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IFdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVy
KSk7CkBAIC0xNjAsNiArMTY3LDExIEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJl
Y2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvCiB7CiAgICAg
Q29ubmVjdGlvblN0YWNrOjpDdXJyZW50Q29ubmVjdGlvblB1c2hlciBjdXJyZW50Q29ubmVjdGlv
bihjb25uZWN0aW9uU3RhY2soKSwgY29ubmVjdGlvbik7CiAKKyAgICBpZiAobWVzc2FnZUlELmlz
PENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlByb2Nlc3NDb25uZWN0aW9uPigpKSB7CisgICAgICAg
IGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2Fn
ZUlELCBhcmd1bWVudHMpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFhcmd1
bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDExICsyMjAsMjAgQEAgdm9pZCBXZWJQcm9jZXNzQ29u
bmVjdGlvbjo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopCiAgICAgICAgIGRlc3Ryb3lQ
bHVnaW5Db250cm9sbGVyUHJveHkocGx1Z2luQ29udHJvbGxlcnNbaV0pOwogfQogCi12b2lkIFdl
YlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNl
SUQpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBs
dWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKQogewog
ICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVn
aW5Db250cm9sbGVycy5nZXQocGx1Z2luSW5zdGFuY2VJRCk7Ci0gICAgQVNTRVJUKHBsdWdpbkNv
bnRyb2xsZXJQcm94eSk7Ci0KKyAgICAKKyAgICAvLyBJZiB0aGVyZSBpcyBubyBQbHVnaW5Db250
cm9sbGVyUHJveHkgdGhlbiB0aGlzIHBsdWctaW4gZG9lc24ndCBleGlzdCB5ZXQgYW5kIHdlIHBy
b2JhYmx5IGhhdmUgbm90aGluZyB0byBkby4KKyAgICBpZiAoIXBsdWdpbkNvbnRyb2xsZXJQcm94
eSkgeworICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIHdlJ3JlIHN1cHBvc2VkIHRvIGRlc3Ryb3kg
d2FzIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseSBhbmQgZG9lc24ndCBleGlzdCB5ZXQsCisgICAg
ICAgIC8vIHdlIG5lZWQgdG8gZmxhZyB0aGUgaW5zdGFuY2UgSUQgc28gaXQgaXMgbm90IGNyZWF0
ZWQgbGF0ZXIuCisgICAgICAgIGlmIChhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpCisg
ICAgICAgICAgICBhc3luY2hyb25vdXNJbnN0YW5jZUlEc1RvSWdub3JlKCkuYWRkKHBsdWdpbklu
c3RhbmNlSUQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBk
ZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiB9CiAK
QEAgLTIyNSw3ICsyNDYsNyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpzeW5jTWVzc2Fn
ZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikKIHsKIH0KIAotdm9pZCBXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVu
dHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQordm9pZCBXZWJQcm9jZXNzQ29ubmVj
dGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJz
JiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50
cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7CiAgICAgT3duUHRyPFBsdWdpbkNv
bnRyb2xsZXJQcm94eT4gcGx1Z2luQ29udHJvbGxlclByb3h5ID0gUGx1Z2luQ29udHJvbGxlclBy
b3h5OjpjcmVhdGUodGhpcywgY3JlYXRpb25QYXJhbWV0ZXJzKTsKIApAQCAtMjQ3LDYgKzI2OCw1
OCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvbgogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMm
IGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRz
LCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKK3sKKyAgICBQbHVnaW5Db250cm9sbGVy
UHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1fcGx1Z2luQ29udHJvbGxlcnMuZ2V0KGNy
ZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKKworICAgIC8vIFRoZSBwbHVnLWlu
IHdlJ3JlIGJlaW5nIGFza2VkIHRvIGNyZWF0ZSBzeW5jaHJvbm91c2x5IG1pZ2h0IGFscmVhZHkg
ZXhpc3QgaWYgd2UganVzdCBmaW5pc2hlZCBjcmVhdGluZyBpdCBhc3luY2hyb25vdXNseS4KKyAg
ICAvLyBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBub3QgY3JlYXRlIGl0IGFnYWluIChidXQgYWxz
byBuZWVkIHRvIHJldHVybiB0aGUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY3JlYXRp
b24pLgorICAgIGlmIChwbHVnaW5Db250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgcmVzdWx0ID0g
dHJ1ZTsKKyAgICAgICAgd2FudHNXaGVlbEV2ZW50cyA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+
d2FudHNXaGVlbEV2ZW50cygpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgcmVtb3RlTGF5
ZXJDbGllbnRJRCA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+cmVtb3RlTGF5ZXJDbGllbnRJRCgp
OworI2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gVGhlIHBsdWdp
biB3ZSdyZSBzdXBwb3NlZCB0byBjcmVhdGUgbWlnaHQgaGF2ZSBiZWVuIHJlcXVlc3RlZCBhc3lu
Y2hyb25vdXNseSBiZWZvcmUuCisgICAgLy8gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY3JlYXRl
IGl0IHN5bmNocm9ub3VzbHkgbm93IGJ1dCBmbGFnIHRoZSBpbnN0YW5jZSBJRCBzbyB3ZSBkb24n
dCByZWNyZWF0ZSBpdCBhc3luY2hyb25vdXNseSBsYXRlci4KKyAgICBpZiAoY3JlYXRpb25QYXJh
bWV0ZXJzLmFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSkKKyAgICAgICAgYXN5bmNocm9u
b3VzSW5zdGFuY2VJRHNUb0lnbm9yZSgpLmFkZChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5z
dGFuY2VJRCk7CisgICAgCisgICAgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY3JlYXRpb25QYXJhbWV0
ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOworfQor
Cit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShj
b25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKK3sKKyAg
ICAvLyBJbiB0aGUgdGltZSBzaW5jZSB0aGlzIHBsdWdpbiB3YXMgcmVxdWVzdGVkIGFzeW5jaHJv
bm91c2x5IHdlIG1pZ2h0IGhhdmUgY3JlYXRlZCBpdCBzeW5jaHJvbm91c2x5IG9yIGRlc3Ryb3ll
ZCBpdC4KKyAgICAvLyBJbiBlaXRoZXIgb2YgdGhvc2UgY2FzZXMgd2UgbmVlZCB0byBpZ25vcmUg
dGhpcyBjcmVhdGlvbiByZXF1ZXN0LgorICAgIGlmIChhc3luY2hyb25vdXNJbnN0YW5jZUlEc1Rv
SWdub3JlKCkuY29udGFpbnMoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpKSB7
CisgICAgICAgIGFzeW5jaHJvbm91c0luc3RhbmNlSURzVG9JZ25vcmUoKS5yZW1vdmUoY3JlYXRp
b25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIC8vIFRoaXMgdmVyc2lvbiBvZiBDcmVhdGVQbHVnaW4gaXMgb25seSB1c2VkIGJ5
IHBsdWctaW5zIHRoYXQgYXJlIGtub3duIHRvIGJlaGF2ZSB3aGVuIHN0YXJ0ZWQgYXN5bmNocm9u
b3VzbHkuCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICB1aW50MzJfdCByZW1vdGVMYXll
ckNsaWVudElEID0gMDsKKyAgICBib29sIHdhbnRzV2hlZWxFdmVudHMgPSBmYWxzZTsKKyAgICAK
KyAgICBpZiAoY3JlYXRpb25QYXJhbWV0ZXJzLmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlv
bkRlbGF5RW5hYmxlZCkgeworICAgICAgICBzdGF0aWMgdW5zaWduZWQgaW50IGFydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5ID0gNTsKKyAgICAgICAgc2xlZXAoYXJ0aWZpY2lhbFBs
dWdpbkluaXRpYWxpemF0aW9uRGVsYXkpOworICAgIH0KKworICAgIGNyZWF0ZVBsdWdpbkludGVy
bmFsKGNyZWF0aW9uUGFyYW1ldGVycywgcmVzdWx0LCB3YW50c1doZWVsRXZlbnRzLCByZW1vdGVM
YXllckNsaWVudElEKTsKKworICAgIGlmICghcmVzdWx0KSB7CisgICAgICAgIG1fY29ubmVjdGlv
bi0+c2VuZFN5bmMoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpEaWRGYWlsVG9DcmVhdGVQbHVnaW4o
KSwgTWVzc2FnZXM6OlBsdWdpblByb3h5OjpEaWRGYWlsVG9DcmVhdGVQbHVnaW46OlJlcGx5KCks
IGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6OlBsdWdpblByb3h5
OjpEaWRDcmVhdGVQbHVnaW4od2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCks
IE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkQ3JlYXRlUGx1Z2luOjpSZXBseSgpLCBjcmVhdGlv
blBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dAogCiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNTKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oIGIvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IGYzODQ2NzEu
LjhkN2Y2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmgKQEAgLTY3LDkgKzY3LDEzIEBAIHByaXZhdGU6CiAgICAgdmlydHVh
bCB2b2lkIHN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJUEM6OkNvbm5lY3Rpb24qKTsKIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBkaWRSZWNlaXZlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNXZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1l
c3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwgT3duUHRyPENvcmVJUEM6OkFyZ3Vt
ZW50RW5jb2Rlcj4mKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQz
Ml90JiByZW1vdGVMYXllckNsaWVudElEKTsKLSAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0
X3QgcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgdm9pZCBjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNs
eShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmKTsKKyAgICB2b2lkIGRlc3Ryb3lQbHVn
aW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbklu
Y29tcGxldGUpOworICAgIAorICAgIHZvaWQgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZl
bnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CiAKICAgICBSZWZQdHI8Q29yZUlQ
Qzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCAwN2MzYzI3Li5mMWE4MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Q
cm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTI2
LDggKzI2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3NDb25uZWN0aW9uIHsKICAgICAjIENy
ZWF0ZXMgYSBwbHVnLWluIGluc3RhbmNlIHVzaW5nIHRoZSBnaXZlbiBjcmVhdGlvbiBwYXJhbWV0
ZXJzLgogICAgIENyZWF0ZVBsdWdpbihXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBw
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpIC0+IChib29sIHJlc3VsdCwgYm9vbCB3YW50c1doZWVs
RXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEKQogCisgICAgIyBDcmVhdGVzIGEg
cGx1Zy1pbiBpbnN0YW5jZSBhc3luY2hyb25vdXNseSB1c2luZyB0aGUgZ2l2ZW4gY3JlYXRpb24g
cGFyYW1ldGVycy4KKyAgICBDcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShXZWJLaXQ6OlBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyBwbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpCisKICAgICAjIERl
c3Ryb3lzIHRoZSBwbHVnLWluIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIGluc3RhbmNlIElELgot
ICAgIERlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCkgLT4gKCkKKyAgICBE
ZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3Vz
Q3JlYXRpb25JbmNvbXBsZXRlKSAtPiAoKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKaW5kZXggYzZjODdhNi4uMGYwMzZiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5jcHAKQEAgLTMzLDEyICszMywxNCBAQAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OlBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMoKQorICAgIDogc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbihmYWxzZSkKIHsKIH0KIAogdm9pZCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBlbmNvZGVyKSBjb25zdAogewogICAg
IGVuY29kZXItPmVuY29kZShwbHVnaW5QYXRoKTsKKyAgICBlbmNvZGVyLT5lbmNvZGUoc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAKICNpZiBQTEFURk9STShNQUMp
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhcmVudFByb2Nlc3NOYW1lKTsKQEAgLTUwLDYgKzUyLDgg
QEAgYm9vbCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQQzo6
QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLAogewogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJl
c3VsdC5wbHVnaW5QYXRoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rl
ci0+ZGVjb2RlKHJlc3VsdC5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9u
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGlmICgh
ZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5wYXJlbnRQcm9jZXNzTmFtZSkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmgKaW5kZXggNjJjZjRiYi4uY2ZhZWRjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyB7CiAgICAgc3RhdGljIGJvb2wgZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciosIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmKTsKIAogICAgIFN0cmlu
ZyBwbHVnaW5QYXRoOworICAgIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbjsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBTdHJpbmcgcGFyZW50UHJvY2Vzc05h
bWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0M2ZhMmY0Li5jOWUwMTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAK
QEAgLTEzNyw5ICsxMzcsOSBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGx1Z2luUHJvY2Vz
c0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJl
cGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNpZiBQTEFU
Rk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFD
SF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0
YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCksIGZhbHNlKTsKICNlbGlmIFVTRShV
TklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2ht
ZW50KCkpOworICAgICAgICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KCksIGZhbHNl
KTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CiAjZW5kaWYKQEAgLTIyOCw3ICsy
MjgsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nl
c3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogICAgIG1fbnVtUGVuZGluZ0Nvbm5lY3Rp
b25SZXF1ZXN0cyA9IDA7CiB9CiAKLXZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVX
ZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9u
SWRlbnRpZmllcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogewogICAg
IEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMuaXNFbXB0eSgpKTsKIApAQCAtMjM2
LDkgKzIzNiw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNz
Q29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50CiAgICAgUmVmUHRyPE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFrZUZpcnN0KCk7CiAKICNp
ZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25u
ZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSk7CisgICAg
cmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0
KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5J
bml0aWFsaXphdGlvbik7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VUUykKLSAgICByZXBs
eS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgcmVwbHktPnNlbmQoY29ubmVjdGlv
bklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwog
I2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IDBhNTFk
OWIuLmUwZmUxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xMDgsNyArMTA4LDcgQEAgcHJpdmF0ZToKIAog
ICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm9jZXNz
UHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENv
cmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIHZvaWQgZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nv
bm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYpOworICAgIHZvaWQgZGlkQ3JlYXRl
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYsIGJvb2wgc3Vw
cG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAgICAgdm9pZCBkaWRHZXRT
aXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBzaXRlcywgdWludDY0X3QgY2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXggN2I1OWFlZi4uMTgzY2IwYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMsNyArMjMsNyBAQAogI2lmIEVOQUJM
RShQTFVHSU5fUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUGx1Z2luUHJvY2Vzc1Byb3h5IHsKLSAg
ICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5l
Y3Rpb25JZGVudGlmaWVyKQorICAgIERpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKENvcmVJ
UEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIAogICAgIERpZEdldFNpdGVzV2l0aERhdGEoVmVj
dG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCkKICAgICBEaWRDbGVh
clNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbQpp
bmRleCAzNDg2ZGU0Li5kNGI0YmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KQEAgLTEx
OCw2ICsxMTgsOSBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlUHJvcGVydHlMaXN0
RmlsZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4pCiAKIHZvaWQgUGx1Z2luUHJvY2Vz
c1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVh
dGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAgLy8gRm9yIGtub3cgb25seSBGbGFz
aCBpcyBrbm93biB0byBiZWhhdmUgd2l0aCBhc3luY2hyb25vdXMgcGx1Zy1pbiBpbml0aWFsaXph
dGlvbi4KKyAgICBwYXJhbWV0ZXJzLnN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6
YXRpb24gPSBtX3BsdWdpbkluZm8uYnVuZGxlSWRlbnRpZmllciA9PSAiY29tLm1hY3JvbWVkaWEu
Rmxhc2ggUGxheWVyLnBsdWdpbiI7CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcp
ICYmIEhBVkUoSE9TVEVEX0NPUkVfQU5JTUFUSU9OKQogICAgIHBhcmFtZXRlcnMucGFyZW50UHJv
Y2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHByb2Nlc3NOYW1lXTsKICNp
ZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEwNzAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDll
N2I1MjkuLjg0ODA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQsNyArMzQsNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQcm9jZXNzUHJveHkgewogICAgIFNob3VsZFRlcm1pbmF0ZSgpIC0+IChib29sIHNob3VsZFRl
cm1pbmF0ZSkKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKLSAgICBHZXRQbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRoKSAtPiAoQ29yZUlQQzo6QXR0YWNo
bWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCisgICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24oV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29u
bmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSBE
ZWxheWVkCiAgICAgUGx1Z2luU3luY01lc3NhZ2VTZW5kVGltZWRPdXQoV1RGOjpTdHJpbmcgcGx1
Z2luUGF0aCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCmluZGV4IDFjNDljNjAuLmUw
NjM2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC01NCw2ICs1NCwxMCBAQCBwdWJsaWM6
CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdpbj4gZnJvbU5QUChOUFApOwog
CisgICAgLy8gSW4tcHJvY2VzcyBOZXRzY2FwZVBsdWdpbnMgZG9uJ3Qgc3VwcG9ydCBhc3luY2hy
b25vdXMgaW5pdGlhbGl6YXRpb24uCisgICAgdmlydHVhbCB2b2lkIHdhaXRGb3JBc3luY2hyb25v
dXNJbml0aWFsaXphdGlvbigpIHsgfQorICAgIHZpcnR1YWwgYm9vbCBpc0luaXRpYWxpemluZ0Fz
eW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKwogI2lmIFBMQVRGT1JNKE1B
QykKICAgICBOUEVycm9yIHNldERyYXdpbmdNb2RlbChOUERyYXdpbmdNb2RlbCk7CiAgICAgTlBF
cnJvciBzZXRFdmVudE1vZGVsKE5QRXZlbnRNb2RlbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5QREZWaWV3LmgKaW5kZXggNmQxMWM4
NS4uMGUxMGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BERi9CdWlsdEluUERGVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaApAQCAtNTAsNiArNTAsMTAgQEAgcHVibGljOgogCiAg
ICAgc3RhdGljIFdlYkNvcmU6OlBsdWdpbkluZm8gcGx1Z2luSW5mbygpOwogCisgICAgLy8gSW4t
cHJvY2VzcyBQREZWaWV3cyBkb24ndCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
bi4KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKCkg
eyB9CisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6aW5nQXN5bmNocm9ub3VzbHkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJ1aWx0SW5QREZW
aWV3KFdlYkZyYW1lKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW4uaAppbmRleCA1YmU4NGY0Li5lM2MxMDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbi5oCkBAIC04Myw2ICs4MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gU2V0
cyB0aGUgYWN0aXZlIHBsdWctaW4gY29udHJvbGxlciBhbmQgaW5pdGlhbGl6ZXMgdGhlIHBsdWct
aW4uCiAgICAgYm9vbCBpbml0aWFsaXplKFBsdWdpbkNvbnRyb2xsZXIqLCBjb25zdCBQYXJhbWV0
ZXJzJik7CiAKKyAgICAvLyBGb3JjZXMgc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgYSBw
bHVnaW4gcHJldmlvdXNseSBpbml0aWFsaXplZCBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFs
IHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBpc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KCkgY29uc3QgPSAwOworCiAgICAg
Ly8gRGVzdHJveXMgdGhlIHBsdWctaW4uCiAgICAgdm9pZCBkZXN0cm95UGx1Z2luKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9s
bGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oCmluZGV4IDQyYzI5NTkuLjQ0ZWEzMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtMTM4LDYgKzEzOCwxNSBA
QCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIgcHJpdmF0ZSBicm93c2luZyBpcyBl
bmFibGVkLgogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSA9IDA7
CisgICAgCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhc3luY2hyb25vdXMgcGx1Z2lu
IGluaXRpYWxpemF0aW9uIGlzIGVuYWJsZWQuCisgICAgdmlydHVhbCBib29sIGFzeW5jaHJvbm91
c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Cisg
ICAgCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBhc3luY2hyb25vdXMgcGx1Z2luIGlu
aXRpYWxpemF0aW9uIHNob3VsZCBiZSBhdHRlbXB0ZWQgZm9yIGFsbCBwbHVnaW5zLgorICAgIHZp
cnR1YWwgYm9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQ
bHVnaW5zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAKKyAgICAvLyBSZXR1cm5zIHRo
ZSBhcnRpY2lmaWNhbCBwbHVnaW4gZGVsYXkgdG8gdXNlIGZvciB0ZXN0aW5nIG9mIGFzeW5jaHJv
bm91cyBwbHVnaW4gaW5pdGlhbGl6YXRpb24uCisgICAgdmlydHVhbCBib29sIGFydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
CiAKICAgICAvLyBJbmNyZW1lbnRzIGEgY291bnRlciB0aGF0IHByZXZlbnRzIHRoZSBwbHVnLWlu
IGZyb20gYmVpbmcgZGVzdHJveWVkLgogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJv
bURlc3RydWN0aW9uKCkgPSAwOwpAQCAtMTUxLDYgKzE2MCw5IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50
NjRfdCB3aW5kb3dJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkSW5pdGlh
bGl6ZVBsdWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBs
dWdpbigpID0gMDsKKwogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVsYXlpbmcgZGVzdHJ1Y3Rp
b24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsK
ICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4MzM5YWQ0Li5jYzMx
M2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTczLDkgKzczLDEwIEBAIHN0YXRp
YyBkb3VibGUgZGVmYXVsdFN5bmNNZXNzYWdlVGltZW91dChjb25zdCBTdHJpbmcmIHBsdWdpblBh
dGgpCiAgICAgcmV0dXJuIHN5bmNNZXNzYWdlVGltZW91dDsKIH0KIAotUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50
aWZpZXIpCitQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRl
bnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1Bs
dWdpbkluaXRpYWxpemF0aW9uKQogICAgIDogbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFn
ZXIocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKQogICAgICwgbV9wbHVnaW5QYXRoKHBs
dWdpblBhdGgpCisgICAgLCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24oc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIHsKICAgICBtX2Nv
bm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDYxYzRhYzIuLmJjODY2ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw5ICs0Myw5IEBAIGNsYXNzIFBsdWdpblByb3h5OwogICAg
IAogY2xhc3MgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbj4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0
ZShQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9u
TWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlm
aWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rp
b24ocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9u
SWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpOwog
ICAgIH0KICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIApAQCAtNTgsOCArNTgsMTAg
QEAgcHVibGljOgogCiAgICAgTlBSZW1vdGVPYmplY3RNYXAqIG5wUmVtb3RlT2JqZWN0TWFwKCkg
Y29uc3QgeyByZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC5nZXQoKTsgfQogCisgICAgYm9vbCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOyB9CisKIHByaXZhdGU6
Ci0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmll
cik7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJ
ZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpAQCAtODIsNiAr
ODQsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFBsdWdpblByb3h5Kj4gbV9w
bHVnaW5zOwogCiAgICAgUmVmUHRyPE5QUmVtb3RlT2JqZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0
TWFwOworICAgIAorICAgIGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IGZkMTkwNmQuLjMzZDEyY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC01Nyw4ICs1Nyw5IEBAIFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblBy
b2Nlc3NDb25uZWN0CiAgICAgfQogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29u
bmVjdGlvbklkZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxp
emF0aW9uOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bihwbHVnaW5QYXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6
V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2Rl
ZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
KSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNzEsNyAr
NzIsNyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25N
YW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICByZXR1cm4gMDsKICNlbmRp
ZgogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0
aCwgY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0Fz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9u
cy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwogCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZDRhMzU0
OS4uZDNhZjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuY3BwCkBAIC02OCw2ICs2OCw3IEBAIFBsdWdpblByb3h5OjpQbHVnaW5Qcm94
eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAgLCBtX3dhaXRpbmdGb3JQYWludEluUmVz
cG9uc2VUb1VwZGF0ZShmYWxzZSkKICAgICAsIG1fd2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKICAg
ICAsIG1fcmVtb3RlTGF5ZXJDbGllbnRJRCgwKQorICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25v
dXNJbml0aWFsaXphdGlvbihmYWxzZSkKIHsKIH0KIApAQCAtOTMsMzggKzk0LDEwOSBAQCBib29s
IFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAg
ICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUg
cGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVyczsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMucGx1
Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKLSAgICBjcmVhdGlvblBhcmFtZXRl
cnMud2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05QT2JqZWN0SUQoKTsKLSAgICBjcmVhdGlvblBh
cmFtZXRlcnMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gICAgY3JlYXRpb25QYXJhbWV0ZXJz
LnVzZXJBZ2VudCA9IGNvbnRyb2xsZXIoKS0+dXNlckFnZW50KCk7Ci0gICAgY3JlYXRpb25QYXJh
bWV0ZXJzLmNvbnRlbnRzU2NhbGVGYWN0b3IgPSBjb250ZW50c1NjYWxlRmFjdG9yKCk7Ci0gICAg
Y3JlYXRpb25QYXJhbWV0ZXJzLmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGNvbnRyb2xsZXIo
KS0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzID0gYWRvcHRQdHIobmV3IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyk7CisK
KyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQg
PSBtX3BsdWdpbkluc3RhbmNlSUQ7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOworICAgIG1fcGVuZGlu
Z1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAg
bV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT51c2VyQWdlbnQgPSBjb250cm9sbGVy
KCktPnVzZXJBZ2VudCgpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+
Y29udGVudHNTY2FsZUZhY3RvciA9IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKKyAgICBtX3BlbmRp
bmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGNv
bnRyb2xsZXIoKS0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgbV9wZW5kaW5nUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxh
eUVuYWJsZWQgPSBjb250cm9sbGVyKCktPmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRl
bGF5RW5hYmxlZCgpOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGNy
ZWF0aW9uUGFyYW1ldGVycy5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkID0gY29udHJv
bGxlcigpLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CisgICAgbV9wZW5kaW5n
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
ID0gY29udHJvbGxlcigpLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CiAjZW5k
aWYKIAorICAgIGlmICghY2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkpCisgICAgICAgIHJl
dHVybiBpbml0aWFsaXplU3luY2hyb25vdXNseSgpOworCisgICAgLy8gUmVtZW1iZXIgdGhhdCB3
ZSB0cmllZCB0byBjcmVhdGUgdGhpcyBwbHVnLWluIGFzeW5jaHJvbm91c2x5IGluIGNhc2Ugd2Ug
bmVlZCB0byBjcmVhdGUgaXQgc3luY2hyb25vdXNseSBsYXRlci4KKyAgICBtX3dhaXRpbmdPbkFz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKKyAgICBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKCptX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMuZ2V0KCkpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoY3JlYXRp
b25QYXJhbWV0ZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KworYm9vbCBQbHVnaW5Qcm94eTo6Y2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gY29udHJvbGxlcigpLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXph
dGlvbkVuYWJsZWQoKSAmJiAobV9jb25uZWN0aW9uLT5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uKCkgfHwgY29udHJvbGxlcigpLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkpOworfQorCit2b2lkIFBsdWdpblByb3h5
Ojp3YWl0Rm9yQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oKQoreworICAgIEFTU0VSVCghbV9p
c1N0YXJ0ZWQpOworICAgIEFTU0VSVChtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKTsKKworICAgIGluaXRpYWxpemVTeW5jaHJvbm91c2x5KCk7Cit9CisKK2Jvb2wgUGx1Z2lu
UHJveHk6OmluaXRpYWxpemVTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5n
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKTsKKworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy0+YXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlID0gbV93YWl0aW5nT25B
c3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAg
IGJvb2wgd2FudHNXaGVlbEV2ZW50cyA9IGZhbHNlOwogICAgIHVpbnQzMl90IHJlbW90ZUxheWVy
Q2xpZW50SUQgPSAwOworICAgIAorICAgIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0
ZXJzKCptX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuZ2V0KCkpOwogCi0gICAgaWYg
KCFtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nl
c3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW4oY3JlYXRpb25QYXJhbWV0ZXJzKSwgTWVzc2FnZXM6
OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OlJlcGx5KHJlc3VsdCwgd2FudHNX
aGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCksIDApIHx8ICFyZXN1bHQpIHsKLSAgICAg
ICAgbV9jb25uZWN0aW9uLT5yZW1vdmVQbHVnaW5Qcm94eSh0aGlzKTsKLSAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIH0KKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbihwYXJhbWV0
ZXJzKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OlJlcGx5
KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCksIDApIHx8ICFy
ZXN1bHQpCisgICAgICAgIGRpZEZhaWxUb0NyZWF0ZVBsdWdpbkludGVybmFsKCk7CisgICAgZWxz
ZQorICAgICAgICBkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbCh3YW50c1doZWVsRXZlbnRzLCByZW1v
dGVMYXllckNsaWVudElEKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQogCit2b2lkIFBs
dWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4oYm9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJf
dCByZW1vdGVMYXllckNsaWVudElEKQoreworICAgIC8vIFdlIG1pZ2h0IGhhdmUgdHJpZWQgdG8g
Y3JlYXRlIHRoZSBwbHVnLWluIHN5Y2hyb25vdXNseSB3aGlsZSB3YWl0aW5nIG9uIHRoZSBhc3lu
Y2hyb25vdXMgcmVwbHksCisgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgaWdub3JlIHRo
aXMgbWVzc2FnZS4KKyAgICBpZiAoIW1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRp
b24pCisgICAgICAgIHJldHVybjsKKworICAgIGRpZENyZWF0ZVBsdWdpbkludGVybmFsKHdhbnRz
V2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOworfQorCit2b2lkIFBsdWdpblByb3h5
OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW4oKQoreworICAgIC8vIFdlIG1pZ2h0IGhhdmUgdHJpZWQg
dG8gY3JlYXRlIHRoZSBwbHVnLWluIHN5Y2hyb25vdXNseSB3aGlsZSB3YWl0aW5nIG9uIHRoZSBh
c3luY2hyb25vdXMgcmVwbHksCisgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgaWdub3Jl
IHRoaXMgbWVzc2FnZS4KKyAgICBpZiAoIW1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRpZEZhaWxUb0NyZWF0ZVBsdWdpbkludGVy
bmFsKCk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OmRpZENyZWF0ZVBsdWdpbkludGVybmFsKGJv
b2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkKK3sKICAg
ICBtX3dhbnRzV2hlZWxFdmVudHMgPSB3YW50c1doZWVsRXZlbnRzOwogICAgIG1fcmVtb3RlTGF5
ZXJDbGllbnRJRCA9IHJlbW90ZUxheWVyQ2xpZW50SUQ7CiAgICAgbV9pc1N0YXJ0ZWQgPSB0cnVl
OworICAgIGNvbnRyb2xsZXIoKS0+ZGlkSW5pdGlhbGl6ZVBsdWdpbigpOwogCi0gICAgcmV0dXJu
IHRydWU7CisgICAgLy8gV2hldGhlciBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5LCB0
aGlzIHBsdWctaW4gd2FzIGNyZWF0ZWQgYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIHJlbWVtYmVy
CisgICAgLy8gYW55dGhpbmcgYWJvdXQgaG93LgorICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy5jbGVhcigpOworICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24gPSBmYWxzZTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJveSgpCit2b2lkIFBs
dWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCgpCiB7Ci0gICAgQVNTRVJU
KG1faXNTdGFydGVkKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVBsdWdpblByb3h5KHRoaXMp
OworICAgIGNvbnRyb2xsZXIoKS0+ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpOwogCi0gICAg
bV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbihtX3BsdWdpbkluc3RhbmNlSUQpLCBNZXNzYWdlczo6
V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46OlJlcGx5KCksIDApOworICAgIC8v
IFdoZXRoZXIgc3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSwgdGhpcyBwbHVnLWluIGZh
aWxlZCB0byBjcmVhdGUgYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIHJlbWVtYmVyCisgICAgLy8g
YW55dGhpbmcgYWJvdXQgaG93LgorICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy5jbGVhcigpOworICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBm
YWxzZTsKK30KKwordm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJveSgpCit7CisgICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6RGVzdHJveVBsdWdpbihtX3BsdWdpbkluc3RhbmNlSUQsIG1fd2FpdGluZ09uQXN5bmNocm9u
b3VzSW5pdGlhbGl6YXRpb24pLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ry
b3lQbHVnaW46OlJlcGx5KCksIDApOwogCiAgICAgbV9pc1N0YXJ0ZWQgPSBmYWxzZTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBi
ZTA3Y2FhLi5hZTRmMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7
CiBjbGFzcyBOUFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247CiAK
K3N0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CisKIGNsYXNzIFBsdWdpblByb3h5IDog
cHVibGljIFBsdWdpbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJv
eHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpAQCAtNjAsMTEgKzYyLDE2IEBA
IHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6
Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciogYXJndW1lbnRzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJv
eHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJ
UEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7
CiAKKyAgICBib29sIGlzSW5pdGlhbGl6aW5nQXN5bmNocm9ub3VzbHkoKSBjb25zdCB7IHJldHVy
biBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOyB9CisKIHByaXZhdGU6CiAg
ICAgZXhwbGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoKTsKIAogICAg
IC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMm
KTsKKyAgICBib29sIGluaXRpYWxpemVTeW5jaHJvbm91c2x5KCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRlc3Ryb3koKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoV2ViQ29yZTo6R3JhcGhpY3NDb250
ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlSZWN0KTsKICAgICB2aXJ0dWFsIFBh
c3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgpOwpAQCAtMTQxLDYgKzE0OCwxNCBA
QCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNs
aXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYKIAorICAgIGJvb2wgY2FuSW5pdGlh
bGl6ZUFzeW5jaHJvbm91c2x5KCkgY29uc3Q7CisKKyAgICB2b2lkIGRpZENyZWF0ZVBsdWdpbihi
b29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQpOworICAg
IHZvaWQgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCk7CisgICAgCisgICAgdm9pZCBkaWRDcmVhdGVQ
bHVnaW5JbnRlcm5hbChib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90ZUxheWVy
Q2xpZW50SUQpOworICAgIHZvaWQgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwoKTsKKwog
ICAgIFN0cmluZyBtX3BsdWdpblBhdGg7CiAKICAgICBSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5l
Y3Rpb24+IG1fY29ubmVjdGlvbjsKQEAgLTE3NCw2ICsxODksOSBAQCBwcml2YXRlOgogCiAgICAg
Ly8gVGhlIGNsaWVudCBJRCBmb3IgdGhlIENBIGxheWVyIGluIHRoZSBwbHVnLWluIHByb2Nlc3Mu
IFdpbGwgYmUgMCBpZiB0aGUgcGx1Zy1pbiBpcyBub3QgYSBDQSBwbHVnLWluLgogICAgIHVpbnQz
Ml90IG1fcmVtb3RlTGF5ZXJDbGllbnRJRDsKKyAgICAKKyAgICBPd25QdHI8UGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzPiBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CisgICAgYm9v
bCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOwogCiAjaWYgUExBVEZPUk0o
TUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdpbkxheWVyOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2Vz
LmluCmluZGV4IGEyZWYzMTkuLjQ1M2MwZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KQEAgLTc0LDYg
Kzc0LDEyIEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb3h5IHsKICAgICAjIFVwZGF0ZSBnZW9tZXRy
eSBvZiB3aW5kb3dlZCBwbHVnaW4gd2lkZ2V0CiAgICAgV2luZG93ZWRQbHVnaW5HZW9tZXRyeURp
ZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwgV2ViQ29yZTo6SW50UmVjdCBjbGlw
UmVjdCwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKKworICAgICMgVGVsbHMgdGhlIFdlYlBy
b2Nlc3MgdGhhdCB0aGUgcGx1Zy1pbiB3YXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIGFzeW5j
aHJvbm91c2x5CisgICAgRGlkQ3JlYXRlUGx1Z2luKGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWlu
dDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkgLT4gKCkKKyAgICAKKyAgICAjIFRlbGxzIHRoZSBX
ZWJQcm9jZXNzIHRoYXQgdGhlIHBsdWctaW4gZmFpbGVkIHRvIGluaXRpYWxpemUuCisgICAgRGlk
RmFpbFRvQ3JlYXRlUGx1Z2luKCkgLT4gKCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggMDcyYTY5Yy4uY2I2
MTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcApAQCAtMjYwLDYgKzI2MCw3IEBAIFBsdWdpblZpZXc6OlBsdWdpblZpZXcoUGFzc1Jl
ZlB0cjxIVE1MUGx1Z0luRWxlbWVudD4gcGx1Z2luRWxlbWVudCwgUGFzc1JlZlB0cjxQCiAgICAg
LCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpKQogICAgICwgbV9wYXJh
bWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCisgICAgLCBt
X2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oZmFsc2UpCiAgICAgLCBtX2lz
V2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydChmYWxzZSkKICAgICAsIG1faXNCZWluZ0Rlc3Ryb3ll
ZChmYWxzZSkKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3RzVGltZXIoUnVuTG9vcDo6bWFpbigp
LCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCkKQEAgLTI4
NSw3ICsyODYsNyBAQCBQbHVnaW5WaWV3Ojp+UGx1Z2luVmlldygpCiAgICAgZm9yIChGcmFtZUxv
YWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRnJhbWVMb2Fkcy5iZWdpbigpLCBlbmQgPSBt
X3BlbmRpbmdGcmFtZUxvYWRzLmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgIGl0LT5m
aXJzdC0+c2V0TG9hZExpc3RlbmVyKDApOwogCi0gICAgaWYgKG1fcGx1Z2luICYmIG1faXNJbml0
aWFsaXplZCkgeworICAgIGlmIChtX3BsdWdpbikgewogICAgICAgICBtX2lzQmVpbmdEZXN0cm95
ZWQgPSB0cnVlOwogICAgICAgICBtX3BsdWdpbi0+ZGVzdHJveVBsdWdpbigpOwogICAgICAgICBt
X2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTsKQEAgLTQ4NywxNSArNDg4LDIwIEBAIHZvaWQgUGx1
Z2luVmlldzo6aW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9Ci0gICAgCi0gICAgaWYgKCFtX3BsdWdpbi0+aW5pdGlhbGl6ZSh0aGlzLCBtX3BhcmFtZXRl
cnMpKSB7Ci0gICAgICAgIC8vIFdlIGZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBwbHVnLWluLgot
ICAgICAgICBtX3BsdWdpbiA9IDA7CiAKLSAgICAgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4obV9wYXJhbWV0ZXJzLm1p
bWVUeXBlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9CisgICAgbV9wbHVnaW4tPmluaXRpYWxp
emUodGhpcywgbV9wYXJhbWV0ZXJzKTsKICAgICAKKyAgICAvLyBQbHVnLWluIGluaXRpYWxpemF0
aW9uIGNvbnRpbnVlZCBpbiBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkgb3IgZGlkSW5pdGlh
bGl6ZVBsdWdpbigpLgorfQorCit2b2lkIFBsdWdpblZpZXc6OmRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW4oKQoreworICAgIG1fcGx1Z2luID0gMDsKKyAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbihtX3BhcmFtZXRlcnMu
bWltZVR5cGUpKTsKK30KKwordm9pZCBQbHVnaW5WaWV3OjpkaWRJbml0aWFsaXplUGx1Z2luKCkK
K3sKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAt
NTM5LDYgKzU0NSwxOSBAQCBQbGF0Zm9ybUxheWVyKiBQbHVnaW5WaWV3OjpwbGF0Zm9ybUxheWVy
KCkgY29uc3QKIAogSlNPYmplY3QqIFBsdWdpblZpZXc6OnNjcmlwdE9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIC8vIElmIHdlJ3JlIGFscmVhZHkgd2FpdGluZyBm
b3Igc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWdpbiwKKyAgICAvLyBjYWxs
cyB0byBzY3JpcHRPYmplY3QoKSBhcmUgZnJvbSB0aGUgcGx1Zy1pbiBpdHNlbGYgYW5kIG5lZWQg
dG8gcmV0dXJuIDA7CisgICAgaWYgKG1faXNXYWl0aW5nRm9yU3luY2hyb25vdXNJbml0aWFsaXph
dGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBJZiB0aGUgcGx1Zy1pbiBleGlzdHMg
YnV0IGlzIG5vdCBpbml0aWFsaXplZCB0aGVuIHdlJ3JlIHN0aWxsIGluaXRpYWxpemluZyBhc3lu
Y2hyb25vdXNseS4KKyAgICAvLyBXZSBuZWVkIHRvIHdhaXQgaGVyZSB1bnRpbCBpbml0aWFsaXph
dGlvbiBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBmYWlsZWQuCisgICAgaWYgKG1fcGx1Z2luLT5p
c0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KCkpIHsKKyAgICAgICAgbV9pc1dhaXRpbmdGb3JT
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKKyAgICAgICAgbV9wbHVnaW4tPndhaXRG
b3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigpOworICAgICAgICBtX2lzV2FpdGluZ0ZvclN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKKyAgICB9CisKICAgICAvLyBUaGUgcGx1
Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0byBpbml0aWFsaXplLgogICAgIGlm
ICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKICAgICAgICAgcmV0dXJuIDA7CkBAIC0x
MjUwLDYgKzEyNjksMjEgQEAgYm9vbCBQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQoKQogICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQog
Citib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxl
ZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+YXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb25FbmFibGVkKCk7Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucygpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fd2ViUGFnZS0+YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVk
Rm9yQWxsUGx1Z2lucygpOworfQorCitib29sIFBsdWdpblZpZXc6OmFydGlmaWNpYWxQbHVnaW5J
bml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFn
ZS0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCk7Cit9CisKIHZv
aWQgUGx1Z2luVmlldzo6cHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpCiB7CiAgICAgaWYg
KCFtX2lzQmVpbmdEZXN0cm95ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblZpZXcuaAppbmRleCBmMTAxYjJmLi5hNmEwNTZjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKQEAgLTgwLDcgKzgwLDYgQEAg
cHJpdmF0ZToKICAgICB2aXJ0dWFsIH5QbHVnaW5WaWV3KCk7CiAKICAgICB2b2lkIGluaXRpYWxp
emVQbHVnaW4oKTsKLSAgICB2b2lkIGRlc3Ryb3lQbHVnaW4oKTsKIAogICAgIHZvaWQgdmlld0dl
b21ldHJ5RGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB2aWV3VmlzaWJpbGl0eURpZENoYW5nZSgpOwpA
QCAtMTY0LDYgKzE2Myw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNG
b3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5n
KTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6
OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpOwog
ICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICB2aXJ0dWFs
IGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKCkgY29uc3Q7Cisg
ICAgdmlydHVhbCBib29sIGFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZEZv
ckFsbFBsdWdpbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgYXJ0aWZpY2lhbFBsdWdpbklu
aXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHByb3Rl
Y3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgdW5wcm90ZWN0UGx1
Z2luRnJvbURlc3RydWN0aW9uKCk7CiAjaWYgUExVR0lOX0FSQ0hJVEVDVFVSRShYMTEpCkBAIC0x
NzEsNiArMTczLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYK
IAorICAgIHZpcnR1YWwgdm9pZCBkaWRJbml0aWFsaXplUGx1Z2luKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKTsKKwogICAgIC8vIFdlYkZyYW1lOjpMb2Fk
TGlzdGVuZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZChXZWJGcmFtZSopOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFtZSosIGJvb2wgd2FzQ2FuY2VsbGVkKTsK
QEAgLTE4MSw2ICsxODYsNyBAQCBwcml2YXRlOgogICAgIFBsdWdpbjo6UGFyYW1ldGVycyBtX3Bh
cmFtZXRlcnM7CiAgICAgCiAgICAgYm9vbCBtX2lzSW5pdGlhbGl6ZWQ7CisgICAgYm9vbCBtX2lz
V2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247CiAgICAgYm9vbCBtX2lzV2FpdGlu
Z1VudGlsTWVkaWFDYW5TdGFydDsKICAgICBib29sIG1faXNCZWluZ0Rlc3Ryb3llZDsKIApkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGZkYmU2NTMu
LmFhZDEzNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0wMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nlc3MgcGx1Zy1pbnMgc2hvdWxkIHN1cHBv
cnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05Mjkx
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBh
IHBsdWctaW4gd2l0aCBhbiBOUFBfTmV3IHRoYXQgdGFrZXMgNTUwbXMgKGEgcmVhc29uYWJsZSB0
cmFkZS1vZmYgYmV0d2VlbiBhIHNvbGlkIHRlc3QgYW5kIGEgc2xvdyBydW5uaW5nIHRlc3QpCisg
ICAgICAgIGZvciB0ZXN0aW5nIGFzeW5jaHJvbm91cyBwbHVnLWluIGluaXRpYWxpemF0aW9uLgor
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4v
VGVzdHMvU2xvd05QUE5ldy5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaC4KKyAgICAgICAgKFNsb3dO
UFBOZXcpOgorICAgICAgICAoU2xvd05QUE5ldzo6U2xvd05QUE5ldyk6CisgICAgICAgIChTbG93
TlBQTmV3OjpOUFBfTmV3KToKKwogMjAxMi0wOC0wNiAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgV1RSIHNob3VsZCBiZSBhYmxlIHRvIGxvYWQgZXh0ZXJu
YWwgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVy
VHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA0ODEwNjRlLi5iNzkw
NGY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTY3LDYgKzY3LDcgQEAKIAkJNDQz
NzczMEUxMjVDQkMzNjAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4MzBGQ0RFODY0
MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAqLzsgfTsKIAkJNDQzNzczMEYx
MjVDQkM0RDAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBOTk3ODIwRkNERTg2NDAwNTgwRjEw
IC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovOyB9OwogCQk0QUQ2QTExNDEzQzgxMjQwMDBF
QTk3MzcgLyogRm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDRBRDZBMTEzMTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwICov
OyB9OworCQk1MTA2ODAzRTE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTA2ODAzRDE1Q0M3QjEw
MDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi87IH07CiAJCTUxNUY0MjlDMTVDMDc4NzIwMDdD
OEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTVGNDI5QjE1
QzA3ODcyMDA3QzhGOTAgLyogUGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRlc0FsbFByb3Bl
cnRpZXMuY3BwICovOyB9OwogCQk1MTg1RjZCMjEwNzE0RTA3MDA3QUEzOTMgLyogSGlzdG9yeURl
bGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4NUY2OUYxMDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJ
NTE4NUY2QjMxMDcxNEUxMjAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NUY2OUUxMDcxNEE1NzAwN0FB
MzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oICovOyB9OwpAQCAtMjc4LDYgKzI3OSw3IEBACiAJCTQ0
QTk5NzgyMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXJjaGl2ZUR1bXBTdXBwb3J0Lmg7IHBhdGgg
PSBjZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNDRBOTk3ODMwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBv
cnQuY3BwOyBwYXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGb3JtVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA2ODAzRDE1Q0M3QjEwMDAxQThBMjMgLyog
U2xvd05QUE5ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBTbG93
TlBQTmV3LmNwcDsgcGF0aCA9IFRlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93TlBQTmV3LmNw
cDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1MTVGNDI5QjE1QzA3ODcyMDA3QzhG
OTAgLyogUGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGx1Z2luU2NyaXB0YWJsZU9iamVj
dE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTg1RjY5RTEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5oOyBwYXRoID0gbWFjL0hp
c3RvcnlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RjY5RjEw
NzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IGZpbGVF
bmNvZGluZyA9IDQ7IG5hbWUgPSBIaXN0b3J5RGVsZWdhdGUubW07IHBhdGggPSBtYWMvSGlzdG9y
eURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNTUzLDYgKzU1NSw3
IEBACiAJCQkJMUFEOUQyRkQxMjAyODQwOTAwMUE3MEQxIC8qIFBsdWdpblNjcmlwdGFibGVOUE9i
amVjdEludm9rZURlZmF1bHQuY3BwICovLAogCQkJCTUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAv
KiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi8sCiAJ
CQkJMUExRTQyOTYxNDExNDFDNDAwMzg4NzU4IC8qIFByaXZhdGVCcm93c2luZy5jcHAgKi8sCisJ
CQkJNTEwNjgwM0QxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dOUFBOZXcuY3BwICovLAogCQkJKTsK
IAkJCXBhdGggPSBUZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05MDIsNiAr
OTA1LDcgQEAKIAkJCQkxQTFFNDI5ODE0MTE0MUM0MDAzODg3NTggLyogUHJpdmF0ZUJyb3dzaW5n
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjZDMzUxMTQ1NzZBOTIwMDk5QTExNSAvKiBDb250
ZW50c1NjYWxlRmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNUY0MjlDMTVDMDc4NzIw
MDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTA2ODAzRTE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05Q
UE5ldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93TlBQTmV3LmNwcCBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93TlBQTmV3LmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDJhNzZhCi0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3Bw
CkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiUGx1Z2luVGVzdC5oIgor
CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKK2NsYXNzIFNs
b3dOUFBOZXcgOiBwdWJsaWMgUGx1Z2luVGVzdCB7CitwdWJsaWM6CisgICAgU2xvd05QUE5ldyhO
UFAgbnBwLCBjb25zdCBzdHJpbmcmIGlkZW50aWZpZXIpCisgICAgICAgIDogUGx1Z2luVGVzdChu
cHAsIGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgCisgICAg
dmlydHVhbCBOUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBwbHVnaW5UeXBlLCB1aW50MTZfdCBt
b2RlLCBpbnQxNl90IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hhciogYXJndltdLCBOUFNhdmVkRGF0
YSAqc2F2ZWQpCisgICAgeworICAgICAgICB1c2xlZXAoNTUwMDAwKTsKKyAgICAgICAgcmV0dXJu
IE5QRVJSX05PX0VSUk9SOworICAgIH0KK307CisKK3N0YXRpYyBQbHVnaW5UZXN0OjpSZWdpc3Rl
cjxTbG93TlBQTmV3PiBzbG93TlBQTmV3KCJzbG93LW5wcC1uZXciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156781</attachid>
            <date>2012-08-06 16:06:37 -0700</date>
            <delta_ts>2012-08-06 16:23:02 -0700</delta_ts>
            <desc>Part 3 - v4 - Add the feature (with some tests) (and Qt build fixes) (and possibly GTK build fixes)</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68634</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYTAyZGE2Li44MzAxZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgt
MDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1w
cm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
bgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA1OTg1OTQ+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gbWFrZSBzdXJlIGEgcGx1Zy1pbiB3
aXRoIGEgbG9uZyBydW5uaW5nIE5QUF9OZXcgZG9lcyBub3QgYmxvY2sgdGhlIHdlYiB0aHJlYWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMt
cGx1Z2luLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVs
dGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Ns
b3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3Vz
LXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbDogQWRkZWQuCisKIDIw
MTItMDgtMDYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1l
ZEZsb3dSZW1vdmVkIiBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5
bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxMWM1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4t
aW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IGxv
YWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAoNTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9u
ZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nlc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudCB0b29rIHVuZGVyIDUwMG1z
LCBwbHVnLWluIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdp
bi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0
aW9uLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MDk2ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0
aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIGZpbmlzaGVzIHRoZSB0ZXN0
IGFuZCBzZWUncyBob3cgbXVjaCB0aW1lIHBhc3NlZC4KK09ubHkgb25lIG9mIHRoZSAyMCBwbHVn
LWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBfRGVzdHJveSBydW4gdG8g
Y29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuCitUaGUgb3RoZXIgMTkgc2hvdWxk
IG5ldmVyIGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQgYXQgYWxsLgorUEFTUyBBcHBlbmRpbmcgcGx1
Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIGJldHdlZW4gNTUwbXMgYW5k
IDExMDBtcyBzdWdnZXN0aW5nIGEgc2luZ2xlIHBsdWctaW4gd2FzIGNyZWF0ZWQgYW5kIHRoZW4g
ZGVzdHJveWVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25v
dXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2Y4MWNhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlh
bGl6YXRpb24tbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
Y3JlYXRlVGVzdFBsdWdpbih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94
LXdlYmtpdC10ZXN0LW5ldHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0Jywg
dGVzdE5hbWUpOworCisgICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
IAoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMg
dGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCBy
ZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkIiwgIjEiKTsKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0MkFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMiLCAiMSIpOworCisgICAgLy8gR3JhYiB0aGUgdGltZSBi
ZWZvcmUgd2UgY3JlYXRlIGFuZCBhcHBlbmQgMjAgc2xvdyBwbHVnLWlucy4KKyAgICBzZXNzaW9u
U3RvcmFnZS5iZWZvcmVEYXRlID0gKG5ldyBEYXRlKS52YWx1ZU9mKCk7CisgICAgCisgICAgdmFy
IHBsdWdpbnMgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kp
CisgICAgICAgIHBsdWdpbnNbaV0gPSBjcmVhdGVUZXN0UGx1Z2luKCdzbG93LW5wcC1uZXcnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpCisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQocGx1Z2luc1tpXSk7CisKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQg
c28gdGhlIHBsdWctaW5zIGluc3RhbnRpYXRlCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOworICAgIAorICAgIHNldFRpbWVvdXQoImxvY2F0aW9uLmhyZWYgPSAncmVzb3Vy
Y2VzL2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVsdGlwbGUtZmluaXNoLmh0
bWwnIiwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGxvYWRpbmcgbXVsdGlwbGUg
c2xvdyBpbml0aWFsaXppbmcgcGx1Zy1pbnMgYW5kIHRoZW4gbmF2aWdhdGluZyBvbmx5IGhhcyB0
byB3YWl0IGZvciBvbmUgb2YgdGhlbSB0byBmaW5pc2ggYmVpbmcgZGVzdHJveWVkLiIpOworCis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5p
dGlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmI4
NWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBjcmVhdGVUZXN0UGx1Z2luKHRlc3ROYW1lKQorewor
ICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOworICAgIHBs
dWdpbi50eXBlID0gImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiOworICAgIHBs
dWdpbi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCB0ZXN0TmFtZSk7CisKKyAgICByZXR1cm4gcGx1Z2lu
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5IHJ1biBmcm9tIHdpdGhpbiBE
dW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3ROZXRzY2FwZVBsdWdpbi5cbiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdDJBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJs
ZWQiLCAiMSIpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyIsICIxIik7
CisKKyAgICB2YXIgYmVmb3JlRGF0ZSA9IG5ldyBEYXRlOworICAgIAorICAgIHBsdWdpbiA9IGNy
ZWF0ZVRlc3RQbHVnaW4oJ3Nsb3ctbnBwLW5ldycpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocGx1Z2luKTsKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQgc28gdGhlIHBsdWct
aW4gaW5zdGFudGlhdGVzCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwor
ICAgIAorICAgIHZhciBhZnRlckRhdGUgPSBuZXcgRGF0ZTsKKyAgICAKKyAgICBpZiAoYWZ0ZXJE
YXRlIC0gYmVmb3JlRGF0ZSA+IDUwMCkKKyAgICAgICAgdGVzdEZhaWxlZCgiQXBwZW5kaW5nIHBs
dWctaW4gZWxlbWVudCB0b29rIG92ZXIgNTAwbXMgKCIgKyAoYWZ0ZXJEYXRlIC0gYmVmb3JlRGF0
ZSkgKyAibXMpIHNvIHRoZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXplZCBz
eW5jaHJvbm91c2x5Iik7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCJBcHBlbmRpbmcg
cGx1Zy1pbiBlbGVtZW50IHRvb2sgdW5kZXIgNTAwbXMsIHBsdWctaW4gaW5pdGlhbGl6aW5nIGFz
eW5jaHJvbm91c2x5LiIpOworICAgIAorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGxvYWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAo
NTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9uZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nl
c3MiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbG93L3Jlc291cmNlcy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9u
LW11bHRpcGxlLWZpbmlzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjZhZmJhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlv
bi1tdWx0aXBsZS1maW5pc2guaHRtbApAQCAtMCwwICsxLDMzIEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgZmluaXNo
ZXMgdGhlIHRlc3QgYW5kIHNlZSdzIGhvdyBtdWNoIHRpbWUgcGFzc2VkLjxicj4KK09ubHkgb25l
IG9mIHRoZSAyMCBwbHVnLWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBf
RGVzdHJveSBydW4gdG8gY29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuPGJyPgor
VGhlIG90aGVyIDE5IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gaW5zdGFudGlhdGVkIGF0IGFsbC48
YnI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRlZCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGFs
ZXJ0KCJDYW4gb25seSBiZSBydW4gdXNpbmcgV2ViS2l0VGVzdFJ1bm5lciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHZhciB0aW1lTGFwc2VkID0gKG5ldyBEYXRlKS52YWx1
ZU9mKCkgLSBzZXNzaW9uU3RvcmFnZS5iZWZvcmVEYXRlOworCisgICAgaWYgKHRpbWVMYXBzZWQg
PiAxMTAwKQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0
aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIG92ZXIgMTEwMG1zICgiICsgdGltZUxhcHNlZCArICJt
cykgc28gbW9yZSB0aGFuIG9uZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXpl
ZCBiZWZvcmUgYW55IHdlcmUgZGVzdHJveWVkLiIpOworICAgIGlmICh0aW1lTGFwc2VkIDwgNTUw
KQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0aGVuIG5h
dmlnYXRpbmcgYXdheSB0b29rIGxlc3MgdGhhbiA1NTBtcyAoIiArIHRpbWVMYXBzZWQgKyAibXMp
LiAgV2UgZXhwZWN0ZWQgYSBzaW5nbGUgcGx1Zy1pbiB0byBiZSBjcmVhdGVkIGFuZCB0aGVuIGRl
c3Ryb3llZCBhbmQgdGhhdCBkaWRuJ3QgaGFwcGVuLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVz
dFBhc3NlZCgiQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudHMgdGhlbiBuYXZpZ2F0aW5nIGF3YXkg
dG9vayBiZXR3ZWVuIDU1MG1zIGFuZCAxMTAwbXMgc3VnZ2VzdGluZyBhIHNpbmdsZSBwbHVnLWlu
IHdhcyBjcmVhdGVkIGFuZCB0aGVuIGRlc3Ryb3llZC4iKTsKKworICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTMwMDViNi4uN2Yw
ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMi0wOC0wMyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nlc3MgcGx1Zy1p
bnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIGEgcGx1Zy1pbiBoYXMgYmVlbiBkZWVtZWQgY2FwYWJsZSBvZiBhc3luY2hy
b25vdXMgaW5pdGlhbGl6YXRpb24gd2hlbiBydW4gb3V0IG9mIHByb2Nlc3MuLi4KKyAgICAgICAg
Li4udGhlbiBkbyB0aGF0IQorCisgICAgICAgIEFkZCBmbGFncyB0byBjb21tdW5pY2F0ZSB0aGF0
IHRoaXMgcGx1Z2luIGNyZWF0ZSBpcyBtZWFudCB0byBjcmVhdGUgYSBwbHVnLWluIGFscmVhZHkg
cmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGFuZAorICAgICAgICB0byBpbmNsdWRlIHdoZXRoZXIg
b3Igbm90IHRoZSBpbml0aWFsaXplIGNhbGwgc2hvdWxkIGluY2x1ZGUgYW4gYXJ0aWZpY2lhbCBk
ZWxheSAoZm9yIHRlc3RpbmcpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToK
KworICAgICAgICBBZGQgYSBmbGFnIGZvciB0aGUgVUkgUHJvY2VzcyB0byB0ZWxsIHRoZSBQbHVn
aW5Qcm9jZXNzIHRoYXQgaXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKworICAgICAgICBBbGxvdyB0aGUgVUkgUHJv
Y2VzcyB0byBwYXNzIGFsb25nIHdoZXRoZXIgdGhlIHBsdWctb24gc3VwcG9ydHMgYXN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGx1
Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBBbGxvdyB0aGUgUGx1Z2luIFBy
b2Nlc3MgdG8gcGFzcyB3aGV0aGVyIG9yIG5vdCBpdCBzdXBwb3J0cyBhc3luY2hyb25vdXMgaW5p
dGlhbGl6YXRpb24sIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZAorICAgICAgICBpbiB0aGUgVUkgUHJv
Y2VzcywgYWxvbmcgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6UGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVn
aW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAoUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBhIGZsYWcgc28g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHJlbWVtYmVyIHdoZXRoZXIgb3Igbm90IHRoZXkgc3Vw
cG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb246CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNldFN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKworICAgICAgICBD
cmVhdGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHdpdGggdGhlIGZsYWcgcGFzc2VkIGRvd24g
ZnJvbSB0aGUgUGx1Z2luUHJvY2VzcyBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGV5CisgICAgICAg
IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKToKKworICAgICAgICBSZXNwb25kaW5nIHRvIG1lc3NhZ2VzIGZyb20gdGhlIFdl
YlByb2Nlc3MsIG1vc3Qgb2YgdGhlIGhlYXZ5IGRlY2lzaW9uIG1ha2luZyBpbiBhc3luY2hyb25v
dXMgaW5pdGlhbGl6YXRpb24gaXMgaGVyZToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YXN5bmNocm9ub3VzSW5zdGFu
Y2VJRHNUb0lnbm9yZSk6IEEgc2V0IG9mIGluc3RhbmNlIElEcyB0byAqbm90KiBjcmVhdGUgYXN5
bmNocm9ub3VzbHkgbGF0ZXIgYmVjYXVzZSB3ZSBrbm93CisgICAgICAgICAgd2Ugbm8gbG9uZ2Vy
IG5lZWQgdG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbik6IElmIHRoZSBwbHVnLWluIGRvZXNuJ3QgZXhp
c3QgYnV0IGlzIGF3YWl0aW5nIGFzeW5jaHJvbm91cyBjcmVhdGlvbiwgZmxhZyAKKyAgICAgICAg
ICB0aGlzIGluc3RhbmNlIElEIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwp
OiBSZW5hbWVkIGZyb20gY3JlYXRlUGx1Z2luLCBhY3R1YWxseSBkb2VzIHRoZSBwbHVnLWluIGNy
ZWF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1
Z2luKTogQWRkcyB0aGUgaW5zdGFuY2UgSUQgdG8gdGhlICJhc3luY2hyb25vdXMgaWdub3JlIHNl
dCIgdGhlbiBjYWxscyBjcmVhdGVQbHVnaW5JbnRlcm5hbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KTogSWYgdGhlIGlu
c3RhbmNlIElEIGlzIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLCByZW1vdmUgaXQg
ZnJvbSB0aGUKKyAgICAgICAgICBzZXQgYW5kIGRvIG5vdGhpbmcgZWxzZS4gT3RoZXJ3aXNlLCBw
ZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBzZW5kIHRoZSBhc3luY2hyb25vdXMg
cmVzdWx0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0
aGF0IGFsbCBwbHVnLWluIHR5cGVzIG11c3QgaW1wbGVtZW50OgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFBsdWdpbik6CisKKyAgICAgICAgQWRkIGhl
bHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0aGF0IHBsdWctaW4gY29udHJv
bGxlcnMgY2FuIG92ZXJyaWRlOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5D
b250cm9sbGVyLmg6CisgICAgICAgIChQbHVnaW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpbkNvbnRyb2xsZXI6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5h
YmxlZCk6CisKKyAgICAgICAgR2l2ZSBQbHVnaW5Qcm94eXMgdGhlIGFiaWxpdHkgdG8gaW5pdGlh
bGl6ZSBlaXRoZXIgYXN5bmNocm9ub3VzbHkgb3Igc3luY2hyb25vdXNseSwgYW5kIGFsc28gdGhl
IGFiaWxpdHkgdG8gc3luY2hyb25vdXNseQorICAgICAgICB3YWl0IGZvciBwcmV2aW91c2x5IGFz
eW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiAoaW4gY2FzZSB0aGVpciBQbHVnaW5TY3JpcHRPYmpl
Y3QgaXMgcmVxdWlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKTogU3RvcmUgdGhlIHBsdWdpbiBj
cmVhdGlvbiBwYXJhbWV0ZXJzIGFzIGEgbWVtYmVyLCBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gdHJ5
IHN5bmNocm9ub3VzCisgICAgICAgICAgb3IgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNhbkluaXRp
YWxpemVBc3luY2hyb25vdXNseSk6IEFuc3dlciBiYXNlZCBvbiBwcmVmZXJlbmNlcyBhbmQgd2hh
dCB0aGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gc2F5cworICAgICAgICAgIHRoYXQgaXQgc3Vw
cG9ydHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojp3YWl0Rm9yQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOiBTeW5jaHJvbm91c2x5IHdhaXQgb24gaW5pdGlhbGl6YXRpb24gd2hl
biBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICB3YXMgcHJldmlvdXNseSBy
ZXF1ZXN0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplU3luY2hy
b25vdXNseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4p
OiBEb3VibGUtY2hlY2sgdGhhdCB3ZSdyZSBzdGlsbCBleHBlY3RpbmcgYXN5bmNocm9ub3VzIGlu
aXRpYWxpemF0aW9uLCB0aGVuIGNhbGwKKyAgICAgICAgICB0aHJvdWdoIHRvIGRpZENyZWF0ZVBs
dWdpbkludGVybmFsLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6ZGlkQ3JlYXRlUGx1
Z2luSW50ZXJuYWwpOiBIYW5kbGUgY29tcGxldGlvbiBvZiBpbml0aWFsaXphdGlvbiAoYm90aCBz
eW5jaHJvbm91c2x5IGFuZCBhc3luY2hyb25vdXNseSkKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbik6IERvdWJsZS1jaGVjayB0aGF0IHdlJ3JlIHN0
aWxsIGV4cGVjdGluZyBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24sIHRoZW4gY2FsbAorICAg
ICAgICAgIHRocm91Z2ggdG8gZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6IEhh
bmRsZSBmYWlsdXJlIHRvIGluaXRpYWxpemUgKGJvdGggc3luY2hyb25vdXNseSBhbmQgYXN5bmNo
cm9ub3VzbHkpCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkZXN0cm95KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc0luaXRpYWxpemluZ0FzeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFBsdWdpblByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp+UGx1Z2luVmlldyk6IEFsd2F5cyBk
ZXN0cm95IHRoZSBwbHVnLWluIGV2ZW4gaWYgaXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0
LCBhcyBpdCBtaWdodCBiZSBpbml0aWFsaXppbmcKKyAgICAgICAgICByaWdodCBub3cuCisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmluaXRpYWxpemVQbHVnaW4pOiBEb24ndCBoYW5kbGUg
dGhlIHJlc3VsdCBvZiBpbml0aWFsaXphdGlvbiBpbW1lZGlhdGVseS4gQnJlYWsgdGhhdCBvdXQg
aW4gdG8gdHdvCisgICAgICAgICAgbWV0aG9kcyB0aGF0IHdpbGwgYmUgY2FsbGVkIGxhdGVyLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZGlkRmFpbFRv
SW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmRpZEluaXRp
YWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzY3JpcHRPYmplY3Qp
OiBJZiB3ZSB0cnVseSBuZWVkIHRoZSBzY3JpcHQgb2JqZWN0LCB0aGVuIHdhaXQgZm9yIGEgc3lu
Y2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWctaW4uCisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojph
cnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHNob3VsZG4ndCBiZSBjYWxsZWQgaW4gdGhlIFBsdWdpblBy
b2Nlc3MsIG9ubHkgaW4gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAoUGx1Z2luQ29udHJvbGxlclByb3h5KToKKworICAgICAgICBOZXRzY2FwZVBsdWdp
biBpcyBmb3IgaW4tcHJvY2VzcyBwbHVnLWluczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhaXRGb3JBc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc0luaXRpYWxp
emluZ0FzeW5jaHJvbm91c2x5KToKKworICAgICAgICBCdWlsdC1pbiBQREZWaWV3IGlzIGN1cnJl
bnRseSBvbmx5IGluLXByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9C
dWlsdEluUERGVmlldy5oOgorICAgICAgICAoQnVpbHRJblBERlZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpCdWlsdEluUERGVmlldzo6d2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OmlzSW5pdGlhbGl6aW5nQXN5bmNocm9u
b3VzbHkpOgorCiAyMDEyLTA4LTA2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdIEltcHJvdmVtZW50cyBmb3IgdGhlIG5ldyBz
cGVsbC1jaGVja2luZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCAyNGE4Y2VlLi5hYjYwZjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCkBAIC0zMTcsNiArMzE3LDE4IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aWxsU2VuZEV2ZW50VG9QbHVnaW4oKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Cit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCit7Cisg
ICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIHBsdWdpbiBpbiB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkKK3sKKyAgICAvLyBUaGlz
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgcGx1Z2luIGluIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZmxvYXQgUGx1Z2luQ29udHJvbGxlclBy
b3h5Ojpjb250ZW50c1NjYWxlRmFjdG9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZW50c1NjYWxl
RmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggYTRhZjU0My4uNDZkYTFhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC05MCw2
ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRFdmVudFRvUGx1Z2luKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOWU5NzQuLmJjMmU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTM3LDYgKzM3LDggQEAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMoKQogICAgICwgd2luZG93TlBPYmplY3RJRCgwKQogICAgICwgY29udGVu
dHNTY2FsZUZhY3RvcigxKQogICAgICwgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKGZhbHNlKQorICAgICwgYXJ0aWZp
Y2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGZhbHNlKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTUxLDYgKzUzLDggQEAgdm9pZCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVzZXJBZ2VudCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNv
bnRlbnRzU2NhbGVGYWN0b3IpOwogICAgIGVuY29kZXItPmVuY29kZShpc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpOworICAgIGVuY29kZXItPmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29t
cGxldGUpOworICAgIGVuY29kZXItPmVuY29kZShhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRp
b25EZWxheUVuYWJsZWQpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IGVuY29kZXItPmVuY29kZShpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKQEAgLTc3
LDYgKzgxLDEyIEBAIGJvb2wgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbHVnaW5DCiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzdWx0LmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hc3luY2hyb25vdXNDcmVh
dGlvbkluY29tcGxldGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggZmNkNTM0OS4uNmYwNWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC02MCw2ICs2MCwxMiBAQCBz
dHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIC8vIFdoZXRoZXIgcHJpdmF0
ZSBicm93c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24uCiAgICAg
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgCisgICAgLy8gSWYgcmVxdWVzdGlu
ZyBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiwgd2hldGhlciB0aGlzIHBsdWdpbiBoYWQgcHJl
dmlvdXNseSBiZWVuIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseQorICAgIGJvb2wgYXN5bmNocm9u
b3VzQ3JlYXRpb25JbmNvbXBsZXRlOworCisgICAgLy8gU2ltdWxhdGVkIGluaXRpYWxpemF0aW9u
IGRlbGF5IHRlc3QgYXN5bmNocm9ub3VzIHBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgIGJvb2wg
YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFdoZXRoZXIgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCmluZGV4IGJiMWIzYjguLjQzNDYxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApAQCAtMzIsOCArMzIsOSBAQAogI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1
ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC03NCw2ICs3NSw3IEBAIFBsdWdpblByb2Nlc3MmIFBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpCiAKIFBsdWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3MoKQogICAg
IDogQ2hpbGRQcm9jZXNzKHNodXRkb3duVGltZW91dCkKKyAgICAsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
LCBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydChNQUNIX1BPUlRfTlVMTCkKICNlbmRpZgpA
QCAtMTU5LDYgKzE2MSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblBy
b2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAgICAgQVNTRVJUKCFt
X3BsdWdpbk1vZHVsZSk7CiAKICAgICBtX3BsdWdpblBhdGggPSBwYXJhbWV0ZXJzLnBsdWdpblBh
dGg7CisgICAgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uID0gcGFy
YW1ldGVycy5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAg
cGxhdGZvcm1Jbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQpAQCAtMTc3LDcgKzE4MCw3IEBAIHZv
aWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBD
b3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgaW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwg
U09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7CkBAIC0yMDksNyArMjEyLDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAogICAgIENv
cmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pLCAwKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA2MzNiYjQxLi5iY2Jk
MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApA
QCAtOTksNiArOTksOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwbHVnLWluIG1vZHVsZS4KICAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1Z2luTW9kdWxlOwogICAgIAorICAg
IGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOworICAgIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQogICAgIC8v
IFRoZSBNYWNoIHBvcnQgdXNlZCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuCiAgICAgbWFj
aF9wb3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDVh
ZTgwYjkuLmUwYzgyOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNCw2ICszNCw4IEBACiAjaW5jbHVkZSAi
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQ
bHVnaW5Qcm94eU1lc3NhZ2VzLmgiCisjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9SdW5Mb29wLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtODUsNiArODcs
MTIgQEAgc3RhdGljIENvbm5lY3Rpb25TdGFjayYgY29ubmVjdGlvblN0YWNrKCkKICAgICByZXR1
cm4gY29ubmVjdGlvblN0YWNrOwogfQogCitzdGF0aWMgSGFzaFNldDx1aW50NjRfdD4mIGFzeW5j
aHJvbm91c0luc3RhbmNlSURzVG9JZ25vcmUoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
SGFzaFNldDx1aW50NjRfdD4sIGluc3RhbmNlcywgKCkpOworICAgIHJldHVybiBpbnN0YW5jZXM7
Cit9CisKIFBhc3NSZWZQdHI8V2ViUHJvY2Vzc0Nvbm5lY3Rpb24+IFdlYlByb2Nlc3NDb25uZWN0
aW9uOjpjcmVhdGUoQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRl
bnRpZmllcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlByb2Nlc3NDb25uZWN0aW9u
KGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CkBAIC0xNjAsNiArMTY4LDExIEBAIHZvaWQgV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qIGNv
bm5lY3Rpb24sIENvCiB7CiAgICAgQ29ubmVjdGlvblN0YWNrOjpDdXJyZW50Q29ubmVjdGlvblB1
c2hlciBjdXJyZW50Q29ubmVjdGlvbihjb25uZWN0aW9uU3RhY2soKSwgY29ubmVjdGlvbik7CiAK
KyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3NhZ2VDbGFzc1dlYlByb2Nlc3NDb25u
ZWN0aW9uPigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlc3RpbmF0aW9uSUQoKSkgewogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjA4LDExICsyMjEsMjAg
QEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xvc2UoQ29yZUlQQzo6Q29ubmVjdGlv
biopCiAgICAgICAgIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVyUHJveHkocGx1Z2luQ29udHJvbGxl
cnNbaV0pOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luKHVp
bnQ2NF90IHBsdWdpbkluc3RhbmNlSUQpCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpkZXN0
cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3Jl
YXRpb25JbmNvbXBsZXRlKQogewogICAgIFBsdWdpbkNvbnRyb2xsZXJQcm94eSogcGx1Z2luQ29u
dHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVycy5nZXQocGx1Z2luSW5zdGFuY2VJRCk7
Ci0gICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7Ci0KKyAgICAKKyAgICAvLyBJZiB0
aGVyZSBpcyBubyBQbHVnaW5Db250cm9sbGVyUHJveHkgdGhlbiB0aGlzIHBsdWctaW4gZG9lc24n
dCBleGlzdCB5ZXQgYW5kIHdlIHByb2JhYmx5IGhhdmUgbm90aGluZyB0byBkby4KKyAgICBpZiAo
IXBsdWdpbkNvbnRyb2xsZXJQcm94eSkgeworICAgICAgICAvLyBJZiB0aGUgcGx1Z2luIHdlJ3Jl
IHN1cHBvc2VkIHRvIGRlc3Ryb3kgd2FzIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseSBhbmQgZG9l
c24ndCBleGlzdCB5ZXQsCisgICAgICAgIC8vIHdlIG5lZWQgdG8gZmxhZyB0aGUgaW5zdGFuY2Ug
SUQgc28gaXQgaXMgbm90IGNyZWF0ZWQgbGF0ZXIuCisgICAgICAgIGlmIChhc3luY2hyb25vdXND
cmVhdGlvbkluY29tcGxldGUpCisgICAgICAgICAgICBhc3luY2hyb25vdXNJbnN0YW5jZUlEc1Rv
SWdub3JlKCkuYWRkKHBsdWdpbkluc3RhbmNlSUQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKICAgICBkZXN0cm95UGx1Z2luQ29udHJvbGxlclByb3h5KHBsdWdpbkNv
bnRyb2xsZXJQcm94eSk7CiB9CiAKQEAgLTIyNSw3ICsyNDcsNyBAQCB2b2lkIFdlYlByb2Nlc3ND
b25uZWN0aW9uOjpzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKikK
IHsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luKGNvbnN0IFBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJhbWV0ZXJzLCBib29sJiByZXN1bHQs
IGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKQor
dm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwoY29uc3QgUGx1
Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFtZXRlcnMsIGJvb2wmIHJlc3VsdCwg
Ym9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpCiB7
CiAgICAgT3duUHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4gcGx1Z2luQ29udHJvbGxlclByb3h5
ID0gUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGUodGhpcywgY3JlYXRpb25QYXJhbWV0ZXJz
KTsKIApAQCAtMjQ3LDYgKzI2OSw1OCBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVh
dGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvbgogI2VuZGlm
CiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbihjb25zdCBQbHVn
aW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycywgYm9vbCYgcmVzdWx0LCBi
b29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCkKK3sK
KyAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdpbkNvbnRyb2xsZXJQcm94eSA9IG1fcGx1
Z2luQ29udHJvbGxlcnMuZ2V0KGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKTsK
KworICAgIC8vIFRoZSBwbHVnLWluIHdlJ3JlIGJlaW5nIGFza2VkIHRvIGNyZWF0ZSBzeW5jaHJv
bm91c2x5IG1pZ2h0IGFscmVhZHkgZXhpc3QgaWYgd2UganVzdCBmaW5pc2hlZCBjcmVhdGluZyBp
dCBhc3luY2hyb25vdXNseS4KKyAgICAvLyBJbiB0aGF0IGNhc2Ugd2UgbmVlZCB0byBub3QgY3Jl
YXRlIGl0IGFnYWluIChidXQgYWxzbyBuZWVkIHRvIHJldHVybiB0aGUgY29ycmVjdCBpbmZvcm1h
dGlvbiBhYm91dCBpdHMgY3JlYXRpb24pLgorICAgIGlmIChwbHVnaW5Db250cm9sbGVyUHJveHkp
IHsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgd2FudHNXaGVlbEV2ZW50cyA9IHBs
dWdpbkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50cygpOworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICAgICAgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+
cmVtb3RlTGF5ZXJDbGllbnRJRCgpOworI2VuZGlmCisgICAgICAgIHJldHVybjsKKyAgICB9Cisg
ICAgCisgICAgLy8gVGhlIHBsdWdpbiB3ZSdyZSBzdXBwb3NlZCB0byBjcmVhdGUgbWlnaHQgaGF2
ZSBiZWVuIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseSBiZWZvcmUuCisgICAgLy8gSW4gdGhhdCBj
YXNlIHdlIG5lZWQgdG8gY3JlYXRlIGl0IHN5bmNocm9ub3VzbHkgbm93IGJ1dCBmbGFnIHRoZSBp
bnN0YW5jZSBJRCBzbyB3ZSBkb24ndCByZWNyZWF0ZSBpdCBhc3luY2hyb25vdXNseSBsYXRlci4K
KyAgICBpZiAoY3JlYXRpb25QYXJhbWV0ZXJzLmFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSkKKyAgICAgICAgYXN5bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZSgpLmFkZChjcmVhdGlv
blBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7CisgICAgCisgICAgY3JlYXRlUGx1Z2luSW50
ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdhbnRzV2hlZWxFdmVudHMsIHJlbW90
ZUxheWVyQ2xpZW50SUQpOworfQorCit2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQ
bHVnaW5Bc3luY2hyb25vdXNseShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0
aW9uUGFyYW1ldGVycykKK3sKKyAgICAvLyBJbiB0aGUgdGltZSBzaW5jZSB0aGlzIHBsdWdpbiB3
YXMgcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IHdlIG1pZ2h0IGhhdmUgY3JlYXRlZCBpdCBzeW5j
aHJvbm91c2x5IG9yIGRlc3Ryb3llZCBpdC4KKyAgICAvLyBJbiBlaXRoZXIgb2YgdGhvc2UgY2Fz
ZXMgd2UgbmVlZCB0byBpZ25vcmUgdGhpcyBjcmVhdGlvbiByZXF1ZXN0LgorICAgIGlmIChhc3lu
Y2hyb25vdXNJbnN0YW5jZUlEc1RvSWdub3JlKCkuY29udGFpbnMoY3JlYXRpb25QYXJhbWV0ZXJz
LnBsdWdpbkluc3RhbmNlSUQpKSB7CisgICAgICAgIGFzeW5jaHJvbm91c0luc3RhbmNlSURzVG9J
Z25vcmUoKS5yZW1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIFRoaXMgdmVyc2lvbiBvZiBDcmVhdGVQ
bHVnaW4gaXMgb25seSB1c2VkIGJ5IHBsdWctaW5zIHRoYXQgYXJlIGtub3duIHRvIGJlaGF2ZSB3
aGVuIHN0YXJ0ZWQgYXN5bmNocm9ub3VzbHkuCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAg
ICB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEID0gMDsKKyAgICBib29sIHdhbnRzV2hlZWxF
dmVudHMgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoY3JlYXRpb25QYXJhbWV0ZXJzLmFydGlmaWNp
YWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCkgeworICAgICAgICBzdGF0aWMgdW5z
aWduZWQgaW50IGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5ID0gNTsKKyAgICAg
ICAgc2xlZXAoYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXkpOworICAgIH0KKwor
ICAgIGNyZWF0ZVBsdWdpbkludGVybmFsKGNyZWF0aW9uUGFyYW1ldGVycywgcmVzdWx0LCB3YW50
c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKworICAgIGlmICghcmVzdWx0KSB7
CisgICAgICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmMoTWVzc2FnZXM6OlBsdWdpblByb3h5OjpE
aWRGYWlsVG9DcmVhdGVQbHVnaW4oKSwgTWVzc2FnZXM6OlBsdWdpblByb3h5OjpEaWRGYWlsVG9D
cmVhdGVQbHVnaW46OlJlcGx5KCksIGNyZWF0aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlE
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29ubmVjdGlvbi0+c2VuZFN5bmMo
TWVzc2FnZXM6OlBsdWdpblByb3h5OjpEaWRDcmVhdGVQbHVnaW4od2FudHNXaGVlbEV2ZW50cywg
cmVtb3RlTGF5ZXJDbGllbnRJRCksIE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkQ3JlYXRlUGx1
Z2luOjpSZXBseSgpLCBjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9DRVNT
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVj
dGlvbi5oCmluZGV4IGYzODQ2NzEuLjhkN2Y2ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKQEAgLTY3LDkgKzY3LDEzIEBA
IHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KENvcmVJ
UEM6OkNvbm5lY3Rpb24qKTsKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMuCisgICAgdm9pZCBk
aWRSZWNlaXZlV2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24q
LCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwogICAgIHZv
aWQgZGlkUmVjZWl2ZVN5bmNXZWJQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoQ29yZUlQQzo6Q29u
bmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiwg
T3duUHRyPENvcmVJUEM6OkFyZ3VtZW50RW5jb2Rlcj4mKTsKICAgICB2b2lkIGNyZWF0ZVBsdWdp
bihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmLCBib29sJiByZXN1bHQsIGJvb2wmIHdh
bnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiByZW1vdGVMYXllckNsaWVudElEKTsKLSAgICB2b2lk
IGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCk7CisgICAgdm9pZCBjcmVh
dGVQbHVnaW5Bc3luY2hyb25vdXNseShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmKTsK
KyAgICB2b2lkIGRlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5zdGFuY2VJRCwgYm9vbCBh
c3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpOworICAgIAorICAgIHZvaWQgY3JlYXRlUGx1
Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiwgYm9vbCYgcmVzdWx0
LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCk7
CiAKICAgICBSZWZQdHI8Q29yZUlQQzo6Q29ubmVjdGlvbj4gbV9jb25uZWN0aW9uOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9u
Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29u
bmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCAwN2MzYzI3Li5mMWE4MzU5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24ubWVzc2FnZXMuaW4KQEAgLTI2LDggKzI2LDExIEBAIG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3ND
b25uZWN0aW9uIHsKICAgICAjIENyZWF0ZXMgYSBwbHVnLWluIGluc3RhbmNlIHVzaW5nIHRoZSBn
aXZlbiBjcmVhdGlvbiBwYXJhbWV0ZXJzLgogICAgIENyZWF0ZVBsdWdpbihXZWJLaXQ6OlBsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycyBwbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpIC0+IChib29sIHJl
c3VsdCwgYm9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElE
KQogCisgICAgIyBDcmVhdGVzIGEgcGx1Zy1pbiBpbnN0YW5jZSBhc3luY2hyb25vdXNseSB1c2lu
ZyB0aGUgZ2l2ZW4gY3JlYXRpb24gcGFyYW1ldGVycy4KKyAgICBDcmVhdGVQbHVnaW5Bc3luY2hy
b25vdXNseShXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBwbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMpCisKICAgICAjIERlc3Ryb3lzIHRoZSBwbHVnLWluIGluc3RhbmNlIHdpdGggdGhl
IGdpdmVuIGluc3RhbmNlIElELgotICAgIERlc3Ryb3lQbHVnaW4odWludDY0X3QgcGx1Z2luSW5z
dGFuY2VJRCkgLT4gKCkKKyAgICBEZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNl
SUQsIGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKSAtPiAoKQogfQogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKaW5kZXggYzZjODdhNi4uMGYwMzZi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdp
bnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTMzLDEyICszMywxNCBA
QAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OlBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMoKQorICAgIDogc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihmYWxzZSkKIHsKIH0KIAogdm9pZCBQbHVnaW5Qcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoQ29yZUlQQzo6QXJndW1lbnRFbmNvZGVyKiBl
bmNvZGVyKSBjb25zdAogewogICAgIGVuY29kZXItPmVuY29kZShwbHVnaW5QYXRoKTsKKyAgICBl
bmNvZGVyLT5lbmNvZGUoc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7
CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhcmVudFByb2Nlc3NO
YW1lKTsKQEAgLTUwLDYgKzUyLDggQEAgYm9vbCBQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzOjpkZWNvZGUoQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLAogewogICAgIGlm
ICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5wbHVnaW5QYXRoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5zdXBwb3J0c0FzeW5jaHJvbm91
c1BsdWdpbkluaXRpYWxpemF0aW9uKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5wYXJlbnRQcm9jZXNz
TmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggNjJjZjRiYi4uY2ZhZWRj
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNDgsNiArNDgsNyBAQCBzdHJ1
Y3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgc3RhdGljIGJvb2wgZGVj
b2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmKTsKIAogICAgIFN0cmluZyBwbHVnaW5QYXRoOworICAgIGJvb2wgc3VwcG9ydHNBc3lu
Y2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbjsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBT
dHJpbmcgcGFyZW50UHJvY2Vzc05hbWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA0M2ZhMmY0Li5jOWUw
MTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTEzNyw5ICsxMzcsOSBAQCB2b2lkIFBsdWdpblByb2Nl
c3NQcm94eTo6cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCkKICAgICAgICAg
UmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMudGFr
ZUZpcnN0KCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHJlcGx5LT5zZW5kKENvcmVJ
UEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9NU0dfVFlQRV9NT1ZFX1NFTkQpKTsKKyAgICAgICAgcmVw
bHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgwLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCks
IGZhbHNlKTsKICNlbGlmIFVTRShVTklYX0RPTUFJTl9TT0NLRVRTKQotICAgICAgICByZXBseS0+
c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KCkpOworICAgICAgICByZXBseS0+c2VuZChDb3JlSVBD
OjpBdHRhY2htZW50KCksIGZhbHNlKTsKICNlbHNlCiAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7
CiAjZW5kaWYKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlk
RmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIENvcmVJUEM6OkNvbm5lY3RpbwogICAg
IG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cyA9IDA7CiB9CiAKLXZvaWQgUGx1Z2luUHJv
Y2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpB
dHRhY2htZW50JiBjb25uZWN0aW9uSWRlbnRpZmllcikKK3ZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50
JiBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKQogewogICAgIEFTU0VSVCghbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxpZXMu
aXNFbXB0eSgpKTsKIApAQCAtMjM2LDkgKzIzNiw5IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5
OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBDb3JlSVBDOjpBdHRhY2htZW50
CiAgICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uOjpEZWxheWVkUmVwbHk+IHJlcGx5ID0gbV9wZW5kaW5nQ29ubmVjdGlvblJlcGxp
ZXMudGFrZUZpcnN0KCk7CiAKICNpZiBQTEFURk9STShNQUMpCi0gICAgcmVwbHktPnNlbmQoQ29y
ZUlQQzo6QXR0YWNobWVudChjb25uZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZ
UEVfTU9WRV9TRU5EKSk7CisgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudChjb25u
ZWN0aW9uSWRlbnRpZmllci5wb3J0KCksIE1BQ0hfTVNHX1RZUEVfTU9WRV9TRU5EKSwgc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbik7CiAjZWxpZiBVU0UoVU5JWF9ET01B
SU5fU09DS0VUUykKLSAgICByZXBseS0+c2VuZChjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAg
cmVwbHktPnNlbmQoY29ubmVjdGlvbklkZW50aWZpZXIsIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb24pOwogI2Vsc2UKICAgICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nl
c3NQcm94eS5oCmluZGV4IDBhNTFkOWIuLmUwZmUxNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0xMDgsNyAr
MTA4LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRp
ZFJlY2VpdmVQbHVnaW5Qcm9jZXNzUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBD
b3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwotICAgIHZvaWQg
ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYp
OworICAgIHZvaWQgZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgQ29yZUlQQzo6
QXR0YWNobWVudCYsIGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bik7CiAgICAgdm9pZCBkaWRHZXRTaXRlc1dpdGhEYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBz
aXRlcywgdWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRDbGVhclNpdGVEYXRhKHVp
bnQ2NF90IGNhbGxiYWNrSUQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KaW5kZXgg
N2I1OWFlZi4uMTgzY2IwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjMs
NyArMjMsNyBAQAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VTUykKIAogbWVzc2FnZXMgLT4gUGx1
Z2luUHJvY2Vzc1Byb3h5IHsKLSAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihDb3Jl
SVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIERpZENyZWF0ZVdlYlBy
b2Nlc3NDb25uZWN0aW9uKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIs
IGJvb2wgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIAogICAgIERp
ZEdldFNpdGVzV2l0aERhdGEoVmVjdG9yPFdURjo6U3RyaW5nPiBzaXRlcywgdWludDY0X3QgY2Fs
bGJhY2tJRCkKICAgICBEaWRDbGVhclNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vz
c1Byb3h5TWFjLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1BsdWdp
blByb2Nlc3NQcm94eU1hYy5tbQppbmRleCAzNDg2ZGU0Li5kNGI0YmEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9j
ZXNzUHJveHlNYWMubW0KQEAgLTExOCw2ICsxMTgsOSBAQCBib29sIFBsdWdpblByb2Nlc3NQcm94
eTo6Y3JlYXRlUHJvcGVydHlMaXN0RmlsZShjb25zdCBQbHVnaW5Nb2R1bGVJbmZvJiBwbHVnaW4p
CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc1Byb3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9j
ZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7CisgICAg
Ly8gRm9yIGtub3cgb25seSBGbGFzaCBpcyBrbm93biB0byBiZWhhdmUgd2l0aCBhc3luY2hyb25v
dXMgcGx1Zy1pbiBpbml0aWFsaXphdGlvbi4KKyAgICBwYXJhbWV0ZXJzLnN1cHBvcnRzQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24gPSBtX3BsdWdpbkluZm8uYnVuZGxlSWRlbnRpZmll
ciA9PSAiY29tLm1hY3JvbWVkaWEuRmxhc2ggUGxheWVyLnBsdWdpbiI7CisKICNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpICYmIEhBVkUoSE9TVEVEX0NPUkVfQU5JTUFUSU9OKQogICAg
IHBhcmFtZXRlcnMucGFyZW50UHJvY2Vzc05hbWUgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0lu
Zm9dIHByb2Nlc3NOYW1lXTsKICNpZiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49
IDEwNzAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDllN2I1MjkuLjg0ODA1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMzQsNyAr
MzQsNyBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzUHJveHkgewogICAgIFNob3VsZFRlcm1pbmF0
ZSgpIC0+IChib29sIHNob3VsZFRlcm1pbmF0ZSkKIAogI2lmIEVOQUJMRShQTFVHSU5fUFJPQ0VT
UykKLSAgICBHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihXVEY6OlN0cmluZyBwbHVnaW5QYXRo
KSAtPiAoQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSGFuZGxlKSBEZWxheWVkCisgICAg
R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENv
cmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhhbmRsZSwgYm9vbCBzdXBwb3J0c0FzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKSBEZWxheWVkCiAgICAgUGx1Z2luU3luY01lc3NhZ2VTZW5kVGlt
ZWRPdXQoV1RGOjpTdHJpbmcgcGx1Z2luUGF0aCkKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5oCmluZGV4IDFjNDljNjAuLmUwNjM2NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oCkBAIC01
NCw2ICs1NCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxOZXRzY2FwZVBs
dWdpbj4gZnJvbU5QUChOUFApOwogCisgICAgLy8gSW4tcHJvY2VzcyBOZXRzY2FwZVBsdWdpbnMg
ZG9uJ3Qgc3VwcG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24uCisgICAgdmlydHVhbCB2
b2lkIHdhaXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBpc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICBOUEVycm9yIHNldERyYXdpbmdNb2RlbChOUERy
YXdpbmdNb2RlbCk7CiAgICAgTlBFcnJvciBzZXRFdmVudE1vZGVsKE5QRXZlbnRNb2RlbCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5Q
REZWaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5Q
REZWaWV3LmgKaW5kZXggNmQxMWM4NS4uMGUxMGQyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWlsdEluUERGVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaApAQCAtNTAsNiAr
NTAsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFdlYkNvcmU6OlBsdWdpbkluZm8gcGx1Z2lu
SW5mbygpOwogCisgICAgLy8gSW4tcHJvY2VzcyBQREZWaWV3cyBkb24ndCBzdXBwb3J0IGFzeW5j
aHJvbm91cyBpbml0aWFsaXphdGlvbi4KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckFzeW5jaHJv
bm91c0luaXRpYWxpemF0aW9uKCkgeyB9CisgICAgdmlydHVhbCBib29sIGlzSW5pdGlhbGl6aW5n
QXN5bmNocm9ub3VzbHkoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiBwcml2YXRlOgogICAg
IGV4cGxpY2l0IEJ1aWx0SW5QREZWaWV3KFdlYkZyYW1lKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCA1YmU4NGY0Li5lM2MxMDAyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC04Myw2ICs4MywxMCBA
QCBwdWJsaWM6CiAgICAgLy8gU2V0cyB0aGUgYWN0aXZlIHBsdWctaW4gY29udHJvbGxlciBhbmQg
aW5pdGlhbGl6ZXMgdGhlIHBsdWctaW4uCiAgICAgYm9vbCBpbml0aWFsaXplKFBsdWdpbkNvbnRy
b2xsZXIqLCBjb25zdCBQYXJhbWV0ZXJzJik7CiAKKyAgICAvLyBGb3JjZXMgc3luY2hyb25vdXMg
aW5pdGlhbGl6YXRpb24gb2YgYSBwbHVnaW4gcHJldmlvdXNseSBpbml0aWFsaXplZCBhc3luY2hy
b25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5
KCkgY29uc3QgPSAwOworCiAgICAgLy8gRGVzdHJveXMgdGhlIHBsdWctaW4uCiAgICAgdm9pZCBk
ZXN0cm95UGx1Z2luKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IDQyYzI5NTkuLjQ0ZWEzMmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aApAQCAtMTM4LDYgKzEzOCwxNSBAQCBwdWJsaWM6CiAKICAgICAvLyBSZXR1cm5zIHdoZXRoZXIg
cHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVC
cm93c2luZ0VuYWJsZWQoKSA9IDA7CisgICAgCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5v
dCBhc3luY2hyb25vdXMgcGx1Z2luIGluaXRpYWxpemF0aW9uIGlzIGVuYWJsZWQuCisgICAgdmly
dHVhbCBib29sIGFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIG9yIG5vdCBh
c3luY2hyb25vdXMgcGx1Z2luIGluaXRpYWxpemF0aW9uIHNob3VsZCBiZSBhdHRlbXB0ZWQgZm9y
IGFsbCBwbHVnaW5zLgorICAgIHZpcnR1YWwgYm9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICAKKyAgICAvLyBSZXR1cm5zIHRoZSBhcnRpY2lmaWNhbCBwbHVnaW4gZGVsYXkgdG8gdXNlIGZv
ciB0ZXN0aW5nIG9mIGFzeW5jaHJvbm91cyBwbHVnaW4gaW5pdGlhbGl6YXRpb24uCisgICAgdmly
dHVhbCBib29sIGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBJbmNyZW1lbnRzIGEgY291bnRlciB0aGF0
IHByZXZlbnRzIHRoZSBwbHVnLWluIGZyb20gYmVpbmcgZGVzdHJveWVkLgogICAgIHZpcnR1YWwg
dm9pZCBwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgPSAwOwpAQCAtMTUxLDYgKzE2MCw5
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENo
YW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6Oklu
dFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCkgPSAwOwogI2VuZGlmCiAKKyAgICB2
aXJ0dWFsIHZvaWQgZGlkSW5pdGlhbGl6ZVBsdWdpbigpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpID0gMDsKKwogICAgIC8vIEhlbHBlciBjbGFzcyBm
b3IgZGVsYXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBwbHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRl
c3RydWN0aW9uUHJvdGVjdG9yIHsKICAgICBwdWJsaWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNw
cAppbmRleCA4MzM5YWQ0Li5jYzMxM2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAg
LTczLDkgKzczLDEwIEBAIHN0YXRpYyBkb3VibGUgZGVmYXVsdFN5bmNNZXNzYWdlVGltZW91dChj
b25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAgcmV0dXJuIHN5bmNNZXNzYWdlVGltZW91dDsK
IH0KIAotUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciogcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5h
Z2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50
aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogICAgIDogbV9wbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKQog
ICAgICwgbV9wbHVnaW5QYXRoKHBsdWdpblBhdGgpCisgICAgLCBtX3N1cHBvcnRzQXN5bmNocm9u
b3VzUGx1Z2luSW5pdGlhbGl6YXRpb24oc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFs
aXphdGlvbikKIHsKICAgICBtX2Nvbm5lY3Rpb24gPSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVh
dGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25JZGVudGlmaWVyLCB0aGlzLCBXZWJQcm9jZXNz
OjpzaGFyZWQoKS5ydW5Mb29wKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCmluZGV4IDYxYzRh
YzIuLmJjODY2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC00Myw5ICs0Myw5IEBAIGNs
YXNzIFBsdWdpblByb3h5OwogICAgIAogY2xhc3MgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4sIENvcmVJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBs
dWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBjcmVhdGUoUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIs
IGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIHBsdWdpblBh
dGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBw
bHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRpZmllciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbikpOwogICAgIH0KICAgICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKIApAQCAtNTgsOCArNTgsMTAgQEAgcHVibGljOgogCiAgICAgTlBSZW1vdGVPYmplY3RNYXAq
IG5wUmVtb3RlT2JqZWN0TWFwKCkgY29uc3QgeyByZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC5n
ZXQoKTsgfQogCisgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIs
IGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
ciBjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwgY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBD
b3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29s
IHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pOwogCiAgICAgLy8gQ29yZUlQQzo6
Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50
RGVjb2RlciopOwpAQCAtODIsNiArODQsOCBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0
X3QsIFBsdWdpblByb3h5Kj4gbV9wbHVnaW5zOwogCiAgICAgUmVmUHRyPE5QUmVtb3RlT2JqZWN0
TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFwOworICAgIAorICAgIGJvb2wgbV9zdXBwb3J0c0FzeW5j
aHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCmluZGV4IGZkMTkwNmQuLjMz
ZDEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwCkBAIC01Nyw4
ICs1Nyw5IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlv
bk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25uZWN0CiAgICAgfQogCiAgICAgQ29yZUlQQzo6
QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklkZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0
c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOwogICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVk
KCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5QYXRoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94
eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRl
bnRpZmllciksIDApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5j
aHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAgICAgICAgIHJldHVybiAwOwogCiAjaWYgUExB
VEZPUk0oTUFDKQpAQCAtNzEsNyArNzIsNyBAQCBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpnZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCi0gICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpj
cmVhdGUodGhpcywgcGx1Z2luUGF0aCwgY29ubmVjdGlvbklkZW50aWZpZXIpOworICAgIFJlZlB0
cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRoaXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3Bs
dWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQocGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwog
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Q
cm94eS5jcHAKaW5kZXggZDRhMzU0OS4uZDNhZjA2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC02OCw2ICs2OCw3IEBAIFBs
dWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAgLCBt
X3dhaXRpbmdGb3JQYWludEluUmVzcG9uc2VUb1VwZGF0ZShmYWxzZSkKICAgICAsIG1fd2FudHNX
aGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVtb3RlTGF5ZXJDbGllbnRJRCgwKQorICAgICwg
bV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbihmYWxzZSkKIHsKIH0KIApAQCAt
OTMsMzggKzk0LDEwOSBAQCBib29sIFBsdWdpblByb3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFt
ZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9jb25uZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlz
KTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1pbiBwcm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4u
Ci0gICAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIGNyZWF0aW9uUGFyYW1ldGVyczsKLSAgICBj
cmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsK
LSAgICBjcmVhdGlvblBhcmFtZXRlcnMud2luZG93TlBPYmplY3RJRCA9IHdpbmRvd05QT2JqZWN0
SUQoKTsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMucGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0g
ICAgY3JlYXRpb25QYXJhbWV0ZXJzLnVzZXJBZ2VudCA9IGNvbnRyb2xsZXIoKS0+dXNlckFnZW50
KCk7Ci0gICAgY3JlYXRpb25QYXJhbWV0ZXJzLmNvbnRlbnRzU2NhbGVGYWN0b3IgPSBjb250ZW50
c1NjYWxlRmFjdG9yKCk7Ci0gICAgY3JlYXRpb25QYXJhbWV0ZXJzLmlzUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCA9IGNvbnRyb2xsZXIoKS0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAg
bV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzID0gYWRvcHRQdHIobmV3IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyk7CisKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdpbkluc3RhbmNlSUQ7CisgICAgbV9wZW5kaW5n
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5kb3dOUE9iamVjdElEID0gd2luZG93TlBPYmpl
Y3RJRCgpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+cGFyYW1ldGVy
cyA9IHBhcmFtZXRlcnM7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT51
c2VyQWdlbnQgPSBjb250cm9sbGVyKCktPnVzZXJBZ2VudCgpOworICAgIG1fcGVuZGluZ1BsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycy0+Y29udGVudHNTY2FsZUZhY3RvciA9IGNvbnRlbnRzU2NhbGVG
YWN0b3IoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzUHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCA9IGNvbnRyb2xsZXIoKS0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVk
KCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5hcnRpZmljaWFsUGx1
Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQgPSBjb250cm9sbGVyKCktPmFydGlmaWNpYWxQ
bHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVE
X0NPTVBPU0lUSU5HKQotICAgIGNyZWF0aW9uUGFyYW1ldGVycy5pc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc0FjY2VsZXJh
dGVkQ29tcG9zaXRpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5pc0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmdFbmFibGVkKCk7CiAjZW5kaWYKIAorICAgIGlmICghY2FuSW5pdGlhbGl6ZUFzeW5jaHJv
bm91c2x5KCkpCisgICAgICAgIHJldHVybiBpbml0aWFsaXplU3luY2hyb25vdXNseSgpOworCisg
ICAgLy8gUmVtZW1iZXIgdGhhdCB3ZSB0cmllZCB0byBjcmVhdGUgdGhpcyBwbHVnLWluIGFzeW5j
aHJvbm91c2x5IGluIGNhc2Ugd2UgbmVlZCB0byBjcmVhdGUgaXQgc3luY2hyb25vdXNseSBsYXRl
ci4KKyAgICBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKKyAg
ICBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgY3JlYXRpb25QYXJhbWV0ZXJzKCptX3BlbmRpbmdQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuZ2V0KCkpOworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVj
dGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2lu
QXN5bmNocm9ub3VzbHkoY3JlYXRpb25QYXJhbWV0ZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQbHVnaW5Qcm94eTo6Y2FuSW5pdGlhbGl6ZUFz
eW5jaHJvbm91c2x5KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udHJvbGxlcigpLT5hc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSAmJiAobV9jb25uZWN0aW9uLT5zdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKCkgfHwgY29udHJvbGxlcigpLT5h
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkpOwor
fQorCit2b2lkIFBsdWdpblByb3h5Ojp3YWl0Rm9yQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24o
KQoreworICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQpOworICAgIEFTU0VSVChtX3dhaXRpbmdPbkFz
eW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKworICAgIGluaXRpYWxpemVTeW5jaHJvbm91c2x5
KCk7Cit9CisKK2Jvb2wgUGx1Z2luUHJveHk6OmluaXRpYWxpemVTeW5jaHJvbm91c2x5KCkKK3sK
KyAgICBBU1NFUlQobV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKTsKKworICAgIG1f
cGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+YXN5bmNocm9ub3VzQ3JlYXRpb25JbmNv
bXBsZXRlID0gbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsKICAgICBib29s
IHJlc3VsdCA9IGZhbHNlOwogICAgIGJvb2wgd2FudHNXaGVlbEV2ZW50cyA9IGZhbHNlOwogICAg
IHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQgPSAwOworICAgIAorICAgIFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKCptX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMuZ2V0KCkpOwogCi0gICAgaWYgKCFtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW4oY3JlYXRpb25Q
YXJhbWV0ZXJzKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46
OlJlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCksIDAp
IHx8ICFyZXN1bHQpIHsKLSAgICAgICAgbV9jb25uZWN0aW9uLT5yZW1vdmVQbHVnaW5Qcm94eSh0
aGlzKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyAgICBpZiAoIW1fY29ubmVjdGlv
bi0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246
OkNyZWF0ZVBsdWdpbihwYXJhbWV0ZXJzKSwgTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9u
OjpDcmVhdGVQbHVnaW46OlJlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5
ZXJDbGllbnRJRCksIDApIHx8ICFyZXN1bHQpCisgICAgICAgIGRpZEZhaWxUb0NyZWF0ZVBsdWdp
bkludGVybmFsKCk7CisgICAgZWxzZQorICAgICAgICBkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbCh3
YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICAKKyAgICByZXR1cm4g
cmVzdWx0OworfQogCit2b2lkIFBsdWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4oYm9vbCB3YW50
c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEKQoreworICAgIC8vIFdl
IG1pZ2h0IGhhdmUgdHJpZWQgdG8gY3JlYXRlIHRoZSBwbHVnLWluIHN5Y2hyb25vdXNseSB3aGls
ZSB3YWl0aW5nIG9uIHRoZSBhc3luY2hyb25vdXMgcmVwbHksCisgICAgLy8gaW4gd2hpY2ggY2Fz
ZSB3ZSBzaG91bGQgaWdub3JlIHRoaXMgbWVzc2FnZS4KKyAgICBpZiAoIW1fd2FpdGluZ09uQXN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRpZENyZWF0
ZVBsdWdpbkludGVybmFsKHdhbnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOwor
fQorCit2b2lkIFBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW4oKQoreworICAgIC8v
IFdlIG1pZ2h0IGhhdmUgdHJpZWQgdG8gY3JlYXRlIHRoZSBwbHVnLWluIHN5Y2hyb25vdXNseSB3
aGlsZSB3YWl0aW5nIG9uIHRoZSBhc3luY2hyb25vdXMgcmVwbHksCisgICAgLy8gaW4gd2hpY2gg
Y2FzZSB3ZSBzaG91bGQgaWdub3JlIHRoaXMgbWVzc2FnZS4KKyAgICBpZiAoIW1fd2FpdGluZ09u
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGRpZEZh
aWxUb0NyZWF0ZVBsdWdpbkludGVybmFsKCk7Cit9CisKK3ZvaWQgUGx1Z2luUHJveHk6OmRpZENy
ZWF0ZVBsdWdpbkludGVybmFsKGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3Rl
TGF5ZXJDbGllbnRJRCkKK3sKICAgICBtX3dhbnRzV2hlZWxFdmVudHMgPSB3YW50c1doZWVsRXZl
bnRzOwogICAgIG1fcmVtb3RlTGF5ZXJDbGllbnRJRCA9IHJlbW90ZUxheWVyQ2xpZW50SUQ7CiAg
ICAgbV9pc1N0YXJ0ZWQgPSB0cnVlOworICAgIGNvbnRyb2xsZXIoKS0+ZGlkSW5pdGlhbGl6ZVBs
dWdpbigpOwogCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gV2hldGhlciBzeW5jaHJvbm91c2x5
IG9yIGFzeW5jaHJvbm91c2x5LCB0aGlzIHBsdWctaW4gd2FzIGNyZWF0ZWQgYW5kIHdlIHNob3Vs
ZG4ndCBuZWVkIHRvIHJlbWVtYmVyCisgICAgLy8gYW55dGhpbmcgYWJvdXQgaG93LgorICAgIG1f
cGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jbGVhcigpOworICAgIG1fd2FpdGluZ09u
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94
eTo6ZGVzdHJveSgpCit2b2lkIFBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRl
cm5hbCgpCiB7Ci0gICAgQVNTRVJUKG1faXNTdGFydGVkKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJl
bW92ZVBsdWdpblByb3h5KHRoaXMpOworICAgIGNvbnRyb2xsZXIoKS0+ZGlkRmFpbFRvSW5pdGlh
bGl6ZVBsdWdpbigpOwogCi0gICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5j
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbihtX3BsdWdpbklu
c3RhbmNlSUQpLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46
OlJlcGx5KCksIDApOworICAgIC8vIFdoZXRoZXIgc3luY2hyb25vdXNseSBvciBhc3luY2hyb25v
dXNseSwgdGhpcyBwbHVnLWluIGZhaWxlZCB0byBjcmVhdGUgYW5kIHdlIHNob3VsZG4ndCBuZWVk
IHRvIHJlbWVtYmVyCisgICAgLy8gYW55dGhpbmcgYWJvdXQgaG93LgorICAgIG1fcGVuZGluZ1Bs
dWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jbGVhcigpOworICAgIG1fd2FpdGluZ09uQXN5bmNocm9u
b3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKK30KKwordm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJv
eSgpCit7CisgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJveVBsdWdpbihtX3BsdWdpbkluc3RhbmNlSUQs
IG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pLCBNZXNzYWdlczo6V2ViUHJv
Y2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46OlJlcGx5KCksIDApOwogCiAgICAgbV9pc1N0
YXJ0ZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJveHkuaAppbmRleCBiZTA3Y2FhLi5hZTRmMjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaApAQCAtNDksNiArNDksOCBAQCBj
bGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBOUFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb247CiAKK3N0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CisK
IGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBsdWdpbiB7CiBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgp
OwpAQCAtNjAsMTEgKzYyLDE2IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Q
cm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlvbiosIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNz
YWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciogYXJndW1lbnRzKTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3Jl
SVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBD
OjpBcmd1bWVudEVuY29kZXI+Jik7CiAKKyAgICBib29sIGlzSW5pdGlhbGl6aW5nQXN5bmNocm9u
b3VzbHkoKSBjb25zdCB7IHJldHVybiBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uOyB9CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGx1Z2luUHJveHkoY29uc3QgU3RyaW5n
JiBwbHVnaW5QYXRoKTsKIAogICAgIC8vIFBsdWdpbgogICAgIHZpcnR1YWwgYm9vbCBpbml0aWFs
aXplKGNvbnN0IFBhcmFtZXRlcnMmKTsKKyAgICBib29sIGluaXRpYWxpemVTeW5jaHJvbm91c2x5
KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgd2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9u
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3koKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnQo
V2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0KiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgZGlydHlS
ZWN0KTsKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzbmFwc2hvdCgp
OwpAQCAtMTQxLDYgKzE0OCwxNCBAQCBwcml2YXRlOgogICAgIHZvaWQgd2luZG93ZWRQbHVnaW5H
ZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBmcmFtZVJlY3QsIGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRfdCB3aW5kb3dJRCk7CiAjZW5kaWYK
IAorICAgIGJvb2wgY2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkgY29uc3Q7CisKKyAgICB2
b2lkIGRpZENyZWF0ZVBsdWdpbihib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90IHJlbW90
ZUxheWVyQ2xpZW50SUQpOworICAgIHZvaWQgZGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCk7CisgICAg
CisgICAgdm9pZCBkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbChib29sIHdhbnRzV2hlZWxFdmVudHMs
IHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQpOworICAgIHZvaWQgZGlkRmFpbFRvQ3JlYXRl
UGx1Z2luSW50ZXJuYWwoKTsKKwogICAgIFN0cmluZyBtX3BsdWdpblBhdGg7CiAKICAgICBSZWZQ
dHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKQEAgLTE3NCw2ICsxODks
OSBAQCBwcml2YXRlOgogCiAgICAgLy8gVGhlIGNsaWVudCBJRCBmb3IgdGhlIENBIGxheWVyIGlu
IHRoZSBwbHVnLWluIHByb2Nlc3MuIFdpbGwgYmUgMCBpZiB0aGUgcGx1Zy1pbiBpcyBub3QgYSBD
QSBwbHVnLWluLgogICAgIHVpbnQzMl90IG1fcmVtb3RlTGF5ZXJDbGllbnRJRDsKKyAgICAKKyAg
ICBPd25QdHI8UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzPiBtX3BlbmRpbmdQbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnM7CisgICAgYm9vbCBtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0
aW9uOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFJldGFpblB0cjxDQUxheWVyPiBtX3BsdWdp
bkxheWVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IGEyZWYzMTkuLjQ1M2MwZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdl
cy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
bWVzc2FnZXMuaW4KQEAgLTc0LDYgKzc0LDEyIEBAIG1lc3NhZ2VzIC0+IFBsdWdpblByb3h5IHsK
ICAgICAjIFVwZGF0ZSBnZW9tZXRyeSBvZiB3aW5kb3dlZCBwbHVnaW4gd2lkZ2V0CiAgICAgV2lu
ZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShXZWJDb3JlOjpJbnRSZWN0IGZyYW1lUmVjdCwg
V2ViQ29yZTo6SW50UmVjdCBjbGlwUmVjdCwgdWludDY0X3Qgd2luZG93SUQpCiAjZW5kaWYKKwor
ICAgICMgVGVsbHMgdGhlIFdlYlByb2Nlc3MgdGhhdCB0aGUgcGx1Zy1pbiB3YXMgc3VjY2Vzc2Z1
bGx5IGluaXRpYWxpemVkIGFzeW5jaHJvbm91c2x5CisgICAgRGlkQ3JlYXRlUGx1Z2luKGJvb2wg
d2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkgLT4gKCkKKyAg
ICAKKyAgICAjIFRlbGxzIHRoZSBXZWJQcm9jZXNzIHRoYXQgdGhlIHBsdWctaW4gZmFpbGVkIHRv
IGluaXRpYWxpemUuCisgICAgRGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCkgLT4gKCkKIH0KIAogI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKaW5kZXggMDcyYTY5Yy4uY2I2MTY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjYwLDYgKzI2MCw3IEBAIFBsdWdpblZp
ZXc6OlBsdWdpblZpZXcoUGFzc1JlZlB0cjxIVE1MUGx1Z0luRWxlbWVudD4gcGx1Z2luRWxlbWVu
dCwgUGFzc1JlZlB0cjxQCiAgICAgLCBtX3dlYlBhZ2Uod2ViUGFnZShtX3BsdWdpbkVsZW1lbnQu
Z2V0KCkpKQogICAgICwgbV9wYXJhbWV0ZXJzKHBhcmFtZXRlcnMpCiAgICAgLCBtX2lzSW5pdGlh
bGl6ZWQoZmFsc2UpCisgICAgLCBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRp
b24oZmFsc2UpCiAgICAgLCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydChmYWxzZSkKICAg
ICAsIG1faXNCZWluZ0Rlc3Ryb3llZChmYWxzZSkKICAgICAsIG1fcGVuZGluZ1VSTFJlcXVlc3Rz
VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVl
c3RzVGltZXJGaXJlZCkKQEAgLTI4NSw3ICsyODYsNyBAQCBQbHVnaW5WaWV3Ojp+UGx1Z2luVmll
dygpCiAgICAgZm9yIChGcmFtZUxvYWRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRnJhbWVM
b2Fkcy5iZWdpbigpLCBlbmQgPSBtX3BlbmRpbmdGcmFtZUxvYWRzLmVuZCgpOyBpdCAhPSBlbmQ7
ICsraXQpCiAgICAgICAgIGl0LT5maXJzdC0+c2V0TG9hZExpc3RlbmVyKDApOwogCi0gICAgaWYg
KG1fcGx1Z2luICYmIG1faXNJbml0aWFsaXplZCkgeworICAgIGlmIChtX3BsdWdpbikgewogICAg
ICAgICBtX2lzQmVpbmdEZXN0cm95ZWQgPSB0cnVlOwogICAgICAgICBtX3BsdWdpbi0+ZGVzdHJv
eVBsdWdpbigpOwogICAgICAgICBtX2lzQmVpbmdEZXN0cm95ZWQgPSBmYWxzZTsKQEAgLTQ4Nywx
NSArNDg4LDIwIEBAIHZvaWQgUGx1Z2luVmlldzo6aW5pdGlhbGl6ZVBsdWdpbigpCiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgaWYgKCFtX3BsdWdpbi0+aW5pdGlh
bGl6ZSh0aGlzLCBtX3BhcmFtZXRlcnMpKSB7Ci0gICAgICAgIC8vIFdlIGZhaWxlZCB0byBpbml0
aWFsaXplIHRoZSBwbHVnLWluLgotICAgICAgICBtX3BsdWdpbiA9IDA7CiAKLSAgICAgICAgbV93
ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQ
bHVnaW4obV9wYXJhbWV0ZXJzLm1pbWVUeXBlKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgbV9wbHVnaW4tPmluaXRpYWxpemUodGhpcywgbV9wYXJhbWV0ZXJzKTsKICAgICAKKyAgICAv
LyBQbHVnLWluIGluaXRpYWxpemF0aW9uIGNvbnRpbnVlZCBpbiBkaWRGYWlsVG9Jbml0aWFsaXpl
UGx1Z2luKCkgb3IgZGlkSW5pdGlhbGl6ZVBsdWdpbigpLgorfQorCit2b2lkIFBsdWdpblZpZXc6
OmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKQoreworICAgIG1fcGx1Z2luID0gMDsKKyAgICBt
X3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdpbihtX3BhcmFtZXRlcnMubWltZVR5cGUpKTsKK30KKwordm9pZCBQbHVnaW5WaWV3Ojpk
aWRJbml0aWFsaXplUGx1Z2luKCkKK3sKICAgICBtX2lzSW5pdGlhbGl6ZWQgPSB0cnVlOwogCiAj
aWYgUExBVEZPUk0oTUFDKQpAQCAtNTM5LDYgKzU0NSwxOSBAQCBQbGF0Zm9ybUxheWVyKiBQbHVn
aW5WaWV3OjpwbGF0Zm9ybUxheWVyKCkgY29uc3QKIAogSlNPYmplY3QqIFBsdWdpblZpZXc6OnNj
cmlwdE9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIC8vIElmIHdl
J3JlIGFscmVhZHkgd2FpdGluZyBmb3Igc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhl
IHBsdWdpbiwKKyAgICAvLyBjYWxscyB0byBzY3JpcHRPYmplY3QoKSBhcmUgZnJvbSB0aGUgcGx1
Zy1pbiBpdHNlbGYgYW5kIG5lZWQgdG8gcmV0dXJuIDA7CisgICAgaWYgKG1faXNXYWl0aW5nRm9y
U3luY2hyb25vdXNJbml0aWFsaXphdGlvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvLyBJ
ZiB0aGUgcGx1Zy1pbiBleGlzdHMgYnV0IGlzIG5vdCBpbml0aWFsaXplZCB0aGVuIHdlJ3JlIHN0
aWxsIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseS4KKyAgICAvLyBXZSBuZWVkIHRvIHdhaXQg
aGVyZSB1bnRpbCBpbml0aWFsaXphdGlvbiBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBmYWlsZWQu
CisgICAgaWYgKG1fcGx1Z2luLT5pc0luaXRpYWxpemluZ0FzeW5jaHJvbm91c2x5KCkpIHsKKyAg
ICAgICAgbV9pc1dhaXRpbmdGb3JTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKKyAg
ICAgICAgbV9wbHVnaW4tPndhaXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigpOworICAg
ICAgICBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKKyAg
ICB9CisKICAgICAvLyBUaGUgcGx1Zy1pbiBjYW4gYmUgbnVsbCBoZXJlIGlmIGl0IGZhaWxlZCB0
byBpbml0aWFsaXplLgogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdpbikKICAg
ICAgICAgcmV0dXJuIDA7CkBAIC0xMjUwLDYgKzEyNjksMjEgQEAgYm9vbCBQbHVnaW5WaWV3Ojpp
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQogICAgIHJldHVybiBzZXR0aW5ncy0+cHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpOwogfQogCitib29sIFBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdp
bkluaXRpYWxpemF0aW9uRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+
YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkKCk7Cit9CisKK2Jvb2wgUGx1
Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1
Z2lucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+YXN5bmNocm9ub3VzUGx1Z2lu
SW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucygpOworfQorCitib29sIFBsdWdpblZp
ZXc6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIG1fd2ViUGFnZS0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVs
YXlFbmFibGVkKCk7Cit9CisKIHZvaWQgUGx1Z2luVmlldzo6cHJvdGVjdFBsdWdpbkZyb21EZXN0
cnVjdGlvbigpCiB7CiAgICAgaWYgKCFtX2lzQmVpbmdEZXN0cm95ZWQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaAppbmRleCBmMTAxYjJmLi5hNmEw
NTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
Vmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmgKQEAgLTgwLDcgKzgwLDYgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5QbHVnaW5WaWV3KCk7
CiAKICAgICB2b2lkIGluaXRpYWxpemVQbHVnaW4oKTsKLSAgICB2b2lkIGRlc3Ryb3lQbHVnaW4o
KTsKIAogICAgIHZvaWQgdmlld0dlb21ldHJ5RGlkQ2hhbmdlKCk7CiAgICAgdm9pZCB2aWV3Vmlz
aWJpbGl0eURpZENoYW5nZSgpOwpAQCAtMTY0LDYgKzE2Myw5IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZyYgY29va2llU3RyaW5nKTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRp
b25JbmZvKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUs
IFN0cmluZyYgcGFzc3dvcmQpOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0Vu
YWJsZWQoKTsKKyAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIGFzeW5jaHJvbm91c1BsdWdpbklu
aXRpYWxpemF0aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJv
b2wgYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCB2b2lkIHByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCk7CiAjaWYgUExVR0lOX0FS
Q0hJVEVDVFVSRShYMTEpCkBAIC0xNzEsNiArMTczLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgd2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBmcmFtZVJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNsaXBSZWN0LCB1aW50NjRf
dCB3aW5kb3dJRCk7CiAjZW5kaWYKIAorICAgIHZpcnR1YWwgdm9pZCBkaWRJbml0aWFsaXplUGx1
Z2luKCk7CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKTsKKwog
ICAgIC8vIFdlYkZyYW1lOjpMb2FkTGlzdGVuZXIKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNo
TG9hZChXZWJGcmFtZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZChXZWJGcmFtZSos
IGJvb2wgd2FzQ2FuY2VsbGVkKTsKQEAgLTE4MSw2ICsxODYsNyBAQCBwcml2YXRlOgogICAgIFBs
dWdpbjo6UGFyYW1ldGVycyBtX3BhcmFtZXRlcnM7CiAgICAgCiAgICAgYm9vbCBtX2lzSW5pdGlh
bGl6ZWQ7CisgICAgYm9vbCBtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb247
CiAgICAgYm9vbCBtX2lzV2FpdGluZ1VudGlsTWVkaWFDYW5TdGFydDsKICAgICBib29sIG1faXNC
ZWluZ0Rlc3Ryb3llZDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IGZkYmU2NTMuLmFhZDEzNTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAxMi0wOC0wMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nlc3Mg
cGx1Zy1pbnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBhIHBsdWctaW4gd2l0aCBhbiBOUFBfTmV3IHRoYXQgdGFrZXMg
NTUwbXMgKGEgcmVhc29uYWJsZSB0cmFkZS1vZmYgYmV0d2VlbiBhIHNvbGlkIHRlc3QgYW5kIGEg
c2xvdyBydW5uaW5nIHRlc3QpCisgICAgICAgIGZvciB0ZXN0aW5nIGFzeW5jaHJvbm91cyBwbHVn
LWluIGluaXRpYWxpemF0aW9uLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvU2xvd05QUE5ldy5jcHA6IENvcGllZCBmcm9tIFNv
dXJjZS9XZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMuaC4KKyAgICAgICAgKFNsb3dOUFBOZXcpOgorICAgICAgICAoU2xvd05QUE5ldzo6U2xvd05Q
UE5ldyk6CisgICAgICAgIChTbG93TlBQTmV3OjpOUFBfTmV3KToKKwogMjAxMi0wOC0wNiAgQmFs
YXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV1RSIHNob3VsZCBi
ZSBhYmxlIHRvIGxvYWQgZXh0ZXJuYWwgcmVzb3VyY2VzCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agppbmRleCA0ODEwNjRlLi5iNzkwNGY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTY3LDYgKzY3LDcgQEAKIAkJNDQzNzczMEUxMjVDQkMzNjAwQUFFMDJDIC8qIFdlYkFyY2hpdmVE
dW1wU3VwcG9ydC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEE5OTc4MzBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNw
cCAqLzsgfTsKIAkJNDQzNzczMEYxMjVDQkM0RDAwQUFFMDJDIC8qIFdlYkFyY2hpdmVEdW1wU3Vw
cG9ydC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRB
OTk3ODIwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovOyB9Owog
CQk0QUQ2QTExNDEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDRBRDZBMTEzMTNDODEyNDAwMEVBOTcz
NyAvKiBGb3JtVmFsdWUuY3BwICovOyB9OworCQk1MTA2ODAzRTE1Q0M3QjEwMDAxQThBMjMgLyog
U2xvd05QUE5ldy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTA2ODAzRDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi87IH07CiAJ
CTUxNUY0MjlDMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJp
ZGVzQWxsUHJvcGVydGllcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTVGNDI5QjE1QzA3ODcyMDA3QzhGOTAgLyogUGx1Z2luU2NyaXB0YWJsZU9i
amVjdE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwICovOyB9OwogCQk1MTg1RjZCMjEwNzE0RTA3
MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4NUY2OUYxMDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlE
ZWxlZ2F0ZS5tbSAqLzsgfTsKIAkJNTE4NUY2QjMxMDcxNEUxMjAwN0FBMzkzIC8qIEhpc3RvcnlE
ZWxlZ2F0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE4NUY2OUUxMDcxNEE1NzAwN0FBMzkzIC8qIEhpc3RvcnlEZWxlZ2F0ZS5oICovOyB9OwpAQCAt
Mjc4LDYgKzI3OSw3IEBACiAJCTQ0QTk5NzgyMEZDREU4NjQwMDU4MEYxMCAvKiBXZWJBcmNoaXZl
RHVtcFN1cHBvcnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gV2ViQXJjaGl2
ZUR1bXBTdXBwb3J0Lmg7IHBhdGggPSBjZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDRBOTk3ODMwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFy
Y2hpdmVEdW1wU3VwcG9ydC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBwYXRoID0gY2YvV2ViQXJjaGl2ZUR1bXBTdXBw
b3J0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNEFENkExMTMxM0M4MTI0MDAw
RUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBGb3JtVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTA2ODAz
RDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBTbG93TlBQTmV3LmNwcDsgcGF0aCA9IFRlc3ROZXRzY2FwZVBsdWdJ
bi9UZXN0cy9TbG93TlBQTmV3LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1
MTVGNDI5QjE1QzA3ODcyMDA3QzhGOTAgLyogUGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRl
c0FsbFByb3BlcnRpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
UGx1Z2luU2NyaXB0YWJsZU9iamVjdE92ZXJyaWRlc0FsbFByb3BlcnRpZXMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg1RjY5RTEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9y
eURlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEhpc3RvcnlEZWxl
Z2F0ZS5oOyBwYXRoID0gbWFjL0hpc3RvcnlEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IGZpbGVFbmNvZGluZyA9IDQ7IG5hbWUgPSBIaXN0b3J5RGVsZWdhdGUu
bW07IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNTUzLDYgKzU1NSw3IEBACiAJCQkJMUFEOUQyRkQxMjAyODQwOTAwMUE3MEQxIC8q
IFBsdWdpblNjcmlwdGFibGVOUE9iamVjdEludm9rZURlZmF1bHQuY3BwICovLAogCQkJCTUxNUY0
MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxs
UHJvcGVydGllcy5jcHAgKi8sCiAJCQkJMUExRTQyOTYxNDExNDFDNDAwMzg4NzU4IC8qIFByaXZh
dGVCcm93c2luZy5jcHAgKi8sCisJCQkJNTEwNjgwM0QxNUNDN0IxMDAwMUE4QTIzIC8qIFNsb3dO
UFBOZXcuY3BwICovLAogCQkJKTsKIAkJCXBhdGggPSBUZXN0czsKIAkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CkBAIC05MDIsNiArOTA1LDcgQEAKIAkJCQkxQTFFNDI5ODE0MTE0MUM0MDAzODg3
NTggLyogUHJpdmF0ZUJyb3dzaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNjZDMzUxMTQ1
NzZBOTIwMDk5QTExNSAvKiBDb250ZW50c1NjYWxlRmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTUxNUY0MjlDMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3Zl
cnJpZGVzQWxsUHJvcGVydGllcy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTA2ODAzRTE1Q0M3
QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93TlBQTmV3
LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9TbG93
TlBQTmV3LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDJhNzZhCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1Rlc3RzL1Nsb3dOUFBOZXcuY3BwCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiUGx1Z2luVGVzdC5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK2NsYXNzIFNsb3dOUFBOZXcgOiBwdWJsaWMgUGx1Z2luVGVzdCB7CitwdWJs
aWM6CisgICAgU2xvd05QUE5ldyhOUFAgbnBwLCBjb25zdCBzdHJpbmcmIGlkZW50aWZpZXIpCisg
ICAgICAgIDogUGx1Z2luVGVzdChucHAsIGlkZW50aWZpZXIpCisgICAgeworICAgIH0KKyAgICAK
K3ByaXZhdGU6CisgICAgCisgICAgdmlydHVhbCBOUEVycm9yIE5QUF9OZXcoTlBNSU1FVHlwZSBw
bHVnaW5UeXBlLCB1aW50MTZfdCBtb2RlLCBpbnQxNl90IGFyZ2MsIGNoYXIqIGFyZ25bXSwgY2hh
ciogYXJndltdLCBOUFNhdmVkRGF0YSAqc2F2ZWQpCisgICAgeworICAgICAgICB1c2xlZXAoNTUw
MDAwKTsKKyAgICAgICAgcmV0dXJuIE5QRVJSX05PX0VSUk9SOworICAgIH0KK307CisKK3N0YXRp
YyBQbHVnaW5UZXN0OjpSZWdpc3RlcjxTbG93TlBQTmV3PiBzbG93TlBQTmV3KCJzbG93LW5wcC1u
ZXciKTsK
</data>
<flag name="review"
          id="166545"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>156785</attachid>
            <date>2012-08-06 16:23:02 -0700</date>
            <delta_ts>2012-08-06 16:29:01 -0700</delta_ts>
            <desc>Part 3 - v5 - Add the feature, address review comments, and maybe have 100% working builds</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>68783</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlYTAyZGE2Li44MzAxZTAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDgt
MDMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIE91dC1vZi1w
cm9jZXNzIHBsdWctaW5zIHNob3VsZCBzdXBwb3J0IGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlv
bgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTA1OTg1OTQ+IGFuZCBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI5MTkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgdG8gbWFrZSBzdXJlIGEgcGx1Zy1pbiB3
aXRoIGEgbG9uZyBydW5uaW5nIE5QUF9OZXcgZG9lcyBub3QgYmxvY2sgdGhlIHdlYiB0aHJlYWQu
CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMt
cGx1Z2luLWluaXRpYWxpemF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVs
dGlwbGUuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Ns
b3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3Vz
LXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbDogQWRkZWQuCisKIDIw
MTItMDgtMDYgIEFuZHJlaSBQb2VuYXJ1ICA8cG9lbmFydUBhZG9iZS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogUHJvdG9jb2w6IEFkZCAibmFtZWRGbG93Q3JlYXRlZCIgYW5kICJuYW1l
ZEZsb3dSZW1vdmVkIiBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5
bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxMWM1NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4t
aW5pdGlhbGl6YXRpb24tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNyBAQAorVGVzdCB0aGF0IGxv
YWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAoNTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9u
ZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nlc3MKKworT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorCisKK1BBU1MgQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudCB0b29rIHVuZGVyIDUwMG1z
LCBwbHVnLWluIGluaXRpYWxpemluZyBhc3luY2hyb25vdXNseS4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdp
bi1pbml0aWFsaXphdGlvbi1tdWx0aXBsZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0
aW9uLW11bHRpcGxlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi40MDk2ZWVmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
LXdrMi9wbHVnaW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi1tdWx0
aXBsZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACitUaGlzIGZpbmlzaGVzIHRoZSB0ZXN0
IGFuZCBzZWUncyBob3cgbXVjaCB0aW1lIHBhc3NlZC4KK09ubHkgb25lIG9mIHRoZSAyMCBwbHVn
LWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBfRGVzdHJveSBydW4gdG8g
Y29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuCitUaGUgb3RoZXIgMTkgc2hvdWxk
IG5ldmVyIGhhdmUgYmVlbiBpbnN0YW50aWF0ZWQgYXQgYWxsLgorUEFTUyBBcHBlbmRpbmcgcGx1
Zy1pbiBlbGVtZW50cyB0aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIGJldHdlZW4gNTUwbXMgYW5k
IDExMDBtcyBzdWdnZXN0aW5nIGEgc2luZ2xlIHBsdWctaW4gd2FzIGNyZWF0ZWQgYW5kIHRoZW4g
ZGVzdHJveWVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvc2xvdy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0
bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvc2xvdy9hc3luY2hyb25v
dXMtcGx1Z2luLWluaXRpYWxpemF0aW9uLW11bHRpcGxlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2Y4MWNhMQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlh
bGl6YXRpb24tbXVsdGlwbGUuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KKworZnVuY3Rpb24g
Y3JlYXRlVGVzdFBsdWdpbih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94
LXdlYmtpdC10ZXN0LW5ldHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0Jywg
dGVzdE5hbWUpOworCisgICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgp
IAoreworICAgIGlmICghd2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMg
dGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCBy
ZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIud2FpdFVudGls
RG9uZSgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5bmNo
cm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkIiwgIjEiKTsKKyAgICB0ZXN0UnVubmVy
Lm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0MkFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMiLCAiMSIpOworCisgICAgLy8gR3JhYiB0aGUgdGltZSBi
ZWZvcmUgd2UgY3JlYXRlIGFuZCBhcHBlbmQgMjAgc2xvdyBwbHVnLWlucy4KKyAgICBzZXNzaW9u
U3RvcmFnZS5iZWZvcmVEYXRlID0gKG5ldyBEYXRlKS52YWx1ZU9mKCk7CisgICAgCisgICAgdmFy
IHBsdWdpbnMgPSBuZXcgQXJyYXkoKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kp
CisgICAgICAgIHBsdWdpbnNbaV0gPSBjcmVhdGVUZXN0UGx1Z2luKCdzbG93LW5wcC1uZXcnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDIwOyArK2kpCisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQocGx1Z2luc1tpXSk7CisKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQg
c28gdGhlIHBsdWctaW5zIGluc3RhbnRpYXRlCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHku
b2Zmc2V0VG9wOworICAgIAorICAgIHNldFRpbWVvdXQoImxvY2F0aW9uLmhyZWYgPSAncmVzb3Vy
Y2VzL2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24tbXVsdGlwbGUtZmluaXNoLmh0
bWwnIiwgMCk7Cit9CisKK2Rlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IGxvYWRpbmcgbXVsdGlwbGUg
c2xvdyBpbml0aWFsaXppbmcgcGx1Zy1pbnMgYW5kIHRoZW4gbmF2aWdhdGluZyBvbmx5IGhhcyB0
byB3YWl0IGZvciBvbmUgb2YgdGhlbSB0byBmaW5pc2ggYmVpbmcgZGVzdHJveWVkLiIpOworCis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lu
cy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5pdGlhbGl6YXRpb24uaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9zbG93L2FzeW5jaHJvbm91cy1wbHVnaW4taW5p
dGlhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmI4
NWU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL3Nsb3cvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlvbi5odG1sCkBAIC0wLDAg
KzEsNDkgQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9k
aXY+Cis8c2NyaXB0PgorCitmdW5jdGlvbiBjcmVhdGVUZXN0UGx1Z2luKHRlc3ROYW1lKQorewor
ICAgIHZhciBwbHVnaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJlbWJlZCIpOworICAgIHBs
dWdpbi50eXBlID0gImFwcGxpY2F0aW9uL3gtd2Via2l0LXRlc3QtbmV0c2NhcGUiOworICAgIHBs
dWdpbi5zZXRBdHRyaWJ1dGUoJ3Rlc3QnLCB0ZXN0TmFtZSk7CisKKyAgICByZXR1cm4gcGx1Z2lu
OworfQorCitmdW5jdGlvbiBydW5UZXN0KCkgCit7CisgICAgaWYgKCF3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5IHJ1biBmcm9tIHdpdGhpbiBE
dW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3ROZXRzY2FwZVBsdWdpbi5cbiIp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdDJBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJs
ZWQiLCAiMSIpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXQyQXN5
bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyIsICIxIik7
CisKKyAgICB2YXIgYmVmb3JlRGF0ZSA9IG5ldyBEYXRlOworICAgIAorICAgIHBsdWdpbiA9IGNy
ZWF0ZVRlc3RQbHVnaW4oJ3Nsb3ctbnBwLW5ldycpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQocGx1Z2luKTsKKyAgICAvLyBUcnkgdG8gZm9yY2UgYSBsYXlvdXQgc28gdGhlIHBsdWct
aW4gaW5zdGFudGlhdGVzCisgICAgdmFyIGZvbyA9IGRvY3VtZW50LmJvZHkub2Zmc2V0VG9wOwor
ICAgIAorICAgIHZhciBhZnRlckRhdGUgPSBuZXcgRGF0ZTsKKyAgICAKKyAgICBpZiAoYWZ0ZXJE
YXRlIC0gYmVmb3JlRGF0ZSA+IDUwMCkKKyAgICAgICAgdGVzdEZhaWxlZCgiQXBwZW5kaW5nIHBs
dWctaW4gZWxlbWVudCB0b29rIG92ZXIgNTAwbXMgKCIgKyAoYWZ0ZXJEYXRlIC0gYmVmb3JlRGF0
ZSkgKyAibXMpIHNvIHRoZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXplZCBz
eW5jaHJvbm91c2x5Iik7CisgICAgZWxzZQorICAgICAgICB0ZXN0UGFzc2VkKCJBcHBlbmRpbmcg
cGx1Zy1pbiBlbGVtZW50IHRvb2sgdW5kZXIgNTAwbXMsIHBsdWctaW4gaW5pdGlhbGl6aW5nIGFz
eW5jaHJvbm91c2x5LiIpOworICAgIAorICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworfQor
CitkZXNjcmlwdGlvbigiVGVzdCB0aGF0IGxvYWRpbmcgYSBzbG93IGxvYWRpbmcgcGx1Zy1pbiAo
NTUwbXMgc2Vjb25kIHNsZWVwIGluIE5QUF9uZXcpIGRvZXNuJ3QgYmxvY2sgdGhlIFdlYlByb2Nl
c3MiKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMt
d2syL3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXph
dGlvbi1tdWx0aXBsZS1maW5pc2guaHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9zbG93L3Jlc291cmNlcy9hc3luY2hyb25vdXMtcGx1Z2luLWluaXRpYWxpemF0aW9u
LW11bHRpcGxlLWZpbmlzaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjZhZmJhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2sy
L3BsdWdpbnMvc2xvdy9yZXNvdXJjZXMvYXN5bmNocm9ub3VzLXBsdWdpbi1pbml0aWFsaXphdGlv
bi1tdWx0aXBsZS1maW5pc2guaHRtbApAQCAtMCwwICsxLDMzIEBACis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi8uLi8uLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8L2hlYWQ+CisKKzxib2R5IG9ubG9hZD0ibG9hZGVkKCk7Ij4KK1RoaXMgZmluaXNo
ZXMgdGhlIHRlc3QgYW5kIHNlZSdzIGhvdyBtdWNoIHRpbWUgcGFzc2VkLjxicj4KK09ubHkgb25l
IG9mIHRoZSAyMCBwbHVnLWlucyBzaG91bGQgaGF2ZSBoYWQgaXQncyBOUFBfTmV3IGFuZCBOUFBf
RGVzdHJveSBydW4gdG8gY29tcGxldGlvbiwgdGFraW5nIGEgYml0IG92ZXIgNTUwbXMuPGJyPgor
VGhlIG90aGVyIDE5IHNob3VsZCBuZXZlciBoYXZlIGJlZW4gaW5zdGFudGlhdGVkIGF0IGFsbC48
YnI+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvYm9keT4KKzxzY3JpcHQ+CisKK2Z1bmN0
aW9uIGxvYWRlZCgpIHsKKyAgICBpZiAoIXdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGFs
ZXJ0KCJDYW4gb25seSBiZSBydW4gdXNpbmcgV2ViS2l0VGVzdFJ1bm5lciIpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIHZhciB0aW1lTGFwc2VkID0gKG5ldyBEYXRlKS52YWx1
ZU9mKCkgLSBzZXNzaW9uU3RvcmFnZS5iZWZvcmVEYXRlOworCisgICAgaWYgKHRpbWVMYXBzZWQg
PiAxMTAwKQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0
aGVuIG5hdmlnYXRpbmcgYXdheSB0b29rIG92ZXIgMTEwMG1zICgiICsgdGltZUxhcHNlZCArICJt
cykgc28gbW9yZSB0aGFuIG9uZSBwbHVnLWluIHdhcyBwcm9iYWJseSBiZWluZyBpbml0aWFsaXpl
ZCBiZWZvcmUgYW55IHdlcmUgZGVzdHJveWVkLiIpOworICAgIGlmICh0aW1lTGFwc2VkIDwgNTUw
KQorICAgICAgICB0ZXN0RmFpbGVkKCJBcHBlbmRpbmcgcGx1Zy1pbiBlbGVtZW50cyB0aGVuIG5h
dmlnYXRpbmcgYXdheSB0b29rIGxlc3MgdGhhbiA1NTBtcyAoIiArIHRpbWVMYXBzZWQgKyAibXMp
LiAgV2UgZXhwZWN0ZWQgYSBzaW5nbGUgcGx1Zy1pbiB0byBiZSBjcmVhdGVkIGFuZCB0aGVuIGRl
c3Ryb3llZCBhbmQgdGhhdCBkaWRuJ3QgaGFwcGVuLiIpOworICAgIGVsc2UKKyAgICAgICAgdGVz
dFBhc3NlZCgiQXBwZW5kaW5nIHBsdWctaW4gZWxlbWVudHMgdGhlbiBuYXZpZ2F0aW5nIGF3YXkg
dG9vayBiZXR3ZWVuIDU1MG1zIGFuZCAxMTAwbXMgc3VnZ2VzdGluZyBhIHNpbmdsZSBwbHVnLWlu
IHdhcyBjcmVhdGVkIGFuZCB0aGVuIGRlc3Ryb3llZC4iKTsKKworICAgIHRlc3RSdW5uZXIubm90
aWZ5RG9uZSgpOworfQorCis8L3NjcmlwdD4KKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggOTMwMDViNi4uN2Yw
ODc4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1MyBAQAorMjAxMi0wOC0wMyAgQnJhZHkgRWlk
c29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgT3V0LW9mLXByb2Nlc3MgcGx1Zy1p
bnMgc2hvdWxkIHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMDU5ODU5ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjkxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIElmIGEgcGx1Zy1pbiBoYXMgYmVlbiBkZWVtZWQgY2FwYWJsZSBvZiBhc3luY2hy
b25vdXMgaW5pdGlhbGl6YXRpb24gd2hlbiBydW4gb3V0IG9mIHByb2Nlc3MuLi4KKyAgICAgICAg
Li4udGhlbiBkbyB0aGF0IQorCisgICAgICAgIEFkZCBmbGFncyB0byBjb21tdW5pY2F0ZSB0aGF0
IHRoaXMgcGx1Z2luIGNyZWF0ZSBpcyBtZWFudCB0byBjcmVhdGUgYSBwbHVnLWluIGFscmVhZHkg
cmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IGFuZAorICAgICAgICB0byBpbmNsdWRlIHdoZXRoZXIg
b3Igbm90IHRoZSBpbml0aWFsaXplIGNhbGwgc2hvdWxkIGluY2x1ZGUgYW4gYXJ0aWZpY2lhbCBk
ZWxheSAoZm9yIHRlc3RpbmcpOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAoUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToK
KworICAgICAgICBBZGQgYSBmbGFnIGZvciB0aGUgVUkgUHJvY2VzcyB0byB0ZWxsIHRoZSBQbHVn
aW5Qcm9jZXNzIHRoYXQgaXQgc3VwcG9ydHMgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgor
ICAgICAgICAqIFNoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpQ
bHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBTaGFyZWQv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKToKKworICAgICAgICBBbGxvdyB0aGUgVUkgUHJv
Y2VzcyB0byBwYXNzIGFsb25nIHdoZXRoZXIgdGhlIHBsdWctb24gc3VwcG9ydHMgYXN5bmNocm9u
b3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6cGx1
Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKToKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAg
ICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChQbHVn
aW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9QbHVnaW5zL21hYy9QbHVnaW5Q
cm9jZXNzUHJveHlNYWMubW06CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3NQcm94eTo6
cGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICBBbGxvdyB0aGUgUGx1Z2luIFBy
b2Nlc3MgdG8gcGFzcyB3aGV0aGVyIG9yIG5vdCBpdCBzdXBwb3J0cyBhc3luY2hyb25vdXMgaW5p
dGlhbGl6YXRpb24sIG9yaWdpbmFsbHkgZGV0ZXJtaW5lZAorICAgICAgICBpbiB0aGUgVUkgUHJv
Y2VzcywgYWxvbmcgdG8gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Qcm9jZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6UGx1Z2lu
UHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb2Nlc3M6OmluaXRpYWxpemVQbHVn
aW5Qcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5o
OgorICAgICAgICAoUGx1Z2luUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgIEFkZCBhIGZsYWcgc28g
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHJlbWVtYmVyIHdoZXRoZXIgb3Igbm90IHRoZXkgc3Vw
cG9ydCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb246CisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OnNldFN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblByb2Nlc3NDb25uZWN0aW9uOjpzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKToKKyAgICAgICAgKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKToKKworICAgICAgICBD
cmVhdGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25zIHdpdGggdGhlIGZsYWcgcGFzc2VkIGRvd24g
ZnJvbSB0aGUgUGx1Z2luUHJvY2VzcyBhYm91dCB3aGV0aGVyIG9yIG5vdCB0aGV5CisgICAgICAg
IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uOgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3ND
b25uZWN0aW9uKToKKworICAgICAgICBSZXNwb25kaW5nIHRvIG1lc3NhZ2VzIGZyb20gdGhlIFdl
YlByb2Nlc3MsIG1vc3Qgb2YgdGhlIGhlYXZ5IGRlY2lzaW9uIG1ha2luZyBpbiBhc3luY2hyb25v
dXMgaW5pdGlhbGl6YXRpb24gaXMgaGVyZToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1dlYlBy
b2Nlc3NDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6YXN5bmNocm9ub3VzSW5zdGFu
Y2VJRHNUb0lnbm9yZSk6IEEgc2V0IG9mIGluc3RhbmNlIElEcyB0byAqbm90KiBjcmVhdGUgYXN5
bmNocm9ub3VzbHkgbGF0ZXIgYmVjYXVzZSB3ZSBrbm93CisgICAgICAgICAgd2Ugbm8gbG9uZ2Vy
IG5lZWQgdG8uCisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
Q29ubmVjdGlvbjo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6ZGVzdHJveVBsdWdpbik6IElmIHRoZSBwbHVnLWluIGRvZXNuJ3QgZXhp
c3QgYnV0IGlzIGF3YWl0aW5nIGFzeW5jaHJvbm91cyBjcmVhdGlvbiwgZmxhZyAKKyAgICAgICAg
ICB0aGlzIGluc3RhbmNlIElEIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1Z2luSW50ZXJuYWwp
OiBSZW5hbWVkIGZyb20gY3JlYXRlUGx1Z2luLCBhY3R1YWxseSBkb2VzIHRoZSBwbHVnLWluIGNy
ZWF0aW9uLgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1
Z2luKTogQWRkcyB0aGUgaW5zdGFuY2UgSUQgdG8gdGhlICJhc3luY2hyb25vdXMgaWdub3JlIHNl
dCIgdGhlbiBjYWxscyBjcmVhdGVQbHVnaW5JbnRlcm5hbC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc0Nvbm5lY3Rpb246OmNyZWF0ZVBsdWdpbkFzeW5jaHJvbm91c2x5KTogSWYgdGhlIGlu
c3RhbmNlIElEIGlzIGluIHRoZSAiYXN5bmNocm9ub3VzIGlnbm9yZSBzZXQiLCByZW1vdmUgaXQg
ZnJvbSB0aGUKKyAgICAgICAgICBzZXQgYW5kIGRvIG5vdGhpbmcgZWxzZS4gT3RoZXJ3aXNlLCBw
ZXJmb3JtIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgdGhlbiBzZW5kIHRoZSBhc3luY2hyb25vdXMg
cmVzdWx0IGJhY2sgdG8gdGhlIFdlYlByb2Nlc3MuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24pOgor
ICAgICAgICAqIFBsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisKKyAgICAgICAgQWRkIGhlbHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0
aGF0IGFsbCBwbHVnLWluIHR5cGVzIG11c3QgaW1wbGVtZW50OgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFBsdWdpbik6CisKKyAgICAgICAgQWRkIGhl
bHBlcnMgZm9yIGFzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiB0aGF0IHBsdWctaW4gY29udHJv
bGxlcnMgY2FuIG92ZXJyaWRlOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5D
b250cm9sbGVyLmg6CisgICAgICAgIChQbHVnaW5Db250cm9sbGVyKToKKyAgICAgICAgKFdlYktp
dDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFi
bGVkKToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlcjo6YXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucyk6CisgICAgICAgIChXZWJLaXQ6
OlBsdWdpbkNvbnRyb2xsZXI6OmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5h
YmxlZCk6CisKKyAgICAgICAgR2l2ZSBQbHVnaW5Qcm94eXMgdGhlIGFiaWxpdHkgdG8gaW5pdGlh
bGl6ZSBlaXRoZXIgYXN5bmNocm9ub3VzbHkgb3Igc3luY2hyb25vdXNseSwgYW5kIGFsc28gdGhl
IGFiaWxpdHkgdG8gc3luY2hyb25vdXNseQorICAgICAgICB3YWl0IGZvciBwcmV2aW91c2x5IGFz
eW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiAoaW4gY2FzZSB0aGVpciBQbHVnaW5TY3JpcHRPYmpl
Y3QgaXMgcmVxdWlyZWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpQbHVnaW5Qcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKTogU3RvcmUgdGhlIHBsdWdpbiBj
cmVhdGlvbiBwYXJhbWV0ZXJzIGFzIGEgbWVtYmVyLCBhbmQgZGVjaWRlIHdoZXRoZXIgdG8gdHJ5
IHN5bmNocm9ub3VzCisgICAgICAgICAgb3IgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6OmNhbkluaXRp
YWxpemVBc3luY2hyb25vdXNseSk6IEFuc3dlciBiYXNlZCBvbiBwcmVmZXJlbmNlcyBhbmQgd2hh
dCB0aGUgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gc2F5cworICAgICAgICAgIHRoYXQgaXQgc3Vw
cG9ydHMuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojp3YWl0Rm9yQXN5bmNocm9ub3Vz
SW5pdGlhbGl6YXRpb24pOiBTeW5jaHJvbm91c2x5IHdhaXQgb24gaW5pdGlhbGl6YXRpb24gd2hl
biBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICB3YXMgcHJldmlvdXNseSBy
ZXF1ZXN0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplU3luY2hy
b25vdXNseSk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRDcmVhdGVQbHVnaW4p
OiBEb3VibGUtY2hlY2sgdGhhdCB3ZSdyZSBzdGlsbCBleHBlY3RpbmcgYXN5bmNocm9ub3VzIGlu
aXRpYWxpemF0aW9uLCB0aGVuIGNhbGwKKyAgICAgICAgICB0aHJvdWdoIHRvIGRpZENyZWF0ZVBs
dWdpbkludGVybmFsLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6ZGlkQ3JlYXRlUGx1
Z2luSW50ZXJuYWwpOiBIYW5kbGUgY29tcGxldGlvbiBvZiBpbml0aWFsaXphdGlvbiAoYm90aCBz
eW5jaHJvbm91c2x5IGFuZCBhc3luY2hyb25vdXNseSkKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJveHk6OmRpZEZhaWxUb0NyZWF0ZVBsdWdpbik6IERvdWJsZS1jaGVjayB0aGF0IHdlJ3JlIHN0
aWxsIGV4cGVjdGluZyBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24sIHRoZW4gY2FsbAorICAg
ICAgICAgIHRocm91Z2ggdG8gZGlkRmFpbFRvQ3JlYXRlUGx1Z2luSW50ZXJuYWwuCisgICAgICAg
IChXZWJLaXQ6OlBsdWdpblByb3h5OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCk6IEhh
bmRsZSBmYWlsdXJlIHRvIGluaXRpYWxpemUgKGJvdGggc3luY2hyb25vdXNseSBhbmQgYXN5bmNo
cm9ub3VzbHkpCisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5OjpkZXN0cm95KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaDoKKyAgICAgICAgKFdlYktpdCk6
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppc0luaXRpYWxpemluZ0FzeW5jaHJvbm91
c2x5KToKKyAgICAgICAgKFBsdWdpblByb3h5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OlBsdWdpblZp
ZXcpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojp+UGx1Z2luVmlldyk6IEFsd2F5cyBk
ZXN0cm95IHRoZSBwbHVnLWluIGV2ZW4gaWYgaXQgaGFzbid0IGJlZW4gaW5pdGlhbGl6ZWQgeWV0
LCBhcyBpdCBtaWdodCBiZSBpbml0aWFsaXppbmcKKyAgICAgICAgICByaWdodCBub3cuCisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmluaXRpYWxpemVQbHVnaW4pOiBEb24ndCBoYW5kbGUg
dGhlIHJlc3VsdCBvZiBpbml0aWFsaXphdGlvbiBpbW1lZGlhdGVseS4gQnJlYWsgdGhhdCBvdXQg
aW4gdG8gdHdvCisgICAgICAgICAgbWV0aG9kcyB0aGF0IHdpbGwgYmUgY2FsbGVkIGxhdGVyLgor
ICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6ZGlkRmFpbFRv
SW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmRpZEluaXRp
YWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpzY3JpcHRPYmplY3Qp
OiBJZiB3ZSB0cnVseSBuZWVkIHRoZSBzY3JpcHQgb2JqZWN0LCB0aGVuIHdhaXQgZm9yIGEgc3lu
Y2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBsdWctaW4uCisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmFzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0
aW9uRW5hYmxlZEZvckFsbFBsdWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojph
cnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisgICAgICAgIChQbHVnaW5WaWV3KToKKwor
ICAgICAgICBUaGVzZSBtZXRob2RzIHNob3VsZG4ndCBiZSBjYWxsZWQgaW4gdGhlIFBsdWdpblBy
b2Nlc3MsIG9ubHkgaW4gdGhlIFdlYlByb2Nlc3M6CisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9s
bGVyUHJveHk6OmRpZEluaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0KToKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKToKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oOgor
ICAgICAgICAoUGx1Z2luQ29udHJvbGxlclByb3h5KToKKworICAgICAgICBOZXRzY2FwZVBsdWdp
biBpcyBmb3IgaW4tcHJvY2VzcyBwbHVnLWluczoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKE5ldHNjYXBlUGx1Z2luKToK
KyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OndhaXRGb3JBc3luY2hyb25vdXNJbml0
aWFsaXphdGlvbik6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc0luaXRpYWxp
emluZ0FzeW5jaHJvbm91c2x5KToKKworICAgICAgICBCdWlsdC1pbiBQREZWaWV3IGlzIGN1cnJl
bnRseSBvbmx5IGluLXByb2Nlc3M6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9C
dWlsdEluUERGVmlldy5oOgorICAgICAgICAoQnVpbHRJblBERlZpZXcpOgorICAgICAgICAoV2Vi
S2l0OjpCdWlsdEluUERGVmlldzo6d2FpdEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6QnVpbHRJblBERlZpZXc6OmlzSW5pdGlhbGl6aW5nQXN5bmNocm9u
b3VzbHkpOgorCiAyMDEyLTA4LTA2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBbV0syXVtHVEtdIEltcHJvdmVtZW50cyBmb3IgdGhlIG5ldyBz
cGVsbC1jaGVja2luZyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAppbmRleCAyNGE4Y2VlLi5hYjYwZjk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVy
UHJveHkuY3BwCkBAIC0zMTcsNiArMzE3LDE4IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclByb3h5
Ojp3aWxsU2VuZEV2ZW50VG9QbHVnaW4oKQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Cit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCit7Cisg
ICAgLy8gVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIHBsdWdpbiBpbiB0aGUgd2Vi
IHByb2Nlc3MuCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3ZvaWQgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKCkKK3sKKyAgICAvLyBUaGlz
IHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgcGx1Z2luIGluIHRoZSB3ZWIgcHJvY2Vzcy4K
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwogZmxvYXQgUGx1Z2luQ29udHJvbGxlclBy
b3h5Ojpjb250ZW50c1NjYWxlRmFjdG9yKCkKIHsKICAgICByZXR1cm4gbV9jb250ZW50c1NjYWxl
RmFjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmgKaW5kZXggYTRhZjU0My4uNDZkYTFhNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCkBAIC05MCw2
ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNlbmRFdmVudFRvUGx1Z2luKCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIE9WRVJSSURFOwogCiAjaWYgUExBVEZPUk0oTUFDKQog
ICAgIHZpcnR1YWwgdm9pZCBwbHVnaW5Gb2N1c09yV2luZG93Rm9jdXNDaGFuZ2VkKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnMuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlv
blBhcmFtZXRlcnMuY3BwCmluZGV4IGUyOWU5NzQuLmJjMmU5OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5j
cHAKQEAgLTM3LDYgKzM3LDggQEAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMoKQogICAgICwgd2luZG93TlBPYmplY3RJRCgwKQogICAgICwgY29udGVu
dHNTY2FsZUZhY3RvcigxKQogICAgICwgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQor
ICAgICwgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKGZhbHNlKQorICAgICwgYXJ0aWZp
Y2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKGZhbHNlKQogI2lmIFVTRShBQ0NF
TEVSQVRFRF9DT01QT1NJVElORykKICAgICAsIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQoZmFsc2UpCiAjZW5kaWYKQEAgLTUxLDYgKzUzLDggQEAgdm9pZCBQbHVnaW5DcmVhdGlvblBh
cmFtZXRlcnM6OmVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXIqIGVuY29kZXIpIGNvbnN0
CiAgICAgZW5jb2Rlci0+ZW5jb2RlKHVzZXJBZ2VudCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGNv
bnRlbnRzU2NhbGVGYWN0b3IpOwogICAgIGVuY29kZXItPmVuY29kZShpc1ByaXZhdGVCcm93c2lu
Z0VuYWJsZWQpOworICAgIGVuY29kZXItPmVuY29kZShhc3luY2hyb25vdXNDcmVhdGlvbkluY29t
cGxldGUpOworICAgIGVuY29kZXItPmVuY29kZShhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRp
b25EZWxheUVuYWJsZWQpOwogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAg
IGVuY29kZXItPmVuY29kZShpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKTsKQEAgLTc3
LDYgKzgxLDEyIEBAIGJvb2wgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoQ29yZUlQ
Qzo6QXJndW1lbnREZWNvZGVyKiBkZWNvZGVyLCBQbHVnaW5DCiAgICAgaWYgKCFkZWNvZGVyLT5k
ZWNvZGUocmVzdWx0LmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAorICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5hc3luY2hyb25vdXNDcmVh
dGlvbkluY29tcGxldGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWRlY29k
ZXItPmRlY29kZShyZXN1bHQuYXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQogICAgIGlmICghZGVjb2Rlci0+ZGVjb2RlKHJlc3VsdC5pc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5k
ZXggZmNkNTM0OS4uNmYwNWJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oCkBAIC02MCw2ICs2MCwxMiBAQCBz
dHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIC8vIFdoZXRoZXIgcHJpdmF0
ZSBicm93c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24uCiAgICAg
Ym9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgCisgICAgLy8gSWYgcmVxdWVzdGlu
ZyBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbiwgd2hldGhlciB0aGlzIHBsdWdpbiBoYWQgcHJl
dmlvdXNseSBiZWVuIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseQorICAgIGJvb2wgYXN5bmNocm9u
b3VzQ3JlYXRpb25JbmNvbXBsZXRlOworCisgICAgLy8gU2ltdWxhdGVkIGluaXRpYWxpemF0aW9u
IGRlbGF5IHRlc3QgYXN5bmNocm9ub3VzIHBsdWdpbiBpbml0aWFsaXphdGlvbgorICAgIGJvb2wg
YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkOwogCiAjaWYgVVNFKEFD
Q0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIC8vIFdoZXRoZXIgYWNjZWxlcmF0ZWQgY29tcG9z
aXRpbmcgaXMgZW5hYmxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
blByb2Nlc3MuY3BwCmluZGV4IGJiMWIzYjguLjQzNDYxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmNwcApAQCAtMzIsOCArMzIsOSBAQAogI2lu
Y2x1ZGUgIkF0dGFjaG1lbnQuaCIKICNpbmNsdWRlICJOZXRzY2FwZVBsdWdpbi5oIgogI2luY2x1
ZGUgIk5ldHNjYXBlUGx1Z2luTW9kdWxlLmgiCi0jaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc1Byb3h5
TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIgorI2luY2x1ZGUg
IlBsdWdpblByb2Nlc3NQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0Nvbm5l
Y3Rpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8
V2ViQ29yZS9SdW5Mb29wLmg+CkBAIC03NCw2ICs3NSw3IEBAIFBsdWdpblByb2Nlc3MmIFBsdWdp
blByb2Nlc3M6OnNoYXJlZCgpCiAKIFBsdWdpblByb2Nlc3M6OlBsdWdpblByb2Nlc3MoKQogICAg
IDogQ2hpbGRQcm9jZXNzKHNodXRkb3duVGltZW91dCkKKyAgICAsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbihmYWxzZSkKICNpZiBQTEFURk9STShNQUMpCiAgICAg
LCBtX2NvbXBvc2l0aW5nUmVuZGVyU2VydmVyUG9ydChNQUNIX1BPUlRfTlVMTCkKICNlbmRpZgpA
QCAtMTU5LDYgKzE2MSw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzczo6aW5pdGlhbGl6ZVBsdWdpblBy
b2Nlc3MoY29uc3QgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyCiAgICAgQVNTRVJUKCFt
X3BsdWdpbk1vZHVsZSk7CiAKICAgICBtX3BsdWdpblBhdGggPSBwYXJhbWV0ZXJzLnBsdWdpblBh
dGg7CisgICAgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uID0gcGFy
YW1ldGVycy5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwogCiAgICAg
cGxhdGZvcm1Jbml0aWFsaXplKHBhcmFtZXRlcnMpOwogfQpAQCAtMTc3LDcgKzE4MCw3IEBAIHZv
aWQgUGx1Z2luUHJvY2Vzczo6Y3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQogICAgIG1fd2Vi
UHJvY2Vzc0Nvbm5lY3Rpb25zLmFwcGVuZChjb25uZWN0aW9uLnJlbGVhc2UoKSk7CiAKICAgICBD
b3JlSVBDOjpBdHRhY2htZW50IGNsaWVudFBvcnQobGlzdGVuaW5nUG9ydCwgTUFDSF9NU0dfVFlQ
RV9NQUtFX1NFTkQpOwotICAgIG1fY29ubmVjdGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJv
Y2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihjbGllbnRQb3J0KSwgMCk7
CisgICAgbV9jb25uZWN0aW9uLT5zZW5kKE1lc3NhZ2VzOjpQbHVnaW5Qcm9jZXNzUHJveHk6OkRp
ZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNsaWVudFBvcnQsIG1fc3VwcG9ydHNBc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbiksIDApOwogI2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NP
Q0tFVFMpCiAgICAgaW50IHNvY2tldHNbMl07CiAgICAgaWYgKHNvY2tldHBhaXIoQUZfVU5JWCwg
U09DS0VUX1RZUEUsIDAsIHNvY2tldHMpID09IC0xKSB7CkBAIC0yMDksNyArMjEyLDcgQEAgdm9p
ZCBQbHVnaW5Qcm9jZXNzOjpjcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAgICAgbV93ZWJQ
cm9jZXNzQ29ubmVjdGlvbnMuYXBwZW5kKGNvbm5lY3Rpb24ucmVsZWFzZSgpKTsKIAogICAgIENv
cmVJUEM6OkF0dGFjaG1lbnQgY2xpZW50U29ja2V0KHNvY2tldHNbMF0pOwotICAgIG1fY29ubmVj
dGlvbi0+c2VuZChNZXNzYWdlczo6UGx1Z2luUHJvY2Vzc1Byb3h5OjpEaWRDcmVhdGVXZWJQcm9j
ZXNzQ29ubmVjdGlvbihjbGllbnRTb2NrZXQpLCAwKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnNlbmQo
TWVzc2FnZXM6OlBsdWdpblByb2Nlc3NQcm94eTo6RGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY2xpZW50U29ja2V0LCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b24pLCAwKTsKICNlbHNlCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Qcm9jZXNzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaAppbmRleCA2MzNiYjQxLi5iY2Jk
MjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nl
c3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpblByb2Nlc3MuaApA
QCAtOTksNiArOTksOCBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwbHVnLWluIG1vZHVsZS4KICAg
ICBSZWZQdHI8TmV0c2NhcGVQbHVnaW5Nb2R1bGU+IG1fcGx1Z2luTW9kdWxlOwogICAgIAorICAg
IGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOworICAgIAog
I2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgUExBVEZPUk0oTUFDKQogICAgIC8v
IFRoZSBNYWNoIHBvcnQgdXNlZCBmb3IgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcuCiAgICAgbWFj
aF9wb3J0X3QgbV9jb21wb3NpdGluZ1JlbmRlclNlcnZlclBvcnQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCmluZGV4IDVh
ZTgwYjkuLjE2MjFjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
V2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24uY3BwCkBAIC0zNCw3ICszNCw5IEBACiAjaW5jbHVkZSAi
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgog
I2luY2x1ZGUgIlBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJQ
bHVnaW5Qcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9SdW5Mb29wLmg+CisjaW5j
bHVkZSA8dW5pc3RkLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xNjAsNiAr
MTYyLDExIEBAIHZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmRpZFJlY2VpdmVNZXNzYWdlKENv
cmVJUEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvCiB7CiAgICAgQ29ubmVjdGlvblN0YWNr
OjpDdXJyZW50Q29ubmVjdGlvblB1c2hlciBjdXJyZW50Q29ubmVjdGlvbihjb25uZWN0aW9uU3Rh
Y2soKSwgY29ubmVjdGlvbik7CiAKKyAgICBpZiAobWVzc2FnZUlELmlzPENvcmVJUEM6Ok1lc3Nh
Z2VDbGFzc1dlYlByb2Nlc3NDb25uZWN0aW9uPigpKSB7CisgICAgICAgIGRpZFJlY2VpdmVXZWJQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2UoY29ubmVjdGlvbiwgbWVzc2FnZUlELCBhcmd1bWVudHMp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKCFhcmd1bWVudHMtPmRlc3RpbmF0
aW9uSUQoKSkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMjA4LDExICsyMTUsMjAgQEAgdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6ZGlkQ2xv
c2UoQ29yZUlQQzo6Q29ubmVjdGlvbiopCiAgICAgICAgIGRlc3Ryb3lQbHVnaW5Db250cm9sbGVy
UHJveHkocGx1Z2luQ29udHJvbGxlcnNbaV0pOwogfQogCi12b2lkIFdlYlByb2Nlc3NDb25uZWN0
aW9uOjpkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQpCit2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpkZXN0cm95UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQs
IGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlKQogewogICAgIFBsdWdpbkNvbnRy
b2xsZXJQcm94eSogcGx1Z2luQ29udHJvbGxlclByb3h5ID0gbV9wbHVnaW5Db250cm9sbGVycy5n
ZXQocGx1Z2luSW5zdGFuY2VJRCk7Ci0gICAgQVNTRVJUKHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7
Ci0KKyAgICAKKyAgICAvLyBJZiB0aGVyZSBpcyBubyBQbHVnaW5Db250cm9sbGVyUHJveHkgdGhl
biB0aGlzIHBsdWctaW4gZG9lc24ndCBleGlzdCB5ZXQgYW5kIHdlIHByb2JhYmx5IGhhdmUgbm90
aGluZyB0byBkby4KKyAgICBpZiAoIXBsdWdpbkNvbnRyb2xsZXJQcm94eSkgeworICAgICAgICAv
LyBJZiB0aGUgcGx1Z2luIHdlJ3JlIHN1cHBvc2VkIHRvIGRlc3Ryb3kgd2FzIHJlcXVlc3RlZCBh
c3luY2hyb25vdXNseSBhbmQgZG9lc24ndCBleGlzdCB5ZXQsCisgICAgICAgIC8vIHdlIG5lZWQg
dG8gZmxhZyB0aGUgaW5zdGFuY2UgSUQgc28gaXQgaXMgbm90IGNyZWF0ZWQgbGF0ZXIuCisgICAg
ICAgIGlmIChhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpCisgICAgICAgICAgICBtX2Fz
eW5jaHJvbm91c0luc3RhbmNlSURzVG9JZ25vcmUuYWRkKHBsdWdpbkluc3RhbmNlSUQpOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKICAgICBkZXN0cm95UGx1Z2luQ29u
dHJvbGxlclByb3h5KHBsdWdpbkNvbnRyb2xsZXJQcm94eSk7CiB9CiAKQEAgLTIyNSw3ICsyNDEs
NyBAQCB2b2lkIFdlYlByb2Nlc3NDb25uZWN0aW9uOjpzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChD
b3JlSVBDOjpDb25uZWN0aW9uKikKIHsKIH0KIAotdm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6
Y3JlYXRlUGx1Z2luKGNvbnN0IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYgY3JlYXRpb25QYXJh
bWV0ZXJzLCBib29sJiByZXN1bHQsIGJvb2wmIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90JiBy
ZW1vdGVMYXllckNsaWVudElEKQordm9pZCBXZWJQcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlUGx1
Z2luSW50ZXJuYWwoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJiBjcmVhdGlvblBhcmFt
ZXRlcnMsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3QmIHJl
bW90ZUxheWVyQ2xpZW50SUQpCiB7CiAgICAgT3duUHRyPFBsdWdpbkNvbnRyb2xsZXJQcm94eT4g
cGx1Z2luQ29udHJvbGxlclByb3h5ID0gUGx1Z2luQ29udHJvbGxlclByb3h5OjpjcmVhdGUodGhp
cywgY3JlYXRpb25QYXJhbWV0ZXJzKTsKIApAQCAtMjQ3LDYgKzI2Myw1OCBAQCB2b2lkIFdlYlBy
b2Nlc3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzJiBjcmVhdGlvbgogI2VuZGlmCiB9CiAKK3ZvaWQgV2ViUHJvY2Vzc0Nvbm5lY3Rpb246OmNy
ZWF0ZVBsdWdpbihjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1l
dGVycywgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCYgcmVt
b3RlTGF5ZXJDbGllbnRJRCkKK3sKKyAgICBQbHVnaW5Db250cm9sbGVyUHJveHkqIHBsdWdpbkNv
bnRyb2xsZXJQcm94eSA9IG1fcGx1Z2luQ29udHJvbGxlcnMuZ2V0KGNyZWF0aW9uUGFyYW1ldGVy
cy5wbHVnaW5JbnN0YW5jZUlEKTsKKworICAgIC8vIFRoZSBwbHVnLWluIHdlJ3JlIGJlaW5nIGFz
a2VkIHRvIGNyZWF0ZSBzeW5jaHJvbm91c2x5IG1pZ2h0IGFscmVhZHkgZXhpc3QgaWYgd2UganVz
dCBmaW5pc2hlZCBjcmVhdGluZyBpdCBhc3luY2hyb25vdXNseS4KKyAgICAvLyBJbiB0aGF0IGNh
c2Ugd2UgbmVlZCB0byBub3QgY3JlYXRlIGl0IGFnYWluIChidXQgYWxzbyBuZWVkIHRvIHJldHVy
biB0aGUgY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBpdHMgY3JlYXRpb24pLgorICAgIGlmIChw
bHVnaW5Db250cm9sbGVyUHJveHkpIHsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAg
d2FudHNXaGVlbEV2ZW50cyA9IHBsdWdpbkNvbnRyb2xsZXJQcm94eS0+d2FudHNXaGVlbEV2ZW50
cygpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICAgICAgcmVtb3RlTGF5ZXJDbGllbnRJRCA9IHBs
dWdpbkNvbnRyb2xsZXJQcm94eS0+cmVtb3RlTGF5ZXJDbGllbnRJRCgpOworI2VuZGlmCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgLy8gVGhlIHBsdWdpbiB3ZSdyZSBzdXBwb3Nl
ZCB0byBjcmVhdGUgbWlnaHQgaGF2ZSBiZWVuIHJlcXVlc3RlZCBhc3luY2hyb25vdXNseSBiZWZv
cmUuCisgICAgLy8gSW4gdGhhdCBjYXNlIHdlIG5lZWQgdG8gY3JlYXRlIGl0IHN5bmNocm9ub3Vz
bHkgbm93IGJ1dCBmbGFnIHRoZSBpbnN0YW5jZSBJRCBzbyB3ZSBkb24ndCByZWNyZWF0ZSBpdCBh
c3luY2hyb25vdXNseSBsYXRlci4KKyAgICBpZiAoY3JlYXRpb25QYXJhbWV0ZXJzLmFzeW5jaHJv
bm91c0NyZWF0aW9uSW5jb21wbGV0ZSkKKyAgICAgICAgbV9hc3luY2hyb25vdXNJbnN0YW5jZUlE
c1RvSWdub3JlLmFkZChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCk7CisgICAg
CisgICAgY3JlYXRlUGx1Z2luSW50ZXJuYWwoY3JlYXRpb25QYXJhbWV0ZXJzLCByZXN1bHQsIHdh
bnRzV2hlZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOworfQorCit2b2lkIFdlYlByb2Nl
c3NDb25uZWN0aW9uOjpjcmVhdGVQbHVnaW5Bc3luY2hyb25vdXNseShjb25zdCBQbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMmIGNyZWF0aW9uUGFyYW1ldGVycykKK3sKKyAgICAvLyBJbiB0aGUgdGlt
ZSBzaW5jZSB0aGlzIHBsdWdpbiB3YXMgcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5IHdlIG1pZ2h0
IGhhdmUgY3JlYXRlZCBpdCBzeW5jaHJvbm91c2x5IG9yIGRlc3Ryb3llZCBpdC4KKyAgICAvLyBJ
biBlaXRoZXIgb2YgdGhvc2UgY2FzZXMgd2UgbmVlZCB0byBpZ25vcmUgdGhpcyBjcmVhdGlvbiBy
ZXF1ZXN0LgorICAgIGlmIChtX2FzeW5jaHJvbm91c0luc3RhbmNlSURzVG9JZ25vcmUuY29udGFp
bnMoY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNlSUQpKSB7CisgICAgICAgIG1fYXN5
bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZS5yZW1vdmUoY3JlYXRpb25QYXJhbWV0ZXJzLnBs
dWdpbkluc3RhbmNlSUQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIC8vIFRo
aXMgdmVyc2lvbiBvZiBDcmVhdGVQbHVnaW4gaXMgb25seSB1c2VkIGJ5IHBsdWctaW5zIHRoYXQg
YXJlIGtub3duIHRvIGJlaGF2ZSB3aGVuIHN0YXJ0ZWQgYXN5bmNocm9ub3VzbHkuCisgICAgYm9v
bCByZXN1bHQgPSBmYWxzZTsKKyAgICB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEID0gMDsK
KyAgICBib29sIHdhbnRzV2hlZWxFdmVudHMgPSBmYWxzZTsKKyAgICAKKyAgICBpZiAoY3JlYXRp
b25QYXJhbWV0ZXJzLmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZCkg
eworICAgICAgICB1bnNpZ25lZCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheSA9
IDU7CisgICAgICAgIHNsZWVwKGFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5KTsK
KyAgICB9CisKKyAgICBjcmVhdGVQbHVnaW5JbnRlcm5hbChjcmVhdGlvblBhcmFtZXRlcnMsIHJl
c3VsdCwgd2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCk7CisKKyAgICBpZiAo
IXJlc3VsdCkgeworICAgICAgICBtX2Nvbm5lY3Rpb24tPnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVn
aW5Qcm94eTo6RGlkRmFpbFRvQ3JlYXRlUGx1Z2luKCksIE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6
RGlkRmFpbFRvQ3JlYXRlUGx1Z2luOjpSZXBseSgpLCBjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2lu
SW5zdGFuY2VJRCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX2Nvbm5lY3Rpb24t
PnNlbmRTeW5jKE1lc3NhZ2VzOjpQbHVnaW5Qcm94eTo6RGlkQ3JlYXRlUGx1Z2luKHdhbnRzV2hl
ZWxFdmVudHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpLCBNZXNzYWdlczo6UGx1Z2luUHJveHk6OkRp
ZENyZWF0ZVBsdWdpbjo6UmVwbHkoKSwgY3JlYXRpb25QYXJhbWV0ZXJzLnBsdWdpbkluc3RhbmNl
SUQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmIC8vIEVOQUJMRShQTFVH
SU5fUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2Vi
UHJvY2Vzc0Nvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24uaAppbmRleCBmMzg0NjcxLi41M2NhMWU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1dlYlByb2Nlc3NDb25uZWN0aW9uLmgKKysrIGIvU291
cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNzQ29ubmVjdGlvbi5oCkBAIC0zMCw2
ICszMCw3IEBACiAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiUGx1Z2luLmgi
CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTY3LDE0ICs2OCwxOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBzeW5jTWVzc2FnZVNlbmRUaW1lZE91dChDb3JlSVBDOjpDb25uZWN0aW9uKik7
CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzLgorICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlByb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZShDb3JlSVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2Fn
ZUlELCBDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5j
V2ViUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBD
OjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpB
cmd1bWVudEVuY29kZXI+Jik7CiAgICAgdm9pZCBjcmVhdGVQbHVnaW4oY29uc3QgUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzJiwgYm9vbCYgcmVzdWx0LCBib29sJiB3YW50c1doZWVsRXZlbnRzLCB1
aW50MzJfdCYgcmVtb3RlTGF5ZXJDbGllbnRJRCk7Ci0gICAgdm9pZCBkZXN0cm95UGx1Z2luKHVp
bnQ2NF90IHBsdWdpbkluc3RhbmNlSUQpOworICAgIHZvaWQgY3JlYXRlUGx1Z2luQXN5bmNocm9u
b3VzbHkoY29uc3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzJik7CisgICAgdm9pZCBkZXN0cm95
UGx1Z2luKHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQsIGJvb2wgYXN5bmNocm9ub3VzQ3JlYXRp
b25JbmNvbXBsZXRlKTsKKyAgICAKKyAgICB2b2lkIGNyZWF0ZVBsdWdpbkludGVybmFsKGNvbnN0
IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyYsIGJvb2wmIHJlc3VsdCwgYm9vbCYgd2FudHNXaGVl
bEV2ZW50cywgdWludDMyX3QmIHJlbW90ZUxheWVyQ2xpZW50SUQpOwogCiAgICAgUmVmUHRyPENv
cmVJUEM6OkNvbm5lY3Rpb24+IG1fY29ubmVjdGlvbjsKIAogICAgIEhhc2hNYXA8dWludDY0X3Qs
IFBsdWdpbkNvbnRyb2xsZXJQcm94eSo+IG1fcGx1Z2luQ29udHJvbGxlcnM7CiAgICAgUmVmUHRy
PE5QUmVtb3RlT2JqZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFwOworICAgIEhhc2hTZXQ8dWlu
dDY0X3Q+IG1fYXN5bmNocm9ub3VzSW5zdGFuY2VJRHNUb0lnbm9yZTsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9X
ZWJQcm9jZXNzQ29ubmVjdGlvbi5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblBy
b2Nlc3MvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24ubWVzc2FnZXMuaW4KaW5kZXggMDdjM2MyNy4uZjFh
ODM1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9XZWJQcm9jZXNz
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNz
L1dlYlByb2Nlc3NDb25uZWN0aW9uLm1lc3NhZ2VzLmluCkBAIC0yNiw4ICsyNiwxMSBAQCBtZXNz
YWdlcyAtPiBXZWJQcm9jZXNzQ29ubmVjdGlvbiB7CiAgICAgIyBDcmVhdGVzIGEgcGx1Zy1pbiBp
bnN0YW5jZSB1c2luZyB0aGUgZ2l2ZW4gY3JlYXRpb24gcGFyYW1ldGVycy4KICAgICBDcmVhdGVQ
bHVnaW4oV2ViS2l0OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgcGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzKSAtPiAoYm9vbCByZXN1bHQsIGJvb2wgd2FudHNXaGVlbEV2ZW50cywgdWludDMyX3Qg
cmVtb3RlTGF5ZXJDbGllbnRJRCkKIAorICAgICMgQ3JlYXRlcyBhIHBsdWctaW4gaW5zdGFuY2Ug
YXN5bmNocm9ub3VzbHkgdXNpbmcgdGhlIGdpdmVuIGNyZWF0aW9uIHBhcmFtZXRlcnMuCisgICAg
Q3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoV2ViS2l0OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMgcGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKQorCiAgICAgIyBEZXN0cm95cyB0aGUgcGx1Zy1p
biBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBpbnN0YW5jZSBJRC4KLSAgICBEZXN0cm95UGx1Z2lu
KHVpbnQ2NF90IHBsdWdpbkluc3RhbmNlSUQpIC0+ICgpCisgICAgRGVzdHJveVBsdWdpbih1aW50
NjRfdCBwbHVnaW5JbnN0YW5jZUlELCBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZSkgLT4gKCkKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmlu
ZGV4IGM2Yzg3YTYuLjBmMDM2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9QbHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CkBAIC0zMywxMiArMzMsMTQgQEAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBQbHVnaW5Qcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzKCkKKyAg
ICA6IHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24oZmFsc2UpCiB7CiB9
CiAKIHZvaWQgUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKENvcmVJUEM6
OkFyZ3VtZW50RW5jb2RlciogZW5jb2RlcikgY29uc3QKIHsKICAgICBlbmNvZGVyLT5lbmNvZGUo
cGx1Z2luUGF0aCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1
Z2luSW5pdGlhbGl6YXRpb24pOwogCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIGVuY29kZXItPmVu
Y29kZShwYXJlbnRQcm9jZXNzTmFtZSk7CkBAIC01MCw2ICs1Miw4IEBAIGJvb2wgUGx1Z2luUHJv
Y2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rlciog
ZGVjb2RlciwKIHsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQucGx1Z2luUGF0aCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBpZiAoIWRlY29kZXItPmRlY29kZShyZXN1bHQu
c3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpCisgICAgICAgIHJldHVy
biBmYWxzZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShy
ZXN1bHQucGFyZW50UHJvY2Vzc05hbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dl
YktpdDIvU2hhcmVkL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmlu
ZGV4IDYyY2Y0YmIuLmNmYWVkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAg
LTQ4LDYgKzQ4LDcgQEAgc3RydWN0IFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIHN0YXRpYyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXIqLCBQbHVnaW5Q
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAKICAgICBTdHJpbmcgcGx1Z2luUGF0aDsKKyAg
ICBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb247CiAKICNpZiBQ
TEFURk9STShNQUMpCiAgICAgU3RyaW5nIHBhcmVudFByb2Nlc3NOYW1lOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAK
aW5kZXggNDNmYTJmNC4uYzllMDEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC0xMzcsOSArMTM3LDkg
QEAgdm9pZCBQbHVnaW5Qcm9jZXNzUHJveHk6OnBsdWdpblByb2Nlc3NDcmFzaGVkT3JGYWlsZWRU
b0xhdW5jaCgpCiAgICAgICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVuZGluZ0Nv
bm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQotICAgICAg
ICByZXBseS0+c2VuZChDb3JlSVBDOjpBdHRhY2htZW50KDAsIE1BQ0hfTVNHX1RZUEVfTU9WRV9T
RU5EKSk7CisgICAgICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoMCwgTUFDSF9N
U0dfVFlQRV9NT1ZFX1NFTkQpLCBmYWxzZSk7CiAjZWxpZiBVU0UoVU5JWF9ET01BSU5fU09DS0VU
UykKLSAgICAgICAgcmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgpKTsKKyAgICAgICAg
cmVwbHktPnNlbmQoQ29yZUlQQzo6QXR0YWNobWVudCgpLCBmYWxzZSk7CiAjZWxzZQogICAgICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogI2VuZGlmCkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBQbHVn
aW5Qcm9jZXNzUHJveHk6OmRpZEZpbmlzaExhdW5jaGluZyhQcm9jZXNzTGF1bmNoZXIqLCBDb3Jl
SVBDOjpDb25uZWN0aW8KICAgICBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMgPSAwOwog
fQogCi12b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oY29uc3QgQ29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIpCit2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
Q29yZUlQQzo6QXR0YWNobWVudCYgY29ubmVjdGlvbklkZW50aWZpZXIsIGJvb2wgc3VwcG9ydHNB
c3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIHsKICAgICBBU1NFUlQoIW1fcGVuZGlu
Z0Nvbm5lY3Rpb25SZXBsaWVzLmlzRW1wdHkoKSk7CiAKQEAgLTIzNiw5ICsyMzYsOSBAQCB2b2lk
IFBsdWdpblByb2Nlc3NQcm94eTo6ZGlkQ3JlYXRlV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3Qg
Q29yZUlQQzo6QXR0YWNobWVudAogICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSA9IG1fcGVu
ZGluZ0Nvbm5lY3Rpb25SZXBsaWVzLnRha2VGaXJzdCgpOwogCiAjaWYgUExBVEZPUk0oTUFDKQot
ICAgIHJlcGx5LT5zZW5kKENvcmVJUEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIu
cG9ydCgpLCBNQUNIX01TR19UWVBFX01PVkVfU0VORCkpOworICAgIHJlcGx5LT5zZW5kKENvcmVJ
UEM6OkF0dGFjaG1lbnQoY29ubmVjdGlvbklkZW50aWZpZXIucG9ydCgpLCBNQUNIX01TR19UWVBF
X01PVkVfU0VORCksIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24pOwog
I2VsaWYgVVNFKFVOSVhfRE9NQUlOX1NPQ0tFVFMpCi0gICAgcmVwbHktPnNlbmQoY29ubmVjdGlv
bklkZW50aWZpZXIpOworICAgIHJlcGx5LT5zZW5kKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBw
b3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKTsKICNlbHNlCiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCAwYTUxZDliLi5lMGZlMTVmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuaApAQCAtMTA4LDcgKzEwOCw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIGhh
bmRsZXJzCiAgICAgdm9pZCBkaWRSZWNlaXZlUGx1Z2luUHJvY2Vzc1Byb3h5TWVzc2FnZShDb3Jl
SVBDOjpDb25uZWN0aW9uKiwgQ29yZUlQQzo6TWVzc2FnZUlELCBDb3JlSVBDOjpBcmd1bWVudERl
Y29kZXIqKTsKLSAgICB2b2lkIGRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0aW9uKGNvbnN0IENv
cmVJUEM6OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZENyZWF0ZVdlYlByb2Nlc3NDb25uZWN0
aW9uKGNvbnN0IENvcmVJUEM6OkF0dGFjaG1lbnQmLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3Vz
UGx1Z2luSW5pdGlhbGl6YXRpb24pOwogICAgIHZvaWQgZGlkR2V0U2l0ZXNXaXRoRGF0YShjb25z
dCBWZWN0b3I8U3RyaW5nPiYgc2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGlkQ2xlYXJTaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
Lm1lc3NhZ2VzLmluCmluZGV4IDdiNTlhZWYuLjE4M2NiMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHku
bWVzc2FnZXMuaW4KQEAgLTIzLDcgKzIzLDcgQEAKICNpZiBFTkFCTEUoUExVR0lOX1BST0NFU1Mp
CiAKIG1lc3NhZ2VzIC0+IFBsdWdpblByb2Nlc3NQcm94eSB7Ci0gICAgRGlkQ3JlYXRlV2ViUHJv
Y2Vzc0Nvbm5lY3Rpb24oQ29yZUlQQzo6QXR0YWNobWVudCBjb25uZWN0aW9uSWRlbnRpZmllcikK
KyAgICBEaWRDcmVhdGVXZWJQcm9jZXNzQ29ubmVjdGlvbihDb3JlSVBDOjpBdHRhY2htZW50IGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb24pCiAKICAgICBEaWRHZXRTaXRlc1dpdGhEYXRhKFZlY3RvcjxXVEY6OlN0cmluZz4g
c2l0ZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCiAgICAgRGlkQ2xlYXJTaXRlRGF0YSh1aW50NjRf
dCBjYWxsYmFja0lEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdp
bnMvbWFjL1BsdWdpblByb2Nlc3NQcm94eU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QbHVnaW5zL21hYy9QbHVnaW5Qcm9jZXNzUHJveHlNYWMubW0KaW5kZXggMzQ4NmRlNC4uZDRi
NGJhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvbWFjL1Bs
dWdpblByb2Nlc3NQcm94eU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1
Z2lucy9tYWMvUGx1Z2luUHJvY2Vzc1Byb3h5TWFjLm1tCkBAIC0xMTgsNiArMTE4LDkgQEAgYm9v
bCBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZVByb3BlcnR5TGlzdEZpbGUoY29uc3QgUGx1Z2lu
TW9kdWxlSW5mbyYgcGx1Z2luKQogCiB2b2lkIFBsdWdpblByb2Nlc3NQcm94eTo6cGxhdGZvcm1J
bml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogeworICAgIC8vIEZvciBrbm93IG9ubHkgRmxhc2ggaXMga25vd24gdG8gYmVo
YXZlIHdpdGggYXN5bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24uCisgICAgcGFyYW1l
dGVycy5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uID0gbV9wbHVnaW5J
bmZvLmJ1bmRsZUlkZW50aWZpZXIgPT0gImNvbS5tYWNyb21lZGlhLkZsYXNoIFBsYXllci5wbHVn
aW4iOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBIQVZFKEhPU1RFRF9D
T1JFX0FOSU1BVElPTikKICAgICBwYXJhbWV0ZXJzLnBhcmVudFByb2Nlc3NOYW1lID0gW1tOU1By
b2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBwcm9jZXNzTmFtZV07CiAjaWYgX19NQUNfT1NfWF9WRVJT
SU9OX01JTl9SRVFVSVJFRCA+PSAxMDcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgppbmRleCA5ZTdiNTI5Li44NDgwNWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KQEAgLTM0LDcgKzM0LDcgQEAgbWVzc2FnZXMgLT4gV2ViUHJvY2Vzc1Byb3h5IHsK
ICAgICBTaG91bGRUZXJtaW5hdGUoKSAtPiAoYm9vbCBzaG91bGRUZXJtaW5hdGUpCiAKICNpZiBF
TkFCTEUoUExVR0lOX1BST0NFU1MpCi0gICAgR2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oV1RG
OjpTdHJpbmcgcGx1Z2luUGF0aCkgLT4gKENvcmVJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbkhh
bmRsZSkgRGVsYXllZAorICAgIEdldFBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFdURjo6U3RyaW5n
IHBsdWdpblBhdGgpIC0+IChDb3JlSVBDOjpBdHRhY2htZW50IGNvbm5lY3Rpb25IYW5kbGUsIGJv
b2wgc3VwcG9ydHNBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbikgRGVsYXllZAogICAgIFBsdWdp
blN5bmNNZXNzYWdlU2VuZFRpbWVkT3V0KFdURjo6U3RyaW5nIHBsdWdpblBhdGgpCiAjZW5kaWYK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0
c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRleCAxYzQ5YzYwLi44NTkxODkyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaApAQCAtNTQsNiArNTQsMTAgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8TmV0c2NhcGVQbHVnaW4+IGZyb21OUFAoTlBQKTsKIAorICAgIC8vIEluLXByb2Nl
c3MgTmV0c2NhcGVQbHVnaW5zIGRvbid0IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0
aW9uLgorICAgIHZpcnR1YWwgdm9pZCB3YWl0Rm9yQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24o
KSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIE5QRXJy
b3Igc2V0RHJhd2luZ01vZGVsKE5QRHJhd2luZ01vZGVsKTsKICAgICBOUEVycm9yIHNldEV2ZW50
TW9kZWwoTlBFdmVudE1vZGVsKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QREYvQnVpbHRJblBERlZpZXcuaAppbmRleCA2ZDExYzg1Li44YTdjMjhhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL0J1aWx0SW5Q
REZWaWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9CdWls
dEluUERGVmlldy5oCkBAIC01MCw2ICs1MCwxMCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgV2Vi
Q29yZTo6UGx1Z2luSW5mbyBwbHVnaW5JbmZvKCk7CiAKKyAgICAvLyBJbi1wcm9jZXNzIFBERlZp
ZXdzIGRvbid0IHN1cHBvcnQgYXN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLgorICAgIHZpcnR1
YWwgdm9pZCB3YWl0Rm9yQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oKSB7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgaXNCZWluZ0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfQorCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEJ1aWx0SW5QREZWaWV3KFdlYkZy
YW1lKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW4uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRl
eCA1YmU4NGY0Li5iOTExNzRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5oCkBAIC04Myw2ICs4MywxMCBAQCBwdWJsaWM6CiAgICAgLy8gU2V0cyB0aGUgYWN0
aXZlIHBsdWctaW4gY29udHJvbGxlciBhbmQgaW5pdGlhbGl6ZXMgdGhlIHBsdWctaW4uCiAgICAg
Ym9vbCBpbml0aWFsaXplKFBsdWdpbkNvbnRyb2xsZXIqLCBjb25zdCBQYXJhbWV0ZXJzJik7CiAK
KyAgICAvLyBGb3JjZXMgc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gb2YgYSBwbHVnaW4gcHJl
dmlvdXNseSBpbml0aWFsaXplZCBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgd2Fp
dEZvckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0JlaW5nQXN5bmNocm9ub3VzbHlJbml0aWFsaXplZCgpIGNvbnN0ID0gMDsKKwogICAgIC8vIERl
c3Ryb3lzIHRoZSBwbHVnLWluLgogICAgIHZvaWQgZGVzdHJveVBsdWdpbigpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5o
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApp
bmRleCA0MmMyOTU5Li42NjgyYmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKQEAgLTEzOCw2ICsxMzgsMTUgQEAgcHVi
bGljOgogCiAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxl
ZC4KICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgPSAwOworICAg
IAorICAgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgYXN5bmNocm9ub3VzIHBsdWdpbiBpbml0
aWFsaXphdGlvbiBpcyBlbmFibGVkLgorICAgIHZpcnR1YWwgYm9vbCBhc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIAor
ICAgIC8vIFJldHVybnMgd2hldGhlciBvciBub3QgYXN5bmNocm9ub3VzIHBsdWdpbiBpbml0aWFs
aXphdGlvbiBzaG91bGQgYmUgYXR0ZW1wdGVkIGZvciBhbGwgcGx1Z2lucy4KKyAgICB2aXJ0dWFs
IGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lu
cygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgCisgICAgLy8gUmV0dXJucyB0aGUgYXJ0
aWNpZmljYWwgcGx1Z2luIGRlbGF5IHRvIHVzZSBmb3IgdGVzdGluZyBvZiBhc3luY2hyb25vdXMg
cGx1Z2luIGluaXRpYWxpemF0aW9uLgorICAgIHZpcnR1YWwgYm9vbCBhcnRpZmljaWFsUGx1Z2lu
SW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAg
ICAgLy8gSW5jcmVtZW50cyBhIGNvdW50ZXIgdGhhdCBwcmV2ZW50cyB0aGUgcGx1Zy1pbiBmcm9t
IGJlaW5nIGRlc3Ryb3llZC4KICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVjdFBsdWdpbkZyb21EZXN0
cnVjdGlvbigpID0gMDsKQEAgLTE1MSw2ICsxNjAsMTIgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCB3aW5kb3dlZFBsdWdpbkdlb21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90
IHdpbmRvd0lEKSA9IDA7CiAjZW5kaWYKIAorICAgIC8vIENhbGxlZCB3aGVuIHRoZSBhIHBsdWct
aW4gaW5zdGFuY2UgaXMgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkLCBlaXRoZXIgc3luY2hyb25v
dXNseSBvciBhc3luY2hyb25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkSW5pdGlhbGl6ZVBs
dWdpbigpID0gMDsKKyAgICAKKyAgICAvLyBDYWxsZWQgd2hlbiB0aGUgYSBwbHVnLWluIGluc3Rh
bmNlIGZhaWxzIHRvIGluaXRpYWxpemVkLCBlaXRoZXIgc3luY2hyb25vdXNseSBvciBhc3luY2hy
b25vdXNseS4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpID0g
MDsKKwogICAgIC8vIEhlbHBlciBjbGFzcyBmb3IgZGVsYXlpbmcgZGVzdHJ1Y3Rpb24gb2YgYSBw
bHVnLWluLgogICAgIGNsYXNzIFBsdWdpbkRlc3RydWN0aW9uUHJvdGVjdG9yIHsKICAgICBwdWJs
aWM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblByb2Nlc3NDb25uZWN0aW9uLmNwcAppbmRleCA4MzM5YWQ0Li5jYzMxM2QyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbi5jcHAKQEAgLTczLDkgKzczLDEwIEBAIHN0YXRpYyBkb3VibGUg
ZGVmYXVsdFN5bmNNZXNzYWdlVGltZW91dChjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpCiAgICAg
cmV0dXJuIHN5bmNNZXNzYWdlVGltZW91dDsKIH0KIAotUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OlBsdWdpblByb2Nlc3NDb25uZWN0aW9uKFBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciog
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgs
IENvcmVJUEM6OkNvbm5lY3Rpb246OklkZW50aWZpZXIgY29ubmVjdGlvbklkZW50aWZpZXIpCitQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJv
Y2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNv
bnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29yZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRp
YWxpemF0aW9uKQogICAgIDogbV9wbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIocGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKQogICAgICwgbV9wbHVnaW5QYXRoKHBsdWdpblBhdGgp
CisgICAgLCBtX3N1cHBvcnRzQXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb24oc3VwcG9y
dHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikKIHsKICAgICBtX2Nvbm5lY3Rpb24g
PSBDb3JlSVBDOjpDb25uZWN0aW9uOjpjcmVhdGVDbGllbnRDb25uZWN0aW9uKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCB0aGlzLCBXZWJQcm9jZXNzOjpzaGFyZWQoKS5ydW5Mb29wKCkpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nv
bm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzQ29ubmVjdGlvbi5oCmluZGV4IDYxYzRhYzIuLmJjODY2ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVj
dGlvbi5oCkBAIC00Myw5ICs0Myw5IEBAIGNsYXNzIFBsdWdpblByb3h5OwogICAgIAogY2xhc3Mg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxQbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbj4sIENvcmVJUEM6OkNvbm5lY3Rpb246OkNsaWVudCB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24+IGNyZWF0ZShQbHVnaW5Q
cm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIqIHBsdWdpblByb2Nlc3NDb25uZWN0aW9uTWFuYWdlciwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBsdWdpblByb2Nl
c3NDb25uZWN0aW9uPiBjcmVhdGUoUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllciwgYm9vbCBz
dXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Qcm9jZXNz
Q29ubmVjdGlvbk1hbmFnZXIsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24ocGx1Z2lu
UHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLCBwbHVnaW5QYXRoLCBjb25uZWN0aW9uSWRlbnRpZmll
ciwgc3VwcG9ydHNBc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbikpOwogICAgIH0KICAg
ICB+UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIApAQCAtNTgsOCArNTgsMTAgQEAgcHVibGlj
OgogCiAgICAgTlBSZW1vdGVPYmplY3RNYXAqIG5wUmVtb3RlT2JqZWN0TWFwKCkgY29uc3QgeyBy
ZXR1cm4gbV9ucFJlbW90ZU9iamVjdE1hcC5nZXQoKTsgfQogCisgICAgYm9vbCBzdXBwb3J0c0Fz
eW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zdXBwb3J0
c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOyB9CisKIHByaXZhdGU6Ci0gICAgUGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiBwbHVn
aW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIsIGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgQ29y
ZUlQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllciBjb25uZWN0aW9uSWRlbnRpZmllcik7CisgICAg
UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24oUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyKiwg
Y29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBDb3JlSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVy
IGNvbm5lY3Rpb25JZGVudGlmaWVyLCBib29sIHN1cHBvcnRzQXN5bmNocm9ub3VzSW5pdGlhbGl6
YXRpb24pOwogCiAgICAgLy8gQ29yZUlQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpN
ZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciopOwpAQCAtODIsNiArODQsOCBAQCBw
cml2YXRlOgogICAgIEhhc2hNYXA8dWludDY0X3QsIFBsdWdpblByb3h5Kj4gbV9wbHVnaW5zOwog
CiAgICAgUmVmUHRyPE5QUmVtb3RlT2JqZWN0TWFwPiBtX25wUmVtb3RlT2JqZWN0TWFwOworICAg
IAorICAgIGJvb2wgbV9zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxpemF0aW9uOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1h
bmFnZXIuY3BwCmluZGV4IGZkMTkwNmQuLjMzZDEyY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzQ29u
bmVjdGlvbk1hbmFnZXIuY3BwCkBAIC01Nyw4ICs1Nyw5IEBAIFBsdWdpblByb2Nlc3NDb25uZWN0
aW9uKiBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbk1hbmFnZXI6OmdldFBsdWdpblByb2Nlc3NDb25u
ZWN0CiAgICAgfQogCiAgICAgQ29yZUlQQzo6QXR0YWNobWVudCBlbmNvZGVkQ29ubmVjdGlvbklk
ZW50aWZpZXI7CisgICAgYm9vbCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uOwog
ICAgIGlmICghV2ViUHJvY2Vzczo6c2hhcmVkKCkuY29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbihwbHVnaW5Q
YXRoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0UGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb246
OlJlcGx5KGVuY29kZWRDb25uZWN0aW9uSWRlbnRpZmllciksIDApKQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlczo6V2ViUHJvY2Vz
c1Byb3h5OjpHZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6UmVwbHkoZW5jb2RlZENvbm5lY3Rp
b25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKSwgMCkpCiAg
ICAgICAgIHJldHVybiAwOwogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtNzEsNyArNzIsNyBAQCBQ
bHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiogUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb25NYW5hZ2VyOjpn
ZXRQbHVnaW5Qcm9jZXNzQ29ubmVjdAogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCi0gICAg
UmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9uPiBwbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbiA9
IFBsdWdpblByb2Nlc3NDb25uZWN0aW9uOjpjcmVhdGUodGhpcywgcGx1Z2luUGF0aCwgY29ubmVj
dGlvbklkZW50aWZpZXIpOworICAgIFJlZlB0cjxQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbj4gcGx1
Z2luUHJvY2Vzc0Nvbm5lY3Rpb24gPSBQbHVnaW5Qcm9jZXNzQ29ubmVjdGlvbjo6Y3JlYXRlKHRo
aXMsIHBsdWdpblBhdGgsIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBzdXBwb3J0c0FzeW5jaHJvbm91
c0luaXRpYWxpemF0aW9uKTsKICAgICBtX3BsdWdpblByb2Nlc3NDb25uZWN0aW9ucy5hcHBlbmQo
cGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb24pOwogCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggZDRhMzU0OS4uZDNhZjA2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCkBAIC02OCw2ICs2OCw3IEBAIFBsdWdpblByb3h5OjpQbHVnaW5Qcm94eShjb25zdCBT
dHJpbmcmIHBsdWdpblBhdGgpCiAgICAgLCBtX3dhaXRpbmdGb3JQYWludEluUmVzcG9uc2VUb1Vw
ZGF0ZShmYWxzZSkKICAgICAsIG1fd2FudHNXaGVlbEV2ZW50cyhmYWxzZSkKICAgICAsIG1fcmVt
b3RlTGF5ZXJDbGllbnRJRCgwKQorICAgICwgbV93YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFs
aXphdGlvbihmYWxzZSkKIHsKIH0KIApAQCAtOTMsMzggKzk0LDEwOSBAQCBib29sIFBsdWdpblBy
b3h5Ojppbml0aWFsaXplKGNvbnN0IFBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiAgICAgbV9jb25u
ZWN0aW9uLT5hZGRQbHVnaW5Qcm94eSh0aGlzKTsKIAogICAgIC8vIEFzayB0aGUgcGx1Zy1pbiBw
cm9jZXNzIHRvIGNyZWF0ZSBhIHBsdWctaW4uCi0gICAgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJz
IGNyZWF0aW9uUGFyYW1ldGVyczsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFu
Y2VJRCA9IG1fcGx1Z2luSW5zdGFuY2VJRDsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMud2luZG93
TlBPYmplY3RJRCA9IHdpbmRvd05QT2JqZWN0SUQoKTsKLSAgICBjcmVhdGlvblBhcmFtZXRlcnMu
cGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7Ci0gICAgY3JlYXRpb25QYXJhbWV0ZXJzLnVzZXJBZ2Vu
dCA9IGNvbnRyb2xsZXIoKS0+dXNlckFnZW50KCk7Ci0gICAgY3JlYXRpb25QYXJhbWV0ZXJzLmNv
bnRlbnRzU2NhbGVGYWN0b3IgPSBjb250ZW50c1NjYWxlRmFjdG9yKCk7Ci0gICAgY3JlYXRpb25Q
YXJhbWV0ZXJzLmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGNvbnRyb2xsZXIoKS0+aXNQcml2
YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzID0gYWRvcHRQdHIobmV3IFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyk7CisKKyAgICBtX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPnBsdWdpbkluc3RhbmNlSUQgPSBtX3BsdWdp
bkluc3RhbmNlSUQ7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT53aW5k
b3dOUE9iamVjdElEID0gd2luZG93TlBPYmplY3RJRCgpOworICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy0+cGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CisgICAgbV9wZW5kaW5n
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT51c2VyQWdlbnQgPSBjb250cm9sbGVyKCktPnVzZXJB
Z2VudCgpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+Y29udGVudHNT
Y2FsZUZhY3RvciA9IGNvbnRlbnRzU2NhbGVGYWN0b3IoKTsKKyAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMtPmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA9IGNvbnRyb2xsZXIo
KS0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQg
PSBjb250cm9sbGVyKCktPmFydGlmaWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxl
ZCgpOworCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQotICAgIGNyZWF0aW9uUGFy
YW1ldGVycy5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkID0gY29udHJvbGxlcigpLT5p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CisgICAgbV9wZW5kaW5nUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkID0gY29udHJv
bGxlcigpLT5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKCk7CiAjZW5kaWYKIAorICAg
IGlmICghY2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkpCisgICAgICAgIHJldHVybiBpbml0
aWFsaXplU3luY2hyb25vdXNseSgpOworCisgICAgLy8gUmVtZW1iZXIgdGhhdCB3ZSB0cmllZCB0
byBjcmVhdGUgdGhpcyBwbHVnLWluIGFzeW5jaHJvbm91c2x5IGluIGNhc2Ugd2UgbmVlZCB0byBj
cmVhdGUgaXQgc3luY2hyb25vdXNseSBsYXRlci4KKyAgICBtX3dhaXRpbmdPbkFzeW5jaHJvbm91
c0luaXRpYWxpemF0aW9uID0gdHJ1ZTsKKyAgICBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMgY3Jl
YXRpb25QYXJhbWV0ZXJzKCptX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuZ2V0KCkp
OworICAgIG1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzQ29ubmVjdGlvbjo6Q3JlYXRlUGx1Z2luQXN5bmNocm9ub3VzbHkoY3JlYXRpb25QYXJhbWV0
ZXJzKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBQ
bHVnaW5Qcm94eTo6Y2FuSW5pdGlhbGl6ZUFzeW5jaHJvbm91c2x5KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gY29udHJvbGxlcigpLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJs
ZWQoKSAmJiAobV9jb25uZWN0aW9uLT5zdXBwb3J0c0FzeW5jaHJvbm91c1BsdWdpbkluaXRpYWxp
emF0aW9uKCkgfHwgY29udHJvbGxlcigpLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlv
bkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkpOworfQorCit2b2lkIFBsdWdpblByb3h5Ojp3YWl0Rm9y
QXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24oKQoreworICAgIEFTU0VSVCghbV9pc1N0YXJ0ZWQp
OworICAgIEFTU0VSVChtX3dhaXRpbmdPbkFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKTsKKwor
ICAgIGluaXRpYWxpemVTeW5jaHJvbm91c2x5KCk7Cit9CisKK2Jvb2wgUGx1Z2luUHJveHk6Omlu
aXRpYWxpemVTeW5jaHJvbm91c2x5KCkKK3sKKyAgICBBU1NFUlQobV9wZW5kaW5nUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzKTsKKworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy0+YXN5bmNocm9ub3VzQ3JlYXRpb25JbmNvbXBsZXRlID0gbV93YWl0aW5nT25Bc3luY2hyb25v
dXNJbml0aWFsaXphdGlvbjsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwogICAgIGJvb2wgd2Fu
dHNXaGVlbEV2ZW50cyA9IGZhbHNlOwogICAgIHVpbnQzMl90IHJlbW90ZUxheWVyQ2xpZW50SUQg
PSAwOworICAgIAorICAgIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVycyBwYXJhbWV0ZXJzKCptX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuZ2V0KCkpOwogCi0gICAgaWYgKCFtX2Nvbm5l
Y3Rpb24tPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlByb2Nlc3NDb25uZWN0
aW9uOjpDcmVhdGVQbHVnaW4oY3JlYXRpb25QYXJhbWV0ZXJzKSwgTWVzc2FnZXM6OldlYlByb2Nl
c3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OlJlcGx5KHJlc3VsdCwgd2FudHNXaGVlbEV2ZW50
cywgcmVtb3RlTGF5ZXJDbGllbnRJRCksIDApIHx8ICFyZXN1bHQpIHsKLSAgICAgICAgbV9jb25u
ZWN0aW9uLT5yZW1vdmVQbHVnaW5Qcm94eSh0aGlzKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIH0KKyAgICBpZiAoIW1fY29ubmVjdGlvbi0+Y29ubmVjdGlvbigpLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkNyZWF0ZVBsdWdpbihwYXJhbWV0ZXJzKSwgTWVz
c2FnZXM6OldlYlByb2Nlc3NDb25uZWN0aW9uOjpDcmVhdGVQbHVnaW46OlJlcGx5KHJlc3VsdCwg
d2FudHNXaGVlbEV2ZW50cywgcmVtb3RlTGF5ZXJDbGllbnRJRCksIDApIHx8ICFyZXN1bHQpCisg
ICAgICAgIGRpZEZhaWxUb0NyZWF0ZVBsdWdpbkludGVybmFsKCk7CisgICAgZWxzZQorICAgICAg
ICBkaWRDcmVhdGVQbHVnaW5JbnRlcm5hbCh3YW50c1doZWVsRXZlbnRzLCByZW1vdGVMYXllckNs
aWVudElEKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQogCit2b2lkIFBsdWdpblByb3h5
OjpkaWRDcmVhdGVQbHVnaW4oYm9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVM
YXllckNsaWVudElEKQoreworICAgIC8vIFdlIG1pZ2h0IGhhdmUgdHJpZWQgdG8gY3JlYXRlIHRo
ZSBwbHVnLWluIHN5Y2hyb25vdXNseSB3aGlsZSB3YWl0aW5nIG9uIHRoZSBhc3luY2hyb25vdXMg
cmVwbHksCisgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgaWdub3JlIHRoaXMgbWVzc2Fn
ZS4KKyAgICBpZiAoIW1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pCisgICAg
ICAgIHJldHVybjsKKworICAgIGRpZENyZWF0ZVBsdWdpbkludGVybmFsKHdhbnRzV2hlZWxFdmVu
dHMsIHJlbW90ZUxheWVyQ2xpZW50SUQpOworfQorCit2b2lkIFBsdWdpblByb3h5OjpkaWRGYWls
VG9DcmVhdGVQbHVnaW4oKQoreworICAgIC8vIFdlIG1pZ2h0IGhhdmUgdHJpZWQgdG8gY3JlYXRl
IHRoZSBwbHVnLWluIHN5Y2hyb25vdXNseSB3aGlsZSB3YWl0aW5nIG9uIHRoZSBhc3luY2hyb25v
dXMgcmVwbHksCisgICAgLy8gaW4gd2hpY2ggY2FzZSB3ZSBzaG91bGQgaWdub3JlIHRoaXMgbWVz
c2FnZS4KKyAgICBpZiAoIW1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIGRpZEZhaWxUb0NyZWF0ZVBsdWdpbkludGVybmFsKCk7Cit9
CisKK3ZvaWQgUGx1Z2luUHJveHk6OmRpZENyZWF0ZVBsdWdpbkludGVybmFsKGJvb2wgd2FudHNX
aGVlbEV2ZW50cywgdWludDMyX3QgcmVtb3RlTGF5ZXJDbGllbnRJRCkKK3sKICAgICBtX3dhbnRz
V2hlZWxFdmVudHMgPSB3YW50c1doZWVsRXZlbnRzOwogICAgIG1fcmVtb3RlTGF5ZXJDbGllbnRJ
RCA9IHJlbW90ZUxheWVyQ2xpZW50SUQ7CiAgICAgbV9pc1N0YXJ0ZWQgPSB0cnVlOworICAgIGNv
bnRyb2xsZXIoKS0+ZGlkSW5pdGlhbGl6ZVBsdWdpbigpOwogCi0gICAgcmV0dXJuIHRydWU7Cisg
ICAgLy8gV2hldGhlciBzeW5jaHJvbm91c2x5IG9yIGFzeW5jaHJvbm91c2x5LCB0aGlzIHBsdWct
aW4gd2FzIGNyZWF0ZWQgYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIHJlbWVtYmVyCisgICAgLy8g
YW55dGhpbmcgYWJvdXQgaG93LgorICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy5jbGVhcigpOworICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBm
YWxzZTsKIH0KIAotdm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJveSgpCit2b2lkIFBsdWdpblByb3h5
OjpkaWRGYWlsVG9DcmVhdGVQbHVnaW5JbnRlcm5hbCgpCiB7Ci0gICAgQVNTRVJUKG1faXNTdGFy
dGVkKTsKKyAgICBtX2Nvbm5lY3Rpb24tPnJlbW92ZVBsdWdpblByb3h5KHRoaXMpOworICAgIGNv
bnRyb2xsZXIoKS0+ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpOwogCi0gICAgbV9jb25uZWN0
aW9uLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlv
bjo6RGVzdHJveVBsdWdpbihtX3BsdWdpbkluc3RhbmNlSUQpLCBNZXNzYWdlczo6V2ViUHJvY2Vz
c0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46OlJlcGx5KCksIDApOworICAgIC8vIFdoZXRoZXIg
c3luY2hyb25vdXNseSBvciBhc3luY2hyb25vdXNseSwgdGhpcyBwbHVnLWluIGZhaWxlZCB0byBj
cmVhdGUgYW5kIHdlIHNob3VsZG4ndCBuZWVkIHRvIHJlbWVtYmVyCisgICAgLy8gYW55dGhpbmcg
YWJvdXQgaG93LgorICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jbGVhcigp
OworICAgIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSBmYWxzZTsKK30K
Kwordm9pZCBQbHVnaW5Qcm94eTo6ZGVzdHJveSgpCit7CisgICAgbV9jb25uZWN0aW9uLT5jb25u
ZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQcm9jZXNzQ29ubmVjdGlvbjo6RGVzdHJv
eVBsdWdpbihtX3BsdWdpbkluc3RhbmNlSUQsIG1fd2FpdGluZ09uQXN5bmNocm9ub3VzSW5pdGlh
bGl6YXRpb24pLCBNZXNzYWdlczo6V2ViUHJvY2Vzc0Nvbm5lY3Rpb246OkRlc3Ryb3lQbHVnaW46
OlJlcGx5KCksIDApOwogCiAgICAgbV9pc1N0YXJ0ZWQgPSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuaAppbmRleCBiZTA3Y2FhLi5j
MGNhMTE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJveHkuaApAQCAtNDksNiArNDksOCBAQCBjbGFzcyBTaGFyZWFibGVCaXRtYXA7CiBjbGFzcyBO
UFZhcmlhbnREYXRhOwogY2xhc3MgUGx1Z2luUHJvY2Vzc0Nvbm5lY3Rpb247CiAKK3N0cnVjdCBQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM7CisKIGNsYXNzIFBsdWdpblByb3h5IDogcHVibGljIFBs
dWdpbiB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8UGx1Z2luUHJveHk+IGNyZWF0
ZShjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgpOwpAQCAtNjAsMTEgKzYyLDE2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZFJlY2VpdmVQbHVnaW5Qcm94eU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3VtZW50RGVjb2Rl
ciogYXJndW1lbnRzKTsKICAgICB2b2lkIGRpZFJlY2VpdmVTeW5jUGx1Z2luUHJveHlNZXNzYWdl
KENvcmVJUEM6OkNvbm5lY3Rpb24qLCBDb3JlSVBDOjpNZXNzYWdlSUQsIENvcmVJUEM6OkFyZ3Vt
ZW50RGVjb2RlciosIE93blB0cjxDb3JlSVBDOjpBcmd1bWVudEVuY29kZXI+Jik7CiAKKyAgICBi
b29sIGlzQmVpbmdBc3luY2hyb25vdXNseUluaXRpYWxpemVkKCkgY29uc3QgeyByZXR1cm4gbV93
YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsgfQorCiBwcml2YXRlOgogICAgIGV4
cGxpY2l0IFBsdWdpblByb3h5KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCk7CiAKICAgICAvLyBQ
bHVnaW4KICAgICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJzJik7Cisg
ICAgYm9vbCBpbml0aWFsaXplU3luY2hyb25vdXNseSgpOworCisgICAgdmlydHVhbCB2b2lkIHdh
aXRGb3JBc3luY2hyb25vdXNJbml0aWFsaXphdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkZXN0
cm95KCk7CiAgICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCos
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGRpcnR5UmVjdCk7CiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPFNoYXJlYWJsZUJpdG1hcD4gc25hcHNob3QoKTsKQEAgLTE0MSw2ICsxNDgsMTQgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFuZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYgZnJhbWVSZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjbGlwUmVj
dCwgdWludDY0X3Qgd2luZG93SUQpOwogI2VuZGlmCiAKKyAgICBib29sIGNhbkluaXRpYWxpemVB
c3luY2hyb25vdXNseSgpIGNvbnN0OworCisgICAgdm9pZCBkaWRDcmVhdGVQbHVnaW4oYm9vbCB3
YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVudElEKTsKKyAgICB2b2lk
IGRpZEZhaWxUb0NyZWF0ZVBsdWdpbigpOworICAgIAorICAgIHZvaWQgZGlkQ3JlYXRlUGx1Z2lu
SW50ZXJuYWwoYm9vbCB3YW50c1doZWVsRXZlbnRzLCB1aW50MzJfdCByZW1vdGVMYXllckNsaWVu
dElEKTsKKyAgICB2b2lkIGRpZEZhaWxUb0NyZWF0ZVBsdWdpbkludGVybmFsKCk7CisKICAgICBT
dHJpbmcgbV9wbHVnaW5QYXRoOwogCiAgICAgUmVmUHRyPFBsdWdpblByb2Nlc3NDb25uZWN0aW9u
PiBtX2Nvbm5lY3Rpb247CkBAIC0xNzQsNiArMTg5LDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIFRo
ZSBjbGllbnQgSUQgZm9yIHRoZSBDQSBsYXllciBpbiB0aGUgcGx1Zy1pbiBwcm9jZXNzLiBXaWxs
IGJlIDAgaWYgdGhlIHBsdWctaW4gaXMgbm90IGEgQ0EgcGx1Zy1pbi4KICAgICB1aW50MzJfdCBt
X3JlbW90ZUxheWVyQ2xpZW50SUQ7CisgICAgCisgICAgT3duUHRyPFBsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycz4gbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOworICAgIGJvb2wgbV93
YWl0aW5nT25Bc3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gbV9wbHVnaW5MYXllcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5tZXNzYWdlcy5pbgpp
bmRleCBhMmVmMzE5Li40NTNjMGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lm1lc3NhZ2VzLmluCkBAIC03NCw2ICs3NCwx
MiBAQCBtZXNzYWdlcyAtPiBQbHVnaW5Qcm94eSB7CiAgICAgIyBVcGRhdGUgZ2VvbWV0cnkgb2Yg
d2luZG93ZWQgcGx1Z2luIHdpZGdldAogICAgIFdpbmRvd2VkUGx1Z2luR2VvbWV0cnlEaWRDaGFu
Z2UoV2ViQ29yZTo6SW50UmVjdCBmcmFtZVJlY3QsIFdlYkNvcmU6OkludFJlY3QgY2xpcFJlY3Qs
IHVpbnQ2NF90IHdpbmRvd0lEKQogI2VuZGlmCisKKyAgICAjIFRlbGxzIHRoZSBXZWJQcm9jZXNz
IHRoYXQgdGhlIHBsdWctaW4gd2FzIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBhc3luY2hyb25v
dXNseQorICAgIERpZENyZWF0ZVBsdWdpbihib29sIHdhbnRzV2hlZWxFdmVudHMsIHVpbnQzMl90
IHJlbW90ZUxheWVyQ2xpZW50SUQpIC0+ICgpCisgICAgCisgICAgIyBUZWxscyB0aGUgV2ViUHJv
Y2VzcyB0aGF0IHRoZSBwbHVnLWluIGZhaWxlZCB0byBpbml0aWFsaXplLgorICAgIERpZEZhaWxU
b0NyZWF0ZVBsdWdpbigpIC0+ICgpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDA3MmE2OWMuLmQwN2Y4Yjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5j
cHAKQEAgLTI2MCw2ICsyNjAsNyBAQCBQbHVnaW5WaWV3OjpQbHVnaW5WaWV3KFBhc3NSZWZQdHI8
SFRNTFBsdWdJbkVsZW1lbnQ+IHBsdWdpbkVsZW1lbnQsIFBhc3NSZWZQdHI8UAogICAgICwgbV93
ZWJQYWdlKHdlYlBhZ2UobV9wbHVnaW5FbGVtZW50LmdldCgpKSkKICAgICAsIG1fcGFyYW1ldGVy
cyhwYXJhbWV0ZXJzKQogICAgICwgbV9pc0luaXRpYWxpemVkKGZhbHNlKQorICAgICwgbV9pc1dh
aXRpbmdGb3JTeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKGZhbHNlKQogICAgICwgbV9pc1dhaXRp
bmdVbnRpbE1lZGlhQ2FuU3RhcnQoZmFsc2UpCiAgICAgLCBtX2lzQmVpbmdEZXN0cm95ZWQoZmFs
c2UpCiAgICAgLCBtX3BlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyKFJ1bkxvb3A6Om1haW4oKSwgdGhp
cywgJlBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVyRmlyZWQpCkBAIC0yODUsNyAr
Mjg2LDcgQEAgUGx1Z2luVmlldzo6flBsdWdpblZpZXcoKQogICAgIGZvciAoRnJhbWVMb2FkTWFw
OjppdGVyYXRvciBpdCA9IG1fcGVuZGluZ0ZyYW1lTG9hZHMuYmVnaW4oKSwgZW5kID0gbV9wZW5k
aW5nRnJhbWVMb2Fkcy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICBpdC0+Zmlyc3Qt
PnNldExvYWRMaXN0ZW5lcigwKTsKIAotICAgIGlmIChtX3BsdWdpbiAmJiBtX2lzSW5pdGlhbGl6
ZWQpIHsKKyAgICBpZiAobV9wbHVnaW4pIHsKICAgICAgICAgbV9pc0JlaW5nRGVzdHJveWVkID0g
dHJ1ZTsKICAgICAgICAgbV9wbHVnaW4tPmRlc3Ryb3lQbHVnaW4oKTsKICAgICAgICAgbV9pc0Jl
aW5nRGVzdHJveWVkID0gZmFsc2U7CkBAIC00ODcsMTUgKzQ4OCwyMCBAQCB2b2lkIFBsdWdpblZp
ZXc6OmluaXRpYWxpemVQbHVnaW4oKQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQot
ICAgIAotICAgIGlmICghbV9wbHVnaW4tPmluaXRpYWxpemUodGhpcywgbV9wYXJhbWV0ZXJzKSkg
ewotICAgICAgICAvLyBXZSBmYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgcGx1Zy1pbi4KLSAgICAg
ICAgbV9wbHVnaW4gPSAwOwogCi0gICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKG1fcGFyYW1ldGVycy5taW1lVHlw
ZSkpOwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIG1fcGx1Z2luLT5pbml0aWFsaXplKHRo
aXMsIG1fcGFyYW1ldGVycyk7CiAgICAgCisgICAgLy8gUGx1Zy1pbiBpbml0aWFsaXphdGlvbiBj
b250aW51ZWQgaW4gZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpIG9yIGRpZEluaXRpYWxpemVQ
bHVnaW4oKS4KK30KKwordm9pZCBQbHVnaW5WaWV3OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2lu
KCkKK3sKKyAgICBtX3BsdWdpbiA9IDA7CisgICAgbV93ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4obV9wYXJhbWV0ZXJzLm1pbWVU
eXBlKSk7Cit9CisKK3ZvaWQgUGx1Z2luVmlldzo6ZGlkSW5pdGlhbGl6ZVBsdWdpbigpCit7CiAg
ICAgbV9pc0luaXRpYWxpemVkID0gdHJ1ZTsKIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTUzOSw2
ICs1NDUsMTkgQEAgUGxhdGZvcm1MYXllciogUGx1Z2luVmlldzo6cGxhdGZvcm1MYXllcigpIGNv
bnN0CiAKIEpTT2JqZWN0KiBQbHVnaW5WaWV3OjpzY3JpcHRPYmplY3QoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKKyAgICAvLyBJZiB3ZSdyZSBhbHJlYWR5IHdhaXRpbmcgZm9yIHN5
bmNocm9ub3VzIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwbHVnaW4sCisgICAgLy8gY2FsbHMgdG8g
c2NyaXB0T2JqZWN0KCkgYXJlIGZyb20gdGhlIHBsdWctaW4gaXRzZWxmIGFuZCBuZWVkIHRvIHJl
dHVybiAwOworICAgIGlmIChtX2lzV2FpdGluZ0ZvclN5bmNocm9ub3VzSW5pdGlhbGl6YXRpb24p
CisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gSWYgdGhlIHBsdWctaW4gZXhpc3RzIGJ1dCBp
cyBub3QgaW5pdGlhbGl6ZWQgdGhlbiB3ZSdyZSBzdGlsbCBpbml0aWFsaXppbmcgYXN5bmNocm9u
b3VzbHkuCisgICAgLy8gV2UgbmVlZCB0byB3YWl0IGhlcmUgdW50aWwgaW5pdGlhbGl6YXRpb24g
aGFzIGVpdGhlciBzdWNjZWVkZWQgb3IgZmFpbGVkLgorICAgIGlmIChtX3BsdWdpbi0+aXNCZWlu
Z0FzeW5jaHJvbm91c2x5SW5pdGlhbGl6ZWQoKSkgeworICAgICAgICBtX2lzV2FpdGluZ0ZvclN5
bmNocm9ub3VzSW5pdGlhbGl6YXRpb24gPSB0cnVlOworICAgICAgICBtX3BsdWdpbi0+d2FpdEZv
ckFzeW5jaHJvbm91c0luaXRpYWxpemF0aW9uKCk7CisgICAgICAgIG1faXNXYWl0aW5nRm9yU3lu
Y2hyb25vdXNJbml0aWFsaXphdGlvbiA9IGZhbHNlOworICAgIH0KKwogICAgIC8vIFRoZSBwbHVn
LWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCiAgICAgaWYg
KCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQogICAgICAgICByZXR1cm4gMDsKQEAgLTEy
NTAsNiArMTI2OSwyMSBAQCBib29sIFBsdWdpblZpZXc6OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpCiAgICAgcmV0dXJuIHNldHRpbmdzLT5wcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAK
K2Jvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVk
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdlLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0
aWFsaXphdGlvbkVuYWJsZWQoKTsKK30KKworYm9vbCBQbHVnaW5WaWV3Ojphc3luY2hyb25vdXNQ
bHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRGb3JBbGxQbHVnaW5zKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV93ZWJQYWdlLT5hc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWRG
b3JBbGxQbHVnaW5zKCk7Cit9CisKK2Jvb2wgUGx1Z2luVmlldzo6YXJ0aWZpY2lhbFBsdWdpbklu
aXRpYWxpemF0aW9uRGVsYXlFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV93ZWJQYWdl
LT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKK30KKwogdm9p
ZCBQbHVnaW5WaWV3Ojpwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkKIHsKICAgICBpZiAo
IW1faXNCZWluZ0Rlc3Ryb3llZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luVmlldy5oCmluZGV4IGYxMDFiMmYuLmE2YTA1NmMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtODAsNyArODAsNiBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgflBsdWdpblZpZXcoKTsKIAogICAgIHZvaWQgaW5pdGlhbGl6
ZVBsdWdpbigpOwotICAgIHZvaWQgZGVzdHJveVBsdWdpbigpOwogCiAgICAgdm9pZCB2aWV3R2Vv
bWV0cnlEaWRDaGFuZ2UoKTsKICAgICB2b2lkIHZpZXdWaXNpYmlsaXR5RGlkQ2hhbmdlKCk7CkBA
IC0xNjQsNiArMTYzLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0Zv
clVSTChjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcp
OwogICAgIHZpcnR1YWwgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3QgV2ViQ29yZTo6
UHJvdGVjdGlvblNwYWNlJiwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNzd29yZCk7CiAg
ICAgdmlydHVhbCBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOworICAgIHZpcnR1YWwg
Ym9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25FbmFibGVkRm9y
QWxsUGx1Z2lucygpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBhcnRpZmljaWFsUGx1Z2luSW5p
dGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcHJvdGVj
dFBsdWdpbkZyb21EZXN0cnVjdGlvbigpOwogICAgIHZpcnR1YWwgdm9pZCB1bnByb3RlY3RQbHVn
aW5Gcm9tRGVzdHJ1Y3Rpb24oKTsKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFgxMSkKQEAgLTE3
MSw2ICsxNzMsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aW5kb3dlZFBsdWdpbkdl
b21ldHJ5RGlkQ2hhbmdlKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZyYW1lUmVjdCwgY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgY2xpcFJlY3QsIHVpbnQ2NF90IHdpbmRvd0lEKTsKICNlbmRpZgog
CisgICAgdmlydHVhbCB2b2lkIGRpZEluaXRpYWxpemVQbHVnaW4oKTsKKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbigpOworCiAgICAgLy8gV2ViRnJhbWU6OkxvYWRM
aXN0ZW5lcgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hMb2FkKFdlYkZyYW1lKik7CiAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkKFdlYkZyYW1lKiwgYm9vbCB3YXNDYW5jZWxsZWQpOwpA
QCAtMTgxLDYgKzE4Niw3IEBAIHByaXZhdGU6CiAgICAgUGx1Z2luOjpQYXJhbWV0ZXJzIG1fcGFy
YW1ldGVyczsKICAgICAKICAgICBib29sIG1faXNJbml0aWFsaXplZDsKKyAgICBib29sIG1faXNX
YWl0aW5nRm9yU3luY2hyb25vdXNJbml0aWFsaXphdGlvbjsKICAgICBib29sIG1faXNXYWl0aW5n
VW50aWxNZWRpYUNhblN0YXJ0OwogICAgIGJvb2wgbV9pc0JlaW5nRGVzdHJveWVkOwogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmRiZTY1My4u
YWFkMTM1OCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTAzICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFw
cGxlLmNvbT4KKworICAgICAgICBPdXQtb2YtcHJvY2VzcyBwbHVnLWlucyBzaG91bGQgc3VwcG9y
dCBhc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
NTk4NTk0PiBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyOTE5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEg
cGx1Zy1pbiB3aXRoIGFuIE5QUF9OZXcgdGhhdCB0YWtlcyA1NTBtcyAoYSByZWFzb25hYmxlIHRy
YWRlLW9mZiBiZXR3ZWVuIGEgc29saWQgdGVzdCBhbmQgYSBzbG93IHJ1bm5pbmcgdGVzdCkKKyAg
ICAgICAgZm9yIHRlc3RpbmcgYXN5bmNocm9ub3VzIHBsdWctaW4gaW5pdGlhbGl6YXRpb24uCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9U
ZXN0cy9TbG93TlBQTmV3LmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdDIvU2hhcmVkL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oLgorICAgICAgICAoU2xvd05Q
UE5ldyk6CisgICAgICAgIChTbG93TlBQTmV3OjpTbG93TlBQTmV3KToKKyAgICAgICAgKFNsb3dO
UFBOZXc6Ok5QUF9OZXcpOgorCiAyMDEyLTA4LTA2ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBXVFIgc2hvdWxkIGJlIGFibGUgdG8gbG9hZCBleHRlcm5h
bCByZXNvdXJjZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJU
cmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDQ4MTA2NGUuLmI3OTA0
ZjYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRl
clRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjcsNiArNjcsNyBAQAogCQk0NDM3
NzMwRTEyNUNCQzM2MDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTk5NzgzMEZDREU4NjQw
MDU4MEYxMCAvKiBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwICovOyB9OwogCQk0NDM3NzMwRjEy
NUNCQzREMDBBQUUwMkMgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEE5OTc4MjBGQ0RFODY0MDA1ODBGMTAg
LyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmggKi87IH07CiAJCTRBRDZBMTE0MTNDODEyNDAwMEVB
OTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNEFENkExMTMxM0M4MTI0MDAwRUE5NzM3IC8qIEZvcm1WYWx1ZS5jcHAgKi87
IH07CisJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDY4MDNEMTVDQzdCMTAw
MDFBOEEyMyAvKiBTbG93TlBQTmV3LmNwcCAqLzsgfTsKIAkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4
RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY0MjlCMTVD
MDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVy
dGllcy5jcHAgKi87IH07CiAJCTUxODVGNkIyMTA3MTRFMDcwMDdBQTM5MyAvKiBIaXN0b3J5RGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLm1tICovOyB9OwogCQk1
MTg1RjZCMzEwNzE0RTEyMDA3QUEzOTMgLyogSGlzdG9yeURlbGVnYXRlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RTEwNzE0QTU3MDA3QUEz
OTMgLyogSGlzdG9yeURlbGVnYXRlLmggKi87IH07CkBAIC0yNzgsNiArMjc5LDcgQEAKIAkJNDRB
OTk3ODIwRkNERTg2NDAwNTgwRjEwIC8qIFdlYkFyY2hpdmVEdW1wU3VwcG9ydC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBXZWJBcmNoaXZlRHVtcFN1cHBvcnQuaDsgcGF0aCA9
IGNmL1dlYkFyY2hpdmVEdW1wU3VwcG9ydC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk0NEE5OTc4MzBGQ0RFODY0MDA1ODBGMTAgLyogV2ViQXJjaGl2ZUR1bXBTdXBwb3J0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFdlYkFyY2hpdmVEdW1wU3VwcG9y
dC5jcHA7IHBhdGggPSBjZi9XZWJBcmNoaXZlRHVtcFN1cHBvcnQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0QUQ2QTExMzEzQzgxMjQwMDBFQTk3MzcgLyogRm9ybVZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZvcm1WYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDY4MDNEMTVDQzdCMTAwMDFBOEEyMyAvKiBT
bG93TlBQTmV3LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFNsb3dO
UFBOZXcuY3BwOyBwYXRoID0gVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3Bw
OyBzb3VyY2VUcmVlID0gU09VUkNFX1JPT1Q7IH07CiAJCTUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5
MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQbHVnaW5TY3JpcHRhYmxlT2JqZWN0
T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxODVGNjlFMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSGlzdG9yeURlbGVnYXRlLmg7IHBhdGggPSBtYWMvSGlz
dG9yeURlbGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlGMTA3
MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVu
Y29kaW5nID0gNDsgbmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5
RGVsZWdhdGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC01NTMsNiArNTU1LDcg
QEAKIAkJCQkxQUQ5RDJGRDEyMDI4NDA5MDAxQTcwRDEgLyogUGx1Z2luU2NyaXB0YWJsZU5QT2Jq
ZWN0SW52b2tlRGVmYXVsdC5jcHAgKi8sCiAJCQkJNTE1RjQyOUIxNUMwNzg3MjAwN0M4RjkwIC8q
IFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCAqLywKIAkJ
CQkxQTFFNDI5NjE0MTE0MUM0MDAzODg3NTggLyogUHJpdmF0ZUJyb3dzaW5nLmNwcCAqLywKKwkJ
CQk1MTA2ODAzRDE1Q0M3QjEwMDAxQThBMjMgLyogU2xvd05QUE5ldy5jcHAgKi8sCiAJCQkpOwog
CQkJcGF0aCA9IFRlc3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTkwMiw2ICs5
MDUsNyBAQAogCQkJCTFBMUU0Mjk4MTQxMTQxQzQwMDM4ODc1OCAvKiBQcml2YXRlQnJvd3Npbmcu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2NkMzNTExNDU3NkE5MjAwOTlBMTE1IC8qIENvbnRl
bnRzU2NhbGVGYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE1RjQyOUMxNUMwNzg3MjAw
N0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDY4MDNFMTVDQzdCMTAwMDFBOEEyMyAvKiBTbG93TlBQ
TmV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
VGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL1Nsb3dOUFBOZXcuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMmE3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvU2xvd05QUE5ldy5jcHAK
QEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisK
KyNpbmNsdWRlIDxzdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIHN0ZDsKKworY2xhc3MgU2xv
d05QUE5ldyA6IHB1YmxpYyBQbHVnaW5UZXN0IHsKK3B1YmxpYzoKKyAgICBTbG93TlBQTmV3KE5Q
UCBucHAsIGNvbnN0IHN0cmluZyYgaWRlbnRpZmllcikKKyAgICAgICAgOiBQbHVnaW5UZXN0KG5w
cCwgaWRlbnRpZmllcikKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICAKKyAgICB2
aXJ0dWFsIE5QRXJyb3IgTlBQX05ldyhOUE1JTUVUeXBlIHBsdWdpblR5cGUsIHVpbnQxNl90IG1v
ZGUsIGludDE2X3QgYXJnYywgY2hhciogYXJnbltdLCBjaGFyKiBhcmd2W10sIE5QU2F2ZWREYXRh
ICpzYXZlZCkKKyAgICB7CisgICAgICAgIHVzbGVlcCg1NTAwMDApOworICAgICAgICByZXR1cm4g
TlBFUlJfTk9fRVJST1I7CisgICAgfQorfTsKKworc3RhdGljIFBsdWdpblRlc3Q6OlJlZ2lzdGVy
PFNsb3dOUFBOZXc+IHNsb3dOUFBOZXcoInNsb3ctbnBwLW5ldyIpOwo=
</data>
<flag name="review"
          id="166550"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>