<?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>95478</bug_id>
          
          <creation_ts>2012-08-30 10:41:29 -0700</creation_ts>
          <short_desc>Add CachedResourceLoader BlockNetworkImages setting</short_desc>
          <delta_ts>2012-10-08 08:28:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Bo Liu">boliu</reporter>
          <assigned_to name="Bo Liu">boliu</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>benm</cc>
    
    <cc>boliu</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>japhet</cc>
    
    <cc>jochen</cc>
    
    <cc>koivisto</cc>
    
    <cc>mnaganov</cc>
    
    <cc>philn</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>708816</commentid>
    <comment_count>0</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 10:41:29 -0700</bug_when>
    <thetext>Add CachedResourceLoader BlockNetworkImages setting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708841</commentid>
    <comment_count>1</comment_count>
      <attachid>161518</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 11:03:36 -0700</bug_when>
    <thetext>Created attachment 161518
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708843</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-30 11:07:00 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708854</commentid>
    <comment_count>3</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 11:18:11 -0700</bug_when>
    <thetext>Hi Nate and reviewers, I have not added new tests or verified that this does not break existing tests, so feel free to ignore this for now.

This is for implementing Android WebView powered by Chromium stack. The specific method is this one: http://developer.android.com/reference/android/webkit/WebSettings.html#setBlockNetworkImage(boolean)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708855</commentid>
    <comment_count>4</comment_count>
      <attachid>161518</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-08-30 11:19:02 -0700</bug_when>
    <thetext>Comment on attachment 161518
Patch

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

LGTM with a nit, though I&apos;d like to give others a chance to comment before approving.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:656
&gt; +    KURL kurl = m_document-&gt;completeURL(url);
&gt; +

I believe callers of CachedResourceLoader are required to ensure the url they put into a ResourceRequest is completed, so this line probably isn&apos;t necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708857</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-30 11:20:46 -0700</bug_when>
    <thetext>Can you explain what you are really trying to accomplish?  BlockNetworkImages sounds like it should not block cached image loads, even for http:// URLs.  But, what is implemented here would prevent loading images out of the cache.  If this is your desired behavior, then perhaps the feature should be named BlockNonLocalImages?  Using the term &quot;Local&quot; seems helpful since it matches up with the corresponding SchemeRegistry call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708861</commentid>
    <comment_count>6</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-30 11:27:36 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Can you explain what you are really trying to accomplish?  BlockNetworkImages sounds like it should not block cached image loads, even for http:// URLs.  But, what is implemented here would prevent loading images out of the cache.  If this is your desired behavior, then perhaps the feature should be named BlockNonLocalImages?  Using the term &quot;Local&quot; seems helpful since it matches up with the corresponding SchemeRegistry call.

Oh, I see.  This patch does allow loading from the WebCore cache.  Nevermind.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708984</commentid>
    <comment_count>7</comment_count>
      <attachid>161547</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 13:42:49 -0700</bug_when>
    <thetext>Created attachment 161547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>708999</commentid>
    <comment_count>8</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 13:52:36 -0700</bug_when>
    <thetext>Removed completeURL call in CachedResourceLoader::shouldDeferImageLoad in Patch 2.

Can I ask for some advice for testing this? This seems difficult to test with layout tests since the setting cannot be changed from a webpage. I also tried to look for tests for the existing AutoLoadImages but didn&apos;t find anything.

I just learned about the chromium webkit unit tests and see if this can be a right fit there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709191</commentid>
    <comment_count>9</comment_count>
      <attachid>161596</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 17:32:37 -0700</bug_when>
    <thetext>Created attachment 161596
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709194</commentid>
    <comment_count>10</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-30 17:35:11 -0700</bug_when>
    <thetext>Added a webkit chromium unit tests in Patch 3 to test the shouldDeferImageLoad logic. This is a unit test on CachedResourceLoader only beacuse WebCore::Settings propagate the setting to CachedResourceLoader through a Timer. Not sure if this test is really worthwhile though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709401</commentid>
    <comment_count>11</comment_count>
      <attachid>161596</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-08-31 02:00:57 -0700</bug_when>
    <thetext>Comment on attachment 161596
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

nit: Please delete this line.

&gt; Source/WebCore/ChangeLog:21
&gt; +        No new tests (OOPS!).

I think it would be great to have a layout test for this setting to ensure end-to-end functionality.

You can add this setting into DRTTestRunner and then use it in html/js layout tests similar to &apos;disableImageLoading&apos; setting.

&gt; Source/WebCore/page/Settings.cpp:49
&gt; +static void setloadImagesSettingsInAllFrames(Page* page)

Perhaps, should be &quot;setImageLoadingSettings...&quot;.

&gt; Source/WebCore/page/Settings.cpp:293
&gt; +    , m_loadImagesSettingsTimer(this, &amp;Settings::loadImagesSettingsTimerFired)

same here</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709691</commentid>
    <comment_count>12</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-31 09:09:24 -0700</bug_when>
    <thetext>Thanks for the review and advice Mikhail, but a question:

(In reply to comment #11)
&gt; &gt; Source/WebCore/ChangeLog:21
&gt; &gt; +        No new tests (OOPS!).
&gt; 
&gt; I think it would be great to have a layout test for this setting to ensure end-to-end functionality.
&gt; 
&gt; You can add this setting into DRTTestRunner and then use it in html/js layout tests similar to &apos;disableImageLoading&apos; setting.
&gt; 

I did look at DRTTestRunner and was considering adding the setting to overridePreference. But I was under the impression that I would have to add it to TestRunner of all the ports and thought that was too hard. Is there a way limit the test scope to the chromium port only or otherwise a central place to add the preference to test runner of all ports?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709728</commentid>
    <comment_count>13</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-08-31 09:43:03 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Thanks for the review and advice Mikhail, but a question:
&gt; 
&gt; (In reply to comment #11)
&gt; &gt; &gt; Source/WebCore/ChangeLog:21
&gt; &gt; &gt; +        No new tests (OOPS!).
&gt; &gt; 
&gt; &gt; I think it would be great to have a layout test for this setting to ensure end-to-end functionality.
&gt; &gt; 
&gt; &gt; You can add this setting into DRTTestRunner and then use it in html/js layout tests similar to &apos;disableImageLoading&apos; setting.
&gt; &gt; 
&gt; 
&gt; I did look at DRTTestRunner and was considering adding the setting to overridePreference. But I was under the impression that I would have to add it to TestRunner of all the ports and thought that was too hard. Is there a way limit the test scope to the chromium port only or otherwise a central place to add the preference to test runner of all ports?

It seems that adding for mac (this is the &quot;main&quot; WebKit) and chromium ports should be enough, not sure about WebKit2. This is an example of adding a new preference for DRT: https://bugs.webkit.org/show_bug.cgi?id=78525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709786</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-31 10:40:16 -0700</bug_when>
    <thetext>It sounds like this setting only affects behavior of images in local documents, is that accurate? Perhaps that should be more explicit in comments and naming.

Also, what about network loader cache? We even have a willLoadFromCache method that predicts (with a possibility of mistake) whether network will be hit for a particular resource load.

We previously discussed that our multiple subtly different settings for image loading should be simplified, so it&apos;s sad to see another one being added, especially with a somewhat misleading name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709829</commentid>
    <comment_count>15</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-31 11:24:03 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; It sounds like this setting only affects behavior of images in local documents, is that accurate? Perhaps that should be more explicit in comments and naming.
&gt; 

No, this setting affects images with network schemes, regardless of the source of the document.

&gt; Also, what about network loader cache? We even have a willLoadFromCache method that predicts (with a possibility of mistake) whether network will be hit for a particular resource load.

I&apos;m sorry, I am not familiar with this. I just checked the Chromium ResourceHandle::willLoadFromCache and it simply returns true. Is this still relevant regarding to the answer to your first question?

&gt; 
&gt; We previously discussed that our multiple subtly different settings for image loading should be simplified, so it&apos;s sad to see another one being added, especially with a somewhat misleading name.

I am happy to do the work if you could point me to which settings need to be simplified. One of the requirements for this change is that the blocked images are reloaded in place when the setting changes, so that&apos;s why CachedResourceLoader::canRequest is not used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709834</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-08-31 11:28:54 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; It sounds like this setting only affects behavior of images in local documents, is that accurate? Perhaps that should be more explicit in comments and naming.
&gt; &gt; 
&gt; 
&gt; No, this setting affects images with network schemes, regardless of the source of the document.

I misspoke a bit. What I was referring to was that non-local documents can only load non-local images, so the new preference is not different from what we already have for those.

&gt; I&apos;m sorry, I am not familiar with this. I just checked the Chromium ResourceHandle::willLoadFromCache and it simply returns true. Is this still relevant regarding to the answer to your first question?

Yes - other ports implement willLoadFromCache accurately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>709944</commentid>
    <comment_count>17</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-31 13:47:45 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; It sounds like this setting only affects behavior of images in local documents, is that accurate? Perhaps that should be more explicit in comments and naming.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; No, this setting affects images with network schemes, regardless of the source of the document.
&gt; 
&gt; I misspoke a bit. What I was referring to was that non-local documents can only load non-local images, so the new preference is not different from what we already have for those.

This change is used in chromium port for android. In Android, there is the additional content: scheme that should be considered local, which I have to double check. If that is the case, yes, this will only affect local documents. I can update the comments in the next patch. Do you have a suggestion for a better name? Also see below.

&gt; 
&gt; &gt; I&apos;m sorry, I am not familiar with this. I just checked the Chromium ResourceHandle::willLoadFromCache and it simply returns true. Is this still relevant regarding to the answer to your first question?
&gt; 
&gt; Yes - other ports implement willLoadFromCache accurately.

If I understand what willLoadFromCache does: it checks if the load will come from the network stack cache of the different ports? So are you suggesting using willLoadFromCache instead of SchemeRegistry::shouldTreatURLSchemeAsLocal? As Darin has pointed out, the new setting should not affect loads that do not need revalidate and is retrieved straight from WebCore::MemoryCache.

This change is to support an android public java api used by apps. The implementation in the current android webkit fork only checks schemes and does not check the network cache. To maintain compatibility, this change should not need to check willLoadFromCache. So I see why this variable is badly named. Perhaps name something to: BlockNonLocalNonWebCoreCachedImages? Or change to positive: AllowOnlyWebCoreCachedOrLocalImages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710061</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-08-31 16:35:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; It sounds like this setting only affects behavior of images in local documents, is that accurate? Perhaps that should be more explicit in comments and naming.
&gt; 
&gt; Also, what about network loader cache? We even have a willLoadFromCache method that predicts (with a possibility of mistake) whether network will be hit for a particular resource load.

willLoadFromCache is not implemented for Chromium.  It would be too expensive to implement properly.  There would also be a race condition if we were to attempt to implement it.

Chromium implementation is here:
http://code.google.com/codesearch#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/platform/network/chromium/ResourceHandle.cpp&amp;exact_package=chromium&amp;q=willLoadFromCache&amp;type=cs&amp;l=274

The only caller is in FrameLoader, which has a comment above it explaining the hackiness of the approach:

        // FIXME: Slight hack to test if the NSURL cache contains the page we&apos;re going to.
        // We want to know this before talking to the policy delegate, since it affects whether
        // we show the DoYouReallyWantToRepost nag.
        //
        // This trick has a small bug (3123893) where we might find a cache hit, but then
        // have the item vanish when we try to use it in the ensuing nav.  This should be
        // extremely rare, but in that case the user will get an error on the navigation.

Chromium has a more robust solution to this problem that is based on the FormData::identifier() field.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710083</commentid>
    <comment_count>19</comment_count>
      <attachid>161794</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-08-31 17:14:54 -0700</bug_when>
    <thetext>Created attachment 161794
Added layout tests. Changed timer name in WebCore::Settings. Added description about documents. Have not renamed the setting yet</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710487</commentid>
    <comment_count>20</comment_count>
      <attachid>161794</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-09-03 01:43:57 -0700</bug_when>
    <thetext>Comment on attachment 161794
Added layout tests. Changed timer name in WebCore::Settings. Added description about documents. Have not renamed the setting yet

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        documents since non-local documents cannot access local resources due

Not sure the &quot;since&quot; part really matters, as it talks about local resources which are not affected by the switch. Perhaps, remove it?

I guess, your intention is to say that this feature is primarily intended for local documents. As for network documents, I think it actually has the same effect as disabling images loading at all, since network documents can only access network images, not local ones.

&gt; Source/WebCore/ChangeLog:21
&gt; +        No new tests (OOPS!).

I&apos;m surprised you are still having this line. Perhaps, you should re-run prepare-ChangeLog?

&gt; LayoutTests/fast/loader/file-image-allowed-with-network-image-blocked.html:18
&gt; +  Use resource load callbacks to make sure the image is not loaded.&lt;br&gt;

Why do you need this sentence?

Page text is intended for a person who may not know much about the test itself (e.g. this can be a person who does a test results update), but needs to verify that the test has passed. I would suggest to write something like &quot;The test passes if the image is loaded&quot;. Bonus points if you can do this yourself programmatically and display &quot;PASS&quot; or &quot;FAIL&quot; as a result.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710718</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2012-09-03 11:03:29 -0700</bug_when>
    <thetext>&gt; Chromium has a more robust solution to this problem that is based on the FormData::identifier() field.

That&apos;s good to know, but I don&apos;t see how this helps to move forward with this patch. It still adds a setting saying something about network loads while making no attempt to relate that to actual network loads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>710721</commentid>
    <comment_count>22</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-03 11:15:42 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; Chromium has a more robust solution to this problem that is based on the FormData::identifier() field.
&gt; 
&gt; That&apos;s good to know, but I don&apos;t see how this helps to move forward with this patch. It still adds a setting saying something about network loads while making no attempt to relate that to actual network loads.

(In reply to comment #21)
&gt; &gt; Chromium has a more robust solution to this problem that is based on the FormData::identifier() field.
&gt; 
&gt; That&apos;s good to know, but I don&apos;t see how this helps to move forward with this patch. It still adds a setting saying something about network loads while making no attempt to relate that to actual network loads.

I think as this is a naming issue. As I stated previously, this patch should not check the network cache. Would &quot;BlockNonLocalImages&quot; be better?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711144</commentid>
    <comment_count>23</comment_count>
      <attachid>162048</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-04 08:31:58 -0700</bug_when>
    <thetext>Created attachment 162048
Renamed to BlockNonLocalImages. Add overridePreference to mac DumpRenderTree runner, still need to fix expect.txt files for mac. Updated ChangeLog. Removed chromium unit tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711148</commentid>
    <comment_count>24</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-04 08:36:25 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; LayoutTests/fast/loader/file-image-allowed-with-network-image-blocked.html:18
&gt; &gt; +  Use resource load callbacks to make sure the image is not loaded.&lt;br&gt;
&gt; 
&gt; Why do you need this sentence?
&gt; 
&gt; Page text is intended for a person who may not know much about the test itself (e.g. this can be a person who does a test results update), but needs to verify that the test has passed. I would suggest to write something like &quot;The test passes if the image is loaded&quot;. Bonus points if you can do this yourself programmatically and display &quot;PASS&quot; or &quot;FAIL&quot; as a result.

I have not found a way to test whether the images are loaded from the html/js itself, so the test uses the resource load callbacks output to verify if the images in the page are loaded or not. I have tried the img onload attribute and it is fired regardless of if the image is blocked. Ideally it should be able to detect whether the image loaded since right now the expect.txt files do not match on mac. Will try to get this, any pointers welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711158</commentid>
    <comment_count>25</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-09-04 08:56:15 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #20)
&gt; &gt; &gt; LayoutTests/fast/loader/file-image-allowed-with-network-image-blocked.html:18
&gt; &gt; &gt; +  Use resource load callbacks to make sure the image is not loaded.&lt;br&gt;
&gt; &gt; 
&gt; &gt; Why do you need this sentence?
&gt; &gt; 
&gt; &gt; Page text is intended for a person who may not know much about the test itself (e.g. this can be a person who does a test results update), but needs to verify that the test has passed. I would suggest to write something like &quot;The test passes if the image is loaded&quot;. Bonus points if you can do this yourself programmatically and display &quot;PASS&quot; or &quot;FAIL&quot; as a result.
&gt; 
&gt; I have not found a way to test whether the images are loaded from the html/js itself, so the test uses the resource load callbacks output to verify if the images in the page are loaded or not.

Ah, so by &quot;resource load callbacks&quot; you mean test server output. I was imaging &quot;onload&quot; event handlers. Sorry for misunderstanding. I guess, you should write something like &quot;use test server log messages&quot; to remove this uncertainty.

&gt; I have tried the img onload attribute and it is fired regardless of if the image is blocked. Ideally it should be able to detect whether the image loaded since right now the expect.txt files do not match on mac. Will try to get this, any pointers welcome.

I use image element&apos;s &apos;naturalHeight&apos; property. If the image wasn&apos;t loaded, the height is 0. There is a bug https://bugs.webkit.org/show_bug.cgi?id=71661 about the image&apos;s onload handler behaviour.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711174</commentid>
    <comment_count>26</comment_count>
      <attachid>162048</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-04 09:30:11 -0700</bug_when>
    <thetext>Comment on attachment 162048
Renamed to BlockNonLocalImages. Add overridePreference to mac DumpRenderTree runner, still need to fix expect.txt files for mac. Updated ChangeLog. Removed chromium unit tests.

Attachment 162048 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13744564

New failing tests:
http/tests/misc/blocked-image-reloaded-when-image-reenabled.html
http/tests/misc/image-load-blocked-with-images-disabled.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711512</commentid>
    <comment_count>27</comment_count>
      <attachid>162113</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-04 15:31:46 -0700</bug_when>
    <thetext>Created attachment 162113
Rewrite layout tests to use naturalHeight/Width to detech image load. Fix mac WebPreferences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>711877</commentid>
    <comment_count>28</comment_count>
      <attachid>162113</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-09-05 02:56:19 -0700</bug_when>
    <thetext>Comment on attachment 162113
Rewrite layout tests to use naturalHeight/Width to detech image load. Fix mac WebPreferences.

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

&gt; LayoutTests/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html:21
&gt; +    window.setTimeout(runTestRest, 1000);

Setting a 1 second delay in a layout test isn&apos;t a good approach. I realize that you can&apos;t use image&apos;s onload because of the bug, but why not using a setInterval for periodic checking and finishing the test as early as possible?

&gt; LayoutTests/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html:36
&gt; +  &lt;div id=&quot;result&quot;&gt;FAILURE&lt;/div&gt;

I suggest putting &quot;FAILURE: script did&apos;t run&quot; here, and setting &quot;FAILURE: &lt;cause&gt;&quot; from the script in the case of failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>712441</commentid>
    <comment_count>29</comment_count>
      <attachid>162310</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-05 12:53:12 -0700</bug_when>
    <thetext>Created attachment 162310
Improve layout tests as suggested by Mikhail</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713027</commentid>
    <comment_count>30</comment_count>
      <attachid>162310</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-09-06 01:49:52 -0700</bug_when>
    <thetext>Comment on attachment 162310
Improve layout tests as suggested by Mikhail

Looks good to me, need a reviewer to approve.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713644</commentid>
    <comment_count>31</comment_count>
      <attachid>162310</attachid>
    <who name="Nate Chapin">japhet</who>
    <bug_when>2012-09-06 13:43:00 -0700</bug_when>
    <thetext>Comment on attachment 162310
Improve layout tests as suggested by Mikhail

LGTM, will let a chromium api reviewer actually r+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713649</commentid>
    <comment_count>32</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-06 13:48:51 -0700</bug_when>
    <thetext>Perhaps this has already been discussed, but is there a reason WebPermissionClient::allowImage is insufficient for your use case?

http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/public/WebPermissionClient.h#L50</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>713660</commentid>
    <comment_count>33</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-06 13:56:32 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Perhaps this has already been discussed, but is there a reason WebPermissionClient::allowImage is insufficient for your use case?
&gt; 
&gt; http://trac.webkit.org/browser/trunk/Source/WebKit/chromium/public/WebPermissionClient.h#L50

The reason allowImage is not used here is because for this android webview api, the blocked images needs to be reloaded in-place when the setting is flipped to unblock. Example usage is in the android gmail app that hides the images in an email by default and then reloads them when user clicks show images button.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>714784</commentid>
    <comment_count>34</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-07 11:24:51 -0700</bug_when>
    <thetext>&gt;  the blocked images needs to be reloaded in-place when the setting is flipped to unblock.

Perhaps we should add that feature to allowImage rather than inventing yet-another-way of blocking images?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716258</commentid>
    <comment_count>35</comment_count>
      <attachid>163163</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-10 10:47:27 -0700</bug_when>
    <thetext>Created attachment 163163
Add in-place reload to ImagesEnabled instead. No new settings now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716260</commentid>
    <comment_count>36</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-10 10:48:14 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; Created an attachment (id=163163) [details]
&gt; Add in-place reload to ImagesEnabled instead. No new settings now.

Needed to modify CachedResourceLoader::determineRevalidationPolicy to make sure that when ImagesEnabled is false, images are not loaded from the memory cache.

This solution is not ideal since an existing image is evicted from the cache. But presumably this setting is not toggled frequently in existing ports so it might be okay?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716720</commentid>
    <comment_count>37</comment_count>
      <attachid>163163</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-10 17:32:11 -0700</bug_when>
    <thetext>Comment on attachment 163163
Add in-place reload to ImagesEnabled instead. No new settings now.

Attachment 163163 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13802860</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>716747</commentid>
    <comment_count>38</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-10 18:18:53 -0700</bug_when>
    <thetext>(In reply to comment #37)
&gt; (From update of attachment 163163 [details])
&gt; Attachment 163163 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/13802860

I couldn&apos;t reproduce these errors with on my local linux chromium debug build, but it seems like all failed tests are image related.  I can&apos;t see the whole command, but here is the command I used:

time xvfb-run third_party/WebKit/Tools/Scripts/new-run-webkit-tests --chromium --skip-failing-tests --no-show-results --test-list=/tmp/list2 --debug

Is there anything else I should try to try to reproduce these errors?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718579</commentid>
    <comment_count>39</comment_count>
      <attachid>163163</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 12:14:13 -0700</bug_when>
    <thetext>Comment on attachment 163163
Add in-place reload to ImagesEnabled instead. No new settings now.

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

&gt; Source/WebCore/loader/FrameLoader.cpp:649
&gt; +    m_frame-&gt;document()-&gt;cachedResourceLoader()-&gt;setImagesEnabled(settings ? settings-&gt;areImagesEnabled() : true);

!settings || settings-&gt;areImagesEnabled()

is a slightly cleaner idiom here.

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:658
&gt; +    if (!m_autoLoadImages)
&gt; +        return true;
&gt; +
&gt; +    return false;

return !m_autoLoadImages

is a slightly cleaner idiom here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718583</commentid>
    <comment_count>40</comment_count>
      <attachid>163163</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 12:17:12 -0700</bug_when>
    <thetext>Comment on attachment 163163
Add in-place reload to ImagesEnabled instead. No new settings now.

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

&gt; Source/WebKit/mac/WebView/WebPreferences.mm:774
&gt; +- (void)setImagesEnabled: (BOOL)flag
&gt; +{
&gt; +    [self _setBoolValue: flag forKey: WebKitImagesEnabledKey];
&gt; +}
&gt; +
&gt; +- (BOOL)imagesEnabled
&gt; +{
&gt; +    return [self _boolValueForKey: WebKitImagesEnabledKey];
&gt; +}

You can actually skip all this apple-mac specific API work by using InternalSettings.cpp for the tests.  It&apos;s generally better to avoid changing public APIs for other ports.

That way you can also avoid making any Chromium-specific changes to DumpRenderTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718586</commentid>
    <comment_count>41</comment_count>
      <attachid>163163</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-12 12:19:17 -0700</bug_when>
    <thetext>Comment on attachment 163163
Add in-place reload to ImagesEnabled instead. No new settings now.

Does this patch work properly with redirects?  We make sure to call CachedResourceLoader::canRequest for each hop in the redirect chain, but I&apos;m not sure if the place you moved the allowImage call to gets called on redirects.  Can you add a test for that case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718900</commentid>
    <comment_count>42</comment_count>
      <attachid>163741</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-12 17:12:43 -0700</bug_when>
    <thetext>Created attachment 163741
Changes suggested by Adam Barth: Condition idioms, use InternalSetting for tests, add simple test for redirect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718901</commentid>
    <comment_count>43</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-12 17:14:01 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 163163 [details])
&gt; Does this patch work properly with redirects?  We make sure to call CachedResourceLoader::canRequest for each hop in the redirect chain, but I&apos;m not sure if the place you moved the allowImage call to gets called on redirects.  Can you add a test for that case?

Adam: I could not find a *separate* CachedResourceLoader::canRequest call for redirects, so I assume a redirect happens in the same path as the normal load. I added a test for blocking/unblocking a redirected image, but I&apos;m not sure if this is enough since it does not test the case where the allowImage decision differs for the original and redirected requests. I&apos;ll look into testing that case if you think it is important.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718993</commentid>
    <comment_count>44</comment_count>
      <attachid>163741</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-12 19:19:50 -0700</bug_when>
    <thetext>Comment on attachment 163741
Changes suggested by Adam Barth: Condition idioms, use InternalSetting for tests, add simple test for redirect

Attachment 163741 did not pass win-ews (win):
Output: http://queues.webkit.org/results/13846042</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719412</commentid>
    <comment_count>45</comment_count>
      <attachid>163741</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-13 06:41:17 -0700</bug_when>
    <thetext>Comment on attachment 163741
Changes suggested by Adam Barth: Condition idioms, use InternalSetting for tests, add simple test for redirect

Attachment 163741 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13849158

New failing tests:
platform/chromium/http/tests/permissionclient/image-permissions.html
platform/chromium/permissionclient/image-permissions.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720008</commentid>
    <comment_count>46</comment_count>
      <attachid>163979</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-13 15:18:20 -0700</bug_when>
    <thetext>Created attachment 163979
Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720049</commentid>
    <comment_count>47</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-13 15:51:46 -0700</bug_when>
    <thetext>(In reply to comment #46)
&gt; Created an attachment (id=163979) [details]
&gt; Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.

Stole a few lines from https://bugs.webkit.org/show_bug.cgi?id=71661 to fix onload being fired even when image load is deferred. Right now the behavior is neither onload or onerror fires if image load is deferred.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720103</commentid>
    <comment_count>48</comment_count>
      <attachid>163979</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-09-13 16:43:30 -0700</bug_when>
    <thetext>Comment on attachment 163979
Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.

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

&gt; Source/WebCore/loader/SubresourceLoader.cpp:170
&gt; +        if (m_document-&gt;cachedResourceLoader()-&gt;canRequest(m_resource-&gt;type(), newRequest.url()))

Multi-line if branches must be bracketed

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:651
&gt; +    if (frame())

Why not to merge these two ifs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720872</commentid>
    <comment_count>49</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 10:05:31 -0700</bug_when>
    <thetext>&gt; &gt; Does this patch work properly with redirects?  We make sure to call CachedResourceLoader::canRequest for each hop in the redirect chain, but I&apos;m not sure if the place you moved the allowImage call to gets called on redirects.  Can you add a test for that case?
&gt; 
&gt; Adam: I could not find a *separate* CachedResourceLoader::canRequest call for redirects, so I assume a redirect happens in the same path as the normal load. I added a test for blocking/unblocking a redirected image, but I&apos;m not sure if this is enough since it does not test the case where the allowImage decision differs for the original and redirected requests. I&apos;ll look into testing that case if you think it is important.

jochen might recall off-hand if we already have a test for allowImage and redirects.  If not we, should probably add one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720888</commentid>
    <comment_count>50</comment_count>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-14 10:12:22 -0700</bug_when>
    <thetext>(In reply to comment #49)
&gt; &gt; &gt; Does this patch work properly with redirects?  We make sure to call CachedResourceLoader::canRequest for each hop in the redirect chain, but I&apos;m not sure if the place you moved the allowImage call to gets called on redirects.  Can you add a test for that case?
&gt; &gt; 
&gt; &gt; Adam: I could not find a *separate* CachedResourceLoader::canRequest call for redirects, so I assume a redirect happens in the same path as the normal load. I added a test for blocking/unblocking a redirected image, but I&apos;m not sure if this is enough since it does not test the case where the allowImage decision differs for the original and redirected requests. I&apos;ll look into testing that case if you think it is important.
&gt; 
&gt; jochen might recall off-hand if we already have a test for allowImage and redirects.  If not we, should probably add one.

Sorry, forgot to update this. The test is image-permissions needed updates in the latest patch. And it did fail legitimately and point out an error in the previous patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720891</commentid>
    <comment_count>51</comment_count>
      <attachid>163979</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 10:14:07 -0700</bug_when>
    <thetext>Comment on attachment 163979
Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.

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

&gt; Source/WebCore/loader/SubresourceLoader.cpp:173
&gt; +            if (m_resource-&gt;type() != CachedResource::ImageResource || !m_document-&gt;cachedResourceLoader()-&gt;shouldDeferImageLoad(newRequest.url())) {
&gt; +                m_resource-&gt;willSendRequest(newRequest, redirectResponse);
&gt; +                return;

Yeah, this is the line that&apos;s causing us to handle redirects properly.  willSendRequest is called for each redirect.  I missed this in the patch before.

I bet we already have a test for allowImage and redirects.  If we realize that we don&apos;t, we can add one in a followup patch.

&gt; Source/WebCore/testing/InternalSettings.cpp:650
&gt; +    settings()-&gt;setImagesEnabled(enabled);

You also need some code to restore the original value of the setting otherwise it will stick from one test to another.  See InternalSettings::Backup::restoreTo.

&gt; LayoutTests/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html:24
&gt; +    testRunner.overridePreference(&apos;WebKitDisplayImagesKey&apos;, 1);

Don&apos;t you want to change these to use internals?

&gt; LayoutTests/fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html:27
&gt; +    intervalId = window.setInterval(runTestRest, 10);

We need to poll for the load?  Does that mean the image load events don&apos;t fire when re-enabling images?

&gt; LayoutTests/fast/loader/images-enabled-unset-can-block-image-and-can-reload-in-place.html:7
&gt; +var image_onload_fired = 0;

image_onload_fired -&gt; weUsuallyUseCamelCase

&gt; LayoutTests/fast/loader/images-enabled-unset-can-block-image-and-can-reload-in-place.html:11
&gt; +    testRunner.overridePreference(&apos;WebKitDisplayImagesKey&apos;, 1);

Presumably this isn&apos;t needed anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720892</commentid>
    <comment_count>52</comment_count>
      <attachid>163979</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 10:14:44 -0700</bug_when>
    <thetext>Comment on attachment 163979
Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.

This is very close.  We just need to clean up the testing side slightly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720906</commentid>
    <comment_count>53</comment_count>
      <attachid>163979</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 10:21:10 -0700</bug_when>
    <thetext>Comment on attachment 163979
Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.

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

&gt; Source/WebKit2/ChangeLog:1
&gt; +2012-09-13  Bo Liu  &lt;boliu@chromium.org&gt;

Looks like you don&apos;t need this changelog entry anymore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720907</commentid>
    <comment_count>54</comment_count>
      <attachid>163979</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 10:21:36 -0700</bug_when>
    <thetext>Comment on attachment 163979
Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.

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

&gt;&gt; Source/WebKit2/ChangeLog:1
&gt;&gt; +2012-09-13  Bo Liu  &lt;boliu@chromium.org&gt;
&gt; 
&gt; Looks like you don&apos;t need this changelog entry anymore.

Actually you do.  Nevermind.  ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720938</commentid>
    <comment_count>55</comment_count>
      <attachid>164190</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-14 10:43:43 -0700</bug_when>
    <thetext>Created attachment 164190
Restore InternalSettings. Style fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720939</commentid>
    <comment_count>56</comment_count>
      <attachid>164190</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-09-14 10:47:36 -0700</bug_when>
    <thetext>Comment on attachment 164190
Restore InternalSettings. Style fixes.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720966</commentid>
    <comment_count>57</comment_count>
      <attachid>164190</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 11:18:08 -0700</bug_when>
    <thetext>Comment on attachment 164190
Restore InternalSettings. Style fixes.

Rejecting attachment 164190 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;-...&quot; exit_code: 2

Last 500 characters of output:
commit-queue/Source/WebKit/chromium/third_party/v8-i18n --revision 117 --non-interactive --force --accept theirs-conflict --ignore-externals&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
48&gt;At revision 117.

________ running &apos;/usr/bin/python tools/clang/scripts/update.py --mac-only&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;

________ running &apos;/usr/bin/python gyp_webkit&apos; in &apos;/mnt/git/webkit-commit-queue/Source/WebKit/chromium&apos;
Updating webkit projects from gyp files...

Full output: http://queues.webkit.org/results/13854517</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720982</commentid>
    <comment_count>58</comment_count>
      <attachid>164197</attachid>
    <who name="Bo Liu">boliu</who>
    <bug_when>2012-09-14 11:31:34 -0700</bug_when>
    <thetext>Created attachment 164197
Rebase. Had conflict in InternalSettings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721065</commentid>
    <comment_count>59</comment_count>
      <attachid>164197</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 13:04:10 -0700</bug_when>
    <thetext>Comment on attachment 164197
Rebase. Had conflict in InternalSettings

Clearing flags on attachment: 164197

Committed r128645: &lt;http://trac.webkit.org/changeset/128645&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721066</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 13:04:17 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>736698</commentid>
    <comment_count>61</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2012-10-08 08:28:08 -0700</bug_when>
    <thetext>*** Bug 71661 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161518</attachid>
            <date>2012-08-30 11:03:36 -0700</date>
            <delta_ts>2012-08-30 13:42:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95478-20120830110325.patch</filename>
            <type>text/plain</type>
            <size>16236</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MDMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzJlZTNiN2JlNmJjYmVk
NDEzMGE4Yzg3MDMxMjM2Y2U4OTU0YjFjNy4uM2Q0NDg2N2ZlYWFlYjc5NjZlM2M3ZDc2NGY3Mzll
Y2U1ZTBkYmViNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTmV0d29ya0ltYWdlcyBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5n
ZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRl
c2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIEJsb2NrTmV0d29ya0ltYWdlcyBp
cyBzaW1pbGFyIHRvIEF1dG9Mb2FkSW1hZ2VzLiBCbG9ja05ldHdvcmtJbWFnZXMKKyAgICAgICAg
cGVyZm9ybXMgdGhlIGFkZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9u
LWxvY2FsIHVybAorICAgICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLgorCisgICAgICAgIEJs
b2NrTmV0d29ya0ltYWdlcyBhbmQgQXV0b0xvYWRJbWFnZXMgYmVoYXZlIGFzIGFuIEFORCBjb25k
aXRpb24gb24KKyAgICAgICAgd2hldGhlciB0byBsb2FkIGFuIGltYWdlLiBBbiBpbWFnZSBpcyBs
b2FkZWQgaWY6CisgICAgICAgIEF1dG9Mb2FkSW1hZ2VzICYmICghQmxvY2tOZXR3b3JrSW1hZ2Vz
IHx8IHNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCkKKworICAgICAgICBUaGlzIGlzIHVzZWQg
aW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEFuZHJvaWQgV2ViVmlldworICAgICAgICBXZWJTZXR0
aW5ncy5zZXRCbG9ja05ldHdvcmtJbWFnZSBvbiB0b3Agb2YgYSBmdWxsIENocm9taXVtIHN0YWNr
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLiAoV29ya2luZyBvbiBuZXcgdGVzdHMp
CisKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICBBbHNvIHNldCBCbG9ja05l
dHdvcmtJbWFnZXMgdmFsdWUgZnJvbSBzZXR0aW5ncy4KKworICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6bG9hZCk6
CisgICAgICAgIE1vZGlmaWVkIHRvIGNoZWNrIGJvdGggc2V0dGluZ3MgYmVmb3JlIGxvYWQuCisK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToK
KyAgICAgICAgSW5pdGlhbGl6ZSBuZXcgcHJpdmF0ZSB2YXJpYWJsZS4KKworICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIENoZWNr
IGJvdGggc2V0dGluZ3MgYmVmb3JlIHJlcXVlc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIFJlZmFjdG9yIG91
dCBkdXBsaWNhdGVkIGNvZGUgd2l0aCBzZXRCbG9ja05ldHdvcmtJbWFnZXMuCisKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEJs
b2NrTmV0d29ya0ltYWdlcyk6CisgICAgICAgIE1pcnJvcnMgc2V0QXV0b0xvYWRJbWFnZXMuIFdp
bGwgcmVsb2FkIGltYWdlcyB0aGF0IGFyZSBubyBsb25nZXIKKyAgICAgICAgYmxvY2tlZCBieSBz
ZXR0aW5nLgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxk
RGVmZXJJbWFnZUxvYWQpOgorICAgICAgICBDb21iaW5lZCB0aGUgY2hlY2sgZm9yIGJvdGggc2V0
dGluZ3MgdXNpbmcgdGhlIGNvbmRpdGlvbiBkZXNjcmliZWQKKyAgICAgICAgYWJvdmUuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERl
ZmVycmVkKToKKyAgICAgICAgUmVmYWN0b3JlZCBvdXQgcHJpdmF0ZSBtZXRob2QgdG8gcmVsb2Fk
IGltYWdlcyB0aGF0IGlzIG5vIGxvbmdlcgorICAgICAgICBibG9ja2VkLiBDYWxsZWQgaW4gc2V0
QXV0b0xvYWRJbWFnZXMgYW5kIHNldEJsb2NrTmV0d29ya0ltYWdlcy4KKworICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmJsb2Nr
TmV0d29ya0ltYWdlcyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpzZXRsb2FkSW1hZ2VzU2V0dGluZ3NJbkFsbEZyYW1lcyk6CisgICAgICAgIFJlbmFt
ZWQgYW5kIG1vZGlmaWVkIHRvIHNldCBib3RoIHNldHRpbmdzIGluIGFsbAorICAgICAgICBDYWNo
ZWRSZXNvdXJjZUxvYWRlcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5n
cyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNl
dEJsb2NrTmV0d29ya0ltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bG9hZElt
YWdlc1NldHRpbmdzVGltZXJGaXJlZCk6CisgICAgICAgIFJlbmFtZWQgdG8gcmVmbGVjdCBzZXR0
aW5nIGJvdGggdmFyaWFibGVzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAg
ICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmJsb2NrTmV0d29ya0lt
YWdlcyk6CisKIDIwMTItMDgtMjggIFNoYXduIFNpbmdoICA8c2hhd25zaW5naEBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBEbyBub3QgY2xpcCByb290IGxheWVyJ3Mgc3VidHJl
ZSB0byB2aWV3cG9ydApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBmYjJhNjQ1OTViZWM0
MDJjMTkxMzM3NmFkNTljMWI2YWZhZDAyZGU3Li5mZjI5ODk0YjBmMjczNjZkOTM4ODcxNjhhMzZh
M2ZjYzQyYzc2N2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDEyLTA4LTMwICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRk
IENhY2hlZFJlc291cmNlTG9hZGVyIEJsb2NrTmV0d29ya0ltYWdlcyBzZXR0aW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgbmV3IEJsb2Nr
TmV0d29ya0ltYWdlcyBzZXR0aW5nIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogcHVibGlj
L1dlYlNldHRpbmdzLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0QmxvY2tOZXR3b3JrSW1hZ2VzKToKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAg
ICAoV2ViU2V0dGluZ3NJbXBsKToKKwogMjAxMi0wOC0yOSAgVy4gSmFtZXMgTWFjTGVhbiAgPHdq
bWFjbGVhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBMaW5rIGhpZ2hsaWdo
dCBzaG91bGQgY2xlYXIgb24gcGFnZSBuYXZpZ2F0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggY2E5ZmYwOTQ3YTQxNzM2YWFhNzg2NzA1NzY0ZGQ4ZTkyZTllMWRk
Zi4uZGQ5MTE0NGIxN2E0ODcyZTM4MDQwMzRiNTJiOGY5MGQwMzU4MzM2OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02MDksNiArNjA5LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogCiAgICAgU2V0dGluZ3MqIHNl
dHRpbmdzID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhzZXR0
aW5ncyAmJiBzZXR0aW5ncy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEJsb2NrTmV0d29ya0lt
YWdlcyhzZXR0aW5ncyA/IHNldHRpbmdzLT5ibG9ja05ldHdvcmtJbWFnZXMoKSA6IGZhbHNlKTsK
IAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CiAgICAgICAgIFN0cmluZyBkbnNQcmVmZXRj
aENvbnRyb2wgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgi
WC1ETlMtUHJlZmV0Y2gtQ29udHJvbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKaW5kZXggYmU0Y2VhNWNmMjIyOGE1ZmQ5NmI0ODNkMzFkNGYyNzliYTMz
NmQxNS4uYzYyMzIwODA0MTA2NjE3NjA3YjljYmYzMDc0YWQ4NGFjYTZjNDZkZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC03OSw3ICs3OSw3IEBA
IENhY2hlZEltYWdlOjp+Q2FjaGVkSW1hZ2UoKQogCiB2b2lkIENhY2hlZEltYWdlOjpsb2FkKENh
Y2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29uc3QgUmVzb3VyY2VM
b2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIg
fHwgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkpCisgICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZUxvYWRlciB8fCAhY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNob3VsZERlZmVySW1h
Z2VMb2FkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKSkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6
OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogICAgIGVsc2UKICAgICAgICAg
c2V0TG9hZGluZyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiMjU4YzA1N2ZmM2FmMTExOTU4MGRlMWFm
NjA4NDA1MzJmNmEwYTc1Li5lYThiNTBlMDdjZGIyMDgyZDBmZmRhZjQ1OTVlODY2YjJmNDdhNTk4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgog
I2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIu
aCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2lu
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4K
QEAgLTExNSw2ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VM
b2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAs
IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAg
ICAgLCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCisgICAgLCBtX2Jsb2NrTmV0d29ya0ltYWdlcyhm
YWxzZSkKICAgICAsIG1fYWxsb3dTdGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE2MCw3
ICsxNjIsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcQogICAgICAgICB9CiAgICAgfQogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXNvdXJjZShzdGF0aWNfY2FzdDxD
YWNoZWRJbWFnZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJj
ZSwgcmVxdWVzdCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0
KCkpKTsKLSAgICBpZiAoYXV0b0xvYWRJbWFnZXMoKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+
c3RpbGxOZWVkc0xvYWQoKSkKKyAgICBpZiAoIXNob3VsZERlZmVySW1hZ2VMb2FkKHJlcXVlc3Qu
dXJsKCkpICYmIHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAg
ICByZXNvdXJjZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwog
ICAgIHJldHVybiByZXNvdXJjZTsKIH0KQEAgLTYyOSwxMyArNjMxLDQ0IEBAIHZvaWQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQogICAgIGlmICgh
bV9hdXRvTG9hZEltYWdlcykKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVsb2FkSW1hZ2VzSWZO
b3REZWZlcnJlZCgpOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRCbG9ja05l
dHdvcmtJbWFnZXMoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSA9PSBtX2Jsb2NrTmV0
d29ya0ltYWdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ibG9ja05ldHdvcmtJbWFnZXMg
PSBlbmFibGU7CisKKyAgICBpZiAobV9ibG9ja05ldHdvcmtJbWFnZXMpCisgICAgICAgIHJldHVy
bjsKKworICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKworYm9vbCBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYgdXJsKSBjb25z
dAoreworICAgIGlmICghbV9hdXRvTG9hZEltYWdlcykKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBLVVJMIGt1cmwgPSBtX2RvY3VtZW50LT5jb21wbGV0ZVVSTCh1cmwpOworCisgICAgaWYg
KG1fYmxvY2tOZXR3b3JrSW1hZ2VzICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxT
Y2hlbWVBc0xvY2FsKGt1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJ
bWFnZXNJZk5vdERlZmVycmVkKCkKK3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRv
ciBlbmQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRSZXNv
dXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vj
b25kLmdldCgpOwogICAgICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJj
ZTo6SW1hZ2VSZXNvdXJjZSkgewogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gY29u
c3RfY2FzdDxDYWNoZWRJbWFnZSo+KHN0YXRpY19jYXN0PGNvbnN0IENhY2hlZEltYWdlKj4ocmVz
b3VyY2UpKTsKIAotICAgICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAg
ICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpICYmICFzaG91bGREZWZlckltYWdl
TG9hZChpbWFnZS0+dXJsKCkpKQogICAgICAgICAgICAgICAgIGltYWdlLT5sb2FkKHRoaXMsIGRl
ZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4
IDNmMWMyMzNiMDA4ZGY4NDAxYThjMWFiYTExODE3NWRhN2Q4MGZiNWUuLjcyZTNkYWY4NDI0NjNm
MjE3ODZmOGQ4NzVkMzU3MGViMDkwN2EzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC05OCw2ICs5OCwxMSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvTG9h
ZEltYWdlczsgfQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisKKyAgICBib29s
IGJsb2NrTmV0d29ya0ltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tOZXR3b3JrSW1hZ2Vz
OyB9CisgICAgdm9pZCBzZXRCbG9ja05ldHdvcmtJbWFnZXMoYm9vbCk7CisKKyAgICBib29sIHNo
b3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAKICAgICBDYWNoZVBv
bGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAtMTM2LDYgKzE0MSw4IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVk
KFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQgcGVyZm9ybVBvc3RMb2Fk
QWN0aW9ucygpOworCisgICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAg
CiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxlIERvY3Vt
ZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsKQEAgLTE1Myw4ICsxNjAsOSBAQCBw
cml2YXRlOgogCiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFnZUNvbGxl
Y3REb2N1bWVudFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0CisgICAgLy8g
MjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBib29sIG1f
YmxvY2tOZXR3b3JrSW1hZ2VzIDogMTsKICAgICBib29sIG1fYWxsb3dTdGFsZVJlc291cmNlcyA6
IDE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGU5N2M2NGY3M2RjYjBlMjdh
ZTQ5NjRkNDc1ZTYyYWI4MjliM2ZjNTQuLmQ3YmZiY2Y0NDRmZGZhNmM3Y2FhZDk5Y2Q4MzU3NDgz
YWNmYmUwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00NiwxMCArNDYsMTMgQEAg
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9p
ZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQorc3Rh
dGljIHZvaWQgc2V0bG9hZEltYWdlc1NldHRpbmdzSW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKIHsK
LSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5KCkpOworCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5zZXRCbG9ja05ldHdvcmtJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS0+YmxvY2tO
ZXR3b3JrSW1hZ2VzKCkpOworICAgIH0KIH0KIAogLy8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZv
bnQgbWFwIGZvciB0aGUgZ2l2ZW4gc2NyaXB0LiBJZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmlu
ZywgcmVtb3ZlcyB0aGUgZW50cnkgaW5zdGVhZC4KQEAgLTE1MSw2ICsxNTQsNyBAQCBTZXR0aW5n
czo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZChmYWxzZSkKICAg
ICAsIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXModHJ1ZSkKICAgICAsIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQorICAgICwgbV9ibG9ja05ldHdvcmtJbWFnZXMoZmFsc2Up
CiAgICAgLCBtX2xvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKGZhbHNl
KQogICAgICwgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9jYXJldEJy
b3dzaW5nRW5hYmxlZChmYWxzZSkKQEAgLTI4Niw3ICsyOTAsNyBAQCBTZXR0aW5nczo6U2V0dGlu
Z3MoUGFnZSogcGFnZSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQog
ICAgICwgbV90aGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1f
c2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5VGltZXIodGhpcywgJlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHlUaW1lckZpcmVkKQorICAgICwgbV9sb2FkSW1hZ2VzU2V0dGluZ3NUaW1lcih0aGlz
LCAmU2V0dGluZ3M6OmxvYWRJbWFnZXNTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3Jl
bWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZy
YW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBB
dG9taWNTdHJpbmcKQEAgLTQ1MiwxMiArNDU2LDE5IEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAv
LyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBC
eSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5j
ZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFy
dC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNz
aW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDAp
OworICAgIG1fbG9hZEltYWdlc1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2
b2lkIFNldHRpbmdzOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMoYm9vbCBibG9ja05ldHdvcmtJbWFn
ZXMpCit7CisgICAgbV9ibG9ja05ldHdvcmtJbWFnZXMgPSBibG9ja05ldHdvcmtJbWFnZXM7CisK
KyAgICBtX2xvYWRJbWFnZXNTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9p
ZCBTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0
aW5ncz4qKQordm9pZCBTZXR0aW5nczo6bG9hZEltYWdlc1NldHRpbmdzVGltZXJGaXJlZChUaW1l
cjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJh
bWVzKG1fcGFnZSk7CisgICAgc2V0bG9hZEltYWdlc1NldHRpbmdzSW5BbGxGcmFtZXMobV9wYWdl
KTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRl
eCBmZDRkOWE5OTJiNjllZmRjZjRhNGRiZDRlODUwNTQ5ZTI1YzdjNGFkLi43NWJlMjQ4OGU1MTIy
NzBjNDM3OTE0YzdiYjY4YTMwZTNhMWI1MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0x
MjQsNiArMTI0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShib29sKTsKICAgICAgICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsgfQog
CisgICAgICAgIHZvaWQgc2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wpOworICAgICAgICBib29s
IGJsb2NrTmV0d29ya0ltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tOZXR3b3JrSW1hZ2Vz
OyB9CisKICAgICAgICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkgYWZmZWN0cyBzaXRlIGljb24gaW1h
Z2UgbG9hZGluZyBpZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0dGluZyBpcyBmYWxzZSBh
bmQgdGhpcyBzZXR0aW5nIGlzIHRydWUuCiAgICAgICAgIC8vIEFsbCBvdGhlciBwZXJtdXRhdGlv
bnMgc3RpbGwgaGVlZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0dGluZy4KICAgICAgICAg
dm9pZCBzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhib29sKTsK
QEAgLTY2MSw2ICs2NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9p
c0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZp
bGVzIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7Cisg
ICAgICAgIGJvb2wgbV9ibG9ja05ldHdvcmtJbWFnZXMgOiAxOwogICAgICAgICBib29sIG1fbG9h
ZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcgOiAxOwogICAgICAgICBib29s
IG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9jYXJldEJyb3dz
aW5nRW5hYmxlZCA6IDE7CkBAIC03OTksOCArODAzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsK
IAotICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1l
cjsKLSAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVy
PFNldHRpbmdzPiopOworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2FkSW1hZ2VzU2V0dGlu
Z3NUaW1lcjsKKyAgICAgICAgdm9pZCBsb2FkSW1hZ2VzU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVy
PFNldHRpbmdzPiopOwogICAgICAgICAKICAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5k
ZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGUxZTc0YTliOTZlNThhMDI5ZWQxNmQyODJl
ZmQ1N2Q4Y2Y0MDkyNjUuLjFhNTk2YjE1YmYzZThhNjc3MTcyNjdhY2QyNDlkMTliMzVhMzYwMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTEy
LDYgKzExMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SmF2YVNjcmlwdEVuYWJs
ZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRGYWxsYmFja1dpZHRoKGlu
dCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbG9ja05ldHdvcmtJbWFnZXMoYm9vbCkgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpID0g
MDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmlu
ZGV4IGViNGI3YmI3NmM5YWRkY2QyMDYyNDc3Y2NhYmE1YTBiYzU5MWM2OTYuLmU0YTk0NjJkNGI1
MzNmZjE2MjcwODRkOTRiNWI1OTRjNjZlZmMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtMTgyLDYgKzE4MiwxMSBAQCB2b2lkIFdl
YlNldHRpbmdzSW1wbDo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KQogICAgIG1fc2V0dGluZ3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseShsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1w
bDo6c2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wgYmxvY2tOZXR3b3JrSW1hZ2VzKQoreworICAg
IG1fc2V0dGluZ3MtPnNldEJsb2NrTmV0d29ya0ltYWdlcyhibG9ja05ldHdvcmtJbWFnZXMpOwor
fQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQp
CiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggN2JjOGE2NDlhZmE1
Y2VhZjJjMTZkOWMyMmZlYzEwMmJjODBmMGZkNC4uZWUwNTNmMmExMjZmNWE1MTJhMjVkNThmZmVk
MGE1ZjlhZmMzZjJlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNl
dEphdmFTY3JpcHRFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRGYWxs
YmFja1dpZHRoKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161547</attachid>
            <date>2012-08-30 13:42:49 -0700</date>
            <delta_ts>2012-08-30 17:32:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95478-20120830134237.patch</filename>
            <type>text/plain</type>
            <size>16200</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjU0ODNhZmU4NzBlNGVl
OTRlZWY3NDFkMTUwODI1YTFkMzc3MjNlNy4uZGRiOTkyYzQzMmQzOTNjZDE4Y2NiN2UzMThkMmU1
MTE2NjFlNmRlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTmV0d29ya0ltYWdlcyBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5n
ZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRl
c2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIEJsb2NrTmV0d29ya0ltYWdlcyBp
cyBzaW1pbGFyIHRvIEF1dG9Mb2FkSW1hZ2VzLiBCbG9ja05ldHdvcmtJbWFnZXMKKyAgICAgICAg
cGVyZm9ybXMgdGhlIGFkZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9u
LWxvY2FsIHVybAorICAgICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLgorCisgICAgICAgIEJs
b2NrTmV0d29ya0ltYWdlcyBhbmQgQXV0b0xvYWRJbWFnZXMgYmVoYXZlIGFzIGFuIEFORCBjb25k
aXRpb24gb24KKyAgICAgICAgd2hldGhlciB0byBsb2FkIGFuIGltYWdlLiBBbiBpbWFnZSBpcyBs
b2FkZWQgaWY6CisgICAgICAgIEF1dG9Mb2FkSW1hZ2VzICYmICghQmxvY2tOZXR3b3JrSW1hZ2Vz
IHx8IHNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCkKKworICAgICAgICBUaGlzIGlzIHVzZWQg
aW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEFuZHJvaWQgV2ViVmlldworICAgICAgICBXZWJTZXR0
aW5ncy5zZXRCbG9ja05ldHdvcmtJbWFnZSBvbiB0b3Agb2YgYSBmdWxsIENocm9taXVtIHN0YWNr
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRv
Y3VtZW50KToKKyAgICAgICAgQWxzbyBzZXQgQmxvY2tOZXR3b3JrSW1hZ2VzIHZhbHVlIGZyb20g
c2V0dGluZ3MuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICBNb2RpZmllZCB0byBj
aGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSBsb2FkLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIEluaXRpYWxpemUgbmV3
IHByaXZhdGUgdmFyaWFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICBDaGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSBy
ZXF1ZXN0LgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0
b0xvYWRJbWFnZXMpOgorICAgICAgICBSZWZhY3RvciBvdXQgZHVwbGljYXRlZCBjb2RlIHdpdGgg
c2V0QmxvY2tOZXR3b3JrSW1hZ2VzLgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMpOgorICAg
ICAgICBNaXJyb3JzIHNldEF1dG9Mb2FkSW1hZ2VzLiBXaWxsIHJlbG9hZCBpbWFnZXMgdGhhdCBh
cmUgbm8gbG9uZ2VyCisgICAgICAgIGJsb2NrZWQgYnkgc2V0dGluZy4KKworICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKToKKyAgICAg
ICAgQ29tYmluZWQgdGhlIGNoZWNrIGZvciBib3RoIHNldHRpbmdzIHVzaW5nIHRoZSBjb25kaXRp
b24gZGVzY3JpYmVkCisgICAgICAgIGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgIFJlZmFj
dG9yZWQgb3V0IHByaXZhdGUgbWV0aG9kIHRvIHJlbG9hZCBpbWFnZXMgdGhhdCBpcyBubyBsb25n
ZXIKKyAgICAgICAgYmxvY2tlZC4gQ2FsbGVkIGluIHNldEF1dG9Mb2FkSW1hZ2VzIGFuZCBzZXRC
bG9ja05ldHdvcmtJbWFnZXMuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpibG9ja05ldHdvcmtJbWFnZXMpOgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0bG9hZEltYWdlc1Nl
dHRpbmdzSW5BbGxGcmFtZXMpOgorICAgICAgICBSZW5hbWVkIGFuZCBtb2RpZmllZCB0byBzZXQg
Ym90aCBzZXR0aW5ncyBpbiBhbGwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXJzLgorCisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmxvYWRJbWFnZXNTZXR0aW5nc1RpbWVyRmlyZWQp
OgorICAgICAgICBSZW5hbWVkIHRvIHJlZmxlY3Qgc2V0dGluZyBib3RoIHZhcmlhYmxlcy4KKwor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNldHRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpibG9ja05ldHdvcmtJbWFnZXMpOgorCiAyMDEyLTA4LTI3ICBK
YW1lcyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVt
XSBBZGQgQ29tcG9zaXRvclN1cHBvcnQgaW50ZXJmYWNlIGZvciBjb25zdHJ1Y3RpbmcgY29tcG9z
aXRvciBjbGFzc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVkZTdiMTU0ZWI5YmRm
NWU3NzBkNGNiMDFkYjE3NWI4M2E5MDYzY2YuLmNkZjgxODgwMmRiYzdiZGQxZTVhOTk2NmFhMTNj
NzAyNzMxZjE1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTItMDgtMzAgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQg
Q2FjaGVkUmVzb3VyY2VMb2FkZXIgQmxvY2tOZXR3b3JrSW1hZ2VzIHNldHRpbmcKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgQmxvY2tO
ZXR3b3JrSW1hZ2VzIHNldHRpbmcgdG8gV2ViU2V0dGluZ3MuCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMpOgorICAg
ICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAg
IChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA4LTI3ICBKYW1lcyBSb2JpbnNvbiAgPGphbWVz
ckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBBZGQgQ29tcG9zaXRvclN1cHBv
cnQgaW50ZXJmYWNlIGZvciBjb25zdHJ1Y3RpbmcgY29tcG9zaXRvciBjbGFzc2VzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCBjMjQyYmY3MzZlMjY5N2FlM2M0ZTE1OTAy
ZjhmYmEwY2ZjMWU1YzFiLi5iNzVmNThkMjYxMGJiMzU4MWMzOWM4NjY0NmRmOGQ2MmZkZGU5YjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAKICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOwog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9M
b2FkSW1hZ2VzKHNldHRpbmdzICYmIHNldHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
KSk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0
QmxvY2tOZXR3b3JrSW1hZ2VzKHNldHRpbmdzID8gc2V0dGluZ3MtPmJsb2NrTmV0d29ya0ltYWdl
cygpIDogZmFsc2UpOwogCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgU3Ry
aW5nIGRuc1ByZWZldGNoQ29udHJvbCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0
cEhlYWRlckZpZWxkKCJYLUROUy1QcmVmZXRjaC1Db250cm9sIik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCBiZTRjZWE1Y2YyMjI4YTVmZDk2YjQ4
M2QzMWQ0ZjI3OWJhMzM2ZDE1Li5jNjIzMjA4MDQxMDY2MTc2MDdiOWNiZjMwNzRhZDg0YWNhNmM0
NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAg
LTc5LDcgKzc5LDcgQEAgQ2FjaGVkSW1hZ2U6On5DYWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2FjaGVk
SW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBj
b25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRS
ZXNvdXJjZUxvYWRlciB8fCBjYWNoZWRSZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkK
KyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8ICFjYWNoZWRSZXNvdXJjZUxvYWRlci0+
c2hvdWxkRGVmZXJJbWFnZUxvYWQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpKQogICAgICAgICBD
YWNoZWRSZXNvdXJjZTo6bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAgICAg
ZWxzZQogICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGIyNThjMDU3ZmYz
YWYxMTE5NTgwZGUxYWY2MDg0MDUzMmY2YTBhNzUuLjgwYjhhZTUwNzI1N2Y0NmFjN2ExZmJkMTU3
MDBhZTE5MjM0ZDhkNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk1l
bW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNl
TG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAi
U2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9V
bnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYgKzExNiw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVlc3RD
b3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhp
cywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2Vz
VGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKKyAgICAsIG1fYmxvY2tO
ZXR3b3JrSW1hZ2VzKGZhbHNlKQogICAgICwgbV9hbGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNlKQog
ewogfQpAQCAtMTYwLDcgKzE2Miw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdl
PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVxCiAgICAgICAg
IH0KICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNl
KHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNl
OjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNl
ICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgIGlmICghc2hvdWxkRGVmZXJJbWFn
ZUxvYWQocmVxdWVzdC51cmwoKSkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNM
b2FkKCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJj
ZU9wdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpAQCAtNjI5LDEzICs2MzEsNDIg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFi
bGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAgICBy
ZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnNldEJsb2NrTmV0d29ya0ltYWdlcyhib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxl
ID09IG1fYmxvY2tOZXR3b3JrSW1hZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Jsb2Nr
TmV0d29ya0ltYWdlcyA9IGVuYWJsZTsKKworICAgIGlmIChtX2Jsb2NrTmV0d29ya0ltYWdlcykK
KyAgICAgICAgcmV0dXJuOworCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOworfQor
Citib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBL
VVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX2Jsb2NrTmV0d29ya0ltYWdlcyAmJiAhU2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSkpCisgICAg
ICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCkKK3sKICAgICBEb2N1bWVu
dFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOwog
ICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAocmVzb3VyY2UtPnR5
cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgewogICAgICAgICAgICAgQ2Fj
aGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+KHN0YXRpY19jYXN0PGNv
bnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsKIAotICAgICAgICAgICAgaWYgKGltYWdlLT5z
dGlsbE5lZWRzTG9hZCgpKQorICAgICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgp
ICYmICFzaG91bGREZWZlckltYWdlTG9hZChpbWFnZS0+dXJsKCkpKQogICAgICAgICAgICAgICAg
IGltYWdlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDNmMWMyMzNiMDA4ZGY4NDAxYThjMWFiYTExODE3NWRhN2Q4
MGZiNWUuLjcyZTNkYWY4NDI0NjNmMjE3ODZmOGQ4NzVkMzU3MGViMDkwN2EzMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBA
IC05OCw2ICs5OCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9hdXRvTG9hZEltYWdlczsgfQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFn
ZXMoYm9vbCk7CisKKyAgICBib29sIGJsb2NrTmV0d29ya0ltYWdlcygpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2tOZXR3b3JrSW1hZ2VzOyB9CisgICAgdm9pZCBzZXRCbG9ja05ldHdvcmtJbWFnZXMo
Ym9vbCk7CisKKyAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25z
dDsKICAgICAKICAgICBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAt
MTM2LDYgKzE0MSw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1l
bnRSZXNvdXJjZXNUaW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAg
IHZvaWQgcGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpOworCisgICAgdm9pZCByZWxvYWRJbWFnZXNJ
Zk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJM
czsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsK
QEAgLTE1Myw4ICsxNjAsOSBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8g
MzAgYml0cyBsZWZ0CisgICAgLy8gMjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1h
Z2VzIDogMTsKKyAgICBib29sIG1fYmxvY2tOZXR3b3JrSW1hZ2VzIDogMTsKICAgICBib29sIG1f
YWxsb3dTdGFsZVJlc291cmNlcyA6IDE7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmlu
ZGV4IGU5N2M2NGY3M2RjYjBlMjdhZTQ5NjRkNDc1ZTYyYWI4MjliM2ZjNTQuLmQ3YmZiY2Y0NDRm
ZGZhNmM3Y2FhZDk5Y2Q4MzU3NDgzYWNmYmUwMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3Bw
CkBAIC00NiwxMCArNDYsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZy
YW1lcyhQYWdlKiBwYWdlKQorc3RhdGljIHZvaWQgc2V0bG9hZEltYWdlc1NldHRpbmdzSW5BbGxG
cmFtZXMoUGFnZSogcGFnZSkKIHsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQo
KS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0dGlu
Z3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworCisgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRCbG9ja05ldHdvcmtJbWFnZXMocGFn
ZS0+c2V0dGluZ3MoKS0+YmxvY2tOZXR3b3JrSW1hZ2VzKCkpOworICAgIH0KIH0KIAogLy8gU2V0
cyB0aGUgZW50cnkgaW4gdGhlIGZvbnQgbWFwIGZvciB0aGUgZ2l2ZW4gc2NyaXB0LiBJZiBmYW1p
bHkgaXMgdGhlIGVtcHR5IHN0cmluZywgcmVtb3ZlcyB0aGUgZW50cnkgaW5zdGVhZC4KQEAgLTE1
MSw2ICsxNTQsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNK
YXZhRW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXModHJ1
ZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQorICAgICwgbV9ibG9j
a05ldHdvcmtJbWFnZXMoZmFsc2UpCiAgICAgLCBtX2xvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFn
ZUxvYWRpbmdTZXR0aW5nKGZhbHNlKQogICAgICwgbV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKGZh
bHNlKQogICAgICwgbV9jYXJldEJyb3dzaW5nRW5hYmxlZChmYWxzZSkKQEAgLTI4Niw3ICsyOTAs
NyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fZGlhZ25vc3RpY0xv
Z2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV90aGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5h
YmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChm
YWxzZSkKLSAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIodGhpcywgJlNldHRp
bmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKQorICAgICwgbV9sb2FkSW1h
Z2VzU2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRJbWFnZXNTZXR0aW5nc1RpbWVy
RmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5T
ZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vj
b25kcykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBz
byB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTQ1MiwxMiArNDU2LDE5IEBAIHZv
aWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseSkKICAgICAvLyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5
IGlzIG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkg
Y2xvc2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEg
Y2hhbmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82
MDU3MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fbG9hZEltYWdlc1NldHRpbmdzVGltZXIuc3Rh
cnRPbmVTaG90KDApOworfQorCit2b2lkIFNldHRpbmdzOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMo
Ym9vbCBibG9ja05ldHdvcmtJbWFnZXMpCit7CisgICAgbV9ibG9ja05ldHdvcmtJbWFnZXMgPSBi
bG9ja05ldHdvcmtJbWFnZXM7CisKKyAgICBtX2xvYWRJbWFnZXNTZXR0aW5nc1RpbWVyLnN0YXJ0
T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQordm9pZCBTZXR0aW5nczo6bG9hZEltYWdlc1Nl
dHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0bG9hZEltYWdlc1NldHRp
bmdzSW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRl
SWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAppbmRleCBmZDRkOWE5OTJiNjllZmRjZjRhNGRiZDRlODUwNTQ5ZTI1
YzdjNGFkLi43NWJlMjQ4OGU1MTIyNzBjNDM3OTE0YzdiYjY4YTMwZTNhMWI1MjNmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCkBAIC0xMjQsNiArMTI0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sKTsKICAgICAgICAg
Ym9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzSW1h
Z2VzQXV0b21hdGljYWxseTsgfQogCisgICAgICAgIHZvaWQgc2V0QmxvY2tOZXR3b3JrSW1hZ2Vz
KGJvb2wpOworICAgICAgICBib29sIGJsb2NrTmV0d29ya0ltYWdlcygpIGNvbnN0IHsgcmV0dXJu
IG1fYmxvY2tOZXR3b3JrSW1hZ2VzOyB9CisKICAgICAgICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkg
YWZmZWN0cyBzaXRlIGljb24gaW1hZ2UgbG9hZGluZyBpZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkgc2V0dGluZyBpcyBmYWxzZSBhbmQgdGhpcyBzZXR0aW5nIGlzIHRydWUuCiAgICAgICAgIC8v
IEFsbCBvdGhlciBwZXJtdXRhdGlvbnMgc3RpbGwgaGVlZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkgc2V0dGluZy4KICAgICAgICAgdm9pZCBzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VM
b2FkaW5nU2V0dGluZyhib29sKTsKQEAgLTY2MSw2ICs2NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2lz
SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseSA6IDE7CisgICAgICAgIGJvb2wgbV9ibG9ja05ldHdvcmtJbWFnZXMgOiAx
OwogICAgICAgICBib29sIG1fbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRp
bmcgOiAxOwogICAgICAgICBib29sIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCA6IDE7CiAgICAg
ICAgIGJvb2wgbV9jYXJldEJyb3dzaW5nRW5hYmxlZCA6IDE7CkBAIC03OTksOCArODAzLDggQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5j
ZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOworICAgICAgICBUaW1lcjxTZXR0aW5n
cz4gbV9sb2FkSW1hZ2VzU2V0dGluZ3NUaW1lcjsKKyAgICAgICAgdm9pZCBsb2FkSW1hZ2VzU2V0
dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOwogICAgICAgICAKICAgICAgICAgZG91
YmxlIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHM7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGY0N2Zm
OWY3YzNkYmQzYWQ4OTAxNGU0NmU2MGEyMWNiOWNlMWFmODMuLjU0NzdkZjM0ZGE4MzUxYWZkN2Y5
Y2I3ZDU1MjFkYzM3M2U2ZjVmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SmF2YVNjcmlwdEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRM
YXlvdXRGYWxsYmFja1dpZHRoKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbG9ja05l
dHdvcmtJbWFnZXMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6
ZShXZWJTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJl
c1VzZXJHZXN0dXJlKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDUwMjZlZTk0YjlmZGUyMDU2OGIwYmE4NTMyM2YxNTdl
YWY0ZGM5Y2QuLjU5Zjk1ZGM2MjIzNTU3NGNhMjNkYWIzNDgzODQzZmU2OWMwZGI3MmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtMTgz
LDYgKzE4MywxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQogICAgIG1fc2V0dGluZ3MtPnNl
dExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOwogfQog
Cit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wgYmxvY2tO
ZXR3b3JrSW1hZ2VzKQoreworICAgIG1fc2V0dGluZ3MtPnNldEJsb2NrTmV0d29ya0ltYWdlcyhi
bG9ja05ldHdvcmtJbWFnZXMpOworfQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SW1hZ2Vz
RW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxl
ZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmgKaW5kZXggNmNlZTJhZjIzZWRiNWEyMWUxMTZmMzE0NmE5NjQ2ZmQyZGY2Mjg4Yi4uYjBiZGVh
OTQzMWUxMDkwN2NhOGRiODMyZDA5MTZjZTlkYzgyZDlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHNldEphdmFTY3JpcHRFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRMYXlvdXRGYWxsYmFja1dpZHRoKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNl
dExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0Qmxv
Y2tOZXR3b3JrSW1hZ2VzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0b3JhZ2VF
bmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKFdl
YlNpemUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2Vz
dHVyZShib29sKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161596</attachid>
            <date>2012-08-30 17:32:37 -0700</date>
            <delta_ts>2012-08-31 17:14:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-95478-20120830173225.patch</filename>
            <type>text/plain</type>
            <size>20853</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjEwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDYxNTcyNmY5NTgxOTRh
YTA2OWM4MGNlYzQwNGI4NjQ4NjQzYjEwOS4uY2U3NjU2YTFjMDQxZTAzYmU1YzE5MjI1ZDE5MGU5
N2Q2ZjZjNjdjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTmV0d29ya0ltYWdlcyBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5n
ZSBzdWNoIGFzIGFwcHJvYWNoLCByYXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRl
c2NyaXB0aW9ucyBiZWxvdyAoT09QUyEpLgorCisgICAgICAgIEJsb2NrTmV0d29ya0ltYWdlcyBp
cyBzaW1pbGFyIHRvIEF1dG9Mb2FkSW1hZ2VzLiBCbG9ja05ldHdvcmtJbWFnZXMKKyAgICAgICAg
cGVyZm9ybXMgdGhlIGFkZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9u
LWxvY2FsIHVybAorICAgICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLgorCisgICAgICAgIEJs
b2NrTmV0d29ya0ltYWdlcyBhbmQgQXV0b0xvYWRJbWFnZXMgYmVoYXZlIGFzIGFuIEFORCBjb25k
aXRpb24gb24KKyAgICAgICAgd2hldGhlciB0byBsb2FkIGFuIGltYWdlLiBBbiBpbWFnZSBpcyBs
b2FkZWQgaWY6CisgICAgICAgIEF1dG9Mb2FkSW1hZ2VzICYmICghQmxvY2tOZXR3b3JrSW1hZ2Vz
IHx8IHNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCkKKworICAgICAgICBUaGlzIGlzIHVzZWQg
aW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIEFuZHJvaWQgV2ViVmlldworICAgICAgICBXZWJTZXR0
aW5ncy5zZXRCbG9ja05ldHdvcmtJbWFnZSBvbiB0b3Agb2YgYSBmdWxsIENocm9taXVtIHN0YWNr
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRv
Y3VtZW50KToKKyAgICAgICAgQWxzbyBzZXQgQmxvY2tOZXR3b3JrSW1hZ2VzIHZhbHVlIGZyb20g
c2V0dGluZ3MuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICBNb2RpZmllZCB0byBj
aGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSBsb2FkLgorCisgICAgICAgICogbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIEluaXRpYWxpemUgbmV3
IHByaXZhdGUgdmFyaWFibGUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAgICBDaGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSBy
ZXF1ZXN0LgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0
b0xvYWRJbWFnZXMpOgorICAgICAgICBSZWZhY3RvciBvdXQgZHVwbGljYXRlZCBjb2RlIHdpdGgg
c2V0QmxvY2tOZXR3b3JrSW1hZ2VzLgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMpOgorICAg
ICAgICBNaXJyb3JzIHNldEF1dG9Mb2FkSW1hZ2VzLiBXaWxsIHJlbG9hZCBpbWFnZXMgdGhhdCBh
cmUgbm8gbG9uZ2VyCisgICAgICAgIGJsb2NrZWQgYnkgc2V0dGluZy4KKworICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKToKKyAgICAg
ICAgQ29tYmluZWQgdGhlIGNoZWNrIGZvciBib3RoIHNldHRpbmdzIHVzaW5nIHRoZSBjb25kaXRp
b24gZGVzY3JpYmVkCisgICAgICAgIGFib3ZlLgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCk6CisgICAgICAgIFJlZmFj
dG9yZWQgb3V0IHByaXZhdGUgbWV0aG9kIHRvIHJlbG9hZCBpbWFnZXMgdGhhdCBpcyBubyBsb25n
ZXIKKyAgICAgICAgYmxvY2tlZC4gQ2FsbGVkIGluIHNldEF1dG9Mb2FkSW1hZ2VzIGFuZCBzZXRC
bG9ja05ldHdvcmtJbWFnZXMuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpibG9ja05ldHdvcmtJbWFnZXMpOgorICAgICAg
ICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0bG9hZEltYWdlc1Nl
dHRpbmdzSW5BbGxGcmFtZXMpOgorICAgICAgICBSZW5hbWVkIGFuZCBtb2RpZmllZCB0byBzZXQg
Ym90aCBzZXR0aW5ncyBpbiBhbGwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXJzLgorCisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6
U2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk6CisgICAgICAgIChXZWJDb3Jl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmxvYWRJbWFnZXNTZXR0aW5nc1RpbWVyRmlyZWQp
OgorICAgICAgICBSZW5hbWVkIHRvIHJlZmxlY3Qgc2V0dGluZyBib3RoIHZhcmlhYmxlcy4KKwor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNldHRpbmdzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpibG9ja05ldHdvcmtJbWFnZXMpOgorCiAyMDEyLTA4LTMwICBK
dWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIENyYXNo
IGluIFJlbmRlclRhYmxlOjpjYWxjQm9yZGVyRW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IGY1OTc1OGJlNDE1YTY0ODIxZGM5M2Y3OGI4MjdhN2FjMjUzYmQ2ZWYuLmQzZTAyY2MzMTQz
MGM5NTkwYjU4NTBhODI1ODZhZjExOWYxMGFmOWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMzAgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBBZGQgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgQmxvY2tOZXR3b3JrSW1hZ2Vz
IHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTk1NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIHRoZSBuZXcgQmxvY2tOZXR3b3JrSW1hZ2VzIHNldHRpbmcgdG8gV2ViU2V0dGluZ3MuCisK
KyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRCbG9ja05l
dHdvcmtJbWFnZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA4LTMwICBKYW1l
cyBSb2JpbnNvbiAgPGphbWVzckBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBN
YWtlIHdlYmtpdF9jb21wb3NpdG9yIHNwZWNpZmljIHVuaXQgdGVzdCBjb21waWxhdGlvbiBjb25k
aXRpb25hbCBvbiBneXAgdmFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRl
eCBjMjQyYmY3MzZlMjY5N2FlM2M0ZTE1OTAyZjhmYmEwY2ZjMWU1YzFiLi5iNzVmNThkMjYxMGJi
MzU4MWMzOWM4NjY0NmRmOGQ2MmZkZGU5YjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRCZWdpbkRv
Y3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzICYmIHNldHRpbmdz
LT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QmxvY2tOZXR3b3JrSW1hZ2VzKHNldHRpbmdzID8g
c2V0dGluZ3MtPmJsb2NrTmV0d29ya0ltYWdlcygpIDogZmFsc2UpOwogCiAgICAgaWYgKG1fZG9j
dW1lbnRMb2FkZXIpIHsKICAgICAgICAgU3RyaW5nIGRuc1ByZWZldGNoQ29udHJvbCA9IG1fZG9j
dW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJYLUROUy1QcmVmZXRjaC1D
b250cm9sIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApp
bmRleCBiZTRjZWE1Y2YyMjI4YTVmZDk2YjQ4M2QzMWQ0ZjI3OWJhMzM2ZDE1Li5jNjIzMjA4MDQx
MDY2MTc2MDdiOWNiZjMwNzRhZDg0YWNhNmM0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgQ2FjaGVkSW1hZ2U6On5D
YWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9w
dGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCBjYWNoZWRSZXNvdXJj
ZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVy
IHx8ICFjYWNoZWRSZXNvdXJjZUxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobV9yZXNvdXJj
ZVJlcXVlc3QudXJsKCkpKQogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChjYWNoZWRSZXNv
dXJjZUxvYWRlciwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBzZXRMb2FkaW5nKGZhbHNl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IGIyNThjMDU3ZmYzYWYxMTE5NTgwZGUxYWY2MDg0MDUzMmY2YTBhNzUu
LjgwYjhhZTUwNzI1N2Y0NmFjN2ExZmJkMTU3MDBhZTE5MjM0ZDhkNDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAt
NDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGluZ0xv
YWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYgKzExNiw3
IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCog
ZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVlc3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJi
YWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJ
bWFnZXModHJ1ZSkKKyAgICAsIG1fYmxvY2tOZXR3b3JrSW1hZ2VzKGZhbHNlKQogICAgICwgbV9h
bGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNlKQogewogfQpAQCAtMTYwLDcgKzE2Miw3IEBAIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVz
dEltYWdlKFJlc291cmNlUmVxCiAgICAgICAgIH0KICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVx
dWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJp
bmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChh
dXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgp
KQorICAgIGlmICghc2hvdWxkRGVmZXJJbWFnZUxvYWQocmVxdWVzdC51cmwoKSkgJiYgcmVzb3Vy
Y2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCiAgICAgICAgIHJlc291cmNlLT5sb2Fk
KHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291
cmNlOwogfQpAQCAtNjI5LDEzICs2MzEsNDIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFibGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2Vz
KQogICAgICAgICByZXR1cm47CiAKKyAgICByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9
CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEJsb2NrTmV0d29ya0ltYWdlcyhib29s
IGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxlID09IG1fYmxvY2tOZXR3b3JrSW1hZ2VzKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2Jsb2NrTmV0d29ya0ltYWdlcyA9IGVuYWJsZTsKKworICAg
IGlmIChtX2Jsb2NrTmV0d29ya0ltYWdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVsb2Fk
SW1hZ2VzSWZOb3REZWZlcnJlZCgpOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpz
aG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKCFt
X2F1dG9Mb2FkSW1hZ2VzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX2Jsb2Nr
TmV0d29ya0ltYWdlcyAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNM
b2NhbCh1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJu
IGZhbHNlOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5v
dERlZmVycmVkKCkKK3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBt
X2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6
aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgp
OwogICAgICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VS
ZXNvdXJjZSkgewogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxD
YWNoZWRJbWFnZSo+KHN0YXRpY19jYXN0PGNvbnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsK
IAotICAgICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgICAgICAgICAg
aWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpICYmICFzaG91bGREZWZlckltYWdlTG9hZChpbWFn
ZS0+dXJsKCkpKQogICAgICAgICAgICAgICAgIGltYWdlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNo
ZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IDNmMWMyMzNi
MDA4ZGY4NDAxYThjMWFiYTExODE3NWRhN2Q4MGZiNWUuLjcyZTNkYWY4NDI0NjNmMjE3ODZmOGQ4
NzVkMzU3MGViMDkwN2EzMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC05OCw2ICs5OCwxMSBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvTG9hZEltYWdlczsg
fQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisKKyAgICBib29sIGJsb2NrTmV0
d29ya0ltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tOZXR3b3JrSW1hZ2VzOyB9CisgICAg
dm9pZCBzZXRCbG9ja05ldHdvcmtJbWFnZXMoYm9vbCk7CisKKyAgICBib29sIHNob3VsZERlZmVy
SW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAKICAgICBDYWNoZVBvbGljeSBjYWNo
ZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAtMTM2LDYgKzE0MSw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKFRpbWVyPENh
Y2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQgcGVyZm9ybVBvc3RMb2FkQWN0aW9ucygp
OworCisgICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFz
aFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3Vy
Y2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsKQEAgLTE1Myw4ICsxNjAsOSBAQCBwcml2YXRlOgog
CiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVu
dFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0CisgICAgLy8gMjkgYml0cyBs
ZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBib29sIG1fYmxvY2tOZXR3
b3JrSW1hZ2VzIDogMTsKICAgICBib29sIG1fYWxsb3dTdGFsZVJlc291cmNlcyA6IDE7CiB9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGU5N2M2NGY3M2RjYjBlMjdhZTQ5NjRkNDc1
ZTYyYWI4MjliM2ZjNTQuLmQ3YmZiY2Y0NDRmZGZhNmM3Y2FhZDk5Y2Q4MzU3NDgzYWNmYmUwMTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00NiwxMCArNDYsMTMgQEAgdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBzZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQorc3RhdGljIHZvaWQg
c2V0bG9hZEltYWdlc1NldHRpbmdzSW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKIHsKLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkg
ewogICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0
QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KCkpOworCisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigp
LT5zZXRCbG9ja05ldHdvcmtJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS0+YmxvY2tOZXR3b3JrSW1h
Z2VzKCkpOworICAgIH0KIH0KIAogLy8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZvbnQgbWFwIGZv
ciB0aGUgZ2l2ZW4gc2NyaXB0LiBJZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmluZywgcmVtb3Zl
cyB0aGUgZW50cnkgaW5zdGVhZC4KQEAgLTE1MSw2ICsxNTQsNyBAQCBTZXR0aW5nczo6U2V0dGlu
Z3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZChmYWxzZSkKICAgICAsIG1faXNK
YXZhRW5hYmxlZEZvckxvY2FsRmlsZXModHJ1ZSkKICAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KGZhbHNlKQorICAgICwgbV9ibG9ja05ldHdvcmtJbWFnZXMoZmFsc2UpCiAgICAgLCBt
X2xvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKGZhbHNlKQogICAgICwg
bV9wcml2YXRlQnJvd3NpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9jYXJldEJyb3dzaW5nRW5h
YmxlZChmYWxzZSkKQEAgLTI4Niw3ICsyOTAsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSog
cGFnZSkKICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV90
aGlyZFBhcnR5U3RvcmFnZUJsb2NraW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5n
UGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZChmYWxzZSkKLSAgICAsIG1fbG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5VGltZXIodGhpcywgJlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlU
aW1lckZpcmVkKQorICAgICwgbV9sb2FkSW1hZ2VzU2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGlu
Z3M6OmxvYWRJbWFnZXNTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVu
ZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRl
cmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBu
b3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJp
bmcKQEAgLTQ1MiwxMiArNDU2LDE5IEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAvLyBTdGFydGlu
ZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5n
IGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0K
ICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAv
LyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAg
IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1f
bG9hZEltYWdlc1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFNldHRp
bmdzOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMoYm9vbCBibG9ja05ldHdvcmtJbWFnZXMpCit7Cisg
ICAgbV9ibG9ja05ldHdvcmtJbWFnZXMgPSBibG9ja05ldHdvcmtJbWFnZXM7CisKKyAgICBtX2xv
YWRJbWFnZXNTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0aW5n
czo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQor
dm9pZCBTZXR0aW5nczo6bG9hZEltYWdlc1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5n
cz4qKQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFn
ZSk7CisgICAgc2V0bG9hZEltYWdlc1NldHRpbmdzSW5BbGxGcmFtZXMobV9wYWdlKTsKIH0KIAog
dm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRp
bmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBmZDRkOWE5
OTJiNjllZmRjZjRhNGRiZDRlODUwNTQ5ZTI1YzdjNGFkLi43NWJlMjQ4OGU1MTIyNzBjNDM3OTE0
YzdiYjY4YTMwZTNhMWI1MjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xMjQsNiArMTI0
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldExvYWRzSW1hZ2VzQXV0
b21hdGljYWxseShib29sKTsKICAgICAgICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
KSBjb25zdCB7IHJldHVybiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsgfQogCisgICAgICAg
IHZvaWQgc2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wpOworICAgICAgICBib29sIGJsb2NrTmV0
d29ya0ltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tOZXR3b3JrSW1hZ2VzOyB9CisKICAg
ICAgICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkgYWZmZWN0cyBzaXRlIGljb24gaW1hZ2UgbG9hZGlu
ZyBpZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0dGluZyBpcyBmYWxzZSBhbmQgdGhpcyBz
ZXR0aW5nIGlzIHRydWUuCiAgICAgICAgIC8vIEFsbCBvdGhlciBwZXJtdXRhdGlvbnMgc3RpbGwg
aGVlZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0dGluZy4KICAgICAgICAgdm9pZCBzZXRM
b2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhib29sKTsKQEAgLTY2MSw2
ICs2NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0phdmFFbmFi
bGVkIDogMTsKICAgICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsK
ICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7CisgICAgICAgIGJv
b2wgbV9ibG9ja05ldHdvcmtJbWFnZXMgOiAxOwogICAgICAgICBib29sIG1fbG9hZHNTaXRlSWNv
bnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcgOiAxOwogICAgICAgICBib29sIG1fcHJpdmF0
ZUJyb3dzaW5nRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9jYXJldEJyb3dzaW5nRW5hYmxl
ZCA6IDE7CkBAIC03OTksOCArODAzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAg
ICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAg
ICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdz
PiopOworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2FkSW1hZ2VzU2V0dGluZ3NUaW1lcjsK
KyAgICAgICAgdm9pZCBsb2FkSW1hZ2VzU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdz
PiopOwogICAgICAgICAKICAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBw
cmVzc2lvblRpbWVvdXRJblNlY29uZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRl
eCA2MDMwMmYxNGE4NGFkMmJkMWQ1YmVlNjdiZGRhZjQxODJjYjI3ZTlmLi4zNTZkYmJiNTVkMWZh
OWIwMjY2Zjc2MzRkOGYyOTRlYTM1ZDA0YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lw
CkBAIC03MDgsNiArNzA4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBU
aGVzZSB0ZXN0cyBkZXBlbmQgb24gd2Via2l0X3N1cHBvcnQgYW5kCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgZnVuY3Rpb25zIGRlZmluZWQgb25seSBpbiAhV0VCS0lUX0lNUExF
TUVOVEFUSU9OLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvQXNzb2Np
YXRlZFVSTExvYWRlclRlc3QuY3BwJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3Rlc3RzL0RlZmVyTG9hZEltYWdlVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvRXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ3Rlc3RzL0ZyYW1lVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0xldmVsREJUZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQppbmRleCBjMTEwMGNlOGZlYWMzYjhiZjVlMmQ3MzBjMzNkMWViY2Zm
YWJiNmMwLi5hM2Q2M2ZmOWZkMTU4ZmUwNTgyYzdkNjkxZDZiZDVmMzBkNzRhOTM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTYxLDYgKzYxLDcgQEAKICAgICAgICAgICAgICd0
ZXN0cy9Db250ZW50TGF5ZXJDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9E
YXRlVGltZUZvcm1hdFRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9EZWNpbWFsVGVzdC5j
cHAnLAorICAgICAgICAgICAgJ3Rlc3RzL0RlZmVyTG9hZEltYWdlVGVzdC5jcHAnLAogICAgICAg
ICAgICAgJ3Rlc3RzL0RyYWdJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9FdmVu
dExpc3RlbmVyVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3Bw
JywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdz
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGY0
N2ZmOWY3YzNkYmQzYWQ4OTAxNGU0NmU2MGEyMWNiOWNlMWFmODMuLjU0NzdkZjM0ZGE4MzUxYWZk
N2Y5Y2I3ZDU1MjFkYzM3M2U2ZjVmNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SmF2YVNjcmlwdEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRMYXlvdXRGYWxsYmFja1dpZHRoKGludCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2Fk
c0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRCbG9j
a05ldHdvcmtJbWFnZXMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVy
U2l6ZShXZWJTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1
aXJlc1VzZXJHZXN0dXJlKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDUwMjZlZTk0YjlmZGUyMDU2OGIwYmE4NTMyM2Yx
NTdlYWY0ZGM5Y2QuLjU5Zjk1ZGM2MjIzNTU3NGNhMjNkYWIzNDgzODQzZmU2OWMwZGI3MmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAt
MTgzLDYgKzE4MywxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQogICAgIG1fc2V0dGluZ3Mt
PnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOwog
fQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wgYmxv
Y2tOZXR3b3JrSW1hZ2VzKQoreworICAgIG1fc2V0dGluZ3MtPnNldEJsb2NrTmV0d29ya0ltYWdl
cyhibG9ja05ldHdvcmtJbWFnZXMpOworfQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SW1h
Z2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0SW1hZ2VzRW5h
YmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKaW5kZXggNmNlZTJhZjIzZWRiNWEyMWUxMTZmMzE0NmE5NjQ2ZmQyZGY2Mjg4Yi4uYjBi
ZGVhOTQzMWUxMDkwN2NhOGRiODMyZDA5MTZjZTlkYzgyZDlkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEphdmFTY3JpcHRFbmFibGVkKGJvb2wpOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRMYXlvdXRGYWxsYmFja1dpZHRoKGludCk7CiAgICAgdmlydHVhbCB2b2lk
IHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0b3Jh
Z2VFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJTaXpl
KFdlYlNpemUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2Vy
R2VzdHVyZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
RGVmZXJMb2FkSW1hZ2VUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRGVm
ZXJMb2FkSW1hZ2VUZXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MGE5N2U0NTQzNDFkODBhNDUwY2I3ZjVh
MGFlMTZiMjZmMmEwZDljCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9EZWZlckxvYWRJbWFnZVRlc3QuY3BwCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDYWNoZWRSZXNvdXJjZUxvYWRlci5oIgor
I2luY2x1ZGUgIktVUkwuaCIKKworI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCituYW1lc3BhY2UgeworCitjbGFzcyBEZWZlckxvYWRJbWFnZVRlc3QgOiBw
dWJsaWMgOjp0ZXN0aW5nOjpUZXN0IHsKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKQorICAgIHsK
KyAgICAgICAgbG9hZGVyID0gbmV3IFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyKDApOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpCisgICAgeworICAgICAgICBkZWxl
dGUgbG9hZGVyOworICAgIH0KKworcHVibGljOgorICAgIHN0YXRpYyBXZWJDb3JlOjpLVVJMIG5l
dHdvcmtVcmwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OktVUkwoV2ViQ29yZTo6
S1VSTCgpLCAiaHR0cDovL2Zvby5jb20iKTsKKyAgICB9CisKKyAgICBzdGF0aWMgV2ViQ29yZTo6
S1VSTCBsb2NhbFVybCgpCisgICAgeworICAgICAgICByZXR1cm4gV2ViQ29yZTo6S1VSTChXZWJD
b3JlOjpLVVJMKCksICJmaWxlOi8vYmFyIik7CisgICAgfQorcHJvdGVjdGVkOgorICAgIFdlYkNv
cmU6OkNhY2hlZFJlc291cmNlTG9hZGVyKiBsb2FkZXI7Cit9OworCitURVNUX0YoRGVmZXJMb2Fk
SW1hZ2VUZXN0LCBEZWZlck5vdGhpbmcpCit7CisgICAgbG9hZGVyLT5zZXRBdXRvTG9hZEltYWdl
cyh0cnVlKTsKKyAgICBsb2FkZXItPnNldEJsb2NrTmV0d29ya0ltYWdlcyhmYWxzZSk7CisKKyAg
ICBFWFBFQ1RfRkFMU0UobG9hZGVyLT5zaG91bGREZWZlckltYWdlTG9hZChuZXR3b3JrVXJsKCkp
KTsKKyAgICBFWFBFQ1RfRkFMU0UobG9hZGVyLT5zaG91bGREZWZlckltYWdlTG9hZChsb2NhbFVy
bCgpKSk7Cit9CisKK1RFU1RfRihEZWZlckxvYWRJbWFnZVRlc3QsIERlZmVyTmV0d29ya0xvYWQp
Cit7CisgICAgbG9hZGVyLT5zZXRBdXRvTG9hZEltYWdlcyh0cnVlKTsKKyAgICBsb2FkZXItPnNl
dEJsb2NrTmV0d29ya0ltYWdlcyh0cnVlKTsKKworICAgIEVYUEVDVF9UUlVFKGxvYWRlci0+c2hv
dWxkRGVmZXJJbWFnZUxvYWQobmV0d29ya1VybCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxvYWRl
ci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobG9jYWxVcmwoKSkpOworfQorCitURVNUX0YoRGVmZXJM
b2FkSW1hZ2VUZXN0LCBEZWZlckFsbCkKK3sKKyAgICBsb2FkZXItPnNldEF1dG9Mb2FkSW1hZ2Vz
KGZhbHNlKTsKKyAgICBsb2FkZXItPnNldEJsb2NrTmV0d29ya0ltYWdlcyh0cnVlKTsKKworICAg
IEVYUEVDVF9UUlVFKGxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobmV0d29ya1VybCgpKSk7
CisgICAgRVhQRUNUX1RSVUUobG9hZGVyLT5zaG91bGREZWZlckltYWdlTG9hZChsb2NhbFVybCgp
KSk7CisKKyAgICBsb2FkZXItPnNldEJsb2NrTmV0d29ya0ltYWdlcyhmYWxzZSk7CisKKyAgICBF
WFBFQ1RfVFJVRShsb2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKG5ldHdvcmtVcmwoKSkpOwor
ICAgIEVYUEVDVF9UUlVFKGxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobG9jYWxVcmwoKSkp
OworfQorCit9IC8vIG5hbWVzcGFjZQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>161794</attachid>
            <date>2012-08-31 17:14:54 -0700</date>
            <delta_ts>2012-09-04 08:31:55 -0700</delta_ts>
            <desc>Added layout tests. Changed timer name in WebCore::Settings. Added description about documents. Have not renamed the setting yet</desc>
            <filename>bug-95478-20120831171441.patch</filename>
            <type>text/plain</type>
            <size>36138</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3MjcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVlOTZiMWJmMmQwNDlh
MDNhNzY1YjljMTEzY2YxOWE5NzBlNjIwNi4uNjk3MGRjZmZkNGUyMWI5OGEyYWYyNzhlOGQ1ZGFj
YzU1ODg4Yjk4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTmV0d29ya0ltYWdlcyBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEJsb2NrTmV0d29ya0ltYWdlcyBpcyBzaW1pbGFyIHRvIEF1
dG9Mb2FkSW1hZ2VzLiBCbG9ja05ldHdvcmtJbWFnZXMKKyAgICAgICAgcGVyZm9ybXMgdGhlIGFk
ZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9uLWxvY2FsIHVybAorICAg
ICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLiBUaGVyZWZvcmUgaXQgc2hvdWxkIG9ubHkgYWZm
ZWN0IGxvY2FsCisgICAgICAgIGRvY3VtZW50cyBzaW5jZSBub24tbG9jYWwgZG9jdW1lbnRzIGNh
bm5vdCBhY2Nlc3MgbG9jYWwgcmVzb3VyY2VzIGR1ZQorICAgICAgICB0byBzZWN1cml0eSBwb2xp
Y3kuCisKKyAgICAgICAgQmxvY2tOZXR3b3JrSW1hZ2VzIGFuZCBBdXRvTG9hZEltYWdlcyBiZWhh
dmUgYXMgYW4gQU5EIGNvbmRpdGlvbiBvbgorICAgICAgICB3aGV0aGVyIHRvIGxvYWQgYW4gaW1h
Z2UuIEFuIGltYWdlIGlzIGxvYWRlZCBpZjoKKyAgICAgICAgQXV0b0xvYWRJbWFnZXMgJiYgKCFC
bG9ja05ldHdvcmtJbWFnZXMgfHwgc2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKQorCisgICAg
ICAgIFRoaXMgaXMgdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgQW5kcm9pZCBXZWJWaWV3
CisgICAgICAgIFdlYlNldHRpbmdzLnNldEJsb2NrTmV0d29ya0ltYWdlIG9uIHRvcCBvZiBhIGZ1
bGwgQ2hyb21pdW0gc3RhY2suCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICBBbHNvIHNldCBCbG9ja05ldHdvcmtJ
bWFnZXMgdmFsdWUgZnJvbSBzZXR0aW5ncy4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNo
ZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRJbWFnZTo6bG9hZCk6CisgICAg
ICAgIE1vZGlmaWVkIHRvIGNoZWNrIGJvdGggc2V0dGluZ3MgYmVmb3JlIGxvYWQuCisKKyAgICAg
ICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAg
ICAgSW5pdGlhbGl6ZSBuZXcgcHJpdmF0ZSB2YXJpYWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJbWFnZSk6CisgICAgICAgIENoZWNrIGJvdGgg
c2V0dGluZ3MgYmVmb3JlIHJlcXVlc3QuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIFJlZmFjdG9yIG91dCBkdXBs
aWNhdGVkIGNvZGUgd2l0aCBzZXRCbG9ja05ldHdvcmtJbWFnZXMuCisKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEJsb2NrTmV0
d29ya0ltYWdlcyk6CisgICAgICAgIE1pcnJvcnMgc2V0QXV0b0xvYWRJbWFnZXMuIFdpbGwgcmVs
b2FkIGltYWdlcyB0aGF0IGFyZSBubyBsb25nZXIKKyAgICAgICAgYmxvY2tlZCBieSBzZXR0aW5n
LgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJ
bWFnZUxvYWQpOgorICAgICAgICBDb21iaW5lZCB0aGUgY2hlY2sgZm9yIGJvdGggc2V0dGluZ3Mg
dXNpbmcgdGhlIGNvbmRpdGlvbiBkZXNjcmliZWQKKyAgICAgICAgYWJvdmUuCisKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVk
KToKKyAgICAgICAgUmVmYWN0b3JlZCBvdXQgcHJpdmF0ZSBtZXRob2QgdG8gcmVsb2FkIGltYWdl
cyB0aGF0IGlzIG5vIGxvbmdlcgorICAgICAgICBibG9ja2VkLiBDYWxsZWQgaW4gc2V0QXV0b0xv
YWRJbWFnZXMgYW5kIHNldEJsb2NrTmV0d29ya0ltYWdlcy4KKworICAgICAgICAqIGxvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmJsb2NrTmV0d29y
a0ltYWdlcyk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpzZXRsb2FkSW1hZ2VzU2V0dGluZ3NJbkFsbEZyYW1lcyk6CisgICAgICAgIFJlbmFtZWQgYW5k
IG1vZGlmaWVkIHRvIHNldCBib3RoIHNldHRpbmdzIGluIGFsbAorICAgICAgICBDYWNoZWRSZXNv
dXJjZUxvYWRlcnMuCisKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEJsb2Nr
TmV0d29ya0ltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6bG9hZEltYWdlc1Nl
dHRpbmdzVGltZXJGaXJlZCk6CisgICAgICAgIFJlbmFtZWQgdG8gcmVmbGVjdCBzZXR0aW5nIGJv
dGggdmFyaWFibGVzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOgorICAgICAgICAoU2V0
dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmJsb2NrTmV0d29ya0ltYWdlcyk6
CisKIDIwMTItMDgtMzEgIERhdmlkIEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAg
IFtOZXcgTXVsdGljb2x1bW5dIE1ha2UgUmVuZGVyRmxvd1RocmVhZHMgaW50byBzZWxlY3Rpb24g
cm9vdHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDZkMjA0NTdhZGIxZmM0YTA0MThj
NDY4OGJlNWUyMGVmZGExZmM2NGUuLjVhYjE4YmE0MzU3YzcxODZhZmQwYWE1OTFkZWYxYTU3Nzdj
ZjQ1MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTIt
MDgtMzAgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgQ2FjaGVk
UmVzb3VyY2VMb2FkZXIgQmxvY2tOZXR3b3JrSW1hZ2VzIHNldHRpbmcKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRoZSBuZXcgQmxvY2tOZXR3b3Jr
SW1hZ2VzIHNldHRpbmcgdG8gV2ViU2V0dGluZ3MuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0
dGluZ3MuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRCbG9ja05ldHdvcmtJbWFnZXMpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJT
ZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA4LTMxICBHYXZpbiBQZXRlcnMgIDxnYXZpbnBAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRGlzYWJsZSBXZWJWaWV3VGVzdC5BdXRvUmVz
aXplTWluaW11bVNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGMy
NDJiZjczNmUyNjk3YWUzYzRlMTU5MDJmOGZiYTBjZmMxZTVjMWIuLmI3NWY1OGQyNjEwYmIzNTgx
YzM5Yzg2NjQ2ZGY4ZDYyZmRkZTliNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtNjQ3LDYgKzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1l
bnQoYm9vbCBkaXNwYXRjaCkKIAogICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnNldHRpbmdzKCk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmxv
YWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYWNo
ZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRCbG9ja05ldHdvcmtJbWFnZXMoc2V0dGluZ3MgPyBzZXR0
aW5ncy0+YmxvY2tOZXR3b3JrSW1hZ2VzKCkgOiBmYWxzZSk7CiAKICAgICBpZiAobV9kb2N1bWVu
dExvYWRlcikgewogICAgICAgICBTdHJpbmcgZG5zUHJlZmV0Y2hDb250cm9sID0gbV9kb2N1bWVu
dExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIlgtRE5TLVByZWZldGNoLUNvbnRy
b2wiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4
IGJlNGNlYTVjZjIyMjhhNWZkOTZiNDgzZDMxZDRmMjc5YmEzMzZkMTUuLmM2MjMyMDgwNDEwNjYx
NzYwN2I5Y2JmMzA3NGFkODRhY2E2YzQ2ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNzksNyArNzksNyBAQCBDYWNoZWRJbWFnZTo6fkNhY2hl
ZEltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciog
Y2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9u
cykKIHsKLSAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJlc291cmNlTG9h
ZGVyLT5hdXRvTG9hZEltYWdlcygpKQorICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIgfHwg
IWNhY2hlZFJlc291cmNlTG9hZGVyLT5zaG91bGREZWZlckltYWdlTG9hZChtX3Jlc291cmNlUmVx
dWVzdC51cmwoKSkpCiAgICAgICAgIENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291cmNl
TG9hZGVyLCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAKaW5kZXggYjI1OGMwNTdmZjNhZjExMTk1ODBkZTFhZjYwODQwNTMyZjZhMGE3NS4uODBi
OGFlNTA3MjU3ZjQ2YWM3YTFmYmQxNTcwMGFlMTkyMzRkOGQ0NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Niw2
ICs0Niw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVy
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2NoZW1l
UmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBhcmFtLmg+CkBAIC0xMTUsNiArMTE2LDcgQEAg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50KiBkb2N1
bWVudCkKICAgICAsIG1fcmVxdWVzdENvdW50KDApCiAgICAgLCBtX2dhcmJhZ2VDb2xsZWN0RG9j
dW1lbnRSZXNvdXJjZXNUaW1lcih0aGlzLCAmQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VD
b2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZpcmVkKQogICAgICwgbV9hdXRvTG9hZEltYWdl
cyh0cnVlKQorICAgICwgbV9ibG9ja05ldHdvcmtJbWFnZXMoZmFsc2UpCiAgICAgLCBtX2FsbG93
U3RhbGVSZXNvdXJjZXMoZmFsc2UpCiB7CiB9CkBAIC0xNjAsNyArMTYyLDcgQEAgQ2FjaGVkUmVz
b3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1h
Z2UoUmVzb3VyY2VSZXEKICAgICAgICAgfQogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRJbWFnZT4gcmVzb3VyY2Uoc3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0
UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygp
LCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdldCgpKSk7Ci0gICAgaWYgKGF1dG9M
b2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCisg
ICAgaWYgKCFzaG91bGREZWZlckltYWdlTG9hZChyZXF1ZXN0LnVybCgpKSAmJiByZXNvdXJjZSAm
JiByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQoKSkKICAgICAgICAgcmVzb3VyY2UtPmxvYWQodGhp
cywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICByZXR1cm4gcmVzb3VyY2U7
CiB9CkBAIC02MjksMTMgKzYzMSw0MiBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRB
dXRvTG9hZEltYWdlcyhib29sIGVuYWJsZSkKICAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKwor
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wgZW5h
YmxlKQoreworICAgIGlmIChlbmFibGUgPT0gbV9ibG9ja05ldHdvcmtJbWFnZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fYmxvY2tOZXR3b3JrSW1hZ2VzID0gZW5hYmxlOworCisgICAgaWYg
KG1fYmxvY2tOZXR3b3JrSW1hZ2VzKQorICAgICAgICByZXR1cm47CisKKyAgICByZWxvYWRJbWFn
ZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3Vs
ZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sKKyAgICBpZiAoIW1fYXV0
b0xvYWRJbWFnZXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKG1fYmxvY2tOZXR3
b3JrSW1hZ2VzICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KHVybC5wcm90b2NvbCgpKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVm
ZXJyZWQoKQorewogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVy
YXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7
CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAg
ICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291
cmNlKSB7CiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBjb25zdF9jYXN0PENhY2hl
ZEltYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2UqPihyZXNvdXJjZSkpOwogCi0g
ICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkpCisgICAgICAgICAgICBpZiAo
aW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkgJiYgIXNob3VsZERlZmVySW1hZ2VMb2FkKGltYWdlLT51
cmwoKSkpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJl
c291cmNlT3B0aW9ucygpKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggM2YxYzIzM2IwMDhk
Zjg0MDFhOGMxYWJhMTE4MTc1ZGE3ZDgwZmI1ZS4uNzJlM2RhZjg0MjQ2M2YyMTc4NmY4ZDg3NWQz
NTcwZWIwOTA3YTMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTk4LDYgKzk4LDExIEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgYXV0b0xvYWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAg
ICAgdm9pZCBzZXRBdXRvTG9hZEltYWdlcyhib29sKTsKKworICAgIGJvb2wgYmxvY2tOZXR3b3Jr
SW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9ibG9ja05ldHdvcmtJbWFnZXM7IH0KKyAgICB2b2lk
IHNldEJsb2NrTmV0d29ya0ltYWdlcyhib29sKTsKKworICAgIGJvb2wgc2hvdWxkRGVmZXJJbWFn
ZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OwogICAgIAogICAgIENhY2hlUG9saWN5IGNhY2hlUG9s
aWN5KCkgY29uc3Q7CiAgICAgCkBAIC0xMzYsNiArMTQxLDggQEAgcHJpdmF0ZToKIAogICAgIHZv
aWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVk
UmVzb3VyY2VMb2FkZXI+Kik7CiAgICAgdm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CisK
KyAgICB2b2lkIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKICAgICAKICAgICBIYXNoU2V0
PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1h
cCBtX2RvY3VtZW50UmVzb3VyY2VzOwpAQCAtMTUzLDggKzE2MCw5IEBAIHByaXZhdGU6CiAKICAg
ICBUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVz
b3VyY2VzVGltZXI7CiAKLSAgICAvLyAzMCBiaXRzIGxlZnQKKyAgICAvLyAyOSBiaXRzIGxlZnQK
ICAgICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOworICAgIGJvb2wgbV9ibG9ja05ldHdvcmtJ
bWFnZXMgOiAxOwogICAgIGJvb2wgbV9hbGxvd1N0YWxlUmVzb3VyY2VzIDogMTsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggZTk3YzY0ZjczZGNiMGUyN2FlNDk2NGQ0NzVlNjJh
YjgyOWIzZmM1NC4uYWNjZWQ4MmJhNGQ4NTMxZTQ4ZjNkNTBjYmY1NGE3NWQ4NTVhMzUyNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQ2LDEwICs0NiwxMyBAQCB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldExvYWRzSW1h
Z2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCitzdGF0aWMgdm9pZCBzZXRJ
bWFnZUxvYWRpbmdTZXR0aW5ncyhQYWdlKiBwYWdlKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdl
cyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisKKyAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEJsb2NrTmV0
d29ya0ltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5ibG9ja05ldHdvcmtJbWFnZXMoKSk7CisgICAg
fQogfQogCiAvLyBTZXRzIHRoZSBlbnRyeSBpbiB0aGUgZm9udCBtYXAgZm9yIHRoZSBnaXZlbiBz
Y3JpcHQuIElmIGZhbWlseSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZW1vdmVzIHRoZSBlbnRyeSBp
bnN0ZWFkLgpAQCAtMTUxLDYgKzE1NCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdl
KQogICAgICwgbV9pc0phdmFFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc0phdmFFbmFibGVkRm9y
TG9jYWxGaWxlcyh0cnVlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2Up
CisgICAgLCBtX2Jsb2NrTmV0d29ya0ltYWdlcyhmYWxzZSkKICAgICAsIG1fbG9hZHNTaXRlSWNv
bnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoZmFsc2UpCiAgICAgLCBtX3ByaXZhdGVCcm93
c2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkKGZhbHNlKQpA
QCAtMjg2LDcgKzI5MCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwg
bV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9y
YWdlQmxvY2tpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxv
Z2dpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1l
cih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCisg
ICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFn
ZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1
cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2
ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAg
LTQ1MiwxMiArNDU2LDE5IEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGlj
YWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAvLyBTdGFydGluZyB0aGVz
ZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0IG9u
IGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAgICAv
LyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAvLyBTZWUg
aHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAgIG1fbG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fc2V0SW1h
Z2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgU2V0dGlu
Z3M6OnNldEJsb2NrTmV0d29ya0ltYWdlcyhib29sIGJsb2NrTmV0d29ya0ltYWdlcykKK3sKKyAg
ICBtX2Jsb2NrTmV0d29ya0ltYWdlcyA9IGJsb2NrTmV0d29ya0ltYWdlczsKKworICAgIG1fc2V0
SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU2V0
dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+
KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxT
ZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVz
KG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MobV9wYWdlKTsKIH0KIAogdm9p
ZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmco
Ym9vbCBsb2Fkc1NpdGVJY29ucykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCBmZDRkOWE5OTJi
NjllZmRjZjRhNGRiZDRlODUwNTQ5ZTI1YzdjNGFkLi5kOGQyZDg5ZjQzNDgzMGNjM2M4NDZmYTBh
ZmU5NjkxMGQ4NmFhN2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCkBAIC0xMjQsNiArMTI0LDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21h
dGljYWxseShib29sKTsKICAgICAgICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBj
b25zdCB7IHJldHVybiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsgfQogCisgICAgICAgIHZv
aWQgc2V0QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wpOworICAgICAgICBib29sIGJsb2NrTmV0d29y
a0ltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tOZXR3b3JrSW1hZ2VzOyB9CisKICAgICAg
ICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkgYWZmZWN0cyBzaXRlIGljb24gaW1hZ2UgbG9hZGluZyBp
ZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0dGluZyBpcyBmYWxzZSBhbmQgdGhpcyBzZXR0
aW5nIGlzIHRydWUuCiAgICAgICAgIC8vIEFsbCBvdGhlciBwZXJtdXRhdGlvbnMgc3RpbGwgaGVl
ZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgc2V0dGluZy4KICAgICAgICAgdm9pZCBzZXRMb2Fk
c1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhib29sKTsKQEAgLTY2MSw2ICs2
NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9pc0phdmFFbmFibGVk
IDogMTsKICAgICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKICAg
ICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA6IDE7CisgICAgICAgIGJvb2wg
bV9ibG9ja05ldHdvcmtJbWFnZXMgOiAxOwogICAgICAgICBib29sIG1fbG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcgOiAxOwogICAgICAgICBib29sIG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9jYXJldEJyb3dzaW5nRW5hYmxlZCA6
IDE7CkBAIC03OTksOCArODAzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBU
aW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAg
dm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiop
OworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVy
OworICAgICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0
aW5ncz4qKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
aW5kZXggNjAzMDJmMTRhODRhZDJiZDFkNWJlZTY3YmRkYWY0MTgyY2IyN2U5Zi4uMzU2ZGJiYjU1
ZDFmYTliMDI2NmY3NjM0ZDhmMjk0ZWEzNWQwNGFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cApAQCAtNzA4LDYgKzcwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgVGhlc2UgdGVzdHMgZGVwZW5kIG9uIHdlYmtpdF9zdXBwb3J0IGFuZAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIGZ1bmN0aW9ucyBkZWZpbmVkIG9ubHkgaW4gIVdFQktJVF9J
TVBMRU1FTlRBVElPTi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzL0Fz
c29jaWF0ZWRVUkxMb2FkZXJUZXN0LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd0ZXN0cy9EZWZlckxvYWRJbWFnZVRlc3QuY3BwJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ3Rlc3RzL0V2ZW50TGlzdGVuZXJUZXN0LmNwcCcsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXN0cy9GcmFtZVRlc3RIZWxwZXJzLmNwcCcsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9MZXZlbERCVGVzdC5jcHAnLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaSBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vV2ViS2l0Lmd5cGkKaW5kZXggYzExMDBjZThmZWFjM2I4YmY1ZTJkNzMwYzMzZDFl
YmNmZmFiYjZjMC4uYTNkNjNmZjlmZDE1OGZlMDU4MmM3ZDY5MWQ2YmQ1ZjMwZDc0YTkzNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCkBAIC02MSw2ICs2MSw3IEBACiAgICAgICAgICAg
ICAndGVzdHMvQ29udGVudExheWVyQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVz
dHMvRGF0ZVRpbWVGb3JtYXRUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvRGVjaW1hbFRl
c3QuY3BwJywKKyAgICAgICAgICAgICd0ZXN0cy9EZWZlckxvYWRJbWFnZVRlc3QuY3BwJywKICAg
ICAgICAgICAgICd0ZXN0cy9EcmFnSW1hZ2VUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
RXZlbnRMaXN0ZW5lclRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9GbG9hdFF1YWRUZXN0
LmNwcCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRl
eCBmNDdmZjlmN2MzZGJkM2FkODkwMTRlNDZlNjBhMjFjYjljZTFhZjgzLi41NDc3ZGYzNGRhODM1
MWFmZDdmOWNiN2Q1NTIxZGMzNzNlNmY1ZjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIHNldEphdmFTY3JpcHRFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0TGF5b3V0RmFsbGJhY2tXaWR0aChpbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
QmxvY2tOZXR3b3JrSW1hZ2VzKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1heFVudGlsZWRM
YXllclNpemUoV2ViU2l6ZSkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNr
UmVxdWlyZXNVc2VyR2VzdHVyZShib29sKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA1MDI2ZWU5NGI5ZmRlMjA1NjhiMGJhODUz
MjNmMTU3ZWFmNGRjOWNkLi41OWY5NWRjNjIyMzU1NzRjYTIzZGFiMzQ4Mzg0M2ZlNjljMGRiNzJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
QEAgLTE4Myw2ICsxODMsMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldExvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICBtX3NldHRp
bmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkobG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEJsb2NrTmV0d29ya0ltYWdlcyhib29s
IGJsb2NrTmV0d29ya0ltYWdlcykKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRCbG9ja05ldHdvcmtJ
bWFnZXMoYmxvY2tOZXR3b3JrSW1hZ2VzKTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNl
dEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldEltYWdl
c0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRp
bmdzSW1wbC5oCmluZGV4IDZjZWUyYWYyM2VkYjVhMjFlMTE2ZjMxNDZhOTY0NmZkMmRmNjI4OGIu
LmIwYmRlYTk0MzFlMTA5MDdjYThkYjgzMmQwOTE2Y2U5ZGM4MmQ5ZGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC0xMDUsNiArMTA1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRKYXZhU2NyaXB0RW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TGF5b3V0RmFsbGJhY2tXaWR0aChpbnQpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNldEJsb2NrTmV0d29ya0ltYWdlcyhib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxT
dG9yYWdlRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExheWVy
U2l6ZShXZWJTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVz
VXNlckdlc3R1cmUoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rl
c3RzL0RlZmVyTG9hZEltYWdlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0RlZmVyTG9hZEltYWdlVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBhOTdlNDU0MzQxZDgwYTQ1MGNi
N2Y1YTBhZTE2YjI2ZjJhMGQ5YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvRGVmZXJMb2FkSW1hZ2VUZXN0LmNwcApAQCAtMCwwICsxLDk2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCIKKyNpbmNsdWRlICJLVVJMLmgiCisKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgRGVmZXJMb2FkSW1hZ2VUZXN0
IDogcHVibGljIDo6dGVzdGluZzo6VGVzdCB7CisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkKKyAg
ICB7CisgICAgICAgIGxvYWRlciA9IG5ldyBXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcigw
KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKQorICAgIHsKKyAgICAgICAg
ZGVsZXRlIGxvYWRlcjsKKyAgICB9CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViQ29yZTo6S1VS
TCBuZXR3b3JrVXJsKCkKKyAgICB7CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpLVVJMKFdlYkNv
cmU6OktVUkwoKSwgImh0dHA6Ly9mb28uY29tIik7CisgICAgfQorCisgICAgc3RhdGljIFdlYkNv
cmU6OktVUkwgbG9jYWxVcmwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6OktVUkwo
V2ViQ29yZTo6S1VSTCgpLCAiZmlsZTovL2JhciIpOworICAgIH0KK3Byb3RlY3RlZDoKKyAgICBX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlciogbG9hZGVyOworfTsKKworVEVTVF9GKERlZmVy
TG9hZEltYWdlVGVzdCwgRGVmZXJOb3RoaW5nKQoreworICAgIGxvYWRlci0+c2V0QXV0b0xvYWRJ
bWFnZXModHJ1ZSk7CisgICAgbG9hZGVyLT5zZXRCbG9ja05ldHdvcmtJbWFnZXMoZmFsc2UpOwor
CisgICAgRVhQRUNUX0ZBTFNFKGxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobmV0d29ya1Vy
bCgpKSk7CisgICAgRVhQRUNUX0ZBTFNFKGxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobG9j
YWxVcmwoKSkpOworfQorCitURVNUX0YoRGVmZXJMb2FkSW1hZ2VUZXN0LCBEZWZlck5ldHdvcmtM
b2FkKQoreworICAgIGxvYWRlci0+c2V0QXV0b0xvYWRJbWFnZXModHJ1ZSk7CisgICAgbG9hZGVy
LT5zZXRCbG9ja05ldHdvcmtJbWFnZXModHJ1ZSk7CisKKyAgICBFWFBFQ1RfVFJVRShsb2FkZXIt
PnNob3VsZERlZmVySW1hZ2VMb2FkKG5ldHdvcmtVcmwoKSkpOworICAgIEVYUEVDVF9GQUxTRShs
b2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKGxvY2FsVXJsKCkpKTsKK30KKworVEVTVF9GKERl
ZmVyTG9hZEltYWdlVGVzdCwgRGVmZXJBbGwpCit7CisgICAgbG9hZGVyLT5zZXRBdXRvTG9hZElt
YWdlcyhmYWxzZSk7CisgICAgbG9hZGVyLT5zZXRCbG9ja05ldHdvcmtJbWFnZXModHJ1ZSk7CisK
KyAgICBFWFBFQ1RfVFJVRShsb2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKG5ldHdvcmtVcmwo
KSkpOworICAgIEVYUEVDVF9UUlVFKGxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobG9jYWxV
cmwoKSkpOworCisgICAgbG9hZGVyLT5zZXRCbG9ja05ldHdvcmtJbWFnZXMoZmFsc2UpOworCisg
ICAgRVhQRUNUX1RSVUUobG9hZGVyLT5zaG91bGREZWZlckltYWdlTG9hZChuZXR3b3JrVXJsKCkp
KTsKKyAgICBFWFBFQ1RfVFJVRShsb2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKGxvY2FsVXJs
KCkpKTsKK30KKworfSAvLyBuYW1lc3BhY2UKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCmluZGV4IGI3
ZTEyOTExM2RlNGFjM2M4NDI0OGJiMGQxM2UxYzRhNWQ4MjFjNjAuLjliOThjNDM2MzkyN2FmMjUy
YWQ0Njg2ZWUxZWE3YjUxYjFmNjZjMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0xNTYwLDYgKzE1NjAsOCBAQCB2b2lkIERSVFRl
c3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaQogICAgICAgICBwcmVmcy0+amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0
b21hdGljYWxseSA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOwogICAgIGVsc2UgaWYgKGtleSA9
PSAiV2ViS2l0RGlzcGxheUltYWdlc0tleSIpCiAgICAgICAgIHByZWZzLT5sb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKKyAgICBlbHNlIGlmIChrZXkg
PT0gIldlYktpdEJsb2NrTmV0d29ya0ltYWdlc0tleSIpCisgICAgICAgIHByZWZzLT5ibG9ja05l
dHdvcmtJbWFnZXMgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAgICBlbHNlIGlmIChrZXkg
PT0gIldlYktpdFBsdWdpbnNFbmFibGVkIikKICAgICAgICAgcHJlZnMtPnBsdWdpbnNFbmFibGVk
ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRE
T01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5IikKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBjNGRlMGFiYzE0NDUwYTEwOWFhY2E3
Zjk3N2EyOWU4OTM5YjI2Y2U0Li45ZDRiYmU3MTg1YTk0NDcxYTAwNzNiOGQ1NGJkN2EwNGQzZWNi
MzRkIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJl
bmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5j
ZXMuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6OnJlc2V0KCkKICAg
ICBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gdHJ1ZTsKICAgICBqYXZh
U2NyaXB0RW5hYmxlZCA9IHRydWU7CiAgICAgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5ID0gdHJ1
ZTsKKyAgICBibG9ja05ldHdvcmtJbWFnZXMgPSBmYWxzZTsKICAgICBsb2NhbFN0b3JhZ2VFbmFi
bGVkID0gdHJ1ZTsKICAgICBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQgPSB0cnVl
OwogICAgIHBsdWdpbnNFbmFibGVkID0gdHJ1ZTsKQEAgLTIwMiw2ICsyMDMsNyBAQCB2b2lkIFdl
YlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgc2V0dGluZ3MtPnNl
dEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkoamF2YVNjcmlwdENhbk9wZW5X
aW5kb3dzQXV0b21hdGljYWxseSk7CiAgICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRFbmFibGVk
KGphdmFTY3JpcHRFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7CisgICAgc2V0dGluZ3MtPnNldEJsb2Nr
TmV0d29ya0ltYWdlcyhibG9ja05ldHdvcmtJbWFnZXMpOwogICAgIHNldHRpbmdzLT5zZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKGxvY2FsU3RvcmFnZUVuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQob2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+c2V0UGx1Z2luc0VuYWJsZWQocGx1Z2luc0VuYWJs
ZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVy
ZW5jZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgK
aW5kZXggYzM2NTUzYjM1NDY5NjRjNzZmMjk5MTZhOWVhOWI5ZTJhMjNlMjRiMi4uZGMyMzJkNmQ0
ZjI1ZTUwYTc5MTU5NmY5ZjJhZGUzMDYzOGRlMGYwNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCkBAIC04OSw2ICs4OSw3IEBAIHN0cnVjdCBX
ZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5OwogICAgIGJvb2wgamF2YVNjcmlwdEVuYWJsZWQ7CiAgICAgYm9vbCBsb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHk7CisgICAgYm9vbCBibG9ja05ldHdvcmtJbWFnZXM7CiAgICAgYm9vbCBs
b2NhbFN0b3JhZ2VFbmFibGVkOwogICAgIGJvb2wgb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVF
bmFibGVkOwogICAgIGJvb2wgcGx1Z2luc0VuYWJsZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1uZXR3b3JrLWltYWdlLWJsb2Nr
ZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxv
d2VkLXdpdGgtbmV0d29yay1pbWFnZS1ibG9ja2VkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
Y2JjZGE1NWFmOGE0OTIyYWVmMWQ2Yjg3OTRmZTg3ODg0NzE5N2M5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbmV0d29y
ay1pbWFnZS1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK2xvYWRlci9maWxl
LWltYWdlLWFsbG93ZWQtd2l0aC1uZXR3b3JrLWltYWdlLWJsb2NrZWQuaHRtbCAtIHdpbGxTZW5k
UmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBsb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgt
bmV0d29yay1pbWFnZS1ibG9ja2VkLmh0bWwsIG1haW4gZG9jdW1lbnQgVVJMIGZpbGUtaW1hZ2Ut
YWxsb3dlZC13aXRoLW5ldHdvcmstaW1hZ2UtYmxvY2tlZC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+
IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCitsb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgt
bmV0d29yay1pbWFnZS1ibG9ja2VkLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVz
cG9uc2UgbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5ldHdvcmstaW1hZ2UtYmxvY2tl
ZC5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDA+CityZXNvdXJjZXMvb3ZhbC5wbmcgLSB3aWxsU2Vu
ZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgcmVzb3VyY2VzL292YWwucG5nLCBtYWluIGRvY3Vt
ZW50IFVSTCBmaWxlLWltYWdlLWFsbG93ZWQtd2l0aC1uZXR3b3JrLWltYWdlLWJsb2NrZWQuaHRt
bCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQorbG9hZGVyL2ZpbGUt
aW1hZ2UtYWxsb3dlZC13aXRoLW5ldHdvcmstaW1hZ2UtYmxvY2tlZC5odG1sIC0gZGlkRmluaXNo
TG9hZGluZworcmVzb3VyY2VzL292YWwucG5nIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJl
c3BvbnNlIHJlc291cmNlcy9vdmFsLnBuZywgaHR0cCBzdGF0dXMgY29kZSAwPgorcmVzb3VyY2Vz
L292YWwucG5nIC0gZGlkRmluaXNoTG9hZGluZworRmlsZSBpbWFnZXMgc2hvdWxkIGJlIGxvYWRl
ZCBpZiBuZXR3b3JrIGltYWdlcyBkaXNhYmxlZC4KK1VzZSByZXNvdXJjZSBsb2FkIGNhbGxiYWNr
cyB0byBtYWtlIHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5ldHdvcmstaW1h
Z2UtYmxvY2tlZC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxv
d2VkLXdpdGgtbmV0d29yay1pbWFnZS1ibG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDUxNTA5MWY4
Zjg2YWZjZWQyMzBiNjY2NTE4ZjlkNzU5NTU3Y2VmNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5ldHdvcmstaW1hZ2Ut
YmxvY2tlZC5odG1sCkBAIC0wLDAgKzEsMjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0Pgor
ZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNv
dXJjZUxvYWRDYWxsYmFja3MoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVu
Y2UoIldlYktpdERpc3BsYXlJbWFnZXNLZXkiLCAxKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoIldlYktpdEJsb2NrTmV0d29ya0ltYWdlc0tleSIsIDEpOworICAgICAg
ICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIEZpbGUgaW1hZ2VzIHNob3VsZCBiZSBsb2Fk
ZWQgaWYgbmV0d29yayBpbWFnZXMgZGlzYWJsZWQuPGJyPgorICBVc2UgcmVzb3VyY2UgbG9hZCBj
YWxsYmFja3MgdG8gbWFrZSBzdXJlIHRoZSBpbWFnZSBpcyBub3QgbG9hZGVkLjxicj4KKyAgPGlt
ZyBzcmM9Ii4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciPgorPC9ib2R5PgorPC9odG1sPgor
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2VkLWh0dHAt
aW1hZ2UtcmVsb2FkZWQtd2hlbi1uZXR3b3JrLWltYWdlLXJlZW5hYmxlZC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVk
LXdoZW4tbmV0d29yay1pbWFnZS1yZWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJk
MDBiYjAxOTBkNjhjZTBiNDBlMmVhYmE2YWNhZjQ4ZmRkY2YwMDgKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVk
LXdoZW4tbmV0d29yay1pbWFnZS1yZWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAg
QEAKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaHR0cC1pbWFnZS1yZWxvYWRl
ZC13aGVuLW5ldHdvcmstaW1hZ2UtcmVlbmFibGVkLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5T
VVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxvY2tlZC1odHRwLWlt
YWdlLXJlbG9hZGVkLXdoZW4tbmV0d29yay1pbWFnZS1yZWVuYWJsZWQuaHRtbCwgbWFpbiBkb2N1
bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJl
bG9hZGVkLXdoZW4tbmV0d29yay1pbWFnZS1yZWVuYWJsZWQuaHRtbCwgaHR0cCBtZXRob2QgR0VU
PiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxv
Y2tlZC1odHRwLWltYWdlLXJlbG9hZGVkLXdoZW4tbmV0d29yay1pbWFnZS1yZWVuYWJsZWQuaHRt
bCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbWlzYy9ibG9ja2VkLWh0dHAtaW1hZ2UtcmVsb2FkZWQtd2hlbi1uZXR3b3JrLWltYWdlLXJl
ZW5hYmxlZC5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9taXNjL3Jlc291cmNlcy9jb21wYXNzLmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1
ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvY29tcGFzcy5qcGcs
IG1haW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaHR0
cC1pbWFnZS1yZWxvYWRlZC13aGVuLW5ldHdvcmstaW1hZ2UtcmVlbmFibGVkLmh0bWwsIGh0dHAg
bWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKK2h0dHA6Ly8xMjcuMC4wLjE6ODAw
MC9taXNjL2Jsb2NrZWQtaHR0cC1pbWFnZS1yZWxvYWRlZC13aGVuLW5ldHdvcmstaW1hZ2UtcmVl
bmFibGVkLmh0bWwgLSBkaWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlz
Yy9yZXNvdXJjZXMvY29tcGFzcy5qcGcgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9u
c2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvcmVzb3VyY2VzL2NvbXBhc3MuanBnLCBodHRw
IHN0YXR1cyBjb2RlIDMwND4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9j
b21wYXNzLmpwZyAtIGRpZEZpbmlzaExvYWRpbmcKK0Jsb2NrZWQgaHR0cCBpbWFnZXMgc2hvdWxk
IHJlbG9hZCBpbiBwbGFjZSB3aGVuIG5ldHdvcmsgaW1hZ2UgaXMgZW5hYmxlZC4KK1VzZSByZXNv
dXJjZSBsb2FkIGNhbGxiYWNrcyB0byBtYWtlIHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQu
CitSZXN1bHQgb25seSB2YWxpZCBpZiBodHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRoLW5ldHdv
cmstaW1hZ2UtYmxvY2tlZC5odG1sCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvbWlzYy9ibG9ja2VkLWh0dHAtaW1hZ2UtcmVsb2FkZWQtd2hlbi1uZXR3b3JrLWltYWdlLXJl
ZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrZWQtaHR0cC1p
bWFnZS1yZWxvYWRlZC13aGVuLW5ldHdvcmstaW1hZ2UtcmVlbmFibGVkLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjRlYWVkZmIwZTY0NjZhM2M5MjVjYjY2OGMzZGQ5ZWU2NTM2YmQwNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2VkLWh0dHAtaW1hZ2UtcmVs
b2FkZWQtd2hlbi1uZXR3b3JrLWltYWdlLXJlZW5hYmxlZC5odG1sCkBAIC0wLDAgKzEsMjQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgaWYg
KHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKTsKKyAgICAgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdERpc3BsYXlJbWFnZXNLZXkiLCAx
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEJsb2NrTmV0
d29ya0ltYWdlc0tleSIsIDEpOworICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRCbG9ja05ldHdvcmtJ
bWFnZXNLZXkiLCAwKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgQmxvY2tlZCBodHRwIGltYWdlcyBzaG91bGQgcmVsb2FkIGluIHBs
YWNlIHdoZW4gbmV0d29yayBpbWFnZSBpcyBlbmFibGVkLjxicj4KKyAgVXNlIHJlc291cmNlIGxv
YWQgY2FsbGJhY2tzIHRvIG1ha2Ugc3VyZSB0aGUgaW1hZ2UgaXMgbm90IGxvYWRlZC48YnI+Cisg
IFJlc3VsdCBvbmx5IHZhbGlkIGlmIGh0dHAtaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtbmV0d29y
ay1pbWFnZS1ibG9ja2VkLmh0bWw8YnI+CisgIDxpbWcgc3JjPSJyZXNvdXJjZXMvY29tcGFzcy5q
cGciPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvYmxvY2tlZC1pbWFnZS1yZWxvYWRlZC13aGVuLWltYWdlLXJlZW5hYmxlZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1pbWFnZS1yZWxv
YWRlZC13aGVuLWltYWdlLXJlZW5hYmxlZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjYwM2Y0
ZDg0Mjk5NTQ3NjZiY2Y3ODljMDRhNjI2ZWQyZTUwZjhkYgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1h
Z2UtcmVlbmFibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDExIEBACis8dW5rbm93bj4gLSBk
aWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9ibG9ja2VkLWltYWdl
LXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLmh0bWwgLSB3aWxsU2VuZFJlcXVlc3QgPE5T
VVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxvY2tlZC1pbWFnZS1y
ZWxvYWRlZC13aGVuLWltYWdlLXJlZW5hYmxlZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRw
Oi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2Ut
cmVlbmFibGVkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkK
K2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaW1hZ2UtcmVsb2FkZWQtd2hlbi1p
bWFnZS1yZWVuYWJsZWQuaHRtbCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1h
Z2UtcmVlbmFibGVkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgoraHR0cDovLzEyNy4wLjAu
MTo4MDAwL21pc2MvcmVzb3VyY2VzL2NvbXBhc3MuanBnIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VS
TFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9jb21wYXNz
LmpwZywgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxvY2tl
ZC1pbWFnZS1yZWxvYWRlZC13aGVuLWltYWdlLXJlZW5hYmxlZC5odG1sLCBodHRwIG1ldGhvZCBH
RVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwpCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9i
bG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLmh0bWwgLSBkaWRGaW5p
c2hMb2FkaW5nCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvY29tcGFzcy5q
cGcgLSBkaWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4
MDAwL21pc2MvcmVzb3VyY2VzL2NvbXBhc3MuanBnLCBodHRwIHN0YXR1cyBjb2RlIDMwND4KK2h0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9jb21wYXNzLmpwZyAtIGRpZEZpbmlz
aExvYWRpbmcKK0Jsb2NrZWQgaW1hZ2VzIHNob3VsZCByZWxvYWQgaW4gcGxhY2Ugd2hlbiBpbWFn
ZSBpcyBlbmFibGVkLgorVXNlIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzIHRvIG1ha2Ugc3VyZSB0
aGUgaW1hZ2UgaXMgbm90IGxvYWRlZC4KK1Jlc3VsdCBvbmx5IHZhbGlkIGlmIGltYWdlLWxvYWQt
YmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIHBhc3Nlcy4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrZWQtaW1hZ2UtcmVsb2FkZWQtd2hlbi1p
bWFnZS1yZWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2Vk
LWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTU3
MDJlMDVjZmZhZDU5OTBhZWZlYTE2YmEwNzJkYjRjNDk4ODg2ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4t
aW1hZ2UtcmVlbmFibGVkLmh0bWwKQEAgLTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIp
IHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRl
UHJlZmVyZW5jZSgiV2ViS2l0RGlzcGxheUltYWdlc0tleSIsIDApOworICAgICAgICB0ZXN0UnVu
bmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0QmxvY2tOZXR3b3JrSW1hZ2VzS2V5IiwgMCk7
CisgICAgICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5v
dmVycmlkZVByZWZlcmVuY2UoIldlYktpdERpc3BsYXlJbWFnZXNLZXkiLCAxKTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgQmxvY2tl
ZCBpbWFnZXMgc2hvdWxkIHJlbG9hZCBpbiBwbGFjZSB3aGVuIGltYWdlIGlzIGVuYWJsZWQuPGJy
PgorICBVc2UgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MgdG8gbWFrZSBzdXJlIHRoZSBpbWFnZSBp
cyBub3QgbG9hZGVkLjxicj4KKyAgUmVzdWx0IG9ubHkgdmFsaWQgaWYgaW1hZ2UtbG9hZC1ibG9j
a2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgcGFzc2VzLjxicj4KKyAgPGltZyBzcmM9InJl
c291cmNlcy9jb21wYXNzLmpwZyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRoLW5l
dHdvcmstaW1hZ2UtYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L21pc2MvaHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1uZXR3b3JrLWltYWdlLWJsb2NrZWQt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAzYTQ0ZjEyZTAzOGJiNTgzN2U3YzlhYTdjNjUzOTU3
NTU4YTY1NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
aHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1uZXR3b3JrLWltYWdlLWJsb2NrZWQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNiBAQAorPHVua25vd24+IC0gZGlkRmluaXNoTG9hZGluZworaHR0
cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvaHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1uZXR3
b3JrLWltYWdlLWJsb2NrZWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVS
TCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRo
LW5ldHdvcmstaW1hZ2UtYmxvY2tlZC5odG1sLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3
LjAuMC4xOjgwMDAvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRoLW5ldHdvcmstaW1h
Z2UtYmxvY2tlZC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGlyZWN0UmVzcG9uc2UgKG51bGwp
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRo
LW5ldHdvcmstaW1hZ2UtYmxvY2tlZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJl
c3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2h0dHAtaW1hZ2UtbG9hZC1ibG9ja2Vk
LXdpdGgtbmV0d29yay1pbWFnZS1ibG9ja2VkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgor
SHR0cCBJbWFnZXMgc2hvdWxkIG5vdCBiZSBsb2FkZWQgaWYgbmV0d29yayBpbWFnZXMgZGlzYWJs
ZWQuCitVc2UgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MgdG8gbWFrZSBzdXJlIHRoZSBpbWFnZSBp
cyBub3QgbG9hZGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2Mv
aHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1uZXR3b3JrLWltYWdlLWJsb2NrZWQuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRo
LW5ldHdvcmstaW1hZ2UtYmxvY2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk3MDE2MDdjY2RiNjliMWJj
NTllODRlNzRkYzc0ODhkMmFmMzk5YWIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvaHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1uZXR3b3JrLWltYWdl
LWJsb2NrZWQuaHRtbApAQCAtMCwwICsxLDIyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCk7CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IiwgMSk7CisgICAgICAgIHRlc3RSdW5uZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRCbG9ja05ldHdvcmtJbWFnZXNLZXkiLCAxKTsKKyAgICAg
ICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICBIdHRwIEltYWdlcyBzaG91bGQgbm90IGJl
IGxvYWRlZCBpZiBuZXR3b3JrIGltYWdlcyBkaXNhYmxlZC48YnI+CisgIFVzZSByZXNvdXJjZSBs
b2FkIGNhbGxiYWNrcyB0byBtYWtlIHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQuPGJyPgor
ICA8aW1nIHNyYz0icmVzb3VyY2VzL2NvbXBhc3MuanBnIj4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWxvYWQtYmxvY2tl
ZC13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi41NjY4NjkzYjFkOTZkNzEwNGJhNjExNDQzZWU2YTFlMzAxNDIyMTM4
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWxv
YWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1
IEBACitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1p
bWFnZXMtZGlzYWJsZWQuaHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1pbWFnZXMt
ZGlzYWJsZWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgbWV0
aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
aXNjL2ltYWdlLWxvYWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sIC0gZGlkUmVj
ZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2lt
YWdlLWxvYWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sLCBodHRwIHN0YXR1cyBj
b2RlIDIwMD4KK0ltYWdlcyBzaG91bGQgbm90IGJlIGxvYWRlZCBpZiBhdXRvbWF0aWNhbGx5IGxv
YWQgaW1hZ2VzIHNldHRpbmcgaXMgb2ZmLgorVXNlIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzIHRv
IG1ha2Ugc3VyZSB0aGUgaW1hZ2UgaXMgbm90IGxvYWRlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWxvYWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNh
YmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2ltYWdlLWxvYWQtYmxvY2tl
ZC13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2MzIxZjA0Nzg5ZTI4ZmJi
ODVmZmVjNTg1NWVmMDAwYTM4ZGQ3YzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0
bWwKQEAgLTAsMCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1
bm5lci5kdW1wQXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENh
bGxiYWNrcygpOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
RGlzcGxheUltYWdlc0tleSIsIDApOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgiV2ViS2l0QmxvY2tOZXR3b3JrSW1hZ2VzS2V5IiwgMCk7CisgICAgICAgIHRlc3RSdW5u
ZXIucXVldWVSZWxvYWQoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9u
bG9hZD0icnVuVGVzdCgpIj4KKyAgSW1hZ2VzIHNob3VsZCBub3QgYmUgbG9hZGVkIGlmIGF1dG9t
YXRpY2FsbHkgbG9hZCBpbWFnZXMgc2V0dGluZyBpcyBvZmYuPGJyPgorICBVc2UgcmVzb3VyY2Ug
bG9hZCBjYWxsYmFja3MgdG8gbWFrZSBzdXJlIHRoZSBpbWFnZSBpcyBub3QgbG9hZGVkLjxicj4K
KyAgPGltZyBzcmM9InJlc291cmNlcy9jb21wYXNzLmpwZyI+Cis8L2JvZHk+Cis8L2h0bWw+CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162048</attachid>
            <date>2012-09-04 08:31:58 -0700</date>
            <delta_ts>2012-09-04 15:31:42 -0700</delta_ts>
            <desc>Renamed to BlockNonLocalImages. Add overridePreference to mac DumpRenderTree runner, still need to fix expect.txt files for mac. Updated ChangeLog. Removed chromium unit tests.</desc>
            <filename>bug-95478-20120904083141.patch</filename>
            <type>text/plain</type>
            <size>38291</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2MjYwYTZkNWU0NTA0
ZTQwMTUzYjYwMzU5YmFiN2UyZjliODQ0Yy4uZTg0YTEyMWNlZGUwM2U2OTFmNzI4NDhmNTUzMWUy
NjA4MTQwOThjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc4IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCbG9ja05vbkxvY2FsSW1hZ2VzIGlzIHNpbWlsYXIgdG8g
QXV0b0xvYWRJbWFnZXMuIEJsb2NrTm9uTG9jYWxJbWFnZXMKKyAgICAgICAgcGVyZm9ybXMgdGhl
IGFkZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9uLWxvY2FsIHVybAor
ICAgICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLiBUaGVyZWZvcmUgaXQgc2hvdWxkIG9ubHkg
YWZmZWN0IGxvY2FsCisgICAgICAgIGRvY3VtZW50cy4KKworICAgICAgICBCbG9ja05vbkxvY2Fs
SW1hZ2VzIGFuZCBBdXRvTG9hZEltYWdlcyBiZWhhdmUgYXMgYW4gQU5EIGNvbmRpdGlvbiBvbgor
ICAgICAgICB3aGV0aGVyIHRvIGxvYWQgYW4gaW1hZ2UuIEFuIGltYWdlIGlzIGxvYWRlZCBpZjoK
KyAgICAgICAgQXV0b0xvYWRJbWFnZXMgJiYgKCFCbG9ja05vbkxvY2FsSW1hZ2VzIHx8IHNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCkKKworICAgICAgICBUaGlzIGlzIHVzZWQgaW4gdGhlIGlt
cGxlbWVudGF0aW9uIG9mIEFuZHJvaWQgV2ViVmlldworICAgICAgICBXZWJTZXR0aW5ncy5zZXRC
bG9ja05ldHdvcmtJbWFnZSBvbiB0b3Agb2YgYSBmdWxsIENocm9taXVtIHN0YWNrLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2xvYWRlci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwt
aW1hZ2UtYmxvY2tlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvYmxvY2tl
ZC1odHRwLWltYWdlLXJlbG9hZGVkLXdoZW4tbm9uLWxvY2FsLWltYWdlLXJlZW5hYmxlZC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1pbWFnZS1yZWxvYWRlZC13
aGVuLWltYWdlLXJlZW5hYmxlZC5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2Mv
aHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC5odG1s
CisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgt
aW1hZ2VzLWRpc2FibGVkLmh0bWwKKworICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudCk6CisgICAg
ICAgIEFsc28gc2V0IEJsb2NrTm9uTG9jYWxJbWFnZXMgdmFsdWUgZnJvbSBzZXR0aW5ncy4KKwor
ICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRJbWFnZTo6bG9hZCk6CisgICAgICAgIE1vZGlmaWVkIHRvIGNoZWNrIGJvdGggc2V0
dGluZ3MgYmVmb3JlIGxvYWQuCisKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNh
Y2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgSW5pdGlhbGl6ZSBuZXcgcHJpdmF0ZSB2YXJp
YWJsZS4KKworICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJ
bWFnZSk6CisgICAgICAgIENoZWNrIGJvdGggc2V0dGluZ3MgYmVmb3JlIHJlcXVlc3QuCisKKyAg
ICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyk6
CisgICAgICAgIFJlZmFjdG9yIG91dCBkdXBsaWNhdGVkIGNvZGUgd2l0aCBzZXRCbG9ja05vbkxv
Y2FsSW1hZ2VzLgorCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpzZXRCbG9ja05vbkxvY2FsSW1hZ2VzKToKKyAgICAgICAgTWlycm9y
cyBzZXRBdXRvTG9hZEltYWdlcy4gV2lsbCByZWxvYWQgaW1hZ2VzIHRoYXQgYXJlIG5vIGxvbmdl
cgorICAgICAgICBibG9ja2VkIGJ5IHNldHRpbmcuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCk6CisgICAgICAgIENvbWJpbmVk
IHRoZSBjaGVjayBmb3IgYm90aCBzZXR0aW5ncyB1c2luZyB0aGUgY29uZGl0aW9uIGRlc2NyaWJl
ZAorICAgICAgICBhYm92ZS4KKworICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQpOgorICAgICAgICBSZWZhY3RvcmVkIG91dCBw
cml2YXRlIG1ldGhvZCB0byByZWxvYWQgaW1hZ2VzIHRoYXQgaXMgbm8gbG9uZ2VyCisgICAgICAg
IGJsb2NrZWQuIENhbGxlZCBpbiBzZXRBdXRvTG9hZEltYWdlcyBhbmQgc2V0QmxvY2tOb25Mb2Nh
bEltYWdlcy4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5o
OgorICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmJsb2NrTm9uTG9jYWxJbWFnZXMpOgorICAgICAgICAqIHBhZ2Uv
U2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0bG9hZEltYWdlc1NldHRpbmdzSW5B
bGxGcmFtZXMpOgorICAgICAgICBSZW5hbWVkIGFuZCBtb2RpZmllZCB0byBzZXQgYm90aCBzZXR0
aW5ncyBpbiBhbGwKKyAgICAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXJzLgorCisgICAgICAgIChX
ZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRCbG9ja05vbkxvY2FsSW1hZ2VzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNldHRpbmdzOjpsb2FkSW1hZ2VzU2V0dGluZ3NUaW1lckZpcmVkKToKKyAgICAg
ICAgUmVuYW1lZCB0byByZWZsZWN0IHNldHRpbmcgYm90aCB2YXJpYWJsZXMuCisKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmg6CisgICAgICAgIChTZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6YmxvY2tOb25Mb2NhbEltYWdlcyk6CisKIDIwMTItMDktMDMgIEFuZHJlYXMg
S2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFNoYXJlIGltbXV0YWJsZSBFbGVt
ZW50QXR0cmlidXRlRGF0YSBiZXR3ZWVuIGVsZW1lbnRzIHdpdGggaWRlbnRpY2FsIGF0dHJpYnV0
ZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGZjNDhlNTllMGFlNjZiYTA0MDU5MTg1
Yjg2ZmY0MmY1NDg5MTZlYzkuLjJhYmRkYmJmOWIzOTM0ZGRmZDczODdhYTNjNjg3NWU3ODBhYTNh
NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDgt
MzAgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgQ2FjaGVkUmVz
b3VyY2VMb2FkZXIgQmxvY2tOb25Mb2NhbEltYWdlcyBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgbmV3IEJsb2NrTm9uTG9jYWxJ
bWFnZXMgc2V0dGluZyB0byBXZWJTZXR0aW5ncy4KKworICAgICAgICAqIHB1YmxpYy9XZWJTZXR0
aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEJsb2NrTm9uTG9jYWxJbWFnZXMpOgorICAgICAgICAo
V2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgIChXZWJT
ZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA5LTAzICBUYW8gQmFpICA8bWljaGFlbGJhaUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgQWRkZWQgQU5EUk9JRF9HREJTRVJWRVIgZGVmaW5pdGlvbiBmb3Ig
QW50CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZThiOTY5ZDFlMWMxOTUwMmU0NzFjZWE4NWMwMTE1Yzlj
Zjk0Y2ViOC4uYTU5YjY1MjgyNTRhNGNjZDdhMTJlMDI4YmM5NzQ1Y2RkYjc2OTZiMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA5LTA0ICBCbyBMaXUgIDxib2xpdUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9hZGVyIEJsb2NrTm9u
TG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBBZGQgdGhlIG5ldyBCbG9ja05vbkxvY2FsSW1h
Z2VzIHNldHRpbmcgdG8gV2ViUHJlZmVyZW5jZXMuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2
YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdl
YlZpZXcvV2ViUHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRp
YWxpemVdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0QmxvY2tOb25Mb2NhbEltYWdl
czpdKToKKyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgYmxvY2tOb25Mb2NhbEltYWdlc10pOgor
CiAyMDEyLTA5LTAxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGRlZCAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllci5oPi4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZmYTAwYWQzM2Y3ZTU0NWUwOWY1MjFkZDQ4YjI4
NmIwNzZkMmZiODYuLmUxZGNlYjBiNDkyNzRhMzcxYWE5ZGIyMzQ2MDg4M2Q4OTdlNWNkYjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNjQ3LDYgKzY0Nyw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQoYm9vbCBkaXNwYXRjaCkKIAogICAgIFNl
dHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CiAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJ
bWFnZXMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsK
KyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRCbG9j
a05vbkxvY2FsSW1hZ2VzKHNldHRpbmdzID8gc2V0dGluZ3MtPmJsb2NrTm9uTG9jYWxJbWFnZXMo
KSA6IGZhbHNlKTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CiAgICAgICAgIFN0cmlu
ZyBkbnNQcmVmZXRjaENvbnRyb2wgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBI
ZWFkZXJGaWVsZCgiWC1ETlMtUHJlZmV0Y2gtQ29udHJvbCIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggYmU0Y2VhNWNmMjIyOGE1ZmQ5NmI0ODNk
MzFkNGYyNzliYTMzNmQxNS4uYzYyMzIwODA0MTA2NjE3NjA3YjljYmYzMDc0YWQ4NGFjYTZjNDZk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCkBAIC03
OSw3ICs3OSw3IEBAIENhY2hlZEltYWdlOjp+Q2FjaGVkSW1hZ2UoKQogCiB2b2lkIENhY2hlZElt
YWdlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxvYWRlciwgY29u
c3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmICghY2FjaGVkUmVz
b3VyY2VMb2FkZXIgfHwgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmF1dG9Mb2FkSW1hZ2VzKCkpCisg
ICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCAhY2FjaGVkUmVzb3VyY2VMb2FkZXItPnNo
b3VsZERlZmVySW1hZ2VMb2FkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKSkKICAgICAgICAgQ2Fj
aGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMpOwogICAgIGVs
c2UKICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBiMjU4YzA1N2ZmM2Fm
MTExOTU4MGRlMWFmNjA4NDA1MzJmNmEwYTc1Li4wYzQyYTQzNWExNDk4NzQ3YzUzNWIzMzQ1NGQ3
ZWIxNDZkMzRhMDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJNZW1v
cnlDYWNoZS5oIgogI2luY2x1ZGUgIlBpbmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxv
YWRTY2hlZHVsZXIuaCIKKyNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNl
Y3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVW51
c2VkUGFyYW0uaD4KQEAgLTExNSw2ICsxMTYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291
bnQoMCkKICAgICAsIG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMs
ICZDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1Rp
bWVyRmlyZWQpCiAgICAgLCBtX2F1dG9Mb2FkSW1hZ2VzKHRydWUpCisgICAgLCBtX2Jsb2NrTm9u
TG9jYWxJbWFnZXMoZmFsc2UpCiAgICAgLCBtX2FsbG93U3RhbGVSZXNvdXJjZXMoZmFsc2UpCiB7
CiB9CkBAIC0xNjAsNyArMTYyLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+
IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXEKICAgICAgICAg
fQogICAgIH0KICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVzb3VyY2Uo
c3RhdGljX2Nhc3Q8Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6
OkltYWdlUmVzb3VyY2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VP
cHRpb25zKCkpLmdldCgpKSk7Ci0gICAgaWYgKGF1dG9Mb2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2Ug
JiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCisgICAgaWYgKCFzaG91bGREZWZlckltYWdl
TG9hZChyZXF1ZXN0LnVybCgpKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVkc0xv
YWQoKSkKICAgICAgICAgcmVzb3VyY2UtPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNl
T3B0aW9ucygpKTsKICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CkBAIC02MjksMTMgKzYzMSw0MiBA
QCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhib29sIGVuYWJs
ZSkKICAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVybjsKIAorICAgIHJl
bG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyhib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxl
ID09IG1fYmxvY2tOb25Mb2NhbEltYWdlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9ibG9j
a05vbkxvY2FsSW1hZ2VzID0gZW5hYmxlOworCisgICAgaWYgKG1fYmxvY2tOb25Mb2NhbEltYWdl
cykKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwor
fQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25z
dCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIGlmIChtX2Jsb2NrTm9uTG9jYWxJbWFnZXMgJiYgIVNjaGVt
ZVJlZ2lzdHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwodXJsLnByb3RvY29sKCkpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpCit7CiAgICAgRG9j
dW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQo
KTsKICAgICBmb3IgKERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVu
dFJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYgKHJlc291cmNl
LT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKICAgICAgICAgICAg
IENhY2hlZEltYWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2Fz
dDxjb25zdCBDYWNoZWRJbWFnZSo+KHJlc291cmNlKSk7CiAKLSAgICAgICAgICAgIGlmIChpbWFn
ZS0+c3RpbGxOZWVkc0xvYWQoKSkKKyAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxOZWVkc0xv
YWQoKSAmJiAhc2hvdWxkRGVmZXJJbWFnZUxvYWQoaW1hZ2UtPnVybCgpKSkKICAgICAgICAgICAg
ICAgICBpbWFnZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwog
ICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzZjFjMjMzYjAwOGRmODQwMWE4YzFhYmExMTgxNzVk
YTdkODBmYjVlLi44MDZmNTFmZmFiMWJhY2I0MGY2ZWE3MmJiNjdjZDkwMjZjYTdlZGU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aApAQCAtOTgsNiArOTgsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lkIHNldEF1dG9Mb2Fk
SW1hZ2VzKGJvb2wpOworCisgICAgYm9vbCBibG9ja05vbkxvY2FsSW1hZ2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9ibG9ja05vbkxvY2FsSW1hZ2VzOyB9CisgICAgdm9pZCBzZXRCbG9ja05vbkxvY2Fs
SW1hZ2VzKGJvb2wpOworCisgICAgYm9vbCBzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJM
JikgY29uc3Q7CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAg
ICAKQEAgLTEzNiw2ICsxNDEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVj
dERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4q
KTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKKworICAgIHZvaWQgcmVsb2Fk
SW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlk
YXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNv
dXJjZXM7CkBAIC0xNTMsOCArMTYwLDkgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPENhY2hlZFJl
c291cmNlTG9hZGVyPiBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsKIAot
ICAgIC8vIDMwIGJpdHMgbGVmdAorICAgIC8vIDI5IGJpdHMgbGVmdAogICAgIGJvb2wgbV9hdXRv
TG9hZEltYWdlcyA6IDE7CisgICAgYm9vbCBtX2Jsb2NrTm9uTG9jYWxJbWFnZXMgOiAxOwogICAg
IGJvb2wgbV9hbGxvd1N0YWxlUmVzb3VyY2VzIDogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAKaW5kZXggZTk3YzY0ZjczZGNiMGUyN2FlNDk2NGQ0NzVlNjJhYjgyOWIzZmM1NC4uZDVm
ZTAyYjljNDBkNzJhY2E1ZGRlYmE0MWYwODU4NGEyN2I2YjEwNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0
aW5ncy5jcHAKQEAgLTQ2LDEwICs0NiwxMyBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eUluQWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCitzdGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdTZXR0
aW5ncyhQYWdlKiBwYWdlKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhwYWdlLT5zZXR0aW5n
cygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisKKyAgICAgICAgZnJhbWUtPmRvY3Vt
ZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEJsb2NrTm9uTG9jYWxJbWFnZXMocGFn
ZS0+c2V0dGluZ3MoKS0+YmxvY2tOb25Mb2NhbEltYWdlcygpKTsKKyAgICB9CiB9CiAKIC8vIFNl
dHMgdGhlIGVudHJ5IGluIHRoZSBmb250IG1hcCBmb3IgdGhlIGdpdmVuIHNjcmlwdC4gSWYgZmFt
aWx5IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJlbW92ZXMgdGhlIGVudHJ5IGluc3RlYWQuCkBAIC0x
NTEsNiArMTU0LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2lz
SmF2YUVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzKHRy
dWUpCiAgICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseShmYWxzZSkKKyAgICAsIG1fYmxv
Y2tOb25Mb2NhbEltYWdlcyhmYWxzZSkKICAgICAsIG1fbG9hZHNTaXRlSWNvbnNJZ25vcmluZ0lt
YWdlTG9hZGluZ1NldHRpbmcoZmFsc2UpCiAgICAgLCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkKGZhbHNlKQpAQCAtMjg2LDcgKzI5
MCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9kaWFnbm9zdGlj
TG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3RoaXJkUGFydHlTdG9yYWdlQmxvY2tpbmdF
bmFibGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVk
KGZhbHNlKQotICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0
dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCisgICAgLCBtX3NldElt
YWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0
aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25U
aW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGlt
ZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0
ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTQ1MiwxMiArNDU2
LDE5IEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxv
YWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAvLyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5j
aHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwg
cHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhl
eSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtp
dC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgU2V0dGluZ3M6OnNldEJsb2Nr
Tm9uTG9jYWxJbWFnZXMoYm9vbCBibG9ja05vbkxvY2FsSW1hZ2VzKQoreworICAgIG1fYmxvY2tO
b25Mb2NhbEltYWdlcyA9IGJsb2NrTm9uTG9jYWxJbWFnZXM7CisKKyAgICBtX3NldEltYWdlTG9h
ZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFNldHRpbmdzOjps
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopCit2b2lk
IFNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+
KikKIHsKLSAgICBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhtX3BhZ2Up
OworICAgIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKG1fcGFnZSk7CiB9CiAKIHZvaWQgU2V0dGlu
Z3M6OnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKGJvb2wgbG9h
ZHNTaXRlSWNvbnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggZmQ0ZDlhOTkyYjY5ZWZkY2Y0
YTRkYmQ0ZTg1MDU0OWUyNWM3YzRhZC4uYjc0ODk4YjA3MWMxNTc1YjE5NTE4NjBmNmVlMzE0ZjFm
Zjc2YzIxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAtMTI0LDYgKzEyNCw5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
Ym9vbCk7CiAgICAgICAgIGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkgY29uc3QgeyBy
ZXR1cm4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHk7IH0KIAorICAgICAgICB2b2lkIHNldEJs
b2NrTm9uTG9jYWxJbWFnZXMoYm9vbCk7CisgICAgICAgIGJvb2wgYmxvY2tOb25Mb2NhbEltYWdl
cygpIGNvbnN0IHsgcmV0dXJuIG1fYmxvY2tOb25Mb2NhbEltYWdlczsgfQorCiAgICAgICAgIC8v
IFRoaXMgc2V0dGluZyBvbmx5IGFmZmVjdHMgc2l0ZSBpY29uIGltYWdlIGxvYWRpbmcgaWYgbG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5IHNldHRpbmcgaXMgZmFsc2UgYW5kIHRoaXMgc2V0dGluZyBp
cyB0cnVlLgogICAgICAgICAvLyBBbGwgb3RoZXIgcGVybXV0YXRpb25zIHN0aWxsIGhlZWQgbG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5IHNldHRpbmcuCiAgICAgICAgIHZvaWQgc2V0TG9hZHNTaXRl
SWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCk7CkBAIC02NjEsNiArNjY0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNKYXZhRW5hYmxlZCA6IDE7
CiAgICAgICAgIGJvb2wgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcyA6IDE7CiAgICAgICAg
IGJvb2wgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgOiAxOworICAgICAgICBib29sIG1fYmxv
Y2tOb25Mb2NhbEltYWdlcyA6IDE7CiAgICAgICAgIGJvb2wgbV9sb2Fkc1NpdGVJY29uc0lnbm9y
aW5nSW1hZ2VMb2FkaW5nU2V0dGluZyA6IDE7CiAgICAgICAgIGJvb2wgbV9wcml2YXRlQnJvd3Np
bmdFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2NhcmV0QnJvd3NpbmdFbmFibGVkIDogMTsK
QEAgLTc5OSw4ICs4MDMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBt
X3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAgICAgIFRpbWVy
PFNldHRpbmdzPiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyOwotICAgICAgICB2b2lk
IGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7Cisg
ICAgICAgIFRpbWVyPFNldHRpbmdzPiBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXI7Cisg
ICAgICAgIHZvaWQgaW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdz
PiopOwogICAgICAgICAKICAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBw
cmVzc2lvblRpbWVvdXRJblNlY29uZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJTZXR0aW5ncy5oCmluZGV4IGY0N2ZmOWY3YzNkYmQzYWQ4OTAxNGU0NmU2MGEyMWNiOWNl
MWFmODMuLjQxNjZkMWJlYTc2MDdjMTEyMTJkODM0NjQ0NTdiOGFiZDM1Y2E1YWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTEzLDYgKzExMyw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SmF2YVNjcmlwdEVuYWJsZWQoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRGYWxsYmFja1dpZHRoKGludCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCkgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRCbG9ja05vbkxvY2FsSW1hZ2VzKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShib29sKSA9IDA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA1MDI2
ZWU5NGI5ZmRlMjA1NjhiMGJhODUzMjNmMTU3ZWFmNGRjOWNkLi44YTcwMGE1NDBkZDA3MDY3NGQ1
MjAyNTBjYzUyODQxMzY1YTdjOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTE4Myw2ICsxODMsMTEgQEAgdm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSkKICAgICBtX3NldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkobG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5KTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEJs
b2NrTm9uTG9jYWxJbWFnZXMoYm9vbCBibG9ja05ldHdvcmtJbWFnZXMpCit7CisgICAgbV9zZXR0
aW5ncy0+c2V0QmxvY2tOb25Mb2NhbEltYWdlcyhibG9ja05ldHdvcmtJbWFnZXMpOworfQorCiB2
b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAg
ICAgbV9zZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggNmNlZTJhZjIzZWRiNWEyMWUx
MTZmMzE0NmE5NjQ2ZmQyZGY2Mjg4Yi4uNGFkNGJmNDg2YzVkOTA5OTMxMjY2YWNlOGRiMTgwNmZh
NjYzNGU4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmgKQEAgLTEwNSw2ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEphdmFT
Y3JpcHRFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMYXlvdXRGYWxsYmFja1dp
ZHRoKGludCk7CiAgICAgdmlydHVhbCB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShi
b29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmxvY2tOb25Mb2NhbEltYWdlcyhib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TG9jYWxTdG9yYWdlRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWF4VW50aWxlZExheWVyU2l6ZShXZWJTaXplKTsKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAppbmRleCBi
MTcxMWJiOGJjMzk5NDM5MWE5ZmMxZTZhNTA5N2UzODU0YzQ1ZTM3Li4yNzBlOGE4MjYyOWQ0YzRk
ODA4ZGEzMDMxZjhhOTBhMzAzZGQyNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKQEAgLTYxLDYgKzYxLDcgQEAKICNk
ZWZpbmUgV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkgQCJXZWJLaXRBbGxv
d0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0QWxsb3dBbmltYXRl
ZEltYWdlTG9vcGluZ1ByZWZlcmVuY2VLZXkgQCJXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29w
aW5nUHJlZmVyZW5jZUtleSIKICNkZWZpbmUgV2ViS2l0RGlzcGxheUltYWdlc0tleSBAIldlYktp
dERpc3BsYXlJbWFnZXNLZXkiCisjZGVmaW5lIFdlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNLZXkg
QCJXZWJLaXRCbG9ja05vbkxvY2FsSW1hZ2VzS2V5IgogI2RlZmluZSBXZWJLaXRMb2FkU2l0ZUlj
b25zS2V5IEAiV2ViS2l0TG9hZFNpdGVJY29uc0tleSIKICNkZWZpbmUgV2ViS2l0QmFja0Zvcndh
cmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSBAIldlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBp
cmF0aW9uSW50ZXJ2YWxLZXkiCiAjZGVmaW5lIFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5
IEAiV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLmgKaW5kZXggOTMyNjU2YjA3MGY4YzQzMjg1MTIzNWEzYjljNDdm
ZWRkMjM1MjY5NS4uZmUzZWIyNmEwNzhmMTAyNDNiN2U4NDMxNGFlMzNiZjc0ZGY3NDcwZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMuaApAQCAtMzIxLDYgKzMy
MSwxNyBAQCBleHRlcm4gTlNTdHJpbmcgKldlYlByZWZlcmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlv
bjsKIC0gKEJPT0wpbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5OwogCiAvKiEKKyAgICBAbWV0aG9k
IHNldEJsb2NrTm9uTG9jYWxJbWFnZXM6CisgICAgQHBhcmFtIGZsYWcKKyovCistICh2b2lkKXNl
dEJsb2NrTm9uTG9jYWxJbWFnZXM6IChCT09MKWZsYWc7CisKKy8qIQorICAgIEBtZXRob2QgYmxv
Y2tOb25Mb2NhbEltYWdlcworKi8KKy0gKEJPT0wpYmxvY2tOb25Mb2NhbEltYWdlczsKKworLyoh
CiAgICAgQG1ldGhvZCBzZXRBdXRvc2F2ZXM6CiAgICAgQHBhcmFtIGZsYWcgCiAgICAgQGRpc2N1
c3Npb24gSWYgYXV0b3NhdmUgcHJlZmVyZW5jZXMgaXMgWUVTIHRoZSBzZXR0aW5ncyByZXByZXNl
bnRlZCBieQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KaW5k
ZXggOGUxM2YxOWI0ZWIzZDY2NDliOTE3YWQwMGI1ZTY4MWMwMTM4MjIzNC4uYjQzYTc5N2Q5OGVj
NGUwY2NmMWRlMjc5NjlhMGE0NTBiMGE4ZjM3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VzLm1tCkBAIC0zMzQsNiArMzM0LDcgQEAgKyAodm9pZClpbml0aWFs
aXplCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0QWxsb3dB
bmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdLCAgV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9vcGluZ1ByZWZlcmVuY2VLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpZRVNdLCAgV2ViS2l0RGlzcGxheUlt
YWdlc0tleSwKKyAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRC
bG9ja05vbkxvY2FsSW1hZ2VzS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
Tk9dLCAgIFdlYktpdExvYWRTaXRlSWNvbnNLZXksCiAgICAgICAgIEAiMTgwMCIsICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtl
eSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRUYWJUb0xp
bmtzUHJlZmVyZW5jZUtleSwKQEAgLTc2Miw2ICs3NjMsMTYgQEAgLSAoQk9PTClsb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHkKICAgICByZXR1cm4gW3NlbGYgX2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0
RGlzcGxheUltYWdlc0tleV07CiB9CiAKKy0gKHZvaWQpc2V0QmxvY2tOb25Mb2NhbEltYWdlczog
KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6IGZsYWcgZm9yS2V5OiBXZWJL
aXRCbG9ja05vbkxvY2FsSW1hZ2VzS2V5XTsKK30KKworLSAoQk9PTClibG9ja05vbkxvY2FsSW1h
Z2VzCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdlYktpdEJsb2NrTm9u
TG9jYWxJbWFnZXNLZXldOworfQorCiAtICh2b2lkKXNldEF1dG9zYXZlczooQk9PTClmbGFnCiB7
CiAgICAgX3ByaXZhdGUtPmF1dG9zYXZlcyA9IGZsYWc7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFu
Z2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTM2MDllMmUzZWNhMTFlMjNjYzA5NjM2NDFk
ZjNmYzYzOTZmNzA2MC4uNGM0NjFjNDZiYmRlOTBjMzNjZDI3NDU5N2E4NTIwMjE5NjAxNTY2MCAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIxIEBACisyMDEyLTA5LTA0ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9hZGVyIEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgK
KworICAgICAgICBBZGQgdGhlIG5ldyBCbG9ja05vbkxvY2FsSW1hZ2VzIHRvIG92ZXJyaWRlUHJl
ZmVyZW5jZXMgaW4KKyAgICAgICAgRFJUVGVzdFJ1bm5lci4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RS
VFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJl
bmNlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5j
cHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6cmVzZXQpOgorICAgICAgICAoV2ViUHJlZmVy
ZW5jZXM6OmFwcGx5VG8pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlBy
ZWZlcmVuY2VzLmg6CisgICAgICAgIChXZWJQcmVmZXJlbmNlcyk6CisKIDIwMTItMDktMDMgIFJ5
dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdIENoYW5n
ZSB0aGUgZm9jdXMgd2hlbiB0aGUgd2ViIHZpZXcgaXMgY2xpY2tlZCBpbiBNaW5pQnJvd3NlciBh
bmQgRVdlYkxhdW5jaGVyCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9EUlRUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRl
c3RSdW5uZXIuY3BwCmluZGV4IGI3ZTEyOTExM2RlNGFjM2M4NDI0OGJiMGQxM2UxYzRhNWQ4MjFj
NjAuLjljMTFkYzU3NzRjN2IxY2Q5MzI5MWQ1Zjc1ZWRkZWU5YjYzOTkwMjQgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCisrKyBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwCkBAIC0xNTYwLDYg
KzE1NjAsOCBAQCB2b2lkIERSVFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZShjb25zdCBD
cHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaQogICAgICAgICBwcmVmcy0+amF2YVNj
cmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSA9IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUp
OwogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RGlzcGxheUltYWdlc0tleSIpCiAgICAgICAg
IHByZWZzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVl
KTsKKyAgICBlbHNlIGlmIChrZXkgPT0gIldlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNLZXkiKQor
ICAgICAgICBwcmVmcy0+YmxvY2tOb25Mb2NhbEltYWdlcyA9IGNwcFZhcmlhbnRUb0Jvb2wodmFs
dWUpOwogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0UGx1Z2luc0VuYWJsZWQiKQogICAgICAg
ICBwcmVmcy0+cGx1Z2luc0VuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAgICBl
bHNlIGlmIChrZXkgPT0gIldlYktpdERPTVBhc3RlQWxsb3dlZFByZWZlcmVuY2VLZXkiKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3Bw
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCmluZGV4
IGM0ZGUwYWJjMTQ0NTBhMTA5YWFjYTdmOTc3YTI5ZTg5MzliMjZjZTQuLjFmZjVlYjQ5M2E0ZTQ0
NzM5OTc4ZmY4MTUwYzAxMTYzYThiNWFlZmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTg3LDYgKzg3LDcgQEAgdm9pZCBXZWJQ
cmVmZXJlbmNlczo6cmVzZXQoKQogICAgIGphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHkgPSB0cnVlOwogICAgIGphdmFTY3JpcHRFbmFibGVkID0gdHJ1ZTsKICAgICBsb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkgPSB0cnVlOworICAgIGJsb2NrTm9uTG9jYWxJbWFnZXMgPSBmYWxz
ZTsKICAgICBsb2NhbFN0b3JhZ2VFbmFibGVkID0gdHJ1ZTsKICAgICBvZmZsaW5lV2ViQXBwbGlj
YXRpb25DYWNoZUVuYWJsZWQgPSB0cnVlOwogICAgIHBsdWdpbnNFbmFibGVkID0gdHJ1ZTsKQEAg
LTIwMiw2ICsyMDMsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdl
YlZpZXcpCiAgICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRp
Y2FsbHkoamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSk7CiAgICAgc2V0dGlu
Z3MtPnNldEphdmFTY3JpcHRFbmFibGVkKGphdmFTY3JpcHRFbmFibGVkKTsKICAgICBzZXR0aW5n
cy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7
CisgICAgc2V0dGluZ3MtPnNldEJsb2NrTm9uTG9jYWxJbWFnZXMoYmxvY2tOb25Mb2NhbEltYWdl
cyk7CiAgICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQobG9jYWxTdG9yYWdlRW5h
YmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZChvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRQ
bHVnaW5zRW5hYmxlZChwbHVnaW5zRW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAppbmRleCBjMzY1NTNiMzU0Njk2NGM3NmYyOTkxNmE5
ZWE5YjllMmEyM2UyNGIyLi5kY2FlOGFhYTEzMjA3MmQ0Y2FmMjRkYzc1ZGYzYWVhOTliYTEyZTI1
IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgK
QEAgLTg5LDYgKzg5LDcgQEAgc3RydWN0IFdlYlByZWZlcmVuY2VzIHsKICAgICBib29sIGphdmFT
Y3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHk7CiAgICAgYm9vbCBqYXZhU2NyaXB0RW5h
YmxlZDsKICAgICBib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsKKyAgICBib29sIGJsb2Nr
Tm9uTG9jYWxJbWFnZXM7CiAgICAgYm9vbCBsb2NhbFN0b3JhZ2VFbmFibGVkOwogICAgIGJvb2wg
b2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkOwogICAgIGJvb2wgcGx1Z2luc0VuYWJs
ZWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggOTJkMmIyMzJmNDM3N2MxMzMwODZhYTIxNDJkZWNjNTlhZDZlMDI2OS4uMjc0
MTQ2MTg0NzRkMGIzNjc5ZjA1MjMxYjI5MDVhNTUzZDgwZDA1YiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0
IEBACisyMDEyLTA5LTA0ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
QWRkIENhY2hlZFJlc291cmNlTG9hZGVyIEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAg
ICAgICBBZGQgdGVzdHMgdG8gY2hlY2sgYXV0b0xvYWRJbWFnZXMgYW5kIGJsb2NrTm9uTG9jYWxJ
bWFnZXMgY2FuIGJsb2NrCisgICAgICAgIGltYWdlcyBhbmQgY2FuIHJlbG9hZCB0aGVtIGluIHBs
YWNlIHdoZW4gc2V0dGluZyBpcyBzZXQgdG8gdW5ibG9jay4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2ZpbGUtaW1hZ2UtYWxs
b3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWlt
YWdlLWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2Jsb2Nr
ZWQtaHR0cC1pbWFnZS1yZWxvYWRlZC13aGVuLW5vbi1sb2NhbC1pbWFnZS1yZWVuYWJsZWQtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1odHRw
LWltYWdlLXJlbG9hZGVkLXdoZW4tbm9uLWxvY2FsLWltYWdlLXJlZW5hYmxlZC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1pbWFnZS1yZWxvYWRlZC13aGVu
LWltYWdlLXJlZW5hYmxlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVz
dHMvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tl
ZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogaHR0cC90ZXN0cy9taXNjL2h0dHAtaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtbm9uLWxv
Y2FsLWltYWdlLWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNj
L2ltYWdlLWxvYWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxlZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1p
bWFnZXMtZGlzYWJsZWQuaHRtbDogQWRkZWQuCisKIDIwMTItMDktMDMgIEtlbmljaGkgSXNoaWJh
c2hpICA8YmFzaGlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gVW5yZXZpZXdl
ZCB0ZXN0IGV4cGVjdGF0aW9ucyB1cGRhdGUgYWZ0ZXIgcjEyNzQxMApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWlt
YWdlLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1p
bWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjAxYTdhNTQ4ZDMwMTM1N2Q1NmUwZjc1OTE3MmIzMjI2ZmE2MzBiMjkKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9maWxlLWltYWdlLWFsbG93ZWQt
d2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw5IEBA
Citsb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQu
aHRtbCAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBsb2FkZXIvZmlsZS1pbWFn
ZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRtbCwgbWFpbiBkb2N1bWVu
dCBVUkwgZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRt
bCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQorbG9hZGVyL2ZpbGUt
aW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwgLSBkaWRSZWNl
aXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRo
LW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMD4KK3Jlc291
cmNlcy9vdmFsLnBuZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCByZXNvdXJj
ZXMvb3ZhbC5wbmcsIG1haW4gZG9jdW1lbnQgVVJMIGZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5v
bi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNw
b25zZSAobnVsbCkKK2xvYWRlci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwtaW1h
Z2UtYmxvY2tlZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZworcmVzb3VyY2VzL292YWwucG5nIC0g
ZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3BvbnNlIHJlc291cmNlcy9vdmFsLnBuZywgaHR0
cCBzdGF0dXMgY29kZSAwPgorcmVzb3VyY2VzL292YWwucG5nIC0gZGlkRmluaXNoTG9hZGluZwor
RmlsZSBpbWFnZXMgc2hvdWxkIGJlIGxvYWRlZCBpZiBub24tbG9jYWwgaW1hZ2VzIGRpc2FibGVk
LgorVXNlIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzIHRvIG1ha2Ugc3VyZSB0aGUgaW1hZ2UgaXMg
bm90IGxvYWRlZC4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1p
bWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1i
bG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU2YjBjYzVmZjYyMGM0MDk4YTEzYTY5NDYwMzUxNTRk
NDcwNzVkOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUt
aW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwKQEAgLTAsMCAr
MSwyMyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkKK3sK
KyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNU
ZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpOwor
ICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGlzcGxheUltYWdl
c0tleSIsIDEpOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0
QmxvY2tOb25Mb2NhbEltYWdlc0tleSIsIDEpOworICAgICAgICB0ZXN0UnVubmVyLnF1ZXVlUmVs
b2FkKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+CisgIEZpbGUgaW1hZ2VzIHNob3VsZCBiZSBsb2FkZWQgaWYgbm9uLWxvY2FsIGltYWdl
cyBkaXNhYmxlZC48YnI+CisgIFVzZSByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcyB0byBtYWtlIHN1
cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQuPGJyPgorICA8aW1nIHNyYz0iLi4vaW1hZ2VzL3Jl
c291cmNlcy9vdmFsLnBuZyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrZWQtaHR0cC1pbWFnZS1yZWxvYWRlZC13aGVu
LW5vbi1sb2NhbC1pbWFnZS1yZWVuYWJsZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2Jsb2NrZWQtaHR0cC1pbWFnZS1yZWxvYWRlZC13aGVuLW5vbi1sb2NhbC1p
bWFnZS1yZWVuYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjY3NTZkYWY5ZWM3YzA5YTRi
N2EwMDA3YzYyOWQxZmU3Mzc3YjlhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVkLXdoZW4tbm9uLWxvY2Fs
LWltYWdlLXJlZW5hYmxlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAoraHR0cDovLzEy
Ny4wLjAuMTo4MDAwL21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVkLXdoZW4tbm9uLWxv
Y2FsLWltYWdlLXJlZW5hYmxlZC5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3Qg
VVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaHR0cC1pbWFnZS1yZWxvYWRl
ZC13aGVuLW5vbi1sb2NhbC1pbWFnZS1yZWVuYWJsZWQuaHRtbCwgbWFpbiBkb2N1bWVudCBVUkwg
aHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVkLXdo
ZW4tbm9uLWxvY2FsLWltYWdlLXJlZW5hYmxlZC5odG1sLCBodHRwIG1ldGhvZCBHRVQ+IHJlZGly
ZWN0UmVzcG9uc2UgKG51bGwpCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9ibG9ja2VkLWh0
dHAtaW1hZ2UtcmVsb2FkZWQtd2hlbi1ub24tbG9jYWwtaW1hZ2UtcmVlbmFibGVkLmh0bWwgLSBk
aWRSZWNlaXZlUmVzcG9uc2UgPE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVkLXdoZW4tbm9uLWxvY2FsLWltYWdlLXJlZW5h
YmxlZC5odG1sLCBodHRwIHN0YXR1cyBjb2RlIDIwMD4KK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
aXNjL3Jlc291cmNlcy9jb21wYXNzLmpwZyAtIHdpbGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0
IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvY29tcGFzcy5qcGcsIG1h
aW4gZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaHR0cC1p
bWFnZS1yZWxvYWRlZC13aGVuLW5vbi1sb2NhbC1pbWFnZS1yZWVuYWJsZWQuaHRtbCwgaHR0cCBt
ZXRob2QgR0VUPiByZWRpcmVjdFJlc3BvbnNlIChudWxsKQoraHR0cDovLzEyNy4wLjAuMTo4MDAw
L21pc2MvYmxvY2tlZC1odHRwLWltYWdlLXJlbG9hZGVkLXdoZW4tbm9uLWxvY2FsLWltYWdlLXJl
ZW5hYmxlZC5odG1sIC0gZGlkRmluaXNoTG9hZGluZworaHR0cDovLzEyNy4wLjAuMTo4MDAwL21p
c2MvcmVzb3VyY2VzL2NvbXBhc3MuanBnIC0gZGlkUmVjZWl2ZVJlc3BvbnNlIDxOU1VSTFJlc3Bv
bnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jlc291cmNlcy9jb21wYXNzLmpwZywgaHR0
cCBzdGF0dXMgY29kZSAzMDQ+CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMv
Y29tcGFzcy5qcGcgLSBkaWRGaW5pc2hMb2FkaW5nCitCbG9ja2VkIGh0dHAgaW1hZ2VzIHNob3Vs
ZCByZWxvYWQgaW4gcGxhY2Ugd2hlbiBub24tbG9jYWwgaW1hZ2UgaXMgZW5hYmxlZC4KK1VzZSBy
ZXNvdXJjZSBsb2FkIGNhbGxiYWNrcyB0byBtYWtlIHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2Fk
ZWQuCitSZXN1bHQgb25seSB2YWxpZCBpZiBodHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRoLW5v
bi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL2Jsb2NrZWQtaHR0cC1pbWFnZS1yZWxvYWRlZC13aGVuLW5vbi1sb2NhbC1p
bWFnZS1yZWVuYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2Vk
LWh0dHAtaW1hZ2UtcmVsb2FkZWQtd2hlbi1ub24tbG9jYWwtaW1hZ2UtcmVlbmFibGVkLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTUxZjZlOTQxMmFkM2RjNTllOGQyMjZmYWJmODU0YThlM2M0ZjczNAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2VkLWh0dHAt
aW1hZ2UtcmVsb2FkZWQtd2hlbi1ub24tbG9jYWwtaW1hZ2UtcmVlbmFibGVkLmh0bWwKQEAgLTAs
MCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBydW5UZXN0KCkK
K3sKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygp
OworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGlzcGxheUlt
YWdlc0tleSIsIDEpOworICAgICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2Vi
S2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleSIsIDEpOworICAgICAgICB0ZXN0UnVubmVyLnF1ZXVl
UmVsb2FkKCk7CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRC
bG9ja05vbkxvY2FsSW1hZ2VzS2V5IiwgMCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIEJsb2NrZWQgaHR0cCBpbWFnZXMgc2hvdWxk
IHJlbG9hZCBpbiBwbGFjZSB3aGVuIG5vbi1sb2NhbCBpbWFnZSBpcyBlbmFibGVkLjxicj4KKyAg
VXNlIHJlc291cmNlIGxvYWQgY2FsbGJhY2tzIHRvIG1ha2Ugc3VyZSB0aGUgaW1hZ2UgaXMgbm90
IGxvYWRlZC48YnI+CisgIFJlc3VsdCBvbmx5IHZhbGlkIGlmIGh0dHAtaW1hZ2UtbG9hZC1ibG9j
a2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRtbDxicj4KKyAgPGltZyBzcmM9InJl
c291cmNlcy9jb21wYXNzLmpwZyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1h
Z2UtcmVlbmFibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9i
bG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42NjAzZjRkODQyOTk1NDc2NmJjZjc4OWMwNGE2MjZlZDJlNTBmOGRiCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrZWQtaW1hZ2Ut
cmVsb2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJsZWQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTEg
QEAKKzx1bmtub3duPiAtIGRpZEZpbmlzaExvYWRpbmcKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9t
aXNjL2Jsb2NrZWQtaW1hZ2UtcmVsb2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJsZWQuaHRtbCAtIHdp
bGxTZW5kUmVxdWVzdCA8TlNVUkxSZXF1ZXN0IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlz
Yy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLmh0bWwsIG1haW4g
ZG9jdW1lbnQgVVJMIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaW1hZ2UtcmVs
b2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJsZWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRpcmVj
dFJlc3BvbnNlIChudWxsKQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvYmxvY2tlZC1pbWFn
ZS1yZWxvYWRlZC13aGVuLWltYWdlLXJlZW5hYmxlZC5odG1sIC0gZGlkUmVjZWl2ZVJlc3BvbnNl
IDxOU1VSTFJlc3BvbnNlIGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaW1hZ2Ut
cmVsb2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJsZWQuaHRtbCwgaHR0cCBzdGF0dXMgY29kZSAyMDA+
CitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvY29tcGFzcy5qcGcgLSB3aWxs
U2VuZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2Mv
cmVzb3VyY2VzL2NvbXBhc3MuanBnLCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4x
OjgwMDAvbWlzYy9ibG9ja2VkLWltYWdlLXJlbG9hZGVkLXdoZW4taW1hZ2UtcmVlbmFibGVkLmh0
bWwsIGh0dHAgbWV0aG9kIEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKK2h0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9taXNjL2Jsb2NrZWQtaW1hZ2UtcmVsb2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJs
ZWQuaHRtbCAtIGRpZEZpbmlzaExvYWRpbmcKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNjL3Jl
c291cmNlcy9jb21wYXNzLmpwZyAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBo
dHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9yZXNvdXJjZXMvY29tcGFzcy5qcGcsIGh0dHAgc3Rh
dHVzIGNvZGUgMzA0PgoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvcmVzb3VyY2VzL2NvbXBh
c3MuanBnIC0gZGlkRmluaXNoTG9hZGluZworQmxvY2tlZCBpbWFnZXMgc2hvdWxkIHJlbG9hZCBp
biBwbGFjZSB3aGVuIGltYWdlIGlzIGVuYWJsZWQuCitVc2UgcmVzb3VyY2UgbG9hZCBjYWxsYmFj
a3MgdG8gbWFrZSBzdXJlIHRoZSBpbWFnZSBpcyBub3QgbG9hZGVkLgorUmVzdWx0IG9ubHkgdmFs
aWQgaWYgaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgcGFzc2Vz
LgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2tlZC1pbWFn
ZS1yZWxvYWRlZC13aGVuLWltYWdlLXJlZW5hYmxlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9taXNjL2Jsb2NrZWQtaW1hZ2UtcmVsb2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJsZWQuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NTcwMmUwNWNmZmFkNTk5MGFlZmVhMTZiYTA3MmRiNGM0OTg4ODZlCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrZWQtaW1h
Z2UtcmVsb2FkZWQtd2hlbi1pbWFnZS1yZWVuYWJsZWQuaHRtbApAQCAtMCwwICsxLDI0IEBACis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7CisgICAgICAgIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IiwgMCk7
CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRCbG9ja05ldHdv
cmtJbWFnZXNLZXkiLCAwKTsKKyAgICAgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworICAg
ICAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGlzcGxheUltYWdlc0tl
eSIsIDEpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5U
ZXN0KCkiPgorICBCbG9ja2VkIGltYWdlcyBzaG91bGQgcmVsb2FkIGluIHBsYWNlIHdoZW4gaW1h
Z2UgaXMgZW5hYmxlZC48YnI+CisgIFVzZSByZXNvdXJjZSBsb2FkIGNhbGxiYWNrcyB0byBtYWtl
IHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQuPGJyPgorICBSZXN1bHQgb25seSB2YWxpZCBp
ZiBpbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCBwYXNzZXMuPGJy
PgorICA8aW1nIHNyYz0icmVzb3VyY2VzL2NvbXBhc3MuanBnIj4KKzwvYm9keT4KKzwvaHRtbD4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2h0dHAtaW1hZ2UtbG9h
ZC1ibG9ja2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2h0dHAtaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtbm9u
LWxvY2FsLWltYWdlLWJsb2NrZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdkMGJhZjA3ODg3
ZTRlNmQzMjJjMjRmNTM5NzEzOGU3ZDViNTQ4NjgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL21pc2MvaHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1ub24tbG9j
YWwtaW1hZ2UtYmxvY2tlZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw2IEBACis8dW5rbm93bj4g
LSBkaWRGaW5pc2hMb2FkaW5nCitodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9odHRwLWltYWdl
LWxvYWQtYmxvY2tlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwgLSB3aWxsU2Vu
ZFJlcXVlc3QgPE5TVVJMUmVxdWVzdCBVUkwgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvaHR0
cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC5odG1sLCBt
YWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9odHRwLWltYWdlLWxv
YWQtYmxvY2tlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwsIGh0dHAgbWV0aG9k
IEdFVD4gcmVkaXJlY3RSZXNwb25zZSAobnVsbCkKK2h0dHA6Ly8xMjcuMC4wLjE6ODAwMC9taXNj
L2h0dHAtaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRt
bCAtIGRpZFJlY2VpdmVSZXNwb25zZSA8TlNVUkxSZXNwb25zZSBodHRwOi8vMTI3LjAuMC4xOjgw
MDAvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9j
a2VkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgorSHR0cCBJbWFnZXMgc2hvdWxkIG5vdCBi
ZSBsb2FkZWQgaWYgbm9uLWxvY2FsIGltYWdlcyBkaXNhYmxlZC4KK1VzZSByZXNvdXJjZSBsb2Fk
IGNhbGxiYWNrcyB0byBtYWtlIHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9odHRwLWltYWdlLWxvYWQtYmxvY2tl
ZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvaHR0cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxv
Y2tlZC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0OWRmYjhjYmFlYWMzZjYzNzJjMmNkYzlhZGFkNjg1Y2Ey
YjViODkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaHR0
cC1pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC5odG1sCkBA
IC0wLDAgKzEsMjIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gcnVuVGVz
dCgpCit7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIHRlc3RSdW5uZXIu
ZHVtcEFzVGV4dCgpOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdERpc3Bs
YXlJbWFnZXNLZXkiLCAxKTsKKyAgICAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2Uo
IldlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNLZXkiLCAxKTsKKyAgICAgICAgdGVzdFJ1bm5lci5x
dWV1ZVJlbG9hZCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5UZXN0KCkiPgorICBIdHRwIEltYWdlcyBzaG91bGQgbm90IGJlIGxvYWRlZCBpZiBub24t
bG9jYWwgaW1hZ2VzIGRpc2FibGVkLjxicj4KKyAgVXNlIHJlc291cmNlIGxvYWQgY2FsbGJhY2tz
IHRvIG1ha2Ugc3VyZSB0aGUgaW1hZ2UgaXMgbm90IGxvYWRlZC48YnI+CisgIDxpbWcgc3JjPSJy
ZXNvdXJjZXMvY29tcGFzcy5qcGciPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2Vz
LWRpc2FibGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9pbWFn
ZS1sb2FkLWJsb2NrZWQtd2l0aC1pbWFnZXMtZGlzYWJsZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjU2Njg2OTNiMWQ5NmQ3MTA0YmE2MTE0NDNlZTZhMWUzMDE0MjIxMzgKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdp
dGgtaW1hZ2VzLWRpc2FibGVkLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKK2h0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9taXNjL2ltYWdlLWxvYWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxl
ZC5odG1sIC0gd2lsbFNlbmRSZXF1ZXN0IDxOU1VSTFJlcXVlc3QgVVJMIGh0dHA6Ly8xMjcuMC4w
LjE6ODAwMC9taXNjL2ltYWdlLWxvYWQtYmxvY2tlZC13aXRoLWltYWdlcy1kaXNhYmxlZC5odG1s
LCBtYWluIGRvY3VtZW50IFVSTCBodHRwOi8vMTI3LjAuMC4xOjgwMDAvbWlzYy9pbWFnZS1sb2Fk
LWJsb2NrZWQtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbCwgaHR0cCBtZXRob2QgR0VUPiByZWRp
cmVjdFJlc3BvbnNlIChudWxsKQoraHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvaW1hZ2UtbG9h
ZC1ibG9ja2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgLSBkaWRSZWNlaXZlUmVzcG9uc2Ug
PE5TVVJMUmVzcG9uc2UgaHR0cDovLzEyNy4wLjAuMTo4MDAwL21pc2MvaW1hZ2UtbG9hZC1ibG9j
a2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwsIGh0dHAgc3RhdHVzIGNvZGUgMjAwPgorSW1h
Z2VzIHNob3VsZCBub3QgYmUgbG9hZGVkIGlmIGF1dG9tYXRpY2FsbHkgbG9hZCBpbWFnZXMgc2V0
dGluZyBpcyBvZmYuCitVc2UgcmVzb3VyY2UgbG9hZCBjYWxsYmFja3MgdG8gbWFrZSBzdXJlIHRo
ZSBpbWFnZSBpcyBub3QgbG9hZGVkLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2VzLWRpc2FibGVkLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvaW1hZ2UtbG9hZC1ibG9ja2VkLXdpdGgtaW1hZ2Vz
LWRpc2FibGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjYzMjFmMDQ3ODllMjhmYmI4NWZmZWM1ODU1ZWYw
MDBhMzhkZDdjOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlz
Yy9pbWFnZS1sb2FkLWJsb2NrZWQtd2l0aC1pbWFnZXMtZGlzYWJsZWQuaHRtbApAQCAtMCwwICsx
LDIyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2Z1bmN0aW9uIHJ1blRlc3QoKQorewor
ICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5IiwgMCk7CisgICAgICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRC
bG9ja05ldHdvcmtJbWFnZXNLZXkiLCAwKTsKKyAgICAgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9h
ZCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0
KCkiPgorICBJbWFnZXMgc2hvdWxkIG5vdCBiZSBsb2FkZWQgaWYgYXV0b21hdGljYWxseSBsb2Fk
IGltYWdlcyBzZXR0aW5nIGlzIG9mZi48YnI+CisgIFVzZSByZXNvdXJjZSBsb2FkIGNhbGxiYWNr
cyB0byBtYWtlIHN1cmUgdGhlIGltYWdlIGlzIG5vdCBsb2FkZWQuPGJyPgorICA8aW1nIHNyYz0i
cmVzb3VyY2VzL2NvbXBhc3MuanBnIj4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162113</attachid>
            <date>2012-09-04 15:31:46 -0700</date>
            <delta_ts>2012-09-05 12:53:08 -0700</delta_ts>
            <desc>Rewrite layout tests to use naturalHeight/Width to detech image load. Fix mac WebPreferences.</desc>
            <filename>bug-95478-20120904153129.patch</filename>
            <type>text/plain</type>
            <size>32831</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NDM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI2MjYwYTZkNWU0NTA0
ZTQwMTUzYjYwMzU5YmFiN2UyZjliODQ0Yy4uM2U0NzliY2I2MjdmZmM3NDFmZTUzNGVmZjNjYTU3
YjliYzQ3MTA2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCbG9ja05vbkxvY2FsSW1hZ2VzIGlzIHNpbWlsYXIgdG8g
QXV0b0xvYWRJbWFnZXMuIEJsb2NrTm9uTG9jYWxJbWFnZXMKKyAgICAgICAgcGVyZm9ybXMgdGhl
IGFkZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9uLWxvY2FsIHVybAor
ICAgICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLiBUaGVyZWZvcmUgaXQgc2hvdWxkIG9ubHkg
YWZmZWN0IGxvY2FsCisgICAgICAgIGRvY3VtZW50cy4KKworICAgICAgICBCbG9ja05vbkxvY2Fs
SW1hZ2VzIGFuZCBBdXRvTG9hZEltYWdlcyBiZWhhdmUgYXMgYW4gQU5EIGNvbmRpdGlvbiBvbgor
ICAgICAgICB3aGV0aGVyIHRvIGxvYWQgYW4gaW1hZ2UuIEFuIGltYWdlIGlzIGxvYWRlZCBpZjoK
KyAgICAgICAgQXV0b0xvYWRJbWFnZXMgJiYgKCFCbG9ja05vbkxvY2FsSW1hZ2VzIHx8IHNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCkKKworICAgICAgICBUaGlzIGlzIHVzZWQgaW4gdGhlIGlt
cGxlbWVudGF0aW9uIG9mIEFuZHJvaWQgV2ViVmlldworICAgICAgICBXZWJTZXR0aW5ncy5zZXRC
bG9ja05ldHdvcmtJbWFnZSBvbiB0b3Agb2YgYSBmdWxsIENocm9taXVtIHN0YWNrLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRl
ci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvYmxvY2stbm9uLWxvY2FsLWltYWdlLWJsb2Nr
cy1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICBBbHNvIHNldCBC
bG9ja05vbkxvY2FsSW1hZ2VzIHZhbHVlIGZyb20gc2V0dGluZ3MuCisKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OmxvYWQpOgorICAgICAgICBNb2RpZmllZCB0byBjaGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSBs
b2FkLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgIEluaXRpYWxpemUgbmV3IHByaXZhdGUgdmFyaWFibGUuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAg
ICBDaGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSByZXF1ZXN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMpOgorICAgICAgICBSZWZh
Y3RvciBvdXQgZHVwbGljYXRlZCBjb2RlIHdpdGggc2V0QmxvY2tOb25Mb2NhbEltYWdlcy4KKwor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyk6CisgICAgICAgIE1pcnJvcnMgc2V0QXV0b0xvYWRJ
bWFnZXMuIFdpbGwgcmVsb2FkIGltYWdlcyB0aGF0IGFyZSBubyBsb25nZXIKKyAgICAgICAgYmxv
Y2tlZCBieSBzZXR0aW5nLgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQpOgorICAgICAgICBDb21iaW5lZCB0aGUgY2hlY2sgZm9y
IGJvdGggc2V0dGluZ3MgdXNpbmcgdGhlIGNvbmRpdGlvbiBkZXNjcmliZWQKKyAgICAgICAgYWJv
dmUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFn
ZXNJZk5vdERlZmVycmVkKToKKyAgICAgICAgUmVmYWN0b3JlZCBvdXQgcHJpdmF0ZSBtZXRob2Qg
dG8gcmVsb2FkIGltYWdlcyB0aGF0IGlzIG5vIGxvbmdlcgorICAgICAgICBibG9ja2VkLiBDYWxs
ZWQgaW4gc2V0QXV0b0xvYWRJbWFnZXMgYW5kIHNldEJsb2NrTm9uTG9jYWxJbWFnZXMuCisKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENh
Y2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpibG9ja05vbkxvY2FsSW1hZ2VzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldGxvYWRJbWFnZXNTZXR0aW5nc0luQWxsRnJhbWVzKToKKyAg
ICAgICAgUmVuYW1lZCBhbmQgbW9kaWZpZWQgdG8gc2V0IGJvdGggc2V0dGluZ3MgaW4gYWxsCisg
ICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVycy4KKworICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6bG9hZEltYWdlc1NldHRpbmdzVGltZXJGaXJlZCk6CisgICAgICAgIFJlbmFtZWQgdG8g
cmVmbGVjdCBzZXR0aW5nIGJvdGggdmFyaWFibGVzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5n
cy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmJs
b2NrTm9uTG9jYWxJbWFnZXMpOgorCiAyMDEyLTA5LTAzICBBbmRyZWFzIEtsaW5nICA8a2xpbmdA
d2Via2l0Lm9yZz4KIAogICAgICAgICBTaGFyZSBpbW11dGFibGUgRWxlbWVudEF0dHJpYnV0ZURh
dGEgYmV0d2VlbiBlbGVtZW50cyB3aXRoIGlkZW50aWNhbCBhdHRyaWJ1dGVzLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwppbmRleCBmYzQ4ZTU5ZTBhZTY2YmEwNDA1OTE4NWI4NmZmNDJmNTQ4OTE2
ZWM5Li4yYWJkZGJiZjliMzkzNGRkZmQ3Mzg3YWEzYzY4NzVlNzgwYWEzYTUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTA4LTMwICBCbyBMaXUgIDxi
b2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9hZGVyIEJs
b2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGQgdGhlIG5ldyBCbG9ja05vbkxvY2FsSW1hZ2VzIHNldHRpbmcg
dG8gV2ViU2V0dGluZ3MuCisKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAg
ICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGlu
Z3NJbXBsOjpzZXRCbG9ja05vbkxvY2FsSW1hZ2VzKToKKyAgICAgICAgKFdlYktpdCk6CisgICAg
ICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAoV2ViU2V0dGluZ3NJbXBsKToK
KwogMjAxMi0wOS0wMyAgVGFvIEJhaSAgPG1pY2hhZWxiYWlAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZGVkIEFORFJPSURfR0RCU0VSVkVSIGRlZmluaXRpb24gZm9yIEFudApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCmluZGV4IGU4Yjk2OWQxZTFjMTk1MDJlNDcxY2VhODVjMDExNWM5Y2Y5NGNlYjguLjg3YjE0
MWIwMTE2ZWY3N2U5MWQyMjVjMjNmY2NkNDYyNzNmYTgxMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAxMi0wOS0wNCAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFkZCBDYWNoZWRSZXNvdXJjZUxvYWRlciBCbG9ja05vbkxvY2FsSW1hZ2VzIHNl
dHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1
NDc4CisKKyAgICAgICAgQWRkIHRoZSBuZXcgQmxvY2tOb25Mb2NhbEltYWdlcyBzZXR0aW5nIHRv
IFdlYlByZWZlcmVuY2VzLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJl
bmNlcy5tbToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAg
ICAoLVtXZWJQcmVmZXJlbmNlcyBzZXRCbG9ja05vbkxvY2FsSW1hZ2VzOl0pOgorICAgICAgICAo
LVtXZWJQcmVmZXJlbmNlcyBibG9ja05vbkxvY2FsSW1hZ2VzXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWQ6XSk6
CisKIDIwMTItMDktMDEgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZGVkICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyLmg+LgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBiNTc3ZTZmNDllYTQ5MjViZjJiODM2ZWJkZDM1OTRhYzU3OTQ2MmMyLi45
MDU1NTA2MDM2MTkwOWY4MDJjYzljMmVlOGQwYTk0ZDY3NDdjNGRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtODkyLDYgKzg5Miw3IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczI2c2V0TmVlZHNT
aXRlU3BlY2lmaWNRdWlya3NFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRGVFBEaXJlY3Rv
cnlUZW1wbGF0ZVBhdGhFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3Nl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlc0ViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseUViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MyMnNldEJsb2Nr
Tm9uTG9jYWxJbWFnZXNFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMjdzZXRMb2NhbFN0b3JhZ2VE
YXRhYmFzZVBhdGhFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyN3NldFNw
YXRpYWxOYXZpZ2F0aW9uRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MyOHNldEZvcmNl
RlRQRGlyZWN0b3J5TGlzdGluZ3NFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
aW5kZXggZmZhMDBhZDMzZjdlNTQ1ZTA5ZjUyMWRkNDhiMjg2YjA3NmQyZmI4Ni4uZTFkY2ViMGI0
OTI3NGEzNzFhYTlkYjIzNDYwODgzZDg5N2U1Y2RiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC02NDcsNiArNjQ3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVn
aW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogCiAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2V0dGluZ3MoKTsKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5j
YWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhzZXR0aW5ncyAmJiBzZXR0
aW5ncy0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEJsb2NrTm9uTG9jYWxJbWFnZXMoc2V0dGlu
Z3MgPyBzZXR0aW5ncy0+YmxvY2tOb25Mb2NhbEltYWdlcygpIDogZmFsc2UpOwogCiAgICAgaWYg
KG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgU3RyaW5nIGRuc1ByZWZldGNoQ29udHJvbCA9
IG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJYLUROUy1QcmVm
ZXRjaC1Db250cm9sIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdl
LmNwcAppbmRleCBiZTRjZWE1Y2YyMjI4YTVmZDk2YjQ4M2QzMWQ0ZjI3OWJhMzM2ZDE1Li5jNjIz
MjA4MDQxMDY2MTc2MDdiOWNiZjMwNzRhZDg0YWNhNmM0NmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgQ2FjaGVkSW1h
Z2U6On5DYWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCBjYWNoZWRS
ZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAoIWNhY2hlZFJlc291cmNl
TG9hZGVyIHx8ICFjYWNoZWRSZXNvdXJjZUxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobV9y
ZXNvdXJjZVJlcXVlc3QudXJsKCkpKQogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChjYWNo
ZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBzZXRMb2FkaW5n
KGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IGIyNThjMDU3ZmYzYWYxMTE5NTgwZGUxYWY2MDg0MDUzMmY2
YTBhNzUuLjBjNDJhNDM1YTE0OTg3NDdjNTM1YjMzNDU0ZDdlYjE0NmQzNGEwNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAi
UGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1
ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYg
KzExNiw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVlc3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdl
Q29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVy
OjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0
b0xvYWRJbWFnZXModHJ1ZSkKKyAgICAsIG1fYmxvY2tOb25Mb2NhbEltYWdlcyhmYWxzZSkKICAg
ICAsIG1fYWxsb3dTdGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE2MCw3ICsxNjIsNyBA
QCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlcXVlc3RJbWFnZShSZXNvdXJjZVJlcQogICAgICAgICB9CiAgICAgfQogICAgIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZEltYWdlPiByZXNvdXJjZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFn
ZSo+KHJlcXVlc3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVz
dCwgU3RyaW5nKCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpKTsKLSAg
ICBpZiAoYXV0b0xvYWRJbWFnZXMoKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVk
c0xvYWQoKSkKKyAgICBpZiAoIXNob3VsZERlZmVySW1hZ2VMb2FkKHJlcXVlc3QudXJsKCkpICYm
IHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXNvdXJj
ZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgIHJldHVy
biByZXNvdXJjZTsKIH0KQEAgLTYyOSwxMyArNjMxLDQyIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQogICAgIGlmICghbV9hdXRvTG9h
ZEltYWdlcykKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJl
ZCgpOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRCbG9ja05vbkxvY2FsSW1h
Z2VzKGJvb2wgZW5hYmxlKQoreworICAgIGlmIChlbmFibGUgPT0gbV9ibG9ja05vbkxvY2FsSW1h
Z2VzKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Jsb2NrTm9uTG9jYWxJbWFnZXMgPSBlbmFi
bGU7CisKKyAgICBpZiAobV9ibG9ja05vbkxvY2FsSW1hZ2VzKQorICAgICAgICByZXR1cm47CisK
KyAgICByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sK
KyAgICBpZiAoIW1fYXV0b0xvYWRJbWFnZXMpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
aWYgKG1fYmxvY2tOb25Mb2NhbEltYWdlcyAmJiAhU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0
VVJMU2NoZW1lQXNMb2NhbCh1cmwucHJvdG9jb2woKSkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxv
YWRJbWFnZXNJZk5vdERlZmVycmVkKCkKK3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVy
YXRvciBlbmQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRS
ZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+
c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNv
dXJjZTo6SW1hZ2VSZXNvdXJjZSkgewogICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0g
Y29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+KHN0YXRpY19jYXN0PGNvbnN0IENhY2hlZEltYWdlKj4o
cmVzb3VyY2UpKTsKIAotICAgICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpKQor
ICAgICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpICYmICFzaG91bGREZWZlcklt
YWdlTG9hZChpbWFnZS0+dXJsKCkpKQogICAgICAgICAgICAgICAgIGltYWdlLT5sb2FkKHRoaXMs
IGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmlu
ZGV4IDNmMWMyMzNiMDA4ZGY4NDAxYThjMWFiYTExODE3NWRhN2Q4MGZiNWUuLjgwNmY1MWZmYWIx
YmFjYjQwZjZlYTcyYmI2N2NkOTAyNmNhN2VkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBAIC05OCw2ICs5OCwxMSBAQCBw
dWJsaWM6CiAKICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRv
TG9hZEltYWdlczsgfQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisKKyAgICBi
b29sIGJsb2NrTm9uTG9jYWxJbWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrTm9uTG9jYWxJ
bWFnZXM7IH0KKyAgICB2b2lkIHNldEJsb2NrTm9uTG9jYWxJbWFnZXMoYm9vbCk7CisKKyAgICBi
b29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAKICAgICBD
YWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAtMTM2LDYgKzE0MSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1l
ckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQgcGVyZm9ybVBv
c3RMb2FkQWN0aW9ucygpOworCisgICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7
CiAgICAgCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxl
IERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsKQEAgLTE1Myw4ICsxNjAs
OSBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFn
ZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0Cisg
ICAgLy8gMjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBi
b29sIG1fYmxvY2tOb25Mb2NhbEltYWdlcyA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3RhbGVSZXNv
dXJjZXMgOiAxOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBlOTdjNjRmNzNk
Y2IwZTI3YWU0OTY0ZDQ3NWU2MmFiODI5YjNmYzU0Li5kNWZlMDJiOWM0MGQ3MmFjYTVkZGViYTQx
ZjA4NTg0YTI3YjZiMTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNDYsMTAgKzQ2
LDEzIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3Rh
dGljIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMoUGFnZSogcGFn
ZSkKK3N0YXRpYyB2b2lkIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7Ci0g
ICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBw
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VO
ZXh0KCkpIHsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPnNldEF1dG9Mb2FkSW1hZ2VzKHBhZ2UtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSgpKTsKKworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+c2V0QmxvY2tOb25Mb2NhbEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5ibG9ja05v
bkxvY2FsSW1hZ2VzKCkpOworICAgIH0KIH0KIAogLy8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZv
bnQgbWFwIGZvciB0aGUgZ2l2ZW4gc2NyaXB0LiBJZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmlu
ZywgcmVtb3ZlcyB0aGUgZW50cnkgaW5zdGVhZC4KQEAgLTE1MSw2ICsxNTQsNyBAQCBTZXR0aW5n
czo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faXNKYXZhRW5hYmxlZChmYWxzZSkKICAg
ICAsIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXModHJ1ZSkKICAgICAsIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5KGZhbHNlKQorICAgICwgbV9ibG9ja05vbkxvY2FsSW1hZ2VzKGZhbHNl
KQogICAgICwgbV9sb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhmYWxz
ZSkKICAgICAsIG1fcHJpdmF0ZUJyb3dzaW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fY2FyZXRC
cm93c2luZ0VuYWJsZWQoZmFsc2UpCkBAIC0yODYsNyArMjkwLDcgQEAgU2V0dGluZ3M6OlNldHRp
bmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2RpYWdub3N0aWNMb2dnaW5nRW5hYmxlZChmYWxzZSkK
ICAgICAsIG1fdGhpcmRQYXJ0eVN0b3JhZ2VCbG9ja2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBt
X3Njcm9sbGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2xvYWRz
SW1hZ2VzQXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5VGltZXJGaXJlZCkKKyAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1l
cih0aGlzLCAmU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKICAgICAs
IG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoZGVmYXVs
dEluY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKQogewogICAg
IC8vIEEgRnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxp
emUgdGhlIEF0b21pY1N0cmluZwpAQCAtNDUyLDEyICs0NTYsMTkgQEAgdm9pZCBTZXR0aW5nczo6
c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KQogICAgIC8vIFN0YXJ0aW5nIHRoZXNlIGxvYWRzIHN5bmNocm9ub3VzbHkgaXMgbm90IGltcG9y
dGFudC4gIEJ5IHB1dHRpbmcgaXQgb24gYSAwLWRlbGF5LCBwcm9wZXJseSBjbG9zaW5nIHRoZSBQ
YWdlIGNhbmNlbHMgdGhlbQogICAgIC8vIGJlZm9yZSB0aGV5IGhhdmUgYSBjaGFuY2UgdG8gcmVh
bGx5IHN0YXJ0LgogICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzYwNTcyIGZvciBtb3Jl
IGRpc2N1c3Npb24uCi0gICAgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lci5zdGFydE9u
ZVNob3QoMCk7CisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hv
dCgwKTsKK30KKwordm9pZCBTZXR0aW5nczo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyhib29sIGJs
b2NrTm9uTG9jYWxJbWFnZXMpCit7CisgICAgbV9ibG9ja05vbkxvY2FsSW1hZ2VzID0gYmxvY2tO
b25Mb2NhbEltYWdlczsKKworICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFy
dE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9hZGlu
Z1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1h
Z2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2FkaW5n
U2V0dGluZ3MobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaAppbmRleCBmZDRkOWE5OTJiNjllZmRjZjRhNGRiZDRlODUwNTQ5ZTI1YzdjNGFk
Li5iNzQ4OThiMDcxYzE1NzViMTk1MTg2MGY2ZWUzMTRmMWZmNzZjMjEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5oCkBAIC0xMjQsNiArMTI0LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sKTsKICAgICAgICAgYm9vbCBs
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSBjb25zdCB7IHJldHVybiBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseTsgfQogCisgICAgICAgIHZvaWQgc2V0QmxvY2tOb25Mb2NhbEltYWdlcyhib29s
KTsKKyAgICAgICAgYm9vbCBibG9ja05vbkxvY2FsSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9i
bG9ja05vbkxvY2FsSW1hZ2VzOyB9CisKICAgICAgICAgLy8gVGhpcyBzZXR0aW5nIG9ubHkgYWZm
ZWN0cyBzaXRlIGljb24gaW1hZ2UgbG9hZGluZyBpZiBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkg
c2V0dGluZyBpcyBmYWxzZSBhbmQgdGhpcyBzZXR0aW5nIGlzIHRydWUuCiAgICAgICAgIC8vIEFs
bCBvdGhlciBwZXJtdXRhdGlvbnMgc3RpbGwgaGVlZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkg
c2V0dGluZy4KICAgICAgICAgdm9pZCBzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2Fk
aW5nU2V0dGluZyhib29sKTsKQEAgLTY2MSw2ICs2NjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIGJvb2wgbV9pc0phdmFFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2lzSmF2
YUVuYWJsZWRGb3JMb2NhbEZpbGVzIDogMTsKICAgICAgICAgYm9vbCBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseSA6IDE7CisgICAgICAgIGJvb2wgbV9ibG9ja05vbkxvY2FsSW1hZ2VzIDogMTsK
ICAgICAgICAgYm9vbCBtX2xvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5n
IDogMTsKICAgICAgICAgYm9vbCBtX3ByaXZhdGVCcm93c2luZ0VuYWJsZWQgOiAxOwogICAgICAg
ICBib29sIG1fY2FyZXRCcm93c2luZ0VuYWJsZWQgOiAxOwpAQCAtNzk5LDggKzgwMyw4IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VM
b2dnaW5nRW5hYmxlZCA6IDE7CiAKLSAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5VGltZXI7Ci0gICAgICAgIHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKKyAgICAgICAgVGltZXI8U2V0dGluZ3M+
IG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKKyAgICAgICAgdm9pZCBpbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CiAgICAgICAgIAogICAgICAg
ICBkb3VibGUgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25k
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
ZjQ3ZmY5ZjdjM2RiZDNhZDg5MDE0ZTQ2ZTYwYTIxY2I5Y2UxYWY4My4uNDE2NmQxYmVhNzYwN2Mx
MTIxMmQ4MzQ2NDQ1N2I4YWJkMzVjYTVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRKYXZhU2NyaXB0RW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IHNldExheW91dEZhbGxiYWNrV2lkdGgoaW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseShib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEJs
b2NrTm9uTG9jYWxJbWFnZXMoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2NhbFN0
b3JhZ2VFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4VW50aWxlZExh
eWVyU2l6ZShXZWJTaXplKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lZGlhUGxheWJhY2tS
ZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IDUwMjZlZTk0YjlmZGUyMDU2OGIwYmE4NTMy
M2YxNTdlYWY0ZGM5Y2QuLjhhNzAwYTU0MGRkMDcwNjc0ZDUyMDI1MGNjNTI4NDEzNjVhN2M4Y2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApA
QCAtMTgzLDYgKzE4MywxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0TG9hZHNJbWFnZXNB
dXRvbWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQogICAgIG1fc2V0dGlu
Z3MtPnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkp
OwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyhib29s
IGJsb2NrTmV0d29ya0ltYWdlcykKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRCbG9ja05vbkxvY2Fs
SW1hZ2VzKGJsb2NrTmV0d29ya0ltYWdlcyk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRJbWFn
ZXNFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaAppbmRleCA2Y2VlMmFmMjNlZGI1YTIxZTExNmYzMTQ2YTk2NDZmZDJkZjYyODhi
Li40YWQ0YmY0ODZjNWQ5MDk5MzEyNjZhY2U4ZGIxODA2ZmE2NjM0ZTg1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtMTA1LDYgKzEwNSw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0SmF2YVNjcmlwdEVuYWJsZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldExheW91dEZhbGxiYWNrV2lkdGgoaW50KTsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wpOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRCbG9ja05vbkxvY2FsSW1hZ2VzKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2Nh
bFN0b3JhZ2VFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5
ZXJTaXplKFdlYlNpemUpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZWRpYVBsYXliYWNrUmVxdWly
ZXNVc2VyR2VzdHVyZShib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCmluZGV4IGIxNzExYmI4YmMzOTk0MzkxYTlmYzFl
NmE1MDk3ZTM4NTRjNDVlMzcuLjI3MGU4YTgyNjI5ZDRjNGQ4MDhkYTMwMzFmOGE5MGEzMDNkZDI1
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtl
eXNQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
S2V5c1ByaXZhdGUuaApAQCAtNjEsNiArNjEsNyBAQAogI2RlZmluZSBXZWJLaXRBbGxvd0FuaW1h
dGVkSW1hZ2VzUHJlZmVyZW5jZUtleSBAIldlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJl
bmNlS2V5IgogI2RlZmluZSBXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5j
ZUtleSBAIldlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5IgogI2Rl
ZmluZSBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IEAiV2ViS2l0RGlzcGxheUltYWdlc0tleSIKKyNk
ZWZpbmUgV2ViS2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleSBAIldlYktpdEJsb2NrTm9uTG9jYWxJ
bWFnZXNLZXkiCiAjZGVmaW5lIFdlYktpdExvYWRTaXRlSWNvbnNLZXkgQCJXZWJLaXRMb2FkU2l0
ZUljb25zS2V5IgogI2RlZmluZSBXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVy
dmFsS2V5IEAiV2ViS2l0QmFja0ZvcndhcmRDYWNoZUV4cGlyYXRpb25JbnRlcnZhbEtleSIKICNk
ZWZpbmUgV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXkgQCJXZWJLaXRUYWJUb0xpbmtzUHJl
ZmVyZW5jZUtleSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMuaApp
bmRleCA5MzI2NTZiMDcwZjhjNDMyODUxMjM1YTNiOWM0N2ZlZGQyMzUyNjk1Li5mZTNlYjI2YTA3
OGYxMDI0M2I3ZTg0MzE0YWUzM2JmNzRkZjc0NzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5oCkBAIC0zMjEsNiArMzIxLDE3IEBAIGV4dGVybiBOU1N0cmlu
ZyAqV2ViUHJlZmVyZW5jZXNDaGFuZ2VkTm90aWZpY2F0aW9uOwogLSAoQk9PTClsb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHk7CiAKIC8qIQorICAgIEBtZXRob2Qgc2V0QmxvY2tOb25Mb2NhbEltYWdl
czoKKyAgICBAcGFyYW0gZmxhZworKi8KKy0gKHZvaWQpc2V0QmxvY2tOb25Mb2NhbEltYWdlczog
KEJPT0wpZmxhZzsKKworLyohCisgICAgQG1ldGhvZCBibG9ja05vbkxvY2FsSW1hZ2VzCisqLwor
LSAoQk9PTClibG9ja05vbkxvY2FsSW1hZ2VzOworCisvKiEKICAgICBAbWV0aG9kIHNldEF1dG9z
YXZlczoKICAgICBAcGFyYW0gZmxhZyAKICAgICBAZGlzY3Vzc2lvbiBJZiBhdXRvc2F2ZSBwcmVm
ZXJlbmNlcyBpcyBZRVMgdGhlIHNldHRpbmdzIHJlcHJlc2VudGVkIGJ5CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tIGIvU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQppbmRleCA4ZTEzZjE5YjRlYjNkNjY0OWI5
MTdhZDAwYjVlNjgxYzAxMzgyMjM0Li5iNDNhNzk3ZDk4ZWM0ZTBjY2YxZGUyNzk2OWEwYTQ1MGIw
YThmMzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVu
Y2VzLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0K
QEAgLTMzNCw2ICszMzQsNyBAQCArICh2b2lkKWluaXRpYWxpemUKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRBbGxvd0FuaW1hdGVkSW1hZ2VzUHJlZmVyZW5j
ZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRBbGxv
d0FuaW1hdGVkSW1hZ2VMb29waW5nUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51
bWJlcldpdGhCb29sOllFU10sICBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5LAorICAgICAgICBbTlNO
dW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNLZXks
CiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0TG9hZFNpdGVJ
Y29uc0tleSwKICAgICAgICAgQCIxODAwIiwgICAgICAgICAgICAgICAgICAgICAgICBXZWJLaXRC
YWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVydmFsS2V5LAogICAgICAgICBbTlNOdW1iZXIg
bnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5LApAQCAt
NzYyLDYgKzc2MywxNiBAQCAtIChCT09MKWxvYWRzSW1hZ2VzQXV0b21hdGljYWxseQogICAgIHJl
dHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5XTsKIH0K
IAorLSAodm9pZClzZXRCbG9ja05vbkxvY2FsSW1hZ2VzOiAoQk9PTClmbGFnCit7CisgICAgW3Nl
bGYgX3NldEJvb2xWYWx1ZTogZmxhZyBmb3JLZXk6IFdlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNL
ZXldOworfQorCistIChCT09MKWJsb2NrTm9uTG9jYWxJbWFnZXMKK3sKKyAgICByZXR1cm4gW3Nl
bGYgX2Jvb2xWYWx1ZUZvcktleTogV2ViS2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleV07Cit9CisK
IC0gKHZvaWQpc2V0QXV0b3NhdmVzOihCT09MKWZsYWcKIHsKICAgICBfcHJpdmF0ZS0+YXV0b3Nh
dmVzID0gZmxhZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCAzNThjMDdi
MGY0YmVkMTg0OTFiYmM1NmI1MjQ4ZmE4ZjdmZjA1NGQ2Li5kZmY0N2VjODA0ZGI0YjA1YzRlNTI4
MDBmYzhiOTNlODg2NDhlMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCkBA
IC0xNDUzLDYgKzE0NTMsNyBAQCAtICh2b2lkKV9wcmVmZXJlbmNlc0NoYW5nZWQ6KFdlYlByZWZl
cmVuY2VzICopcHJlZmVyZW5jZXMKICAgICBzZXR0aW5ncy0+c2V0U2VyaWZGb250RmFtaWx5KFtw
cmVmZXJlbmNlcyBzZXJpZkZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5ncy0+c2V0U3RhbmRhcmRG
b250RmFtaWx5KFtwcmVmZXJlbmNlcyBzdGFuZGFyZEZvbnRGYW1pbHldKTsKICAgICBzZXR0aW5n
cy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KFtwcmVmZXJlbmNlcyBsb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHldKTsKKyAgICBzZXR0aW5ncy0+c2V0QmxvY2tOb25Mb2NhbEltYWdlcyhbcHJl
ZmVyZW5jZXMgYmxvY2tOb25Mb2NhbEltYWdlc10pOwogICAgIHNldHRpbmdzLT5zZXRMb2Fkc1Np
dGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhbcHJlZmVyZW5jZXMgbG9hZHNTaXRl
SWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1ByZWZlcmVuY2VdKTsKICAgICBzZXR0aW5ncy0+c2V0
U2hvdWxkUHJpbnRCYWNrZ3JvdW5kcyhbcHJlZmVyZW5jZXMgc2hvdWxkUHJpbnRCYWNrZ3JvdW5k
c10pOwogICAgIHNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUoW3ByZWZlcmVuY2Vz
IHRleHRBcmVhc0FyZVJlc2l6YWJsZV0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIv
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUzNjA5ZTJlM2VjYTExZTIzY2MwOTYzNjQxZGYzZmM2Mzk2
ZjcwNjAuLjRjNDYxYzQ2YmJkZTkwYzMzY2QyNzQ1OTdhODUyMDIxOTYwMTU2NjAgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBA
QAorMjAxMi0wOS0wNCAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFk
ZCBDYWNoZWRSZXNvdXJjZUxvYWRlciBCbG9ja05vbkxvY2FsSW1hZ2VzIHNldHRpbmcKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAg
ICAgQWRkIHRoZSBuZXcgQmxvY2tOb25Mb2NhbEltYWdlcyB0byBvdmVycmlkZVByZWZlcmVuY2Vz
IGluCisgICAgICAgIERSVFRlc3RSdW5uZXIuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVu
bmVyLmNwcDoKKyAgICAgICAgKERSVFRlc3RSdW5uZXI6Om92ZXJyaWRlUHJlZmVyZW5jZSk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwOgorICAg
ICAgICAoV2ViUHJlZmVyZW5jZXM6OnJlc2V0KToKKyAgICAgICAgKFdlYlByZWZlcmVuY2VzOjph
cHBseVRvKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNl
cy5oOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXMpOgorCiAyMDEyLTA5LTAzICBSeXVhbiBDaG9p
ICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBDaGFuZ2UgdGhlIGZv
Y3VzIHdoZW4gdGhlIHdlYiB2aWV3IGlzIGNsaWNrZWQgaW4gTWluaUJyb3dzZXIgYW5kIEVXZWJM
YXVuY2hlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVy
LmNwcAppbmRleCBiN2UxMjkxMTNkZTRhYzNjODQyNDhiYjBkMTNlMWM0YTVkODIxYzYwLi45YzEx
ZGM1Nzc0YzdiMWNkOTMyOTFkNWY3NWVkZGVlOWI2Mzk5MDI0IDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9EUlRUZXN0UnVubmVyLmNwcApAQCAtMTU2MCw2ICsxNTYwLDgg
QEAgdm9pZCBEUlRUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmkKICAgICAgICAgcHJlZnMtPmphdmFTY3JpcHRDYW5P
cGVuV2luZG93c0F1dG9tYXRpY2FsbHkgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAgICBl
bHNlIGlmIChrZXkgPT0gIldlYktpdERpc3BsYXlJbWFnZXNLZXkiKQogICAgICAgICBwcmVmcy0+
bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5ID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CisgICAg
ZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRCbG9ja05vbkxvY2FsSW1hZ2VzS2V5IikKKyAgICAgICAg
cHJlZnMtPmJsb2NrTm9uTG9jYWxJbWFnZXMgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAg
ICBlbHNlIGlmIChrZXkgPT0gIldlYktpdFBsdWdpbnNFbmFibGVkIikKICAgICAgICAgcHJlZnMt
PnBsdWdpbnNFbmFibGVkID0gY3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxzZSBpZiAo
a2V5ID09ICJXZWJLaXRET01QYXN0ZUFsbG93ZWRQcmVmZXJlbmNlS2V5IikKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAppbmRleCBjNGRlMGFi
YzE0NDUwYTEwOWFhY2E3Zjk3N2EyOWU4OTM5YjI2Y2U0Li4xZmY1ZWI0OTNhNGU0NDczOTk3OGZm
ODE1MGMwMTE2M2E4YjVhZWZjIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViUHJlZmVyZW5jZXMuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5j
ZXM6OnJlc2V0KCkKICAgICBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0g
dHJ1ZTsKICAgICBqYXZhU2NyaXB0RW5hYmxlZCA9IHRydWU7CiAgICAgbG9hZHNJbWFnZXNBdXRv
bWF0aWNhbGx5ID0gdHJ1ZTsKKyAgICBibG9ja05vbkxvY2FsSW1hZ2VzID0gZmFsc2U7CiAgICAg
bG9jYWxTdG9yYWdlRW5hYmxlZCA9IHRydWU7CiAgICAgb2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2Fj
aGVFbmFibGVkID0gdHJ1ZTsKICAgICBwbHVnaW5zRW5hYmxlZCA9IHRydWU7CkBAIC0yMDIsNiAr
MjAzLDcgQEAgdm9pZCBXZWJQcmVmZXJlbmNlczo6YXBwbHlUbyhXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIHNldHRpbmdzLT5zZXRKYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5KGph
dmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkpOwogICAgIHNldHRpbmdzLT5zZXRK
YXZhU2NyaXB0RW5hYmxlZChqYXZhU2NyaXB0RW5hYmxlZCk7CiAgICAgc2V0dGluZ3MtPnNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseShsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOworICAgIHNl
dHRpbmdzLT5zZXRCbG9ja05vbkxvY2FsSW1hZ2VzKGJsb2NrTm9uTG9jYWxJbWFnZXMpOwogICAg
IHNldHRpbmdzLT5zZXRMb2NhbFN0b3JhZ2VFbmFibGVkKGxvY2FsU3RvcmFnZUVuYWJsZWQpOwog
ICAgIHNldHRpbmdzLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQob2ZmbGlu
ZVdlYkFwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+c2V0UGx1Z2luc0Vu
YWJsZWQocGx1Z2luc0VuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlByZWZlcmVuY2VzLmgKaW5kZXggYzM2NTUzYjM1NDY5NjRjNzZmMjk5MTZhOWVhOWI5ZTJh
MjNlMjRiMi4uZGNhZThhYWExMzIwNzJkNGNhZjI0ZGM3NWRmM2FlYTk5YmExMmUyNSAxMDA2NDQK
LS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuaAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCkBAIC04OSw2
ICs4OSw3IEBAIHN0cnVjdCBXZWJQcmVmZXJlbmNlcyB7CiAgICAgYm9vbCBqYXZhU2NyaXB0Q2Fu
T3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5OwogICAgIGJvb2wgamF2YVNjcmlwdEVuYWJsZWQ7CiAg
ICAgYm9vbCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHk7CisgICAgYm9vbCBibG9ja05vbkxvY2Fs
SW1hZ2VzOwogICAgIGJvb2wgbG9jYWxTdG9yYWdlRW5hYmxlZDsKICAgICBib29sIG9mZmxpbmVX
ZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKICAgICBib29sIHBsdWdpbnNFbmFibGVkOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDkyZDJiMjMyZjQzNzdjMTMzMDg2YWEyMTQyZGVjYzU5YWQ2ZTAyNjkuLmEwMDRhMGM5Yjc2
NDdkZTcyZTY1YjU2OWZhY2RhOGVhZDBkYzk0YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAx
Mi0wOS0wNCAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFkZCBDYWNo
ZWRSZXNvdXJjZUxvYWRlciBCbG9ja05vbkxvY2FsSW1hZ2VzIHNldHRpbmcKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgQWRk
IHRlc3RzIHRvIGNoZWNrIGF1dG9Mb2FkSW1hZ2VzIGFuZCBibG9ja05vbkxvY2FsSW1hZ2VzIGNh
biBibG9jaworICAgICAgICBpbWFnZXMgYW5kIGNhbiByZWxvYWQgdGhlbSBpbiBwbGFjZSB3aGVu
IHNldHRpbmcgaXMgc2V0IHRvIHVuYmxvY2suCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxv
d2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL2Jsb2NrLW5vbi1sb2NhbC1pbWFnZS1ibG9ja3MtaW1hZ2UtYW5kLWNh
bi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvYmxvY2stbm9uLWxvY2FsLWltYWdlLWJsb2Nrcy1pbWFnZS1hbmQtY2FuLXJlbG9h
ZC1pbi1wbGFjZS5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0wMyAgS2VuaWNoaSBJc2hpYmFzaGkg
IDxiYXNoaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBVbnJldmlld2VkIHRl
c3QgZXhwZWN0YXRpb25zIHVwZGF0ZSBhZnRlciByMTI3NDEwCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQt
Y2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5ZWY1MzQ3OWI4YjVhYTRiNDY0ZjY1N2Yy
YWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBEaXNwbGF5SW1hZ2Vz
IGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxh
Y2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9h
ZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45Mjc5ODc1OGQ3ZjZjMmU4YjM1MTAwNDMwYTkxNmM1MWJlYjUwNTBiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2ViS2l0RGlzcGxheUltYWdl
c0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRUaW1lT3V0
IHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7
CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdEJsb2NrTm9uTG9jYWxJ
bWFnZXNLZXknLCAwKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0
aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ICE9IDAgfHwgaW1hZ2UubmF0
dXJhbFdpZHRoICE9IDApCisgICAgICAgIHJldHVybjsKKworICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgdGVzdFJ1bm5l
ci53YWl0VW50aWxEb25lKCk7CisgICAgd2luZG93LnNldFRpbWVvdXQocnVuVGVzdFJlc3QsIDEw
MDApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWln
aHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3KQorICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworCisgICAgdGVz
dFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMgZGlzYWJsZWQgY2FuIGJs
b2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQu
CisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIgc3Jj
PSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIj4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgt
bm9uLWxvY2FsLWltYWdlLWJsb2NrZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcwYzFmNDZjNjZlYWM5M2Q3NGFkNmE0MzlmNDMxNTJiNjBk
YzgxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9maWxlLWlt
YWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSwzIEBACitGaWxlIGltYWdlcyBzaG91bGQgYmUgbG9hZGVkIGlmIG5vbi1sb2NhbCBp
bWFnZXMgYmxvY2tlZC4KK1NVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1s
b2NhbC1pbWFnZS1ibG9ja2VkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY2MDE2NGIxMDIwNDI0NjVkMWQ1
NTQ2OWJmMTBhYjY0NWY3ZWE5NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLmh0
bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CitpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVu
bmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgiV2ViS2l0RGlzcGxheUltYWdlc0tleSIsIDEpOworICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXRCbG9ja05vbkxvY2FsSW1hZ2Vz
S2V5IiwgMSk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBy
dW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1h
Z2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFs
V2lkdGggPT0gMzcpCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSAnU1VDQ0VTUyc7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9h
ZD0icnVuVGVzdCgpIj4KKyAgRmlsZSBpbWFnZXMgc2hvdWxkIGJlIGxvYWRlZCBpZiBub24tbG9j
YWwgaW1hZ2VzIGJsb2NrZWQuCisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2PgorICA8
aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIj4KKzwvYm9k
eT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Js
b2NrLW5vbi1sb2NhbC1pbWFnZS1ibG9ja3MtaW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2Ut
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrLW5vbi1sb2Nh
bC1pbWFnZS1ibG9ja3MtaW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE2YjYyYTk2YTBiNDRmNDg3OGZmYmMyN2FmNjdiNTdiOTljZjUwMzYKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2stbm9uLWxv
Y2FsLWltYWdlLWJsb2Nrcy1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgQmxvY2tOb25Mb2NhbEltYWdlcyBibG9jayBo
dHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VD
Q0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2stbm9u
LWxvY2FsLWltYWdlLWJsb2Nrcy1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrLW5vbi1sb2NhbC1pbWFnZS1ibG9ja3Mt
aW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xYjBlMzQ3NjQ0
NTlkN2IzMjFlMTAxNmE0YjE1YmI5NWYxMGMyOTdlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9taXNjL2Jsb2NrLW5vbi1sb2NhbC1pbWFnZS1ibG9ja3MtaW1hZ2Ut
YW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQwIEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2ViS2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleSBp
cyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRUaW1lT3V0IHRvIGNo
ZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAg
dGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNL
ZXknLCAxKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1
blRlc3QoKQoreworICAgIHZhciBub25fbG9jYWxfaW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ25vbl9sb2NhbF9pbWcnKTsKKyAgICBpZiAobm9uX2xvY2FsX2ltZy5uYXR1cmFsSGVpZ2h0
ICE9IDAgfHwgbm9uX2xvY2FsX2ltZy5uYXR1cmFsV2lkdGggIT0gMCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdEJsb2NrTm9uTG9j
YWxJbWFnZXNLZXknLCAwKTsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICB3
aW5kb3cuc2V0VGltZW91dChydW5UZXN0UmVzdCwgMTAwMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3RSZXN0KCkKK3sKKyAgICB2YXIgbm9uX2xvY2FsX2ltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdub25fbG9jYWxfaW1nJyk7CisgICAgaWYgKG5vbl9sb2NhbF9pbWcubmF0dXJhbEhlaWdo
dCA9PSAxMjggJiYgbm9uX2xvY2FsX2ltZy5uYXR1cmFsV2lkdGggPT0gMTI4KQorICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ1NVQ0NFU1MnOwor
CisgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgVGVzdCB0aGF0IEJsb2NrTm9uTG9jYWxJbWFnZXMg
YmxvY2sgaHR0cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xl
ZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+CisgIDxpbWcgaWQ9Im5vbl9sb2Nh
bF9pbWciIHNyYz0icmVzb3VyY2VzL2NvbXBhc3MuanBnIj4KKzwvYm9keT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162310</attachid>
            <date>2012-09-05 12:53:12 -0700</date>
            <delta_ts>2012-09-10 10:47:24 -0700</delta_ts>
            <desc>Improve layout tests as suggested by Mikhail</desc>
            <filename>bug-95478-20120905125253.patch</filename>
            <type>text/plain</type>
            <size>33607</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3NTk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2E3YWNiMzZhNGFhY2Ew
MzE5YTk5ZDc0YTMzMjAzZTM3NzI4OGM5Yi4uODc3ZTNmZDRhZjgwY2U2OGMyMDA4ODBiZWIzNmFl
Nzk5NWM2ODJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDEyLTA4LTMwICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBCbG9ja05vbkxvY2FsSW1hZ2VzIGlzIHNpbWlsYXIgdG8g
QXV0b0xvYWRJbWFnZXMuIEJsb2NrTm9uTG9jYWxJbWFnZXMKKyAgICAgICAgcGVyZm9ybXMgdGhl
IGFkZGl0aW9uYWwgY2hlY2sgdGhlIGltYWdlIHNvdXJjZSB1c2VzIGEgbm9uLWxvY2FsIHVybAor
ICAgICAgICBzY2hlbWUgYmVmb3JlIGJsb2NraW5nLiBUaGVyZWZvcmUgaXQgc2hvdWxkIG9ubHkg
YWZmZWN0IGxvY2FsCisgICAgICAgIGRvY3VtZW50cy4KKworICAgICAgICBCbG9ja05vbkxvY2Fs
SW1hZ2VzIGFuZCBBdXRvTG9hZEltYWdlcyBiZWhhdmUgYXMgYW4gQU5EIGNvbmRpdGlvbiBvbgor
ICAgICAgICB3aGV0aGVyIHRvIGxvYWQgYW4gaW1hZ2UuIEFuIGltYWdlIGlzIGxvYWRlZCBpZjoK
KyAgICAgICAgQXV0b0xvYWRJbWFnZXMgJiYgKCFCbG9ja05vbkxvY2FsSW1hZ2VzIHx8IHNob3Vs
ZFRyZWF0VVJMU2NoZW1lQXNMb2NhbCkKKworICAgICAgICBUaGlzIGlzIHVzZWQgaW4gdGhlIGlt
cGxlbWVudGF0aW9uIG9mIEFuZHJvaWQgV2ViVmlldworICAgICAgICBXZWJTZXR0aW5ncy5zZXRC
bG9ja05ldHdvcmtJbWFnZSBvbiB0b3Agb2YgYSBmdWxsIENocm9taXVtIHN0YWNrLgorCisgICAg
ICAgIFRlc3RzOiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRl
ci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC5odG1sCisg
ICAgICAgICAgICAgICBodHRwL3Rlc3RzL21pc2MvYmxvY2stbm9uLWxvY2FsLWltYWdlLWJsb2Nr
cy1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3Jl
LmV4cC5pbjoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICBBbHNvIHNldCBC
bG9ja05vbkxvY2FsSW1hZ2VzIHZhbHVlIGZyb20gc2V0dGluZ3MuCisKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1hZ2U6
OmxvYWQpOgorICAgICAgICBNb2RpZmllZCB0byBjaGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSBs
b2FkLgorCisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxv
YWRlcik6CisgICAgICAgIEluaXRpYWxpemUgbmV3IHByaXZhdGUgdmFyaWFibGUuCisKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UpOgorICAgICAg
ICBDaGVjayBib3RoIHNldHRpbmdzIGJlZm9yZSByZXF1ZXN0LgorCisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMpOgorICAgICAgICBSZWZh
Y3RvciBvdXQgZHVwbGljYXRlZCBjb2RlIHdpdGggc2V0QmxvY2tOb25Mb2NhbEltYWdlcy4KKwor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyk6CisgICAgICAgIE1pcnJvcnMgc2V0QXV0b0xvYWRJ
bWFnZXMuIFdpbGwgcmVsb2FkIGltYWdlcyB0aGF0IGFyZSBubyBsb25nZXIKKyAgICAgICAgYmxv
Y2tlZCBieSBzZXR0aW5nLgorCisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQpOgorICAgICAgICBDb21iaW5lZCB0aGUgY2hlY2sgZm9y
IGJvdGggc2V0dGluZ3MgdXNpbmcgdGhlIGNvbmRpdGlvbiBkZXNjcmliZWQKKyAgICAgICAgYWJv
dmUuCisKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFn
ZXNJZk5vdERlZmVycmVkKToKKyAgICAgICAgUmVmYWN0b3JlZCBvdXQgcHJpdmF0ZSBtZXRob2Qg
dG8gcmVsb2FkIGltYWdlcyB0aGF0IGlzIG5vIGxvbmdlcgorICAgICAgICBibG9ja2VkLiBDYWxs
ZWQgaW4gc2V0QXV0b0xvYWRJbWFnZXMgYW5kIHNldEJsb2NrTm9uTG9jYWxJbWFnZXMuCisKKyAg
ICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENh
Y2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpibG9ja05vbkxvY2FsSW1hZ2VzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnNldGxvYWRJbWFnZXNTZXR0aW5nc0luQWxsRnJhbWVzKToKKyAg
ICAgICAgUmVuYW1lZCBhbmQgbW9kaWZpZWQgdG8gc2V0IGJvdGggc2V0dGluZ3MgaW4gYWxsCisg
ICAgICAgIENhY2hlZFJlc291cmNlTG9hZGVycy4KKworICAgICAgICAoV2ViQ29yZTo6U2V0dGlu
Z3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRMb2Fkc0ltYWdl
c0F1dG9tYXRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6c2V0QmxvY2tOb25Mb2NhbEltYWdlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0
aW5nczo6bG9hZEltYWdlc1NldHRpbmdzVGltZXJGaXJlZCk6CisgICAgICAgIFJlbmFtZWQgdG8g
cmVmbGVjdCBzZXR0aW5nIGJvdGggdmFyaWFibGVzLgorCisgICAgICAgICogcGFnZS9TZXR0aW5n
cy5oOgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmJs
b2NrTm9uTG9jYWxJbWFnZXMpOgorCiAyMDEyLTA5LTA1ICBLZXZpbiBFbGxpcyAgPGtldmVyc0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW2Nocm9taXVtXSBVbmlmeSBzaXplIG9mIHBvcHVwIG1l
bnUgZm9yIHRvdWNoIGFuZCBub24tdG91Y2guCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDU1ZWU2NDFmZGRlY2JiNzEzMzgzMjk2MDA3OWI5OGVmZmRiNmM2OWEuLmJiMzEwOTEzMTM1NDg1
ZGI0MmI5NWVlNzQ5NTg0Njc5NGE3YzkyOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTItMDgtMzAgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4K
KworICAgICAgICBBZGQgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgQmxvY2tOb25Mb2NhbEltYWdlcyBz
ZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCB0aGUgbmV3IEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZyB0byBXZWJTZXR0aW5ncy4KKwor
ICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEJsb2NrTm9u
TG9jYWxJbWFnZXMpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKiBzcmMvV2ViU2V0dGlu
Z3NJbXBsLmg6CisgICAgICAgIChXZWJTZXR0aW5nc0ltcGwpOgorCiAyMDEyLTA5LTA1ICBJbHlh
IFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBOTUk6IGV4dHJhY3QgTWVtb3J5T2JqZWN0VHlwZSBjb25zdGFudHMgZnJvbSBNZW1vcnlJ
bnN0cnVtZW50YXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggZThiOTY5ZDFlMWMxOTUwMmU0NzFj
ZWE4NWMwMTE1YzljZjk0Y2ViOC4uODdiMTQxYjAxMTZlZjc3ZTkxZDIyNWMyM2ZjY2Q0NjI3M2Zh
ODEzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTA0ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9h
ZGVyIEJsb2NrTm9uTG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBBZGQgdGhlIG5ldyBCbG9j
a05vbkxvY2FsSW1hZ2VzIHNldHRpbmcgdG8gV2ViUHJlZmVyZW5jZXMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVu
Y2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZXMuaDoKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tXZWJQcmVmZXJl
bmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNldEJsb2NrTm9u
TG9jYWxJbWFnZXM6XSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIGJsb2NrTm9uTG9jYWxJ
bWFnZXNdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZp
ZXcgX3ByZWZlcmVuY2VzQ2hhbmdlZDpdKToKKwogMjAxMi0wOS0wMSAgTWFyayBMYW0gIDxtYXJr
LmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkZWQgI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0lkZW50aWZpZXIuaD4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5p
biBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGE2NWQ1ZDU1NGJjNGU3MjE3
MTA0NzQxNTE0OGM4MmNmMDA0OWMzNDMuLjI3Mzg3YzAzZGNiN2NjM2VmMmE4OTBlMDIwNjJkZjRm
MzIzMGU2M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04OTIsNiArODkyLDcgQEAgX19aTjdX
ZWJDb3JlOFNldHRpbmdzMjZzZXROZWVkc1NpdGVTcGVjaWZpY1F1aXJrc0ViCiBfX1pON1dlYkNv
cmU4U2V0dGluZ3MyN3NldEZUUERpcmVjdG9yeVRlbXBsYXRlUGF0aEVSS04zV1RGNlN0cmluZ0UK
IF9fWk43V2ViQ29yZThTZXR0aW5nczI3c2V0SmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVzRWIKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI3c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5RWIKK19fWk43
V2ViQ29yZThTZXR0aW5nczIyc2V0QmxvY2tOb25Mb2NhbEltYWdlc0ViCiBfX1pON1dlYkNvcmU4
U2V0dGluZ3MyN3NldExvY2FsU3RvcmFnZURhdGFiYXNlUGF0aEVSS04zV1RGNlN0cmluZ0UKIF9f
Wk43V2ViQ29yZThTZXR0aW5nczI3c2V0U3BhdGlhbE5hdmlnYXRpb25FbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczI4c2V0Rm9yY2VGVFBEaXJlY3RvcnlMaXN0aW5nc0ViCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA4ZTU3NDJlMjVmM2FjYzA5ZDJkNzRmYjg3
YWU1NDEzMjU1NzEyMDc2Li5lZTk2NTViNzc4ZTFmMzNkNmQzNmQwMDU4MmQzODI4OWI0MzFkZTg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTY0Nyw2ICs2NDcsNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAKICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOwog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9M
b2FkSW1hZ2VzKHNldHRpbmdzICYmIHNldHRpbmdzLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
KSk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0
QmxvY2tOb25Mb2NhbEltYWdlcyhzZXR0aW5ncyA/IHNldHRpbmdzLT5ibG9ja05vbkxvY2FsSW1h
Z2VzKCkgOiBmYWxzZSk7CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikgewogICAgICAgICBT
dHJpbmcgZG5zUHJlZmV0Y2hDb250cm9sID0gbV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5o
dHRwSGVhZGVyRmllbGQoIlgtRE5TLVByZWZldGNoLUNvbnRyb2wiKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDk1YzUwYmMyNDgwMDQ2YTM1OTcz
NzVjYjBiMDgwYTNjYTFhNDk1ZDYuLjU5YmNiYzgyMzE0MTY5MjZmMzA2NWQyNjc0YTFiZmM4YTNl
MTk0ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApA
QCAtNzksNyArNzksNyBAQCBDYWNoZWRJbWFnZTo6fkNhY2hlZEltYWdlKCkKIAogdm9pZCBDYWNo
ZWRJbWFnZTo6bG9hZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIs
IGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAoIWNhY2hl
ZFJlc291cmNlTG9hZGVyIHx8IGNhY2hlZFJlc291cmNlTG9hZGVyLT5hdXRvTG9hZEltYWdlcygp
KQorICAgIGlmICghY2FjaGVkUmVzb3VyY2VMb2FkZXIgfHwgIWNhY2hlZFJlc291cmNlTG9hZGVy
LT5zaG91bGREZWZlckltYWdlTG9hZChtX3Jlc291cmNlUmVxdWVzdC51cmwoKSkpCiAgICAgICAg
IENhY2hlZFJlc291cmNlOjpsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKICAg
ICBlbHNlCiAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNWZkN2M1MDVh
MTFlZDU4MWRjNGFlZjk2MWY2MWYxZTFjNjZkMGY4NS4uNDM5OGUxYmM0MTFhOGYyZTBhYjg4NmEz
MTFiNzllMjYwNTVkNzgwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAi
TWVtb3J5Q2FjaGUuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3Vy
Y2VMb2FkU2NoZWR1bGVyLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRl
ICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CkBAIC0xMTUsNiArMTE2LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OkNhY2hlZFJlc291cmNlTG9hZGVyKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcmVxdWVz
dENvdW50KDApCiAgICAgLCBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcih0
aGlzLCAmQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJj
ZXNUaW1lckZpcmVkKQogICAgICwgbV9hdXRvTG9hZEltYWdlcyh0cnVlKQorICAgICwgbV9ibG9j
a05vbkxvY2FsSW1hZ2VzKGZhbHNlKQogICAgICwgbV9hbGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNl
KQogewogfQpAQCAtMTYwLDcgKzE2Miw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZElt
YWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVxCiAgICAg
ICAgIH0KICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291
cmNlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291
cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291
cmNlT3B0aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291
cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgIGlmICghc2hvdWxkRGVmZXJJ
bWFnZUxvYWQocmVxdWVzdC51cmwoKSkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVl
ZHNMb2FkKCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNv
dXJjZU9wdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpAQCAtNjI5LDEzICs2MzEs
NDIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBl
bmFibGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAg
ICByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnNldEJsb2NrTm9uTG9jYWxJbWFnZXMoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKGVu
YWJsZSA9PSBtX2Jsb2NrTm9uTG9jYWxJbWFnZXMpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
YmxvY2tOb25Mb2NhbEltYWdlcyA9IGVuYWJsZTsKKworICAgIGlmIChtX2Jsb2NrTm9uTG9jYWxJ
bWFnZXMpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQo
KTsKK30KKworYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQo
Y29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIGlmICghbV9hdXRvTG9hZEltYWdlcykKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBpZiAobV9ibG9ja05vbkxvY2FsSW1hZ2VzICYmICFT
Y2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKHVybC5wcm90b2NvbCgp
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKQorewogICAg
IERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMu
ZW5kKCk7CiAgICAgZm9yIChEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENhY2hl
ZFJlc291cmNlKiByZXNvdXJjZSA9IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmIChyZXNv
dXJjZS0+dHlwZSgpID09IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlKSB7CiAgICAgICAg
ICAgICBDYWNoZWRJbWFnZSogaW1hZ2UgPSBjb25zdF9jYXN0PENhY2hlZEltYWdlKj4oc3RhdGlj
X2Nhc3Q8Y29uc3QgQ2FjaGVkSW1hZ2UqPihyZXNvdXJjZSkpOwogCi0gICAgICAgICAgICBpZiAo
aW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkpCisgICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVl
ZHNMb2FkKCkgJiYgIXNob3VsZERlZmVySW1hZ2VMb2FkKGltYWdlLT51cmwoKSkpCiAgICAgICAg
ICAgICAgICAgaW1hZ2UtPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygp
KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlTG9hZGVyLmgKaW5kZXggM2YxYzIzM2IwMDhkZjg0MDFhOGMxYWJhMTE4
MTc1ZGE3ZDgwZmI1ZS4uODA2ZjUxZmZhYjFiYWNiNDBmNmVhNzJiYjY3Y2Q5MDI2Y2E3ZWRlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9h
ZGVyLmgKQEAgLTk4LDYgKzk4LDExIEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXV0b0xvYWRJbWFn
ZXMoKSBjb25zdCB7IHJldHVybiBtX2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBzZXRBdXRv
TG9hZEltYWdlcyhib29sKTsKKworICAgIGJvb2wgYmxvY2tOb25Mb2NhbEltYWdlcygpIGNvbnN0
IHsgcmV0dXJuIG1fYmxvY2tOb25Mb2NhbEltYWdlczsgfQorICAgIHZvaWQgc2V0QmxvY2tOb25M
b2NhbEltYWdlcyhib29sKTsKKworICAgIGJvb2wgc2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3Qg
S1VSTCYpIGNvbnN0OwogICAgIAogICAgIENhY2hlUG9saWN5IGNhY2hlUG9saWN5KCkgY29uc3Q7
CiAgICAgCkBAIC0xMzYsNiArMTQxLDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZ2FyYmFnZUNv
bGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2Fk
ZXI+Kik7CiAgICAgdm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25zKCk7CisKKyAgICB2b2lkIHJl
bG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKICAgICAKICAgICBIYXNoU2V0PFN0cmluZz4gbV92
YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1lbnRSZXNvdXJjZU1hcCBtX2RvY3VtZW50
UmVzb3VyY2VzOwpAQCAtMTUzLDggKzE2MCw5IEBAIHByaXZhdGU6CiAKICAgICBUaW1lcjxDYWNo
ZWRSZXNvdXJjZUxvYWRlcj4gbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXI7
CiAKLSAgICAvLyAzMCBiaXRzIGxlZnQKKyAgICAvLyAyOSBiaXRzIGxlZnQKICAgICBib29sIG1f
YXV0b0xvYWRJbWFnZXMgOiAxOworICAgIGJvb2wgbV9ibG9ja05vbkxvY2FsSW1hZ2VzIDogMTsK
ICAgICBib29sIG1fYWxsb3dTdGFsZVJlc291cmNlcyA6IDE7CiB9OwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCmluZGV4IGU5N2M2NGY3M2RjYjBlMjdhZTQ5NjRkNDc1ZTYyYWI4MjliM2ZjNTQu
LmQ1ZmUwMmI5YzQwZDcyYWNhNWRkZWJhNDFmMDg1ODRhMjdiNmIxMDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwCkBAIC00NiwxMCArNDYsMTMgQEAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRp
Y2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQorc3RhdGljIHZvaWQgc2V0SW1hZ2VMb2FkaW5n
U2V0dGluZ3MoUGFnZSogcGFnZSkKIHsKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1h
aW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkK
KyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0
dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworCisgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRCbG9ja05vbkxvY2FsSW1hZ2Vz
KHBhZ2UtPnNldHRpbmdzKCktPmJsb2NrTm9uTG9jYWxJbWFnZXMoKSk7CisgICAgfQogfQogCiAv
LyBTZXRzIHRoZSBlbnRyeSBpbiB0aGUgZm9udCBtYXAgZm9yIHRoZSBnaXZlbiBzY3JpcHQuIElm
IGZhbWlseSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZW1vdmVzIHRoZSBlbnRyeSBpbnN0ZWFkLgpA
QCAtMTUxLDYgKzE1NCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwg
bV9pc0phdmFFbmFibGVkKGZhbHNlKQogICAgICwgbV9pc0phdmFFbmFibGVkRm9yTG9jYWxGaWxl
cyh0cnVlKQogICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoZmFsc2UpCisgICAgLCBt
X2Jsb2NrTm9uTG9jYWxJbWFnZXMoZmFsc2UpCiAgICAgLCBtX2xvYWRzU2l0ZUljb25zSWdub3Jp
bmdJbWFnZUxvYWRpbmdTZXR0aW5nKGZhbHNlKQogICAgICwgbV9wcml2YXRlQnJvd3NpbmdFbmFi
bGVkKGZhbHNlKQogICAgICwgbV9jYXJldEJyb3dzaW5nRW5hYmxlZChmYWxzZSkKQEAgLTI4Niw3
ICsyOTAsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1fZGlhZ25v
c3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV90aGlyZFBhcnR5U3RvcmFnZUJsb2Nr
aW5nRW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5h
YmxlZChmYWxzZSkKLSAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIodGhpcywg
JlNldHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKQorICAgICwgbV9z
ZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKHRoaXMsICZTZXR0aW5nczo6aW1hZ2VMb2FkaW5n
U2V0dGluZ3NUaW1lckZpcmVkKQogICAgICwgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNz
aW9uVGltZW91dEluU2Vjb25kcyhkZWZhdWx0SW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lv
blRpbWVvdXRJblNlY29uZHMpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBj
cmVhdGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nCkBAIC00NTIsMTIg
KzQ1NiwxOSBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9v
bCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpCiAgICAgLy8gU3RhcnRpbmcgdGhlc2UgbG9hZHMg
c3luY2hyb25vdXNseSBpcyBub3QgaW1wb3J0YW50LiAgQnkgcHV0dGluZyBpdCBvbiBhIDAtZGVs
YXksIHByb3Blcmx5IGNsb3NpbmcgdGhlIFBhZ2UgY2FuY2VscyB0aGVtCiAgICAgLy8gYmVmb3Jl
IHRoZXkgaGF2ZSBhIGNoYW5jZSB0byByZWFsbHkgc3RhcnQuCiAgICAgLy8gU2VlIGh0dHA6Ly93
ZWJraXQub3JnL2IvNjA1NzIgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KLSAgICBtX2xvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX3NldEltYWdlTG9hZGlu
Z1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIFNldHRpbmdzOjpzZXRC
bG9ja05vbkxvY2FsSW1hZ2VzKGJvb2wgYmxvY2tOb25Mb2NhbEltYWdlcykKK3sKKyAgICBtX2Js
b2NrTm9uTG9jYWxJbWFnZXMgPSBibG9ja05vbkxvY2FsSW1hZ2VzOworCisgICAgbV9zZXRJbWFn
ZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0aW5n
czo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKQor
dm9pZCBTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRp
bmdzPiopCiB7Ci0gICAgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMobV9w
YWdlKTsKKyAgICBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhtX3BhZ2UpOwogfQogCiB2b2lkIFNl
dHRpbmdzOjpzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhib29s
IGxvYWRzU2l0ZUljb25zKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IGZkNGQ5YTk5MmI2OWVm
ZGNmNGE0ZGJkNGU4NTA1NDllMjVjN2M0YWQuLmI3NDg5OGIwNzFjMTU3NWIxOTUxODYwZjZlZTMx
NGYxZmY3NmMyMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTEyNCw2ICsxMjQsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5KGJvb2wpOwogICAgICAgICBib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5OyB9CiAKKyAgICAgICAgdm9pZCBz
ZXRCbG9ja05vbkxvY2FsSW1hZ2VzKGJvb2wpOworICAgICAgICBib29sIGJsb2NrTm9uTG9jYWxJ
bWFnZXMoKSBjb25zdCB7IHJldHVybiBtX2Jsb2NrTm9uTG9jYWxJbWFnZXM7IH0KKwogICAgICAg
ICAvLyBUaGlzIHNldHRpbmcgb25seSBhZmZlY3RzIHNpdGUgaWNvbiBpbWFnZSBsb2FkaW5nIGlm
IGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSBzZXR0aW5nIGlzIGZhbHNlIGFuZCB0aGlzIHNldHRp
bmcgaXMgdHJ1ZS4KICAgICAgICAgLy8gQWxsIG90aGVyIHBlcm11dGF0aW9ucyBzdGlsbCBoZWVk
IGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSBzZXR0aW5nLgogICAgICAgICB2b2lkIHNldExvYWRz
U2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKGJvb2wpOwpAQCAtNjYxLDYgKzY2
NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzSmF2YUVuYWJsZWQg
OiAxOwogICAgICAgICBib29sIG1faXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMgOiAxOwogICAg
ICAgICBib29sIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5IDogMTsKKyAgICAgICAgYm9vbCBt
X2Jsb2NrTm9uTG9jYWxJbWFnZXMgOiAxOwogICAgICAgICBib29sIG1fbG9hZHNTaXRlSWNvbnNJ
Z25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcgOiAxOwogICAgICAgICBib29sIG1fcHJpdmF0ZUJy
b3dzaW5nRW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9jYXJldEJyb3dzaW5nRW5hYmxlZCA6
IDE7CkBAIC03OTksOCArODAzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBU
aW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAg
dm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiop
OworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVy
OworICAgICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0
aW5ncz4qKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBmNDdmZjlmN2MzZGJkM2FkODkwMTRlNDZlNjBhMjFj
YjljZTFhZjgzLi40MTY2ZDFiZWE3NjA3YzExMjEyZDgzNDY0NDU3YjhhYmQzNWNhNWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTExMyw2ICsx
MTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEphdmFTY3JpcHRFbmFibGVkKGJv
b2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5b3V0RmFsbGJhY2tXaWR0aChpbnQpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QmxvY2tOb25Mb2NhbEltYWdlcyhib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNYXhVbnRpbGVkTGF5ZXJTaXplKFdlYlNpemUpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWVkaWFQbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUoYm9vbCkgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXgg
NTAyNmVlOTRiOWZkZTIwNTY4YjBiYTg1MzIzZjE1N2VhZjRkYzljZC4uOGE3MDBhNTQwZGQwNzA2
NzRkNTIwMjUwY2M1Mjg0MTM2NWE3YzhjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0xODMsNiArMTgzLDExIEBAIHZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCBsb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHkpCiAgICAgbV9zZXR0aW5ncy0+c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5
KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpz
ZXRCbG9ja05vbkxvY2FsSW1hZ2VzKGJvb2wgYmxvY2tOZXR3b3JrSW1hZ2VzKQoreworICAgIG1f
c2V0dGluZ3MtPnNldEJsb2NrTm9uTG9jYWxJbWFnZXMoYmxvY2tOZXR3b3JrSW1hZ2VzKTsKK30K
Kwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkKQog
ewogICAgIG1fc2V0dGluZ3MtPnNldEltYWdlc0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDZjZWUyYWYyM2VkYjVh
MjFlMTE2ZjMxNDZhOTY0NmZkMmRmNjI4OGIuLjRhZDRiZjQ4NmM1ZDkwOTkzMTI2NmFjZThkYjE4
MDZmYTY2MzRlODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oCkBAIC0xMDUsNiArMTA1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRK
YXZhU2NyaXB0RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TGF5b3V0RmFsbGJh
Y2tXaWR0aChpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2Fs
bHkoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHNldEJsb2NrTm9uTG9jYWxJbWFnZXMoYm9vbCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldExvY2FsU3RvcmFnZUVuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldE1heFVudGlsZWRMYXllclNpemUoV2ViU2l6ZSk7CiAgICAgdmlydHVhbCB2
b2lkIHNldE1lZGlhUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBi
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5k
ZXggYjE3MTFiYjhiYzM5OTQzOTFhOWZjMWU2YTUwOTdlMzg1NGM0NWUzNy4uMjcwZThhODI2Mjlk
NGM0ZDgwOGRhMzAzMWY4YTkwYTMwM2RkMjUwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC02MSw2ICs2MSw3IEBA
CiAjZGVmaW5lIFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
QWxsb3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdEFsbG93QW5p
bWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxsb3dBbmltYXRlZEltYWdl
TG9vcGluZ1ByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgQCJX
ZWJLaXREaXNwbGF5SW1hZ2VzS2V5IgorI2RlZmluZSBXZWJLaXRCbG9ja05vbkxvY2FsSW1hZ2Vz
S2V5IEAiV2ViS2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleSIKICNkZWZpbmUgV2ViS2l0TG9hZFNp
dGVJY29uc0tleSBAIldlYktpdExvYWRTaXRlSWNvbnNLZXkiCiAjZGVmaW5lIFdlYktpdEJhY2tG
b3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2YWxLZXkgQCJXZWJLaXRCYWNrRm9yd2FyZENhY2hl
RXhwaXJhdGlvbkludGVydmFsS2V5IgogI2RlZmluZSBXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5j
ZUtleSBAIldlYktpdFRhYlRvTGlua3NQcmVmZXJlbmNlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IDkzMjY1NmIwNzBmOGM0MzI4NTEyMzVhM2I5
YzQ3ZmVkZDIzNTI2OTUuLmZlM2ViMjZhMDc4ZjEwMjQzYjdlODQzMTRhZTMzYmY3NGRmNzQ3MGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgKQEAgLTMyMSw2
ICszMjEsMTcgQEAgZXh0ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmlj
YXRpb247CiAtIChCT09MKWxvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsKIAogLyohCisgICAgQG1l
dGhvZCBzZXRCbG9ja05vbkxvY2FsSW1hZ2VzOgorICAgIEBwYXJhbSBmbGFnCisqLworLSAodm9p
ZClzZXRCbG9ja05vbkxvY2FsSW1hZ2VzOiAoQk9PTClmbGFnOworCisvKiEKKyAgICBAbWV0aG9k
IGJsb2NrTm9uTG9jYWxJbWFnZXMKKyovCistIChCT09MKWJsb2NrTm9uTG9jYWxJbWFnZXM7CisK
Ky8qIQogICAgIEBtZXRob2Qgc2V0QXV0b3NhdmVzOgogICAgIEBwYXJhbSBmbGFnIAogICAgIEBk
aXNjdXNzaW9uIElmIGF1dG9zYXZlIHByZWZlcmVuY2VzIGlzIFlFUyB0aGUgc2V0dGluZ3MgcmVw
cmVzZW50ZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJl
ZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1t
CmluZGV4IDhlMTNmMTliNGViM2Q2NjQ5YjkxN2FkMDBiNWU2ODFjMDEzODIyMzQuLmI0M2E3OTdk
OThlYzRlMGNjZjFkZTI3OTY5YTBhNDUwYjBhOGYzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMzM0LDYgKzMzNCw3IEBAICsgKHZvaWQpaW5p
dGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFs
bG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVy
V2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNl
S2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdERpc3Bs
YXlJbWFnZXNLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2Vi
S2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhC
b29sOk5PXSwgICBXZWJLaXRMb2FkU2l0ZUljb25zS2V5LAogICAgICAgICBAIjE4MDAiLCAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBpcmF0aW9uSW50ZXJ2
YWxLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0VGFi
VG9MaW5rc1ByZWZlcmVuY2VLZXksCkBAIC03NjIsNiArNzYzLDE2IEBAIC0gKEJPT0wpbG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6IFdl
YktpdERpc3BsYXlJbWFnZXNLZXldOwogfQogCistICh2b2lkKXNldEJsb2NrTm9uTG9jYWxJbWFn
ZXM6IChCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOiBmbGFnIGZvcktleTog
V2ViS2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleV07Cit9CisKKy0gKEJPT0wpYmxvY2tOb25Mb2Nh
bEltYWdlcworeworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRCbG9j
a05vbkxvY2FsSW1hZ2VzS2V5XTsKK30KKwogLSAodm9pZClzZXRBdXRvc2F2ZXM6KEJPT0wpZmxh
ZwogewogICAgIF9wcml2YXRlLT5hdXRvc2F2ZXMgPSBmbGFnOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJWaWV3Lm1tCmluZGV4IDM1OGMwN2IwZjRiZWQxODQ5MWJiYzU2YjUyNDhmYThmN2ZmMDU0
ZDYuLmRmZjQ3ZWM4MDRkYjRiMDVjNGU1MjgwMGZjOGI5M2U4ODY0OGUyYjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTE0NTMsNiArMTQ1Myw3IEBAIC0gKHZvaWQpX3By
ZWZlcmVuY2VzQ2hhbmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogICAgIHNldHRp
bmdzLT5zZXRTZXJpZkZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHNlcmlmRm9udEZhbWlseV0pOwog
ICAgIHNldHRpbmdzLT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHN0YW5kYXJk
Rm9udEZhbWlseV0pOwogICAgIHNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
W3ByZWZlcmVuY2VzIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseV0pOworICAgIHNldHRpbmdzLT5z
ZXRCbG9ja05vbkxvY2FsSW1hZ2VzKFtwcmVmZXJlbmNlcyBibG9ja05vbkxvY2FsSW1hZ2VzXSk7
CiAgICAgc2V0dGluZ3MtPnNldExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0
aW5nKFtwcmVmZXJlbmNlcyBsb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVy
ZW5jZV0pOwogICAgIHNldHRpbmdzLT5zZXRTaG91bGRQcmludEJhY2tncm91bmRzKFtwcmVmZXJl
bmNlcyBzaG91bGRQcmludEJhY2tncm91bmRzXSk7CiAgICAgc2V0dGluZ3MtPnNldFRleHRBcmVh
c0FyZVJlc2l6YWJsZShbcHJlZmVyZW5jZXMgdGV4dEFyZWFzQXJlUmVzaXphYmxlXSk7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDcyODM2YjJh
MjI5NjE1MGJiNmUxMWQ3MzM3ZDExNmEwNDY2MjkwNS4uOTc5NzcyZDM0NWM5MDNiYWUxNjJkYjYy
ODRkOTYwNzI5YWFjNDMwYiAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTA0ICBCbyBMaXUgIDxib2xpdUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIENhY2hlZFJlc291cmNlTG9hZGVyIEJsb2NrTm9u
TG9jYWxJbWFnZXMgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBBZGQgdGhlIG5ldyBCbG9ja05vbkxvY2FsSW1h
Z2VzIHRvIG92ZXJyaWRlUHJlZmVyZW5jZXMgaW4KKyAgICAgICAgRFJUVGVzdFJ1bm5lci4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwOgorICAgICAgICAoRFJUVGVzdFJ1bm5l
cjo6b3ZlcnJpZGVQcmVmZXJlbmNlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJQcmVmZXJlbmNlcy5jcHA6CisgICAgICAgIChXZWJQcmVmZXJlbmNlczo6cmVzZXQpOgor
ICAgICAgICAoV2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8pOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgIChXZWJQcmVmZXJlbmNlcyk6
CisKIDIwMTItMDktMDUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAg
ICAgIEZyZXF1ZW50IGNyYXNoZXMgaW4gUGx1Z2luVmlldzo6c2NyaXB0T2JqZWN0IHVuZGVyIHJ1
bnRpbWVPYmplY3RDdXN0b21HZXRPd25Qcm9wZXJ0eVNsb3QKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMGU1YThiMzFiZTdiZmM4NWM3
MGEzOTA5M2I2ZTBmMzE3ZGUzNWQ3OS4uZGI5YzlkMjRkZDdiMTgyYjg0MzU2M2QzZjM2NzA0ZTQ1
YmExODA3NSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVz
dFJ1bm5lci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5jcHAKQEAgLTE1NTksNiArMTU1OSw4IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6b3ZlcnJp
ZGVQcmVmZXJlbmNlKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpCiAg
ICAgICAgIHByZWZzLT5qYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5ID0gY3Bw
VmFyaWFudFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREaXNwbGF5
SW1hZ2VzS2V5IikKICAgICAgICAgcHJlZnMtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA9IGNw
cFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0QmxvY2tO
b25Mb2NhbEltYWdlc0tleSIpCisgICAgICAgIHByZWZzLT5ibG9ja05vbkxvY2FsSW1hZ2VzID0g
Y3BwVmFyaWFudFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXRQbHVn
aW5zRW5hYmxlZCIpCiAgICAgICAgIHByZWZzLT5wbHVnaW5zRW5hYmxlZCA9IGNwcFZhcmlhbnRU
b0Jvb2wodmFsdWUpOwogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0RE9NUGFzdGVBbGxvd2Vk
UHJlZmVyZW5jZUtleSIpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJQcmVmZXJlbmNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQ
cmVmZXJlbmNlcy5jcHAKaW5kZXggYzRkZTBhYmMxNDQ1MGExMDlhYWNhN2Y5NzdhMjllODkzOWIy
NmNlNC4uMWZmNWViNDkzYTRlNDQ3Mzk5NzhmZjgxNTBjMDExNjNhOGI1YWVmYyAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMuY3BwCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcApAQCAtODcs
NiArODcsNyBAQCB2b2lkIFdlYlByZWZlcmVuY2VzOjpyZXNldCgpCiAgICAgamF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSA9IHRydWU7CiAgICAgamF2YVNjcmlwdEVuYWJsZWQg
PSB0cnVlOwogICAgIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA9IHRydWU7CisgICAgYmxvY2tO
b25Mb2NhbEltYWdlcyA9IGZhbHNlOwogICAgIGxvY2FsU3RvcmFnZUVuYWJsZWQgPSB0cnVlOwog
ICAgIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCA9IHRydWU7CiAgICAgcGx1Z2lu
c0VuYWJsZWQgPSB0cnVlOwpAQCAtMjAyLDYgKzIwMyw3IEBAIHZvaWQgV2ViUHJlZmVyZW5jZXM6
OmFwcGx5VG8oV2ViVmlldyogd2ViVmlldykKICAgICBzZXR0aW5ncy0+c2V0SmF2YVNjcmlwdENh
bk9wZW5XaW5kb3dzQXV0b21hdGljYWxseShqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0
aWNhbGx5KTsKICAgICBzZXR0aW5ncy0+c2V0SmF2YVNjcmlwdEVuYWJsZWQoamF2YVNjcmlwdEVu
YWJsZWQpOwogICAgIHNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkobG9hZHNJ
bWFnZXNBdXRvbWF0aWNhbGx5KTsKKyAgICBzZXR0aW5ncy0+c2V0QmxvY2tOb25Mb2NhbEltYWdl
cyhibG9ja05vbkxvY2FsSW1hZ2VzKTsKICAgICBzZXR0aW5ncy0+c2V0TG9jYWxTdG9yYWdlRW5h
YmxlZChsb2NhbFN0b3JhZ2VFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+c2V0T2ZmbGluZVdlYkFw
cGxpY2F0aW9uQ2FjaGVFbmFibGVkKG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZCk7
CiAgICAgc2V0dGluZ3MtPnNldFBsdWdpbnNFbmFibGVkKHBsdWdpbnNFbmFibGVkKTsKZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmggYi9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCmluZGV4IGMzNjU1
M2IzNTQ2OTY0Yzc2ZjI5OTE2YTllYTliOWUyYTIzZTI0YjIuLmRjYWU4YWFhMTMyMDcyZDRjYWYy
NGRjNzVkZjNhZWE5OWJhMTJlMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlByZWZlcmVuY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViUHJlZmVyZW5jZXMuaApAQCAtODksNiArODksNyBAQCBzdHJ1Y3QgV2ViUHJlZmVyZW5j
ZXMgewogICAgIGJvb2wgamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseTsKICAg
ICBib29sIGphdmFTY3JpcHRFbmFibGVkOwogICAgIGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5OworICAgIGJvb2wgYmxvY2tOb25Mb2NhbEltYWdlczsKICAgICBib29sIGxvY2FsU3RvcmFn
ZUVuYWJsZWQ7CiAgICAgYm9vbCBvZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQ7CiAg
ICAgYm9vbCBwbHVnaW5zRW5hYmxlZDsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA1Mzc4YTkwMDVhNDg5NDM5ZTc0YjZiNTdk
N2NjMTQ5NmUwNWJmY2VkLi5kMjdjNjIzMDgyMDNkMWY2ZGU0MGNhZTQxMzViMGU1ZTI4NjBhMzdk
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTItMDktMDQgIEJvIExpdSAgPGJvbGl1QGNocm9t
aXVtLm9yZz4KKworICAgICAgICBBZGQgQ2FjaGVkUmVzb3VyY2VMb2FkZXIgQmxvY2tOb25Mb2Nh
bEltYWdlcyBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD05NTQ3OAorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBhdXRvTG9hZEltYWdl
cyBhbmQgYmxvY2tOb25Mb2NhbEltYWdlcyBjYW4gYmxvY2sKKyAgICAgICAgaW1hZ2VzIGFuZCBj
YW4gcmVsb2FkIHRoZW0gaW4gcGxhY2Ugd2hlbiBzZXR0aW5nIGlzIHNldCB0byB1bmJsb2NrLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQt
aW4tcGxhY2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNw
bGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2xvYWRlci9maWxlLWltYWdlLWFsbG93ZWQtd2l0
aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbG9hZGVyL2ZpbGUtaW1hZ2UtYWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9j
a2VkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9ibG9jay1ub24tbG9j
YWwtaW1hZ2UtYmxvY2tzLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9taXNjL2Jsb2NrLW5vbi1sb2NhbC1pbWFn
ZS1ibG9ja3MtaW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbDogQWRkZWQuCisKIDIw
MTItMDktMDUgIE1paG5lYSBPdmlkZW5pZSAgPG1paG5lYUBhZG9iZS5jb20+CiAKICAgICAgICAg
W0NTUyBSZWdpb25zXSBBdXRvIHdpZHRoIGlzIG5vdCB3b3JraW5nIGZvciBSZWdpb25zCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQt
Y2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5ZWY1MzQ3OWI4
YjVhYTRiNDY0ZjY1N2YyYWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1j
YW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhh
dCBEaXNwbGF5SW1hZ2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUg
cmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mODk0MjcyMGUzY2VlMDQzZjYxNGQ0N2VmMjRlYTgwNDkyYjAz
YTkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1p
bWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApA
QCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2Vi
S2l0RGlzcGxheUltYWdlc0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2Fk
IGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2Ug
ZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7Cisg
ICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZl
cmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAwKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgnV2ViS2l0QmxvY2tOb25Mb2NhbEltYWdlc0tleScsIDApOworICAgIHRl
c3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAg
dmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGlt
YWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lkdGggIT0gMCkgeworICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxV
UkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdoZW4gRGlzcGxheUltYWdlIGlzIHVuc2V0
JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVm
ZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVs
b2FkIGluLXBsYWNlIHdoZW4gRGlzcGFseUltYWdlIGlzIGNoYW5nZXMgZnJvbSB1bnNldCB0byBz
ZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGludGVydmFsSWQgPSB3
aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKworZnVuY3Rpb24gcnVuVGVz
dFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFn
ZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdlLm5hdHVyYWxX
aWR0aCA9PSAzNykgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyku
aW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRl
cnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBE
aXNwbGF5SW1hZ2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVs
b2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6
IFRlc3Qgc2NyaXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4u
L2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24t
bG9jYWwtaW1hZ2UtYmxvY2tlZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzBjMWY0NmM2NmVhYzkzZDc0YWQ2YTQzOWY0MzE1MmI2MGRjODEw
MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ZpbGUtaW1hZ2Ut
YWxsb3dlZC13aXRoLW5vbi1sb2NhbC1pbWFnZS1ibG9ja2VkLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKK0ZpbGUgaW1hZ2VzIHNob3VsZCBiZSBsb2FkZWQgaWYgbm9uLWxvY2FsIGltYWdl
cyBibG9ja2VkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9maWxlLWltYWdlLWFsbG93ZWQtd2l0aC1ub24tbG9jYWwtaW1hZ2UtYmxvY2tlZC5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2Fs
LWltYWdlLWJsb2NrZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjYwMTY0YjEwMjA0MjQ2NWQxZDU1NDY5
YmYxMGFiNjQ1ZjdlYTk1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2Fk
ZXIvZmlsZS1pbWFnZS1hbGxvd2VkLXdpdGgtbm9uLWxvY2FsLWltYWdlLWJsb2NrZWQuaHRtbApA
QCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIu
b3ZlcnJpZGVQcmVmZXJlbmNlKCJXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IiwgMSk7CisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoIldlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNLZXki
LCAxKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRl
c3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScp
OworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0
aCA9PSAzNykKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVy
SFRNTCA9ICdTVUNDRVNTJzsKK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgorICBGaWxlIGltYWdlcyBzaG91bGQgYmUgbG9hZGVkIGlmIG5vbi1sb2NhbCBp
bWFnZXMgYmxvY2tlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFPC9kaXY+CisgIDxpbWcg
aWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9yZXNvdXJjZXMvb3ZhbC5wbmciPgorPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2st
bm9uLWxvY2FsLWltYWdlLWJsb2Nrcy1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2stbm9uLWxvY2FsLWlt
YWdlLWJsb2Nrcy1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMTZiNjJhOTZhMGI0NGY0ODc4ZmZiYzI3YWY2N2I1N2I5OWNmNTAzNgotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9jay1ub24tbG9jYWwt
aW1hZ2UtYmxvY2tzLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBCbG9ja05vbkxvY2FsSW1hZ2VzIGJsb2NrIGh0dHAg
aW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNT
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9ibG9jay1ub24tbG9j
YWwtaW1hZ2UtYmxvY2tzLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvYmxvY2stbm9uLWxvY2FsLWltYWdlLWJsb2Nrcy1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE5YTdiNjAxYTllNDY5
ZDQ4ZmNmNzg3M2FjZjZmMjRmZWQ5NDg2YTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvYmxvY2stbm9uLWxvY2FsLWltYWdlLWJsb2Nrcy1pbWFnZS1hbmQt
Y2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXRCbG9ja05vbkxvY2FsSW1hZ2VzS2V5IGlzIGFz
eW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldEludGVydmFsIHRvIGNoZWNr
IHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK3ZhciBpbnRlcnZhbElk
OworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdl
c0tleScsIDEpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRCbG9j
a05vbkxvY2FsSW1hZ2VzS2V5JywgMSk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOwor
fQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgbm9uX2xvY2FsX2ltZyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdub25fbG9jYWxfaW1nJyk7CisgICAgaWYgKG5vbl9sb2NhbF9p
bWcubmF0dXJhbEhlaWdodCAhPSAwIHx8IG5vbl9sb2NhbF9pbWcubmF0dXJhbFdpZHRoICE9IDAp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIEJsb2NrTm9uTG9jYWwg
aXMgdW5zZXQnOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdGVzdFJ1bm5lci5vdmVy
cmlkZVByZWZlcmVuY2UoJ1dlYktpdEJsb2NrTm9uTG9jYWxJbWFnZXNLZXknLCAwKTsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IElt
YWdlIHNob3VsZCByZWxvYWQgaW4tcGxhY2Ugd2hlbiBEaXNwYWx5SW1hZ2UgaXMgY2hhbmdlcyBm
cm9tIHNldCB0byB1bnNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7CisgICAg
aW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwgMTApOworfQorCitm
dW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIG5vbl9sb2NhbF9pbWcgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnbm9uX2xvY2FsX2ltZycpOworICAgIGlmIChub25fbG9jYWxfaW1n
Lm5hdHVyYWxIZWlnaHQgPT0gMTI4ICYmIG5vbl9sb2NhbF9pbWcubmF0dXJhbFdpZHRoID09IDEy
OCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1M
ID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElkKTsK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+Cis8
L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBCbG9ja05vbkxv
Y2FsSW1hZ2VzIGJsb2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3
aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlk
bid0IHJ1bi48L2Rpdj4KKyAgPGltZyBpZD0ibm9uX2xvY2FsX2ltZyIgc3JjPSJyZXNvdXJjZXMv
Y29tcGFzcy5qcGciPgorPC9ib2R5PgorPC9odG1sPgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163163</attachid>
            <date>2012-09-10 10:47:27 -0700</date>
            <delta_ts>2012-09-12 17:12:39 -0700</delta_ts>
            <desc>Add in-place reload to ImagesEnabled instead. No new settings now.</desc>
            <filename>bug-95478-20120910104703.patch</filename>
            <type>text/plain</type>
            <size>28058</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI3OTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjBlYzU4MmU3Y2FlOTc5
OGNmMjJkOWYyNGZjYzIzN2NlN2U4ZjY0ZS4uZDEwN2ExYTc3NzNmZTNiOTBlZTA3ZTkxZTM4NTMy
NDZmMjJmMWM3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA5LTA4ICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGluLXBsYWNlIHJlbG9hZCBi
ZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgSW1hZ2VzRW5hYmxlZCBzZXR0aW5nIGluIENh
Y2hlZFJlc291cmNlTG9hZGVyIHNpbWlsYXIgdG8KKyAgICAgICAgQXV0b0xvYWRJbWFnZXMuIE1v
dmUgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgdG8gYWZ0ZXIgYQorICAgICAgICBDYWNo
ZWRJbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGFuZCBzdG9yZSB0aGUgY2FjaGUgZm9yIHJlbG9hZCBp
ZiBpdCBpcworICAgICAgICBibG9ja2VkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorCisgICAgICAgICog
V2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRCZWdpbkRvY3VtZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkSW1h
Z2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3Vy
Y2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVl
c3RJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVx
dWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5l
UmV2YWxpZGF0aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpzZXRBdXRvTG9hZEltYWdlcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3RE
ZWZlcnJlZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmg6
CisgICAgICAgIChDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6aW1hZ2VzRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
Lmg6CisgICAgICAgIChTZXR0aW5ncyk6CisKIDIwMTItMDktMDggIEFkYW0gQmFydGggIDxhYmFy
dGhAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gRE9NIHdyYXBwZXIgY3JlYXRpb24gaW52
b2x2ZXMgYSBidW5jaCBvZiBza2V0Y2h5IGNvZGUgcmVsYXRlZCB0byBmaW5kaW5nIHRoZSBGcmFt
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCmluZGV4IGFiNjI3MzI3MzE2N2Y2OWYwMTNlZGYwNmU4OWVhMmMyZmM1
MDU3ZTkuLjcyYzc4MDhlNGMwOTkyYmU0MTJjOGQwMzlhOGNiMTgyMTc5MjMzOTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOS0wOCAgQm8gTGl1ICA8Ym9saXVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIEFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1h
Z2VzRW5hYmxlZCBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05NTQ3OAorCisgICAgICAgIEFkZCB0aGUgbmV3IEltYWdlc0VuYWJsZWQgc2V0
dGluZyB0byBXZWJQcmVmZXJlbmNlcy4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmg6Cisg
ICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
UHJlZmVyZW5jZXMubW06CisgICAgICAgICgrW1dlYlByZWZlcmVuY2VzIGluaXRpYWxpemVdKToK
KyAgICAgICAgKC1bV2ViUHJlZmVyZW5jZXMgc2V0SW1hZ2VzRW5hYmxlZDpdKToKKyAgICAgICAg
KC1bV2ViUHJlZmVyZW5jZXMgaW1hZ2VzRW5hYmxlZF0pOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfcHJlZmVyZW5jZXNDaGFuZ2VkOl0pOgorCiAy
MDEyLTA5LTA3ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJlbmFtZSB0aGUgdXN0cmluZygpIGFjY2Vzc29yIHRvIHN0cmluZygpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IGI0NzY5ZjkxODI1NDkxZDQyMzc2NjE4OGJmYzk5OWRlYjJmMzFlNTAuLmE0
Yjk3ODZkMTRhN2NiNDVhNzA2OTZlNjBjODA4NDJkOTBmNGI2ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC04NDYsNiArODQ2LDcgQEAgX19aTjdXZWJDb3JlOEdyYWRpZW50QzFFUktOU18xMEZs
b2F0UG9pbnRFUzNfCiBfX1pON1dlYkNvcmU4UG9zaXRpb25DMUVOM1dURjEwUGFzc1JlZlB0cklO
U180Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19aTjdXZWJDb3JlOFNldHRpbmdzMTRzZXRK
YXZhRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFdlYkdMRW5hYmxlZEViCitf
X1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0VuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNl
dHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0VXNl
c1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3NldFBsdWdpbnNFbmFibGVkRWIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZmOWExNzNiMjBmOTI0MDNh
ZDFiYzVhNzJiZDFiZjgwZTFlMzJlYTYuLjJhZDE1ZDJlMTI5MDA1NjZhMzc2Y2I1YzhkNTZiZDk5
MTAyYTk5YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtNjQ2LDYg
KzY0Niw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQoYm9vbCBkaXNwYXRj
aCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbml0Q29udGVudFNlY3VyaXR5UG9saWN5KCk7
CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXR0aW5n
cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNl
dEltYWdlc0VuYWJsZWQoc2V0dGluZ3MgPyBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpIDog
dHJ1ZSk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
c2V0QXV0b0xvYWRJbWFnZXMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21h
dGljYWxseSgpKTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAxNTI3YTYzYWY1ODY0YzJkMjk0
NDNjZjI0YmIyNWMxMDM4M2FiNWE1Li44NWI0YTczOWJkZWFiYTlmNWY2OTg3YmMxZjQ2OTExNjk0
MDczZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAK
QEAgLTc5LDcgKzc5LDcgQEAgQ2FjaGVkSW1hZ2U6On5DYWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2Fj
aGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVy
LCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNo
ZWRSZXNvdXJjZUxvYWRlciB8fCBjYWNoZWRSZXNvdXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMo
KSkKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8ICFjYWNoZWRSZXNvdXJjZUxvYWRl
ci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobV9yZXNvdXJjZVJlcXVlc3QudXJsKCkpKQogICAgICAg
ICBDYWNoZWRSZXNvdXJjZTo6bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAg
ICAgZWxzZQogICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVmZDdjNTA1
YTExZWQ1ODFkYzRhZWY5NjFmNjFmMWUxYzY2ZDBmODUuLmY3NGE3OGY0NDNjNDA2NmE2ZjZkNzBm
NjFhZTYwZGEyODIwNDdjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYgKzExNiw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVl
c3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIo
dGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKKyAgICAsIG1faW1h
Z2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hbGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNlKQogewog
fQpAQCAtMTYwLDcgKzE2Miw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVxCiAgICAgICAgIH0K
ICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0
YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0
aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYm
IHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgIGlmICghc2hvdWxkRGVmZXJJbWFnZUxv
YWQocmVxdWVzdC51cmwoKSkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2Fk
KCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpAQCAtMzYyLDEyICszNjQsNiBAQCBi
b29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVz
b3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkt
PmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKGZyYW1lKCkpIHsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRlcigp
LT5jbGllbnQoKS0+YWxsb3dJbWFnZSghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0Vu
YWJsZWQoKSwgdXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7
CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAgLTUxNCwxMSArNTEwLDExIEBAIENhY2hlZFJlc291cmNl
TG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWlu
ZVJldmFsaWRhCiB7CiAgICAgaWYgKCFleGlzdGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm4g
TG9hZDsKLSAgICAKKwogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIHByZWxvYWQgZ29pbmcgZm9y
IHRoaXMgVVJMLgogICAgIGlmIChmb3JQcmVsb2FkICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJl
bG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBVc2U7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2Ft
ZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFzIGEgZGlmZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVs
b2FkLgogICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgIT0gdHlwZSkgewogICAgICAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJl
dmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CkBAIC01
MzMsNiArNTI5LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgLy8gb2YgdGhpbmdz
IGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRl
LCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgogICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9u
YWwoKSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKKworICAgIC8vIERvIG5vdCBsb2FkIGZyb20g
Y2FjaGUgaWYgaW1hZ2VzIGFyZSBub3QgZW5hYmxlZC4gVGhlIGxvYWQgZm9yIHRoaXMgaW1hZ2Ug
d2lsbCBiZSBibG9ja2VkCisgICAgLy8gaW4gcmVxdWVzdEltYWdlLgorICAgIGlmIChleGlzdGlu
Z1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgJiYgIW1f
aW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICAKICAgICAvLyBEb24n
dCByZWxvYWQgcmVzb3VyY2VzIHdoaWxlIHBhc3RpbmcuCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJl
c291cmNlcykKQEAgLTYyOSwxMyArNjMwLDQzIEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQogICAgIGlmICghbV9hdXRvTG9hZEltYWdl
cykKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwor
fQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5h
YmxlKQoreworICAgIGlmIChlbmFibGUgPT0gbV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ltYWdlc0VuYWJsZWQgPSBlbmFibGU7CisKKyAgICBpZiAoIW1faW1hZ2Vz
RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJl
ZCgpOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9h
ZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKGZyYW1lKCkpCisgICAgICAgIGlm
ICghZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0ltYWdlKG1faW1hZ2VzRW5hYmxl
ZCwgdXJsKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKCFtX2F1dG9Mb2Fk
SW1hZ2VzKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKwor
dm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpCit7
CiAgICAgRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9kb2N1bWVudFJlc291
cmNlcy5lbmQoKTsKICAgICBmb3IgKERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9kb2N1bWVudFJlc291cmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYg
KHJlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKICAg
ICAgICAgICAgIENhY2hlZEltYWdlKiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihz
dGF0aWNfY2FzdDxjb25zdCBDYWNoZWRJbWFnZSo+KHJlc291cmNlKSk7CiAKLSAgICAgICAgICAg
IGlmIChpbWFnZS0+c3RpbGxOZWVkc0xvYWQoKSkKKyAgICAgICAgICAgIGlmIChpbWFnZS0+c3Rp
bGxOZWVkc0xvYWQoKSAmJiAhc2hvdWxkRGVmZXJJbWFnZUxvYWQoaW1hZ2UtPnVybCgpKSkKICAg
ICAgICAgICAgICAgICBpbWFnZS0+bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRp
b25zKCkpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAppbmRleCAzZjFjMjMzYjAwOGRmODQwMWE4YzFh
YmExMTgxNzVkYTdkODBmYjVlLi5kNWJhZmRlNWY0NTJhNGQ3ZWM1Y2MyNjk2OGY1MzIzZDIyYTcx
MzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuaApAQCAtOTgsNiArOTgsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdXRvTG9h
ZEltYWdlcygpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lkIHNl
dEF1dG9Mb2FkSW1hZ2VzKGJvb2wpOworCisgICAgYm9vbCBpbWFnZXNFbmFibGVkKCkgY29uc3Qg
eyByZXR1cm4gbV9pbWFnZXNFbmFibGVkOyB9CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJv
b2wpOworCisgICAgYm9vbCBzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJikgY29uc3Q7
CiAgICAgCiAgICAgQ2FjaGVQb2xpY3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAgICAKQEAgLTEz
Niw2ICsxNDEsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50
UmVzb3VyY2VzVGltZXJGaXJlZChUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2
b2lkIHBlcmZvcm1Qb3N0TG9hZEFjdGlvbnMoKTsKKworICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZO
b3REZWZlcnJlZCgpOwogICAgIAogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7
CiAgICAgbXV0YWJsZSBEb2N1bWVudFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CkBA
IC0xNTMsOCArMTYwLDkgQEAgcHJpdmF0ZToKIAogICAgIFRpbWVyPENhY2hlZFJlc291cmNlTG9h
ZGVyPiBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsKIAotICAgIC8vIDMw
IGJpdHMgbGVmdAorICAgIC8vIDI5IGJpdHMgbGVmdAogICAgIGJvb2wgbV9hdXRvTG9hZEltYWdl
cyA6IDE7CisgICAgYm9vbCBtX2ltYWdlc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hbGxvd1N0
YWxlUmVzb3VyY2VzIDogMTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggZjI1
MTUwYjUxNmMzOTY1MzVjMzhiZWZjYTNjYjJhMmE2OGZlZWEwZi4uN2UwNTNmMWYxZTFiYzEyZDVi
NzU1NWMzN2E0NDU0Yjk1NDYyZjU3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQ2
LDEwICs0NiwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLXN0YXRpYyB2b2lkIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKFBh
Z2UqIHBhZ2UpCitzdGF0aWMgdm9pZCBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhQYWdlKiBwYWdl
KQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBm
cmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRy
YXZlcnNlTmV4dCgpKSB7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJj
ZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKHBhZ2UtPnNldHRpbmdzKCktPmFyZUltYWdlc0Vu
YWJsZWQoKSk7CiAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRl
cigpLT5zZXRBdXRvTG9hZEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9t
YXRpY2FsbHkoKSk7CisgICAgfQogfQogCiAvLyBTZXRzIHRoZSBlbnRyeSBpbiB0aGUgZm9udCBt
YXAgZm9yIHRoZSBnaXZlbiBzY3JpcHQuIElmIGZhbWlseSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBy
ZW1vdmVzIHRoZSBlbnRyeSBpbnN0ZWFkLgpAQCAtMjg2LDcgKzI4OCw3IEBAIFNldHRpbmdzOjpT
ZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQodHJ1ZSkK
ICAgICAsIG1fZGlhZ25vc3RpY0xvZ2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxp
bmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkKGZhbHNlKQotICAgICwgbV9sb2Fkc0ltYWdlc0F1
dG9tYXRpY2FsbHlUaW1lcih0aGlzLCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eVRpbWVyRmlyZWQpCisgICAgLCBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywg
JlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3Jl
bWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZy
YW1lIG1heSBub3QgaGF2ZSBiZWVuIGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBB
dG9taWNTdHJpbmcKQEAgLTQ1MiwxMiArNDU0LDEyIEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRz
SW1hZ2VzQXV0b21hdGljYWxseShib29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAv
LyBTdGFydGluZyB0aGVzZSBsb2FkcyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBC
eSBwdXR0aW5nIGl0IG9uIGEgMC1kZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5j
ZWxzIHRoZW0KICAgICAvLyBiZWZvcmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFy
dC4KICAgICAvLyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNz
aW9uLgotICAgIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDAp
OworICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9
CiAKLXZvaWQgU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGlt
ZXI8U2V0dGluZ3M+KikKK3ZvaWQgU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJG
aXJlZChUaW1lcjxTZXR0aW5ncz4qKQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eUluQWxsRnJhbWVzKG1fcGFnZSk7CisgICAgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MobV9wYWdl
KTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9h
ZGluZ1NldHRpbmcoYm9vbCBsb2Fkc1NpdGVJY29ucykKQEAgLTUwMyw2ICs1MDUsOSBAQCB2b2lk
IFNldHRpbmdzOjpzZXRKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMoYm9vbCBpc0phdmFFbmFibGVk
Rm9yTG9jYWxGaWxlcykKIHZvaWQgU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBhcmVJ
bWFnZXNFbmFibGVkKQogewogICAgIG1fYXJlSW1hZ2VzRW5hYmxlZCA9IGFyZUltYWdlc0VuYWJs
ZWQ7CisKKyAgICAvLyBTZWUgY29tbWVudCBpbiBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHku
CisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0K
IAogdm9pZCBTZXR0aW5nczo6c2V0TWVkaWFFbmFibGVkKGJvb2wgaXNNZWRpYUVuYWJsZWQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgKaW5kZXggNmZhM2JjMDI0YjhiOGMyZjlhY2MwZWQwM2QyNjE5ZDQ2
NjUzMjk2My4uODk1NDU4MmFjMjMzYTY3ODYzM2FhYTkxODM1ZWVkN2YwYTIzNTY1NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaApAQCAtNzk5LDggKzc5OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBib29sIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7
CiAKLSAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGlt
ZXI7Ci0gICAgICAgIHZvaWQgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1l
cjxTZXR0aW5ncz4qKTsKKyAgICAgICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5n
U2V0dGluZ3NUaW1lcjsKKyAgICAgICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmly
ZWQoVGltZXI8U2V0dGluZ3M+Kik7CiAgICAgICAgIAogICAgICAgICBkb3VibGUgbV9pbmNyZW1l
bnRhbFJlbmRlcmluZ1N1cHByZXNzaW9uVGltZW91dEluU2Vjb25kczsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKaW5kZXgg
YjE3MTFiYjhiYzM5OTQzOTFhOWZjMWU2YTUwOTdlMzg1NGM0NWUzNy4uZDYwZDY1YWFiZWJkNjVh
Y2YwNDVmYThkY2I3MjBmNGIxYTgxNzE1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCkBAIC02MSw2ICs2MSw3IEBACiAj
ZGVmaW5lIFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxs
b3dBbmltYXRlZEltYWdlc1ByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdEFsbG93QW5pbWF0
ZWRJbWFnZUxvb3BpbmdQcmVmZXJlbmNlS2V5IEAiV2ViS2l0QWxsb3dBbmltYXRlZEltYWdlTG9v
cGluZ1ByZWZlcmVuY2VLZXkiCiAjZGVmaW5lIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgQCJXZWJL
aXREaXNwbGF5SW1hZ2VzS2V5IgorI2RlZmluZSBXZWJLaXRJbWFnZXNFbmFibGVkS2V5IEAiV2Vi
S2l0SW1hZ2VzRW5hYmxlZEtleSIKICNkZWZpbmUgV2ViS2l0TG9hZFNpdGVJY29uc0tleSBAIldl
YktpdExvYWRTaXRlSWNvbnNLZXkiCiAjZGVmaW5lIFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBp
cmF0aW9uSW50ZXJ2YWxLZXkgQCJXZWJLaXRCYWNrRm9yd2FyZENhY2hlRXhwaXJhdGlvbkludGVy
dmFsS2V5IgogI2RlZmluZSBXZWJLaXRUYWJUb0xpbmtzUHJlZmVyZW5jZUtleSBAIldlYktpdFRh
YlRvTGlua3NQcmVmZXJlbmNlS2V5IgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJQcmVmZXJlbmNlcy5oIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVm
ZXJlbmNlcy5oCmluZGV4IDkzMjY1NmIwNzBmOGM0MzI4NTEyMzVhM2I5YzQ3ZmVkZDIzNTI2OTUu
LjZjYjIzOWExNDBhMzc4ODkxZjExNzE4YzhlMjcwMDIwOWQzN2RjYjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgKQEAgLTMyMSw2ICszMjEsMTcgQEAgZXh0
ZXJuIE5TU3RyaW5nICpXZWJQcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb247CiAtIChCT09M
KWxvYWRzSW1hZ2VzQXV0b21hdGljYWxseTsKIAogLyohCisgICAgQG1ldGhvZCBzZXRJbWFnZXNF
bmFibGVkOgorICAgIEBwYXJhbSBmbGFnCisqLworLSAodm9pZClzZXRJbWFnZXNFbmFibGVkOiAo
Qk9PTClmbGFnOworCisvKiEKKyAgICBAbWV0aG9kIGltYWdlc0VuYWJsZWQKKyovCistIChCT09M
KWltYWdlc0VuYWJsZWQ7CisKKy8qIQogICAgIEBtZXRob2Qgc2V0QXV0b3NhdmVzOgogICAgIEBw
YXJhbSBmbGFnIAogICAgIEBkaXNjdXNzaW9uIElmIGF1dG9zYXZlIHByZWZlcmVuY2VzIGlzIFlF
UyB0aGUgc2V0dGluZ3MgcmVwcmVzZW50ZWQgYnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlByZWZlcmVuY2VzLm1tCmluZGV4IDhlMTNmMTliNGViM2Q2NjQ5YjkxN2FkMDBiNWU2ODFj
MDEzODIyMzQuLmEzODYwYjM4MGQ4ZmUyMjM0NmI5MTg2NTg2N2I4OGU1OTBlNmE5Y2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQpAQCAtMzM0LDYgKzMz
NCw3IEBAICsgKHZvaWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJv
b2w6WUVTXSwgIFdlYktpdEFsbG93QW5pbWF0ZWRJbWFnZXNQcmVmZXJlbmNlS2V5LAogICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEFsbG93QW5pbWF0ZWRJbWFn
ZUxvb3BpbmdQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
WUVTXSwgIFdlYktpdERpc3BsYXlJbWFnZXNLZXksCisgICAgICAgIFtOU051bWJlciBudW1iZXJX
aXRoQm9vbDpZRVNdLCAgV2ViS2l0SW1hZ2VzRW5hYmxlZEtleSwKICAgICAgICAgW05TTnVtYmVy
IG51bWJlcldpdGhCb29sOk5PXSwgICBXZWJLaXRMb2FkU2l0ZUljb25zS2V5LAogICAgICAgICBA
IjE4MDAiLCAgICAgICAgICAgICAgICAgICAgICAgIFdlYktpdEJhY2tGb3J3YXJkQ2FjaGVFeHBp
cmF0aW9uSW50ZXJ2YWxLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9vbDpOT10s
ICAgV2ViS2l0VGFiVG9MaW5rc1ByZWZlcmVuY2VLZXksCkBAIC03NjIsNiArNzYzLDE2IEBAIC0g
KEJPT0wpbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5CiAgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFs
dWVGb3JLZXk6IFdlYktpdERpc3BsYXlJbWFnZXNLZXldOwogfQogCistICh2b2lkKXNldEltYWdl
c0VuYWJsZWQ6IChCT09MKWZsYWcKK3sKKyAgICBbc2VsZiBfc2V0Qm9vbFZhbHVlOiBmbGFnIGZv
cktleTogV2ViS2l0SW1hZ2VzRW5hYmxlZEtleV07Cit9CisKKy0gKEJPT0wpaW1hZ2VzRW5hYmxl
ZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OiBXZWJLaXRJbWFnZXNFbmFi
bGVkS2V5XTsKK30KKwogLSAodm9pZClzZXRBdXRvc2F2ZXM6KEJPT0wpZmxhZwogewogICAgIF9w
cml2YXRlLT5hdXRvc2F2ZXMgPSBmbGFnOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IDdiODQxMmNmZTllOWI2YmI4YWYzYjM1MzVjMTRlMTQwYWU2MDU0MGMuLjcwZTI1NTM4
OGQwZTI5MWY1NzU2OGMzYjMyODA1YzYzOWFhNGM0NmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTE0NTMsNiArMTQ1Myw3IEBAIC0gKHZvaWQpX3ByZWZlcmVuY2VzQ2hh
bmdlZDooV2ViUHJlZmVyZW5jZXMgKilwcmVmZXJlbmNlcwogICAgIHNldHRpbmdzLT5zZXRTZXJp
ZkZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHNlcmlmRm9udEZhbWlseV0pOwogICAgIHNldHRpbmdz
LT5zZXRTdGFuZGFyZEZvbnRGYW1pbHkoW3ByZWZlcmVuY2VzIHN0YW5kYXJkRm9udEZhbWlseV0p
OwogICAgIHNldHRpbmdzLT5zZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoW3ByZWZlcmVuY2Vz
IGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseV0pOworICAgIHNldHRpbmdzLT5zZXRJbWFnZXNFbmFi
bGVkKFtwcmVmZXJlbmNlcyBpbWFnZXNFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldExvYWRz
U2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKFtwcmVmZXJlbmNlcyBsb2Fkc1Np
dGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nUHJlZmVyZW5jZV0pOwogICAgIHNldHRpbmdzLT5z
ZXRTaG91bGRQcmludEJhY2tncm91bmRzKFtwcmVmZXJlbmNlcyBzaG91bGRQcmludEJhY2tncm91
bmRzXSk7CiAgICAgc2V0dGluZ3MtPnNldFRleHRBcmVhc0FyZVJlc2l6YWJsZShbcHJlZmVyZW5j
ZXMgdGV4dEFyZWFzQXJlUmVzaXphYmxlXSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTc4OGFkMmJhNGVhMDQ3ZWYxMWUyOTY5N2VmN2UwYWQw
NDc2MjhjMy4uZGNkZGQ0ZmIzYzdmY2M1MzIzZGRiMmMwN2E2MTZjNzhhMGU1YmM2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIw
IEBACisyMDEyLTA5LTA4ICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
QWRkIGluLXBsYWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAg
ICAgICAgQWRkIHRoZSBJbWFnZXNFbmFibGVkIHNldHRpbmcgdG8gb3ZlcnJpZGVQcmVmZXJlbmNl
cyBpbgorICAgICAgICBEUlRUZXN0UnVubmVyLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1
bm5lci5jcHA6CisgICAgICAgIChEUlRUZXN0UnVubmVyOjpvdmVycmlkZVByZWZlcmVuY2UpOgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcDoKKyAg
ICAgICAgKFdlYlByZWZlcmVuY2VzOjphcHBseVRvKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oOgorICAgICAgICAoV2ViUHJlZmVyZW5jZXMpOgor
CiAyMDEyLTA5LTA4ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgW1dLMl0gTmV3IGZhc3QvZXZlbnRzL3RhYi1mb2N1cy1saW5rLWluLWNh
bnZhcyBmYWlscyBmcm9tIHIxMjY5MDgKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0RSVFRlc3RSdW5uZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vRFJUVGVzdFJ1bm5lci5jcHAKaW5kZXggMGU1YThiMzFiZTdiZmM4NWM3MGEzOTA5M2I2ZTBm
MzE3ZGUzNWQ3OS4uODZkYWNjN2NhNjMwYjEyZmU3NzljODI1NGQxY2U4NzhiOWQ3YTc5MCAxMDA2
NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAK
KysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vRFJUVGVzdFJ1bm5lci5jcHAKQEAg
LTE1NTcsNiArMTU1Nyw4IEBAIHZvaWQgRFJUVGVzdFJ1bm5lcjo6b3ZlcnJpZGVQcmVmZXJlbmNl
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJpCiAgICAgICAgIHByZWZz
LT53ZWJTZWN1cml0eUVuYWJsZWQgPSBjcHBWYXJpYW50VG9Cb29sKHZhbHVlKTsKICAgICBlbHNl
IGlmIChrZXkgPT0gIldlYktpdEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHki
KQogICAgICAgICBwcmVmcy0+amF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSA9
IGNwcFZhcmlhbnRUb0Jvb2wodmFsdWUpOworICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0SW1h
Z2VzRW5hYmxlZEtleSIpCisgICAgICAgIHByZWZzLT5pbWFnZXNFbmFibGVkID0gY3BwVmFyaWFu
dFRvQm9vbCh2YWx1ZSk7CiAgICAgZWxzZSBpZiAoa2V5ID09ICJXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5IikKICAgICAgICAgcHJlZnMtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSA9IGNwcFZhcmlh
bnRUb0Jvb2wodmFsdWUpOwogICAgIGVsc2UgaWYgKGtleSA9PSAiV2ViS2l0UGx1Z2luc0VuYWJs
ZWQiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVy
ZW5jZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IGM0ZGUwYWJjMTQ0NTBhMTA5YWFjYTdmOTc3YTI5ZTg5MzliMjZjZTQuLjZlOTA0
OTc1MDJhMTgzYTdjOWE5ZGNiZDExNGIxNzViNDQxYjQyMDAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmNwcAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5jcHAKQEAgLTIwMSw2ICsyMDEsNyBA
QCB2b2lkIFdlYlByZWZlcmVuY2VzOjphcHBseVRvKFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgc2V0
dGluZ3MtPnNldEphdmFTY3JpcHRDYW5BY2Nlc3NDbGlwYm9hcmQoamF2YVNjcmlwdENhbkFjY2Vz
c0NsaXBib2FyZCk7CiAgICAgc2V0dGluZ3MtPnNldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1
dG9tYXRpY2FsbHkoamF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSk7CiAgICAg
c2V0dGluZ3MtPnNldEphdmFTY3JpcHRFbmFibGVkKGphdmFTY3JpcHRFbmFibGVkKTsKKyAgICBz
ZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxlZChpbWFnZXNFbmFibGVkKTsKICAgICBzZXR0aW5ncy0+
c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSk7CiAg
ICAgc2V0dGluZ3MtPnNldExvY2FsU3RvcmFnZUVuYWJsZWQobG9jYWxTdG9yYWdlRW5hYmxlZCk7
CiAgICAgc2V0dGluZ3MtPnNldE9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZChvZmZs
aW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQpOwpAQCAtMjM3LDcgKzIzOCw2IEBAIHZvaWQg
V2ViUHJlZmVyZW5jZXM6OmFwcGx5VG8oV2ViVmlldyogd2ViVmlldykKICAgICBzZXR0aW5ncy0+
c2V0Rm9udFJlbmRlcmluZ01vZGVOb3JtYWwoKTsKICAgICBzZXR0aW5ncy0+c2V0VGV4dERpcmVj
dGlvblN1Ym1lbnVJbmNsdXNpb25CZWhhdmlvck5ldmVySW5jbHVkZWQoKTsKICAgICBzZXR0aW5n
cy0+c2V0VXNlc0VuY29kaW5nRGV0ZWN0b3IoZmFsc2UpOwotICAgIHNldHRpbmdzLT5zZXRJbWFn
ZXNFbmFibGVkKHRydWUpOwogICAgIHNldHRpbmdzLT5zZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0
aW9uRW5hYmxlZCh0cnVlKTsKICAgICAvLyBFbmFibGUgZnVsbHNjcmVlbiBzbyB0aGUgZnVsbHNj
cmVlbiBsYXlvdXQgdGVzdHMgY2FuIHJ1bi4KICAgICBzZXR0aW5ncy0+c2V0RnVsbFNjcmVlbkVu
YWJsZWQodHJ1ZSk7CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJQcmVmZXJlbmNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViUHJlZmVy
ZW5jZXMuaAppbmRleCBjMzY1NTNiMzU0Njk2NGM3NmYyOTkxNmE5ZWE5YjllMmEyM2UyNGIyLi5h
NjZmMThlYTUzMmQ0ZTUwODY5ZmIyYzQ1YzEzZjViYWE5Y2RhNWIzIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJQcmVmZXJlbmNlcy5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlByZWZlcmVuY2VzLmgKQEAgLTg4LDYgKzg4LDcgQEAg
c3RydWN0IFdlYlByZWZlcmVuY2VzIHsKICAgICBib29sIGphdmFTY3JpcHRDYW5BY2Nlc3NDbGlw
Ym9hcmQ7CiAgICAgYm9vbCBqYXZhU2NyaXB0Q2FuT3BlbldpbmRvd3NBdXRvbWF0aWNhbGx5Owog
ICAgIGJvb2wgamF2YVNjcmlwdEVuYWJsZWQ7CisgICAgYm9vbCBpbWFnZXNFbmFibGVkOwogICAg
IGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5OwogICAgIGJvb2wgbG9jYWxTdG9yYWdlRW5h
YmxlZDsKICAgICBib29sIG9mZmxpbmVXZWJBcHBsaWNhdGlvbkNhY2hlRW5hYmxlZDsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCAxZGQ0NDBjMDc4ZjI4MmRiMGY3YzdmZjJlZDVlN2M0ZDg4ZWY2NzFiLi43ZmRjMzA2NzkxMDBl
ZGY3NTI4YTZiNGFmMmRkZjk0YWMxZDVlNGZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTIt
MDktMDggIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW4tcGxh
Y2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBBZGQg
dGVzdHMgdG8gY2hlY2sgYXV0b0xvYWRJbWFnZXMgYW5kIGltYWdlc0VuYWJsZWQgY2FuIGJsb2Nr
CisgICAgICAgIGltYWdlcyBhbmQgY2FuIHJlbG9hZCB0aGVtIGluIHBsYWNlIHdoZW4gc2V0dGlu
ZyBpcyBzZXQgdG8gdW5ibG9jay4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2Nr
LWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5k
LWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIv
aW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVu
YWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6
IEFkZGVkLgorCiAyMDEyLTA5LTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBbVjhdIERPTSB3cmFwcGVyIGNyZWF0aW9uIGludm9sdmVzIGEgYnVuY2ggb2Yg
c2tldGNoeSBjb2RlIHJlbGF0ZWQgdG8gZmluZGluZyB0aGUgRnJhbWUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdl
LWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTllZjUzNDc5YjhiNWFhNGI0NjRm
NjU3ZjJhY2Y3ZTViYjQ0N2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9s
b2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQt
aW4tcGxhY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IERpc3BsYXlJ
bWFnZXMgZGlzYWJsZWQgY2FuIGJsb2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBp
bi1wbGFjZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWlt
YWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjJmODI2ZGYwYzUzNGViZDM4Njc2ZDgzMTE2ZjIzYmU1NGRiMjQ4YzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0
LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEs
NDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXREaXNwbGF5
SW1hZ2VzS2V5IGlzIGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldElu
dGVydmFsIHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisK
K3ZhciBpbnRlcnZhbElkOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLmR1bXBBc1RleHQoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2Vi
S2l0SW1hZ2VzRW5hYmxlZEtleScsIDEpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJl
bmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJl
bG9hZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdo
dCAhPSAwIHx8IGltYWdlLm5hdHVyYWxXaWR0aCAhPSAwKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxk
IG5vdCBiZSBsb2FkZWQgd2hlbiBEaXNwbGF5SW1hZ2UgaXMgdW5zZXQnOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERp
c3BsYXlJbWFnZXNLZXknLCAxKTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCByZWxvYWQgaW4tcGxhY2Ugd2hl
biBEaXNwYWx5SW1hZ2UgaXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1
bm5lci53YWl0VW50aWxEb25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZh
bChydW5UZXN0UmVzdCwgMTApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAg
dmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGlt
YWdlLm5hdHVyYWxIZWlnaHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3KSB7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnU1VD
Q0VTUyc7CisgICAgICAgIHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpOworICAgICAg
ICB0ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KKyAgVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMgZGlz
YWJsZWQgY2FuIGJsb2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3
aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlk
bid0IHJ1bi48L2Rpdj4KKyAgPGltZyBpZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2VzL3Jlc291cmNl
cy9vdmFsLnBuZyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2Fu
LXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjk1MWQ0NjAxY2NjM2NhMThkOGNmZDVhOTY5Nzgx
MTFmZmIwYzYwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IEVuYWJsZUltYWdlcyB1
bnNldCBjYW4gYmxvY2sgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRv
Z2dsZWQuCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2lt
YWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTI0
ZmFiMWY2ZTVjYjk4M2VhMzc0YzljYzBjNjU4ZTZlMDk5ZWI0ZQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1p
bWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXRJbWFnZXNFbmFibGVkS2V5IGlz
IGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldEludGVydmFsIHRvIGNo
ZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK3ZhciBpbnRlcnZh
bElkOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUlt
YWdlc0tleScsIDEpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRJ
bWFnZXNFbmFibGVkS2V5JywgMCk7CisgICAgdGVzdFJ1bm5lci5xdWV1ZVJlbG9hZCgpOworfQor
CitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCAhPSAwIHx8IGlt
YWdlLm5hdHVyYWxXaWR0aCAhPSAwKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIG5vdCBiZSBsb2Fk
ZWQgd2hlbiBJbWFnZXNFbmFibGVkIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXRJbWFnZXNFbmFibGVk
S2V5JywgMSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRN
TCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gSW1hZ2VzRW5h
YmxlZCBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0JzsKKyAgICB0ZXN0UnVubmVyLndhaXRV
bnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVydmFsKHJ1blRlc3RS
ZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RSZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2Ug
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJh
bEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lkdGggPT0gMzcpIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAg
ICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RSdW5u
ZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9j
ayBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRp
diBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8
aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIj4KKzwvYm9k
eT4KKzwvaHRtbD4KKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163741</attachid>
            <date>2012-09-12 17:12:43 -0700</date>
            <delta_ts>2012-09-13 15:18:15 -0700</delta_ts>
            <desc>Changes suggested by Adam Barth: Condition idioms, use InternalSetting for tests, add simple test for redirect</desc>
            <filename>bug-95478-20120912171217.patch</filename>
            <type>text/plain</type>
            <size>25552</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4MzUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTdiOWI5YmU4ZWU4NzRh
MTQ4ZWIzMzJmZDkyNzAyMDJmZjYxOTkzYy4uZDVjOTU3M2U4NjBmYWZiNzEyY2FiZDA3ZjJjOTcy
ODk3NWEwNjFlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA5LTEyICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGluLXBsYWNlIHJlbG9hZCBi
ZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgSW1hZ2VzRW5hYmxlZCBzZXR0aW5nIGluIENh
Y2hlZFJlc291cmNlTG9hZGVyIHNpbWlsYXIgdG8KKyAgICAgICAgQXV0b0xvYWRJbWFnZXMuIE1v
dmUgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgdG8gYWZ0ZXIgYQorICAgICAgICBDYWNo
ZWRJbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGFuZCBzdG9yZSB0aGUgY2FjaGUgZm9yIHJlbG9hZCBp
ZiBpdCBpcworICAgICAgICBibG9ja2VkLgorCisgICAgICAgIFRlc3RzOiBmYXN0L2xvYWRlci9k
aXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFj
ZS5odG1sCisgICAgICAgICAgICAgICBmYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC90ZXN0cy9sb2FkaW5nL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1yZWRp
cmVjdGVkLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKworICAgICAgICAqIFdl
YkNvcmUuZXhwLmluOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudCk6CisgICAgICAgICogbG9h
ZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZEltYWdl
Ojpsb2FkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJlc291cmNl
TG9hZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0
SW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVl
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJl
dmFsaWRhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6c2V0QXV0b0xvYWRJbWFnZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2hvdWxkRGVmZXJJbWFnZUxvYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlbG9hZEltYWdlc0lmTm90RGVm
ZXJyZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oOgor
ICAgICAgICAoQ2FjaGVkUmVzb3VyY2VMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmltYWdlc0VuYWJsZWQpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3Mu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6c2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MpOgorICAgICAg
ICAoV2ViQ29yZTo6U2V0dGluZ3M6OlNldHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRp
bmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpOgorICAgICAgICAoV2ViQ29yZTo6U2V0
dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5o
OgorICAgICAgICAoU2V0dGluZ3MpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbFNldHRpbmdzOjpzZXRJbWFnZXNFbmFi
bGVkKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0
aW5ncy5oOgorICAgICAgICAoSW50ZXJuYWxTZXR0aW5ncyk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmlkbDoKKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQu
cmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQg
cjEyODMxOCBhbmQgcjEyODMzMi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KaW5kZXggMzk0MWFiYzNiMmNk
OGI1NGZiNDI4NmUxYTFlOGM2YjQ4MzFlNDZjMi4uZjEzYWNmMjlhY2Y1MTcwZmY1YTQ1ZjZhMWQ5
ZWMyMTFmOWJmZWRlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KQEAgLTg0OSw2ICs4NDksNyBAQCBf
X1pON1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQb2ludEVTM18KIF9fWk43V2ViQ29y
ZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzROb2RlRUVFaU5TMF8xMEFuY2hvclR5
cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFFbmFibGVkRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43V2ViQ29yZThTZXR0aW5nczE2c2V0
SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldFNjcmlwdEVuYWJsZWRF
YgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFnZUNhY2hlRWIKIF9fWk43V2ViQ29y
ZThTZXR0aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggN2QyZWQ0OWZhMzMzZDdhMTVlMDkxZmY5OWRjZTY0MGNkOWU3YTEwOC4u
ODQ3M2JjMzEzOTQyZTZiZDBiZjY0NTczMWM0NGI3Mjc4ZGYyODkxMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02NDcsNiArNjQ3LDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAogICAgIFNldHRpbmdzKiBzZXR0aW5n
cyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7CisgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1hZ2VzRW5hYmxlZCghc2V0dGluZ3Mg
fHwgc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMoc2V0dGluZ3MgJiYg
c2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKIAogICAgIGlmIChtX2RvY3Vt
ZW50TG9hZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNw
cAppbmRleCAxNTI3YTYzYWY1ODY0YzJkMjk0NDNjZjI0YmIyNWMxMDM4M2FiNWE1Li44NWI0YTcz
OWJkZWFiYTlmNWY2OTg3YmMxZjQ2OTExNjk0MDczZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgQ2FjaGVkSW1hZ2U6
On5DYWNoZWRJbWFnZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VM
b2FkZXIqIGNhY2hlZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMm
IG9wdGlvbnMpCiB7Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCBjYWNoZWRSZXNv
dXJjZUxvYWRlci0+YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9h
ZGVyIHx8ICFjYWNoZWRSZXNvdXJjZUxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobV9yZXNv
dXJjZVJlcXVlc3QudXJsKCkpKQogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChjYWNoZWRS
ZXNvdXJjZUxvYWRlciwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBzZXRMb2FkaW5nKGZh
bHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXIuY3BwCmluZGV4IDVmZDdjNTA1YTExZWQ1ODFkYzRhZWY5NjFmNjFmMWUxYzY2ZDBm
ODUuLmJkNzU0ZmJmY2YxZDdkNjY3YjU5MDc4ZjMxN2EzN2RhMzQ3N2ZkMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApA
QCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUgIk1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGlu
Z0xvYWRlci5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUg
IlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRl
ICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYgKzEx
Niw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVu
dCogZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVlc3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29s
bGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIodGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpn
YXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xv
YWRJbWFnZXModHJ1ZSkKKyAgICAsIG1faW1hZ2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hbGxv
d1N0YWxlUmVzb3VyY2VzKGZhbHNlKQogewogfQpAQCAtMTYwLDcgKzE2Miw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdElt
YWdlKFJlc291cmNlUmVxCiAgICAgICAgIH0KICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVz
dFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmco
KSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChhdXRv
TG9hZEltYWdlcygpICYmIHJlc291cmNlICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQor
ICAgIGlmICghc2hvdWxkRGVmZXJJbWFnZUxvYWQocmVxdWVzdC51cmwoKSkgJiYgcmVzb3VyY2Ug
JiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2FkKCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRo
aXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNl
OwogfQpAQCAtMzYyLDEyICszNjQsNiBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5S
ZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNh
c2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVu
dC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKGZyYW1lKCkpIHsKLSAgICAg
ICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgICAg
ICAgICBpZiAoIWZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dJbWFnZSghc2V0dGlu
Z3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSwgdXJsKSkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNo
ZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAgLTUxNCwx
MSArNTEwLDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiB7CiAgICAgaWYgKCFleGlzdGlu
Z1Jlc291cmNlKQogICAgICAgICByZXR1cm4gTG9hZDsKLSAgICAKKwogICAgIC8vIFdlIGFscmVh
ZHkgaGF2ZSBhIHByZWxvYWQgZ29pbmcgZm9yIHRoaXMgVVJMLgogICAgIGlmIChmb3JQcmVsb2Fk
ICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJlbG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBVc2U7
Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2FtZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFzIGEgZGlm
ZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVsb2FkLgogICAgIGlmIChleGlzdGluZ1Jlc291cmNl
LT50eXBlKCkgIT0gdHlwZSkgewogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVl
IHRvIHR5cGUgbWlzbWF0Y2guIik7CkBAIC01MzMsNiArNTI5LDExIEBAIENhY2hlZFJlc291cmNl
TG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWlu
ZVJldmFsaWRhCiAgICAgLy8gb2YgdGhpbmdzIGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3Mg
dGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRlLCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgog
ICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9uYWwoKSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsK
KworICAgIC8vIERvIG5vdCBsb2FkIGZyb20gY2FjaGUgaWYgaW1hZ2VzIGFyZSBub3QgZW5hYmxl
ZC4gVGhlIGxvYWQgZm9yIHRoaXMgaW1hZ2Ugd2lsbCBiZSBibG9ja2VkCisgICAgLy8gaW4gcmVx
dWVzdEltYWdlLgorICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVz
b3VyY2U6OkltYWdlUmVzb3VyY2UgJiYgIW1faW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJu
IFJlbG9hZDsKICAgICAKICAgICAvLyBEb24ndCByZWxvYWQgcmVzb3VyY2VzIHdoaWxlIHBhc3Rp
bmcuCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJlc291cmNlcykKQEAgLTYyOSwxMyArNjMwLDQwIEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxl
KQogICAgIGlmICghbV9hdXRvTG9hZEltYWdlcykKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVs
b2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOworfQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlKQoreworICAgIGlmIChlbmFibGUgPT0gbV9p
bWFnZXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2ltYWdlc0VuYWJsZWQgPSBl
bmFibGU7CisKKyAgICBpZiAoIW1faW1hZ2VzRW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOworfQorCitib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7Cisg
ICAgaWYgKGZyYW1lKCkpCisgICAgICAgIGlmICghZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgp
LT5hbGxvd0ltYWdlKG1faW1hZ2VzRW5hYmxlZCwgdXJsKSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgcmV0dXJuICFtX2F1dG9Mb2FkSW1hZ2VzOworfQorCit2b2lkIENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCkKK3sKICAgICBEb2N1bWVu
dFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpOwog
ICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBDYWNoZWRSZXNvdXJj
ZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBpZiAocmVzb3VyY2UtPnR5
cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgewogICAgICAgICAgICAgQ2Fj
aGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+KHN0YXRpY19jYXN0PGNv
bnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsKIAotICAgICAgICAgICAgaWYgKGltYWdlLT5z
dGlsbE5lZWRzTG9hZCgpKQorICAgICAgICAgICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgp
ICYmICFzaG91bGREZWZlckltYWdlTG9hZChpbWFnZS0+dXJsKCkpKQogICAgICAgICAgICAgICAg
IGltYWdlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSk7CiAgICAg
ICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5oCmluZGV4IDNmMWMyMzNiMDA4ZGY4NDAxYThjMWFiYTExODE3NWRhN2Q4
MGZiNWUuLmQ1YmFmZGU1ZjQ1MmE0ZDdlYzVjYzI2OTY4ZjUzMjNkMjJhNzEzNmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCkBA
IC05OCw2ICs5OCwxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF1dG9Mb2FkSW1hZ2VzKCkgY29u
c3QgeyByZXR1cm4gbV9hdXRvTG9hZEltYWdlczsgfQogICAgIHZvaWQgc2V0QXV0b0xvYWRJbWFn
ZXMoYm9vbCk7CisKKyAgICBib29sIGltYWdlc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lt
YWdlc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoYm9vbCk7CisKKyAgICBi
b29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25zdDsKICAgICAKICAgICBD
YWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAtMTM2LDYgKzE0MSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1l
ckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAgIHZvaWQgcGVyZm9ybVBv
c3RMb2FkQWN0aW9ucygpOworCisgICAgdm9pZCByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7
CiAgICAgCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJMczsKICAgICBtdXRhYmxl
IERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsKQEAgLTE1Myw4ICsxNjAs
OSBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fZ2FyYmFn
ZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8gMzAgYml0cyBsZWZ0Cisg
ICAgLy8gMjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1hZ2VzIDogMTsKKyAgICBi
b29sIG1faW1hZ2VzRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2FsbG93U3RhbGVSZXNvdXJjZXMg
OiAxOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBmMjUxNTBiNTE2YzM5NjUz
NWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi43ZTA1M2YxZjFlMWJjMTJkNWI3NTU1YzM3YTQ0NTRi
OTU0NjJmNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAtNDYsMTAgKzQ2LDEyIEBA
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZv
aWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMoUGFnZSogcGFnZSkKK3N0
YXRpYyB2b2lkIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7Ci0gICAgZm9y
IChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkp
IHsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNl
dEltYWdlc0VuYWJsZWQocGFnZS0+c2V0dGluZ3MoKS0+YXJlSW1hZ2VzRW5hYmxlZCgpKTsKICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9M
b2FkSW1hZ2VzKHBhZ2UtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsK
KyAgICB9CiB9CiAKIC8vIFNldHMgdGhlIGVudHJ5IGluIHRoZSBmb250IG1hcCBmb3IgdGhlIGdp
dmVuIHNjcmlwdC4gSWYgZmFtaWx5IGlzIHRoZSBlbXB0eSBzdHJpbmcsIHJlbW92ZXMgdGhlIGVu
dHJ5IGluc3RlYWQuCkBAIC0yODYsNyArMjg4LDcgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAgICAgLCBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZCh0cnVlKQogICAgICwgbV9kaWFn
bm9zdGljTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Njcm9sbGluZ1BlcmZvcm1hbmNl
TG9nZ2luZ0VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRp
bWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZCkK
KyAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcih0aGlzLCAmU2V0dGluZ3M6Omlt
YWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKICAgICAsIG1faW5jcmVtZW50YWxSZW5kZXJp
bmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoZGVmYXVsdEluY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKQogewogICAgIC8vIEEgRnJhbWUgbWF5IG5vdCBo
YXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhlIEF0b21pY1N0cmluZwpA
QCAtNDUyLDEyICs0NTQsMTIgQEAgdm9pZCBTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0
aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQogICAgIC8vIFN0YXJ0aW5nIHRo
ZXNlIGxvYWRzIHN5bmNocm9ub3VzbHkgaXMgbm90IGltcG9ydGFudC4gIEJ5IHB1dHRpbmcgaXQg
b24gYSAwLWRlbGF5LCBwcm9wZXJseSBjbG9zaW5nIHRoZSBQYWdlIGNhbmNlbHMgdGhlbQogICAg
IC8vIGJlZm9yZSB0aGV5IGhhdmUgYSBjaGFuY2UgdG8gcmVhbGx5IHN0YXJ0LgogICAgIC8vIFNl
ZSBodHRwOi8vd2Via2l0Lm9yZy9iLzYwNTcyIGZvciBtb3JlIGRpc2N1c3Npb24uCi0gICAgbV9s
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lci5zdGFydE9uZVNob3QoMCk7CisgICAgbV9zZXRJ
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAotdm9pZCBTZXR0
aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4q
KQordm9pZCBTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNl
dHRpbmdzPiopCiB7Ci0gICAgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMo
bV9wYWdlKTsKKyAgICBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhtX3BhZ2UpOwogfQogCiB2b2lk
IFNldHRpbmdzOjpzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VMb2FkaW5nU2V0dGluZyhi
b29sIGxvYWRzU2l0ZUljb25zKQpAQCAtNTAzLDYgKzUwNSw5IEBAIHZvaWQgU2V0dGluZ3M6OnNl
dEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sIGlzSmF2YUVuYWJsZWRGb3JMb2NhbEZpbGVz
KQogdm9pZCBTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGFyZUltYWdlc0VuYWJsZWQp
CiB7CiAgICAgbV9hcmVJbWFnZXNFbmFibGVkID0gYXJlSW1hZ2VzRW5hYmxlZDsKKworICAgIC8v
IFNlZSBjb21tZW50IGluIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseS4KKyAgICBtX3NldElt
YWdlTG9hZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCiB2b2lkIFNldHRp
bmdzOjpzZXRNZWRpYUVuYWJsZWQoYm9vbCBpc01lZGlhRW5hYmxlZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAppbmRleCA2ZmEzYmMwMjRiOGI4YzJmOWFjYzBlZDAzZDI2MTlkNDY2NTMyOTYzLi44OTU0
NTgyYWMyMzNhNjc4NjMzYWFhOTE4MzVlZWQ3ZjBhMjM1NjU0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCkBAIC03OTksOCArNzk5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDogMTsKIAotICAgICAgICBU
aW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcjsKLSAgICAgICAg
dm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiop
OworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVy
OworICAgICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0
aW5ncz4qKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBtX2luY3JlbWVudGFsUmVuZGVyaW5n
U3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCA2NjlkMDVlYjYxY2RiYzZjZDk4Nzk2MGNiNDA1MDkz
OTc0OTI3ODI5Li5mNmQ4YjIzYjg2MWE5NTk5NzYyNDE2NDBjYzU3NGI5ZmI5NjNjMzllIDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKQEAgLTY0NCw0ICs2
NDQsMTAgQEAgdm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3ko
Y29uc3QgU3RyaW5nJiBtb2RlLCBFeGNlcHRpb25Db2QKICAgICAgICAgZWMgPSBTWU5UQVhfRVJS
OwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFi
bGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JT
ZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNldEltYWdlc0VuYWJsZWQoZW5hYmxlZCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKaW5kZXggYTM3
NjJiYmU4MDkwMTk4NTI3ZTk3NDdiN2MxZTdkNmJmYmQ1ZDQ5Zi4uMDdlOWNmMTcyZTgxZDFjYmY4
MWI4MTkzN2I5ZGY5ODYxNjNmZWJhZSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bFNldHRpbmdzLmgKQEAgLTE0Myw2ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGNvbmZp
Z3VyYXRpb25Gb3JWaWV3cG9ydChmbG9hdCBkZXZpY2VQaXhlbFJhdGlvLCBpbnQgZGV2aWNlV2lk
dGgsIGludCBkZXZpY2VIZWlnaHQsIGludCBhdmFpbGFibGVXaWR0aCwgaW50IGF2YWlsYWJsZUhl
aWdodCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9v
bCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGNv
bnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQo
Ym9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQg
SW50ZXJuYWxTZXR0aW5ncyhQYWdlKik7CiAgICAgdmlydHVhbCB2b2lkIGhvc3REZXN0cm95ZWQo
KSBPVkVSUklERSB7IG1fcGFnZSA9IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFsU2V0dGluZ3MuaWRsCmluZGV4IDUxN2JhYTYzM2UzNzk3NjMyZmY1MTI2NmYyOGU1OTczZjRk
ZWEzOTAuLjhjN2U0Y2FiOWI3OWExNWJjYjM2OGM2ZDAzNDRhYWVmMGJlYjBkOWQgMTAwNzU1Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbApAQCAtODAsNiArODAsNyBA
QCBtb2R1bGUgd2luZG93IHsKICNlbmRpZgogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFi
bGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgICAgIHZv
aWQgc2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGluIERPTVN0cmluZyBwb2xpY3kpIHJhaXNlcyhE
T01FeGNlcHRpb24pOworICAgICAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQoaW4gYm9vbGVhbiBl
bmFibGVkKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzFjYWI4
NzM0YjMwZjE3MWYzNjViOWZhNGYyZjEwZDQyMWYyMTNhNS4uMTBhMjhjOWQ3YmFjNDM0NTk1YWNi
NTdhZWI2NWRmZTJkYmZiZDQyNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDEyLTA5LTEyICBC
byBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGluLXBsYWNlIHJlbG9h
ZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgQWRkIHRlc3RzIHRv
IGNoZWNrIGF1dG9Mb2FkSW1hZ2VzIGFuZCBpbWFnZXNFbmFibGVkIGNhbiBibG9jaworICAgICAg
ICBpbWFnZXMgYW5kIGNhbiByZWxvYWQgdGhlbSBpbiBwbGFjZSB3aGVuIHNldHRpbmcgaXMgc2V0
IHRvIHVuYmxvY2suCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1h
bmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2ltYWdlcy1l
bmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJs
b2NrLXJlZGlyZWN0ZWQtaW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2xvYWRpbmcvaW1hZ2VzLWVuYWJsZWQtdW5z
ZXQtY2FuLWJsb2NrLXJlZGlyZWN0ZWQtaW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRt
bDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9sb2FkaW5nL3Jlc291cmNlcy9yZWRpcmVj
dC1wbmcucGhwOiBBZGRlZC4KKwogMjAxMi0wOS0xMiAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEy
ODMxOCBhbmQgcjEyODMzMi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rp
c3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5z
ZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi43YTllZjUzNDc5YjhiNWFhNGI0NjRmNjU3ZjJhY2Y3ZTViYjQ0N2QyCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNl
dC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMgZGlzYWJsZWQgY2FuIGJsb2Nr
IGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCitT
VUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1h
Z2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwgYi9M
YXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlNjY1NzhhMjE3NmYy
MDg3NDhmNmE5MjU4ODYzYWZhN2Y2MjllMGYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0
cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2Fu
LXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDYgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXREaXNwbGF5SW1hZ2VzS2V5IGlzIGFzeW5jaHJvbm91
cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldEludGVydmFsIHRvIGNoZWNrIHdoZW4gdGhl
IHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK3ZhciBpbnRlcnZhbElkOworCitpZiAo
d2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB3
aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAwKTsK
KyAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQor
eworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAg
IGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ICE9IDAgfHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDAp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIERpc3BsYXlJbWFnZSBp
cyB1bnNldCc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UnVubmVyLm92ZXJy
aWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tleScsIDEpOworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hv
dWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVuIERpc3BhbHlJbWFnZSBpcyBjaGFuZ2VzIGZyb20gdW5z
ZXQgdG8gc2V0JzsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZh
bElkID0gd2luZG93LnNldEludGVydmFsKHJ1blRlc3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9u
IHJ1blRlc3RSZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5u
YXR1cmFsV2lkdGggPT0gMzcpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2
YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0K
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0
IHRoYXQgRGlzcGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFnZSBhbmQgY2Fu
IGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5G
QUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIg
c3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIj4KKzwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxZDQ2
MDFjY2MzY2ExOGQ4Y2ZkNWE5Njk3ODExMWZmYjBjNjAyMAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFn
ZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitU
ZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9jayBpbWFnZSBhbmQgY2FuIGJlIHJl
bG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdl
LWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi40OTVlYWQzMDYwMzgxZTZkZmRhOWE2NTg1MDQ1OTAwZmNiNmY1
ZGRiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVu
YWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwK
QEAgLTAsMCArMSw0NiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisvLyBTZXR0aW5nIElt
YWdlc0VuYWJsZWQgaXMgYXN5bmNocm9ub3VzLCBzbyB1c2luZyBxdWV1ZVJlbG9hZCBhbmQgc2V0
SW50ZXJ2YWwgdG8gY2hlY2sgd2hlbiB0aGUgc2V0dGluZyBhY3R1YWxseSB0YWtlIGVmZmVjdC4K
KwordmFyIGludGVydmFsSWQ7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RS
dW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdX
ZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5n
cy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVyLnF1ZXVlUmVsb2FkKCk7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ICE9IDAg
fHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDApIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgbm90IGJl
IGxvYWRlZCB3aGVuIEltYWdlc0VuYWJsZWQgaXMgdW5zZXQnOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRy
dWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAn
RkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVuIEltYWdlc0VuYWJsZWQg
aXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0VW50aWxE
b25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0UmVzdCwg
MTApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWln
aHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3KSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAg
IHdpbmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpOworICAgICAgICB0ZXN0UnVubmVyLm5v
dGlmeURvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KKyAgVGVzdCB0aGF0IEVuYWJsZUltYWdlcyB1bnNldCBjYW4gYmxvY2sgaW1h
Z2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9
InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAgPGltZyBp
ZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyI+Cis8L2JvZHk+Cis8
L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9pbWFn
ZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2stcmVkaXJlY3RlZC1pbWFnZS1hbmQtY2FuLXJlbG9h
ZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcv
aW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLXJlZGlyZWN0ZWQtaW1hZ2UtYW5kLWNhbi1y
ZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYwNWE4M2FhMWFlMTM4OWUw
MjIxMjFmY2RkOGJhZGU0Mzg1YTQxMDgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2xvYWRpbmcvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLXJlZGlyZWN0
ZWQtaW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
MTMgQEAKK21haW4gZnJhbWUgLSBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lCittYWlu
IGZyYW1lIC0gZGlkQ29tbWl0TG9hZEZvckZyYW1lCittYWluIGZyYW1lIC0gZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRIYW5kbGVPbmxvYWRFdmVudHNGb3JG
cmFtZQorbWFpbiBmcmFtZSAtIGRpZEZpbmlzaExvYWRGb3JGcmFtZQorbWFpbiBmcmFtZSAtIGRp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRDb21taXRMb2Fk
Rm9yRnJhbWUKK21haW4gZnJhbWUgLSBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZQorbWFp
biBmcmFtZSAtIGRpZEhhbmRsZU9ubG9hZEV2ZW50c0ZvckZyYW1lCittYWluIGZyYW1lIC0gZGlk
RmluaXNoTG9hZEZvckZyYW1lCitUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9j
ayByZWRpcmVjdGVkIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dn
bGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRp
bmcvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLXJlZGlyZWN0ZWQtaW1hZ2UtYW5kLWNh
bi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9p
bWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2stcmVkaXJlY3RlZC1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIzZDhlY2U5Nzk5MzU1N2RhOGFkZmVmOGFk
NmZlMDBlZmRkNjMyMTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2xvYWRpbmcvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLXJlZGlyZWN0ZWQtaW1hZ2Ut
YW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgSW1hZ2VzRW5hYmxlZCBpcyBhc3luY2hyb25vdXMs
IHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBz
ZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKKworaWYgKHdp
bmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgdGVz
dFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNLZXknLCAxKTsK
KyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQoZmFsc2UpOwor
ICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7
CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAg
aWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lkdGggIT0gMCkg
eworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0g
J0ZBSUxVUkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdoZW4gSW1hZ2VzRW5hYmxlZCBp
cyB1bnNldCc7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuaW50ZXJuYWxz
LnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2Fk
IGluLXBsYWNlIHdoZW4gSW1hZ2VzRW5hYmxlZCBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0
JzsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2lu
ZG93LnNldEludGVydmFsKHJ1blRlc3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RS
ZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2Un
KTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCA9PSAyMTUgJiYgaW1hZ2UubmF0dXJhbFdp
ZHRoID09IDYwMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyku
aW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRl
cnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBF
bmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIHJlZGlyZWN0ZWQgaW1hZ2UgYW5kIGNhbiBiZSBy
ZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVS
RTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAgPGltZyBpZD0iaW1hZ2UiIHNyYz0i
cmVzb3VyY2VzL3JlZGlyZWN0LXBuZy5waHAiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0LXBu
Zy5waHAgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2xvYWRpbmcvcmVzb3VyY2VzL3JlZGlyZWN0
LXBuZy5waHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJiZTc2NjcyY2M0ODI5OTk2NGQxNTg3NDAxMDg4MDYyOWY4
MjViYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvbG9hZGluZy9y
ZXNvdXJjZXMvcmVkaXJlY3QtcG5nLnBocApAQCAtMCwwICsxLDUgQEAKKzw/cGhwCitoZWFkZXIo
IkhUVFAvMS4xIDMwMiBGb3VuZCIpOworaGVhZGVyKCJMb2NhdGlvbjogc25vdy1zaG9lcy12cy1w
aWUucG5nIik7Cis/PgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163979</attachid>
            <date>2012-09-13 15:18:20 -0700</date>
            <delta_ts>2012-09-14 10:43:38 -0700</delta_ts>
            <desc>Do not trigger unload when image load is deferred. Fix redirect allowImage call. Fix image-permission tests. Check onload behavior in new tests. Fix gtk build. (Maybe?) fix win build.</desc>
            <filename>bug-95478-20120913151752.patch</filename>
            <type>text/plain</type>
            <size>33915</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGYyZWVlMDA4Y2RmY2Y3
NTBlNWIzNjgzZDk0ZjVlOTdkMzQ4YTlmNS4uZjk2MWNhM2IwOTc4MDkxMTY0NzhjNTgyNjJiNjc5
OTBiM2I4NDNhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA5LTEzICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGluLXBsYWNlIHJlbG9hZCBi
ZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgSW1hZ2VzRW5hYmxlZCBzZXR0aW5nIGluIENh
Y2hlZFJlc291cmNlTG9hZGVyIHNpbWlsYXIgdG8KKyAgICAgICAgQXV0b0xvYWRJbWFnZXMuIE1v
dmUgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgdG8gYWZ0ZXIgYQorICAgICAgICBDYWNo
ZWRJbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGFuZCBzdG9yZSB0aGUgY2FjaGUgZm9yIHJlbG9hZCBp
ZiBpdCBpcworICAgICAgICBibG9ja2VkLgorCisgICAgICAgIE1ha2Ugc3VyZSB3aGVuIGltYWdl
IGxvYWRzIGFyZSBkZWZlcnJlZCBieSBlaXRoZXIgSW1hZ2VzRW5hYmxlZCBvcgorICAgICAgICBM
b2FkSW1hZ2VzQXV0b21hdGljYWxseSwgb25sb2FkIGlzIG5vdCBjYWxsZWQuCisKKyAgICAgICAg
QWRkZWQgSW1hZ2VzRW5hYmxlZCB0byBJbnRlcm5hbFNldHRpbmdzIGZvciBsYXlvdXQgdGVzdHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpzdGlsbE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVy
SW1hZ2VMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxv
YWRJbWFnZXNJZk5vdERlZmVycmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjppbWFnZXNFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1Nl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEludGVybmFsU2V0dGluZ3MpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6CisKIDIwMTItMDktMTMgIEhhbnMg
TXVsbGVyICA8aG11bGxlckBhZG9iZS5jb20+CiAKICAgICAgICAgVHlwbyBpbiBSZW5kZXJTdHls
ZTo6aXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpLCBzbWFsbCByZWZhY3RvcmluZyBwb3NzaWJs
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IDNjNTM0NzRkMDRhZjIzNjlmMGRlYzhjZmI1MjlhZjczODZmMjY3NzUu
LmViMmVmYzc2NjJiMzQ0NzhmYmM3YjRiNmUyMzRlZmI0MGI0MzRmODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxNCBAQAorMjAxMi0wOS0xMyAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2VzRW5hYmxlZCBz
ZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NTQ3OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEV4
cG9ydCBXZWJDb3JlOjpTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZCBzeW1ib2wuCisKKyAgICAg
ICAgKiB3aW4vV2ViS2l0Mi5kZWY6CisKIDIwMTItMDktMTMgIFN1ZGFyc2FuYSBOYWdpbmVuaSAg
PHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5pbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl1bV1RS
XSBXZWJLaXRUZXN0UnVubmVyIG5lZWRzIHRlc3RSdW5uZXIuY2FsbFNob3VsZENsb3NlT25XZWJW
aWV3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDM4M2U1ZjVmMWIxNjM1NzgyMmIzNzhjZjIxODhh
ZWNmNjNkYWQxOGMuLjE4Mjc2MjcyZjQ0YmVlNzY5ZDhkZjUxYzA5NDhmYzE3NmE5MWZjYTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NDgsNiArODQ4LDcgQEAgX19aTjdXZWJDb3JlOEdyYWRp
ZW50QzFFUktOU18xMEZsb2F0UG9pbnRFUzNfCiBfX1pON1dlYkNvcmU4UG9zaXRpb25DMUVOM1dU
RjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19aTjdXZWJDb3Jl
OFNldHRpbmdzMTRzZXRKYXZhRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNXNldFdl
YkdMRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0VuYWJsZWRFYgog
X19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43V2ViQ29yZThT
ZXR0aW5nczE2c2V0VXNlc1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxN3NldFBs
dWdpbnNFbmFibGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IDdk
MmVkNDlmYTMzM2Q3YTE1ZTA5MWZmOTlkY2U2NDBjZDllN2ExMDguLjg0NzNiYzMxMzk0MmU2YmQw
YmY2NDU3MzFjNDRiNzI3OGRmMjg5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcApAQCAtNjQ3LDYgKzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1l
bnQoYm9vbCBkaXNwYXRjaCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbml0Q29udGVudFNl
Y3VyaXR5UG9saWN5KCk7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5zZXR0aW5ncygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQoIXNldHRpbmdzIHx8IHNldHRpbmdzLT5hcmVJ
bWFnZXNFbmFibGVkKCkpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzICYmIHNldHRpbmdzLT5sb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHkoKSk7CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRlcikgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNjI3M2E4ZDMz
OTVkNGU4MjUxNGMxNDBjYzFjNzA0NjYyODEzMTQ1Mi4uYWNiYzVkYWJjMTRlOGM5NWZjNWUxNGYz
ZDFiZjM4MDVlNWYzOTg2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VM
b2FkZXIuY3BwCkBAIC0xNjcsMTEgKzE2NywxMiBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25zdCBSZXNvdQog
ICAgIAogICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVk
aXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFwcmV2aW91c1VSTC5pc051bGwoKSAmJiAhbmV3UmVx
dWVzdC5pc051bGwoKSAmJiBwcmV2aW91c1VSTCAhPSBuZXdSZXF1ZXN0LnVybCgpKSB7Ci0gICAg
ICAgIGlmICghbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FuUmVxdWVzdCht
X3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBjYW5j
ZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtX3Jlc291cmNl
LT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAg
IGlmIChtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVz
b3VyY2UtPnR5cGUoKSwgbmV3UmVxdWVzdC51cmwoKSkpCisgICAgICAgICAgICBpZiAobV9yZXNv
dXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlIHx8ICFtX2RvY3Vt
ZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZlckltYWdlTG9hZChuZXdSZXF1
ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVz
dChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICB9CisgICAgICAgIGNhbmNlbCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKaW5kZXggMTUyN2E2M2FmNTg2NGMy
ZDI5NDQzY2YyNGJiMjVjMTAzODNhYjVhNS4uODViNGE3MzliZGVhYmE5ZjVmNjk4N2JjMWY0Njkx
MTY5NDA3M2VkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2Uu
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIENhY2hlZEltYWdlOjp+Q2FjaGVkSW1hZ2UoKQogCiB2b2lk
IENhY2hlZEltYWdlOjpsb2FkKENhY2hlZFJlc291cmNlTG9hZGVyKiBjYWNoZWRSZXNvdXJjZUxv
YWRlciwgY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBvcHRpb25zKQogewotICAgIGlmICgh
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgfHwgY2FjaGVkUmVzb3VyY2VMb2FkZXItPmF1dG9Mb2FkSW1h
Z2VzKCkpCisgICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCAhY2FjaGVkUmVzb3VyY2VM
b2FkZXItPnNob3VsZERlZmVySW1hZ2VMb2FkKG1fcmVzb3VyY2VSZXF1ZXN0LnVybCgpKSkKICAg
ICAgICAgQ2FjaGVkUmVzb3VyY2U6OmxvYWQoY2FjaGVkUmVzb3VyY2VMb2FkZXIsIG9wdGlvbnMp
OwogICAgIGVsc2UKICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCmluZGV4IDQ4NjVjN2UyNDY2NWJhNjM5YjBlMWE5NmJj
NjI1MjYwZDczYWQwMWIuLjBjNDUyYzQ0YWQ5OGEwMWE5ODk2OWRiYjgwYTk5ZTZhMTI2MTJiZTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSWdub3JlSFRUUFN0YXR1c0Nv
ZGVFcnJvcnMoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNJ
bWFnZSgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLSAgICBib29sIHN0aWxsTmVlZHNMb2FkKCkg
Y29uc3QgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0dXMoKSA9PSBVbmtub3duICYm
ICFpc0xvYWRpbmcoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuICFlcnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93
biAmJiAhaXNMb2FkaW5nKCk7IH0KICAgICB2b2lkIGxvYWQoKTsKIAogICAgIC8vIEltYWdlT2Jz
ZXJ2ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3Bw
CmluZGV4IDgzYmM4ZWVkMzA5OTQ3ZjI4YmRlOTU2Njg3NzQ1OTc2ZDdlMzYxZmYuLmNiYzY1MjUx
MDYwMTY0OGY4MGY1NmVhMGE1ZGNlNzg2MzQ0NGNjMzEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykKICAg
ICAgICAgbV9jbGllbnRzLmFkZChjKTsKICAgICAgICAgbV9jbGllbnRzQXdhaXRpbmdDYWxsYmFj
ay5yZW1vdmUoYyk7CiAgICAgfQotICAgIGlmICghaXNMb2FkaW5nKCkpCisgICAgaWYgKCFpc0xv
YWRpbmcoKSAmJiAhc3RpbGxOZWVkc0xvYWQoKSkKICAgICAgICAgYy0+bm90aWZ5RmluaXNoZWQo
dGhpcyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNl
LmgKaW5kZXggOTBhYjRmMmVlYWI3MGNmOWU2OWI3YTFhMDdlODk3YjNmZTdhNzgzZi4uODhkMTA1
Y2Y0OWQ2YzhlN2YyZTVhMGIxYmQ5MzYwMzI2ZWJkNGExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKQEAgLTE0NCw2ICsxNDQsNyBAQCBwdWJsaWM6
CiAKICAgICBib29sIGlzTG9hZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGluZzsgfQogICAg
IHZvaWQgc2V0TG9hZGluZyhib29sIGIpIHsgbV9sb2FkaW5nID0gYjsgfQorICAgIHZpcnR1YWwg
Ym9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICB2aXJ0
dWFsIGJvb2wgaXNJbWFnZSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgYm9vbCBpZ25v
cmVGb3JSZXF1ZXN0Q291bnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNWZkN2M1MDVhMTFlZDU4MWRj
NGFlZjk2MWY2MWYxZTFjNjZkMGY4NS4uNjEyNGJjMmUzYzY2OGRhYzBmZGRjZjcwMDZmNTBlNmZl
ZTgzODBkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwCkBAIC00Niw2ICs0Niw3IEBACiAjaW5jbHVkZSAiTWVtb3J5Q2Fj
aGUuaCIKICNpbmNsdWRlICJQaW5nTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmgiCisjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJTZWN1cml0
eU9yaWdpbi5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSA8d3RmL1VudXNlZFBh
cmFtLmg+CkBAIC0xMTUsNiArMTE2LDcgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OkNhY2hlZFJl
c291cmNlTG9hZGVyKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fcmVxdWVzdENvdW50KDAp
CiAgICAgLCBtX2dhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lcih0aGlzLCAmQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXNUaW1lckZp
cmVkKQogICAgICwgbV9hdXRvTG9hZEltYWdlcyh0cnVlKQorICAgICwgbV9pbWFnZXNFbmFibGVk
KHRydWUpCiAgICAgLCBtX2FsbG93U3RhbGVSZXNvdXJjZXMoZmFsc2UpCiB7CiB9CkBAIC0xNjAs
NyArMTYyLDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0SW1hZ2UoUmVzb3VyY2VSZXEKICAgICAgICAgfQogICAgIH0KICAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gcmVzb3VyY2Uoc3RhdGljX2Nhc3Q8
Q2FjaGVkSW1hZ2UqPihyZXF1ZXN0UmVzb3VyY2UoQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3Vy
Y2UsIHJlcXVlc3QsIFN0cmluZygpLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpLmdl
dCgpKSk7Ci0gICAgaWYgKGF1dG9Mb2FkSW1hZ2VzKCkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2Ut
PnN0aWxsTmVlZHNMb2FkKCkpCisgICAgaWYgKCFzaG91bGREZWZlckltYWdlTG9hZChyZXF1ZXN0
LnVybCgpKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQoKSkKICAgICAg
ICAgcmVzb3VyY2UtPmxvYWQodGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsK
ICAgICByZXR1cm4gcmVzb3VyY2U7CiB9CkBAIC0zNjIsMTIgKzM2NCw2IEBAIGJvb2wgQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3QoQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwgY29u
c3QgS1VSTCYgdXJsCiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZToKICAg
ICAgICAgaWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dJbWFn
ZUZyb21Tb3VyY2UodXJsKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBp
ZiAoZnJhbWUoKSkgewotICAgICAgICAgICAgU2V0dGluZ3MqIHNldHRpbmdzID0gZnJhbWUoKS0+
c2V0dGluZ3MoKTsKLSAgICAgICAgICAgIGlmICghZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgp
LT5hbGxvd0ltYWdlKCFzZXR0aW5ncyB8fCBzZXR0aW5ncy0+YXJlSW1hZ2VzRW5hYmxlZCgpLCB1
cmwpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQogICAgICAgICBi
cmVhazsKICAgICBjYXNlIENhY2hlZFJlc291cmNlOjpGb250UmVzb3VyY2U6IHsKICAgICAgICAg
aWYgKCFtX2RvY3VtZW50LT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb250RnJvbVNv
dXJjZSh1cmwpKQpAQCAtNTE0LDExICs1MTAsMTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJl
dmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGEK
IHsKICAgICBpZiAoIWV4aXN0aW5nUmVzb3VyY2UpCiAgICAgICAgIHJldHVybiBMb2FkOwotICAg
IAorCiAgICAgLy8gV2UgYWxyZWFkeSBoYXZlIGEgcHJlbG9hZCBnb2luZyBmb3IgdGhpcyBVUkwu
CiAgICAgaWYgKGZvclByZWxvYWQgJiYgZXhpc3RpbmdSZXNvdXJjZS0+aXNQcmVsb2FkZWQoKSkK
ICAgICAgICAgcmV0dXJuIFVzZTsKLSAgICAKKwogICAgIC8vIElmIHRoZSBzYW1lIFVSTCBoYXMg
YmVlbiBsb2FkZWQgYXMgYSBkaWZmZXJlbnQgdHlwZSwgd2UgbmVlZCB0byByZWxvYWQuCiAgICAg
aWYgKGV4aXN0aW5nUmVzb3VyY2UtPnR5cGUoKSAhPSB0eXBlKSB7CiAgICAgICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJDYWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGF0aW9u
UG9saWN5IHJlbG9hZGluZyBkdWUgdG8gdHlwZSBtaXNtYXRjaC4iKTsKQEAgLTUzMyw2ICs1Mjks
MTEgQEAgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OlJldmFsaWRhdGlvblBvbGljeSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6ZGV0ZXJtaW5lUmV2YWxpZGEKICAgICAvLyBvZiB0aGluZ3MgYWJvdXQgaG93
IHJldmFsaWRhdGlvbiB3b3JrcyB0aGF0IG1hbnVhbCBoZWFkZXJzIHZpb2xhdGUsIHNvIHB1bnQg
dG8gUmVsb2FkIGluc3RlYWQuCiAgICAgaWYgKHJlcXVlc3QuaXNDb25kaXRpb25hbCgpKQogICAg
ICAgICByZXR1cm4gUmVsb2FkOworCisgICAgLy8gRG8gbm90IGxvYWQgZnJvbSBjYWNoZSBpZiBp
bWFnZXMgYXJlIG5vdCBlbmFibGVkLiBUaGUgbG9hZCBmb3IgdGhpcyBpbWFnZSB3aWxsIGJlIGJs
b2NrZWQKKyAgICAvLyBpbiByZXF1ZXN0SW1hZ2UuCisgICAgaWYgKGV4aXN0aW5nUmVzb3VyY2Ut
PnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSAmJiBzaG91bGREZWZlcklt
YWdlTG9hZChleGlzdGluZ1Jlc291cmNlLT51cmwoKSkpCisgICAgICAgIHJldHVybiBSZWxvYWQ7
CiAgICAgCiAgICAgLy8gRG9uJ3QgcmVsb2FkIHJlc291cmNlcyB3aGlsZSBwYXN0aW5nLgogICAg
IGlmIChtX2FsbG93U3RhbGVSZXNvdXJjZXMpCkBAIC02MjksMTMgKzYzMCw0MCBAQCB2b2lkIENh
Y2hlZFJlc291cmNlTG9hZGVyOjpzZXRBdXRvTG9hZEltYWdlcyhib29sIGVuYWJsZSkKICAgICBp
ZiAoIW1fYXV0b0xvYWRJbWFnZXMpCiAgICAgICAgIHJldHVybjsKIAorICAgIHJlbG9hZEltYWdl
c0lmTm90RGVmZXJyZWQoKTsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0SW1h
Z2VzRW5hYmxlZChib29sIGVuYWJsZSkKK3sKKyAgICBpZiAoZW5hYmxlID09IG1faW1hZ2VzRW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9pbWFnZXNFbmFibGVkID0gZW5hYmxlOwor
CisgICAgaWYgKCFtX2ltYWdlc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIHJlbG9h
ZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKK30KKworYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
c2hvdWxkRGVmZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYgdXJsKSBjb25zdAoreworICAgIGlmIChm
cmFtZSgpKQorICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dJ
bWFnZShtX2ltYWdlc0VuYWJsZWQsIHVybCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIHJldHVybiAhbV9hdXRvTG9hZEltYWdlczsKK30KKwordm9pZCBDYWNoZWRSZXNvdXJjZUxv
YWRlcjo6cmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpCit7CiAgICAgRG9jdW1lbnRSZXNvdXJj
ZU1hcDo6aXRlcmF0b3IgZW5kID0gbV9kb2N1bWVudFJlc291cmNlcy5lbmQoKTsKICAgICBmb3Ig
KERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0gbV9kb2N1bWVudFJlc291cmNlcy5i
ZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2UqIHJlc291
cmNlID0gaXQtPnNlY29uZC5nZXQoKTsKICAgICAgICAgaWYgKHJlc291cmNlLT50eXBlKCkgPT0g
Q2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UpIHsKICAgICAgICAgICAgIENhY2hlZEltYWdl
KiBpbWFnZSA9IGNvbnN0X2Nhc3Q8Q2FjaGVkSW1hZ2UqPihzdGF0aWNfY2FzdDxjb25zdCBDYWNo
ZWRJbWFnZSo+KHJlc291cmNlKSk7CiAKLSAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxOZWVk
c0xvYWQoKSkKKyAgICAgICAgICAgIGlmIChpbWFnZS0+c3RpbGxOZWVkc0xvYWQoKSAmJiAhc2hv
dWxkRGVmZXJJbWFnZUxvYWQoaW1hZ2UtPnVybCgpKSkKICAgICAgICAgICAgICAgICBpbWFnZS0+
bG9hZCh0aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuaAppbmRleCBmNDc1NWMyMmZkOGQyZjFjMmEwZThlNmRhODJlN2Y5YjUyM2ExOWZiLi41
NzgxMTMwYmM3NzBmMzUyNmI0OTA4Yzc0MmMzY2NmZGQ1YWU1NGI3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaApAQCAtOTcsNiAr
OTcsMTEgQEAgcHVibGljOgogCiAgICAgYm9vbCBhdXRvTG9hZEltYWdlcygpIGNvbnN0IHsgcmV0
dXJuIG1fYXV0b0xvYWRJbWFnZXM7IH0KICAgICB2b2lkIHNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wp
OworCisgICAgYm9vbCBpbWFnZXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZXNFbmFi
bGVkOyB9CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wpOworCisgICAgYm9vbCBzaG91
bGREZWZlckltYWdlTG9hZChjb25zdCBLVVJMJikgY29uc3Q7CiAgICAgCiAgICAgQ2FjaGVQb2xp
Y3kgY2FjaGVQb2xpY3koKSBjb25zdDsKICAgICAKQEAgLTEzNSw2ICsxNDAsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXJGaXJlZChU
aW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4qKTsKICAgICB2b2lkIHBlcmZvcm1Qb3N0TG9hZEFj
dGlvbnMoKTsKKworICAgIHZvaWQgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwogICAgIAog
ICAgIEhhc2hTZXQ8U3RyaW5nPiBtX3ZhbGlkYXRlZFVSTHM7CiAgICAgbXV0YWJsZSBEb2N1bWVu
dFJlc291cmNlTWFwIG1fZG9jdW1lbnRSZXNvdXJjZXM7CkBAIC0xNTIsOCArMTU5LDkgQEAgcHJp
dmF0ZToKIAogICAgIFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiBtX2dhcmJhZ2VDb2xsZWN0
RG9jdW1lbnRSZXNvdXJjZXNUaW1lcjsKIAotICAgIC8vIDMwIGJpdHMgbGVmdAorICAgIC8vIDI5
IGJpdHMgbGVmdAogICAgIGJvb2wgbV9hdXRvTG9hZEltYWdlcyA6IDE7CisgICAgYm9vbCBtX2lt
YWdlc0VuYWJsZWQgOiAxOwogICAgIGJvb2wgbV9hbGxvd1N0YWxlUmVzb3VyY2VzIDogMTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKaW5kZXggZjI1MTUwYjUxNmMzOTY1MzVjMzhiZWZj
YTNjYjJhMmE2OGZlZWEwZi4uN2UwNTNmMWYxZTFiYzEyZDViNzU1NWMzN2E0NDU0Yjk1NDYyZjU3
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKQEAgLTQ2LDEwICs0NiwxMiBAQCB1c2luZyBu
YW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIHNldExv
YWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKFBhZ2UqIHBhZ2UpCitzdGF0aWMgdm9p
ZCBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhQYWdlKiBwYWdlKQogewotICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkt
PnRyYXZlcnNlTmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKSB7CisgICAg
ICAgIGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNF
bmFibGVkKHBhZ2UtPnNldHRpbmdzKCktPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdl
cyhwYWdlLT5zZXR0aW5ncygpLT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgfQog
fQogCiAvLyBTZXRzIHRoZSBlbnRyeSBpbiB0aGUgZm9udCBtYXAgZm9yIHRoZSBnaXZlbiBzY3Jp
cHQuIElmIGZhbWlseSBpcyB0aGUgZW1wdHkgc3RyaW5nLCByZW1vdmVzIHRoZSBlbnRyeSBpbnN0
ZWFkLgpAQCAtMjg2LDcgKzI4OCw3IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQog
ICAgICwgbV93aW5kb3dGb2N1c1Jlc3RyaWN0ZWQodHJ1ZSkKICAgICAsIG1fZGlhZ25vc3RpY0xv
Z2dpbmdFbmFibGVkKGZhbHNlKQogICAgICwgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdF
bmFibGVkKGZhbHNlKQotICAgICwgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lcih0aGlz
LCAmU2V0dGluZ3M6OmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQpCisgICAgLCBt
X3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIodGhpcywgJlNldHRpbmdzOjppbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyRmlyZWQpCiAgICAgLCBtX2luY3JlbWVudGFsUmVuZGVyaW5nU3VwcHJl
c3Npb25UaW1lb3V0SW5TZWNvbmRzKGRlZmF1bHRJbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNz
aW9uVGltZW91dEluU2Vjb25kcykKIHsKICAgICAvLyBBIEZyYW1lIG1heSBub3QgaGF2ZSBiZWVu
IGNyZWF0ZWQgeWV0LCBzbyB3ZSBpbml0aWFsaXplIHRoZSBBdG9taWNTdHJpbmcKQEAgLTQ1Miwx
MiArNDU0LDEyIEBAIHZvaWQgU2V0dGluZ3M6OnNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseShi
b29sIGxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSkKICAgICAvLyBTdGFydGluZyB0aGVzZSBsb2Fk
cyBzeW5jaHJvbm91c2x5IGlzIG5vdCBpbXBvcnRhbnQuICBCeSBwdXR0aW5nIGl0IG9uIGEgMC1k
ZWxheSwgcHJvcGVybHkgY2xvc2luZyB0aGUgUGFnZSBjYW5jZWxzIHRoZW0KICAgICAvLyBiZWZv
cmUgdGhleSBoYXZlIGEgY2hhbmNlIHRvIHJlYWxseSBzdGFydC4KICAgICAvLyBTZWUgaHR0cDov
L3dlYmtpdC5vcmcvYi82MDU3MiBmb3IgbW9yZSBkaXNjdXNzaW9uLgotICAgIG1fbG9hZHNJbWFn
ZXNBdXRvbWF0aWNhbGx5VGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIG1fc2V0SW1hZ2VMb2Fk
aW5nU2V0dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKLXZvaWQgU2V0dGluZ3M6Omxv
YWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+KikKK3ZvaWQg
U2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4q
KQogewotICAgIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxseUluQWxsRnJhbWVzKG1fcGFnZSk7
CisgICAgc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3MobV9wYWdlKTsKIH0KIAogdm9pZCBTZXR0aW5n
czo6c2V0TG9hZHNTaXRlSWNvbnNJZ25vcmluZ0ltYWdlTG9hZGluZ1NldHRpbmcoYm9vbCBsb2Fk
c1NpdGVJY29ucykKQEAgLTUwMyw2ICs1MDUsOSBAQCB2b2lkIFNldHRpbmdzOjpzZXRKYXZhRW5h
YmxlZEZvckxvY2FsRmlsZXMoYm9vbCBpc0phdmFFbmFibGVkRm9yTG9jYWxGaWxlcykKIHZvaWQg
U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBhcmVJbWFnZXNFbmFibGVkKQogewogICAg
IG1fYXJlSW1hZ2VzRW5hYmxlZCA9IGFyZUltYWdlc0VuYWJsZWQ7CisKKyAgICAvLyBTZWUgY29t
bWVudCBpbiBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkuCisgICAgbV9zZXRJbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KIAogdm9pZCBTZXR0aW5nczo6c2V0
TWVkaWFFbmFibGVkKGJvb2wgaXNNZWRpYUVuYWJsZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKaW5k
ZXggOTY4MWUyN2UwYWUyNjU1NzJjMjE0YjQ5NjJkODYyMDg0NDM4N2U3Ny4uNDVkMWNjMWVmMGM5
YmM0ZjFmODgyMzg5NDQzYzA0NmFmNTEwNWVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaApAQCAt
ODAwLDggKzgwMCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIG1fc2Ny
b2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxlZCA6IDE7CiAKLSAgICAgICAgVGltZXI8U2V0
dGluZ3M+IG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXI7Ci0gICAgICAgIHZvaWQgbG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKKyAgICAg
ICAgVGltZXI8U2V0dGluZ3M+IG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcjsKKyAgICAg
ICAgdm9pZCBpbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7
CiAgICAgICAgIAogICAgICAgICBkb3VibGUgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNz
aW9uVGltZW91dEluU2Vjb25kczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbFNldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxT
ZXR0aW5ncy5jcHAKaW5kZXggNjY5ZDA1ZWI2MWNkYmM2Y2Q5ODc5NjBjYjQwNTA5Mzk3NDkyNzgy
OS4uZjZkOGIyM2I4NjFhOTU5OTc2MjQxNjQwY2M1NzRiOWZiOTYzYzM5ZSAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwCkBAIC02NDQsNCArNjQ0LDEwIEBA
IHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0U3RvcmFnZUJsb2NraW5nUG9saWN5KGNvbnN0IFN0
cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kCiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKIH0KIAor
dm9pZCBJbnRlcm5hbFNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCit7CisgICAgSW50ZXJuYWxTZXR0aW5nc0d1YXJkRm9yU2V0dGluZ3Mo
KTsKKyAgICBzZXR0aW5ncygpLT5zZXRJbWFnZXNFbmFibGVkKGVuYWJsZWQpOworfQorCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaCBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oCmluZGV4IGEzNzYyYmJlODA5
MDE5ODUyN2U5NzQ3YjdjMWU3ZDZiZmJkNWQ0OWYuLjA3ZTljZjE3MmU4MWQxY2JmODFiODE5Mzdi
OWRmOTg2MTYzZmViYWUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5n
cy5oCkBAIC0xNDMsNiArMTQzLDggQEAgcHVibGljOgogICAgIFN0cmluZyBjb25maWd1cmF0aW9u
Rm9yVmlld3BvcnQoZmxvYXQgZGV2aWNlUGl4ZWxSYXRpbywgaW50IGRldmljZVdpZHRoLCBpbnQg
ZGV2aWNlSGVpZ2h0LCBpbnQgYXZhaWxhYmxlV2lkdGgsIGludCBhdmFpbGFibGVIZWlnaHQsIEV4
Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGljeShjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5h
YmxlZCwgRXhjZXB0aW9uQ29kZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFs
U2V0dGluZ3MoUGFnZSopOwogICAgIHZpcnR1YWwgdm9pZCBob3N0RGVzdHJveWVkKCkgT1ZFUlJJ
REUgeyBtX3BhZ2UgPSAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFsU2V0dGluZ3MuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmlkbAppbmRleCA1MTdiYWE2MzNlMzc5NzYzMmZmNTEyNjZmMjhlNTk3M2Y0ZGVhMzkwLi44
YzdlNGNhYjliNzlhMTViY2IzNjhjNmQwMzQ0YWFlZjBiZWIwZDlkIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKQEAgLTgwLDYgKzgwLDcgQEAgbW9kdWxl
IHdpbmRvdyB7CiAjZW5kaWYKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChpbiBi
b29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN0
b3JhZ2VCbG9ja2luZ1BvbGljeShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKKyAgICAgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkg
cmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmlu
ZGV4IDk2Zjg1OGVlZTVjMDlhYmM5NDg5YTQwZTJkZjliODJlMTY1ODkyNGMuLjkwMGFkZGJjYzU1
YWIwMGE1MGU5ZmRlZjg3YzRlMzhkMjkzNGI0YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L3dpbi9XZWJLaXQyLmRlZgorKysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAg
LTIyMiw2ICsyMjIsNyBAQCBFWFBPUlRTCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29y
ZUBAWUFYUEFWRXhlY1N0YXRlQEpTQ0BASEBaCiAgICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWls
eUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29k
ZUBAQFoKICAgICAgICAgP3NldEZpeGVkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVY
QUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKKyAgICAgICAgP3NldEltYWdl
c0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldE1vY2tTY3Jv
bGxiYXJzRW5hYmxlZEBTZXR0aW5nc0BXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9tb2NrU2Ny
b2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBAU0FfTlhaCiAgICAgICAgID9zZXRQYWdl
U2NhbGVGYWN0b3JAUGFnZUBXZWJDb3JlQEBRQUVYTUFCVkludFBvaW50QDJAQFoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5
bWJvbHMuZmlsdGVyCmluZGV4IGRlN2UzMjQyOGY5MmQyOWMyMTcyZmNhNjE2MmVhNjQ4YTZhYjI2
NjkuLmFjODIxYTY1YjllMDVkMWYyOWRlYTdlYTk5NWJlMjU3YTI2ZTc2MWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9z
eW1ib2xzLmZpbHRlcgpAQCAtMTQ1LDYgKzE0NSw3IEBAIF9aTjdXZWJDb3JlMTRTY3JvbGxhYmxl
QXJlYTI4c2V0U2Nyb2xsT2Zmc2V0RnJvbUludGVybmFsc0VSS05TXzhJbnRQb2ludEU7CiBfWk43
V2ViQ29yZTEwU2Nyb2xsVmlldzIzc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRFYmI7CiBfWk43V2Vi
Q29yZTEwU2Nyb2xsVmlldzIxc2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWI7CiBfWk43V2ViQ29yZTRO
b2RlMTRyZW1vdmVkTGFzdFJlZkV2OworX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0Vu
YWJsZWRFYjsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMThzZXRGaXhlZEZvbnRGYW1pbHlFUktOM1dU
RjEyQXRvbWljU3RyaW5nRTExVVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0
U2VyaWZGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pO
N1dlYkNvcmU4U2V0dGluZ3MyMHNldEN1cnNpdmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0
cmluZ0UxMVVTY3JpcHRDb2RlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRlOWQ3NTljNTRmMGRkODVjMmI1MTdhM2UxM2E5
M2QyOGM1MjFjOWQuLmFkN2M0OThiZjIwNWM4ZGNjZmI5NzZhMTM2YzdhNjFhYTg1NTcwZjUgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNSBAQAorMjAxMi0wOS0xMyAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIEFkZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2VzRW5h
YmxlZCBzZXR0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD05NTQ3OAorCisgICAgICAgIEFkZCB0ZXN0cyB0byBjaGVjayBhdXRvTG9hZEltYWdlcyBh
bmQgaW1hZ2VzRW5hYmxlZCBjYW4gYmxvY2sKKyAgICAgICAgaW1hZ2VzIGFuZCBjYW4gcmVsb2Fk
IHRoZW0gaW4gcGxhY2Ugd2hlbiBzZXR0aW5nIGlzIHNldCB0byB1bmJsb2NrLgorCisgICAgICAg
IGltYWdlLXBlcm1pc3Npb25zIHRlc3RzIGFyZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhhdCBvbmVy
cm9yIHdpbGwgbm8KKyAgICAgICAgbG9uZ2VyIGJlIGNhbGxlZCB3aGVuIGltYWdlcyBhcmUgYmxv
Y2tlZC4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4t
cmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2Fk
ZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4t
cGxhY2UuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQt
dW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1w
ZXJtaXNzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVy
bWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1s
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2Vz
L2ltYWdlLmh0bWw6CisKIDIwMTItMDktMTMgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZyAtIHVwc3RyZWFtIHNvbWUg
c2tpYV90ZXN0X2V4cGVjdGF0aW9ucy50eHQgZW50cmllcy4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1j
YW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YTllZjUzNDc5YjhiNWFhNGI0NjRmNjU3ZjJh
Y2Y3ZTViYjQ0N2QyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIv
ZGlzcGxheS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxh
Y2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMg
ZGlzYWJsZWQgY2FuIGJsb2NrIGh0dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFj
ZSB3aGVuIHRvZ2dsZWQuCitTVUNDRVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
bG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2Fk
LWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjMzNmU5YTRkNjM1Y2FmNmFhYTAyNmRmMTI4ZjFlM2E5ODE1NDRmNmMKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1i
bG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS5odG1sCkBAIC0wLDAgKzEsNDcgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0PgorLy8gU2V0dGluZyBXZWJLaXREaXNwbGF5SW1hZ2Vz
S2V5IGlzIGFzeW5jaHJvbm91cywgc28gdXNpbmcgcXVldWVSZWxvYWQgYW5kIHNldEludGVydmFs
IHRvIGNoZWNrIHdoZW4gdGhlIHNldHRpbmcgYWN0dWFsbHkgdGFrZSBlZmZlY3QuCisKK3ZhciBp
bnRlcnZhbElkOwordmFyIGltYWdlX29ubG9hZF9maXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5pbnRl
cm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLm92
ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tleScsIDApOworICAgIHRlc3RS
dW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFy
IGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdl
Lm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZV9v
bmxvYWRfZmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVz
dWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdo
ZW4gRGlzcGxheUltYWdlIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IHRlc3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5Jywg
MSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdG
QUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gRGlzcGFseUltYWdlIGlz
IGNoYW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9u
ZSgpOworICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEw
KTsKK30KKworZnVuY3Rpb24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0
ID09IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0aCA9PSAzNyAmJiBpbWFnZV9vbmxvYWRfZmlyZWQg
PT0gMSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJI
VE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRlcnZhbElk
KTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBEaXNwbGF5
SW1hZ2VzIGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQg
aW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qg
c2NyaXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdl
cy9yZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2Vfb25sb2FkX2ZpcmVkPTE7Ij4KKzwv
Ym9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1h
Z2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uOTUxZDQ2MDFjY2MzY2ExOGQ4Y2ZkNWE5Njk3ODExMWZmYjBjNjAyMAotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVu
c2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9jayBp
bWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NFU1MK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5z
ZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5k
LWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZmJmZDM0NjdlNzgzMjI3NWVm
ZTI1YmVlODU0MDhhY2Y3MmMyNjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisvLyBTZXR0aW5nIEltYWdlc0VuYWJsZWQgaXMgYXN5bmNocm9ub3VzLCBzbyB1c2luZyBx
dWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8gY2hlY2sgd2hlbiB0aGUgc2V0dGluZyBhY3R1
YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVydmFsSWQ7Cit2YXIgaW1hZ2Vfb25sb2FkX2Zp
cmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1w
QXNUZXh0KCk7CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3Bs
YXlJbWFnZXNLZXknLCAxKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdl
c0VuYWJsZWQoZmFsc2UpOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVu
Y3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5u
YXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZV9vbmxvYWRfZmlyZWQgIT0gMCkgeworICAgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IElt
YWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdoZW4gSW1hZ2VzRW5hYmxlZCBpcyB1bnNldCc7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNl
dEltYWdlc0VuYWJsZWQodHJ1ZSk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3Vs
dCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdo
ZW4gSW1hZ2VzRW5hYmxlZCBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0JzsKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2luZG93LnNldEludGVy
dmFsKHJ1blRlc3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RSZXN0KCkKK3sKKyAg
ICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAo
aW1hZ2UubmF0dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lkdGggPT0gMzcgfHwg
aW1hZ2Vfb25sb2FkX2ZpcmVkID09IDEpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFy
SW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgor
ICBUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9jayBpbWFnZSBhbmQgY2FuIGJl
IHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlM
VVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIgc3Jj
PSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxvYWQ9ImltYWdlX29ubG9hZF9maXJl
ZD0xOyI+Cis8L2JvZHk+Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2h0dHAvdGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9u
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDVj
Y2FjNGFiZWY0YTg2YjI2MDk1ZmQ2MmFlZmY3NTA5ZWM4MjBjM2UuLmU3Y2FhOWFmNjIzYTllZDI0
MDk5NzI3MjZiZWEyODBiZDRiMWYzYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvdGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0
cy9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dApAQCAtMSw0
ICsxLDUgQEAKIFBFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKGh0dHA6Ly8xMjcuMC4wLjE6
ODAwMC9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9yZWRpci5waHA/dXJsPWh0dHA6Ly8xMjcu
MC4wLjE6ODAwMC9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogdHJ1ZQor
UEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Blcm1p
c3Npb25jbGllbnQvcmVzb3VyY2VzL3JlZGlyLnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAw
L3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiB0cnVlCiBQRVJNSVNTSU9O
IENMSUVOVDogYWxsb3dJbWFnZShodHRwOi8vMTI3LjAuMC4xOjgwMDAvcGVybWlzc2lvbmNsaWVu
dC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IHRydWUKIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhbGwg
VVJMcyBpbiBhIHJlZGlyZWN0IGNoYWluIGFyZSBwYXNzZWQgdG8gdGhlIFBlcm1pc3Npb25DbGll
bnQuCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3Rl
ZC50eHQKaW5kZXggNjBlNzZhNTIzYWRmMjY0NDY1MzM1ODI5NmY3Y2I5ZWI0MzhkM2Y5Zi4uMTgx
ZGM4MTA3NzM5ZTVmZDlmNTAzZGJiZGM3ZTcwMmQ5YzUwMWQ2MiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9u
cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlz
c2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMTQg
QEAKIFBFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiB0cnVlCitQRVJN
SVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9w
ZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogdHJ1ZQorUEVSTUlTU0lPTiBD
TElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lv
bmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZj9ub2NhY2hlKTogZmFsc2UKIFBFUk1JU1NJT04g
Q0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWY/bm9jYWNoZSk6IGZhbHNlCiBQRVJNSVNTSU9O
IENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNz
aW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKIFBFUk1JU1NJT04gQ0xJRU5U
OiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQorUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93
SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNv
dXJjZXMvYm9zdG9uLmdpZik6IGZhbHNlCitQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgo
ZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9i
b3N0b24uZ2lmKTogZmFsc2UKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRl
c3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5n
aWYpOiBmYWxzZQorUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxh
dGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZh
bHNlCiAKIAogUEFTUzogZmlyc3QgaW1hZ2UgbG9hZGVkCi1QQVNTOiBlcnJvciBldmVudCBmb3Ig
bm90IGNhY2hlZCBpbWFnZQotUEFTUzogZXJyb3IgZXZlbnQgZm9yIGltYWdlIGZyb20gY2FjaGUK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCmluZGV4IDdiNWUyYzU3
NWM5ODk3NGFjMDhmODdlOWY4YzEyMDcxMGFkYmZlZjAuLmY1N2EzYjcwNzA0MzMwOWMyZmFiMmZm
OTJjM2U5ZTJjNmU0MTk2NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25z
Lmh0bWwKQEAgLTEsNiArMSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KKy8vIEJsb2Nr
ZWQgaW1hZ2VzIGNhbiBiZSByZWxvYWRlZCwgc28gbmVpdGhlciBvbmxvYWQgbm9yIG9uZXJyb3Ig
aXMgY2FsbGVkLgorLy8gT25seSBjaGVjayBoZXJlIHRoYXQgb25sb2FkIGlzIG5ldmVyIGNhbGxl
ZCB3aGVuIGltYWdlIGlzIGJsb2NrZWQuCisKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIuZHVtcFBlcm1pc3Npb25D
bGllbnRDYWxsYmFja3MoKTsKQEAgLTIxLDE0ICsyNCwxMiBAQCBmdW5jdGlvbiBsb2FkZWQoKQog
CiAgICAgLy8gTG9hZCBhbiBpbWFnZSBub3QgaW4gY2FjaGUuCiAgICAgdmFyIGltZyA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpOwotICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24gKCkg
eyBsb2coIlBBU1M6IGVycm9yIGV2ZW50IGZvciBub3QgY2FjaGVkIGltYWdlIik7IH0KICAgICBp
bWcub25sb2FkID0gZnVuY3Rpb24gKCkgeyBsb2coIkZBSUw6IG5vdCBjYWNoZWQgaW1hZ2UgbG9h
ZGVkIik7IH0KICAgICBpbWcuc3JjID0gInJlc291cmNlcy9ib3N0b24uZ2lmP25vY2FjaGUiOwog
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChpbWcpOwogCiAg
ICAgLy8gTG9hZCBhbiBpbWFnZSBmcm9tIGNhY2hlLgogICAgIHZhciBpbWdGcm9tQ2FjaGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICBpbWdGcm9tQ2FjaGUub25lcnJvciA9
IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBlcnJvciBldmVudCBmb3IgaW1hZ2UgZnJvbSBjYWNo
ZSIpOyB9CiAgICAgaW1nRnJvbUNhY2hlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgbG9nKCJGQUlM
OiBpbWFnZSBmcm9tIGNhY2hlIGxvYWRlZCIpOyB9CiAgICAgaW1nRnJvbUNhY2hlLnNyYyA9ICJy
ZXNvdXJjZXMvYm9zdG9uLmdpZiI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZyIp
LmFwcGVuZENoaWxkKGltZ0Zyb21DYWNoZSk7CkBAIC00MSw3ICs0Miw3IEBAIGZ1bmN0aW9uIGxv
YWRlZCgpCiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgotPGltZyBzcmM9InJlc291cmNlcy9i
b3N0b24uZ2lmIiBvbmxvYWQ9ImxvYWRlZCgpIiBvbmVycm9yPSJsb2coJ0ZBSUw6IGVycm9yIGV2
ZW50IGZvciBmaXJzdCBpbWFnZScpIj4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYm9zdG9uLmdpZiIg
b25sb2FkPSJsb2FkZWQoKSI+CiA8ZGl2IGlkPSJpbWciPjwvZGl2PgogPGRpdiBpZD0icmVzdWx0
cyI+PC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbApp
bmRleCBlMmFkZmUzZjBiNjIxYWE4ZDlmZjRlMTkwYzkwMjIzMDVjYzA3MGViLi4yMzk3NzE3MTAx
ZGVkNDQwYTMyOTU1ODI2ZTg0MWNkMWNkNjIzZjk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3Vy
Y2VzL2ltYWdlLmh0bWwKQEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIGxvZyhhKQogPC9zY3JpcHQ+
CiA8L2hlYWQ+CiA8Ym9keT4KLTxpbWcgc3JjPSJib3N0b24uZ2lmIiBvbmxvYWQ9ImxvZygnRkFJ
TDogbG9hZCBldmVudCBmb3IgaWZyYW1lZCBpbWFnZSkiIG9uZXJyb3I9ImxvZygnRkFJTDogZXJy
b3IgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UnKSI+Cis8aW1nIHNyYz0iYm9zdG9uLmdpZiIgb25s
b2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UnKSI+CiA8ZGl2IGlk
PSJyZXN1bHRzIj48L2Rpdj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxv
ZyBiL0NoYW5nZUxvZwppbmRleCBmM2FlNjkyYjk1NDk0OWFkMTNjZGE4ZWY4MDJjYzY5NGQ3NDA5
NWFhLi5kODdkMDg5MjE1ZjVmOGViYmRmMDljNTMwZDQzMzYyZDA1MzAzM2YyIDEwMDY0NAotLS0g
YS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTMg
IEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW4tcGxhY2UgcmVs
b2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQgV2ViQ29yZTo6U2V0dGluZ3M6OnNl
dEltYWdlc0VuYWJsZWQgc3ltYm9sLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1i
b2xzLmZpbHRlcjoKKwogMjAxMi0wOS0xMyAgUmFwaGFlbCBLdWJvIGRhIENvc3RhICA8cmFwaGFl
bC5rdWJvLmRhLmNvc3RhQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2VdIFJlbW92ZSBzb21l
IHJlZHVuZGFudCB3YXJuaW5nIGZsYWdzIGFuZCBlbmFibGUgYSBmZXcgbW9yZSB3YXJuaW5ncy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164190</attachid>
            <date>2012-09-14 10:43:43 -0700</date>
            <delta_ts>2012-09-14 11:31:30 -0700</delta_ts>
            <desc>Restore InternalSettings. Style fixes.</desc>
            <filename>bug-95478-20120914104315.patch</filename>
            <type>text/plain</type>
            <size>34879</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWIyMzhkZTlmMmYzYmQ4
MTExNDA4OTE4Nzk1MDNmNTg3ODgzNjhkZC4uM2E2MDc1N2QzY2Q0ZDU1Yzk0NTIxMWRlZDNhN2Rk
ZTFmYmEwZTIzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA5LTEzICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGluLXBsYWNlIHJlbG9hZCBi
ZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgSW1hZ2VzRW5hYmxlZCBzZXR0aW5nIGluIENh
Y2hlZFJlc291cmNlTG9hZGVyIHNpbWlsYXIgdG8KKyAgICAgICAgQXV0b0xvYWRJbWFnZXMuIE1v
dmUgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgdG8gYWZ0ZXIgYQorICAgICAgICBDYWNo
ZWRJbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGFuZCBzdG9yZSB0aGUgY2FjaGUgZm9yIHJlbG9hZCBp
ZiBpdCBpcworICAgICAgICBibG9ja2VkLgorCisgICAgICAgIE1ha2Ugc3VyZSB3aGVuIGltYWdl
IGxvYWRzIGFyZSBkZWZlcnJlZCBieSBlaXRoZXIgSW1hZ2VzRW5hYmxlZCBvcgorICAgICAgICBM
b2FkSW1hZ2VzQXV0b21hdGljYWxseSwgb25sb2FkIGlzIG5vdCBjYWxsZWQuCisKKyAgICAgICAg
QWRkZWQgSW1hZ2VzRW5hYmxlZCB0byBJbnRlcm5hbFNldHRpbmdzIGZvciBsYXlvdXQgdGVzdHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpzdGlsbE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVy
SW1hZ2VMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxv
YWRJbWFnZXNJZk5vdERlZmVycmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjppbWFnZXNFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1Nl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEludGVybmFsU2V0dGluZ3MpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6CisKIDIwMTItMDktMTQgIE1pa2hh
aWwgUG96ZG55YWtvdiAgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CiAKICAgICAgICAg
W0VGTF0gQXR0ZW1wdCB0byBjcmVhdGUgYSB0aGVtZSBmb3IgMCBzaXplZCBlbGVtZW50IGxlYWRz
IHRvIGFzc2VydGlvbiBoaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA1MjE2OTM0YmNhMTBiODM4ZjA1OWJlNzAy
ODZhMmRhMDZkZTgzZGNhLi5kZjc3YzUwY2U1NDI2OWZhZmU4NmJjYjQ3NTYzMmI1ZjMxNmJhMjUz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTMgIEJvIExpdSAgPGJvbGl1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRv
IEltYWdlc0VuYWJsZWQgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHBvcnQgV2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQg
c3ltYm9sLgorCisgICAgICAgICogd2luL1dlYktpdDIuZGVmOgorCiAyMDEyLTA5LTE0ICBDaHJp
c3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgV2Vi
S2l0VGVzdFJ1bm5lciBuZWVkcyBsYXlvdXRUZXN0Q29udHJvbGxlci5zZXRTdG9wUHJvdmlzaW9u
YWxGcmFtZUxvYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IDQwNjlkMDJlOGQyN2Y4ZmIxZTBm
OGIzYWZkMzA0YjBlYmQ2ZTFkNmQuLmNhYzNiZmZhYjc5M2I5MDIwNzE1N2Y1NDQ4NjBiMzY3OTc0
OWE2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC04NDksNiArODQ5LDcgQEAgX19aTjdXZWJD
b3JlOEdyYWRpZW50QzFFUktOU18xMEZsb2F0UG9pbnRFUzNfCiBfX1pON1dlYkNvcmU4UG9zaXRp
b25DMUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRWlOUzBfMTBBbmNob3JUeXBlRQogX19a
TjdXZWJDb3JlOFNldHRpbmdzMTRzZXRKYXZhRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxNXNldFdlYkdMRW5hYmxlZEViCitfX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0Vu
YWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRTY3JpcHRFbmFibGVkRWIKIF9fWk43
V2ViQ29yZThTZXR0aW5nczE2c2V0VXNlc1BhZ2VDYWNoZUViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxN3NldFBsdWdpbnNFbmFibGVkRWIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
CmluZGV4IDdkMmVkNDlmYTMzM2Q3YTE1ZTA5MWZmOTlkY2U2NDBjZDllN2ExMDguLjg0NzNiYzMx
Mzk0MmU2YmQwYmY2NDU3MzFjNDRiNzI3OGRmMjg5MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcApAQCAtNjQ3LDYgKzY0Nyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJl
Z2luRG9jdW1lbnQoYm9vbCBkaXNwYXRjaCkKICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbml0
Q29udGVudFNlY3VyaXR5UG9saWN5KCk7CiAKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5zZXR0aW5ncygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQoIXNldHRpbmdzIHx8IHNldHRp
bmdzLT5hcmVJbWFnZXNFbmFibGVkKCkpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzICYmIHNldHRpbmdz
LT5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CiAKICAgICBpZiAobV9kb2N1bWVudExvYWRl
cikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXgg
NjI3M2E4ZDMzOTVkNGU4MjUxNGMxNDBjYzFjNzA0NjYyODEzMTQ1Mi4uODE3YjBhMWIyYmI0ZTQ5
MGYzZDY3OTUxZjkxZDVlODI0NjQ0OTVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNjcsMTEgKzE2NywxMyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvdQogICAgIAogICAgIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QobmV3UmVx
dWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgaWYgKCFwcmV2aW91c1VSTC5pc051bGwoKSAm
JiAhbmV3UmVxdWVzdC5pc051bGwoKSAmJiBwcmV2aW91c1VSTCAhPSBuZXdSZXF1ZXN0LnVybCgp
KSB7Ci0gICAgICAgIGlmICghbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2Fu
UmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAg
ICAgICBjYW5jZWwoKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKG1fZG9jdW1l
bnQtPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhblJlcXVlc3QobV9yZXNvdXJjZS0+dHlwZSgp
LCBuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUo
KSAhPSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSB8fCAhbV9kb2N1bWVudC0+Y2FjaGVk
UmVzb3VyY2VMb2FkZXIoKS0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobmV3UmVxdWVzdC51cmwoKSkp
IHsKKyAgICAgICAgICAgICAgICBtX3Jlc291cmNlLT53aWxsU2VuZFJlcXVlc3QobmV3UmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fcmVzb3VyY2UtPndpbGxTZW5kUmVxdWVzdChuZXdS
ZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAgY2FuY2VsKCk7CiAgICAgfQogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcAppbmRleCAxNTI3
YTYzYWY1ODY0YzJkMjk0NDNjZjI0YmIyNWMxMDM4M2FiNWE1Li44NWI0YTczOWJkZWFiYTlmNWY2
OTg3YmMxZjQ2OTExNjk0MDczZWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRJbWFnZS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgQ2FjaGVkSW1hZ2U6On5DYWNoZWRJbWFn
ZSgpCiAKIHZvaWQgQ2FjaGVkSW1hZ2U6OmxvYWQoQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGNhY2hl
ZFJlc291cmNlTG9hZGVyLCBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIG9wdGlvbnMpCiB7
Ci0gICAgaWYgKCFjYWNoZWRSZXNvdXJjZUxvYWRlciB8fCBjYWNoZWRSZXNvdXJjZUxvYWRlci0+
YXV0b0xvYWRJbWFnZXMoKSkKKyAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9hZGVyIHx8ICFjYWNo
ZWRSZXNvdXJjZUxvYWRlci0+c2hvdWxkRGVmZXJJbWFnZUxvYWQobV9yZXNvdXJjZVJlcXVlc3Qu
dXJsKCkpKQogICAgICAgICBDYWNoZWRSZXNvdXJjZTo6bG9hZChjYWNoZWRSZXNvdXJjZUxvYWRl
ciwgb3B0aW9ucyk7CiAgICAgZWxzZQogICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5oIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgKaW5kZXggNDg2NWM3ZTI0NjY1YmE2
MzliMGUxYTk2YmM2MjUyNjBkNzNhZDAxYi4uMGM0NTJjNDRhZDk4YTAxYTk4OTY5ZGJiODBhOTll
NmExMjYxMmJlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZEltYWdlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRJZ25vcmVI
VFRQU3RhdHVzQ29kZUVycm9ycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZpcnR1
YWwgYm9vbCBpc0ltYWdlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotICAgIGJvb2wgc3RpbGxO
ZWVkc0xvYWQoKSBjb25zdCB7IHJldHVybiAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygpID09
IFVua25vd24gJiYgIWlzTG9hZGluZygpOyB9CisgICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNM
b2FkKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gIWVycm9yT2NjdXJyZWQoKSAmJiBzdGF0dXMo
KSA9PSBVbmtub3duICYmICFpc0xvYWRpbmcoKTsgfQogICAgIHZvaWQgbG9hZCgpOwogCiAgICAg
Ly8gSW1hZ2VPYnNlcnZlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHAKaW5kZXggODNiYzhlZWQzMDk5NDdmMjhiZGU5NTY2ODc3NDU5NzZkN2UzNjFm
Zi4uY2JjNjUyNTEwNjAxNjQ4ZjgwZjU2ZWEwYTVkY2U3ODYzNDQ0Y2MzMSAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0zOTAsNyArMzkw
LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjKQogICAgICAgICBtX2NsaWVudHMuYWRkKGMpOwogICAgICAgICBtX2NsaWVudHNBd2Fp
dGluZ0NhbGxiYWNrLnJlbW92ZShjKTsKICAgICB9Ci0gICAgaWYgKCFpc0xvYWRpbmcoKSkKKyAg
ICBpZiAoIWlzTG9hZGluZygpICYmICFzdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICBjLT5ub3Rp
ZnlGaW5pc2hlZCh0aGlzKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuaAppbmRleCAwY2FkM2VlN2NhNDI4MTJlYWEzZWZlNjAwMzExNjQ0OWY3YTY5
NmExLi43ZWRhZmQ1MDhkZDNmZWFiZTBlNzg4Y2FmNWVkMzk2MDRiNjAwYjdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMTQ0LDYgKzE0NCw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaXNMb2FkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9sb2Fk
aW5nOyB9CiAgICAgdm9pZCBzZXRMb2FkaW5nKGJvb2wgYikgeyBtX2xvYWRpbmcgPSBiOyB9Cisg
ICAgdmlydHVhbCBib29sIHN0aWxsTmVlZHNMb2FkKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
IAogICAgIFN1YnJlc291cmNlTG9hZGVyKiBsb2FkZXIoKSB7IHJldHVybiBtX2xvYWRlci5nZXQo
KTsgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlTG9hZGVyLmNwcAppbmRleCA1ZmQ3YzUwNWExMWVkNTgxZGM0YWVmOTYxZjYxZjFlMWM2NmQw
Zjg1Li5hNGEzNjY3ZWYwMDA0Nzc5NzQyMmY1MDdlMWFmYTdiOTNhZmVkMjk0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTQ2LDYgKzQ2LDcgQEAKICNpbmNsdWRlICJNZW1vcnlDYWNoZS5oIgogI2luY2x1ZGUgIlBp
bmdMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuaCIKKyNpbmNsdWRl
ICJTY2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVk
ZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KQEAgLTExNSw2ICsx
MTYsNyBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Q2FjaGVkUmVzb3VyY2VMb2FkZXIoRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgICwgbV9yZXF1ZXN0Q291bnQoMCkKICAgICAsIG1fZ2FyYmFnZUNv
bGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyKHRoaXMsICZDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Z2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQpCiAgICAgLCBtX2F1dG9M
b2FkSW1hZ2VzKHRydWUpCisgICAgLCBtX2ltYWdlc0VuYWJsZWQodHJ1ZSkKICAgICAsIG1fYWxs
b3dTdGFsZVJlc291cmNlcyhmYWxzZSkKIHsKIH0KQEAgLTE2MCw3ICsxNjIsNyBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRJbWFnZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RJ
bWFnZShSZXNvdXJjZVJlcQogICAgICAgICB9CiAgICAgfQogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZEltYWdlPiByZXNvdXJjZShzdGF0aWNfY2FzdDxDYWNoZWRJbWFnZSo+KHJlcXVl
c3RSZXNvdXJjZShDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSwgcmVxdWVzdCwgU3RyaW5n
KCksIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKSkuZ2V0KCkpKTsKLSAgICBpZiAoYXV0
b0xvYWRJbWFnZXMoKSAmJiByZXNvdXJjZSAmJiByZXNvdXJjZS0+c3RpbGxOZWVkc0xvYWQoKSkK
KyAgICBpZiAoIXNob3VsZERlZmVySW1hZ2VMb2FkKHJlcXVlc3QudXJsKCkpICYmIHJlc291cmNl
ICYmIHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQogICAgICAgICByZXNvdXJjZS0+bG9hZCh0
aGlzLCBkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkpOwogICAgIHJldHVybiByZXNvdXJj
ZTsKIH0KQEAgLTM2MiwxMiArMzY0LDYgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2Fu
UmVxdWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKICAgICBj
YXNlIENhY2hlZFJlc291cmNlOjpJbWFnZVJlc291cmNlOgogICAgICAgICBpZiAoIW1fZG9jdW1l
bnQtPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ltYWdlRnJvbVNvdXJjZSh1cmwpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmIChmcmFtZSgpKSB7Ci0gICAg
ICAgICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBmcmFtZSgpLT5zZXR0aW5ncygpOwotICAgICAg
ICAgICAgaWYgKCFmcmFtZSgpLT5sb2FkZXIoKS0+Y2xpZW50KCktPmFsbG93SW1hZ2UoIXNldHRp
bmdzIHx8IHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCksIHVybCkpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ2Fj
aGVkUmVzb3VyY2U6OkZvbnRSZXNvdXJjZTogewogICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0ZvbnRGcm9tU291cmNlKHVybCkpCkBAIC01MTQs
MTEgKzUxMCwxMSBAQCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYQogewogICAgIGlmICghZXhpc3Rp
bmdSZXNvdXJjZSkKICAgICAgICAgcmV0dXJuIExvYWQ7Ci0gICAgCisKICAgICAvLyBXZSBhbHJl
YWR5IGhhdmUgYSBwcmVsb2FkIGdvaW5nIGZvciB0aGlzIFVSTC4KICAgICBpZiAoZm9yUHJlbG9h
ZCAmJiBleGlzdGluZ1Jlc291cmNlLT5pc1ByZWxvYWRlZCgpKQogICAgICAgICByZXR1cm4gVXNl
OwotICAgIAorCiAgICAgLy8gSWYgdGhlIHNhbWUgVVJMIGhhcyBiZWVuIGxvYWRlZCBhcyBhIGRp
ZmZlcmVudCB0eXBlLCB3ZSBuZWVkIHRvIHJlbG9hZC4KICAgICBpZiAoZXhpc3RpbmdSZXNvdXJj
ZS0+dHlwZSgpICE9IHR5cGUpIHsKICAgICAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kgcmVsb2FkaW5nIGR1
ZSB0byB0eXBlIG1pc21hdGNoLiIpOwpAQCAtNTMzLDYgKzUyOSwxMSBAQCBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6UmV2YWxpZGF0aW9uUG9saWN5IENhY2hlZFJlc291cmNlTG9hZGVyOjpkZXRlcm1p
bmVSZXZhbGlkYQogICAgIC8vIG9mIHRoaW5ncyBhYm91dCBob3cgcmV2YWxpZGF0aW9uIHdvcmtz
IHRoYXQgbWFudWFsIGhlYWRlcnMgdmlvbGF0ZSwgc28gcHVudCB0byBSZWxvYWQgaW5zdGVhZC4K
ICAgICBpZiAocmVxdWVzdC5pc0NvbmRpdGlvbmFsKCkpCiAgICAgICAgIHJldHVybiBSZWxvYWQ7
CisKKyAgICAvLyBEbyBub3QgbG9hZCBmcm9tIGNhY2hlIGlmIGltYWdlcyBhcmUgbm90IGVuYWJs
ZWQuIFRoZSBsb2FkIGZvciB0aGlzIGltYWdlIHdpbGwgYmUgYmxvY2tlZAorICAgIC8vIGluIHJl
cXVlc3RJbWFnZS4KKyAgICBpZiAoZXhpc3RpbmdSZXNvdXJjZS0+dHlwZSgpID09IENhY2hlZFJl
c291cmNlOjpJbWFnZVJlc291cmNlICYmIHNob3VsZERlZmVySW1hZ2VMb2FkKGV4aXN0aW5nUmVz
b3VyY2UtPnVybCgpKSkKKyAgICAgICAgcmV0dXJuIFJlbG9hZDsKICAgICAKICAgICAvLyBEb24n
dCByZWxvYWQgcmVzb3VyY2VzIHdoaWxlIHBhc3RpbmcuCiAgICAgaWYgKG1fYWxsb3dTdGFsZVJl
c291cmNlcykKQEAgLTYyOSwxMyArNjMwLDM5IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnNldEF1dG9Mb2FkSW1hZ2VzKGJvb2wgZW5hYmxlKQogICAgIGlmICghbV9hdXRvTG9hZEltYWdl
cykKICAgICAgICAgcmV0dXJuOwogCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJlZCgpOwor
fQorCit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5h
YmxlKQoreworICAgIGlmIChlbmFibGUgPT0gbV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2ltYWdlc0VuYWJsZWQgPSBlbmFibGU7CisKKyAgICBpZiAoIW1faW1hZ2Vz
RW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgcmVsb2FkSW1hZ2VzSWZOb3REZWZlcnJl
ZCgpOworfQorCitib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpzaG91bGREZWZlckltYWdlTG9h
ZChjb25zdCBLVVJMJiB1cmwpIGNvbnN0Cit7CisgICAgaWYgKGZyYW1lKCkgJiYgIWZyYW1lKCkt
PmxvYWRlcigpLT5jbGllbnQoKS0+YWxsb3dJbWFnZShtX2ltYWdlc0VuYWJsZWQsIHVybCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuICFtX2F1dG9Mb2FkSW1hZ2VzOworfQor
Cit2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCkK
K3sKICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBlbmQgPSBtX2RvY3VtZW50UmVz
b3VyY2VzLmVuZCgpOwogICAgIGZvciAoRG9jdW1lbnRSZXNvdXJjZU1hcDo6aXRlcmF0b3IgaXQg
PSBtX2RvY3VtZW50UmVzb3VyY2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBpdC0+c2Vjb25kLmdldCgpOwogICAgICAgICBp
ZiAocmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6SW1hZ2VSZXNvdXJjZSkgewog
ICAgICAgICAgICAgQ2FjaGVkSW1hZ2UqIGltYWdlID0gY29uc3RfY2FzdDxDYWNoZWRJbWFnZSo+
KHN0YXRpY19jYXN0PGNvbnN0IENhY2hlZEltYWdlKj4ocmVzb3VyY2UpKTsKIAotICAgICAgICAg
ICAgaWYgKGltYWdlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgICAgICAgICAgaWYgKGltYWdlLT5z
dGlsbE5lZWRzTG9hZCgpICYmICFzaG91bGREZWZlckltYWdlTG9hZChpbWFnZS0+dXJsKCkpKQog
ICAgICAgICAgICAgICAgIGltYWdlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKSk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5oCmluZGV4IGY0NzU1YzIyZmQ4ZDJmMWMyYTBl
OGU2ZGE4MmU3ZjliNTIzYTE5ZmIuLjU3ODExMzBiYzc3MGYzNTI2YjQ5MDhjNzQyYzNjY2ZkZDVh
ZTU0YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5oCkBAIC05Nyw2ICs5NywxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGF1dG9M
b2FkSW1hZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvTG9hZEltYWdlczsgfQogICAgIHZvaWQg
c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCk7CisKKyAgICBib29sIGltYWdlc0VuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2ltYWdlc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldEltYWdlc0VuYWJsZWQo
Ym9vbCk7CisKKyAgICBib29sIHNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmKSBjb25z
dDsKICAgICAKICAgICBDYWNoZVBvbGljeSBjYWNoZVBvbGljeSgpIGNvbnN0OwogICAgIApAQCAt
MTM1LDYgKzE0MCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1l
bnRSZXNvdXJjZXNUaW1lckZpcmVkKFRpbWVyPENhY2hlZFJlc291cmNlTG9hZGVyPiopOwogICAg
IHZvaWQgcGVyZm9ybVBvc3RMb2FkQWN0aW9ucygpOworCisgICAgdm9pZCByZWxvYWRJbWFnZXNJ
Zk5vdERlZmVycmVkKCk7CiAgICAgCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fdmFsaWRhdGVkVVJM
czsKICAgICBtdXRhYmxlIERvY3VtZW50UmVzb3VyY2VNYXAgbV9kb2N1bWVudFJlc291cmNlczsK
QEAgLTE1Miw4ICsxNTksOSBAQCBwcml2YXRlOgogCiAgICAgVGltZXI8Q2FjaGVkUmVzb3VyY2VM
b2FkZXI+IG1fZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyOwogCi0gICAgLy8g
MzAgYml0cyBsZWZ0CisgICAgLy8gMjkgYml0cyBsZWZ0CiAgICAgYm9vbCBtX2F1dG9Mb2FkSW1h
Z2VzIDogMTsKKyAgICBib29sIG1faW1hZ2VzRW5hYmxlZCA6IDE7CiAgICAgYm9vbCBtX2FsbG93
U3RhbGVSZXNvdXJjZXMgOiAxOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAppbmRleCBm
MjUxNTBiNTE2YzM5NjUzNWMzOGJlZmNhM2NiMmEyYTY4ZmVlYTBmLi43ZTA1M2YxZjFlMWJjMTJk
NWI3NTU1YzM3YTQ0NTRiOTU0NjJmNTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcApAQCAt
NDYsMTAgKzQ2LDEyIEBAIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIHZvaWQgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5SW5BbGxGcmFtZXMo
UGFnZSogcGFnZSkKK3N0YXRpYyB2b2lkIHNldEltYWdlTG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBh
Z2UpCiB7Ci0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291
cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQocGFnZS0+c2V0dGluZ3MoKS0+YXJlSW1hZ2Vz
RW5hYmxlZCgpKTsKICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9h
ZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHBhZ2UtPnNldHRpbmdzKCktPmxvYWRzSW1hZ2VzQXV0
b21hdGljYWxseSgpKTsKKyAgICB9CiB9CiAKIC8vIFNldHMgdGhlIGVudHJ5IGluIHRoZSBmb250
IG1hcCBmb3IgdGhlIGdpdmVuIHNjcmlwdC4gSWYgZmFtaWx5IGlzIHRoZSBlbXB0eSBzdHJpbmcs
IHJlbW92ZXMgdGhlIGVudHJ5IGluc3RlYWQuCkBAIC0yODYsNyArMjg4LDcgQEAgU2V0dGluZ3M6
OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX3dpbmRvd0ZvY3VzUmVzdHJpY3RlZCh0cnVl
KQogICAgICwgbV9kaWFnbm9zdGljTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX3Njcm9s
bGluZ1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQoZmFsc2UpCi0gICAgLCBtX2xvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseVRpbWVyKHRoaXMsICZTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5VGltZXJGaXJlZCkKKyAgICAsIG1fc2V0SW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lcih0aGlz
LCAmU2V0dGluZ3M6OmltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJGaXJlZCkKICAgICAsIG1faW5j
cmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRpbWVvdXRJblNlY29uZHMoZGVmYXVsdEluY3Jl
bWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzKQogewogICAgIC8vIEEg
RnJhbWUgbWF5IG5vdCBoYXZlIGJlZW4gY3JlYXRlZCB5ZXQsIHNvIHdlIGluaXRpYWxpemUgdGhl
IEF0b21pY1N0cmluZwpAQCAtNDUyLDEyICs0NTQsMTIgQEAgdm9pZCBTZXR0aW5nczo6c2V0TG9h
ZHNJbWFnZXNBdXRvbWF0aWNhbGx5KGJvb2wgbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KQogICAg
IC8vIFN0YXJ0aW5nIHRoZXNlIGxvYWRzIHN5bmNocm9ub3VzbHkgaXMgbm90IGltcG9ydGFudC4g
IEJ5IHB1dHRpbmcgaXQgb24gYSAwLWRlbGF5LCBwcm9wZXJseSBjbG9zaW5nIHRoZSBQYWdlIGNh
bmNlbHMgdGhlbQogICAgIC8vIGJlZm9yZSB0aGV5IGhhdmUgYSBjaGFuY2UgdG8gcmVhbGx5IHN0
YXJ0LgogICAgIC8vIFNlZSBodHRwOi8vd2Via2l0Lm9yZy9iLzYwNTcyIGZvciBtb3JlIGRpc2N1
c3Npb24uCi0gICAgbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lci5zdGFydE9uZVNob3Qo
MCk7CisgICAgbV9zZXRJbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsK
IH0KIAotdm9pZCBTZXR0aW5nczo6bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXJGaXJlZChU
aW1lcjxTZXR0aW5ncz4qKQordm9pZCBTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1l
ckZpcmVkKFRpbWVyPFNldHRpbmdzPiopCiB7Ci0gICAgc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNh
bGx5SW5BbGxGcmFtZXMobV9wYWdlKTsKKyAgICBzZXRJbWFnZUxvYWRpbmdTZXR0aW5ncyhtX3Bh
Z2UpOwogfQogCiB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc1NpdGVJY29uc0lnbm9yaW5nSW1hZ2VM
b2FkaW5nU2V0dGluZyhib29sIGxvYWRzU2l0ZUljb25zKQpAQCAtNTAzLDYgKzUwNSw5IEBAIHZv
aWQgU2V0dGluZ3M6OnNldEphdmFFbmFibGVkRm9yTG9jYWxGaWxlcyhib29sIGlzSmF2YUVuYWJs
ZWRGb3JMb2NhbEZpbGVzKQogdm9pZCBTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGFy
ZUltYWdlc0VuYWJsZWQpCiB7CiAgICAgbV9hcmVJbWFnZXNFbmFibGVkID0gYXJlSW1hZ2VzRW5h
YmxlZDsKKworICAgIC8vIFNlZSBjb21tZW50IGluIHNldExvYWRzSW1hZ2VzQXV0b21hdGljYWxs
eS4KKyAgICBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwog
fQogCiB2b2lkIFNldHRpbmdzOjpzZXRNZWRpYUVuYWJsZWQoYm9vbCBpc01lZGlhRW5hYmxlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAppbmRleCA5NjgxZTI3ZTBhZTI2NTU3MmMyMTRiNDk2MmQ4NjIw
ODQ0Mzg3ZTc3Li40NWQxY2MxZWYwYzliYzRmMWY4ODIzODk0NDNjMDQ2YWY1MTA1ZWFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9TZXR0aW5ncy5oCkBAIC04MDAsOCArODAwLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgICAgIGJvb2wgbV9zY3JvbGxpbmdQZXJmb3JtYW5jZUxvZ2dpbmdFbmFibGVkIDog
MTsKIAotICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlU
aW1lcjsKLSAgICAgICAgdm9pZCBsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRp
bWVyPFNldHRpbmdzPiopOworICAgICAgICBUaW1lcjxTZXR0aW5ncz4gbV9zZXRJbWFnZUxvYWRp
bmdTZXR0aW5nc1RpbWVyOworICAgICAgICB2b2lkIGltYWdlTG9hZGluZ1NldHRpbmdzVGltZXJG
aXJlZChUaW1lcjxTZXR0aW5ncz4qKTsKICAgICAgICAgCiAgICAgICAgIGRvdWJsZSBtX2luY3Jl
bWVudGFsUmVuZGVyaW5nU3VwcHJlc3Npb25UaW1lb3V0SW5TZWNvbmRzOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcAppbmRleCBiOTViYmMzNmNkNTE3YWNh
NDc3YjBmYjAyMDU3YjQ3Y2E4YmE5MjFlLi5lMDg4ZmJjZTI1M2UyNmVhZjU5NzEzM2Q3ZTBmMTc3
YTE1ODlhYmJiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0
dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5j
cHAKQEAgLTk5LDYgKzk5LDcgQEAgSW50ZXJuYWxTZXR0aW5nczo6QmFja3VwOjpCYWNrdXAoUGFn
ZSogcGFnZSwgU2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9jYW5TdGFydE1lZGlhKHBhZ2Ut
PmNhblN0YXJ0TWVkaWEoKSkKICAgICAsIG1fb3JpZ2luYWxNb2NrU2Nyb2xsYmFyc0VuYWJsZWQo
c2V0dGluZ3MtPm1vY2tTY3JvbGxiYXJzRW5hYmxlZCgpKQogICAgICwgbV9sYW5nQXR0cmlidXRl
QXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpsYW5nQXR0
cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCgpKQorICAgICwgbV9pbWFnZXNFbmFibGVk
KHNldHRpbmdzLT5hcmVJbWFnZXNFbmFibGVkKCkpCiB7CiB9CiAKQEAgLTEzMyw2ICsxMzQsNyBA
QCB2b2lkIEludGVybmFsU2V0dGluZ3M6OkJhY2t1cDo6cmVzdG9yZVRvKFBhZ2UqIHBhZ2UsIFNl
dHRpbmdzKiBzZXR0aW5ncykKICAgICBwYWdlLT5zZXRDYW5TdGFydE1lZGlhKG1fY2FuU3RhcnRN
ZWRpYSk7CiAgICAgc2V0dGluZ3MtPnNldE1vY2tTY3JvbGxiYXJzRW5hYmxlZChtX29yaWdpbmFs
TW9ja1Njcm9sbGJhcnNFbmFibGVkKTsKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzZXRM
YW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZChtX2xhbmdBdHRyaWJ1dGVBd2Fy
ZUZvcm1Db250cm9sVUlFbmFibGVkKTsKKyAgICBzZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxlZCht
X2ltYWdlc0VuYWJsZWQpOwogfQogCiBJbnRlcm5hbFNldHRpbmdzKiBJbnRlcm5hbFNldHRpbmdz
Ojpmcm9tKFBhZ2UqIHBhZ2UpCkBAIC02NTEsNCArNjUzLDEwIEBAIHZvaWQgSW50ZXJuYWxTZXR0
aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9vbCBlbmFi
bGVkKQogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNldExhbmdBdHRyaWJ1dGVBd2FyZUZv
cm1Db250cm9sVUlFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIEludGVybmFsU2V0dGluZ3M6
OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGVkLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAg
ICBJbnRlcm5hbFNldHRpbmdzR3VhcmRGb3JTZXR0aW5ncygpOworICAgIHNldHRpbmdzKCktPnNl
dEltYWdlc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbFNldHRpbmdzLmgKaW5kZXggZjVhYWQ4ZWRjMjJhMzAwNDRkYjMwODA2MjI4NWQ4Mjc4
ZTg2MTRkYS4uMGY5NGZiMjVmOWI5MTdlZDhkY2M3ZDdlODM4MWNmYmY0NWYyZTYyMSAxMDA3NTUK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmgKQEAgLTgxLDYgKzgxLDcgQEAg
cHVibGljOgogICAgICAgICBib29sIG1fY2FuU3RhcnRNZWRpYTsKICAgICAgICAgYm9vbCBtX29y
aWdpbmFsTW9ja1Njcm9sbGJhcnNFbmFibGVkOwogICAgICAgICBib29sIG1fbGFuZ0F0dHJpYnV0
ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQ7CisgICAgICAgIGJvb2wgbV9pbWFnZXNFbmFibGVk
OwogICAgIH07CiAKICAgICB0eXBlZGVmIFJlZkNvdW50ZWRTdXBwbGVtZW50PFBhZ2UsIEludGVy
bmFsU2V0dGluZ3M+IFN1cGVyVHlwZTsKQEAgLTE0NSw2ICsxNDYsOCBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9p
ZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
OwogICAgIHZvaWQgc2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQoYm9v
bCk7CisgICAgdm9pZCBzZXRJbWFnZXNFbmFibGVkKGJvb2wgZW5hYmxlZCwgRXhjZXB0aW9uQ29k
ZSYpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEludGVybmFsU2V0dGluZ3MoUGFnZSopOwog
ICAgIHZpcnR1YWwgdm9pZCBob3N0RGVzdHJveWVkKCkgT1ZFUlJJREUgeyBtX3BhZ2UgPSAwOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRs
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbAppbmRleCA4Zjk3
Zjg5ZmZkZjdkNTFlMDdiNTY4MDk1YmRiZTQ5OTQwMzA3NTI0Li5jNzQ1NWZlMTY0MTQwZTQ4NDY0
NzE2OGNkMGE0N2I4ODAxYmIzZWFhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxTZXR0aW5ncy5pZGwKQEAgLTgxLDYgKzgxLDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAjZW5kaWYK
ICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJh
aXNlcyhET01FeGNlcHRpb24pOwogICAgICAgICB2b2lkIHNldFN0b3JhZ2VCbG9ja2luZ1BvbGlj
eShpbiBET01TdHJpbmcgcG9saWN5KSByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICAgICAgdm9p
ZCBzZXRJbWFnZXNFbmFibGVkKGluIGJvb2xlYW4gZW5hYmxlZCkgcmFpc2VzKERPTUV4Y2VwdGlv
bik7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIu
ZGVmIGIvU291cmNlL1dlYktpdDIvd2luL1dlYktpdDIuZGVmCmluZGV4IGFhM2JhYzAxNTk5NjFh
YzNkZjdjY2NlMWE4NTRkMGE3MjIzODk1YmYuLmQ2MTI4OGRkNGMxOTY1ZTUzYzM2M2ExMTZiNmQy
NDVmYTBkODA4YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgor
KysgYi9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKQEAgLTIyMyw2ICsyMjMsNyBAQCBF
WFBPUlRTCiAgICAgICAgID9zZXRET01FeGNlcHRpb25AV2ViQ29yZUBAWUFYUEFWRXhlY1N0YXRl
QEpTQ0BASEBaCiAgICAgICAgID9zZXRGYW50YXN5Rm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3Jl
QEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAgICAgP3Nl
dEZpeGVkRm9udEZhbWlseUBTZXR0aW5nc0BXZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdU
RkBAVzRVU2NyaXB0Q29kZUBAQFoKKyAgICAgICAgP3NldEltYWdlc0VuYWJsZWRAU2V0dGluZ3NA
V2ViQ29yZUBAUUFFWF9OQFoKICAgICAgICAgP3NldE1vY2tTY3JvbGxiYXJzRW5hYmxlZEBTZXR0
aW5nc0BXZWJDb3JlQEBTQVhfTkBaCiAgICAgICAgID9tb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0
dGluZ3NAV2ViQ29yZUBAU0FfTlhaCiAgICAgICAgID9zZXRQYWdlU2NhbGVGYWN0b3JAUGFnZUBX
ZWJDb3JlQEBRQUVYTUFCVkludFBvaW50QDJAQFoKZGlmZiAtLWdpdCBhL1NvdXJjZS9hdXRvdG9v
bHMvc3ltYm9scy5maWx0ZXIgYi9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVyCmluZGV4
IDdmZDYxMmJlOGM5MDJiZDE4N2YzMTgyMGIzOTY1MjllYWYwMDNjNDkuLjAzMWNkN2ZiMmMxZGI3
ZGRlZjFjOGQyMjViMTc3NjFmNDlkNjRkNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9hdXRvdG9vbHMv
c3ltYm9scy5maWx0ZXIKKysrIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgpAQCAt
MTQ1LDYgKzE0NSw3IEBAIF9aTjdXZWJDb3JlMTRTY3JvbGxhYmxlQXJlYTI4c2V0U2Nyb2xsT2Zm
c2V0RnJvbUludGVybmFsc0VSS05TXzhJbnRQb2ludEU7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmll
dzIzc2V0U2Nyb2xsYmFyc1N1cHByZXNzZWRFYmI7CiBfWk43V2ViQ29yZTEwU2Nyb2xsVmlldzIx
c2V0RGVsZWdhdGVzU2Nyb2xsaW5nRWI7CiBfWk43V2ViQ29yZTROb2RlMTRyZW1vdmVkTGFzdFJl
ZkV2OworX1pON1dlYkNvcmU4U2V0dGluZ3MxNnNldEltYWdlc0VuYWJsZWRFYjsKIF9aTjdXZWJD
b3JlOFNldHRpbmdzMThzZXRGaXhlZEZvbnRGYW1pbHlFUktOM1dURjEyQXRvbWljU3RyaW5nRTEx
VVNjcmlwdENvZGU7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4c2V0U2VyaWZGb250RmFtaWx5RVJL
TjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwogX1pON1dlYkNvcmU4U2V0dGluZ3My
MHNldEN1cnNpdmVGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2Rl
OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDU5MzIzNGRhOGM1OWZmYjJjY2Q1MTIyM2YzMmIxNGQ1ZDJiY2Y1ZTguLjM3ODI4
N2JmOWU5ODlhMThjMDAxNWMxYmJhY2UwNWMwZmJjYzUxZmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBA
QAorMjAxMi0wOS0xMyAgQm8gTGl1ICA8Ym9saXVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIEFk
ZCBpbi1wbGFjZSByZWxvYWQgYmVoYXZpb3IgdG8gSW1hZ2VzRW5hYmxlZCBzZXR0aW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NTQ3OAorCisgICAg
ICAgIEFkZCB0ZXN0cyB0byBjaGVjayBhdXRvTG9hZEltYWdlcyBhbmQgaW1hZ2VzRW5hYmxlZCBj
YW4gYmxvY2sKKyAgICAgICAgaW1hZ2VzIGFuZCBjYW4gcmVsb2FkIHRoZW0gaW4gcGxhY2Ugd2hl
biBzZXR0aW5nIGlzIHNldCB0byB1bmJsb2NrLgorCisgICAgICAgIGltYWdlLXBlcm1pc3Npb25z
IHRlc3RzIGFyZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhhdCBvbmVycm9yIHdpbGwgbm8KKyAgICAg
ICAgbG9uZ2VyIGJlIGNhbGxlZCB3aGVuIGltYWdlcyBhcmUgYmxvY2tlZC4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3Bs
YXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1j
YW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL2h0dHAvdGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFn
ZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sOgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWw6CisKIDIw
MTItMDktMTQgIFN1ZGFyc2FuYSBOYWdpbmVuaSAgPHN1ZGFyc2FuYS5uYWdpbmVuaUBsaW51eC5p
bnRlbC5jb20+CiAKICAgICAgICAgW0VGTF1bV0syXSBVbnNraXAgdGVzdCBjYXNlcyB0aGF0IGFy
ZSBub3cgcGFzc2luZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxh
eS1pbWFnZS11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1j
YW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjdhOWVmNTM0NzliOGI1YWE0YjQ2NGY2NTdmMmFjZjdlNWJiNDQ3ZDIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNh
bi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSwzIEBACitUZXN0IHRoYXQgRGlzcGxheUltYWdlcyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0
cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NF
U1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFu
ZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzEyZjUwOWQ1NDNiN2E1YTdk
NDdkMTkxYjc4ODY2M2U2ZDI2MTk3NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3Jp
cHQ+CisvLyBTZXR0aW5nIFdlYktpdERpc3BsYXlJbWFnZXNLZXkgaXMgYXN5bmNocm9ub3VzLCBz
byB1c2luZyBxdWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8gY2hlY2sgd2hlbiB0aGUgc2V0
dGluZyBhY3R1YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVydmFsSWQ7Cit2YXIgaW1hZ2VP
bmxvYWRGaXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5u
ZXIuZHVtcEFzVGV4dCgpOworICAgIHdpbmRvdy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2Vz
RW5hYmxlZCh0cnVlKTsKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVyZW5jZSgnV2ViS2l0
RGlzcGxheUltYWdlc0tleScsIDApOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30K
KworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBp
bWFnZS5uYXR1cmFsV2lkdGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJF
OiBJbWFnZSBzaG91bGQgbm90IGJlIGxvYWRlZCB3aGVuIERpc3BsYXlJbWFnZSBpcyB1bnNldCc7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB0ZXN0UnVubmVyLm92ZXJyaWRlUHJlZmVy
ZW5jZSgnV2ViS2l0RGlzcGxheUltYWdlc0tleScsIDEpOworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9h
ZCBpbi1wbGFjZSB3aGVuIERpc3BhbHlJbWFnZSBpcyBjaGFuZ2VzIGZyb20gdW5zZXQgdG8gc2V0
JzsKKyAgICB0ZXN0UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKyAgICBpbnRlcnZhbElkID0gd2lu
ZG93LnNldEludGVydmFsKHJ1blRlc3RSZXN0LCAxMCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RS
ZXN0KCkKK3sKKyAgICB2YXIgaW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2Un
KTsKKyAgICBpZiAoaW1hZ2UubmF0dXJhbEhlaWdodCA9PSAzMyAmJiBpbWFnZS5uYXR1cmFsV2lk
dGggPT0gMzcgJiYgaW1hZ2VPbmxvYWRGaXJlZCA9PSAxKSB7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAnU1VDQ0VTUyc7CisgICAgICAgIHdp
bmRvdy5jbGVhckludGVydmFsKGludGVydmFsSWQpOworICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0icnVu
VGVzdCgpIj4KKyAgVGVzdCB0aGF0IERpc3BsYXlJbWFnZXMgZGlzYWJsZWQgY2FuIGJsb2NrIGh0
dHAgaW1hZ2UgYW5kIGNhbiBiZSByZWxvYWRlZCBpbi1wbGFjZSB3aGVuIHRvZ2dsZWQuCisgIDxk
aXYgaWQ9InJlc3VsdCI+RkFJTFVSRTogVGVzdCBzY3JpcHQgZGlkbid0IHJ1bi48L2Rpdj4KKyAg
PGltZyBpZD0iaW1hZ2UiIHNyYz0iLi4vaW1hZ2VzL3Jlc291cmNlcy9vdmFsLnBuZyIgb25sb2Fk
PSJpbWFnZU9ubG9hZEZpcmVkPTE7Ij4KKzwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWlt
YWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTUxZDQ2MDFjY2MzY2ExOGQ4
Y2ZkNWE5Njk3ODExMWZmYjBjNjAyMAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0IHRoYXQgRW5h
YmxlSW1hZ2VzIHVuc2V0IGNhbiBibG9jayBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBs
YWNlIHdoZW4gdG9nZ2xlZC4KK1NVQ0NFU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVs
b2FkLWluLXBsYWNlLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxl
ZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4zZjQ4ZTYyOGRkZDYwZDViYWZhMmIxNGYwODM2MGI0YjZlNmE2NjNjCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQt
Y2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKQEAgLTAsMCArMSw0
NyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQ+CisvLyBTZXR0aW5nIEltYWdlc0VuYWJsZWQg
aXMgYXN5bmNocm9ub3VzLCBzbyB1c2luZyBxdWV1ZVJlbG9hZCBhbmQgc2V0SW50ZXJ2YWwgdG8g
Y2hlY2sgd2hlbiB0aGUgc2V0dGluZyBhY3R1YWxseSB0YWtlIGVmZmVjdC4KKwordmFyIGludGVy
dmFsSWQ7Cit2YXIgaW1hZ2VPbmxvYWRGaXJlZCA9IDA7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5l
cikgeworICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5uZXIub3ZlcnJp
ZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7CisgICAgd2luZG93Lmlu
dGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKGZhbHNlKTsKKyAgICB0ZXN0UnVubmVy
LnF1ZXVlUmVsb2FkKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciBpbWFn
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1
cmFsSGVpZ2h0ICE9IDAgfHwgaW1hZ2UubmF0dXJhbFdpZHRoICE9IDAgfHwgaW1hZ2VPbmxvYWRG
aXJlZCAhPSAwKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIG5vdCBiZSBsb2FkZWQgd2hlbiBJbWFn
ZXNFbmFibGVkIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHdpbmRv
dy5pbnRlcm5hbHMuc2V0dGluZ3Muc2V0SW1hZ2VzRW5hYmxlZCh0cnVlKTsKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNo
b3VsZCByZWxvYWQgaW4tcGxhY2Ugd2hlbiBJbWFnZXNFbmFibGVkIGlzIGNoYW5nZXMgZnJvbSB1
bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgpOworICAgIGludGVy
dmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsKK30KKworZnVuY3Rp
b24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09IDMzICYmIGltYWdl
Lm5hdHVyYWxXaWR0aCA9PSAzNyB8fCBpbWFnZU9ubG9hZEZpcmVkID09IDEpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNTJzsK
KyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7CisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRW5hYmxlSW1hZ2VzIHVuc2V0IGNhbiBi
bG9jayBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBsYWNlIHdoZW4gdG9nZ2xlZC4KKyAg
PGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlwdCBkaWRuJ3QgcnVuLjwvZGl2Pgor
ICA8aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVzb3VyY2VzL292YWwucG5nIiBvbmxv
YWQ9ImltYWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5PgorPC9odG1sPgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vaHR0cC90ZXN0cy9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4
cGVjdGVkLnR4dAppbmRleCA1Y2NhYzRhYmVmNGE4NmIyNjA5NWZkNjJhZWZmNzUwOWVjODIwYzNl
Li5lN2NhYTlhZjYyM2E5ZWQyNDA5OTcyNzI2YmVhMjgwYmQ0YjFmM2M5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3Blcm1pc3Npb25jbGllbnQv
aW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2h0dHAvdGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1l
eHBlY3RlZC50eHQKQEAgLTEsNCArMSw1IEBACiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFn
ZShodHRwOi8vMTI3LjAuMC4xOjgwMDAvcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvcmVkaXIu
cGhwP3VybD1odHRwOi8vMTI3LjAuMC4xOjgwMDAvcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMv
Ym9zdG9uLmdpZik6IHRydWUKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKGh0dHA6Ly8x
MjcuMC4wLjE6ODAwMC9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9yZWRpci5waHA/dXJsPWh0
dHA6Ly8xMjcuMC4wLjE6ODAwMC9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lm
KTogdHJ1ZQogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoaHR0cDovLzEyNy4wLjAuMTo4
MDAwL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiB0cnVlCiBUaGlzIHRl
c3QgY2hlY2tzIHRoYXQgYWxsIFVSTHMgaW4gYSByZWRpcmVjdCBjaGFpbiBhcmUgcGFzc2VkIHRv
IHRoZSBQZXJtaXNzaW9uQ2xpZW50LgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2Ut
cGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDYwZTc2YTUyM2FkZjI2NDQ2NTMzNTgyOTZm
N2NiOWViNDM4ZDNmOWYuLjE4MWRjODEwNzczOWU1ZmQ5ZjUwM2RiYmRjN2U3MDJkOWM1MDFkNjIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDEwICsxLDE0IEBACiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmls
ZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0
b24uZ2lmKTogdHJ1ZQorUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6
cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6
IHRydWUKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3Jt
L2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWY/bm9jYWNoZSk6
IGZhbHNlCiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9y
bS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmP25vY2FjaGUp
OiBmYWxzZQogUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZv
cm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZhbHNl
CiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJv
bWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKK1BFUk1J
U1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Bl
cm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQorUEVSTUlTU0lPTiBD
TElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lv
bmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZhbHNlCitQRVJNSVNTSU9OIENMSUVOVDog
YWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50
L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0lt
YWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3Vy
Y2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQogCiAKIFBBU1M6IGZpcnN0IGltYWdlIGxvYWRlZAotUEFT
UzogZXJyb3IgZXZlbnQgZm9yIG5vdCBjYWNoZWQgaW1hZ2UKLVBBU1M6IGVycm9yIGV2ZW50IGZv
ciBpbWFnZSBmcm9tIGNhY2hlCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbCBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMu
aHRtbAppbmRleCA3YjVlMmM1NzVjOTg5NzRhYzA4Zjg3ZTlmOGMxMjA3MTBhZGJmZWYwLi5mNTdh
M2I3MDcwNDMzMDljMmZhYjJmZjkyYzNlOWUyYzZlNDE5NjQ3IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25z
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVu
dC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCkBAIC0xLDYgKzEsOSBAQAogPGh0bWw+CiA8aGVhZD4K
IDxzY3JpcHQ+CisvLyBCbG9ja2VkIGltYWdlcyBjYW4gYmUgcmVsb2FkZWQsIHNvIG5laXRoZXIg
b25sb2FkIG5vciBvbmVycm9yIGlzIGNhbGxlZC4KKy8vIE9ubHkgY2hlY2sgaGVyZSB0aGF0IG9u
bG9hZCBpcyBuZXZlciBjYWxsZWQgd2hlbiBpbWFnZSBpcyBibG9ja2VkLgorCiBpZiAod2luZG93
LnRlc3RSdW5uZXIpIHsKICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKICAgICB0ZXN0UnVu
bmVyLmR1bXBQZXJtaXNzaW9uQ2xpZW50Q2FsbGJhY2tzKCk7CkBAIC0yMSwxNCArMjQsMTIgQEAg
ZnVuY3Rpb24gbG9hZGVkKCkKIAogICAgIC8vIExvYWQgYW4gaW1hZ2Ugbm90IGluIGNhY2hlLgog
ICAgIHZhciBpbWcgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTsKLSAgICBpbWcub25l
cnJvciA9IGZ1bmN0aW9uICgpIHsgbG9nKCJQQVNTOiBlcnJvciBldmVudCBmb3Igbm90IGNhY2hl
ZCBpbWFnZSIpOyB9CiAgICAgaW1nLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgbG9nKCJGQUlMOiBu
b3QgY2FjaGVkIGltYWdlIGxvYWRlZCIpOyB9CiAgICAgaW1nLnNyYyA9ICJyZXNvdXJjZXMvYm9z
dG9uLmdpZj9ub2NhY2hlIjsKICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1nIikuYXBw
ZW5kQ2hpbGQoaW1nKTsKIAogICAgIC8vIExvYWQgYW4gaW1hZ2UgZnJvbSBjYWNoZS4KICAgICB2
YXIgaW1nRnJvbUNhY2hlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7Ci0gICAgaW1n
RnJvbUNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7IGxvZygiUEFTUzogZXJyb3IgZXZlbnQg
Zm9yIGltYWdlIGZyb20gY2FjaGUiKTsgfQogICAgIGltZ0Zyb21DYWNoZS5vbmxvYWQgPSBmdW5j
dGlvbiAoKSB7IGxvZygiRkFJTDogaW1hZ2UgZnJvbSBjYWNoZSBsb2FkZWQiKTsgfQogICAgIGlt
Z0Zyb21DYWNoZS5zcmMgPSAicmVzb3VyY2VzL2Jvc3Rvbi5naWYiOwogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChpbWdGcm9tQ2FjaGUpOwpAQCAtNDEsNyAr
NDIsNyBAQCBmdW5jdGlvbiBsb2FkZWQoKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keT4KLTxp
bWcgc3JjPSJyZXNvdXJjZXMvYm9zdG9uLmdpZiIgb25sb2FkPSJsb2FkZWQoKSIgb25lcnJvcj0i
bG9nKCdGQUlMOiBlcnJvciBldmVudCBmb3IgZmlyc3QgaW1hZ2UnKSI+Cis8aW1nIHNyYz0icmVz
b3VyY2VzL2Jvc3Rvbi5naWYiIG9ubG9hZD0ibG9hZGVkKCkiPgogPGRpdiBpZD0iaW1nIj48L2Rp
dj4KIDxkaXYgaWQ9InJlc3VsdHMiPjwvZGl2PgogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVz
b3VyY2VzL2ltYWdlLmh0bWwKaW5kZXggZTJhZGZlM2YwYjYyMWFhOGQ5ZmY0ZTE5MGM5MDIyMzA1
Y2MwNzBlYi4uMjM5NzcxNzEwMWRlZDQ0MGEzMjk1NTgyNmU4NDFjZDFjZDYyM2Y5NyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNv
dXJjZXMvaW1hZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJt
aXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCkBAIC04LDcgKzgsNyBAQCBmdW5jdGlv
biBsb2coYSkKIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHk+Ci08aW1nIHNyYz0iYm9zdG9uLmdp
ZiIgb25sb2FkPSJsb2coJ0ZBSUw6IGxvYWQgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UpIiBvbmVy
cm9yPSJsb2coJ0ZBSUw6IGVycm9yIGV2ZW50IGZvciBpZnJhbWVkIGltYWdlJykiPgorPGltZyBz
cmM9ImJvc3Rvbi5naWYiIG9ubG9hZD0ibG9nKCdGQUlMOiBsb2FkIGV2ZW50IGZvciBpZnJhbWVk
IGltYWdlJykiPgogPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRp
ZmYgLS1naXQgYS9DaGFuZ2VMb2cgYi9DaGFuZ2VMb2cKaW5kZXggYTdkODIzZWYwZGYxNThjY2Y0
YzhjOTE0OTU4YzMwZTFmMjVjMTE2OS4uZmQ2YWI0ZDk5MzExZDE0Y2Q2MzE4ZDU0MTIzN2MwMTE5
MjBhZWI2ZCAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE0IEBACisyMDEyLTA5LTEzICBCbyBMaXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgQWRkIGluLXBsYWNlIHJlbG9hZCBiZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXhwb3J0IFdl
YkNvcmU6OlNldHRpbmdzOjpzZXRJbWFnZXNFbmFibGVkIHN5bWJvbC4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMDktMTQgIFRvciBBcm5lIFZl
c3Riw7ggIDx0b3IuYXJuZS52ZXN0Ym9Abm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gRml4IGhh
bmRsaW5nIG9mIGRlYnVnL3JlbGVhc2UvZGVidWdfYW5kX3JlbGVhc2UvYnVpbGRfYWxsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164197</attachid>
            <date>2012-09-14 11:31:34 -0700</date>
            <delta_ts>2012-09-14 13:04:09 -0700</delta_ts>
            <desc>Rebase. Had conflict in InternalSettings</desc>
            <filename>bug-95478-20120914113106.patch</filename>
            <type>text/plain</type>
            <size>34617</size>
            <attacher name="Bo Liu">boliu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTgyMDZjMmJlYWVkZTcx
N2Y1ZThlMzA5MGU2ZTljODY5YzRkNjk4NS4uODNiNDFjNWQ0YjkxODAyMzAyZGUwZDQxYzM5ZjNm
NGI4NzMxMjE5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEyLTA5LTEzICBCbyBM
aXUgIDxib2xpdUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQWRkIGluLXBsYWNlIHJlbG9hZCBi
ZWhhdmlvciB0byBJbWFnZXNFbmFibGVkIHNldHRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk1NDc4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3RvcmUgSW1hZ2VzRW5hYmxlZCBzZXR0aW5nIGluIENh
Y2hlZFJlc291cmNlTG9hZGVyIHNpbWlsYXIgdG8KKyAgICAgICAgQXV0b0xvYWRJbWFnZXMuIE1v
dmUgRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93SW1hZ2UgdG8gYWZ0ZXIgYQorICAgICAgICBDYWNo
ZWRJbWFnZSBoYXMgYmVlbiBjcmVhdGVkIGFuZCBzdG9yZSB0aGUgY2FjaGUgZm9yIHJlbG9hZCBp
ZiBpdCBpcworICAgICAgICBibG9ja2VkLgorCisgICAgICAgIE1ha2Ugc3VyZSB3aGVuIGltYWdl
IGxvYWRzIGFyZSBkZWZlcnJlZCBieSBlaXRoZXIgSW1hZ2VzRW5hYmxlZCBvcgorICAgICAgICBM
b2FkSW1hZ2VzQXV0b21hdGljYWxseSwgb25sb2FkIGlzIG5vdCBjYWxsZWQuCisKKyAgICAgICAg
QWRkZWQgSW1hZ2VzRW5hYmxlZCB0byBJbnRlcm5hbFNldHRpbmdzIGZvciBsYXlvdXQgdGVzdHMu
CisKKyAgICAgICAgVGVzdHM6IGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJs
b2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmRpZEJlZ2luRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkSW1hZ2U6OmxvYWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRJ
bWFnZS5oOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjpzdGlsbE5lZWRzTG9hZCk6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcik6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6cmVxdWVzdEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZXRlcm1pbmVSZXZhbGlkYXRpb25Qb2xpY3kpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnNldEF1dG9Mb2FkSW1hZ2VzKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNldEltYWdlc0VuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnNob3VsZERlZmVy
SW1hZ2VMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZWxv
YWRJbWFnZXNJZk5vdERlZmVycmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuaDoKKyAgICAgICAgKENhY2hlZFJlc291cmNlTG9hZGVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjppbWFnZXNFbmFibGVkKToKKyAgICAgICAg
KiBwYWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1Nl
dHRpbmdzKToKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6c2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQpOgorICAgICAgICAq
IHBhZ2UvU2V0dGluZ3MuaDoKKyAgICAgICAgKFNldHRpbmdzKToKKyAgICAgICAgKiB0ZXN0aW5n
L0ludGVybmFsU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxTZXR0aW5n
czo6c2V0SW1hZ2VzRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFsU2V0dGluZ3MuaDoKKyAgICAgICAgKEludGVybmFsU2V0dGluZ3MpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGw6CisKIDIwMTItMDktMTQgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIGEgd29y
a2Fyb3VuZCBmb3IgYSBteXN0ZXJpb3VzIGNyYXNoIG9uIEFwcGxlIFdpbmRvd3MgcG9ydC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwppbmRleCAxZjM5ZmQyOWU5MWE0MTc3MDI3YmM1ODcwOWI1ZTE2ZWIxYjY1YzIyLi40ZGY2
NDRiMGZkNmY5YzcxYmRkY2I1ZjczMWNmZTgxYmE1YzBmMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTItMDktMTMgIEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAg
ICAgICBBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGlu
ZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvcnQg
V2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQgc3ltYm9sLgorCisgICAgICAgICog
d2luL1dlYktpdDIuZGVmOgorCiAyMDEyLTA5LTE0ICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0
b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBuZWVkcyBs
YXlvdXRUZXN0Q29udHJvbGxlci5kdW1wRGF0YWJhc2VDYWxsYmFja3MKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggNDA2OWQwMmU4ZDI3ZjhmYjFlMGY4YjNhZmQzMDRiMGViZDZlMWQ2ZC4uY2FjM2Jm
ZmFiNzkzYjkwMjA3MTU3ZjU0NDg2MGIzNjc5NzQ5YTY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTg0OSw2ICs4NDksNyBAQCBfX1pON1dlYkNvcmU4R3JhZGllbnRDMUVSS05TXzEwRmxvYXRQ
b2ludEVTM18KIF9fWk43V2ViQ29yZThQb3NpdGlvbkMxRU4zV1RGMTBQYXNzUmVmUHRySU5TXzRO
b2RlRUVFaU5TMF8xMEFuY2hvclR5cGVFCiBfX1pON1dlYkNvcmU4U2V0dGluZ3MxNHNldEphdmFF
bmFibGVkRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE1c2V0V2ViR0xFbmFibGVkRWIKK19fWk43
V2ViQ29yZThTZXR0aW5nczE2c2V0SW1hZ2VzRW5hYmxlZEViCiBfX1pON1dlYkNvcmU4U2V0dGlu
Z3MxNnNldFNjcmlwdEVuYWJsZWRFYgogX19aTjdXZWJDb3JlOFNldHRpbmdzMTZzZXRVc2VzUGFn
ZUNhY2hlRWIKIF9fWk43V2ViQ29yZThTZXR0aW5nczE3c2V0UGx1Z2luc0VuYWJsZWRFYgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggN2QyZWQ0OWZhMzMzZDdhMTVlMDkx
ZmY5OWRjZTY0MGNkOWU3YTEwOC4uODQ3M2JjMzEzOTQyZTZiZDBiZjY0NTczMWM0NGI3Mjc4ZGYy
ODkxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC02NDcsNiArNjQ3
LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQog
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmluaXRDb250ZW50U2VjdXJpdHlQb2xpY3koKTsKIAog
ICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNldHRpbmdzKCk7
CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1h
Z2VzRW5hYmxlZCghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0VuYWJsZWQoKSk7CiAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xv
YWRJbWFnZXMoc2V0dGluZ3MgJiYgc2V0dGluZ3MtPmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgp
KTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA2MjczYThkMzM5NWQ0ZTgyNTE0YzE0MGNjMWM3
MDQ2NjI4MTMxNDUyLi44MTdiMGExYjJiYjRlNDkwZjNkNjc5NTFmOTFkNWU4MjQ2NDQ5NWVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2Nywx
MSArMTY3LDEzIEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgCiAgICAgUmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAg
ICBpZiAoIXByZXZpb3VzVVJMLmlzTnVsbCgpICYmICFuZXdSZXF1ZXN0LmlzTnVsbCgpICYmIHBy
ZXZpb3VzVVJMICE9IG5ld1JlcXVlc3QudXJsKCkpIHsKLSAgICAgICAgaWYgKCFtX2RvY3VtZW50
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYW5SZXF1ZXN0KG1fcmVzb3VyY2UtPnR5cGUoKSwg
bmV3UmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgICAgIGNhbmNlbCgpOwotICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBpZiAobV9kb2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+
Y2FuUmVxdWVzdChtX3Jlc291cmNlLT50eXBlKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CisgICAg
ICAgICAgICBpZiAobV9yZXNvdXJjZS0+dHlwZSgpICE9IENhY2hlZFJlc291cmNlOjpJbWFnZVJl
c291cmNlIHx8ICFtX2RvY3VtZW50LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zaG91bGREZWZl
ckltYWdlTG9hZChuZXdSZXF1ZXN0LnVybCgpKSkgeworICAgICAgICAgICAgICAgIG1fcmVzb3Vy
Y2UtPndpbGxTZW5kUmVxdWVzdChuZXdSZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgbV9y
ZXNvdXJjZS0+d2lsbFNlbmRSZXF1ZXN0KG5ld1JlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwor
ICAgICAgICBjYW5jZWwoKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkSW1hZ2UuY3BwCmluZGV4IDE1MjdhNjNhZjU4NjRjMmQyOTQ0M2NmMjRiYjI1YzEw
MzgzYWI1YTUuLjg1YjRhNzM5YmRlYWJhOWY1ZjY5ODdiYzFmNDY5MTE2OTQwNzNlZGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRJbWFnZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZEltYWdlLmNwcApAQCAtNzksNyArNzks
NyBAQCBDYWNoZWRJbWFnZTo6fkNhY2hlZEltYWdlKCkKIAogdm9pZCBDYWNoZWRJbWFnZTo6bG9h
ZChDYWNoZWRSZXNvdXJjZUxvYWRlciogY2FjaGVkUmVzb3VyY2VMb2FkZXIsIGNvbnN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBpZiAoIWNhY2hlZFJlc291cmNlTG9h
ZGVyIHx8IGNhY2hlZFJlc291cmNlTG9hZGVyLT5hdXRvTG9hZEltYWdlcygpKQorICAgIGlmICgh
Y2FjaGVkUmVzb3VyY2VMb2FkZXIgfHwgIWNhY2hlZFJlc291cmNlTG9hZGVyLT5zaG91bGREZWZl
ckltYWdlTG9hZChtX3Jlc291cmNlUmVxdWVzdC51cmwoKSkpCiAgICAgICAgIENhY2hlZFJlc291
cmNlOjpsb2FkKGNhY2hlZFJlc291cmNlTG9hZGVyLCBvcHRpb25zKTsKICAgICBlbHNlCiAgICAg
ICAgIHNldExvYWRpbmcoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZEltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
SW1hZ2UuaAppbmRleCA0ODY1YzdlMjQ2NjViYTYzOWIwZTFhOTZiYzYyNTI2MGQ3M2FkMDFiLi4w
YzQ1MmM0NGFkOThhMDFhOTg5NjlkYmI4MGE5OWU2YTEyNjEyYmUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkSW1hZ2UuaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIHNob3VsZElnbm9yZUhUVFBTdGF0dXNDb2RlRXJyb3JzKCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCBib29sIGlzSW1hZ2UoKSBjb25zdCB7IHJl
dHVybiB0cnVlOyB9Ci0gICAgYm9vbCBzdGlsbE5lZWRzTG9hZCgpIGNvbnN0IHsgcmV0dXJuICFl
cnJvck9jY3VycmVkKCkgJiYgc3RhdHVzKCkgPT0gVW5rbm93biAmJiAhaXNMb2FkaW5nKCk7IH0K
KyAgICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVkc0xvYWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAhZXJyb3JPY2N1cnJlZCgpICYmIHN0YXR1cygpID09IFVua25vd24gJiYgIWlzTG9hZGluZygp
OyB9CiAgICAgdm9pZCBsb2FkKCk7CiAKICAgICAvLyBJbWFnZU9ic2VydmVyCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA4M2JjOGVlZDMw
OTk0N2YyOGJkZTk1NjY4Nzc0NTk3NmQ3ZTM2MWZmLi5jYmM2NTI1MTA2MDE2NDhmODBmNTZlYTBh
NWRjZTc4NjM0NDRjYzMxIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpk
aWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGMpCiAgICAgICAgIG1fY2xpZW50cy5h
ZGQoYyk7CiAgICAgICAgIG1fY2xpZW50c0F3YWl0aW5nQ2FsbGJhY2sucmVtb3ZlKGMpOwogICAg
IH0KLSAgICBpZiAoIWlzTG9hZGluZygpKQorICAgIGlmICghaXNMb2FkaW5nKCkgJiYgIXN0aWxs
TmVlZHNMb2FkKCkpCiAgICAgICAgIGMtPm5vdGlmeUZpbmlzaGVkKHRoaXMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IDBjYWQzZWU3
Y2E0MjgxMmVhYTNlZmU2MDAzMTE2NDQ5ZjdhNjk2YTEuLjdlZGFmZDUwOGRkM2ZlYWJlMGU3ODhj
YWY1ZWQzOTYwNGI2MDBiN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5oCkBAIC0xNDQsNiArMTQ0LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBpc0xv
YWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmc7IH0KICAgICB2b2lkIHNldExvYWRpbmco
Ym9vbCBiKSB7IG1fbG9hZGluZyA9IGI7IH0KKyAgICB2aXJ0dWFsIGJvb2wgc3RpbGxOZWVkc0xv
YWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgU3VicmVzb3VyY2VMb2FkZXIqIGxv
YWRlcigpIHsgcmV0dXJuIG1fbG9hZGVyLmdldCgpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDVmZDdjNTA1
YTExZWQ1ODFkYzRhZWY5NjFmNjFmMWUxYzY2ZDBmODUuLmE0YTM2NjdlZjAwMDQ3Nzk3NDIyZjUw
N2UxYWZhN2I5M2FmZWQyOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtNDYsNiArNDYsNyBAQAogI2luY2x1ZGUg
Ik1lbW9yeUNhY2hlLmgiCiAjaW5jbHVkZSAiUGluZ0xvYWRlci5oIgogI2luY2x1ZGUgIlJlc291
cmNlTG9hZFNjaGVkdWxlci5oIgorI2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0
Zi9VbnVzZWRQYXJhbS5oPgpAQCAtMTE1LDYgKzExNiw3IEBAIENhY2hlZFJlc291cmNlTG9hZGVy
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcihEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgLCBtX3JlcXVl
c3RDb3VudCgwKQogICAgICwgbV9nYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzVGltZXIo
dGhpcywgJkNhY2hlZFJlc291cmNlTG9hZGVyOjpnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3Vy
Y2VzVGltZXJGaXJlZCkKICAgICAsIG1fYXV0b0xvYWRJbWFnZXModHJ1ZSkKKyAgICAsIG1faW1h
Z2VzRW5hYmxlZCh0cnVlKQogICAgICwgbV9hbGxvd1N0YWxlUmVzb3VyY2VzKGZhbHNlKQogewog
fQpAQCAtMTYwLDcgKzE2Miw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZEltYWdlPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdEltYWdlKFJlc291cmNlUmVxCiAgICAgICAgIH0K
ICAgICB9CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkSW1hZ2U+IHJlc291cmNlKHN0
YXRpY19jYXN0PENhY2hlZEltYWdlKj4ocmVxdWVzdFJlc291cmNlKENhY2hlZFJlc291cmNlOjpJ
bWFnZVJlc291cmNlLCByZXF1ZXN0LCBTdHJpbmcoKSwgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0
aW9ucygpKS5nZXQoKSkpOwotICAgIGlmIChhdXRvTG9hZEltYWdlcygpICYmIHJlc291cmNlICYm
IHJlc291cmNlLT5zdGlsbE5lZWRzTG9hZCgpKQorICAgIGlmICghc2hvdWxkRGVmZXJJbWFnZUxv
YWQocmVxdWVzdC51cmwoKSkgJiYgcmVzb3VyY2UgJiYgcmVzb3VyY2UtPnN0aWxsTmVlZHNMb2Fk
KCkpCiAgICAgICAgIHJlc291cmNlLT5sb2FkKHRoaXMsIGRlZmF1bHRDYWNoZWRSZXNvdXJjZU9w
dGlvbnMoKSk7CiAgICAgcmV0dXJuIHJlc291cmNlOwogfQpAQCAtMzYyLDEyICszNjQsNiBAQCBi
b29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNlOjpUeXBl
IHR5cGUsIGNvbnN0IEtVUkwmIHVybAogICAgIGNhc2UgQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVz
b3VyY2U6CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCkt
PmFsbG93SW1hZ2VGcm9tU291cmNlKHVybCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKGZyYW1lKCkpIHsKLSAgICAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9
IGZyYW1lKCktPnNldHRpbmdzKCk7Ci0gICAgICAgICAgICBpZiAoIWZyYW1lKCktPmxvYWRlcigp
LT5jbGllbnQoKS0+YWxsb3dJbWFnZSghc2V0dGluZ3MgfHwgc2V0dGluZ3MtPmFyZUltYWdlc0Vu
YWJsZWQoKSwgdXJsKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDYWNoZWRSZXNvdXJjZTo6Rm9udFJlc291cmNlOiB7
CiAgICAgICAgIGlmICghbV9kb2N1bWVudC0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93
Rm9udEZyb21Tb3VyY2UodXJsKSkKQEAgLTUxNCwxMSArNTEwLDExIEBAIENhY2hlZFJlc291cmNl
TG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWlu
ZVJldmFsaWRhCiB7CiAgICAgaWYgKCFleGlzdGluZ1Jlc291cmNlKQogICAgICAgICByZXR1cm4g
TG9hZDsKLSAgICAKKwogICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIHByZWxvYWQgZ29pbmcgZm9y
IHRoaXMgVVJMLgogICAgIGlmIChmb3JQcmVsb2FkICYmIGV4aXN0aW5nUmVzb3VyY2UtPmlzUHJl
bG9hZGVkKCkpCiAgICAgICAgIHJldHVybiBVc2U7Ci0gICAgCisKICAgICAvLyBJZiB0aGUgc2Ft
ZSBVUkwgaGFzIGJlZW4gbG9hZGVkIGFzIGEgZGlmZmVyZW50IHR5cGUsIHdlIG5lZWQgdG8gcmVs
b2FkLgogICAgIGlmIChleGlzdGluZ1Jlc291cmNlLT50eXBlKCkgIT0gdHlwZSkgewogICAgICAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJl
dmFsaWRhdGlvblBvbGljeSByZWxvYWRpbmcgZHVlIHRvIHR5cGUgbWlzbWF0Y2guIik7CkBAIC01
MzMsNiArNTI5LDExIEBAIENhY2hlZFJlc291cmNlTG9hZGVyOjpSZXZhbGlkYXRpb25Qb2xpY3kg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRldGVybWluZVJldmFsaWRhCiAgICAgLy8gb2YgdGhpbmdz
IGFib3V0IGhvdyByZXZhbGlkYXRpb24gd29ya3MgdGhhdCBtYW51YWwgaGVhZGVycyB2aW9sYXRl
LCBzbyBwdW50IHRvIFJlbG9hZCBpbnN0ZWFkLgogICAgIGlmIChyZXF1ZXN0LmlzQ29uZGl0aW9u
YWwoKSkKICAgICAgICAgcmV0dXJuIFJlbG9hZDsKKworICAgIC8vIERvIG5vdCBsb2FkIGZyb20g
Y2FjaGUgaWYgaW1hZ2VzIGFyZSBub3QgZW5hYmxlZC4gVGhlIGxvYWQgZm9yIHRoaXMgaW1hZ2Ug
d2lsbCBiZSBibG9ja2VkCisgICAgLy8gaW4gcmVxdWVzdEltYWdlLgorICAgIGlmIChleGlzdGlu
Z1Jlc291cmNlLT50eXBlKCkgPT0gQ2FjaGVkUmVzb3VyY2U6OkltYWdlUmVzb3VyY2UgJiYgc2hv
dWxkRGVmZXJJbWFnZUxvYWQoZXhpc3RpbmdSZXNvdXJjZS0+dXJsKCkpKQorICAgICAgICByZXR1
cm4gUmVsb2FkOwogICAgIAogICAgIC8vIERvbid0IHJlbG9hZCByZXNvdXJjZXMgd2hpbGUgcGFz
dGluZy4KICAgICBpZiAobV9hbGxvd1N0YWxlUmVzb3VyY2VzKQpAQCAtNjI5LDEzICs2MzAsMzkg
QEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFi
bGUpCiAgICAgaWYgKCFtX2F1dG9Mb2FkSW1hZ2VzKQogICAgICAgICByZXR1cm47CiAKKyAgICBy
ZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnNldEltYWdlc0VuYWJsZWQoYm9vbCBlbmFibGUpCit7CisgICAgaWYgKGVuYWJsZSA9PSBt
X2ltYWdlc0VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIG1faW1hZ2VzRW5hYmxlZCA9
IGVuYWJsZTsKKworICAgIGlmICghbV9pbWFnZXNFbmFibGVkKQorICAgICAgICByZXR1cm47CisK
KyAgICByZWxvYWRJbWFnZXNJZk5vdERlZmVycmVkKCk7Cit9CisKK2Jvb2wgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnNob3VsZERlZmVySW1hZ2VMb2FkKGNvbnN0IEtVUkwmIHVybCkgY29uc3QKK3sK
KyAgICBpZiAoZnJhbWUoKSAmJiAhZnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5hbGxvd0lt
YWdlKG1faW1hZ2VzRW5hYmxlZCwgdXJsKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBy
ZXR1cm4gIW1fYXV0b0xvYWRJbWFnZXM7Cit9CisKK3ZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6
OnJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKQorewogICAgIERvY3VtZW50UmVzb3VyY2VNYXA6
Oml0ZXJhdG9yIGVuZCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCk7CiAgICAgZm9yIChEb2N1
bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9jdW1lbnRSZXNvdXJjZXMuYmVnaW4o
KTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9
IGl0LT5zZWNvbmQuZ2V0KCk7CiAgICAgICAgIGlmIChyZXNvdXJjZS0+dHlwZSgpID09IENhY2hl
ZFJlc291cmNlOjpJbWFnZVJlc291cmNlKSB7CiAgICAgICAgICAgICBDYWNoZWRJbWFnZSogaW1h
Z2UgPSBjb25zdF9jYXN0PENhY2hlZEltYWdlKj4oc3RhdGljX2Nhc3Q8Y29uc3QgQ2FjaGVkSW1h
Z2UqPihyZXNvdXJjZSkpOwogCi0gICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVlZHNMb2Fk
KCkpCisgICAgICAgICAgICBpZiAoaW1hZ2UtPnN0aWxsTmVlZHNMb2FkKCkgJiYgIXNob3VsZERl
ZmVySW1hZ2VMb2FkKGltYWdlLT51cmwoKSkpCiAgICAgICAgICAgICAgICAgaW1hZ2UtPmxvYWQo
dGhpcywgZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpKTsKICAgICAgICAgfQogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxv
YWRlci5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmgKaW5kZXggZjQ3NTVjMjJmZDhkMmYxYzJhMGU4ZTZkYTgyZTdmOWI1MjNhMTlmYi4uNTc4MTEz
MGJjNzcwZjM1MjZiNDkwOGM3NDJjM2NjZmRkNWFlNTRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmgKQEAgLTk3LDYgKzk3LDEx
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgYXV0b0xvYWRJbWFnZXMoKSBjb25zdCB7IHJldHVybiBt
X2F1dG9Mb2FkSW1hZ2VzOyB9CiAgICAgdm9pZCBzZXRBdXRvTG9hZEltYWdlcyhib29sKTsKKwor
ICAgIGJvb2wgaW1hZ2VzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2VzRW5hYmxlZDsg
fQorICAgIHZvaWQgc2V0SW1hZ2VzRW5hYmxlZChib29sKTsKKworICAgIGJvb2wgc2hvdWxkRGVm
ZXJJbWFnZUxvYWQoY29uc3QgS1VSTCYpIGNvbnN0OwogICAgIAogICAgIENhY2hlUG9saWN5IGNh
Y2hlUG9saWN5KCkgY29uc3Q7CiAgICAgCkBAIC0xMzUsNiArMTQwLDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgZ2FyYmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlc1RpbWVyRmlyZWQoVGltZXI8
Q2FjaGVkUmVzb3VyY2VMb2FkZXI+Kik7CiAgICAgdm9pZCBwZXJmb3JtUG9zdExvYWRBY3Rpb25z
KCk7CisKKyAgICB2b2lkIHJlbG9hZEltYWdlc0lmTm90RGVmZXJyZWQoKTsKICAgICAKICAgICBI
YXNoU2V0PFN0cmluZz4gbV92YWxpZGF0ZWRVUkxzOwogICAgIG11dGFibGUgRG9jdW1lbnRSZXNv
dXJjZU1hcCBtX2RvY3VtZW50UmVzb3VyY2VzOwpAQCAtMTUyLDggKzE1OSw5IEBAIHByaXZhdGU6
CiAKICAgICBUaW1lcjxDYWNoZWRSZXNvdXJjZUxvYWRlcj4gbV9nYXJiYWdlQ29sbGVjdERvY3Vt
ZW50UmVzb3VyY2VzVGltZXI7CiAKLSAgICAvLyAzMCBiaXRzIGxlZnQKKyAgICAvLyAyOSBiaXRz
IGxlZnQKICAgICBib29sIG1fYXV0b0xvYWRJbWFnZXMgOiAxOworICAgIGJvb2wgbV9pbWFnZXNF
bmFibGVkIDogMTsKICAgICBib29sIG1fYWxsb3dTdGFsZVJlc291cmNlcyA6IDE7CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IGYyNTE1MGI1MTZjMzk2NTM1YzM4YmVmY2EzY2Iy
YTJhNjhmZWVhMGYuLjdlMDUzZjFmMWUxYmMxMmQ1Yjc1NTVjMzdhNDQ1NGI5NTQ2MmY1NzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC00NiwxMCArNDYsMTIgQEAgdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBzZXRMb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhQYWdlKiBwYWdlKQorc3RhdGljIHZvaWQgc2V0
SW1hZ2VMb2FkaW5nU2V0dGluZ3MoUGFnZSogcGFnZSkKIHsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHQoKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0SW1hZ2VzRW5hYmxl
ZChwYWdlLT5zZXR0aW5ncygpLT5hcmVJbWFnZXNFbmFibGVkKCkpOwogICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFnZXMocGFn
ZS0+c2V0dGluZ3MoKS0+bG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworICAgIH0KIH0KIAog
Ly8gU2V0cyB0aGUgZW50cnkgaW4gdGhlIGZvbnQgbWFwIGZvciB0aGUgZ2l2ZW4gc2NyaXB0LiBJ
ZiBmYW1pbHkgaXMgdGhlIGVtcHR5IHN0cmluZywgcmVtb3ZlcyB0aGUgZW50cnkgaW5zdGVhZC4K
QEAgLTI4Niw3ICsyODgsNyBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAs
IG1fd2luZG93Rm9jdXNSZXN0cmljdGVkKHRydWUpCiAgICAgLCBtX2RpYWdub3N0aWNMb2dnaW5n
RW5hYmxlZChmYWxzZSkKICAgICAsIG1fc2Nyb2xsaW5nUGVyZm9ybWFuY2VMb2dnaW5nRW5hYmxl
ZChmYWxzZSkKLSAgICAsIG1fbG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5VGltZXIodGhpcywgJlNl
dHRpbmdzOjpsb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKQorICAgICwgbV9zZXRJ
bWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyKHRoaXMsICZTZXR0aW5nczo6aW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lckZpcmVkKQogICAgICwgbV9pbmNyZW1lbnRhbFJlbmRlcmluZ1N1cHByZXNzaW9u
VGltZW91dEluU2Vjb25kcyhkZWZhdWx0SW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRp
bWVvdXRJblNlY29uZHMpCiB7CiAgICAgLy8gQSBGcmFtZSBtYXkgbm90IGhhdmUgYmVlbiBjcmVh
dGVkIHlldCwgc28gd2UgaW5pdGlhbGl6ZSB0aGUgQXRvbWljU3RyaW5nCkBAIC00NTIsMTIgKzQ1
NCwxMiBAQCB2b2lkIFNldHRpbmdzOjpzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoYm9vbCBs
b2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkpCiAgICAgLy8gU3RhcnRpbmcgdGhlc2UgbG9hZHMgc3lu
Y2hyb25vdXNseSBpcyBub3QgaW1wb3J0YW50LiAgQnkgcHV0dGluZyBpdCBvbiBhIDAtZGVsYXks
IHByb3Blcmx5IGNsb3NpbmcgdGhlIFBhZ2UgY2FuY2VscyB0aGVtCiAgICAgLy8gYmVmb3JlIHRo
ZXkgaGF2ZSBhIGNoYW5jZSB0byByZWFsbHkgc3RhcnQuCiAgICAgLy8gU2VlIGh0dHA6Ly93ZWJr
aXQub3JnL2IvNjA1NzIgZm9yIG1vcmUgZGlzY3Vzc2lvbi4KLSAgICBtX2xvYWRzSW1hZ2VzQXV0
b21hdGljYWxseVRpbWVyLnN0YXJ0T25lU2hvdCgwKTsKKyAgICBtX3NldEltYWdlTG9hZGluZ1Nl
dHRpbmdzVGltZXIuc3RhcnRPbmVTaG90KDApOwogfQogCi12b2lkIFNldHRpbmdzOjpsb2Fkc0lt
YWdlc0F1dG9tYXRpY2FsbHlUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopCit2b2lkIFNldHRp
bmdzOjppbWFnZUxvYWRpbmdTZXR0aW5nc1RpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+KikKIHsK
LSAgICBzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHlJbkFsbEZyYW1lcyhtX3BhZ2UpOworICAg
IHNldEltYWdlTG9hZGluZ1NldHRpbmdzKG1fcGFnZSk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNl
dExvYWRzU2l0ZUljb25zSWdub3JpbmdJbWFnZUxvYWRpbmdTZXR0aW5nKGJvb2wgbG9hZHNTaXRl
SWNvbnMpCkBAIC01MDMsNiArNTA1LDkgQEAgdm9pZCBTZXR0aW5nczo6c2V0SmF2YUVuYWJsZWRG
b3JMb2NhbEZpbGVzKGJvb2wgaXNKYXZhRW5hYmxlZEZvckxvY2FsRmlsZXMpCiB2b2lkIFNldHRp
bmdzOjpzZXRJbWFnZXNFbmFibGVkKGJvb2wgYXJlSW1hZ2VzRW5hYmxlZCkKIHsKICAgICBtX2Fy
ZUltYWdlc0VuYWJsZWQgPSBhcmVJbWFnZXNFbmFibGVkOworCisgICAgLy8gU2VlIGNvbW1lbnQg
aW4gc2V0TG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5LgorICAgIG1fc2V0SW1hZ2VMb2FkaW5nU2V0
dGluZ3NUaW1lci5zdGFydE9uZVNob3QoMCk7CiB9CiAKIHZvaWQgU2V0dGluZ3M6OnNldE1lZGlh
RW5hYmxlZChib29sIGlzTWVkaWFFbmFibGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCmluZGV4IDk2
ODFlMjdlMGFlMjY1NTcyYzIxNGI0OTYyZDg2MjA4NDQzODdlNzcuLjQ1ZDFjYzFlZjBjOWJjNGYx
Zjg4MjM4OTQ0M2MwNDZhZjUxMDVlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKQEAgLTgwMCw4
ICs4MDAsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgYm9vbCBtX3Njcm9sbGlu
Z1BlcmZvcm1hbmNlTG9nZ2luZ0VuYWJsZWQgOiAxOwogCi0gICAgICAgIFRpbWVyPFNldHRpbmdz
PiBtX2xvYWRzSW1hZ2VzQXV0b21hdGljYWxseVRpbWVyOwotICAgICAgICB2b2lkIGxvYWRzSW1h
Z2VzQXV0b21hdGljYWxseVRpbWVyRmlyZWQoVGltZXI8U2V0dGluZ3M+Kik7CisgICAgICAgIFRp
bWVyPFNldHRpbmdzPiBtX3NldEltYWdlTG9hZGluZ1NldHRpbmdzVGltZXI7CisgICAgICAgIHZv
aWQgaW1hZ2VMb2FkaW5nU2V0dGluZ3NUaW1lckZpcmVkKFRpbWVyPFNldHRpbmdzPiopOwogICAg
ICAgICAKICAgICAgICAgZG91YmxlIG1faW5jcmVtZW50YWxSZW5kZXJpbmdTdXBwcmVzc2lvblRp
bWVvdXRJblNlY29uZHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50
ZXJuYWxTZXR0aW5ncy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGlu
Z3MuY3BwCmluZGV4IDcxMDhkOWNjNTU4NWMyZmZhNmY0YWEyN2ZmOTYwYjkyZGQzMjQ2OTcuLjY0
YmEyZWEwNGNhMjA4ZDA3YjI4ZWQwNDI4NGVjYjkwYTU0MWI4ZjggMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmNwcApAQCAtMTAyLDYgKzEwMiw3IEBAIEludGVy
bmFsU2V0dGluZ3M6OkJhY2t1cDo6QmFja3VwKFBhZ2UqIHBhZ2UsIFNldHRpbmdzKiBzZXR0aW5n
cykKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHdvcmthcm91bmQgZm9yIEFwcGxlIFdpbmRvd3Mg
Y3Jhc2guCiAgICAgLCBtX2xhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKFJ1
bnRpbWVFbmFibGVkRmVhdHVyZXM6OmxhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFi
bGVkKCkpCiAjZW5kaWYKKyAgICAsIG1faW1hZ2VzRW5hYmxlZChzZXR0aW5ncy0+YXJlSW1hZ2Vz
RW5hYmxlZCgpKQogewogfQogCkBAIC0xMzgsNiArMTM5LDcgQEAgdm9pZCBJbnRlcm5hbFNldHRp
bmdzOjpCYWNrdXA6OnJlc3RvcmVUbyhQYWdlKiBwYWdlLCBTZXR0aW5ncyogc2V0dGluZ3MpCiAj
aWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRV9NVUxUSVBMRV9GSUVMRFMpCiAgICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9ybUNvbnRyb2xVSUVuYWJsZWQo
bV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5hYmxlZCk7CiAjZW5kaWYKKyAgICBz
ZXR0aW5ncy0+c2V0SW1hZ2VzRW5hYmxlZChtX2ltYWdlc0VuYWJsZWQpOwogfQogCiBJbnRlcm5h
bFNldHRpbmdzKiBJbnRlcm5hbFNldHRpbmdzOjpmcm9tKFBhZ2UqIHBhZ2UpCkBAIC02NjAsNCAr
NjYyLDEwIEBAIHZvaWQgSW50ZXJuYWxTZXR0aW5nczo6c2V0TGFuZ0F0dHJpYnV0ZUF3YXJlRm9y
bUNvbnRyb2xVSUVuYWJsZWQoYm9vbCBlbmFibGVkKQogI2VuZGlmCiB9CiAKK3ZvaWQgSW50ZXJu
YWxTZXR0aW5nczo6c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQoreworICAgIEludGVybmFsU2V0dGluZ3NHdWFyZEZvclNldHRpbmdzKCk7CisgICAgc2V0
dGluZ3MoKS0+c2V0SW1hZ2VzRW5hYmxlZChlbmFibGVkKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmggYi9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaAppbmRleCAyZTg2MmIxYWI4ZDE1ODIyMjNmNDMz
NWE4MTFiNjM4NjAyZmNhYTFiLi5jODcyMmE0MWE3M2UwMzMzYzVkMjZhZGQ4MjVhMTMyYzY0ZTdl
Y2I0IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3Mu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaApAQCAtODMs
NiArODMsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKElOUFVUX1RZUEVfVElNRV9NVUxUSVBMRV9G
SUVMRFMpCiAgICAgICAgIGJvb2wgbV9sYW5nQXR0cmlidXRlQXdhcmVGb3JtQ29udHJvbFVJRW5h
YmxlZDsKICNlbmRpZgorICAgICAgICBib29sIG1faW1hZ2VzRW5hYmxlZDsKICAgICB9OwogCiAg
ICAgdHlwZWRlZiBSZWZDb3VudGVkU3VwcGxlbWVudDxQYWdlLCBJbnRlcm5hbFNldHRpbmdzPiBT
dXBlclR5cGU7CkBAIC0xNDcsNiArMTQ4LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0TWVtb3J5
SW5mb0VuYWJsZWQoYm9vbCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0U3RvcmFnZUJs
b2NraW5nUG9saWN5KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNl
dExhbmdBdHRyaWJ1dGVBd2FyZUZvcm1Db250cm9sVUlFbmFibGVkKGJvb2wpOworICAgIHZvaWQg
c2V0SW1hZ2VzRW5hYmxlZChib29sIGVuYWJsZWQsIEV4Y2VwdGlvbkNvZGUmKTsKKwogcHJpdmF0
ZToKICAgICBleHBsaWNpdCBJbnRlcm5hbFNldHRpbmdzKFBhZ2UqKTsKICAgICB2aXJ0dWFsIHZv
aWQgaG9zdERlc3Ryb3llZCgpIE9WRVJSSURFIHsgbV9wYWdlID0gMDsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRpbmdzLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxTZXR0aW5ncy5pZGwKaW5kZXggOGY5N2Y4OWZmZGY3ZDUxZTA3
YjU2ODA5NWJkYmU0OTk0MDMwNzUyNC4uYzc0NTVmZTE2NDE0MGU0ODQ2NDcxNjhjZDBhNDdiODgw
MWJiM2VhYSAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbFNldHRp
bmdzLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFsU2V0dGluZ3MuaWRs
CkBAIC04MSw2ICs4MSw3IEBAIG1vZHVsZSB3aW5kb3cgewogI2VuZGlmCiAgICAgICAgIHZvaWQg
c2V0TWVtb3J5SW5mb0VuYWJsZWQoaW4gYm9vbGVhbiBlbmFibGVkKSByYWlzZXMoRE9NRXhjZXB0
aW9uKTsKICAgICAgICAgdm9pZCBzZXRTdG9yYWdlQmxvY2tpbmdQb2xpY3koaW4gRE9NU3RyaW5n
IHBvbGljeSkgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgICAgIHZvaWQgc2V0SW1hZ2VzRW5h
YmxlZChpbiBib29sZWFuIGVuYWJsZWQpIHJhaXNlcyhET01FeGNlcHRpb24pOwogICAgIH07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL3dpbi9XZWJLaXQyLmRlZiBiL1NvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyLmRlZgppbmRleCBhYTNiYWMwMTU5OTYxYWMzZGY3Y2NjZTFhODU0
ZDBhNzIyMzg5NWJmLi5kNjEyODhkZDRjMTk2NWU1M2MzNjNhMTE2YjZkMjQ1ZmEwZDgwOGFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5kZWYKKysrIGIvU291cmNlL1dl
YktpdDIvd2luL1dlYktpdDIuZGVmCkBAIC0yMjMsNiArMjIzLDcgQEAgRVhQT1JUUwogICAgICAg
ICA/c2V0RE9NRXhjZXB0aW9uQFdlYkNvcmVAQFlBWFBBVkV4ZWNTdGF0ZUBKU0NAQEhAWgogICAg
ICAgICA/c2V0RmFudGFzeUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21p
Y1N0cmluZ0BXVEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXRGaXhlZEZvbnRGYW1p
bHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BXVEZAQFc0VVNjcmlwdENv
ZGVAQEBaCisgICAgICAgID9zZXRJbWFnZXNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVAQFFBRVhf
TkBaCiAgICAgICAgID9zZXRNb2NrU2Nyb2xsYmFyc0VuYWJsZWRAU2V0dGluZ3NAV2ViQ29yZUBA
U0FYX05AWgogICAgICAgICA/bW9ja1Njcm9sbGJhcnNFbmFibGVkQFNldHRpbmdzQFdlYkNvcmVA
QFNBX05YWgogICAgICAgICA/c2V0UGFnZVNjYWxlRmFjdG9yQFBhZ2VAV2ViQ29yZUBAUUFFWE1B
QlZJbnRQb2ludEAyQEBaCmRpZmYgLS1naXQgYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmls
dGVyIGIvU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgppbmRleCA3ZmQ2MTJiZThjOTAy
YmQxODdmMzE4MjBiMzk2NTI5ZWFmMDAzYzQ5Li4wMzFjZDdmYjJjMWRiN2RkZWYxYzhkMjI1YjE3
NzYxZjQ5ZDY0ZDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvYXV0b3Rvb2xzL3N5bWJvbHMuZmlsdGVy
CisrKyBiL1NvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIKQEAgLTE0NSw2ICsxNDUsNyBA
QCBfWk43V2ViQ29yZTE0U2Nyb2xsYWJsZUFyZWEyOHNldFNjcm9sbE9mZnNldEZyb21JbnRlcm5h
bHNFUktOU184SW50UG9pbnRFOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyM3NldFNjcm9sbGJh
cnNTdXBwcmVzc2VkRWJiOwogX1pON1dlYkNvcmUxMFNjcm9sbFZpZXcyMXNldERlbGVnYXRlc1Nj
cm9sbGluZ0ViOwogX1pON1dlYkNvcmU0Tm9kZTE0cmVtb3ZlZExhc3RSZWZFdjsKK19aTjdXZWJD
b3JlOFNldHRpbmdzMTZzZXRJbWFnZXNFbmFibGVkRWI7CiBfWk43V2ViQ29yZThTZXR0aW5nczE4
c2V0Rml4ZWRGb250RmFtaWx5RVJLTjNXVEYxMkF0b21pY1N0cmluZ0UxMVVTY3JpcHRDb2RlOwog
X1pON1dlYkNvcmU4U2V0dGluZ3MxOHNldFNlcmlmRm9udEZhbWlseUVSS04zV1RGMTJBdG9taWNT
dHJpbmdFMTFVU2NyaXB0Q29kZTsKIF9aTjdXZWJDb3JlOFNldHRpbmdzMjBzZXRDdXJzaXZlRm9u
dEZhbWlseUVSS04zV1RGMTJBdG9taWNTdHJpbmdFMTFVU2NyaXB0Q29kZTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3MDc5
YjJkMmQ0MjMxNzczNTc0YTk3NGQwYWM2ZjE1NjBiNDIwYmI5Li5iNWI2ZjNlN2FiZTY3YmVjOTM0
NTg3ZTc0NGE4YzEyOTU4OTBmMDVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDktMTMg
IEJvIExpdSAgPGJvbGl1QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW4tcGxhY2UgcmVs
b2FkIGJlaGF2aW9yIHRvIEltYWdlc0VuYWJsZWQgc2V0dGluZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBBZGQgdGVzdHMg
dG8gY2hlY2sgYXV0b0xvYWRJbWFnZXMgYW5kIGltYWdlc0VuYWJsZWQgY2FuIGJsb2NrCisgICAg
ICAgIGltYWdlcyBhbmQgY2FuIHJlbG9hZCB0aGVtIGluIHBsYWNlIHdoZW4gc2V0dGluZyBpcyBz
ZXQgdG8gdW5ibG9jay4KKworICAgICAgICBpbWFnZS1wZXJtaXNzaW9ucyB0ZXN0cyBhcmUgdXBk
YXRlZCB0byByZWZsZWN0IHRoYXQgb25lcnJvciB3aWxsIG5vCisgICAgICAgIGxvbmdlciBiZSBj
YWxsZWQgd2hlbiBpbWFnZXMgYXJlIGJsb2NrZWQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0
LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVyL2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2Nr
LWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbG9hZGVy
L2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3Rz
L3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2UtcGVybWlzc2lvbnMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9w
ZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sOgorCiAyMDEyLTA5LTE0ICBEYXZp
ZCBHcm9nYW4gIDxkZ3JvZ2FuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBJbmRleGVkREI6IFBy
aW50IGNvbnNvbGUgd2FybmluZyBhYm91dCBzZXRWZXJzaW9uCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQt
Y2FuLXJlbG9hZC1pbi1wbGFjZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9hZC1pbi1w
bGFjZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2E5ZWY1MzQ3OWI4YjVhYTRiNDY0ZjY1N2Yy
YWNmN2U1YmI0NDdkMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbG9hZGVy
L2Rpc3BsYXktaW1hZ2UtdW5zZXQtY2FuLWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBs
YWNlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rlc3QgdGhhdCBEaXNwbGF5SW1hZ2Vz
IGRpc2FibGVkIGNhbiBibG9jayBodHRwIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxh
Y2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2xvYWRlci9kaXNwbGF5LWltYWdlLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJlbG9h
ZC1pbi1wbGFjZS5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11
bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4zMTJmNTA5ZDU0M2I3YTVhN2Q0N2QxOTFiNzg4NjYzZTZkMjYxOTc3Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvZGlzcGxheS1pbWFnZS11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8vIFNldHRpbmcgV2ViS2l0RGlzcGxheUltYWdl
c0tleSBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVsb2FkIGFuZCBzZXRJbnRlcnZh
bCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRha2UgZWZmZWN0LgorCit2YXIg
aW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsKKworaWYgKHdpbmRvdy50ZXN0
UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgd2luZG93LmludGVy
bmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFibGVkKHRydWUpOworICAgIHRlc3RSdW5uZXIub3Zl
cnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMCk7CisgICAgdGVzdFJ1
bm5lci5xdWV1ZVJlbG9hZCgpOworfQorCitmdW5jdGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIg
aW1hZ2UgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW1hZ2UnKTsKKyAgICBpZiAoaW1hZ2Uu
bmF0dXJhbEhlaWdodCAhPSAwIHx8IGltYWdlLm5hdHVyYWxXaWR0aCAhPSAwIHx8IGltYWdlT25s
b2FkRmlyZWQgIT0gMCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gJ0ZBSUxVUkU6IEltYWdlIHNob3VsZCBub3QgYmUgbG9hZGVkIHdoZW4g
RGlzcGxheUltYWdlIGlzIHVuc2V0JzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHRl
c3RSdW5uZXIub3ZlcnJpZGVQcmVmZXJlbmNlKCdXZWJLaXREaXNwbGF5SW1hZ2VzS2V5JywgMSk7
CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlM
VVJFOiBJbWFnZSBzaG91bGQgcmVsb2FkIGluLXBsYWNlIHdoZW4gRGlzcGFseUltYWdlIGlzIGNo
YW5nZXMgZnJvbSB1bnNldCB0byBzZXQnOworICAgIHRlc3RSdW5uZXIud2FpdFVudGlsRG9uZSgp
OworICAgIGludGVydmFsSWQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwocnVuVGVzdFJlc3QsIDEwKTsK
K30KKworZnVuY3Rpb24gcnVuVGVzdFJlc3QoKQoreworICAgIHZhciBpbWFnZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdpbWFnZScpOworICAgIGlmIChpbWFnZS5uYXR1cmFsSGVpZ2h0ID09
IDMzICYmIGltYWdlLm5hdHVyYWxXaWR0aCA9PSAzNyAmJiBpbWFnZU9ubG9hZEZpcmVkID09IDEp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
ICdTVUNDRVNTJzsKKyAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxJZCk7Cisg
ICAgICAgIHRlc3RSdW5uZXIubm90aWZ5RG9uZSgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorICBUZXN0IHRoYXQgRGlzcGxheUltYWdl
cyBkaXNhYmxlZCBjYW4gYmxvY2sgaHR0cCBpbWFnZSBhbmQgY2FuIGJlIHJlbG9hZGVkIGluLXBs
YWNlIHdoZW4gdG9nZ2xlZC4KKyAgPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJFOiBUZXN0IHNjcmlw
dCBkaWRuJ3QgcnVuLjwvZGl2PgorICA8aW1nIGlkPSJpbWFnZSIgc3JjPSIuLi9pbWFnZXMvcmVz
b3VyY2VzL292YWwucG5nIiBvbmxvYWQ9ImltYWdlT25sb2FkRmlyZWQ9MTsiPgorPC9ib2R5Pgor
PC9odG1sPgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5h
YmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi45NTFkNDYwMWNjYzNjYTE4ZDhjZmQ1YTk2OTc4MTExZmZiMGM2MDIwCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9sb2FkZXIvaW1hZ2VzLWVuYWJsZWQtdW5zZXQtY2Fu
LWJsb2NrLWltYWdlLWFuZC1jYW4tcmVsb2FkLWluLXBsYWNlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDMgQEAKK1Rlc3QgdGhhdCBFbmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFu
ZCBjYW4gYmUgcmVsb2FkZWQgaW4tcGxhY2Ugd2hlbiB0b2dnbGVkLgorU1VDQ0VTUworCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2xvYWRlci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4t
YmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4tcGxhY2UuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbG9hZGVyL2ltYWdlcy1lbmFibGVkLXVuc2V0LWNhbi1ibG9jay1pbWFnZS1hbmQtY2FuLXJl
bG9hZC1pbi1wbGFjZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmNDhlNjI4ZGRkNjBkNWJhZmEyYjE0ZjA4
MzYwYjRiNmU2YTY2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2xvYWRl
ci9pbWFnZXMtZW5hYmxlZC11bnNldC1jYW4tYmxvY2staW1hZ2UtYW5kLWNhbi1yZWxvYWQtaW4t
cGxhY2UuaHRtbApAQCAtMCwwICsxLDQ3IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdD4KKy8v
IFNldHRpbmcgSW1hZ2VzRW5hYmxlZCBpcyBhc3luY2hyb25vdXMsIHNvIHVzaW5nIHF1ZXVlUmVs
b2FkIGFuZCBzZXRJbnRlcnZhbCB0byBjaGVjayB3aGVuIHRoZSBzZXR0aW5nIGFjdHVhbGx5IHRh
a2UgZWZmZWN0LgorCit2YXIgaW50ZXJ2YWxJZDsKK3ZhciBpbWFnZU9ubG9hZEZpcmVkID0gMDsK
KworaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZlcmVuY2UoJ1dlYktpdERpc3BsYXlJbWFnZXNL
ZXknLCAxKTsKKyAgICB3aW5kb3cuaW50ZXJuYWxzLnNldHRpbmdzLnNldEltYWdlc0VuYWJsZWQo
ZmFsc2UpOworICAgIHRlc3RSdW5uZXIucXVldWVSZWxvYWQoKTsKK30KKworZnVuY3Rpb24gcnVu
VGVzdCgpCit7CisgICAgdmFyIGltYWdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdl
Jyk7CisgICAgaWYgKGltYWdlLm5hdHVyYWxIZWlnaHQgIT0gMCB8fCBpbWFnZS5uYXR1cmFsV2lk
dGggIT0gMCB8fCBpbWFnZU9ubG9hZEZpcmVkICE9IDApIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdGQUlMVVJFOiBJbWFnZSBzaG91bGQg
bm90IGJlIGxvYWRlZCB3aGVuIEltYWdlc0VuYWJsZWQgaXMgdW5zZXQnOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgd2luZG93LmludGVybmFscy5zZXR0aW5ncy5zZXRJbWFnZXNFbmFi
bGVkKHRydWUpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhU
TUwgPSAnRkFJTFVSRTogSW1hZ2Ugc2hvdWxkIHJlbG9hZCBpbi1wbGFjZSB3aGVuIEltYWdlc0Vu
YWJsZWQgaXMgY2hhbmdlcyBmcm9tIHVuc2V0IHRvIHNldCc7CisgICAgdGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7CisgICAgaW50ZXJ2YWxJZCA9IHdpbmRvdy5zZXRJbnRlcnZhbChydW5UZXN0
UmVzdCwgMTApOworfQorCitmdW5jdGlvbiBydW5UZXN0UmVzdCgpCit7CisgICAgdmFyIGltYWdl
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2ltYWdlJyk7CisgICAgaWYgKGltYWdlLm5hdHVy
YWxIZWlnaHQgPT0gMzMgJiYgaW1hZ2UubmF0dXJhbFdpZHRoID09IDM3IHx8IGltYWdlT25sb2Fk
RmlyZWQgPT0gMSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyku
aW5uZXJIVE1MID0gJ1NVQ0NFU1MnOworICAgICAgICB3aW5kb3cuY2xlYXJJbnRlcnZhbChpbnRl
cnZhbElkKTsKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7CisgICAgfQorfQorPC9z
Y3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CisgIFRlc3QgdGhhdCBF
bmFibGVJbWFnZXMgdW5zZXQgY2FuIGJsb2NrIGltYWdlIGFuZCBjYW4gYmUgcmVsb2FkZWQgaW4t
cGxhY2Ugd2hlbiB0b2dnbGVkLgorICA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU6IFRlc3Qgc2Ny
aXB0IGRpZG4ndCBydW4uPC9kaXY+CisgIDxpbWcgaWQ9ImltYWdlIiBzcmM9Ii4uL2ltYWdlcy9y
ZXNvdXJjZXMvb3ZhbC5wbmciIG9ubG9hZD0iaW1hZ2VPbmxvYWRGaXJlZD0xOyI+Cis8L2JvZHk+
Cis8L2h0bWw+CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0
dHAvdGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9odHRwL3Rlc3RzL3Blcm1pc3Npb25jbGll
bnQvaW1hZ2UtcGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0CmluZGV4IDVjY2FjNGFiZWY0YTg2YjI2
MDk1ZmQ2MmFlZmY3NTA5ZWM4MjBjM2UuLmU3Y2FhOWFmNjIzYTllZDI0MDk5NzI3MjZiZWEyODBi
ZDRiMWYzYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2h0dHAv
dGVzdHMvcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaHR0cC90ZXN0cy9wZXJtaXNzaW9uY2xp
ZW50L2ltYWdlLXBlcm1pc3Npb25zLWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDUgQEAKIFBFUk1J
U1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKGh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wZXJtaXNzaW9u
Y2xpZW50L3Jlc291cmNlcy9yZWRpci5waHA/dXJsPWh0dHA6Ly8xMjcuMC4wLjE6ODAwMC9wZXJt
aXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogdHJ1ZQorUEVSTUlTU0lPTiBDTElF
TlQ6IGFsbG93SW1hZ2UoaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Blcm1pc3Npb25jbGllbnQvcmVz
b3VyY2VzL3JlZGlyLnBocD91cmw9aHR0cDovLzEyNy4wLjAuMTo4MDAwL3Blcm1pc3Npb25jbGll
bnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiB0cnVlCiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJ
bWFnZShodHRwOi8vMTI3LjAuMC4xOjgwMDAvcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9z
dG9uLmdpZik6IHRydWUKIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBhbGwgVVJMcyBpbiBhIHJlZGly
ZWN0IGNoYWluIGFyZSBwYXNzZWQgdG8gdGhlIFBlcm1pc3Npb25DbGllbnQuCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvaW1hZ2Ut
cGVybWlzc2lvbnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKaW5kZXggNjBl
NzZhNTIzYWRmMjY0NDY1MzM1ODI5NmY3Y2I5ZWI0MzhkM2Y5Zi4uMTgxZGM4MTA3NzM5ZTVmZDlm
NTAzZGJiZGM3ZTcwMmQ5YzUwMWQ2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFn
ZS1wZXJtaXNzaW9ucy1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsMTQgQEAKIFBFUk1JU1NJT04g
Q0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Np
b25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiB0cnVlCitQRVJNSVNTSU9OIENMSUVOVDog
YWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50
L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogdHJ1ZQorUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1h
Z2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJj
ZXMvYm9zdG9uLmdpZj9ub2NhY2hlKTogZmFsc2UKIFBFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0lt
YWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3Vy
Y2VzL2Jvc3Rvbi5naWY/bm9jYWNoZSk6IGZhbHNlCiBQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJ
bWFnZSgoZmlsZSB0ZXN0KTpwbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291
cmNlcy9ib3N0b24uZ2lmKTogZmFsc2UKIFBFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChm
aWxlIHRlc3QpOnBsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jv
c3Rvbi5naWYpOiBmYWxzZQorUEVSTUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVz
dCk6cGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdp
Zik6IGZhbHNlCitQRVJNSVNTSU9OIENMSUVOVDogYWxsb3dJbWFnZSgoZmlsZSB0ZXN0KTpwbGF0
Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmKTogZmFs
c2UKK1BFUk1JU1NJT04gQ0xJRU5UOiBhbGxvd0ltYWdlKChmaWxlIHRlc3QpOnBsYXRmb3JtL2No
cm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2Jvc3Rvbi5naWYpOiBmYWxzZQorUEVS
TUlTU0lPTiBDTElFTlQ6IGFsbG93SW1hZ2UoKGZpbGUgdGVzdCk6cGxhdGZvcm0vY2hyb21pdW0v
cGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvYm9zdG9uLmdpZik6IGZhbHNlCiAKIAogUEFTUzog
Zmlyc3QgaW1hZ2UgbG9hZGVkCi1QQVNTOiBlcnJvciBldmVudCBmb3Igbm90IGNhY2hlZCBpbWFn
ZQotUEFTUzogZXJyb3IgZXZlbnQgZm9yIGltYWdlIGZyb20gY2FjaGUKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNsaWVudC9pbWFnZS1wZXJt
aXNzaW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vcGVybWlzc2lvbmNs
aWVudC9pbWFnZS1wZXJtaXNzaW9ucy5odG1sCmluZGV4IDdiNWUyYzU3NWM5ODk3NGFjMDhmODdl
OWY4YzEyMDcxMGFkYmZlZjAuLmY1N2EzYjcwNzA0MzMwOWMyZmFiMmZmOTJjM2U5ZTJjNmU0MTk2
NDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25j
bGllbnQvaW1hZ2UtcGVybWlzc2lvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9wZXJtaXNzaW9uY2xpZW50L2ltYWdlLXBlcm1pc3Npb25zLmh0bWwKQEAgLTEsNiAr
MSw5IEBACiA8aHRtbD4KIDxoZWFkPgogPHNjcmlwdD4KKy8vIEJsb2NrZWQgaW1hZ2VzIGNhbiBi
ZSByZWxvYWRlZCwgc28gbmVpdGhlciBvbmxvYWQgbm9yIG9uZXJyb3IgaXMgY2FsbGVkLgorLy8g
T25seSBjaGVjayBoZXJlIHRoYXQgb25sb2FkIGlzIG5ldmVyIGNhbGxlZCB3aGVuIGltYWdlIGlz
IGJsb2NrZWQuCisKIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVt
cEFzVGV4dCgpOwogICAgIHRlc3RSdW5uZXIuZHVtcFBlcm1pc3Npb25DbGllbnRDYWxsYmFja3Mo
KTsKQEAgLTIxLDE0ICsyNCwxMiBAQCBmdW5jdGlvbiBsb2FkZWQoKQogCiAgICAgLy8gTG9hZCBh
biBpbWFnZSBub3QgaW4gY2FjaGUuCiAgICAgdmFyIGltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2ltZycpOwotICAgIGltZy5vbmVycm9yID0gZnVuY3Rpb24gKCkgeyBsb2coIlBBU1M6IGVy
cm9yIGV2ZW50IGZvciBub3QgY2FjaGVkIGltYWdlIik7IH0KICAgICBpbWcub25sb2FkID0gZnVu
Y3Rpb24gKCkgeyBsb2coIkZBSUw6IG5vdCBjYWNoZWQgaW1hZ2UgbG9hZGVkIik7IH0KICAgICBp
bWcuc3JjID0gInJlc291cmNlcy9ib3N0b24uZ2lmP25vY2FjaGUiOwogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJpbWciKS5hcHBlbmRDaGlsZChpbWcpOwogCiAgICAgLy8gTG9hZCBhbiBp
bWFnZSBmcm9tIGNhY2hlLgogICAgIHZhciBpbWdGcm9tQ2FjaGUgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCdpbWcnKTsKLSAgICBpbWdGcm9tQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uICgpIHsg
bG9nKCJQQVNTOiBlcnJvciBldmVudCBmb3IgaW1hZ2UgZnJvbSBjYWNoZSIpOyB9CiAgICAgaW1n
RnJvbUNhY2hlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsgbG9nKCJGQUlMOiBpbWFnZSBmcm9tIGNh
Y2hlIGxvYWRlZCIpOyB9CiAgICAgaW1nRnJvbUNhY2hlLnNyYyA9ICJyZXNvdXJjZXMvYm9zdG9u
LmdpZiI7CiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImltZyIpLmFwcGVuZENoaWxkKGlt
Z0Zyb21DYWNoZSk7CkBAIC00MSw3ICs0Miw3IEBAIGZ1bmN0aW9uIGxvYWRlZCgpCiA8L3Njcmlw
dD4KIDwvaGVhZD4KIDxib2R5PgotPGltZyBzcmM9InJlc291cmNlcy9ib3N0b24uZ2lmIiBvbmxv
YWQ9ImxvYWRlZCgpIiBvbmVycm9yPSJsb2coJ0ZBSUw6IGVycm9yIGV2ZW50IGZvciBmaXJzdCBp
bWFnZScpIj4KKzxpbWcgc3JjPSJyZXNvdXJjZXMvYm9zdG9uLmdpZiIgb25sb2FkPSJsb2FkZWQo
KSI+CiA8ZGl2IGlkPSJpbWciPjwvZGl2PgogPGRpdiBpZD0icmVzdWx0cyI+PC9kaXY+CiA8L2Jv
ZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9wZXJtaXNzaW9u
Y2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vcGVybWlzc2lvbmNsaWVudC9yZXNvdXJjZXMvaW1hZ2UuaHRtbAppbmRleCBlMmFkZmUzZjBi
NjIxYWE4ZDlmZjRlMTkwYzkwMjIzMDVjYzA3MGViLi4yMzk3NzE3MTAxZGVkNDQwYTMyOTU1ODI2
ZTg0MWNkMWNkNjIzZjk3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9wZXJtaXNzaW9uY2xpZW50L3Jlc291cmNlcy9pbWFnZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Blcm1pc3Npb25jbGllbnQvcmVzb3VyY2VzL2ltYWdlLmh0bWwK
QEAgLTgsNyArOCw3IEBAIGZ1bmN0aW9uIGxvZyhhKQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9k
eT4KLTxpbWcgc3JjPSJib3N0b24uZ2lmIiBvbmxvYWQ9ImxvZygnRkFJTDogbG9hZCBldmVudCBm
b3IgaWZyYW1lZCBpbWFnZSkiIG9uZXJyb3I9ImxvZygnRkFJTDogZXJyb3IgZXZlbnQgZm9yIGlm
cmFtZWQgaW1hZ2UnKSI+Cis8aW1nIHNyYz0iYm9zdG9uLmdpZiIgb25sb2FkPSJsb2coJ0ZBSUw6
IGxvYWQgZXZlbnQgZm9yIGlmcmFtZWQgaW1hZ2UnKSI+CiA8ZGl2IGlkPSJyZXN1bHRzIj48L2Rp
dj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwpp
bmRleCBhN2Q4MjNlZjBkZjE1OGNjZjRjOGM5MTQ5NThjMzBlMWYyNWMxMTY5Li5mZDZhYjRkOTkz
MTFkMTRjZDYzMThkNTQxMjM3YzAxMTkyMGFlYjZkIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysr
IGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDktMTMgIEJvIExpdSAgPGJvbGl1
QGNocm9taXVtLm9yZz4KKworICAgICAgICBBZGQgaW4tcGxhY2UgcmVsb2FkIGJlaGF2aW9yIHRv
IEltYWdlc0VuYWJsZWQgc2V0dGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTU0NzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBFeHBvcnQgV2ViQ29yZTo6U2V0dGluZ3M6OnNldEltYWdlc0VuYWJsZWQg
c3ltYm9sLgorCisgICAgICAgICogU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcjoKKwog
MjAxMi0wOS0xNCAgVG9yIEFybmUgVmVzdGLDuCAgPHRvci5hcm5lLnZlc3Rib0Bub2tpYS5jb20+
CiAKICAgICAgICAgW1F0XSBGaXggaGFuZGxpbmcgb2YgZGVidWcvcmVsZWFzZS9kZWJ1Z19hbmRf
cmVsZWFzZS9idWlsZF9hbGwK
</data>

          </attachment>
      

    </bug>

</bugzilla>