<?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>138105</bug_id>
          
          <creation_ts>2014-10-27 14:53:10 -0700</creation_ts>
          <short_desc>Implement new plug-in API for muting plug-ins</short_desc>
          <delta_ts>2014-12-03 12:50:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Plug-ins</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=139231</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>adachan</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1044340</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-10-27 14:53:10 -0700</bug_when>
    <thetext>Implement new plug-in API for muting plug-ins.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046227</commentid>
    <comment_count>1</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-04 15:40:18 -0800</bug_when>
    <thetext>We are proposing a new plugin API to accomplish this:

When the browser wants to mute or unmute a plug-in it will call NPP_SetValue with the

NPNVmuteAudioBool = 4000

NPNVariable. The value parameter should be a pointer to an NPBool. The plug-in can query the browser for the value using NPN_GetValue.

Note that the value of “NPNVmuteAudioBool” does not affect the plug-in’s audio playing state. “NPPVpluginIsPlayingAudio” and &quot;NPNVmuteAudioBool” can both be true at the same time. The plug-in may still be playing audio, but the user won’t be able to hear it if the plug-in is muted.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046729</commentid>
    <comment_count>2</comment_count>
      <attachid>241088</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-05 23:35:34 -0800</bug_when>
    <thetext>Created attachment 241088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046730</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-05 23:37:30 -0800</bug_when>
    <thetext>Attachment 241088 did not pass style-queue:


ERROR: Source/WebCore/plugins/npapi.h:436:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/SetMuted.cpp:95:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 2 in 23 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>1046740</commentid>
    <comment_count>4</comment_count>
      <attachid>241090</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-05 23:58:20 -0800</bug_when>
    <thetext>Created attachment 241090
Revised patch

Fixed the error from the style checker regarding the switch statement.
As for the weird number of spaces in npapi.h, that&apos;s intentional to match the other lines in the enum definition.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046741</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 00:01:06 -0800</bug_when>
    <thetext>Attachment 241090 did not pass style-queue:


ERROR: Source/WebCore/plugins/npapi.h:436:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 23 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>1046839</commentid>
    <comment_count>6</comment_count>
      <attachid>241090</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-06 10:26:44 -0800</bug_when>
    <thetext>Comment on attachment 241090
Revised patch

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

Just a few drive-by comments. Someone else should review this.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state-expected.txt:12
&gt; +

We&apos;re missing the TEST COMPLETE at the end.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:4
&gt; +&lt;body onload=&quot;runTest()&quot;&gt;

Do we really need to run this on load? If you run it on load, you&apos;ll likely have to make the test asynchronous and call finishJSTest() at the end of runTest(). (this is likely why TEST COMPLETE does not show currently). But likely, you don&apos;t need to run it on load and make the test async.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:5
&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;

nit: this is not needed.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:6
&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;

nit: this is not needed.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:27
&gt; +    shouldBe(&quot;plugin1.isMuted&quot;, &quot;false&quot;);

shouldBeFalse()

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:28
&gt; +    shouldBe(&quot;plugin1.cachedIsMuted&quot;, &quot;false&quot;);

ditto

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:34
&gt; +    shouldBe(&quot;plugin1.isMuted&quot;, &quot;true&quot;);

shouldBeTrue()

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:35
&gt; +    shouldBe(&quot;plugin1.cachedIsMuted&quot;, &quot;true&quot;);

ditto

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:39
&gt; +    shouldBe(&quot;plugin2.isMuted&quot;, &quot;true&quot;);

ditto

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:40
&gt; +    shouldBe(&quot;plugin2.cachedIsMuted&quot;, &quot;true&quot;);

ditto.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:45
&gt; +description(&quot;Tests that the mute API implementation works as expected. This test needs to be run through WebKitTestRunner.&quot;);

nit: I would move this up, it is nice to have the description on top of the file.

&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:1092
&gt; +    NPBool value = !!muted;

Why the !! ? It seems like this may be useful for converting a NPBool into a bool but I don&apos;t understand why it is helpful the other way around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046840</commentid>
    <comment_count>7</comment_count>
      <attachid>241090</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-06 10:29:29 -0800</bug_when>
    <thetext>Comment on attachment 241090
Revised patch

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

Just a few drive-by comments. Someone else should review this.

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state-expected.txt:12
&gt;&gt; +
&gt; 
&gt; We&apos;re missing the TEST COMPLETE at the end.

We&apos;re missing the TEST COMPLETE at the end.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:1
&gt; +&lt;head&gt;

missing &lt;!DOCTYPE html&gt; to make sure the test is run in strict mode.

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:4
&gt;&gt; +&lt;body onload=&quot;runTest()&quot;&gt;
&gt; 
&gt; Do we really need to run this on load? If you run it on load, you&apos;ll likely have to make the test asynchronous and call finishJSTest() at the end of runTest(). (this is likely why TEST COMPLETE does not show currently). But likely, you don&apos;t need to run it on load and make the test async.

Do we really need to run this on load? If you run it on load, you&apos;ll likely have to make the test asynchronous and call finishJSTest() at the end of runTest(). (this is likely why TEST COMPLETE does not show currently). But likely, you don&apos;t need to run it on load and make the test async.

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:5
&gt;&gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; 
&gt; nit: this is not needed.

nit: this is not needed.

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:6
&gt;&gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; nit: this is not needed.

nit: this is not needed.

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:27
&gt;&gt; +    shouldBe(&quot;plugin1.isMuted&quot;, &quot;false&quot;);
&gt; 
&gt; shouldBeFalse()

shouldBeFalse()

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:28
&gt;&gt; +    shouldBe(&quot;plugin1.cachedIsMuted&quot;, &quot;false&quot;);
&gt; 
&gt; ditto

ditto

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:34
&gt;&gt; +    shouldBe(&quot;plugin1.isMuted&quot;, &quot;true&quot;);
&gt; 
&gt; shouldBeTrue()

shouldBeTrue()

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:35
&gt;&gt; +    shouldBe(&quot;plugin1.cachedIsMuted&quot;, &quot;true&quot;);
&gt; 
&gt; ditto

ditto

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:39
&gt;&gt; +    shouldBe(&quot;plugin2.isMuted&quot;, &quot;true&quot;);
&gt; 
&gt; ditto

ditto

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:40
&gt;&gt; +    shouldBe(&quot;plugin2.cachedIsMuted&quot;, &quot;true&quot;);
&gt; 
&gt; ditto.

ditto.

&gt;&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:45
&gt;&gt; +description(&quot;Tests that the mute API implementation works as expected. This test needs to be run through WebKitTestRunner.&quot;);
&gt; 
&gt; nit: I would move this up, it is nice to have the description on top of the file.

nit: I would move this up, it is nice to have the description on top of the file.

&gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:47
&gt; +&lt;/script&gt;

nit: I think body is not closed

&gt;&gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:1092
&gt;&gt; +    NPBool value = !!muted;
&gt; 
&gt; Why the !! ? It seems like this may be useful for converting a NPBool into a bool but I don&apos;t understand why it is helpful the other way around.

Why the !! ? It seems like this may be useful for converting a NPBool into a bool but I don&apos;t understand why it is helpful the other way around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046841</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-06 10:32:14 -0800</bug_when>
    <thetext>(Sorry about the duplicate post, Bugzilla got stuck for some reason)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046968</commentid>
    <comment_count>9</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-06 17:01:30 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Comment on attachment 241090 [details]
&gt; Revised patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241090&amp;action=review
&gt; 
&gt; Just a few drive-by comments. Someone else should review this.
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state-expected.txt:12
&gt; &gt; +
&gt; 
&gt; We&apos;re missing the TEST COMPLETE at the end.

I have fixed my test so it&apos;ll print that at the end.

&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:4
&gt; &gt; +&lt;body onload=&quot;runTest()&quot;&gt;
&gt; 
&gt; Do we really need to run this on load? If you run it on load, you&apos;ll likely
&gt; have to make the test asynchronous and call finishJSTest() at the end of
&gt; runTest(). (this is likely why TEST COMPLETE does not show currently). But
&gt; likely, you don&apos;t need to run it on load and make the test async.

It needs to be on load because it needs to add the plugin elements into the document&apos;s body.  I made the test asynchronous.

&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:5
&gt; &gt; +&lt;p id=&quot;description&quot;&gt;&lt;/p&gt;
&gt; 
&gt; nit: this is not needed.
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:6
&gt; &gt; +&lt;div id=&quot;console&quot;&gt;&lt;/div&gt;
&gt; 
&gt; nit: this is not needed.
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:27
&gt; &gt; +    shouldBe(&quot;plugin1.isMuted&quot;, &quot;false&quot;);
&gt; 
&gt; shouldBeFalse()
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:28
&gt; &gt; +    shouldBe(&quot;plugin1.cachedIsMuted&quot;, &quot;false&quot;);
&gt; 
&gt; ditto
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:34
&gt; &gt; +    shouldBe(&quot;plugin1.isMuted&quot;, &quot;true&quot;);
&gt; 
&gt; shouldBeTrue()
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:35
&gt; &gt; +    shouldBe(&quot;plugin1.cachedIsMuted&quot;, &quot;true&quot;);
&gt; 
&gt; ditto
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:39
&gt; &gt; +    shouldBe(&quot;plugin2.isMuted&quot;, &quot;true&quot;);
&gt; 
&gt; ditto
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:40
&gt; &gt; +    shouldBe(&quot;plugin2.cachedIsMuted&quot;, &quot;true&quot;);
&gt; 
&gt; ditto.
&gt; 
&gt; &gt; LayoutTests/platform/mac-wk2/plugins/muted-state.html:45
&gt; &gt; +description(&quot;Tests that the mute API implementation works as expected. This test needs to be run through WebKitTestRunner.&quot;);
&gt; 
&gt; nit: I would move this up, it is nice to have the description on top of the
&gt; file.

Fixed all of the above.

&gt; 
&gt; &gt; Source/WebKit2/WebProcess/Plugins/Netscape/NetscapePlugin.cpp:1092
&gt; &gt; +    NPBool value = !!muted;
&gt; 
&gt; Why the !! ? It seems like this may be useful for converting a NPBool into a
&gt; bool but I don&apos;t understand why it is helpful the other way around.

Yes, I don&apos;t need to !! the bool here.  Usually I would have done it if I&apos;m trying to set it to a value of a type bigger than an unsigned char.

Thanks so much for your feedback, Chris.  I&apos;ll post an updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046969</commentid>
    <comment_count>10</comment_count>
      <attachid>241148</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-06 17:02:43 -0800</bug_when>
    <thetext>Created attachment 241148
Revised patch

Incorporated Chris&apos; feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1046971</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-06 17:05:11 -0800</bug_when>
    <thetext>Attachment 241148 did not pass style-queue:


ERROR: Source/WebCore/plugins/npapi.h:436:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 23 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>1047699</commentid>
    <comment_count>12</comment_count>
      <attachid>241320</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-10 17:09:23 -0800</bug_when>
    <thetext>Created attachment 241320
Revised patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047701</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 17:10:59 -0800</bug_when>
    <thetext>Attachment 241320 did not pass style-queue:


ERROR: Source/WebCore/plugins/npapi.h:436:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 1 in 23 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>1048253</commentid>
    <comment_count>14</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2014-11-12 14:13:47 -0800</bug_when>
    <thetext>Committed:
http://trac.webkit.org/changeset/176039</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241088</attachid>
            <date>2014-11-05 23:35:34 -0800</date>
            <delta_ts>2014-11-05 23:58:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-Implement-new-plug-in-API-for-muting-plug-ins.patch</filename>
            <type>text/plain</type>
            <size>32741</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSA1NTRlYTkxMWU4OGY5YzQ1NDY1NmE4YjViNzVjOTVmZTZkNzAyNDNlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgNSBOb3YgMjAxNCAyMzozMTowNiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxlbWVudCBu
ZXcgcGx1Zy1pbiBBUEkgZm9yIG11dGluZyBwbHVnLWlucwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODEwNQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpT
b3VyY2UvV2ViQ29yZToKCkFkZCB0aGUgbmV3IE5QTlZtdXRlQXVkaW9Cb29sIE5QTlZhcmlhYmxl
LgoKVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0bWwKCiogcGx1
Z2lucy9ucGFwaS5oOgoKU291cmNlL1dlYktpdDI6CgpIYW5kbGUgdGhlIHNldHRpbmcgb2YgTlBO
Vm11dGVBdWRpb0Jvb2wgb24gdGhlIHBsdWctaW4uCgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5D
b250cm9sbGVyUHJveHkpOgpJbml0aWFsaXplIG1faXNNdXRlZC4KKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6ClRlbGwgdGhlIHBsdWdpbiBhYm91dCB0
aGUgbmV3IG11dGVkIHN0YXRlLgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CiogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46CkFk
ZCB0aGUgTXV0ZWRTdGF0ZUNoYW5nZWQgbWVzc2FnZS4KKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CihXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToKSW5pdGlhbGl6ZSBpc011dGVkLgooV2ViS2l0OjpQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CkhhbmRsZSBpc011dGVkLgooV2ViS2l0
OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CkRpdHRvLgoqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKFdlYktpdDo6TlBOX0dldFZhbHVlKToKR2V0
IHRoZSBwbHVnLWluJ3MgbXV0ZWQgc3RhdGUuCiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcDoKKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzTXV0ZWQpOgpH
ZXQgdGhlIG11dGVkIHN0YXRlIGZyb20gUGx1Z2luQ29udHJvbGxlclByb3h5LgooV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpDYWxsIE5QUF9TZXRWYWx1ZSB3aXRo
IE5QTlZtdXRlQXVkaW9Cb29sIGFuZCB0aGUgdXBkYXRlZCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmg6CihXZWJLaXQ6OlBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgoqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgpTZXQgbV9w
ZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc011dGVkLgooV2ViS2l0OjpQbHVnaW5Q
cm94eTo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpTZW5kIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNz
YWdlIHRvIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaDoKKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdp
blZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKToKQ2FsbCBQbHVnaW46Om11dGVkU3RhdGVD
aGFuZ2VkKCkgd2l0aCB0aGUgcGFnZSdzIG11dGVkIHN0YXRlLgooV2ViS2l0OjpQbHVnaW5WaWV3
Ojppc011dGVkKToKR2V0IHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgoKVG9vbHM6CgpBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0
IGZvciB0aGUgbXV0ZSBBUEkuCgoqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CiogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1Rlc3RzL21hYy9TZXRNdXRlZC5jcHA6IEFkZGVkLgooU2V0TXV0ZWQ6OlNldE11dGVkKToKKFNl
dE11dGVkOjppc011dGVkKToKKFNldE11dGVkOjpjYWNoZWRJc011dGVkKToKKFNldE11dGVkOjpT
Y3JpcHRhYmxlT2JqZWN0OjpoYXNQcm9wZXJ0eSk6CihTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVj
dDo6Z2V0UHJvcGVydHkpOgooU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OnBsdWdpblRlc3Qp
OgooU2V0TXV0ZWQ6Ok5QUF9OZXcpOgooU2V0TXV0ZWQ6Ok5QUF9HZXRWYWx1ZSk6CihTZXRNdXRl
ZDo6TlBQX1NldFZhbHVlKToKCkxheW91dFRlc3RzOgoKKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBwbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIC4uLi9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDEyICsrKwogLi4uL3BsYXRmb3Jt
L21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS5odG1sICAgICAgfCAgNDcgKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyAr
KysKIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBhcGkuaCAgICAgICAgICAgICAgICAgICAgIHwg
ICAzICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDUwICsrKysrKysrKysKIC4uLi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAgICAgICAgIHwgIDEwICsrCiAuLi4vV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oICB8ICAgMyArCiAuLi4vUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3Nh
Z2VzLmluICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMuY3BwICAgICB8ICAgNSArCiAuLi4vUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMuaCAgICAgICB8ICAgMyArCiAuLi4vUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgICAgICB8ICAgNiArKwogLi4uL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgfCAgMTEgKysrCiAuLi4vV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggICB8ICAgMyArCiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggICAgICAgICB8ICAgMiArCiAuLi4vV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oICB8ICAgMyArCiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwICB8ICAgNiArKwog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggICAgfCAgIDEg
KwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwICAgfCAg
MTQgKystCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oICAg
ICB8ICAgMSArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyMSArKysrCiAuLi4vRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgNCArCiAuLi4vVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL21hYy9TZXRN
dXRlZC5jcHAgICAgICB8IDEwNiArKysrKysrKysrKysrKysrKysrKysKIDIzIGZpbGVzIGNoYW5n
ZWQsIDMzNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1
Z2lucy9tdXRlZC1zdGF0ZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL21hYy9TZXRNdXRlZC5jcHAKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Zjc5M2U1Ni4uNWYzMzYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTExLTA1ICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgcGx1Zy1p
biBBUEkgZm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQtc3RhdGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
bXV0ZWQtc3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTQtMTEtMDQgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtmaWx0ZXJzMl0gU3VwcG9ydCBmb3IgYmFja2Ryb3At
ZmlsdGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
bXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9w
bHVnaW5zL211dGVkLXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hZWQ0MDMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUZXN0cyB0aGF0IHRoZSBtdXRlIEFQSSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBhcyBleHBl
Y3RlZC4gVGhpcyB0ZXN0IG5lZWRzIHRvIGJlIHJ1biB0aHJvdWdoIFdlYktpdFRlc3RSdW5uZXIu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBsdWdpbjEuaXNNdXRlZCBp
cyBmYWxzZQorUEFTUyBwbHVnaW4xLmNhY2hlZElzTXV0ZWQgaXMgZmFsc2UKK1BBU1MgcGx1Z2lu
MS5pc011dGVkIGlzIHRydWUKK1BBU1MgcGx1Z2luMS5jYWNoZWRJc011dGVkIGlzIHRydWUKK1BB
U1MgcGx1Z2luMi5pc011dGVkIGlzIHRydWUKK1BBU1MgcGx1Z2luMi5jYWNoZWRJc011dGVkIGlz
IHRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L211dGVkLXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
bXV0ZWQtc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWNh
M2E0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL211dGVkLXN0YXRlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlVGVzdFBsdWdp
bih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0JywgdGVzdE5hbWUpOworCisg
ICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIAoreworICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4gb25seSBy
dW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCByZXF1aXJlcyBUZXN0TmV0
c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsdWdpbjEg
PSBjcmVhdGVUZXN0UGx1Z2luKCdzZXQtbXV0ZWQnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHBsdWdpbjEpOworICAgIAorICAgIHNob3VsZEJlKCJwbHVnaW4xLmlzTXV0ZWQiLCAi
ZmFsc2UiKTsKKyAgICBzaG91bGRCZSgicGx1Z2luMS5jYWNoZWRJc011dGVkIiwgImZhbHNlIik7
CisKKyAgICAvLyBOb3cgc2V0IHBhZ2UgdG8gYmUgbXV0ZWQuCisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZU11dGVkKHRydWUpOworCisg
ICAgc2hvdWxkQmUoInBsdWdpbjEuaXNNdXRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInBs
dWdpbjEuY2FjaGVkSXNNdXRlZCIsICJ0cnVlIik7CisKKyAgICBwbHVnaW4yID0gY3JlYXRlVGVz
dFBsdWdpbignc2V0LW11dGVkJyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwbHVn
aW4yKTsKKyAgICBzaG91bGRCZSgicGx1Z2luMi5pc011dGVkIiwgInRydWUiKTsKKyAgICBzaG91
bGRCZSgicGx1Z2luMi5jYWNoZWRJc011dGVkIiwgInRydWUiKTsKK30KKzwvc2NyaXB0PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIG11dGUgQVBJIGltcGxlbWVudGF0
aW9uIHdvcmtzIGFzIGV4cGVjdGVkLiBUaGlzIHRlc3QgbmVlZHMgdG8gYmUgcnVuIHRocm91Z2gg
V2ViS2l0VGVzdFJ1bm5lci4iKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEyNzQ1MS4u
OTYyYzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTExLTA1ICBBZGEgQ2hh
biAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgcGx1Zy1pbiBB
UEkgZm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgTlBOVm11dGVBdWRpb0Jvb2wgTlBOVmFyaWFibGUu
CisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0
bWwKKworICAgICAgICAqIHBsdWdpbnMvbnBhcGkuaDoKKwogMjAxNC0xMS0wNCAgQWRhIENoYW4g
IDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWd1cmUgb3V0IHdoZXRoZXIgYSBwbHVn
LWluIGlzIHBsYXlpbmcgYXVkaW8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L25wYXBpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmgKaW5kZXggMWJlZGUzYS4u
OTM0MDlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBhcGkuaApAQCAtNDMyLDYgKzQzMiw5IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICwgTlBOVnN1cHBvcnRzQ29tcG9zaXRpbmdDb3JlQW5pbWF0aW9uUGx1Z2lu
c0Jvb2wgPSA3NDY1NiAvKiBUUlVFIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQSBt
b2RlbCBjb21wb3NpdGluZyAqLwogI2VuZGlmIC8qIFhQX01BQ09TWCAqLworCisgICwgTlBOVm11
dGVBdWRpb0Jvb2wgPSA0MDAwCisKIH0gTlBOVmFyaWFibGU7CiAKIHR5cGVkZWYgZW51bSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMzFkOGI4Mi4uYTk0NDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBA
CisyMDE0LTExLTA1ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBuZXcgcGx1Zy1pbiBBUEkgZm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIHRoZSBzZXR0aW5nIG9m
IE5QTlZtdXRlQXVkaW9Cb29sIG9uIHRoZSBwbHVnLWluLgorCisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OlBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIEluaXRpYWxp
emUgbV9pc011dGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om11
dGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgVGVsbCB0aGUgcGx1Z2luIGFib3V0IHRoZSBuZXcg
bXV0ZWQgc3RhdGUuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgQWRkIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNzYWdlLgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICBJbml0aWFsaXplIGlzTXV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgSGFuZGxlIGlzTXV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgRGl0dG8uCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOgorICAgICAg
ICBHZXQgdGhlIHBsdWctaW4ncyBtdXRlZCBzdGF0ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6aXNNdXRlZCk6CisgICAgICAgIEdldCB0aGUgbXV0ZWQgc3RhdGUgZnJvbSBQ
bHVnaW5Db250cm9sbGVyUHJveHkuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpt
dXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIENhbGwgTlBQX1NldFZhbHVlIHdpdGggTlBOVm11
dGVBdWRpb0Jvb2wgYW5kIHRoZSB1cGRhdGVkIG11dGVkIHN0YXRlLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luOjptdXRlZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIFNldCBtX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzTXV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIFNlbmQgdGhlIE11dGVk
U3RhdGVDaGFuZ2VkIG1lc3NhZ2UgdG8gdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICBDYWxsIFBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5n
ZWQoKSB3aXRoIHRoZSBwYWdlJ3MgbXV0ZWQgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmlzTXV0ZWQpOgorICAgICAgICBHZXQgdGhlIHBhZ2UncyBjdXJyZW50IG11dGVkIHN0
YXRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisKIDIwMTQt
MTEtMDQgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRmlndXJlIG91
dCB3aGV0aGVyIGEgcGx1Zy1pbiBpcyBwbGF5aW5nIGF1ZGlvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGRl
MzJhMjYuLjlkYjgxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpQbHVnaW5Db250cm9sbGVyUHJveHkoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIGMKICAgICAsIG1fcGx1Z2luSW5zdGFuY2VJRChjcmVhdGlvblBhcmFtZXRl
cnMucGx1Z2luSW5zdGFuY2VJRCkKICAgICAsIG1fdXNlckFnZW50KGNyZWF0aW9uUGFyYW1ldGVy
cy51c2VyQWdlbnQpCiAgICAgLCBtX2lzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChjcmVhdGlvblBh
cmFtZXRlcnMuaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQorICAgICwgbV9pc011dGVkKGNyZWF0
aW9uUGFyYW1ldGVycy5pc011dGVkKQogICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKGNyZWF0aW9uUGFyYW1ldGVycy5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KQogICAgICwgbV9pc0luaXRpYWxpemluZyhmYWxzZSkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNl
KQpAQCAtNjM3LDYgKzYzOCwxNSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbgogICAgIG1fcGx1
Z2luLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoaXNQcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIH0KIAordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om11dGVkU3RhdGVDaGFuZ2VkKGJv
b2wgaXNNdXRlZCkKK3sKKyAgICBpZiAobV9pc011dGVkID09IGlzTXV0ZWQpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBtX2lzTXV0ZWQgPSBpc011dGVkOworICAgIG1fcGx1Z2luLT5tdXRl
ZFN0YXRlQ2hhbmdlZChpc011dGVkKTsKK30KKwogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OmdldEZvcm1WYWx1ZShib29sJiByZXR1cm5WYWx1ZSwgU3RyaW5nJiBmb3JtVmFsdWUpCiB7CiAg
ICAgcmV0dXJuVmFsdWUgPSBtX3BsdWdpbi0+Z2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aAppbmRleCAyN2M4YWRhLi5mMzg2NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGlzTXV0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzTXV0ZWQ7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigp
IG92ZXJyaWRlOwpAQCAtMTY0LDYgKzE2NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0b3Jh
Z2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChib29sKTsKKyAgICB2b2lkIG11dGVkU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAg
IHZvaWQgZ2V0Rm9ybVZhbHVlKGJvb2wmIHJldHVyblZhbHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSk7
CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMmKTsKQEAgLTE3Niw2ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VzZXJB
Z2VudDsKICAgICBib29sIG1fc3RvcmFnZUJsb2NraW5nRW5hYmxlZDsKICAgICBib29sIG1faXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGJvb2wgbV9pc011dGVkOwogICAgIGJvb2wgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemlu
ZzsKICAgICBib29sIG1faXNWaXNpYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA1YjAwMTZhLi41OTAyMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTI5
LDYgKzEyOSw5IEBAIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBMZWdhY3lSZWNl
aXZlciB7CiAKICAgICAjIEdldHMgdGhlIHN0cmluZyByZXByZXNlbnRhdGluZyB0aGUgZm9ybSB2
YWx1ZSBvZiB0aGUgcGx1Zy1pbgogICAgIEdldEZvcm1WYWx1ZSgpIC0+IChib29sIHJldHVyblZh
bHVlLCBTdHJpbmcgZm9ybVZhbHVlKQorCisgICAgIyBTZW50IHdoZW4gdGhlIGJyb3dzZXIgd2Fu
dHMgdG8gbXV0ZSBvciB1bm11dGUgdGhlIHBsdWdpbi4KKyAgICBNdXRlZFN0YXRlQ2hhbmdlZChi
b29sIG11dGVkKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBmNGJhNGNiLi45
NmE2MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zNyw2ICszNyw3IEBAIFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICAsIHdpbmRvd05Q
T2JqZWN0SUQoMCkKICAgICAsIGNvbnRlbnRzU2NhbGVGYWN0b3IoMSkKICAgICAsIGlzUHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIGlzTXV0ZWQoZmFsc2UpCiAgICAgLCBhc3lu
Y2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUoZmFsc2UpCiAgICAgLCBhcnRpZmljaWFsUGx1Z2lu
SW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZmFsc2UpCiAgICAgLCBpc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGZhbHNlKQpAQCAtNTEsNiArNTIsNyBAQCB2b2lkIFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50OwogICAgIGVuY29kZXIgPDwgY29udGVudHNTY2Fs
ZUZhY3RvcjsKICAgICBlbmNvZGVyIDw8IGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICBl
bmNvZGVyIDw8IGlzTXV0ZWQ7CiAgICAgZW5jb2RlciA8PCBhc3luY2hyb25vdXNDcmVhdGlvbklu
Y29tcGxldGU7CiAgICAgZW5jb2RlciA8PCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25E
ZWxheUVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkOwpAQCAtNzYsNiArNzgsOSBAQCBib29sIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQbHVnaW5DcmVhdAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTXV0ZWQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5hc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IGQyNTNkMWMuLjhmMDVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtNjAsNiArNjAsOSBAQCBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAg
IC8vIFdoZXRoZXIgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGlu
c3RhbnRpYXRpb24uCiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisKKyAgICAv
LyBXaGV0aGVyIHRoZSBwbHVnaW4gc2hvdWxkIGJlIG11dGVkLgorICAgIGJvb2wgaXNNdXRlZDsK
ICAgICAKICAgICAvLyBJZiByZXF1ZXN0aW5nIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLCB3
aGV0aGVyIHRoaXMgcGx1Z2luIGhhZCBwcmV2aW91c2x5IGJlZW4gcmVxdWVzdGVkIGFzeW5jaHJv
bm91c2x5CiAgICAgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBlZjhmMGVmLi43MWUzMGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTQ0Miw2ICs0NDIsMTIgQEAg
c3RhdGljIE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxl
LCB2b2lkICp2YWx1ZSkKICAgICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHBsdWdpbi0+aXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
CisgICAgICAgIGNhc2UgTlBOVm11dGVBdWRpb0Jvb2w6IHsKKyAgICAgICAgICAgIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKKyAg
ICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHBsdWdpbi0+aXNNdXRlZCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2FzZSBO
UE5Wc3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sOgogICAgICAgICAgICAgLy8gQWx3YXlzIGNsYWlt
IHRvIHN1cHBvcnQgdGhlIENvcmUgR3JhcGhpY3MgZHJhd2luZyBtb2RlbC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCmluZGV4IDNmN2NkNTEuLjRkNWRlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcApAQCAtMjU0LDYgKzI1NCwxMSBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppc1ByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKQogICAgIHJldHVybiBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpOwogfQogCitib29sIE5ldHNjYXBlUGx1Z2luOjppc011dGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29udHJvbGxlcigpLT5pc011dGVkKCk7Cit9CisKIE5QT2JqZWN0
KiBOZXRzY2FwZVBsdWdpbjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogewogICAgIHJldHVybiBj
b250cm9sbGVyKCktPndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CkBAIC0xMDgyLDYgKzEwODcsMTIg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlldyhjb25zdCBJbnRQb2lu
dCYgcG9pbnRJblJvb3RWaWV3Q29vcmRpbmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBO
ZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCBtdXRlZCkKK3sKKyAgICBOUEJv
b2wgdmFsdWUgPSAhIW11dGVkOworICAgIE5QUF9TZXRWYWx1ZShOUE5WbXV0ZUF1ZGlvQm9vbCwg
JnZhbHVlKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICAKIHZvaWQgTmV0c2NhcGVQ
bHVnaW46OndpbmRvd0ZvY3VzQ2hhbmdlZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRl
eCA1YmE1ZGU4Li42MWI0NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTAzLDYgKzEw
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBldmFsdWF0ZShOUE9iamVjdCosIGNvbnN0IFN0cmluZyZzY3JpcHRTdHJp
bmcsIE5QVmFyaWFudCogcmVzdWx0KTsKICAgICBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2V0
RXhjZXB0aW9uRnVuY3Rpb24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwogCkBAIC0yNjAsNiAr
MjYxLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvblN0cmlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisKICAgICB2b2lkIHVwZGF0ZU5Q
TlByaXZhdGVNb2RlKCk7CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFdJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBjMDJhOTNmLi5iOGY1MThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yODAs
NiArMjgwLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6QXVkaW9IYXJk
d2FyZUFjdGl2aXR5VHlwZSBhdWRpb0hhcmR3YXJlQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBX
ZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpVbmtub3duOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgeyB9CisKIHByb3RlY3RlZDoKICAgICBQ
bHVnaW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Db250cm9sbGVyLmgKaW5kZXggNmQyOGE4Yy4uYTU1M2FhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0x
NTgsNiArMTU4LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBieSB0aGUgTmV0c2NhcGUgcGx1
Zy1pbiB3aGVuIGl0IHN0YXJ0cyBvciBzdG9wcyBwbGF5aW5nIGF1ZGlvLgogICAgIHZpcnR1YWwg
dm9pZCBzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyhib29sKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIHBsdWdpbiBzaG91bGQgYmUgbXV0ZWQuCisgICAgdmlydHVhbCBib29sIGlz
TXV0ZWQoKSBjb25zdCA9IDA7CisKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRl
c3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3Rl
Y3RvciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMDBiYTQ3NS4uMDk1ZGNiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0xMDQs
NiArMTA0LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+dXNl
ckFnZW50ID0gY29udHJvbGxlcigpLT51c2VyQWdlbnQoKTsKICAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMtPmNvbnRlbnRzU2NhbGVGYWN0b3IgPSBjb250ZW50c1NjYWxlRmFj
dG9yKCk7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc1ByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+aXNNdXRlZCA9IGNvbnRy
b2xsZXIoKS0+aXNNdXRlZCgpOwogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkID0gY29udHJvbGxl
cigpLT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKICAgICBt
X3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
KTsKIApAQCAtNTI2LDYgKzUyNywxMSBAQCB2b2lkIFBsdWdpblByb3h5Ojpwcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgbV9jb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKK3ZvaWQgUGx1Z2luUHJveHk6Om11dGVkU3RhdGVD
aGFuZ2VkKGJvb2wgaXNNdXRlZCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNdXRlZFN0YXRlQ2hhbmdlZChp
c011dGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogYm9vbCBQbHVnaW5Qcm94eTo6Z2V0
Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4
IDg0MTE3ZmMuLjUyNjJjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgbXV0
ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1W
YWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IGQ4YzE3YjYuLmM3MjFmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzMzEsNyArMTMzMSwxMSBAQCB2b2lkIFBsdWdpblZp
ZXc6Om1lZGlhQ2FuU3RhcnQoKQogCiB2b2lkIFBsdWdpblZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlk
Q2hhbmdlKCkKIHsKLSAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQgKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUpLgorICAgIC8vIFRoZSBwbHVnLWlu
IGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCisgICAgaWYgKCFt
X2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bs
dWdpbi0+bXV0ZWRTdGF0ZUNoYW5nZWQoaXNNdXRlZCgpKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3
Ojppc1BsdWdpblZpc2libGUoKQpAQCAtMTU4MSw2ICsxNTg1LDE0IEBAIGJvb2wgUGx1Z2luVmll
dzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCitib29sIFBsdWdpblZpZXc6OmlzTXV0ZWQo
KSBjb25zdAoreworICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT5pc011dGVkKCk7
Cit9CisKIGJvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25F
bmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJQYWdlLT5hc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDdmODIxZWIuLjRlNDQ1NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMjEzLDYgKzIx
Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkRm9yQWxsUGx1Z2lucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkMzYzODFkLi42ZjNhYzYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMTEtMDUgIEFkYSBDaGFuICA8YWRh
Y2hhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBwbHVnLWluIEFQSSBmb3Ig
bXV0aW5nIHBsdWctaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgxMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0IGZvciB0aGUgbXV0ZSBBUEkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9t
YWMvU2V0TXV0ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFNldE11dGVkOjpTZXRNdXRlZCk6Cisg
ICAgICAgIChTZXRNdXRlZDo6aXNNdXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6Y2FjaGVkSXNN
dXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVjdDo6aGFzUHJvcGVydHkp
OgorICAgICAgICAoU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OmdldFByb3BlcnR5KToKKyAg
ICAgICAgKFNldE11dGVkOjpTY3JpcHRhYmxlT2JqZWN0OjpwbHVnaW5UZXN0KToKKyAgICAgICAg
KFNldE11dGVkOjpOUFBfTmV3KToKKyAgICAgICAgKFNldE11dGVkOjpOUFBfR2V0VmFsdWUpOgor
ICAgICAgICAoU2V0TXV0ZWQ6Ok5QUF9TZXRWYWx1ZSk6CisKIDIwMTQtMTEtMDUgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIHVudXNlZCBkZWxl
dGlvbiBVSSBmZWF0dXJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NTYyMzg3Li45
N2VjZWE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwLDYgKzcwLDcgQEAKIAkJ
NTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlk
ZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2Jq
ZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87IH07CiAJCTUxODVGNkIyMTA3MTRFMDcw
MDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURl
bGVnYXRlLm1tICovOyB9OwogCQk1MUNBQ0JEODE1RDk2RkQwMDBFQjUzQTIgLyogRXZhbHVhdGVK
U1dpdGhpbk5QUF9OZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFDQUNCRDcxNUQ5NkZEMDAwRUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBf
TmV3LmNwcCAqLzsgfTsKKwkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMDIwNkNF
MUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5jcHAgKi87IH07CiAJCTUzQ0JCODMyMTM0RTQy
RjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQkI4MzAxMzRFNDJGMzAwMUNFNkE0IC8q
IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07CiAJCTVEQjlBQzk3MEY3MjJDMzYwMDY4
NDY0MSAvKiBBSEVNX19fXy5UVEYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVNX19fXy5U
VEYgKi87IH07CiAJCTVEQjlBQzk4MEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyMTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXIx
MDAudHRmICovOyB9OwpAQCAtMjY0LDYgKzI2NSw3IEBACiAJCTUxODVGNjlFMTA3MTRBNTcwMDdB
QTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSGlzdG9yeURlbGVnYXRlLmg7IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlGMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0
b3J5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IEhp
c3RvcnlEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0FDQkQ3MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0
ZUpTV2l0aGluTlBQX05ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHA7IHBhdGggPSBUZXN0TmV0c2NhcGVQbHVnSW4v
VGVzdHMvRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCTUyMDIwNkNFMUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRNdXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMwMTM0RTQyRjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1
bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3lj
bGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTND
QkI4MzExMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURFOEFFNDMxM0EyQzE1ODAwRDZBMzdEIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtNTczLDYgKzU3NSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTY2QzM0RjE0NTc2QTky
MDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgKi8sCiAJCQkJMUEzMUVCMzcxMzQ2
NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2ludC5jcHAgKi8sCisJCQkJNTIwMjA2Q0UxQTBBREE1
OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNwcCAqLywKIAkJCQkxQTE0QzhBMzE0MDZERTA0MDBCMjU0
RjcgLyogU3VwcG9ydHNDYXJib25FdmVudE1vZGVsLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
bWFjOwpAQCAtOTAwLDYgKzkwMyw3IEBACiAJCQkJNTFDQUNCRDgxNUQ5NkZEMDAwRUI1M0EyIC8q
IEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBRDZBMTE0
MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFG
RjY2QkMxMzdERUZEMjAwNzkxNjk2IC8qIEdldFVSTE5vdGlmeVdpdGhVUkxUaGF0RmFpbHNUb0xv
YWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1MTU0IC8qIFNl
dE11dGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUNDMUY1MTM3REQyRUMwMEE1RDdFNyAv
KiBHZXRVUkxXaXRoSmF2YVNjcmlwdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNFMjhB
QTEzMTFENzNCMDA1MDEzNDkgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRVUkxEZXN0cm95aW5nUGx1
Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRDRDQjIyMTJBNkQxMzUwMDI3QTdBRiAvKiBH
ZXRVc2VyQWdlbnRXaXRoTnVsbE5QUEZyb21OUFBOZXcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvbWFj
L1NldE11dGVkLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9U
ZXN0cy9tYWMvU2V0TXV0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjVjZTBjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0
c2NhcGVQbHVnSW4vVGVzdHMvbWFjL1NldE11dGVkLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
CisKK2NsYXNzIFNldE11dGVkIDogcHVibGljIFBsdWdpblRlc3QgeworcHVibGljOgorICAgIFNl
dE11dGVkKE5QUCBucHAsIGNvbnN0IHN0cmluZyYgaWRlbnRpZmllcikKKyAgICAgICAgOiBQbHVn
aW5UZXN0KG5wcCwgaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2NhY2hlZElzTXV0ZWQoZmFsc2Up
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzTXV0ZWQoKQorICAgIHsKKyAg
ICAgICAgTlBCb29sIG11dGVkID0gRkFMU0U7CisgICAgICAgIE5QTl9HZXRWYWx1ZShOUE5WbXV0
ZUF1ZGlvQm9vbCwgJm11dGVkKTsKKyAgICAgICAgcmV0dXJuIG11dGVkOworICAgIH0KKworICAg
IGJvb2wgY2FjaGVkSXNNdXRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jYWNoZWRJc011
dGVkOworICAgIH0KKworICAgIGNsYXNzIFNjcmlwdGFibGVPYmplY3QgOiBwdWJsaWMgT2JqZWN0
PFNjcmlwdGFibGVPYmplY3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJpc011dGVkIikKKyAgICAgICAgICAgIHx8
IGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJjYWNoZWRJc011dGVkIik7CisgICAgICAgIH0K
KworICAgICAgICBib29sIGdldFByb3BlcnR5KE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIE5Q
VmFyaWFudCogcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaWRlbnRpZmllcklz
KHByb3BlcnR5TmFtZSwgImlzTXV0ZWQiKSkgeworICAgICAgICAgICAgICAgIEJPT0xFQU5fVE9f
TlBWQVJJQU5UKHBsdWdpblRlc3QoKS0+aXNNdXRlZCgpLCAqcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpZGVudGlm
aWVySXMocHJvcGVydHlOYW1lLCAiY2FjaGVkSXNNdXRlZCIpKSB7CisgICAgICAgICAgICAgICAg
Qk9PTEVBTl9UT19OUFZBUklBTlQocGx1Z2luVGVzdCgpLT5jYWNoZWRJc011dGVkKCksICpyZXN1
bHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBT
ZXRNdXRlZCogcGx1Z2luVGVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNldE11dGVk
Kj4oT2JqZWN0PFNjcmlwdGFibGVPYmplY3Q+OjpwbHVnaW5UZXN0KCkpOyB9CisgICAgfTsKKwor
ICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgdWludDE2
X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZl
ZERhdGEgKnNhdmVkKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRJc011dGVkID0gaXNNdXRlZCgp
OworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBO
UEVycm9yIE5QUF9HZXRWYWx1ZShOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAodmFyaWFibGUgIT0gTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVj
dCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworCisgICAgICAgICoo
TlBPYmplY3QqKil2YWx1ZSA9IFNjcmlwdGFibGVPYmplY3Q6OmNyZWF0ZSh0aGlzKTsKKworICAg
ICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBOUEVycm9y
IE5QUF9TZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgICAgICBjYXNlIE5QTlZtdXRlQXVk
aW9Cb29sOgorICAgICAgICAgICAgICAgIG1fY2FjaGVkSXNNdXRlZCA9ICooTlBCb29sKil2YWx1
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworICAg
ICAgICB9CisKKyAgICB9CisgICAgYm9vbCBtX2NhY2hlZElzTXV0ZWQ7Cit9OworCitzdGF0aWMg
UGx1Z2luVGVzdDo6UmVnaXN0ZXI8U2V0TXV0ZWQ+IHNldE11dGVkKCJzZXQtbXV0ZWQiKTsKLS0g
CjIuMS4xIChBcHBsZSBHaXQtNTEpCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241090</attachid>
            <date>2014-11-05 23:58:20 -0800</date>
            <delta_ts>2014-11-06 17:02:43 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>0001-Implement-new-plug-in-API-for-muting-plug-ins.patch</filename>
            <type>text/plain</type>
            <size>32721</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSA4NjBlOWZhNTBmMzVkYzkzNTU1NTU2MDNhYjIxODZjNzAyMDdmMDAxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgNSBOb3YgMjAxNCAyMzozMTowNiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxlbWVudCBu
ZXcgcGx1Zy1pbiBBUEkgZm9yIG11dGluZyBwbHVnLWlucwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODEwNQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpT
b3VyY2UvV2ViQ29yZToKCkFkZCB0aGUgbmV3IE5QTlZtdXRlQXVkaW9Cb29sIE5QTlZhcmlhYmxl
LgoKVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0bWwKCiogcGx1
Z2lucy9ucGFwaS5oOgoKU291cmNlL1dlYktpdDI6CgpIYW5kbGUgdGhlIHNldHRpbmcgb2YgTlBO
Vm11dGVBdWRpb0Jvb2wgb24gdGhlIHBsdWctaW4uCgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5D
b250cm9sbGVyUHJveHkpOgpJbml0aWFsaXplIG1faXNNdXRlZC4KKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6ClRlbGwgdGhlIHBsdWdpbiBhYm91dCB0
aGUgbmV3IG11dGVkIHN0YXRlLgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CiogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46CkFk
ZCB0aGUgTXV0ZWRTdGF0ZUNoYW5nZWQgbWVzc2FnZS4KKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CihXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToKSW5pdGlhbGl6ZSBpc011dGVkLgooV2ViS2l0OjpQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CkhhbmRsZSBpc011dGVkLgooV2ViS2l0
OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CkRpdHRvLgoqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKFdlYktpdDo6TlBOX0dldFZhbHVlKToKR2V0
IHRoZSBwbHVnLWluJ3MgbXV0ZWQgc3RhdGUuCiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcDoKKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzTXV0ZWQpOgpH
ZXQgdGhlIG11dGVkIHN0YXRlIGZyb20gUGx1Z2luQ29udHJvbGxlclByb3h5LgooV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpDYWxsIE5QUF9TZXRWYWx1ZSB3aXRo
IE5QTlZtdXRlQXVkaW9Cb29sIGFuZCB0aGUgdXBkYXRlZCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmg6CihXZWJLaXQ6OlBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgoqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgpTZXQgbV9w
ZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc011dGVkLgooV2ViS2l0OjpQbHVnaW5Q
cm94eTo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpTZW5kIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNz
YWdlIHRvIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaDoKKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdp
blZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKToKQ2FsbCBQbHVnaW46Om11dGVkU3RhdGVD
aGFuZ2VkKCkgd2l0aCB0aGUgcGFnZSdzIG11dGVkIHN0YXRlLgooV2ViS2l0OjpQbHVnaW5WaWV3
Ojppc011dGVkKToKR2V0IHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgoKVG9vbHM6CgpBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0
IGZvciB0aGUgbXV0ZSBBUEkuCgoqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CiogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1Rlc3RzL21hYy9TZXRNdXRlZC5jcHA6IEFkZGVkLgooU2V0TXV0ZWQ6OlNldE11dGVkKToKKFNl
dE11dGVkOjppc011dGVkKToKKFNldE11dGVkOjpjYWNoZWRJc011dGVkKToKKFNldE11dGVkOjpT
Y3JpcHRhYmxlT2JqZWN0OjpoYXNQcm9wZXJ0eSk6CihTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVj
dDo6Z2V0UHJvcGVydHkpOgooU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OnBsdWdpblRlc3Qp
OgooU2V0TXV0ZWQ6Ok5QUF9OZXcpOgooU2V0TXV0ZWQ6Ok5QUF9HZXRWYWx1ZSk6CihTZXRNdXRl
ZDo6TlBQX1NldFZhbHVlKToKCkxheW91dFRlc3RzOgoKKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBwbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIC4uLi9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDEyICsrKwogLi4uL3BsYXRmb3Jt
L21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS5odG1sICAgICAgfCAgNDcgKysrKysrKysrCiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMyAr
KysKIFNvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBhcGkuaCAgICAgICAgICAgICAgICAgICAgIHwg
ICAzICsKIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgIDUwICsrKysrKysrKysKIC4uLi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAgICAgICAgIHwgIDEwICsrCiAuLi4vV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oICB8ICAgMyArCiAuLi4vUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3Nh
Z2VzLmluICAgICAgICAgICAgICB8ICAgMyArCiAuLi4vUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVh
dGlvblBhcmFtZXRlcnMuY3BwICAgICB8ICAgNSArCiAuLi4vUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMuaCAgICAgICB8ICAgMyArCiAuLi4vUGx1Z2lucy9OZXRzY2FwZS9O
ZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgICAgICB8ICAgNiArKwogLi4uL1dlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgfCAgMTEgKysrCiAuLi4vV2ViUHJvY2Vz
cy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggICB8ICAgMyArCiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmggICAgICAgICB8ICAgMiArCiAuLi4vV2Vi
S2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oICB8ICAgMyArCiBTb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwICB8ICAgNiArKwog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmggICAgfCAgIDEg
KwogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwICAgfCAg
MTQgKystCiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oICAg
ICB8ICAgMSArCiBUb29scy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAyMSArKysrCiAuLi4vRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiAgICAgICB8ICAgNCArCiAuLi4vVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL21hYy9TZXRN
dXRlZC5jcHAgICAgICB8IDEwNiArKysrKysrKysrKysrKysrKysrKysKIDIzIGZpbGVzIGNoYW5n
ZWQsIDMzNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLWV4cGVjdGVk
LnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1
Z2lucy9tdXRlZC1zdGF0ZS5odG1sCiBjcmVhdGUgbW9kZSAxMDA2NDQgVG9vbHMvRHVtcFJlbmRl
clRyZWUvVGVzdE5ldHNjYXBlUGx1Z0luL1Rlc3RzL21hYy9TZXRNdXRlZC5jcHAKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
Zjc5M2U1Ni4uNWYzMzYxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE0LTExLTA1ICBBZGEg
Q2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgcGx1Zy1p
biBBUEkgZm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQtc3RhdGUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
bXV0ZWQtc3RhdGUuaHRtbDogQWRkZWQuCisKIDIwMTQtMTEtMDQgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtmaWx0ZXJzMl0gU3VwcG9ydCBmb3IgYmFja2Ryb3At
ZmlsdGVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
bXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9w
bHVnaW5zL211dGVkLXN0YXRlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hZWQ0MDMyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDEy
IEBACitUZXN0cyB0aGF0IHRoZSBtdXRlIEFQSSBpbXBsZW1lbnRhdGlvbiB3b3JrcyBhcyBleHBl
Y3RlZC4gVGhpcyB0ZXN0IG5lZWRzIHRvIGJlIHJ1biB0aHJvdWdoIFdlYktpdFRlc3RSdW5uZXIu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHBsdWdpbjEuaXNNdXRlZCBp
cyBmYWxzZQorUEFTUyBwbHVnaW4xLmNhY2hlZElzTXV0ZWQgaXMgZmFsc2UKK1BBU1MgcGx1Z2lu
MS5pc011dGVkIGlzIHRydWUKK1BBU1MgcGx1Z2luMS5jYWNoZWRJc011dGVkIGlzIHRydWUKK1BB
U1MgcGx1Z2luMi5pc011dGVkIGlzIHRydWUKK1BBU1MgcGx1Z2luMi5jYWNoZWRJc011dGVkIGlz
IHRydWUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L211dGVkLXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMv
bXV0ZWQtc3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWNh
M2E0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVn
aW5zL211dGVkLXN0YXRlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRp
diBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0PgorZnVuY3Rpb24gY3JlYXRlVGVzdFBsdWdp
bih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LW5l
dHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0JywgdGVzdE5hbWUpOworCisg
ICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpIAoreworICAgIGlmICgh
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4gb25seSBy
dW4gZnJvbSB3aXRoaW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCByZXF1aXJlcyBUZXN0TmV0
c2NhcGVQbHVnaW4uXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsdWdpbjEg
PSBjcmVhdGVUZXN0UGx1Z2luKCdzZXQtbXV0ZWQnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVu
ZENoaWxkKHBsdWdpbjEpOworICAgIAorICAgIHNob3VsZEJlKCJwbHVnaW4xLmlzTXV0ZWQiLCAi
ZmFsc2UiKTsKKyAgICBzaG91bGRCZSgicGx1Z2luMS5jYWNoZWRJc011dGVkIiwgImZhbHNlIik7
CisKKyAgICAvLyBOb3cgc2V0IHBhZ2UgdG8gYmUgbXV0ZWQuCisgICAgaWYgKHdpbmRvdy5pbnRl
cm5hbHMpCisgICAgICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0UGFnZU11dGVkKHRydWUpOworCisg
ICAgc2hvdWxkQmUoInBsdWdpbjEuaXNNdXRlZCIsICJ0cnVlIik7CisgICAgc2hvdWxkQmUoInBs
dWdpbjEuY2FjaGVkSXNNdXRlZCIsICJ0cnVlIik7CisKKyAgICBwbHVnaW4yID0gY3JlYXRlVGVz
dFBsdWdpbignc2V0LW11dGVkJyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwbHVn
aW4yKTsKKyAgICBzaG91bGRCZSgicGx1Z2luMi5pc011dGVkIiwgInRydWUiKTsKKyAgICBzaG91
bGRCZSgicGx1Z2luMi5jYWNoZWRJc011dGVkIiwgInRydWUiKTsKK30KKzwvc2NyaXB0PgorCis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgdGhlIG11dGUgQVBJIGltcGxlbWVudGF0
aW9uIHdvcmtzIGFzIGV4cGVjdGVkLiBUaGlzIHRlc3QgbmVlZHMgdG8gYmUgcnVuIHRocm91Z2gg
V2ViS2l0VGVzdFJ1bm5lci4iKTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmEyNzQ1MS4u
OTYyYzk5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTExLTA1ICBBZGEgQ2hh
biAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgcGx1Zy1pbiBB
UEkgZm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgTlBOVm11dGVBdWRpb0Jvb2wgTlBOVmFyaWFibGUu
CisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0
bWwKKworICAgICAgICAqIHBsdWdpbnMvbnBhcGkuaDoKKwogMjAxNC0xMS0wNCAgQWRhIENoYW4g
IDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWd1cmUgb3V0IHdoZXRoZXIgYSBwbHVn
LWluIGlzIHBsYXlpbmcgYXVkaW8uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L25wYXBpLmggYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmgKaW5kZXggMWJlZGUzYS4u
OTM0MDlkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBhcGkuaApAQCAtNDMyLDYgKzQzMiw5IEBAIHR5cGVk
ZWYgZW51bSB7CiAgICwgTlBOVnN1cHBvcnRzQ29tcG9zaXRpbmdDb3JlQW5pbWF0aW9uUGx1Z2lu
c0Jvb2wgPSA3NDY1NiAvKiBUUlVFIGlmIHRoZSBicm93c2VyIHN1cHBvcnRzCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQSBt
b2RlbCBjb21wb3NpdGluZyAqLwogI2VuZGlmIC8qIFhQX01BQ09TWCAqLworCisgICwgTlBOVm11
dGVBdWRpb0Jvb2wgPSA0MDAwCisKIH0gTlBOVmFyaWFibGU7CiAKIHR5cGVkZWYgZW51bSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKaW5kZXggMzFkOGI4Mi4uYTk0NDg2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBA
CisyMDE0LTExLTA1ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIElt
cGxlbWVudCBuZXcgcGx1Zy1pbiBBUEkgZm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSGFuZGxlIHRoZSBzZXR0aW5nIG9m
IE5QTlZtdXRlQXVkaW9Cb29sIG9uIHRoZSBwbHVnLWluLgorCisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
b250cm9sbGVyUHJveHk6OlBsdWdpbkNvbnRyb2xsZXJQcm94eSk6CisgICAgICAgIEluaXRpYWxp
emUgbV9pc011dGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Db250cm9sbGVyUHJveHk6Om11
dGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgVGVsbCB0aGUgcGx1Z2luIGFib3V0IHRoZSBuZXcg
bXV0ZWQgc3RhdGUuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuaDoKKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbjoKKyAgICAgICAgQWRkIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNzYWdlLgorICAg
ICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMpOgorICAgICAgICBJbml0aWFsaXplIGlzTXV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBs
dWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKToKKyAgICAgICAgSGFuZGxlIGlzTXV0ZWQu
CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAg
ICAgICAgRGl0dG8uCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOUE5fR2V0VmFsdWUpOgorICAgICAg
ICBHZXQgdGhlIHBsdWctaW4ncyBtdXRlZCBzdGF0ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXRz
Y2FwZVBsdWdpbjo6aXNNdXRlZCk6CisgICAgICAgIEdldCB0aGUgbXV0ZWQgc3RhdGUgZnJvbSBQ
bHVnaW5Db250cm9sbGVyUHJveHkuCisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjpt
dXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIENhbGwgTlBQX1NldFZhbHVlIHdpdGggTlBOVm11
dGVBdWRpb0Jvb2wgYW5kIHRoZSB1cGRhdGVkIG11dGVkIHN0YXRlLgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luOjptdXRlZFN0
YXRlQ2hhbmdlZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xs
ZXIuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZSk6CisgICAgICAgIFNldCBtX3Bl
bmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzTXV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OlBsdWdpblByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAgIFNlbmQgdGhlIE11dGVk
U3RhdGVDaGFuZ2VkIG1lc3NhZ2UgdG8gdGhlIHBsdWdpbiBwcm9jZXNzLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5WaWV3LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6cGFnZU11
dGVkU3RhdGVEaWRDaGFuZ2UpOgorICAgICAgICBDYWxsIFBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5n
ZWQoKSB3aXRoIHRoZSBwYWdlJ3MgbXV0ZWQgc3RhdGUuCisgICAgICAgIChXZWJLaXQ6OlBsdWdp
blZpZXc6OmlzTXV0ZWQpOgorICAgICAgICBHZXQgdGhlIHBhZ2UncyBjdXJyZW50IG11dGVkIHN0
YXRlLgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3Lmg6CisKIDIwMTQt
MTEtMDQgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CiAKICAgICAgICAgRmlndXJlIG91
dCB3aGV0aGVyIGEgcGx1Zy1pbiBpcyBwbGF5aW5nIGF1ZGlvLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGRl
MzJhMjYuLjlkYjgxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgUGx1Z2luQ29u
dHJvbGxlclByb3h5OjpQbHVnaW5Db250cm9sbGVyUHJveHkoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24q
IGNvbm5lY3Rpb24sIGMKICAgICAsIG1fcGx1Z2luSW5zdGFuY2VJRChjcmVhdGlvblBhcmFtZXRl
cnMucGx1Z2luSW5zdGFuY2VJRCkKICAgICAsIG1fdXNlckFnZW50KGNyZWF0aW9uUGFyYW1ldGVy
cy51c2VyQWdlbnQpCiAgICAgLCBtX2lzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChjcmVhdGlvblBh
cmFtZXRlcnMuaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKQorICAgICwgbV9pc011dGVkKGNyZWF0
aW9uUGFyYW1ldGVycy5pc011dGVkKQogICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKGNyZWF0aW9uUGFyYW1ldGVycy5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVk
KQogICAgICwgbV9pc0luaXRpYWxpemluZyhmYWxzZSkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNl
KQpAQCAtNjM3LDYgKzYzOCwxNSBAQCB2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbgogICAgIG1fcGx1
Z2luLT5wcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoaXNQcml2YXRlQnJvd3NpbmdFbmFibGVk
KTsKIH0KIAordm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6Om11dGVkU3RhdGVDaGFuZ2VkKGJv
b2wgaXNNdXRlZCkKK3sKKyAgICBpZiAobV9pc011dGVkID09IGlzTXV0ZWQpCisgICAgICAgIHJl
dHVybjsKKyAgICAKKyAgICBtX2lzTXV0ZWQgPSBpc011dGVkOworICAgIG1fcGx1Z2luLT5tdXRl
ZFN0YXRlQ2hhbmdlZChpc011dGVkKTsKK30KKwogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6
OmdldEZvcm1WYWx1ZShib29sJiByZXR1cm5WYWx1ZSwgU3RyaW5nJiBmb3JtVmFsdWUpCiB7CiAg
ICAgcmV0dXJuVmFsdWUgPSBtX3BsdWdpbi0+Z2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHku
aAppbmRleCAyN2M4YWRhLi5mMzg2NWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBw
cml2YXRlOgogICAgIHZpcnR1YWwgU3RyaW5nIGNvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5n
JiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIGJvb2wgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCBib29sIGlzTXV0ZWQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2lzTXV0ZWQ7IH0K
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBwcm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigp
IG92ZXJyaWRlOwpAQCAtMTY0LDYgKzE2NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0b3Jh
Z2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChib29sKTsKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0
YXRlQ2hhbmdlZChib29sKTsKKyAgICB2b2lkIG11dGVkU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAg
IHZvaWQgZ2V0Rm9ybVZhbHVlKGJvb2wmIHJldHVyblZhbHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSk7
CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFt
ZXRlcnMmKTsKQEAgLTE3Niw2ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VzZXJB
Z2VudDsKICAgICBib29sIG1fc3RvcmFnZUJsb2NraW5nRW5hYmxlZDsKICAgICBib29sIG1faXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkOworICAgIGJvb2wgbV9pc011dGVkOwogICAgIGJvb2wgbV9p
c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemlu
ZzsKICAgICBib29sIG1faXNWaXNpYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRl
eCA1YjAwMTZhLi41OTAyMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9j
ZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTI5
LDYgKzEyOSw5IEBAIG1lc3NhZ2VzIC0+IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBMZWdhY3lSZWNl
aXZlciB7CiAKICAgICAjIEdldHMgdGhlIHN0cmluZyByZXByZXNlbnRhdGluZyB0aGUgZm9ybSB2
YWx1ZSBvZiB0aGUgcGx1Zy1pbgogICAgIEdldEZvcm1WYWx1ZSgpIC0+IChib29sIHJldHVyblZh
bHVlLCBTdHJpbmcgZm9ybVZhbHVlKQorCisgICAgIyBTZW50IHdoZW4gdGhlIGJyb3dzZXIgd2Fu
dHMgdG8gbXV0ZSBvciB1bm11dGUgdGhlIHBsdWdpbi4KKyAgICBNdXRlZFN0YXRlQ2hhbmdlZChi
b29sIG11dGVkKQogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdp
blByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1Bs
dWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAppbmRleCBmNGJhNGNiLi45
NmE2MTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwCkBAIC0zNyw2ICszNyw3IEBAIFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKCkKICAgICAsIHdpbmRvd05Q
T2JqZWN0SUQoMCkKICAgICAsIGNvbnRlbnRzU2NhbGVGYWN0b3IoMSkKICAgICAsIGlzUHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKKyAgICAsIGlzTXV0ZWQoZmFsc2UpCiAgICAgLCBhc3lu
Y2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUoZmFsc2UpCiAgICAgLCBhcnRpZmljaWFsUGx1Z2lu
SW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoZmFsc2UpCiAgICAgLCBpc0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdFbmFibGVkKGZhbHNlKQpAQCAtNTEsNiArNTIsNyBAQCB2b2lkIFBsdWdpbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogICAgIGVuY29kZXIgPDwgdXNlckFnZW50OwogICAgIGVuY29kZXIgPDwgY29udGVudHNTY2Fs
ZUZhY3RvcjsKICAgICBlbmNvZGVyIDw8IGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICBl
bmNvZGVyIDw8IGlzTXV0ZWQ7CiAgICAgZW5jb2RlciA8PCBhc3luY2hyb25vdXNDcmVhdGlvbklu
Y29tcGxldGU7CiAgICAgZW5jb2RlciA8PCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25E
ZWxheUVuYWJsZWQ7CiAgICAgZW5jb2RlciA8PCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFi
bGVkOwpAQCAtNzYsNiArNzgsOSBAQCBib29sIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKElQQzo6QXJndW1lbnREZWNvZGVyJiBkZWNvZGVyLCBQbHVnaW5DcmVhdAogICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTXV0ZWQp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3Vs
dC5hc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0
aW9uUGFyYW1ldGVycy5oCmluZGV4IGQyNTNkMWMuLjhmMDVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIv
U291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtNjAsNiArNjAsOSBAQCBzdHJ1Y3QgUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAg
IC8vIFdoZXRoZXIgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGlu
c3RhbnRpYXRpb24uCiAgICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisKKyAgICAv
LyBXaGV0aGVyIHRoZSBwbHVnaW4gc2hvdWxkIGJlIG11dGVkLgorICAgIGJvb2wgaXNNdXRlZDsK
ICAgICAKICAgICAvLyBJZiByZXF1ZXN0aW5nIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLCB3
aGV0aGVyIHRoaXMgcGx1Z2luIGhhZCBwcmV2aW91c2x5IGJlZW4gcmVxdWVzdGVkIGFzeW5jaHJv
bm91c2x5CiAgICAgYm9vbCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVC
cm93c2VyRnVuY3MuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcAppbmRleCBlZjhmMGVmLi43MWUzMGQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVCcm93c2VyRnVuY3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKQEAgLTQ0Miw2ICs0NDIsMTIgQEAg
c3RhdGljIE5QRXJyb3IgTlBOX0dldFZhbHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxl
LCB2b2lkICp2YWx1ZSkKICAgICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHBsdWdpbi0+aXNQ
cml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQor
CisgICAgICAgIGNhc2UgTlBOVm11dGVBdWRpb0Jvb2w6IHsKKyAgICAgICAgICAgIFJlZlB0cjxO
ZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0gTmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKKyAg
ICAgICAgICAgICooTlBCb29sKil2YWx1ZSA9IHBsdWdpbi0+aXNNdXRlZCgpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICNpZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2FzZSBO
UE5Wc3VwcG9ydHNDb3JlR3JhcGhpY3NCb29sOgogICAgICAgICAgICAgLy8gQWx3YXlzIGNsYWlt
IHRvIHN1cHBvcnQgdGhlIENvcmUgR3JhcGhpY3MgZHJhd2luZyBtb2RlbC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdp
bi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2Nh
cGVQbHVnaW4uY3BwCmluZGV4IDNmN2NkNTEuLjRkNWRlNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcApAQCAtMjU0LDYgKzI1NCwxMSBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppc1ByaXZh
dGVCcm93c2luZ0VuYWJsZWQoKQogICAgIHJldHVybiBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpOwogfQogCitib29sIE5ldHNjYXBlUGx1Z2luOjppc011dGVkKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gY29udHJvbGxlcigpLT5pc011dGVkKCk7Cit9CisKIE5QT2JqZWN0
KiBOZXRzY2FwZVBsdWdpbjo6d2luZG93U2NyaXB0TlBPYmplY3QoKQogewogICAgIHJldHVybiBj
b250cm9sbGVyKCktPndpbmRvd1NjcmlwdE5QT2JqZWN0KCk7CkBAIC0xMDgyLDYgKzEwODcsMTIg
QEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6Y29udmVydEZyb21Sb290Vmlldyhjb25zdCBJbnRQb2lu
dCYgcG9pbnRJblJvb3RWaWV3Q29vcmRpbmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBO
ZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCBtdXRlZCkKK3sKKyAgICBOUEJv
b2wgdmFsdWUgPSAhIW11dGVkOworICAgIE5QUF9TZXRWYWx1ZShOUE5WbXV0ZUF1ZGlvQm9vbCwg
JnZhbHVlKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICAKIHZvaWQgTmV0c2NhcGVQ
bHVnaW46OndpbmRvd0ZvY3VzQ2hhbmdlZChib29sKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAppbmRl
eCA1YmE1ZGU4Li42MWI0NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAtMTAzLDYgKzEw
Myw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRFeGNlcHRpb24oY29uc3QgU3RyaW5n
Jik7CiAgICAgYm9vbCBldmFsdWF0ZShOUE9iamVjdCosIGNvbnN0IFN0cmluZyZzY3JpcHRTdHJp
bmcsIE5QVmFyaWFudCogcmVzdWx0KTsKICAgICBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZCgpOworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZvaWQgc2V0U2V0
RXhjZXB0aW9uRnVuY3Rpb24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwogCkBAIC0yNjAsNiAr
MjYxLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVjdGlvblN0cmlu
ZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisKICAgICB2b2lkIHVwZGF0ZU5Q
TlByaXZhdGVNb2RlKCk7CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFdJTikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBjMDJhOTNmLi5iOGY1MThi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCkBAIC0yODAs
NiArMjgwLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6QXVkaW9IYXJk
d2FyZUFjdGl2aXR5VHlwZSBhdWRpb0hhcmR3YXJlQWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiBX
ZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpVbmtub3duOyB9CiAKKyAgICB2aXJ0
dWFsIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgeyB9CisKIHByb3RlY3RlZDoKICAgICBQ
bHVnaW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9Q
bHVnaW5Db250cm9sbGVyLmgKaW5kZXggNmQyOGE4Yy4uYTU1M2FhMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCkBAIC0x
NTgsNiArMTU4LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBieSB0aGUgTmV0c2NhcGUgcGx1
Zy1pbiB3aGVuIGl0IHN0YXJ0cyBvciBzdG9wcyBwbGF5aW5nIGF1ZGlvLgogICAgIHZpcnR1YWwg
dm9pZCBzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyhib29sKSA9IDA7CiAKKyAgICAvLyBSZXR1cm5z
IHdoZXRoZXIgdGhlIHBsdWdpbiBzaG91bGQgYmUgbXV0ZWQuCisgICAgdmlydHVhbCBib29sIGlz
TXV0ZWQoKSBjb25zdCA9IDA7CisKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRlbGF5aW5nIGRl
c3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVjdGlvblByb3Rl
Y3RvciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMDBiYTQ3NS4uMDk1ZGNiZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3BwCkBAIC0xMDQs
NiArMTA0LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQYXJhbWV0ZXJz
JiBwYXJhbWV0ZXJzKQogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+dXNl
ckFnZW50ID0gY29udHJvbGxlcigpLT51c2VyQWdlbnQoKTsKICAgICBtX3BlbmRpbmdQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnMtPmNvbnRlbnRzU2NhbGVGYWN0b3IgPSBjb250ZW50c1NjYWxlRmFj
dG9yKCk7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc1ByaXZhdGVC
cm93c2luZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgp
OworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+aXNNdXRlZCA9IGNvbnRy
b2xsZXIoKS0+aXNNdXRlZCgpOwogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVy
cy0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkID0gY29udHJvbGxl
cigpLT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKTsKICAgICBt
X3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQo
KTsKIApAQCAtNTI2LDYgKzUyNywxMSBAQCB2b2lkIFBsdWdpblByb3h5Ojpwcml2YXRlQnJvd3Np
bmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAgICAgbV9jb25u
ZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRyb2xsZXJQcm94
eTo6UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCks
IG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKK3ZvaWQgUGx1Z2luUHJveHk6Om11dGVkU3RhdGVD
aGFuZ2VkKGJvb2wgaXNNdXRlZCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNdXRlZFN0YXRlQ2hhbmdlZChp
c011dGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogYm9vbCBQbHVnaW5Qcm94eTo6Z2V0
Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKQogewogICAgIGJvb2wgcmV0dXJuVmFsdWU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCmluZGV4
IDg0MTE3ZmMuLjUyNjJjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpOwogICAgIHZpcnR1YWwg
dm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lk
IHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgbXV0
ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGdldEZvcm1W
YWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZVNjcm9sbChX
ZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFyaXR5KTsKICAg
ICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJhcigpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4
IGQ4YzE3YjYuLmM3MjFmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzMzEsNyArMTMzMSwxMSBAQCB2b2lkIFBsdWdpblZp
ZXc6Om1lZGlhQ2FuU3RhcnQoKQogCiB2b2lkIFBsdWdpblZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlk
Q2hhbmdlKCkKIHsKLSAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQgKGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUpLgorICAgIC8vIFRoZSBwbHVnLWlu
IGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCisgICAgaWYgKCFt
X2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3Bs
dWdpbi0+bXV0ZWRTdGF0ZUNoYW5nZWQoaXNNdXRlZCgpKTsKIH0KIAogYm9vbCBQbHVnaW5WaWV3
Ojppc1BsdWdpblZpc2libGUoKQpAQCAtMTU4MSw2ICsxNTg1LDE0IEBAIGJvb2wgUGx1Z2luVmll
dzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCitib29sIFBsdWdpblZpZXc6OmlzTXV0ZWQo
KSBjb25zdAoreworICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT5pc011dGVkKCk7
Cit9CisKIGJvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRpb25F
bmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJQYWdlLT5hc3luY2hyb25vdXNQbHVn
aW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDdmODIxZWIuLjRlNDQ1NTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAtMjEzLDYgKzIx
Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlBy
b3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgYm9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5pdGlhbGl6YXRp
b25FbmFibGVkRm9yQWxsUGx1Z2lucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9v
bCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBkMzYzODFkLi42ZjNhYzYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMTEtMDUgIEFkYSBDaGFuICA8YWRh
Y2hhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBwbHVnLWluIEFQSSBmb3Ig
bXV0aW5nIHBsdWctaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMzgxMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0IGZvciB0aGUgbXV0ZSBBUEkuCisKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9t
YWMvU2V0TXV0ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFNldE11dGVkOjpTZXRNdXRlZCk6Cisg
ICAgICAgIChTZXRNdXRlZDo6aXNNdXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6Y2FjaGVkSXNN
dXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVjdDo6aGFzUHJvcGVydHkp
OgorICAgICAgICAoU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OmdldFByb3BlcnR5KToKKyAg
ICAgICAgKFNldE11dGVkOjpTY3JpcHRhYmxlT2JqZWN0OjpwbHVnaW5UZXN0KToKKyAgICAgICAg
KFNldE11dGVkOjpOUFBfTmV3KToKKyAgICAgICAgKFNldE11dGVkOjpOUFBfR2V0VmFsdWUpOgor
ICAgICAgICAoU2V0TXV0ZWQ6Ok5QUF9TZXRWYWx1ZSk6CisKIDIwMTQtMTEtMDUgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIHVudXNlZCBkZWxl
dGlvbiBVSSBmZWF0dXJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
RHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2NTYyMzg3Li45
N2VjZWE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBS
ZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwLDYgKzcwLDcgQEAKIAkJ
NTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmplY3RPdmVycmlk
ZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3JpcHRhYmxlT2Jq
ZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87IH07CiAJCTUxODVGNkIyMTA3MTRFMDcw
MDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyogSGlzdG9yeURl
bGVnYXRlLm1tICovOyB9OwogCQk1MUNBQ0JEODE1RDk2RkQwMDBFQjUzQTIgLyogRXZhbHVhdGVK
U1dpdGhpbk5QUF9OZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFDQUNCRDcxNUQ5NkZEMDAwRUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBf
TmV3LmNwcCAqLzsgfTsKKwkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyMDIwNkNF
MUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5jcHAgKi87IH07CiAJCTUzQ0JCODMyMTM0RTQy
RjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQkI4MzAxMzRFNDJGMzAwMUNFNkE0IC8q
IEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07CiAJCTVEQjlBQzk3MEY3MjJDMzYwMDY4
NDY0MSAvKiBBSEVNX19fXy5UVEYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBBSEVNX19fXy5U
VEYgKi87IH07CiAJCTVEQjlBQzk4MEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRXZWlnaHRXYXRj
aGVyMTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdodFdhdGNoZXIx
MDAudHRmICovOyB9OwpAQCAtMjY0LDYgKzI2NSw3IEBACiAJCTUxODVGNjlFMTA3MTRBNTcwMDdB
QTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gSGlzdG9yeURlbGVnYXRlLmg7IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlGMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0
b3J5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsgbmFtZSA9IEhp
c3RvcnlEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdhdGUubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0FDQkQ3MTVEOTZGRDAwMEVCNTNBMiAvKiBFdmFsdWF0
ZUpTV2l0aGluTlBQX05ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHA7IHBhdGggPSBUZXN0TmV0c2NhcGVQbHVnSW4v
VGVzdHMvRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwOyBzb3VyY2VUcmVlID0gU09VUkNFX1JP
T1Q7IH07CisJCTUyMDIwNkNFMUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRNdXRlZC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMwMTM0RTQyRjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1
bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ3lj
bGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTND
QkI4MzExMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURFOEFFNDMxM0EyQzE1ODAwRDZBMzdEIC8qIGxpYldl
YkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0gbGliV2ViQ29y
ZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwpA
QCAtNTczLDYgKzU3NSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTY2QzM0RjE0NTc2QTky
MDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgKi8sCiAJCQkJMUEzMUVCMzcxMzQ2
NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2ludC5jcHAgKi8sCisJCQkJNTIwMjA2Q0UxQTBBREE1
OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNwcCAqLywKIAkJCQkxQTE0QzhBMzE0MDZERTA0MDBCMjU0
RjcgLyogU3VwcG9ydHNDYXJib25FdmVudE1vZGVsLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0g
bWFjOwpAQCAtOTAwLDYgKzkwMyw3IEBACiAJCQkJNTFDQUNCRDgxNUQ5NkZEMDAwRUI1M0EyIC8q
IEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTRBRDZBMTE0
MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFG
RjY2QkMxMzdERUZEMjAwNzkxNjk2IC8qIEdldFVSTE5vdGlmeVdpdGhVUkxUaGF0RmFpbHNUb0xv
YWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1MTU0IC8qIFNl
dE11dGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUNDMUY1MTM3REQyRUMwMEE1RDdFNyAv
KiBHZXRVUkxXaXRoSmF2YVNjcmlwdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTNFMjhB
QTEzMTFENzNCMDA1MDEzNDkgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRVUkxEZXN0cm95aW5nUGx1
Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRDRDQjIyMTJBNkQxMzUwMDI3QTdBRiAvKiBH
ZXRVc2VyQWdlbnRXaXRoTnVsbE5QUEZyb21OUFBOZXcuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvbWFj
L1NldE11dGVkLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9U
ZXN0cy9tYWMvU2V0TXV0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjY4YmZjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0
c2NhcGVQbHVnSW4vVGVzdHMvbWFjL1NldE11dGVkLmNwcApAQCAtMCwwICsxLDEwNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7
CisKK2NsYXNzIFNldE11dGVkIDogcHVibGljIFBsdWdpblRlc3QgeworcHVibGljOgorICAgIFNl
dE11dGVkKE5QUCBucHAsIGNvbnN0IHN0cmluZyYgaWRlbnRpZmllcikKKyAgICAgICAgOiBQbHVn
aW5UZXN0KG5wcCwgaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2NhY2hlZElzTXV0ZWQoZmFsc2Up
CisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzTXV0ZWQoKQorICAgIHsKKyAg
ICAgICAgTlBCb29sIG11dGVkID0gRkFMU0U7CisgICAgICAgIE5QTl9HZXRWYWx1ZShOUE5WbXV0
ZUF1ZGlvQm9vbCwgJm11dGVkKTsKKyAgICAgICAgcmV0dXJuIG11dGVkOworICAgIH0KKworICAg
IGJvb2wgY2FjaGVkSXNNdXRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9jYWNoZWRJc011
dGVkOworICAgIH0KKworICAgIGNsYXNzIFNjcmlwdGFibGVPYmplY3QgOiBwdWJsaWMgT2JqZWN0
PFNjcmlwdGFibGVPYmplY3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGJvb2wgaGFzUHJvcGVy
dHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJpc011dGVkIikKKyAgICAgICAgICAgIHx8
IGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJjYWNoZWRJc011dGVkIik7CisgICAgICAgIH0K
KworICAgICAgICBib29sIGdldFByb3BlcnR5KE5QSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUsIE5Q
VmFyaWFudCogcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaWRlbnRpZmllcklz
KHByb3BlcnR5TmFtZSwgImlzTXV0ZWQiKSkgeworICAgICAgICAgICAgICAgIEJPT0xFQU5fVE9f
TlBWQVJJQU5UKHBsdWdpblRlc3QoKS0+aXNNdXRlZCgpLCAqcmVzdWx0KTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpZGVudGlm
aWVySXMocHJvcGVydHlOYW1lLCAiY2FjaGVkSXNNdXRlZCIpKSB7CisgICAgICAgICAgICAgICAg
Qk9PTEVBTl9UT19OUFZBUklBTlQocGx1Z2luVGVzdCgpLT5jYWNoZWRJc011dGVkKCksICpyZXN1
bHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBT
ZXRNdXRlZCogcGx1Z2luVGVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFNldE11dGVk
Kj4oT2JqZWN0PFNjcmlwdGFibGVPYmplY3Q+OjpwbHVnaW5UZXN0KCkpOyB9CisgICAgfTsKKwor
ICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlwZSwgdWludDE2
X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3ZbXSwgTlBTYXZl
ZERhdGEgKnNhdmVkKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRJc011dGVkID0gaXNNdXRlZCgp
OworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBO
UEVycm9yIE5QUF9HZXRWYWx1ZShOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCisg
ICAgeworICAgICAgICBpZiAodmFyaWFibGUgIT0gTlBQVnBsdWdpblNjcmlwdGFibGVOUE9iamVj
dCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworCisgICAgICAgICoo
TlBPYmplY3QqKil2YWx1ZSA9IFNjcmlwdGFibGVPYmplY3Q6OmNyZWF0ZSh0aGlzKTsKKworICAg
ICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBOUEVycm9y
IE5QUF9TZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUpCisgICAgewor
ICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBOVm11dGVBdWRpb0Jv
b2w6CisgICAgICAgICAgICBtX2NhY2hlZElzTXV0ZWQgPSAqKE5QQm9vbCopdmFsdWU7CisgICAg
ICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgfQorCisgICAgfQorICAg
IGJvb2wgbV9jYWNoZWRJc011dGVkOworfTsKKworc3RhdGljIFBsdWdpblRlc3Q6OlJlZ2lzdGVy
PFNldE11dGVkPiBzZXRNdXRlZCgic2V0LW11dGVkIik7Ci0tIAoyLjEuMSAoQXBwbGUgR2l0LTUx
KQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241148</attachid>
            <date>2014-11-06 17:02:43 -0800</date>
            <delta_ts>2014-11-10 17:09:23 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>0001-Implement-new-plug-in-API-for-muting-plug-ins.patch</filename>
            <type>text/plain</type>
            <size>32787</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSA0OGY5NGM1MGZlMDgzODEyMzY2MTQxMzI1NTY0OTE2ZTAyNjljMzdjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgNSBOb3YgMjAxNCAyMzozMTowNiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxlbWVudCBu
ZXcgcGx1Zy1pbiBBUEkgZm9yIG11dGluZyBwbHVnLWlucwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODEwNQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpT
b3VyY2UvV2ViQ29yZToKCkFkZCB0aGUgbmV3IE5QTlZtdXRlQXVkaW9Cb29sIE5QTlZhcmlhYmxl
LgoKVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0bWwKCiogcGx1
Z2lucy9ucGFwaS5oOgoKU291cmNlL1dlYktpdDI6CgpIYW5kbGUgdGhlIHNldHRpbmcgb2YgTlBO
Vm11dGVBdWRpb0Jvb2wgb24gdGhlIHBsdWctaW4uCgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5D
b250cm9sbGVyUHJveHkpOgpJbml0aWFsaXplIG1faXNNdXRlZC4KKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6ClRlbGwgdGhlIHBsdWdpbiBhYm91dCB0
aGUgbmV3IG11dGVkIHN0YXRlLgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CiogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46CkFk
ZCB0aGUgTXV0ZWRTdGF0ZUNoYW5nZWQgbWVzc2FnZS4KKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CihXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToKSW5pdGlhbGl6ZSBpc011dGVkLgooV2ViS2l0OjpQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CkhhbmRsZSBpc011dGVkLgooV2ViS2l0
OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CkRpdHRvLgoqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKFdlYktpdDo6TlBOX0dldFZhbHVlKToKR2V0
IHRoZSBwbHVnLWluJ3MgbXV0ZWQgc3RhdGUuCiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcDoKKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzTXV0ZWQpOgpH
ZXQgdGhlIG11dGVkIHN0YXRlIGZyb20gUGx1Z2luQ29udHJvbGxlclByb3h5LgooV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpDYWxsIE5QUF9TZXRWYWx1ZSB3aXRo
IE5QTlZtdXRlQXVkaW9Cb29sIGFuZCB0aGUgdXBkYXRlZCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmg6CihXZWJLaXQ6OlBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgoqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgpTZXQgbV9w
ZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc011dGVkLgooV2ViS2l0OjpQbHVnaW5Q
cm94eTo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpTZW5kIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNz
YWdlIHRvIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaDoKKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdp
blZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKToKQ2FsbCBQbHVnaW46Om11dGVkU3RhdGVD
aGFuZ2VkKCkgd2l0aCB0aGUgcGFnZSdzIG11dGVkIHN0YXRlLgooV2ViS2l0OjpQbHVnaW5WaWV3
Ojppc011dGVkKToKR2V0IHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgoKVG9vbHM6CgpBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0
IGZvciB0aGUgbXV0ZSBBUEkuCgoqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CiogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1Rlc3RzL21hYy9TZXRNdXRlZC5jcHA6IEFkZGVkLgooU2V0TXV0ZWQ6OlNldE11dGVkKToKKFNl
dE11dGVkOjppc011dGVkKToKKFNldE11dGVkOjpjYWNoZWRJc011dGVkKToKKFNldE11dGVkOjpT
Y3JpcHRhYmxlT2JqZWN0OjpoYXNQcm9wZXJ0eSk6CihTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVj
dDo6Z2V0UHJvcGVydHkpOgooU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OnBsdWdpblRlc3Qp
OgooU2V0TXV0ZWQ6Ok5QUF9OZXcpOgooU2V0TXV0ZWQ6Ok5QUF9HZXRWYWx1ZSk6CihTZXRNdXRl
ZDo6TlBQX1NldFZhbHVlKToKCkxheW91dFRlc3RzOgoKKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBwbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIC4uLi9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDE1ICsrKwogLi4uL3BsYXRmb3Jt
L21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS5odG1sICAgICAgfCAgNDggKysrKysrKysrKwog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMg
KysrCiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmggICAgICAgICAgICAgICAgICAgICB8
ICAgMyArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA1MCArKysrKysrKysrCiAuLi4vUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwICAgICAgICB8ICAxMCArKwogLi4uL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCAgfCAgIDMgKwogLi4uL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCAgICAgfCAgIDUgKwogLi4uL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzLmggICAgICAgfCAgIDMgKwogLi4uL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwICAgICAgfCAgIDYgKysKIC4uLi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIHwgIDExICsrKwogLi4uL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oICAgfCAgIDMgKwogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oICAgICAgICAgfCAgIDIgKwogLi4uL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCAgfCAgIDMgKwogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCAgfCAgIDYgKysK
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oICAgIHwgICAx
ICsKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCAgIHwg
IDE0ICsrLQogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCAg
ICAgfCAgIDEgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMjEgKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogICAgICAgfCAgIDQgKwogLi4uL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9tYWMvU2V0
TXV0ZWQuY3BwICAgICAgfCAxMDYgKysrKysrKysrKysrKysrKysrKysrCiAyMyBmaWxlcyBjaGFu
Z2VkLCAzNDAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9tYWMvU2V0TXV0ZWQuY3BwCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGY3OTNlNTYuLjVmMzM2MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0xMS0wNSAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbmV3IHBsdWct
aW4gQVBJIGZvciBtdXRpbmcgcGx1Zy1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODEwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L211dGVkLXN0YXRlLmh0bWw6IEFkZGVkLgorCiAyMDE0LTExLTA0ICBEZWFuIEphY2tzb24gIDxk
aW5vQGFwcGxlLmNvbT4KIAogICAgICAgICBbZmlsdGVyczJdIFN1cHBvcnQgZm9yIGJhY2tkcm9w
LWZpbHRlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L211dGVkLXN0YXRlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIv
cGx1Z2lucy9tdXRlZC1zdGF0ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMzcxMGY2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
NSBAQAorVGVzdHMgdGhhdCB0aGUgbXV0ZSBBUEkgaW1wbGVtZW50YXRpb24gd29ya3MgYXMgZXhw
ZWN0ZWQuIFRoaXMgdGVzdCBuZWVkcyB0byBiZSBydW4gdGhyb3VnaCBXZWJLaXRUZXN0UnVubmVy
LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBwbHVnaW4xLmlzTXV0ZWQg
aXMgZmFsc2UKK1BBU1MgcGx1Z2luMS5jYWNoZWRJc011dGVkIGlzIGZhbHNlCitQQVNTIHBsdWdp
bjEuaXNNdXRlZCBpcyB0cnVlCitQQVNTIHBsdWdpbjEuY2FjaGVkSXNNdXRlZCBpcyB0cnVlCitQ
QVNTIHBsdWdpbjIuaXNNdXRlZCBpcyB0cnVlCitQQVNTIHBsdWdpbjIuY2FjaGVkSXNNdXRlZCBp
cyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVk
LXN0YXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQt
c3RhdGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzJhMTJjCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211
dGVkLXN0YXRlLmh0bWwKQEAgLTAsMCArMSw0OCBAQAorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitkZXNj
cmlwdGlvbigiVGVzdHMgdGhhdCB0aGUgbXV0ZSBBUEkgaW1wbGVtZW50YXRpb24gd29ya3MgYXMg
ZXhwZWN0ZWQuIFRoaXMgdGVzdCBuZWVkcyB0byBiZSBydW4gdGhyb3VnaCBXZWJLaXRUZXN0UnVu
bmVyLiIpOworCitqc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKKworZnVuY3Rpb24gY3JlYXRlVGVzdFBs
dWdpbih0ZXN0TmFtZSkKK3sKKyAgICB2YXIgcGx1Z2luID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZW1iZWQiKTsKKyAgICBwbHVnaW4udHlwZSA9ICJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0
LW5ldHNjYXBlIjsKKyAgICBwbHVnaW4uc2V0QXR0cmlidXRlKCd0ZXN0JywgdGVzdE5hbWUpOwor
CisgICAgcmV0dXJuIHBsdWdpbjsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYg
KCF3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBkZWJ1ZygiVGhpcyB0ZXN0IGNhbiBvbmx5
IHJ1biBmcm9tIHdpdGhpbiBEdW1wUmVuZGVyVHJlZSBiZWNhdXNlIGl0IHJlcXVpcmVzIFRlc3RO
ZXRzY2FwZVBsdWdpbi5cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcGx1Z2lu
MSA9IGNyZWF0ZVRlc3RQbHVnaW4oJ3NldC1tdXRlZCcpOworICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQocGx1Z2luMSk7CisKKyAgICBzaG91bGRCZUZhbHNlKCJwbHVnaW4xLmlzTXV0ZWQi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJwbHVnaW4xLmNhY2hlZElzTXV0ZWQiKTsKKworICAgIC8v
IE5vdyBzZXQgcGFnZSB0byBiZSBtdXRlZC4KKyAgICBpZiAod2luZG93LmludGVybmFscykKKyAg
ICAgICAgd2luZG93LmludGVybmFscy5zZXRQYWdlTXV0ZWQodHJ1ZSk7CisKKyAgICBzaG91bGRC
ZVRydWUoInBsdWdpbjEuaXNNdXRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgicGx1Z2luMS5jYWNo
ZWRJc011dGVkIik7CisKKyAgICBwbHVnaW4yID0gY3JlYXRlVGVzdFBsdWdpbignc2V0LW11dGVk
Jyk7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChwbHVnaW4yKTsKKyAgICBzaG91bGRC
ZVRydWUoInBsdWdpbjIuaXNNdXRlZCIpOworICAgIHNob3VsZEJlVHJ1ZSgicGx1Z2luMi5jYWNo
ZWRJc011dGVkIik7CisgICAgCisgICAgZmluaXNoSlNUZXN0KCk7Cit9Cis8L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKzwvYm9keT4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRl
eCBmYTI3NDUxLi45NjJjOTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTQtMTEt
MDUgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IG5l
dyBwbHVnLWluIEFQSSBmb3IgbXV0aW5nIHBsdWctaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyBOUE5WbXV0ZUF1ZGlvQm9vbCBO
UE5WYXJpYWJsZS4KKworICAgICAgICBUZXN0OiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0
ZWQtc3RhdGUuaHRtbAorCisgICAgICAgICogcGx1Z2lucy9ucGFwaS5oOgorCiAyMDE0LTExLTA0
ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpZ3VyZSBvdXQgd2hl
dGhlciBhIHBsdWctaW4gaXMgcGxheWluZyBhdWRpby4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvbnBhcGkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvbnBhcGkuaAppbmRl
eCAxYmVkZTNhLi45MzQwOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25w
YXBpLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5oCkBAIC00MzIsNiArNDMy
LDkgQEAgdHlwZWRlZiBlbnVtIHsKICAgLCBOUE5Wc3VwcG9ydHNDb21wb3NpdGluZ0NvcmVBbmlt
YXRpb25QbHVnaW5zQm9vbCA9IDc0NjU2IC8qIFRSVUUgaWYgdGhlIGJyb3dzZXIgc3VwcG9ydHMK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIENBIG1vZGVsIGNvbXBvc2l0aW5nICovCiAjZW5kaWYgLyogWFBfTUFDT1NYICovCisK
KyAgLCBOUE5WbXV0ZUF1ZGlvQm9vbCA9IDQwMDAKKwogfSBOUE5WYXJpYWJsZTsKIAogdHlwZWRl
ZiBlbnVtIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCAzMWQ4YjgyLi5hOTQ0ODZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNTMgQEAKKzIwMTQtMTEtMDUgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisK
KyAgICAgICAgSW1wbGVtZW50IG5ldyBwbHVnLWluIEFQSSBmb3IgbXV0aW5nIHBsdWctaW5zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBIYW5kbGUgdGhl
IHNldHRpbmcgb2YgTlBOVm11dGVBdWRpb0Jvb2wgb24gdGhlIHBsdWctaW4uCisKKyAgICAgICAg
KiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OlBsdWdpbkNvbnRyb2xsZXJQcm94eTo6UGx1Z2luQ29udHJvbGxlclByb3h5KToKKyAgICAg
ICAgSW5pdGlhbGl6ZSBtX2lzTXV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNvbnRyb2xs
ZXJQcm94eTo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICBUZWxsIHRoZSBwbHVnaW4gYWJv
dXQgdGhlIG5ldyBtdXRlZCBzdGF0ZS4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5oOgorICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxl
clByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICBBZGQgdGhlIE11dGVkU3RhdGVDaGFuZ2VkIG1l
c3NhZ2UuCisgICAgICAgICogUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OlBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyk6CisgICAgICAgIEluaXRpYWxpemUgaXNNdXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICBIYW5k
bGUgaXNNdXRlZC4KKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpk
ZWNvZGUpOgorICAgICAgICBEaXR0by4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QTl9HZXRWYWx1
ZSk6CisgICAgICAgIEdldCB0aGUgcGx1Zy1pbidzIG11dGVkIHN0YXRlLgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luOjppc011dGVkKToKKyAgICAgICAgR2V0IHRoZSBtdXRlZCBz
dGF0ZSBmcm9tIFBsdWdpbkNvbnRyb2xsZXJQcm94eS4KKyAgICAgICAgKFdlYktpdDo6TmV0c2Nh
cGVQbHVnaW46Om11dGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgQ2FsbCBOUFBfU2V0VmFsdWUg
d2l0aCBOUE5WbXV0ZUF1ZGlvQm9vbCBhbmQgdGhlIHVwZGF0ZWQgbXV0ZWQgc3RhdGUuCisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmg6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oOgorICAgICAgICAoV2ViS2l0OjpQbHVn
aW46Om11dGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luQ29udHJvbGxlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblByb3h5Ojppbml0aWFsaXplKToKKyAgICAg
ICAgU2V0IG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+aXNNdXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6UGx1Z2luUHJveHk6Om11dGVkU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgU2Vu
ZCB0aGUgTXV0ZWRTdGF0ZUNoYW5nZWQgbWVzc2FnZSB0byB0aGUgcGx1Z2luIHByb2Nlc3MuCisg
ICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5W
aWV3OjpwYWdlTXV0ZWRTdGF0ZURpZENoYW5nZSk6CisgICAgICAgIENhbGwgUGx1Z2luOjptdXRl
ZFN0YXRlQ2hhbmdlZCgpIHdpdGggdGhlIHBhZ2UncyBtdXRlZCBzdGF0ZS4KKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luVmlldzo6aXNNdXRlZCk6CisgICAgICAgIEdldCB0aGUgcGFnZSdzIGN1cnJl
bnQgbXV0ZWQgc3RhdGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
aDoKKwogMjAxNC0xMS0wNCAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KIAogICAgICAg
ICBGaWd1cmUgb3V0IHdoZXRoZXIgYSBwbHVnLWluIGlzIHBsYXlpbmcgYXVkaW8uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5j
cHAKaW5kZXggZGUzMmEyNi4uOWRiODFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNwcApAQCAtNjAsNiArNjAsNyBA
QCBQbHVnaW5Db250cm9sbGVyUHJveHk6OlBsdWdpbkNvbnRyb2xsZXJQcm94eShXZWJQcm9jZXNz
Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgYwogICAgICwgbV9wbHVnaW5JbnN0YW5jZUlEKGNyZWF0
aW9uUGFyYW1ldGVycy5wbHVnaW5JbnN0YW5jZUlEKQogICAgICwgbV91c2VyQWdlbnQoY3JlYXRp
b25QYXJhbWV0ZXJzLnVzZXJBZ2VudCkKICAgICAsIG1faXNQcml2YXRlQnJvd3NpbmdFbmFibGVk
KGNyZWF0aW9uUGFyYW1ldGVycy5pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCisgICAgLCBtX2lz
TXV0ZWQoY3JlYXRpb25QYXJhbWV0ZXJzLmlzTXV0ZWQpCiAgICAgLCBtX2lzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQoY3JlYXRpb25QYXJhbWV0ZXJzLmlzQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0VuYWJsZWQpCiAgICAgLCBtX2lzSW5pdGlhbGl6aW5nKGZhbHNlKQogICAgICwgbV9pc1Zp
c2libGUoZmFsc2UpCkBAIC02MzcsNiArNjM4LDE1IEBAIHZvaWQgUGx1Z2luQ29udHJvbGxlclBy
b3h5Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0Vu
CiAgICAgbV9wbHVnaW4tPnByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChpc1ByaXZhdGVCcm93
c2luZ0VuYWJsZWQpOwogfQogCit2b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6bXV0ZWRTdGF0
ZUNoYW5nZWQoYm9vbCBpc011dGVkKQoreworICAgIGlmIChtX2lzTXV0ZWQgPT0gaXNNdXRlZCkK
KyAgICAgICAgcmV0dXJuOworICAgIAorICAgIG1faXNNdXRlZCA9IGlzTXV0ZWQ7CisgICAgbV9w
bHVnaW4tPm11dGVkU3RhdGVDaGFuZ2VkKGlzTXV0ZWQpOworfQorCiB2b2lkIFBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6Z2V0Rm9ybVZhbHVlKGJvb2wmIHJldHVyblZhbHVlLCBTdHJpbmcmIGZvcm1W
YWx1ZSkKIHsKICAgICByZXR1cm5WYWx1ZSA9IG1fcGx1Z2luLT5nZXRGb3JtVmFsdWUoZm9ybVZh
bHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRy
b2xsZXJQcm94eS5oCmluZGV4IDI3YzhhZGEuLmYzODY1YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaApAQCAtMTEyLDYg
KzExMiw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBTdHJpbmcgY29va2llc0ZvclVSTChjb25z
dCBTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q29va2llc0ZvclVSTChj
b25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nJiBjb29raWVTdHJpbmcpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKSBvdmVycmlk
ZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
aXNNdXRlZDsgfQogICAgIHZpcnR1YWwgYm9vbCBnZXRBdXRoZW50aWNhdGlvbkluZm8oY29uc3Qg
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlJiwgU3RyaW5nJiB1c2VybmFtZSwgU3RyaW5nJiBwYXNz
d29yZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHByb3RlY3RQbHVnaW5Gcm9tRGVzdHJ1
Y3Rpb24oKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5wcm90ZWN0UGx1Z2luRnJvbURl
c3RydWN0aW9uKCkgb3ZlcnJpZGU7CkBAIC0xNjQsNiArMTY1LDcgQEAgcHJpdmF0ZToKIAogICAg
IHZvaWQgc3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgcHJpdmF0
ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJvb2wpOworICAgIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQo
Ym9vbCk7CiAgICAgdm9pZCBnZXRGb3JtVmFsdWUoYm9vbCYgcmV0dXJuVmFsdWUsIFN0cmluZyYg
Zm9ybVZhbHVlKTsKIAogICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplKGNvbnN0IFBsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycyYpOwpAQCAtMTc2LDYgKzE3OCw3IEBAIHByaXZhdGU6CiAgICAgU3Ry
aW5nIG1fdXNlckFnZW50OwogICAgIGJvb2wgbV9zdG9yYWdlQmxvY2tpbmdFbmFibGVkOwogICAg
IGJvb2wgbV9pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisgICAgYm9vbCBtX2lzTXV0ZWQ7CiAg
ICAgYm9vbCBtX2lzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQ7CiAgICAgYm9vbCBtX2lz
SW5pdGlhbGl6aW5nOwogICAgIGJvb2wgbV9pc1Zpc2libGU7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbiBi
L1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3Nh
Z2VzLmluCmluZGV4IDViMDAxNmEuLjU5MDIwMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lm1lc3NhZ2Vz
LmluCkBAIC0xMjksNiArMTI5LDkgQEAgbWVzc2FnZXMgLT4gUGx1Z2luQ29udHJvbGxlclByb3h5
IExlZ2FjeVJlY2VpdmVyIHsKIAogICAgICMgR2V0cyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW5n
IHRoZSBmb3JtIHZhbHVlIG9mIHRoZSBwbHVnLWluCiAgICAgR2V0Rm9ybVZhbHVlKCkgLT4gKGJv
b2wgcmV0dXJuVmFsdWUsIFN0cmluZyBmb3JtVmFsdWUpCisKKyAgICAjIFNlbnQgd2hlbiB0aGUg
YnJvd3NlciB3YW50cyB0byBtdXRlIG9yIHVubXV0ZSB0aGUgcGx1Z2luLgorICAgIE11dGVkU3Rh
dGVDaGFuZ2VkKGJvb2wgbXV0ZWQpCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4
IGY0YmE0Y2IuLjk2YTYxNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nl
c3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVn
aW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTM3LDYgKzM3LDcgQEAg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMoKQogICAg
ICwgd2luZG93TlBPYmplY3RJRCgwKQogICAgICwgY29udGVudHNTY2FsZUZhY3RvcigxKQogICAg
ICwgaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQorICAgICwgaXNNdXRlZChmYWxzZSkK
ICAgICAsIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZShmYWxzZSkKICAgICAsIGFydGlm
aWNpYWxQbHVnaW5Jbml0aWFsaXphdGlvbkRlbGF5RW5hYmxlZChmYWxzZSkKICAgICAsIGlzQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoZmFsc2UpCkBAIC01MSw2ICs1Miw3IEBAIHZvaWQg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVuY29kZXImIGVu
Y29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1c2VyQWdlbnQ7CiAgICAgZW5jb2RlciA8PCBj
b250ZW50c1NjYWxlRmFjdG9yOwogICAgIGVuY29kZXIgPDwgaXNQcml2YXRlQnJvd3NpbmdFbmFi
bGVkOworICAgIGVuY29kZXIgPDwgaXNNdXRlZDsKICAgICBlbmNvZGVyIDw8IGFzeW5jaHJvbm91
c0NyZWF0aW9uSW5jb21wbGV0ZTsKICAgICBlbmNvZGVyIDw8IGFydGlmaWNpYWxQbHVnaW5Jbml0
aWFsaXphdGlvbkRlbGF5RW5hYmxlZDsKICAgICBlbmNvZGVyIDw8IGlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQ7CkBAIC03Niw2ICs3OCw5IEBAIGJvb2wgUGx1Z2luQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBsdWdpbkNyZWF0
CiAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuaXNQcml2YXRlQnJvd3NpbmdFbmFibGVk
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1
bHQuaXNNdXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0LmFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0ZSkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggZDI1M2QxYy4uOGYwNWEzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFy
YW1ldGVycy5oCkBAIC02MCw2ICs2MCw5IEBAIHN0cnVjdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRl
cnMgewogCiAgICAgLy8gV2hldGhlciBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQgYXQgdGhl
IHRpbWUgb2YgaW5zdGFudGlhdGlvbi4KICAgICBib29sIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxl
ZDsKKworICAgIC8vIFdoZXRoZXIgdGhlIHBsdWdpbiBzaG91bGQgYmUgbXV0ZWQuCisgICAgYm9v
bCBpc011dGVkOwogICAgIAogICAgIC8vIElmIHJlcXVlc3Rpbmcgc3luY2hyb25vdXMgaW5pdGlh
bGl6YXRpb24sIHdoZXRoZXIgdGhpcyBwbHVnaW4gaGFkIHByZXZpb3VzbHkgYmVlbiByZXF1ZXN0
ZWQgYXN5bmNocm9ub3VzbHkKICAgICBib29sIGFzeW5jaHJvbm91c0NyZWF0aW9uSW5jb21wbGV0
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2Fw
ZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCmluZGV4IGVmOGYwZWYuLjcx
ZTMwZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZUJyb3dzZXJGdW5jcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcApAQCAtNDQyLDYg
KzQ0MiwxMiBAQCBzdGF0aWMgTlBFcnJvciBOUE5fR2V0VmFsdWUoTlBQIG5wcCwgTlBOVmFyaWFi
bGUgdmFyaWFibGUsIHZvaWQgKnZhbHVlKQogICAgICAgICAgICAgKihOUEJvb2wqKXZhbHVlID0g
cGx1Z2luLT5pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBOUE5WbXV0ZUF1ZGlvQm9vbDogeworICAgICAgICAg
ICAgUmVmUHRyPE5ldHNjYXBlUGx1Z2luPiBwbHVnaW4gPSBOZXRzY2FwZVBsdWdpbjo6ZnJvbU5Q
UChucHApOworICAgICAgICAgICAgKihOUEJvb2wqKXZhbHVlID0gcGx1Z2luLT5pc011dGVkKCk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogI2lmIFBMQVRGT1JNKENPQ09BKQogICAg
ICAgICBjYXNlIE5QTlZzdXBwb3J0c0NvcmVHcmFwaGljc0Jvb2w6CiAgICAgICAgICAgICAvLyBB
bHdheXMgY2xhaW0gdG8gc3VwcG9ydCB0aGUgQ29yZSBHcmFwaGljcyBkcmF3aW5nIG1vZGVsLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05l
dHNjYXBlUGx1Z2luLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKaW5kZXggM2Y3Y2Q1MS4uNmNkOTFiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVQbHVnaW4uY3BwCkBAIC0yNTQsNiArMjU0LDExIEBAIGJvb2wgTmV0c2NhcGVQbHVn
aW46OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpCiAgICAgcmV0dXJuIGNvbnRyb2xsZXIoKS0+
aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7CiB9CiAKK2Jvb2wgTmV0c2NhcGVQbHVnaW46Omlz
TXV0ZWQoKSBjb25zdAoreworICAgIHJldHVybiBjb250cm9sbGVyKCktPmlzTXV0ZWQoKTsKK30K
KwogTlBPYmplY3QqIE5ldHNjYXBlUGx1Z2luOjp3aW5kb3dTY3JpcHROUE9iamVjdCgpCiB7CiAg
ICAgcmV0dXJuIGNvbnRyb2xsZXIoKS0+d2luZG93U2NyaXB0TlBPYmplY3QoKTsKQEAgLTEwODIs
NiArMTA4NywxMiBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjpjb252ZXJ0RnJvbVJvb3RWaWV3KGNv
bnN0IEludFBvaW50JiBwb2ludEluUm9vdFZpZXdDb29yZGluYQogICAgIHJldHVybiB0cnVlOwog
fQogCit2b2lkIE5ldHNjYXBlUGx1Z2luOjptdXRlZFN0YXRlQ2hhbmdlZChib29sIG11dGVkKQor
eworICAgIE5QQm9vbCB2YWx1ZSA9IG11dGVkOworICAgIE5QUF9TZXRWYWx1ZShOUE5WbXV0ZUF1
ZGlvQm9vbCwgJnZhbHVlKTsKK30KKwogI2lmICFQTEFURk9STShDT0NPQSkKICAgICAKIHZvaWQg
TmV0c2NhcGVQbHVnaW46OndpbmRvd0ZvY3VzQ2hhbmdlZChib29sKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVn
aW4uaAppbmRleCA1YmE1ZGU4Li42MWI0NjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaApAQCAt
MTAzLDYgKzEwMyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRFeGNlcHRpb24oY29u
c3QgU3RyaW5nJik7CiAgICAgYm9vbCBldmFsdWF0ZShOUE9iamVjdCosIGNvbnN0IFN0cmluZyZz
Y3JpcHRTdHJpbmcsIE5QVmFyaWFudCogcmVzdWx0KTsKICAgICBib29sIGlzUHJpdmF0ZUJyb3dz
aW5nRW5hYmxlZCgpOworICAgIGJvb2wgaXNNdXRlZCgpIGNvbnN0OwogCiAgICAgc3RhdGljIHZv
aWQgc2V0U2V0RXhjZXB0aW9uRnVuY3Rpb24odm9pZCAoKikoY29uc3QgU3RyaW5nJikpOwogCkBA
IC0yNjAsNiArMjYxLDggQEAgcHJpdmF0ZToKIAogICAgIHZpcnR1YWwgU3RyaW5nIGdldFNlbGVj
dGlvblN0cmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFN0cmluZygpOyB9CiAKKyAgICB2
aXJ0dWFsIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CisKICAgICB2b2lk
IHVwZGF0ZU5QTlByaXZhdGVNb2RlKCk7CiAKICNpZiBQTFVHSU5fQVJDSElURUNUVVJFKFdJTikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaCBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4uaAppbmRleCBjMDJhOTNm
Li5iOGY1MThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5o
CkBAIC0yODAsNiArMjgwLDggQEAgcHVibGljOgogICAgIAogICAgIHZpcnR1YWwgV2ViQ29yZTo6
QXVkaW9IYXJkd2FyZUFjdGl2aXR5VHlwZSBhdWRpb0hhcmR3YXJlQWN0aXZpdHkoKSBjb25zdCB7
IHJldHVybiBXZWJDb3JlOjpBdWRpb0hhcmR3YXJlQWN0aXZpdHlUeXBlOjpVbmtub3duOyB9CiAK
KyAgICB2aXJ0dWFsIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgeyB9CisKIHByb3RlY3Rl
ZDoKICAgICBQbHVnaW4oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKaW5kZXggNmQyOGE4Yy4uYTU1M2FhMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxl
ci5oCkBAIC0xNTgsNiArMTU4LDkgQEAgcHVibGljOgogICAgIC8vIENhbGxlZCBieSB0aGUgTmV0
c2NhcGUgcGx1Zy1pbiB3aGVuIGl0IHN0YXJ0cyBvciBzdG9wcyBwbGF5aW5nIGF1ZGlvLgogICAg
IHZpcnR1YWwgdm9pZCBzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyhib29sKSA9IDA7CiAKKyAgICAv
LyBSZXR1cm5zIHdoZXRoZXIgdGhlIHBsdWdpbiBzaG91bGQgYmUgbXV0ZWQuCisgICAgdmlydHVh
bCBib29sIGlzTXV0ZWQoKSBjb25zdCA9IDA7CisKICAgICAvLyBIZWxwZXIgY2xhc3MgZm9yIGRl
bGF5aW5nIGRlc3RydWN0aW9uIG9mIGEgcGx1Zy1pbi4KICAgICBjbGFzcyBQbHVnaW5EZXN0cnVj
dGlvblByb3RlY3RvciB7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMDBiYTQ3NS4uMDk1ZGNiZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJveHkuY3Bw
CkBAIC0xMDQsNiArMTA0LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShjb25zdCBQ
YXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1l
dGVycy0+dXNlckFnZW50ID0gY29udHJvbGxlcigpLT51c2VyQWdlbnQoKTsKICAgICBtX3BlbmRp
bmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmNvbnRlbnRzU2NhbGVGYWN0b3IgPSBjb250ZW50
c1NjYWxlRmFjdG9yKCk7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5p
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCgpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+aXNNdXRl
ZCA9IGNvbnRyb2xsZXIoKS0+aXNNdXRlZCgpOwogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFibGVkID0g
Y29udHJvbGxlcigpLT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQo
KTsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzQWNjZWxlcmF0ZWRD
b21wb3NpdGluZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0VuYWJsZWQoKTsKIApAQCAtNTI2LDYgKzUyNywxMSBAQCB2b2lkIFBsdWdpblByb3h5Ojpwcml2
YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpCiAg
ICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdpbkNvbnRy
b2xsZXJQcm94eTo6UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGlzUHJpdmF0ZUJyb3dzaW5n
RW5hYmxlZCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKK3ZvaWQgUGx1Z2luUHJveHk6Om11
dGVkU3RhdGVDaGFuZ2VkKGJvb2wgaXNNdXRlZCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24tPmNvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNdXRlZFN0YXRl
Q2hhbmdlZChpc011dGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogYm9vbCBQbHVnaW5Q
cm94eTo6Z2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKQogewogICAgIGJvb2wgcmV0dXJu
VmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94
eS5oCmluZGV4IDg0MTE3ZmMuLjUyNjJjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQpOwogICAg
IHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKKyAgICB2aXJ0dWFs
IHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29s
IGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29sIGhhbmRs
ZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdyYW51bGFy
aXR5KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNjcm9sbGJh
cigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcu
Y3BwCmluZGV4IGQ4YzE3YjYuLmM3MjFmZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzMzEsNyArMTMzMSwxMSBAQCB2b2lk
IFBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQoKQogCiB2b2lkIFBsdWdpblZpZXc6OnBhZ2VNdXRl
ZFN0YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50ZWQgKGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUpLgorICAgIC8vIFRo
ZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxpemUuCisg
ICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX3BsdWdpbi0+bXV0ZWRTdGF0ZUNoYW5nZWQoaXNNdXRlZCgpKTsKIH0KIAogYm9vbCBQ
bHVnaW5WaWV3Ojppc1BsdWdpblZpc2libGUoKQpAQCAtMTU4MSw2ICsxNTg1LDE0IEBAIGJvb2wg
UGx1Z2luVmlldzo6aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCkKICAgICByZXR1cm4gZnJhbWUo
KS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwogfQogCitib29sIFBsdWdpblZpZXc6
OmlzTXV0ZWQoKSBjb25zdAoreworICAgIGlmICghZnJhbWUoKSB8fCAhZnJhbWUoKS0+cGFnZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgpLT5p
c011dGVkKCk7Cit9CisKIGJvb2wgUGx1Z2luVmlldzo6YXN5bmNocm9ub3VzUGx1Z2luSW5pdGlh
bGl6YXRpb25FbmFibGVkKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV93ZWJQYWdlLT5hc3luY2hy
b25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmggYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oCmluZGV4IDdmODIxZWIuLjRlNDQ1NTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaApAQCAt
MjEzLDYgKzIxMyw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHNldENvb2tpZXNGb3JV
UkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZyYgY29va2llU3RyaW5nKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0aGVudGljYXRpb25JbmZvKGNvbnN0IFdl
YkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYgdXNlcm5hbWUsIFN0cmluZyYgcGFzc3dv
cmQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQo
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgYm9vbCBhc3luY2hyb25vdXNQbHVnaW5Jbml0aWFsaXphdGlvbkVuYWJsZWQo
KSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgYXN5bmNocm9ub3VzUGx1Z2luSW5p
dGlhbGl6YXRpb25FbmFibGVkRm9yQWxsUGx1Z2lucygpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgYm9vbCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQoKSBj
b25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBkMzYzODFkLi42ZjNhYzYyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMTEtMDUgIEFkYSBD
aGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBwbHVnLWlu
IEFQSSBmb3IgbXV0aW5nIHBsdWctaW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0IGZvciB0aGUgbXV0ZSBBUEku
CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJ
bi9UZXN0cy9tYWMvU2V0TXV0ZWQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFNldE11dGVkOjpTZXRN
dXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6aXNNdXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6
Y2FjaGVkSXNNdXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVjdDo6aGFz
UHJvcGVydHkpOgorICAgICAgICAoU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OmdldFByb3Bl
cnR5KToKKyAgICAgICAgKFNldE11dGVkOjpTY3JpcHRhYmxlT2JqZWN0OjpwbHVnaW5UZXN0KToK
KyAgICAgICAgKFNldE11dGVkOjpOUFBfTmV3KToKKyAgICAgICAgKFNldE11dGVkOjpOUFBfR2V0
VmFsdWUpOgorICAgICAgICAoU2V0TXV0ZWQ6Ok5QUF9TZXRWYWx1ZSk6CisKIDIwMTQtMTEtMDUg
IERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgdGhlIHVu
dXNlZCBkZWxldGlvbiBVSSBmZWF0dXJlCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
NTYyMzg3Li45N2VjZWE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVu
ZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcwLDYgKzcw
LDcgQEAKIAkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFibGVPYmpl
Y3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVnaW5TY3Jp
cHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87IH07CiAJCTUxODVGNkIy
MTA3MTRFMDcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0QTU3MDA3QUEzOTMgLyog
SGlzdG9yeURlbGVnYXRlLm1tICovOyB9OwogCQk1MUNBQ0JEODE1RDk2RkQwMDBFQjUzQTIgLyog
RXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTFDQUNCRDcxNUQ5NkZEMDAwRUI1M0EyIC8qIEV2YWx1YXRlSlNX
aXRoaW5OUFBfTmV3LmNwcCAqLzsgfTsKKwkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1MTU0IC8qIFNl
dE11dGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUyMDIwNkNFMUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5jcHAgKi87IH07CiAJCTUzQ0JC
ODMyMTM0RTQyRjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQkI4MzAxMzRFNDJGMzAw
MUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07CiAJCTVEQjlBQzk3MEY3
MjJDMzYwMDY4NDY0MSAvKiBBSEVNX19fXy5UVEYgaW4gQ29weSBGb250IEZpbGVzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBN0YxMEMyMENCM0MxMDMwMDAzQkRDOSAvKiBB
SEVNX19fXy5UVEYgKi87IH07CiAJCTVEQjlBQzk4MEY3MjJDMzYwMDY4NDY0MSAvKiBXZWJLaXRX
ZWlnaHRXYXRjaGVyMTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktpdFdlaWdo
dFdhdGNoZXIxMDAudHRmICovOyB9OwpAQCAtMjY0LDYgKzI2NSw3IEBACiAJCTUxODVGNjlFMTA3
MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gSGlzdG9yeURlbGVnYXRlLmg7IHBhdGggPSBtYWMvSGlzdG9yeURlbGVnYXRl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlGMTA3MTRBNTcwMDdBQTM5
MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhw
bGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5nID0gNDsg
bmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdhdGUubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0FDQkQ3MTVEOTZGRDAwMEVCNTNBMiAv
KiBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHA7IHBhdGggPSBUZXN0TmV0c2Nh
cGVQbHVnSW4vVGVzdHMvRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwOyBzb3VyY2VUcmVlID0g
U09VUkNFX1JPT1Q7IH07CisJCTUyMDIwNkNFMUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRNdXRlZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMwMTM0RTQyRjMwMDFDRTZBNCAvKiBD
eWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTNDQkI4MzExMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5Q2hlY2su
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURFOEFFNDMxM0EyQzE1ODAwRDZBMzdE
IC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBwYXRoID0g
bGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwpAQCAtNTczLDYgKzU3NSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkxQTY2QzM0
RjE0NTc2QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgKi8sCiAJCQkJMUEz
MUVCMzcxMzQ2NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2ludC5jcHAgKi8sCisJCQkJNTIwMjA2
Q0UxQTBBREE1OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNwcCAqLywKIAkJCQkxQTE0QzhBMzE0MDZE
RTA0MDBCMjU0RjcgLyogU3VwcG9ydHNDYXJib25FdmVudE1vZGVsLmNwcCAqLywKIAkJCSk7CiAJ
CQlwYXRoID0gbWFjOwpAQCAtOTAwLDYgKzkwMyw3IEBACiAJCQkJNTFDQUNCRDgxNUQ5NkZEMDAw
RUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTRBRDZBMTE0MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUFGRjY2QkMxMzdERUZEMjAwNzkxNjk2IC8qIEdldFVSTE5vdGlmeVdpdGhVUkxUaGF0
RmFpbHNUb0xvYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1
MTU0IC8qIFNldE11dGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUNDMUY1MTM3REQyRUMw
MEE1RDdFNyAvKiBHZXRVUkxXaXRoSmF2YVNjcmlwdFVSTC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkxQTNFMjhBQTEzMTFENzNCMDA1MDEzNDkgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRVUkxEZXN0
cm95aW5nUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRDRDQjIyMTJBNkQxMzUwMDI3
QTdBRiAvKiBHZXRVc2VyQWdlbnRXaXRoTnVsbE5QUEZyb21OUFBOZXcuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4v
VGVzdHMvbWFjL1NldE11dGVkLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2Fw
ZVBsdWdJbi9UZXN0cy9tYWMvU2V0TXV0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjY4YmZjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvbWFjL1NldE11dGVkLmNwcApAQCAtMCwwICsxLDEw
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK2NsYXNzIFNldE11dGVkIDogcHVibGljIFBsdWdpblRlc3QgeworcHVibGlj
OgorICAgIFNldE11dGVkKE5QUCBucHAsIGNvbnN0IHN0cmluZyYgaWRlbnRpZmllcikKKyAgICAg
ICAgOiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2NhY2hlZElzTXV0
ZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzTXV0ZWQoKQor
ICAgIHsKKyAgICAgICAgTlBCb29sIG11dGVkID0gRkFMU0U7CisgICAgICAgIE5QTl9HZXRWYWx1
ZShOUE5WbXV0ZUF1ZGlvQm9vbCwgJm11dGVkKTsKKyAgICAgICAgcmV0dXJuIG11dGVkOworICAg
IH0KKworICAgIGJvb2wgY2FjaGVkSXNNdXRlZCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9j
YWNoZWRJc011dGVkOworICAgIH0KKworICAgIGNsYXNzIFNjcmlwdGFibGVPYmplY3QgOiBwdWJs
aWMgT2JqZWN0PFNjcmlwdGFibGVPYmplY3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIGJvb2wg
aGFzUHJvcGVydHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJpc011dGVkIikKKyAgICAg
ICAgICAgIHx8IGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJjYWNoZWRJc011dGVkIik7Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIGdldFByb3BlcnR5KE5QSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUsIE5QVmFyaWFudCogcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaWRl
bnRpZmllcklzKHByb3BlcnR5TmFtZSwgImlzTXV0ZWQiKSkgeworICAgICAgICAgICAgICAgIEJP
T0xFQU5fVE9fTlBWQVJJQU5UKHBsdWdpblRlc3QoKS0+aXNNdXRlZCgpLCAqcmVzdWx0KTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
IChpZGVudGlmaWVySXMocHJvcGVydHlOYW1lLCAiY2FjaGVkSXNNdXRlZCIpKSB7CisgICAgICAg
ICAgICAgICAgQk9PTEVBTl9UT19OUFZBUklBTlQocGx1Z2luVGVzdCgpLT5jYWNoZWRJc011dGVk
KCksICpyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBTZXRNdXRlZCogcGx1Z2luVGVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0
PFNldE11dGVkKj4oT2JqZWN0PFNjcmlwdGFibGVPYmplY3Q+OjpwbHVnaW5UZXN0KCkpOyB9Cisg
ICAgfTsKKworICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1Z2luVHlw
ZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIqIGFyZ3Zb
XSwgTlBTYXZlZERhdGEgKnNhdmVkKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRJc011dGVkID0g
aXNNdXRlZCgpOworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAg
dmlydHVhbCBOUEVycm9yIE5QUF9HZXRWYWx1ZShOUFBWYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCog
dmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFyaWFibGUgIT0gTlBQVnBsdWdpblNjcmlwdGFi
bGVOUE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOworCisg
ICAgICAgICooTlBPYmplY3QqKil2YWx1ZSA9IFNjcmlwdGFibGVPYmplY3Q6OmNyZWF0ZSh0aGlz
KTsKKworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVh
bCBOUEVycm9yIE5QUF9TZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCogdmFsdWUp
CisgICAgeworICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2UgTlBOVm11
dGVBdWRpb0Jvb2w6CisgICAgICAgICAgICBtX2NhY2hlZElzTXV0ZWQgPSAqKE5QQm9vbCopdmFs
dWU7CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAgfQorCisg
ICAgfQorICAgIGJvb2wgbV9jYWNoZWRJc011dGVkOworfTsKKworc3RhdGljIFBsdWdpblRlc3Q6
OlJlZ2lzdGVyPFNldE11dGVkPiBzZXRNdXRlZCgic2V0LW11dGVkIik7Ci0tIAoyLjEuMSAoQXBw
bGUgR2l0LTUxKQoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241320</attachid>
            <date>2014-11-10 17:09:23 -0800</date>
            <delta_ts>2014-11-12 12:26:09 -0800</delta_ts>
            <desc>Revised patch</desc>
            <filename>0001-Implement-new-plug-in-API-for-muting-plug-ins.patch</filename>
            <type>text/plain</type>
            <size>32622</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">RnJvbSBhMzU5MjM4Y2E2YzdlOWYyZDI4YjA0ZTk4MGY5MmY3NTE0YTdkMzhlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBZGEgQ2hhbiA8YWRhY2hhbkBhcHBsZS5jb20+CkRhdGU6IFdl
ZCwgNSBOb3YgMjAxNCAyMzozMTowNiAtMDgwMApTdWJqZWN0OiBbUEFUQ0hdIEltcGxlbWVudCBu
ZXcgcGx1Zy1pbiBBUEkgZm9yIG11dGluZyBwbHVnLWlucwogaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODEwNQoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpT
b3VyY2UvV2ViQ29yZToKCkFkZCB0aGUgbmV3IE5QTlZtdXRlQXVkaW9Cb29sIE5QTlZhcmlhYmxl
LgoKVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0bWwKCiogcGx1
Z2lucy9ucGFwaS5oOgoKU291cmNlL1dlYktpdDI6CgpIYW5kbGUgdGhlIHNldHRpbmcgb2YgTlBO
Vm11dGVBdWRpb0Jvb2wgb24gdGhlIHBsdWctaW4uCgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29u
dHJvbGxlclByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5D
b250cm9sbGVyUHJveHkpOgpJbml0aWFsaXplIG1faXNNdXRlZC4KKFdlYktpdDo6UGx1Z2luQ29u
dHJvbGxlclByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6ClRlbGwgdGhlIHBsdWdpbiBhYm91dCB0
aGUgbmV3IG11dGVkIHN0YXRlLgoqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
Lmg6CiogUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46CkFk
ZCB0aGUgTXV0ZWRTdGF0ZUNoYW5nZWQgbWVzc2FnZS4KKiBQbHVnaW5Qcm9jZXNzL1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHA6CihXZWJLaXQ6OlBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToKSW5pdGlhbGl6ZSBpc011dGVkLgooV2ViS2l0OjpQ
bHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSk6CkhhbmRsZSBpc011dGVkLgooV2ViS2l0
OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CkRpdHRvLgoqIFBsdWdpblByb2Nl
c3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNj
YXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKFdlYktpdDo6TlBOX0dldFZhbHVlKToKR2V0
IHRoZSBwbHVnLWluJ3MgbXV0ZWQgc3RhdGUuCiogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmNwcDoKKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzTXV0ZWQpOgpH
ZXQgdGhlIG11dGVkIHN0YXRlIGZyb20gUGx1Z2luQ29udHJvbGxlclByb3h5LgooV2ViS2l0OjpO
ZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpDYWxsIE5QUF9TZXRWYWx1ZSB3aXRo
IE5QTlZtdXRlQXVkaW9Cb29sIGFuZCB0aGUgdXBkYXRlZCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uaDoKKiBXZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luLmg6CihXZWJLaXQ6OlBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgoqIFdlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CiogV2ViUHJvY2Vzcy9QbHVnaW5zL1Bs
dWdpblByb3h5LmNwcDoKKFdlYktpdDo6UGx1Z2luUHJveHk6OmluaXRpYWxpemUpOgpTZXQgbV9w
ZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLT5pc011dGVkLgooV2ViS2l0OjpQbHVnaW5Q
cm94eTo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgpTZW5kIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNz
YWdlIHRvIHRoZSBwbHVnaW4gcHJvY2Vzcy4KKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaDoKKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CihXZWJLaXQ6OlBsdWdp
blZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKToKQ2FsbCBQbHVnaW46Om11dGVkU3RhdGVD
aGFuZ2VkKCkgd2l0aCB0aGUgcGFnZSdzIG11dGVkIHN0YXRlLgooV2ViS2l0OjpQbHVnaW5WaWV3
Ojppc011dGVkKToKR2V0IHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5oOgoKVG9vbHM6CgpBZGQgYSBuZXcgcGx1Zy1pbiB0ZXN0
IGZvciB0aGUgbXV0ZSBBUEkuCgoqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CiogRHVtcFJlbmRlclRyZWUvVGVzdE5ldHNjYXBlUGx1Z0lu
L1Rlc3RzL21hYy9TZXRNdXRlZC5jcHA6IEFkZGVkLgooU2V0TXV0ZWQ6OlNldE11dGVkKToKKFNl
dE11dGVkOjppc011dGVkKToKKFNldE11dGVkOjpjYWNoZWRJc011dGVkKToKKFNldE11dGVkOjpT
Y3JpcHRhYmxlT2JqZWN0OjpoYXNQcm9wZXJ0eSk6CihTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVj
dDo6Z2V0UHJvcGVydHkpOgooU2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OnBsdWdpblRlc3Qp
OgooU2V0TXV0ZWQ6Ok5QUF9OZXcpOgooU2V0TXV0ZWQ6Ok5QUF9HZXRWYWx1ZSk6CihTZXRNdXRl
ZDo6TlBQX1NldFZhbHVlKToKCkxheW91dFRlc3RzOgoKKiBwbGF0Zm9ybS9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKiBwbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUuaHRtbDogQWRkZWQuCi0tLQogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKysKIC4uLi9tYWMtd2syL3BsdWdp
bnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0ICAgICAgIHwgIDE1ICsrKwogLi4uL3BsYXRmb3Jt
L21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS5odG1sICAgICAgfCAgNDggKysrKysrKysrKwog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTMg
KysrCiBTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25wYXBpLmggICAgICAgICAgICAgICAgICAgICB8
ICAgMyArCiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAg
ICB8ICA1MCArKysrKysrKysrCiAuLi4vUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJv
eHkuY3BwICAgICAgICB8ICAxMCArKwogLi4uL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5D
b250cm9sbGVyUHJveHkuaCAgfCAgIDMgKwogLi4uL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5tZXNz
YWdlcy5pbiAgICAgICAgICAgICAgfCAgIDMgKwogLi4uL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcCAgICAgfCAgIDUgKwogLi4uL1BsdWdpblByb2Nlc3MvUGx1Z2lu
Q3JlYXRpb25QYXJhbWV0ZXJzLmggICAgICAgfCAgIDMgKwogLi4uL1BsdWdpbnMvTmV0c2NhcGUv
TmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwICAgICAgfCAgIDYgKysKIC4uLi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwIHwgIDExICsrKwogLi4uL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5oICAgfCAgIDMgKwogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oICAgICAgICAgfCAgIDIgKwogLi4uL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaCAgfCAgIDMgKwogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCAgfCAgIDYgKysK
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oICAgIHwgICAx
ICsKIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCAgIHwg
IDE0ICsrLQogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuaCAg
ICAgfCAgIDEgKwogVG9vbHMvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAgMjEgKysrKwogLi4uL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2ogICAgICAgfCAgIDQgKwogLi4uL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9tYWMvU2V0
TXV0ZWQuY3BwICAgICAgfCAxMDYgKysrKysrKysrKysrKysrKysrKysrCiAyMyBmaWxlcyBjaGFu
Z2VkLCAzNDAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogY3JlYXRlIG1vZGUgMTAwNjQ0
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS1leHBlY3Rl
ZC50eHQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUuaHRtbAogY3JlYXRlIG1vZGUgMTAwNjQ0IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9tYWMvU2V0TXV0ZWQuY3BwCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IGQ3NzZhYmEuLmEzZmY4YWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxNC0xMS0wNSAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbmV3IHBsdWct
aW4gQVBJIGZvciBtdXRpbmcgcGx1Zy1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTEzODEwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRl
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5z
L211dGVkLXN0YXRlLmh0bWw6IEFkZGVkLgorCiAyMDE0LTExLTEwICBNeWxlcyBDLiBNYXhmaWVs
ZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgW09TWF0gU29tZSB3b3JkcyBhcmUg
cGxhY2VkIG9uIHRvcCBvZiBlYWNoIG90aGVyIGluIGNvbXBsZXggdGV4dCBsYXlvdXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3BsdWdpbnMvbXV0ZWQt
c3RhdGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3
MTBmNjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtd2syL3Bs
dWdpbnMvbXV0ZWQtc3RhdGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1Rlc3RzIHRo
YXQgdGhlIG11dGUgQVBJIGltcGxlbWVudGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLiBUaGlzIHRl
c3QgbmVlZHMgdG8gYmUgcnVuIHRocm91Z2ggV2ViS2l0VGVzdFJ1bm5lci4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgcGx1Z2luMS5pc011dGVkIGlzIGZhbHNlCitQQVNT
IHBsdWdpbjEuY2FjaGVkSXNNdXRlZCBpcyBmYWxzZQorUEFTUyBwbHVnaW4xLmlzTXV0ZWQgaXMg
dHJ1ZQorUEFTUyBwbHVnaW4xLmNhY2hlZElzTXV0ZWQgaXMgdHJ1ZQorUEFTUyBwbHVnaW4yLmlz
TXV0ZWQgaXMgdHJ1ZQorUEFTUyBwbHVnaW4yLmNhY2hlZElzTXV0ZWQgaXMgdHJ1ZQorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS5odG1sIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMyYTEyYwotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azIvcGx1Z2lucy9tdXRlZC1zdGF0ZS5odG1s
CkBAIC0wLDAgKzEsNDggQEAKKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3Rz
IHRoYXQgdGhlIG11dGUgQVBJIGltcGxlbWVudGF0aW9uIHdvcmtzIGFzIGV4cGVjdGVkLiBUaGlz
IHRlc3QgbmVlZHMgdG8gYmUgcnVuIHRocm91Z2ggV2ViS2l0VGVzdFJ1bm5lci4iKTsKKworanNU
ZXN0SXNBc3luYyA9IHRydWU7CisKK2Z1bmN0aW9uIGNyZWF0ZVRlc3RQbHVnaW4odGVzdE5hbWUp
Cit7CisgICAgdmFyIHBsdWdpbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImVtYmVkIik7Cisg
ICAgcGx1Z2luLnR5cGUgPSAiYXBwbGljYXRpb24veC13ZWJraXQtdGVzdC1uZXRzY2FwZSI7Cisg
ICAgcGx1Z2luLnNldEF0dHJpYnV0ZSgndGVzdCcsIHRlc3ROYW1lKTsKKworICAgIHJldHVybiBw
bHVnaW47Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICghd2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgZGVidWcoIlRoaXMgdGVzdCBjYW4gb25seSBydW4gZnJvbSB3aXRo
aW4gRHVtcFJlbmRlclRyZWUgYmVjYXVzZSBpdCByZXF1aXJlcyBUZXN0TmV0c2NhcGVQbHVnaW4u
XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHBsdWdpbjEgPSBjcmVhdGVUZXN0
UGx1Z2luKCdzZXQtbXV0ZWQnKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHBsdWdp
bjEpOworCisgICAgc2hvdWxkQmVGYWxzZSgicGx1Z2luMS5pc011dGVkIik7CisgICAgc2hvdWxk
QmVGYWxzZSgicGx1Z2luMS5jYWNoZWRJc011dGVkIik7CisKKyAgICAvLyBOb3cgc2V0IHBhZ2Ug
dG8gYmUgbXV0ZWQuCisgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHdpbmRvdy5p
bnRlcm5hbHMuc2V0UGFnZU11dGVkKHRydWUpOworCisgICAgc2hvdWxkQmVUcnVlKCJwbHVnaW4x
LmlzTXV0ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInBsdWdpbjEuY2FjaGVkSXNNdXRlZCIpOwor
CisgICAgcGx1Z2luMiA9IGNyZWF0ZVRlc3RQbHVnaW4oJ3NldC1tdXRlZCcpOworICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQocGx1Z2luMik7CisgICAgc2hvdWxkQmVUcnVlKCJwbHVnaW4y
LmlzTXV0ZWQiKTsKKyAgICBzaG91bGRCZVRydWUoInBsdWdpbjIuY2FjaGVkSXNNdXRlZCIpOwor
ICAgIAorICAgIGZpbmlzaEpTVGVzdCgpOworfQorPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9InJ1blRlc3QoKSI+Cis8L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTIzN2U1Zi4uZjJm
ZjA2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTExLTA1ICBBZGEgQ2hhbiAg
PGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAgIEltcGxlbWVudCBuZXcgcGx1Zy1pbiBBUEkg
Zm9yIG11dGluZyBwbHVnLWlucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTM4MTA1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQWRkIHRoZSBuZXcgTlBOVm11dGVBdWRpb0Jvb2wgTlBOVmFyaWFibGUuCisK
KyAgICAgICAgVGVzdDogcGxhdGZvcm0vbWFjLXdrMi9wbHVnaW5zL211dGVkLXN0YXRlLmh0bWwK
KworICAgICAgICAqIHBsdWdpbnMvbnBhcGkuaDoKKwogMjAxNC0xMS0xMCAgQmV0aCBEYWtpbiAg
PGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3BlY3VsYXRpdmUgYnVpbGQgZml4LgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ucGFwaS5oIGIvU291cmNlL1dlYkNvcmUv
cGx1Z2lucy9ucGFwaS5oCmluZGV4IDFiZWRlM2EuLjkzNDA5ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvbnBhcGkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL25w
YXBpLmgKQEAgLTQzMiw2ICs0MzIsOSBAQCB0eXBlZGVmIGVudW0gewogICAsIE5QTlZzdXBwb3J0
c0NvbXBvc2l0aW5nQ29yZUFuaW1hdGlvblBsdWdpbnNCb29sID0gNzQ2NTYgLyogVFJVRSBpZiB0
aGUgYnJvd3NlciBzdXBwb3J0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0EgbW9kZWwgY29tcG9zaXRpbmcgKi8KICNlbmRp
ZiAvKiBYUF9NQUNPU1ggKi8KKworICAsIE5QTlZtdXRlQXVkaW9Cb29sID0gNDAwMAorCiB9IE5Q
TlZhcmlhYmxlOwogCiB0eXBlZGVmIGVudW0gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI3MmQyNTEuLjljOWVm
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxNC0xMS0wNSAgQWRhIENoYW4gIDxh
ZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBJbXBsZW1lbnQgbmV3IHBsdWctaW4gQVBJIGZv
ciBtdXRpbmcgcGx1Zy1pbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEzODEwNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEhhbmRsZSB0aGUgc2V0dGluZyBvZiBOUE5WbXV0ZUF1ZGlvQm9vbCBvbiB0aGUg
cGx1Zy1pbi4KKworICAgICAgICAqIFBsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5Db250
cm9sbGVyUHJveHkpOgorICAgICAgICBJbml0aWFsaXplIG1faXNNdXRlZC4KKyAgICAgICAgKFdl
YktpdDo6UGx1Z2luQ29udHJvbGxlclByb3h5OjptdXRlZFN0YXRlQ2hhbmdlZCk6CisgICAgICAg
IFRlbGwgdGhlIHBsdWdpbiBhYm91dCB0aGUgbmV3IG11dGVkIHN0YXRlLgorICAgICAgICAqIFBs
dWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5Lmg6CisgICAgICAgICogUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgIEFkZCB0aGUg
TXV0ZWRTdGF0ZUNoYW5nZWQgbWVzc2FnZS4KKyAgICAgICAgKiBQbHVnaW5Qcm9jZXNzL1BsdWdp
bkNyZWF0aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpbkNyZWF0aW9u
UGFyYW1ldGVyczo6UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgSW5pdGlhbGl6
ZSBpc011dGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnM6OmVu
Y29kZSk6CisgICAgICAgIEhhbmRsZSBpc011dGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5D
cmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgIERpdHRvLgorICAgICAgICAqIFBs
dWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6TlBOX0dldFZhbHVlKToKKyAgICAgICAgR2V0IHRoZSBwbHVnLWluJ3MgbXV0ZWQg
c3RhdGUuCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1
Z2luLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW46OmlzTXV0ZWQpOgorICAg
ICAgICBHZXQgdGhlIG11dGVkIHN0YXRlIGZyb20gUGx1Z2luQ29udHJvbGxlclByb3h5LgorICAg
ICAgICAoV2ViS2l0OjpOZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgorICAgICAg
ICBDYWxsIE5QUF9TZXRWYWx1ZSB3aXRoIE5QTlZtdXRlQXVkaW9Cb29sIGFuZCB0aGUgdXBkYXRl
ZCBtdXRlZCBzdGF0ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0
c2NhcGVQbHVnaW4uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luLmg6Cisg
ICAgICAgIChXZWJLaXQ6OlBsdWdpbjo6bXV0ZWRTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmg6CisgICAgICAgICogV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luUHJveHk6
OmluaXRpYWxpemUpOgorICAgICAgICBTZXQgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzLT5pc011dGVkLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm94eTo6bXV0ZWRTdGF0ZUNo
YW5nZWQpOgorICAgICAgICBTZW5kIHRoZSBNdXRlZFN0YXRlQ2hhbmdlZCBtZXNzYWdlIHRvIHRo
ZSBwbHVnaW4gcHJvY2Vzcy4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdlKToKKyAgICAg
ICAgQ2FsbCBQbHVnaW46Om11dGVkU3RhdGVDaGFuZ2VkKCkgd2l0aCB0aGUgcGFnZSdzIG11dGVk
IHN0YXRlLgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppc011dGVkKToKKyAgICAgICAg
R2V0IHRoZSBwYWdlJ3MgY3VycmVudCBtdXRlZCBzdGF0ZS4KKyAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luVmlldy5oOgorCiAyMDE0LTExLTEwICBCZXRoIERha2luICA8YmRha2lu
QGFwcGxlLmNvbT4KIAogICAgICAgICBXSzE6IFN1cHBvcnQgZGVmYXVsdCBhY3Rpb25zIGZvciBy
ZWFkLW9ubHkgdGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9Q
bHVnaW5Db250cm9sbGVyUHJveHkuY3BwCmluZGV4IGRlMzJhMjYuLjlkYjgxYzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJvbGxlclByb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5jcHAKQEAgLTYwLDYgKzYwLDcgQEAgUGx1Z2luQ29udHJvbGxlclByb3h5OjpQbHVnaW5Db250
cm9sbGVyUHJveHkoV2ViUHJvY2Vzc0Nvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGMKICAgICAsIG1f
cGx1Z2luSW5zdGFuY2VJRChjcmVhdGlvblBhcmFtZXRlcnMucGx1Z2luSW5zdGFuY2VJRCkKICAg
ICAsIG1fdXNlckFnZW50KGNyZWF0aW9uUGFyYW1ldGVycy51c2VyQWdlbnQpCiAgICAgLCBtX2lz
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChjcmVhdGlvblBhcmFtZXRlcnMuaXNQcml2YXRlQnJvd3Np
bmdFbmFibGVkKQorICAgICwgbV9pc011dGVkKGNyZWF0aW9uUGFyYW1ldGVycy5pc011dGVkKQog
ICAgICwgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGNyZWF0aW9uUGFyYW1ldGVy
cy5pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKQogICAgICwgbV9pc0luaXRpYWxpemlu
ZyhmYWxzZSkKICAgICAsIG1faXNWaXNpYmxlKGZhbHNlKQpAQCAtNjM3LDYgKzYzOCwxNSBAQCB2
b2lkIFBsdWdpbkNvbnRyb2xsZXJQcm94eTo6cHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGJv
b2wgaXNQcml2YXRlQnJvd3NpbmdFbgogICAgIG1fcGx1Z2luLT5wcml2YXRlQnJvd3NpbmdTdGF0
ZUNoYW5nZWQoaXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKTsKIH0KIAordm9pZCBQbHVnaW5Db250
cm9sbGVyUHJveHk6Om11dGVkU3RhdGVDaGFuZ2VkKGJvb2wgaXNNdXRlZCkKK3sKKyAgICBpZiAo
bV9pc011dGVkID09IGlzTXV0ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2lzTXV0
ZWQgPSBpc011dGVkOworICAgIG1fcGx1Z2luLT5tdXRlZFN0YXRlQ2hhbmdlZChpc011dGVkKTsK
K30KKwogdm9pZCBQbHVnaW5Db250cm9sbGVyUHJveHk6OmdldEZvcm1WYWx1ZShib29sJiByZXR1
cm5WYWx1ZSwgU3RyaW5nJiBmb3JtVmFsdWUpCiB7CiAgICAgcmV0dXJuVmFsdWUgPSBtX3BsdWdp
bi0+Z2V0Rm9ybVZhbHVlKGZvcm1WYWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9Q
bHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9sbGVyUHJveHkuaAppbmRleCAyN2M4YWRhLi5mMzg2NWFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xs
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ29udHJv
bGxlclByb3h5LmgKQEAgLTExMiw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgU3Ry
aW5nIGNvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNldENvb2tpZXNGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgY29va2llU3RyaW5nKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcml2YXRlQnJv
d3NpbmdFbmFibGVkKCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBib29sIGlzTXV0ZWQoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX2lzTXV0ZWQ7IH0KICAgICB2aXJ0dWFsIGJvb2wgZ2V0QXV0
aGVudGljYXRpb25JbmZvKGNvbnN0IFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZSYsIFN0cmluZyYg
dXNlcm5hbWUsIFN0cmluZyYgcGFzc3dvcmQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBw
cm90ZWN0UGx1Z2luRnJvbURlc3RydWN0aW9uKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IHVucHJvdGVjdFBsdWdpbkZyb21EZXN0cnVjdGlvbigpIG92ZXJyaWRlOwpAQCAtMTY0LDYgKzE2
NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdlZChi
b29sKTsKICAgICB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKKyAgICB2
b2lkIG11dGVkU3RhdGVDaGFuZ2VkKGJvb2wpOwogICAgIHZvaWQgZ2V0Rm9ybVZhbHVlKGJvb2wm
IHJldHVyblZhbHVlLCBTdHJpbmcmIGZvcm1WYWx1ZSk7CiAKICAgICB2b2lkIHBsYXRmb3JtSW5p
dGlhbGl6ZShjb25zdCBQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMmKTsKQEAgLTE3Niw2ICsxNzgs
NyBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3VzZXJBZ2VudDsKICAgICBib29sIG1fc3RvcmFn
ZUJsb2NraW5nRW5hYmxlZDsKICAgICBib29sIG1faXNQcml2YXRlQnJvd3NpbmdFbmFibGVkOwor
ICAgIGJvb2wgbV9pc011dGVkOwogICAgIGJvb2wgbV9pc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkOwogICAgIGJvb2wgbV9pc0luaXRpYWxpemluZzsKICAgICBib29sIG1faXNWaXNpYmxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5Db250cm9s
bGVyUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdp
bkNvbnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgppbmRleCA1YjAwMTZhLi41OTAyMDM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNvbnRyb2xsZXJQcm94
eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNv
bnRyb2xsZXJQcm94eS5tZXNzYWdlcy5pbgpAQCAtMTI5LDYgKzEyOSw5IEBAIG1lc3NhZ2VzIC0+
IFBsdWdpbkNvbnRyb2xsZXJQcm94eSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICAjIEdldHMgdGhl
IHN0cmluZyByZXByZXNlbnRhdGluZyB0aGUgZm9ybSB2YWx1ZSBvZiB0aGUgcGx1Zy1pbgogICAg
IEdldEZvcm1WYWx1ZSgpIC0+IChib29sIHJldHVyblZhbHVlLCBTdHJpbmcgZm9ybVZhbHVlKQor
CisgICAgIyBTZW50IHdoZW4gdGhlIGJyb3dzZXIgd2FudHMgdG8gbXV0ZSBvciB1bm11dGUgdGhl
IHBsdWdpbi4KKyAgICBNdXRlZFN0YXRlQ2hhbmdlZChib29sIG11dGVkKQogfQogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAppbmRleCBmNGJhNGNiLi45NmE2MTY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJvY2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMu
Y3BwCkBAIC0zNyw2ICszNyw3IEBAIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6UGx1Z2luQ3Jl
YXRpb25QYXJhbWV0ZXJzKCkKICAgICAsIHdpbmRvd05QT2JqZWN0SUQoMCkKICAgICAsIGNvbnRl
bnRzU2NhbGVGYWN0b3IoMSkKICAgICAsIGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkK
KyAgICAsIGlzTXV0ZWQoZmFsc2UpCiAgICAgLCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxl
dGUoZmFsc2UpCiAgICAgLCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJs
ZWQoZmFsc2UpCiAgICAgLCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkKGZhbHNlKQpA
QCAtNTEsNiArNTIsNyBAQCB2b2lkIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQ
Qzo6QXJndW1lbnRFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVuY29kZXIgPDwgdXNlckFn
ZW50OwogICAgIGVuY29kZXIgPDwgY29udGVudHNTY2FsZUZhY3RvcjsKICAgICBlbmNvZGVyIDw8
IGlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZDsKKyAgICBlbmNvZGVyIDw8IGlzTXV0ZWQ7CiAgICAg
ZW5jb2RlciA8PCBhc3luY2hyb25vdXNDcmVhdGlvbkluY29tcGxldGU7CiAgICAgZW5jb2RlciA8
PCBhcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVuYWJsZWQ7CiAgICAgZW5jb2Rl
ciA8PCBpc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdFbmFibGVkOwpAQCAtNzYsNiArNzgsOSBAQCBi
b29sIFBsdWdpbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyLCBQbHVnaW5DcmVhdAogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0Lmlz
UHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmlzTXV0ZWQpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5hc3luY2hyb25vdXNDcmVhdGlvbklu
Y29tcGxldGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1BsdWdpblByb2Nlc3MvUGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2Uv
V2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IGQy
NTNkMWMuLjhmMDVhMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1BsdWdpblByb2Nlc3Mv
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291cmNlL1dlYktpdDIvUGx1Z2luUHJv
Y2Vzcy9QbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtNjAsNiArNjAsOSBAQCBzdHJ1Y3Qg
UGx1Z2luQ3JlYXRpb25QYXJhbWV0ZXJzIHsKIAogICAgIC8vIFdoZXRoZXIgcHJpdmF0ZSBicm93
c2luZyBpcyBlbmFibGVkIGF0IHRoZSB0aW1lIG9mIGluc3RhbnRpYXRpb24uCiAgICAgYm9vbCBp
c1ByaXZhdGVCcm93c2luZ0VuYWJsZWQ7CisKKyAgICAvLyBXaGV0aGVyIHRoZSBwbHVnaW4gc2hv
dWxkIGJlIG11dGVkLgorICAgIGJvb2wgaXNNdXRlZDsKICAgICAKICAgICAvLyBJZiByZXF1ZXN0
aW5nIHN5bmNocm9ub3VzIGluaXRpYWxpemF0aW9uLCB3aGV0aGVyIHRoaXMgcGx1Z2luIGhhZCBw
cmV2aW91c2x5IGJlZW4gcmVxdWVzdGVkIGFzeW5jaHJvbm91c2x5CiAgICAgYm9vbCBhc3luY2hy
b25vdXNDcmVhdGlvbkluY29tcGxldGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGIvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlQnJvd3NlckZ1bmNz
LmNwcAppbmRleCBlZjhmMGVmLi43MWUzMGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZUJyb3dz
ZXJGdW5jcy5jcHAKQEAgLTQ0Miw2ICs0NDIsMTIgQEAgc3RhdGljIE5QRXJyb3IgTlBOX0dldFZh
bHVlKE5QUCBucHAsIE5QTlZhcmlhYmxlIHZhcmlhYmxlLCB2b2lkICp2YWx1ZSkKICAgICAgICAg
ICAgICooTlBCb29sKil2YWx1ZSA9IHBsdWdpbi0+aXNQcml2YXRlQnJvd3NpbmdFbmFibGVkKCk7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIGNhc2UgTlBOVm11dGVB
dWRpb0Jvb2w6IHsKKyAgICAgICAgICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdpbj4gcGx1Z2luID0g
TmV0c2NhcGVQbHVnaW46OmZyb21OUFAobnBwKTsKKyAgICAgICAgICAgICooTlBCb29sKil2YWx1
ZSA9IHBsdWdpbi0+aXNNdXRlZCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICNp
ZiBQTEFURk9STShDT0NPQSkKICAgICAgICAgY2FzZSBOUE5Wc3VwcG9ydHNDb3JlR3JhcGhpY3NC
b29sOgogICAgICAgICAgICAgLy8gQWx3YXlzIGNsYWltIHRvIHN1cHBvcnQgdGhlIENvcmUgR3Jh
cGhpY3MgZHJhd2luZyBtb2RlbC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW4uY3BwCmluZGV4IDNmN2Nk
NTEuLjZjZDkxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lu
cy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmNwcApAQCAtMjU0LDYgKzI1NCwx
MSBAQCBib29sIE5ldHNjYXBlUGx1Z2luOjppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQogICAg
IHJldHVybiBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpOwogfQogCiti
b29sIE5ldHNjYXBlUGx1Z2luOjppc011dGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29udHJv
bGxlcigpLT5pc011dGVkKCk7Cit9CisKIE5QT2JqZWN0KiBOZXRzY2FwZVBsdWdpbjo6d2luZG93
U2NyaXB0TlBPYmplY3QoKQogewogICAgIHJldHVybiBjb250cm9sbGVyKCktPndpbmRvd1Njcmlw
dE5QT2JqZWN0KCk7CkBAIC0xMDgyLDYgKzEwODcsMTIgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbjo6
Y29udmVydEZyb21Sb290Vmlldyhjb25zdCBJbnRQb2ludCYgcG9pbnRJblJvb3RWaWV3Q29vcmRp
bmEKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAordm9pZCBOZXRzY2FwZVBsdWdpbjo6bXV0ZWRTdGF0
ZUNoYW5nZWQoYm9vbCBtdXRlZCkKK3sKKyAgICBOUEJvb2wgdmFsdWUgPSBtdXRlZDsKKyAgICBO
UFBfU2V0VmFsdWUoTlBOVm11dGVBdWRpb0Jvb2wsICZ2YWx1ZSk7Cit9CisKICNpZiAhUExBVEZP
Uk0oQ09DT0EpCiAgICAgCiB2b2lkIE5ldHNjYXBlUGx1Z2luOjp3aW5kb3dGb2N1c0NoYW5nZWQo
Ym9vbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRz
Y2FwZS9OZXRzY2FwZVBsdWdpbi5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L05ldHNjYXBlL05ldHNjYXBlUGx1Z2luLmgKaW5kZXggNWJhNWRlOC4uNjFiNDY2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05ldHNjYXBl
UGx1Z2luLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBl
L05ldHNjYXBlUGx1Z2luLmgKQEAgLTEwMyw2ICsxMDMsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgc2V0RXhjZXB0aW9uKGNvbnN0IFN0cmluZyYpOwogICAgIGJvb2wgZXZhbHVhdGUoTlBP
YmplY3QqLCBjb25zdCBTdHJpbmcmc2NyaXB0U3RyaW5nLCBOUFZhcmlhbnQqIHJlc3VsdCk7CiAg
ICAgYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKTsKKyAgICBib29sIGlzTXV0ZWQoKSBj
b25zdDsKIAogICAgIHN0YXRpYyB2b2lkIHNldFNldEV4Y2VwdGlvbkZ1bmN0aW9uKHZvaWQgKCop
KGNvbnN0IFN0cmluZyYpKTsKIApAQCAtMjYwLDYgKzI2MSw4IEBAIHByaXZhdGU6CiAKICAgICB2
aXJ0dWFsIFN0cmluZyBnZXRTZWxlY3Rpb25TdHJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTdHJpbmcoKTsgfQogCisgICAgdmlydHVhbCB2b2lkIG11dGVkU3RhdGVDaGFuZ2VkKGJvb2wp
IG92ZXJyaWRlOworCiAgICAgdm9pZCB1cGRhdGVOUE5Qcml2YXRlTW9kZSgpOwogCiAjaWYgUExV
R0lOX0FSQ0hJVEVDVFVSRShXSU4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luLmgKaW5kZXggYzAyYTkzZi4uYjhmNTE4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW4uaApAQCAtMjgwLDYgKzI4MCw4IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2aXJ0dWFsIFdlYkNvcmU6OkF1ZGlvSGFyZHdhcmVBY3Rpdml0eVR5cGUgYXVkaW9IYXJk
d2FyZUFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6QXVkaW9IYXJkd2FyZUFjdGl2
aXR5VHlwZTo6VW5rbm93bjsgfQogCisgICAgdmlydHVhbCB2b2lkIG11dGVkU3RhdGVDaGFuZ2Vk
KGJvb2wpIHsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgUGx1Z2luKCk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Db250cm9sbGVyLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luQ29udHJvbGxlci5oCmluZGV4IDJk
YTViMGYuLjAyZmMzMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9QbHVnaW5Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpbkNvbnRyb2xsZXIuaApAQCAtODQsNiArODQsOSBAQCBwdWJsaWM6CiAKICAg
ICAvLyBDYWxsZWQgYnkgdGhlIE5ldHNjYXBlIHBsdWctaW4gd2hlbiBpdCBzdGFydHMgb3Igc3Rv
cHMgcGxheWluZyBhdWRpby4KICAgICB2aXJ0dWFsIHZvaWQgc2V0UGx1Z2luSXNQbGF5aW5nQXVk
aW8oYm9vbCkgPSAwOworCisgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwbHVnaW4gc2hvdWxk
IGJlIG11dGVkLgorICAgIHZpcnR1YWwgYm9vbCBpc011dGVkKCkgY29uc3QgPSAwOwogI2VuZGlm
CiAKICAgICAvLyBTZXQgdGhlIHN0YXR1c2JhciB0ZXh0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5jcHAKaW5kZXggMDBiYTQ3NS4uMDk1ZGNi
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJv
eHkuY3BwCkBAIC0xMDQsNiArMTA0LDcgQEAgYm9vbCBQbHVnaW5Qcm94eTo6aW5pdGlhbGl6ZShj
b25zdCBQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9u
UGFyYW1ldGVycy0+dXNlckFnZW50ID0gY29udHJvbGxlcigpLT51c2VyQWdlbnQoKTsKICAgICBt
X3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmNvbnRlbnRzU2NhbGVGYWN0b3IgPSBj
b250ZW50c1NjYWxlRmFjdG9yKCk7CiAgICAgbV9wZW5kaW5nUGx1Z2luQ3JlYXRpb25QYXJhbWV0
ZXJzLT5pc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCgpOworICAgIG1fcGVuZGluZ1BsdWdpbkNyZWF0aW9uUGFyYW1ldGVycy0+
aXNNdXRlZCA9IGNvbnRyb2xsZXIoKS0+aXNNdXRlZCgpOwogICAgIG1fcGVuZGluZ1BsdWdpbkNy
ZWF0aW9uUGFyYW1ldGVycy0+YXJ0aWZpY2lhbFBsdWdpbkluaXRpYWxpemF0aW9uRGVsYXlFbmFi
bGVkID0gY29udHJvbGxlcigpLT5hcnRpZmljaWFsUGx1Z2luSW5pdGlhbGl6YXRpb25EZWxheUVu
YWJsZWQoKTsKICAgICBtX3BlbmRpbmdQbHVnaW5DcmVhdGlvblBhcmFtZXRlcnMtPmlzQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQgPSBjb250cm9sbGVyKCktPmlzQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ0VuYWJsZWQoKTsKIApAQCAtNTI2LDYgKzUyNywxMSBAQCB2b2lkIFBsdWdpblByb3h5
Ojpwcml2YXRlQnJvd3NpbmdTdGF0ZUNoYW5nZWQoYm9vbCBpc1ByaXZhdGVCcm93c2luZ0VuYWJs
ZWQpCiAgICAgbV9jb25uZWN0aW9uLT5jb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlBsdWdp
bkNvbnRyb2xsZXJQcm94eTo6UHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2VkKGlzUHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCksIG1fcGx1Z2luSW5zdGFuY2VJRCk7CiB9CiAKK3ZvaWQgUGx1Z2luUHJv
eHk6Om11dGVkU3RhdGVDaGFuZ2VkKGJvb2wgaXNNdXRlZCkKK3sKKyAgICBtX2Nvbm5lY3Rpb24t
PmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6UGx1Z2luQ29udHJvbGxlclByb3h5OjpNdXRl
ZFN0YXRlQ2hhbmdlZChpc011dGVkKSwgbV9wbHVnaW5JbnN0YW5jZUlEKTsKK30KKwogYm9vbCBQ
bHVnaW5Qcm94eTo6Z2V0Rm9ybVZhbHVlKFN0cmluZyYgZm9ybVZhbHVlKQogewogICAgIGJvb2wg
cmV0dXJuVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvUGx1Z2luUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm94eS5oCmluZGV4IDg0MTE3ZmMuLjUyNjJjOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm94eS5oCkBAIC0xMjcsNiArMTI3LDcgQEAgcHJp
dmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29udGVudHNTY2FsZUZhY3RvckNoYW5nZWQoZmxvYXQp
OwogICAgIHZpcnR1YWwgdm9pZCBzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHByaXZhdGVCcm93c2luZ1N0YXRlQ2hhbmdlZChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgbXV0ZWRTdGF0ZUNoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGdldEZvcm1WYWx1ZShTdHJpbmcmIGZvcm1WYWx1ZSk7CiAgICAgdmlydHVhbCBib29s
IGhhbmRsZVNjcm9sbChXZWJDb3JlOjpTY3JvbGxEaXJlY3Rpb24sIFdlYkNvcmU6OlNjcm9sbEdy
YW51bGFyaXR5KTsKICAgICB2aXJ0dWFsIFdlYkNvcmU6OlNjcm9sbGJhciogaG9yaXpvbnRhbFNj
cm9sbGJhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpblZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCmluZGV4IGQ4YzE3YjYuLmJiMWFjMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTEzMzEsNyArMTMzMSwxMSBA
QCB2b2lkIFBsdWdpblZpZXc6Om1lZGlhQ2FuU3RhcnQoKQogCiB2b2lkIFBsdWdpblZpZXc6OnBh
Z2VNdXRlZFN0YXRlRGlkQ2hhbmdlKCkKIHsKLSAgICAvLyBGSVhNRTogVG8gYmUgaW1wbGVtZW50
ZWQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgxMDUpLgorICAg
IC8vIFRoZSBwbHVnLWluIGNhbiBiZSBudWxsIGhlcmUgaWYgaXQgZmFpbGVkIHRvIGluaXRpYWxp
emUuCisgICAgaWYgKCFtX2lzSW5pdGlhbGl6ZWQgfHwgIW1fcGx1Z2luKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX3BsdWdpbi0+bXV0ZWRTdGF0ZUNoYW5nZWQoaXNNdXRlZCgpKTsKIH0KIAog
Ym9vbCBQbHVnaW5WaWV3Ojppc1BsdWdpblZpc2libGUoKQpAQCAtMTQ1Miw2ICsxNDU2LDE0IEBA
IHZvaWQgUGx1Z2luVmlldzo6c2V0UGx1Z2luSXNQbGF5aW5nQXVkaW8oYm9vbCBwbHVnaW5Jc1Bs
YXlpbmdBdWRpbykKICAgICBtX3BsdWdpbklzUGxheWluZ0F1ZGlvID0gcGx1Z2luSXNQbGF5aW5n
QXVkaW87CiAgICAgbV9wbHVnaW5FbGVtZW50LT5kb2N1bWVudCgpLnVwZGF0ZUlzUGxheWluZ0F1
ZGlvKCk7CiB9CisKK2Jvb2wgUGx1Z2luVmlldzo6aXNNdXRlZCgpIGNvbnN0Cit7CisgICAgaWYg
KCFmcmFtZSgpIHx8ICFmcmFtZSgpLT5wYWdlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwor
ICAgIHJldHVybiBmcmFtZSgpLT5wYWdlKCktPmlzTXV0ZWQoKTsKK30KICNlbmRpZgogCiB2b2lk
IFBsdWdpblZpZXc6OnNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJiBzdGF0dXNiYXJUZXh0
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmgKaW5k
ZXggN2Y4MjFlYi4uNWVlZDAxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1BsdWdpblZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luVmlldy5oCkBAIC0xOTYsNiArMTk2LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIE5QT2JqZWN0KiBwbHVnaW5FbGVtZW50TlBPYmplY3QoKSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIGJvb2wgZXZhbHVhdGUoTlBPYmplY3QqLCBjb25zdCBTdHJpbmcmIHNjcmlwdFN0cmluZywg
TlBWYXJpYW50KiByZXN1bHQsIGJvb2wgYWxsb3dQb3B1cHMpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRQbHVnaW5Jc1BsYXlpbmdBdWRpbyhib29sKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIGJvb2wgaXNNdXRlZCgpIGNvbnN0IG92ZXJyaWRlOwogI2VuZGlmCiAgICAgdmlydHVhbCB2
b2lkIHNldFN0YXR1c2JhclRleHQoY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCBib29sIGlzQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJsZWQoKSBvdmVycmlkZTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMjljNmZjLi4w
MjQ5OWRmIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjQgQEAKKzIwMTQtMTEtMDUgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5j
b20+CisKKyAgICAgICAgSW1wbGVtZW50IG5ldyBwbHVnLWluIEFQSSBmb3IgbXV0aW5nIHBsdWct
aW5zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgx
MDUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQg
YSBuZXcgcGx1Zy1pbiB0ZXN0IGZvciB0aGUgbXV0ZSBBUEkuCisKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL1Rlc3ROZXRzY2FwZVBsdWdJbi9UZXN0cy9tYWMvU2V0TXV0ZWQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFNldE11dGVkOjpTZXRNdXRlZCk6CisgICAgICAgIChTZXRN
dXRlZDo6aXNNdXRlZCk6CisgICAgICAgIChTZXRNdXRlZDo6Y2FjaGVkSXNNdXRlZCk6CisgICAg
ICAgIChTZXRNdXRlZDo6U2NyaXB0YWJsZU9iamVjdDo6aGFzUHJvcGVydHkpOgorICAgICAgICAo
U2V0TXV0ZWQ6OlNjcmlwdGFibGVPYmplY3Q6OmdldFByb3BlcnR5KToKKyAgICAgICAgKFNldE11
dGVkOjpTY3JpcHRhYmxlT2JqZWN0OjpwbHVnaW5UZXN0KToKKyAgICAgICAgKFNldE11dGVkOjpO
UFBfTmV3KToKKyAgICAgICAgKFNldE11dGVkOjpOUFBfR2V0VmFsdWUpOgorICAgICAgICAoU2V0
TXV0ZWQ6Ok5QUF9TZXRWYWx1ZSk6CisKIDIwMTQtMTEtMTAgIEV2YSBCYWxhenNmYWx2aSAgPGV2
YWIudS1zemVnZWRAcGFydG5lci5zYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBGaXggdGhl
IHRlc3QgZm9udCBwYXRoIGFmdGVyIHIxNzU1NTUuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2NTYyMzg3Li45N2VjZWE2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9E
dW1wUmVuZGVyVHJlZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcw
LDYgKzcwLDcgQEAKIAkJNTE1RjQyOUMxNUMwNzg3MjAwN0M4RjkwIC8qIFBsdWdpblNjcmlwdGFi
bGVPYmplY3RPdmVycmlkZXNBbGxQcm9wZXJ0aWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNUY0MjlCMTVDMDc4NzIwMDdDOEY5MCAvKiBQbHVn
aW5TY3JpcHRhYmxlT2JqZWN0T3ZlcnJpZGVzQWxsUHJvcGVydGllcy5jcHAgKi87IH07CiAJCTUx
ODVGNkIyMTA3MTRFMDcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg1RjY5RjEwNzE0QTU3MDA3QUEz
OTMgLyogSGlzdG9yeURlbGVnYXRlLm1tICovOyB9OwogCQk1MUNBQ0JEODE1RDk2RkQwMDBFQjUz
QTIgLyogRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFDQUNCRDcxNUQ5NkZEMDAwRUI1M0EyIC8qIEV2YWx1
YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCAqLzsgfTsKKwkJNTIwMjA2Q0YxQTBBREE1OTAwQUQ1MTU0
IC8qIFNldE11dGVkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUyMDIwNkNFMUEwQURBNTkwMEFENTE1NCAvKiBTZXRNdXRlZC5jcHAgKi87IH07CiAJ
CTUzQ0JCODMyMTM0RTQyRjMwMDFDRTZBNCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTNDQkI4MzAxMzRF
NDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lDaGVjay5jcHAgKi87IH07CiAJCTVEQjlB
Qzk3MEY3MjJDMzYwMDY4NDY0MSAvKiBBSEVNX19fXy5UVEYgaW4gQ29weSBGb250IEZpbGVzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEFBN0YxMEMyMENCM0MxMDMwMDAzQkRD
OSAvKiBBSEVNX19fXy5UVEYgKi87IH07CiAJCTVEQjlBQzk4MEY3MjJDMzYwMDY4NDY0MSAvKiBX
ZWJLaXRXZWlnaHRXYXRjaGVyMTAwLnR0ZiBpbiBDb3B5IEZvbnQgRmlsZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzc1RjA5NzEwREFDM0NCNjAwQzhCNEU1IC8qIFdlYktp
dFdlaWdodFdhdGNoZXIxMDAudHRmICovOyB9OwpAQCAtMjY0LDYgKzI2NSw3IEBACiAJCTUxODVG
NjlFMTA3MTRBNTcwMDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gSGlzdG9yeURlbGVnYXRlLmg7IHBhdGggPSBtYWMvSGlzdG9yeURl
bGVnYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxODVGNjlGMTA3MTRBNTcw
MDdBQTM5MyAvKiBIaXN0b3J5RGVsZWdhdGUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgZmlsZUVuY29kaW5n
ID0gNDsgbmFtZSA9IEhpc3RvcnlEZWxlZ2F0ZS5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5RGVsZWdh
dGUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxQ0FDQkQ3MTVEOTZGRDAwMEVC
NTNBMiAvKiBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBFdmFsdWF0ZUpTV2l0aGluTlBQX05ldy5jcHA7IHBhdGggPSBUZXN0
TmV0c2NhcGVQbHVnSW4vVGVzdHMvRXZhbHVhdGVKU1dpdGhpbk5QUF9OZXcuY3BwOyBzb3VyY2VU
cmVlID0gU09VUkNFX1JPT1Q7IH07CisJCTUyMDIwNkNFMUEwQURBNTkwMEFENTE1NCAvKiBTZXRN
dXRlZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXRNdXRlZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUzQ0JCODMwMTM0RTQyRjMwMDFDRTZB
NCAvKiBDeWNsaWNSZWR1bmRhbmN5Q2hlY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ3ljbGljUmVkdW5kYW5jeUNoZWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTNDQkI4MzExMzRFNDJGMzAwMUNFNkE0IC8qIEN5Y2xpY1JlZHVuZGFuY3lD
aGVjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDeWNsaWNSZWR1bmRhbmN5
Q2hlY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNURFOEFFNDMxM0EyQzE1ODAw
RDZBMzdEIC8qIGxpYldlYkNvcmVUZXN0U3VwcG9ydC5keWxpYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZHlsaWIiOyBw
YXRoID0gbGliV2ViQ29yZVRlc3RTdXBwb3J0LmR5bGliOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwpAQCAtNTczLDYgKzU3NSw3IEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQkx
QTY2QzM0RjE0NTc2QTkyMDA5OUExMTUgLyogQ29udGVudHNTY2FsZUZhY3Rvci5jcHAgKi8sCiAJ
CQkJMUEzMUVCMzcxMzQ2NkFDMTAwMDE3MzcyIC8qIENvbnZlcnRQb2ludC5jcHAgKi8sCisJCQkJ
NTIwMjA2Q0UxQTBBREE1OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNwcCAqLywKIAkJCQkxQTE0QzhB
MzE0MDZERTA0MDBCMjU0RjcgLyogU3VwcG9ydHNDYXJib25FdmVudE1vZGVsLmNwcCAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gbWFjOwpAQCAtOTAwLDYgKzkwMyw3IEBACiAJCQkJNTFDQUNCRDgxNUQ5
NkZEMDAwRUI1M0EyIC8qIEV2YWx1YXRlSlNXaXRoaW5OUFBfTmV3LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTRBRDZBMTE0MTNDODEyNDAwMEVBOTczNyAvKiBGb3JtVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUFGRjY2QkMxMzdERUZEMjAwNzkxNjk2IC8qIEdldFVSTE5vdGlmeVdpdGhV
UkxUaGF0RmFpbHNUb0xvYWQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTIwMjA2Q0YxQTBBREE1
OTAwQUQ1MTU0IC8qIFNldE11dGVkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNUNDMUY1MTM3
REQyRUMwMEE1RDdFNyAvKiBHZXRVUkxXaXRoSmF2YVNjcmlwdFVSTC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQTNFMjhBQTEzMTFENzNCMDA1MDEzNDkgLyogR2V0VVJMV2l0aEphdmFTY3JpcHRV
UkxEZXN0cm95aW5nUGx1Z2luLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRDRDQjIyMTJBNkQx
MzUwMDI3QTdBRiAvKiBHZXRVc2VyQWdlbnRXaXRoTnVsbE5QUEZyb21OUFBOZXcuY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9UZXN0TmV0c2NhcGVQ
bHVnSW4vVGVzdHMvbWFjL1NldE11dGVkLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RO
ZXRzY2FwZVBsdWdJbi9UZXN0cy9tYWMvU2V0TXV0ZWQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY4YmZjMjYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9UZXN0TmV0c2NhcGVQbHVnSW4vVGVzdHMvbWFjL1NldE11dGVkLmNwcApAQCAtMCww
ICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJQbHVnaW5UZXN0LmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBzdGQ7CisKK2NsYXNzIFNldE11dGVkIDogcHVibGljIFBsdWdpblRlc3Qgewor
cHVibGljOgorICAgIFNldE11dGVkKE5QUCBucHAsIGNvbnN0IHN0cmluZyYgaWRlbnRpZmllcikK
KyAgICAgICAgOiBQbHVnaW5UZXN0KG5wcCwgaWRlbnRpZmllcikKKyAgICAgICAgLCBtX2NhY2hl
ZElzTXV0ZWQoZmFsc2UpCisgICAgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBib29sIGlzTXV0
ZWQoKQorICAgIHsKKyAgICAgICAgTlBCb29sIG11dGVkID0gRkFMU0U7CisgICAgICAgIE5QTl9H
ZXRWYWx1ZShOUE5WbXV0ZUF1ZGlvQm9vbCwgJm11dGVkKTsKKyAgICAgICAgcmV0dXJuIG11dGVk
OworICAgIH0KKworICAgIGJvb2wgY2FjaGVkSXNNdXRlZCgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9jYWNoZWRJc011dGVkOworICAgIH0KKworICAgIGNsYXNzIFNjcmlwdGFibGVPYmplY3Qg
OiBwdWJsaWMgT2JqZWN0PFNjcmlwdGFibGVPYmplY3Q+IHsKKyAgICBwdWJsaWM6CisgICAgICAg
IGJvb2wgaGFzUHJvcGVydHkoTlBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJpc011dGVkIikK
KyAgICAgICAgICAgIHx8IGlkZW50aWZpZXJJcyhwcm9wZXJ0eU5hbWUsICJjYWNoZWRJc011dGVk
Iik7CisgICAgICAgIH0KKworICAgICAgICBib29sIGdldFByb3BlcnR5KE5QSWRlbnRpZmllciBw
cm9wZXJ0eU5hbWUsIE5QVmFyaWFudCogcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoaWRlbnRpZmllcklzKHByb3BlcnR5TmFtZSwgImlzTXV0ZWQiKSkgeworICAgICAgICAgICAg
ICAgIEJPT0xFQU5fVE9fTlBWQVJJQU5UKHBsdWdpblRlc3QoKS0+aXNNdXRlZCgpLCAqcmVzdWx0
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChpZGVudGlmaWVySXMocHJvcGVydHlOYW1lLCAiY2FjaGVkSXNNdXRlZCIpKSB7Cisg
ICAgICAgICAgICAgICAgQk9PTEVBTl9UT19OUFZBUklBTlQocGx1Z2luVGVzdCgpLT5jYWNoZWRJ
c011dGVkKCksICpyZXN1bHQpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICBwcml2
YXRlOgorICAgICAgICBTZXRNdXRlZCogcGx1Z2luVGVzdCgpIGNvbnN0IHsgcmV0dXJuIHN0YXRp
Y19jYXN0PFNldE11dGVkKj4oT2JqZWN0PFNjcmlwdGFibGVPYmplY3Q+OjpwbHVnaW5UZXN0KCkp
OyB9CisgICAgfTsKKworICAgIHZpcnR1YWwgTlBFcnJvciBOUFBfTmV3KE5QTUlNRVR5cGUgcGx1
Z2luVHlwZSwgdWludDE2X3QgbW9kZSwgaW50MTZfdCBhcmdjLCBjaGFyKiBhcmduW10sIGNoYXIq
IGFyZ3ZbXSwgTlBTYXZlZERhdGEgKnNhdmVkKQorICAgIHsKKyAgICAgICAgbV9jYWNoZWRJc011
dGVkID0gaXNNdXRlZCgpOworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQor
CisgICAgdmlydHVhbCBOUEVycm9yIE5QUF9HZXRWYWx1ZShOUFBWYXJpYWJsZSB2YXJpYWJsZSwg
dm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFyaWFibGUgIT0gTlBQVnBsdWdpblNj
cmlwdGFibGVOUE9iamVjdCkKKyAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9S
OworCisgICAgICAgICooTlBPYmplY3QqKil2YWx1ZSA9IFNjcmlwdGFibGVPYmplY3Q6OmNyZWF0
ZSh0aGlzKTsKKworICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgfQorCisgICAg
dmlydHVhbCBOUEVycm9yIE5QUF9TZXRWYWx1ZShOUE5WYXJpYWJsZSB2YXJpYWJsZSwgdm9pZCog
dmFsdWUpCisgICAgeworICAgICAgICBzd2l0Y2ggKHZhcmlhYmxlKSB7CisgICAgICAgIGNhc2Ug
TlBOVm11dGVBdWRpb0Jvb2w6CisgICAgICAgICAgICBtX2NhY2hlZElzTXV0ZWQgPSAqKE5QQm9v
bCopdmFsdWU7CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfTk9fRVJST1I7CisgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKKyAgICAgICAg
fQorCisgICAgfQorICAgIGJvb2wgbV9jYWNoZWRJc011dGVkOworfTsKKworc3RhdGljIFBsdWdp
blRlc3Q6OlJlZ2lzdGVyPFNldE11dGVkPiBzZXRNdXRlZCgic2V0LW11dGVkIik7Ci0tIAoyLjEu
MSAoQXBwbGUgR2l0LTUxKQoK
</data>
<flag name="review"
          id="266166"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>