<?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>37602</bug_id>
          
          <creation_ts>2010-04-14 13:47:26 -0700</creation_ts>
          <short_desc>AppCache Progress Events - need to include additional info per the spec</short_desc>
          <delta_ts>2010-07-09 08:56:15 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/2006/webapi/progress/Progress.html</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="Patrick Mueller">pmuellr</reporter>
          <assigned_to name="Michael Nordman">michaeln</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dumi</cc>
    
    <cc>kkanetkar</cc>
    
    <cc>michaeln</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212544</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-04-14 13:47:26 -0700</bug_when>
    <thetext>per bug 24529, creating a new bug to track adding additional information to the AppCache progress events to provide information on the resources being downloaded.

The URL field in the bug points to the most recent version of a spec which defines the info.

A peer Chrome bug is open here: http://code.google.com/p/chromium/issues/detail?id=39370

Note that the spec doesn&apos;t actually mention AppCache (I believe the spec predates AppCache), but does mention XHR and Media events.  Presumably these would need to be looked at as well as just the AppCache usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212582</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-04-14 14:39:08 -0700</bug_when>
    <thetext>Thnx for linking the bugs!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225491</commentid>
    <comment_count>2</comment_count>
      <attachid>56020</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-05-13 13:51:51 -0700</bug_when>
    <thetext>Created attachment 56020
in-progress patch

First pass at changes to have the appcache &quot;progress&quot; event send a real ProgressEvent, with the new loadedItems and totalItems properties.  

The code is basically operational, as tested Web Inspector with a sample app I had lying around.

Issues:

- there may be a one-off issue with loadedItems
- almost sure that the appcache events will be leaked (still figuring out the RefPtr stuff)
- the totalItem count may not be quite correct
- add IBM copyrights as appropriate

Patch is against r58875, and is actually a plain old Git patch (not sure how to create an SVN friendly patch from Git)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225546</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-05-13 15:41:12 -0700</bug_when>
    <thetext>Hi Patrick!

Something that you&apos;ll need to get this patch accepted is a layout test that verifies the new behavior. The appcache related layout tests can be found at.
  WebKit\LayoutTests\http\tests\appcache\...

Also I want to point out a second implementation of ApplicationCacheHost.cpp that is also in the code base.
  WebKit\chromium\src\ApplicationCacheHost.cpp

This second impl is also defined by the .h file that&apos;s in your patch. There&apos;s one edit in the .h file that will bust the chromium build.
  Vector&lt;RefPtr&lt;Event&gt; &gt; m_deferredEvents;


If you would be so kind as to retain the existing data members for us until we can catch up, that would be great... ala something like...

        DOMApplicationCache* m_domApplicationCache;
        DocumentLoader* m_documentLoader;

#if PLATFORM(CHROMIUM)
        friend class ApplicationCacheHostInternal;
        bool m_defersEvents; // Events are deferred until after document onload.
        Vector&lt;EventID&gt; m_deferredEvents;
        OwnPtr&lt;ApplicationCacheHostInternal&gt; m_internal;
#else
        friend class ApplicationCacheGroup;
        ... 
        bool m_defersEvents; // Events are deferred until after document onload.
        Vector&lt;RefPtr&lt;Event&gt; &gt; m_deferredEvents;

        // The application cache that the document loader is associated with (if any).
        RefPtr&lt;ApplicationCache&gt; m_applicationCache;
        ... etc ....
#endif</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227449</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-05-18 13:03:57 -0700</bug_when>
    <thetext>I&apos;ve posted a question to the what-wg mailing list regarding using loadedItems vs loaded:

   http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2010-May/026370.html

In retrospect, it&apos;s probably fine to use loaded/total instead of the new and not yet finalized -&quot;Items&quot; versions; it&apos;s unlikely we could provide loadedItems/totalItems for the resource counts AND use loaded/total for bytes of an individual resource, since we have no way of identifying the resource in the first place.  Perhaps that&apos;s a general slight on the Items attributes of the proposed Progress event spec.

It&apos;s also not clear when the new ProgressEvent spec would be finalized.  

So I&apos;m thinking we use loaded/total instead of loadedItems/totalItems.  

Waiting for feedback on the ml post ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227933</commentid>
    <comment_count>5</comment_count>
      <attachid>56509</attachid>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-05-19 12:01:50 -0700</bug_when>
    <thetext>Created attachment 56509
latest in-progress patch 

I&apos;ve switched to use loaded/total instead of loadedItems/totalItems in ProgressEvent.  Added a test case, but need more.  Now sending a final progress event (loaded == total).

I&apos;m going to attempt to patch the Chromium file, if possible.  Late next week.  Let me know if trying to do this isn&apos;t really possible, or kosher; I&apos;d prefer to not have to use interim #IFDEF hacks and just make the actual fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227947</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-05-19 12:23:22 -0700</bug_when>
    <thetext>To get a webkit reviewer to take a look at these changes, you&apos;ll want to set the flag on the patch to r?

&gt; I&apos;ve switched to use loaded/total instead of loadedItems/totalItems in 
&gt; ProgressEvent.  Added a test case, but need more.  Now sending a final
&gt; progress event (loaded == total).

Right... at TPAC I thought it had been decided to move away from the dual-band progress event model for all progress events, and to stick with the simpler loaded vs total model. Where different use cases would overload loaded vs total such that it doesn&apos;t necessarily means &apos;bytes&apos;.

So the switching to use them for our use is good by me.

&gt; I&apos;m going to attempt to patch the Chromium file, if possible.  Late next week.
&gt; Let me know if trying to do this isn&apos;t really possible, or kosher; I&apos;d prefer
&gt; to not have to use interim #IFDEF hacks and just make the actual fix.

That would be nice of you. Just be aware that you won&apos;t be able to come up with total vs loaded values for chromium w/o actually making changes to chrome (outside of webkit). Maybe have the progress events in the chromium port set lengthComputable to false and total/loaded to zero for the time being.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227959</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-05-19 13:10:52 -0700</bug_when>
    <thetext>915     pair&lt;EntryMap::iterator, bool&gt; result = m_pendingEntries.add(url, type);
916     m_total++;

I think you have to revisit how you&apos;re computing m_total. The same url may be listed multiple times in the manifest file in different sections. It only gets added to the m_pendingEntries collection and downloaded once (the return values indicates if the url was already in the collection), but m_total will have been bumped multiple times for such entries.

Also, the update algorithm can be run multiple times over the life of an ApplicationCacheGroup instance. I think you want to reset m_total and m_loaded when a new update is initiated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230866</commentid>
    <comment_count>8</comment_count>
    <who name="Patrick Mueller">pmuellr</who>
    <bug_when>2010-05-26 13:42:46 -0700</bug_when>
    <thetext>I&apos;ve had some other things hit my radar, don&apos;t think I&apos;ll be able to continue with this for a while.  If someone gets to this before I get back to it, have at it.

Some responses to Michael:

- this code isn&apos;t ready for review :-)

- TPAC appears to be a w3 thing; are there links to &quot;it had been decided to move away ...&quot; discussions?  I completely concur, but it would be nice to have this info available easily.  It looks like there is some discussion here - anywhere else?

   http://www.w3.org/2009/11/02-webapps-minutes.html#item02

- re: computing &quot;total&quot;.  I hadn&apos;t really studied this code all that closely; my assumption was that it would be possible to compute a total.  I was focusing more on getting something basically working first.  Given the mention that Chrome couldn&apos;t support total without changes to chromium (outside of webkit), I suspect it may be easier for the first actual implementation to set lengthComputable to false, set total to 0 always (except maybe the last one), and increment loaded each time the message is sent.

Other general notes:

- the existing test case is not sufficient; will need more.  As you can also note from the last patch, if we send a final progress event at the end, this will end up breaking some existing test cases, but they were easy to fix.

- really no clue if I did the PassRefPtr/etal stuff correctly.  Seemed like a best guess.  The reason why changes were needed for this was to be able to send events with data, instead of the existing bare events we have today.  To do that, the data needs to be kept in the heap; the existing code maintains a vector of eventtype ints, for queued events, which is all you need if you&apos;re not sending any data with your events ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240830</commentid>
    <comment_count>9</comment_count>
      <attachid>59278</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-21 13:01:32 -0700</bug_when>
    <thetext>Created attachment 59278
chromium webkit api for the extra info</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240831</commentid>
    <comment_count>10</comment_count>
      <attachid>59279</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-21 13:06:58 -0700</bug_when>
    <thetext>Created attachment 59279
chromium webkit api for the extra info

just fixing a typo in the ChangeLog with the second patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240925</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-21 15:38:33 -0700</bug_when>
    <thetext>Attachment 59279 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3333555</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240933</commentid>
    <comment_count>12</comment_count>
      <attachid>59303</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-21 15:54:10 -0700</bug_when>
    <thetext>Created attachment 59303
chromium webkit api for the extra info

just fixing my boneheaded compile error in this rev</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240940</commentid>
    <comment_count>13</comment_count>
      <attachid>59303</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-21 16:13:28 -0700</bug_when>
    <thetext>Comment on attachment 59303
chromium webkit api for the extra info

&gt; Index: WebKit/chromium/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/chromium/ChangeLog	(revision 61565)
&gt; +++ WebKit/chromium/ChangeLog	(working copy)
&gt; @@ -1,3 +1,17 @@
&gt; +2010-06-21  Michael Nordman  &lt;michaeln@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Additional API to pass additional info needed for AppCache progress events.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=37602
&gt; +
&gt; +        Also, delete an obsolete method from the worker API.
&gt; +
&gt; +        * public/WebApplicationCacheHostClient.h: define a new method
&gt; +        * public/WebSharedWorker.h: remove an obsolte method
&gt; +        * src/ApplicationCacheHostInternal.h: implement the new method
&gt; +        (WebCore::ApplicationCacheHostInternal::notifyProgressEventListener):
&gt; +
&gt;  2010-06-21  Kent Tamura  &lt;tkent@chromium.org&gt;
&gt;  
&gt;          Reviewed by Dimitri Glazkov.
&gt; Index: WebKit/chromium/public/WebApplicationCacheHostClient.h
&gt; ===================================================================
&gt; --- WebKit/chromium/public/WebApplicationCacheHostClient.h	(revision 61562)
&gt; +++ WebKit/chromium/public/WebApplicationCacheHostClient.h	(working copy)
&gt; @@ -39,8 +39,9 @@ namespace WebKit {
&gt;  // This interface is used by the embedder to call into webkit.
&gt;  class WebApplicationCacheHostClient {
&gt;  public:
&gt; -    // Called to fire the event in the scriptable interface.
&gt; +    // Called to fire events in the scriptable interface.
&gt;      virtual void notifyEventListener(WebApplicationCacheHost::EventID) = 0;
&gt; +    virtual void notifyProgressEventListener(const WebURL&amp;, int num_total, int num_complete) = 0;
&gt;  
&gt;  protected:
&gt;      // Should not be deleted by the embedder.
&gt; Index: WebKit/chromium/public/WebSharedWorker.h
&gt; ===================================================================
&gt; --- WebKit/chromium/public/WebSharedWorker.h	(revision 61562)
&gt; +++ WebKit/chromium/public/WebSharedWorker.h	(working copy)
&gt; @@ -63,15 +63,6 @@ public:
&gt;                                      const WebString&amp; sourceCode,
&gt;                                      long long scriptResourceAppCacheID) = 0;
&gt;  
&gt; -    // FIXME(michaeln): Remove this after the roll and adjusting to it.
&gt; -    virtual void startWorkerContext(const WebURL&amp; scriptURL,
&gt; -                                    const WebString&amp; name,
&gt; -                                    const WebString&amp; userAgent,
&gt; -                                    const WebString&amp; sourceCode)
&gt; -    {
&gt; -        startWorkerContext(scriptURL, name, userAgent, sourceCode, 0);
&gt; -    }
&gt; -
&gt;      class ConnectListener {
&gt;      public:
&gt;          // Invoked once the connect event has been sent so the caller can free this object.
&gt; Index: WebKit/chromium/src/ApplicationCacheHostInternal.h
&gt; ===================================================================
&gt; --- WebKit/chromium/src/ApplicationCacheHostInternal.h	(revision 61562)
&gt; +++ WebKit/chromium/src/ApplicationCacheHostInternal.h	(working copy)
&gt; @@ -39,6 +39,7 @@
&gt;  #include &quot;WebFrameImpl.h&quot;
&gt;  #include &quot;WebKit.h&quot;
&gt;  #include &quot;WebKitClient.h&quot;
&gt; +#include &quot;WebURL.h&quot;
&gt;  
&gt;  namespace WebCore {
&gt;  
&gt; @@ -57,6 +58,17 @@ public:
&gt;          m_innerHost-&gt;notifyDOMApplicationCache(static_cast&lt;ApplicationCacheHost::EventID&gt;(eventID));
&gt;      }
&gt;  
&gt; +    virtual void notifyProgressEventListener(const WebKit::WebURL&amp;, int num_total, int num_complete) 
&gt; +    {
&gt; +        // FIXME: Modify webcore&apos;s progress event handling to carry the extra info and alter the
&gt; +        // layout tests to not fail when the more recently specified &apos;final&apos; event is raised.
&gt; +        // For now, we&apos;re eating the extra info and that last event.
&gt; +        // See https://bugs.webkit.org/show_bug.cgi?id=37602
&gt; +        if (num_complete == num_total)
&gt; +            return;
&gt; +        notifyEventListener(WebKit::WebApplicationCacheHost::ProgressEvent);
&gt; +    }
&gt; +
&gt;      static WebKit::WebApplicationCacheHost* toWebApplicationCacheHost(ApplicationCacheHost* innerHost)
&gt;      {
&gt;          if (innerHost &amp;&amp; innerHost-&gt;m_internal.get())

WebKit/chromium/public/WebApplicationCacheHostClient.h:44
 +      virtual void notifyProgressEventListener(const WebURL&amp;, int num_total, int num_complete) = 0;
is ApplicationCacheHostInternal is the only class that inherits from WebApplicationCacheHostClient?

WebKit/chromium/src/ApplicationCacheHostInternal.h:63
 +          // FIXME: Modify webcore&apos;s progress event handling to carry the extra info and alter the
minor: s/webcore/WebCore/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240941</commentid>
    <comment_count>14</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-21 16:14:14 -0700</bug_when>
    <thetext>Heh, sorry for the spam... I need to figure out how to use the reviewing tools properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240950</commentid>
    <comment_count>15</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-21 16:22:40 -0700</bug_when>
    <thetext>(In reply to comment #13)
 &gt; WebKit/chromium/public/WebApplicationCacheHostClient.h:44
&gt;  +      virtual void notifyProgressEventListener(const WebURL&amp;, int num_total, int num_complete) = 0;
&gt; is ApplicationCacheHostInternal is the only class that inherits from WebApplicationCacheHostClient?

Yes
 
&gt; WebKit/chromium/src/ApplicationCacheHostInternal.h:63
&gt;  +          // FIXME: Modify webcore&apos;s progress event handling to carry the extra info and alter the
&gt; minor: s/webcore/WebCore/

Oh... this shouldn&apos;t be here for too long. I can upload a new patch if need be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240960</commentid>
    <comment_count>16</comment_count>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-06-21 16:38:24 -0700</bug_when>
    <thetext>&gt; &gt; WebKit/chromium/src/ApplicationCacheHostInternal.h:63
&gt; &gt;  +          // FIXME: Modify webcore&apos;s progress event handling to carry the extra info and alter the
&gt; &gt; minor: s/webcore/WebCore/
&gt; 
&gt; Oh... this shouldn&apos;t be here for too long. I can upload a new patch if need be.

No need to, I thought you were a committer and would do it on landing. I&apos;ll cq+ the patch as soon as all bots turn green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242982</commentid>
    <comment_count>17</comment_count>
      <attachid>59303</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 05:59:56 -0700</bug_when>
    <thetext>Comment on attachment 59303
chromium webkit api for the extra info

Clearing flags on attachment: 59303

Committed r61856: &lt;http://trac.webkit.org/changeset/61856&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242983</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-06-25 06:00:02 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244462</commentid>
    <comment_count>19</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-29 13:48:33 -0700</bug_when>
    <thetext>Re-opening as this isn&apos;t resolved yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244592</commentid>
    <comment_count>20</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-29 18:40:43 -0700</bug_when>
    <thetext>Assigning to myself. I&apos;ve picked up where Patrick left off, will upload something for review soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244957</commentid>
    <comment_count>21</comment_count>
      <attachid>60156</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-30 14:57:02 -0700</bug_when>
    <thetext>Created attachment 60156
ProgressEvents</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245040</commentid>
    <comment_count>22</comment_count>
      <attachid>60156</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-30 18:07:59 -0700</bug_when>
    <thetext>Comment on attachment 60156
ProgressEvents

I think this is ready for review. I started with Patrick&apos;s patch and edited to taste. The appcache layout tests pass for chromium&apos;s test_shell (win) and for webcore&apos;s dump_render_tree (mac)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245061</commentid>
    <comment_count>23</comment_count>
      <attachid>60185</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-06-30 19:42:08 -0700</bug_when>
    <thetext>Created attachment 60185
ProgressEvents with a style fix

New patch. Moved the bracket up a line on struct DeferredEvent {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245584</commentid>
    <comment_count>24</comment_count>
      <attachid>60296</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-01 15:23:18 -0700</bug_when>
    <thetext>Created attachment 60296
ProgressEvents with tweeks to the layout tests

ap, any interest in reviewing or should i be looking elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245615</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-01 15:49:41 -0700</bug_when>
    <thetext> 31     if (event.loaded != expectedLoaded++) {
 32         document.getElementById(&apos;result&apos;).innerHTML = &quot;FAILURE: expected progressEvent.loaded to be &quot; + expectedLoaded...
 33         done();
 34         return;
 35     }    

bah... the error message will show the wrong number as currently coded</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245625</commentid>
    <comment_count>26</comment_count>
      <attachid>60307</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-01 16:00:30 -0700</bug_when>
    <thetext>Created attachment 60307
ProgressEvents with layout test error message fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246774</commentid>
    <comment_count>27</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-05 14:17:23 -0700</bug_when>
    <thetext>49 applicationCache.addEventListener(&apos;noupdate&apos;, cached, false);

Ah, that isn&apos;t quite right. In the noupdate case, we really can&apos;t conduct this test since there won&apos;t be any progress events. I&apos;ll have test fail with a more clear error message in this case...

&quot;FAILURE: unable to conduct test since the appcache already exists, please remove the appcache and try again&quot;

I&apos;d rather do that than introduce overly complicated client and server side logic to automatically delete the cache and try again... then again... maybe a LayoutTestController API to nuke the existing cache could be in order?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247797</commentid>
    <comment_count>28</comment_count>
      <attachid>60787</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-07 15:15:23 -0700</bug_when>
    <thetext>Created attachment 60787
ProgressEvents with another layout test error message fixed

New test that fails with a clear error message in the noupdate case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247839</commentid>
    <comment_count>29</comment_count>
      <attachid>60787</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-07-07 16:25:20 -0700</bug_when>
    <thetext>Comment on attachment 60787
ProgressEvents with another layout test error message fixed

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>247889</commentid>
    <comment_count>30</comment_count>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-07 17:43:11 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; (From update of attachment 60787 [details])
&gt; r=me

Thank you ap!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248056</commentid>
    <comment_count>31</comment_count>
      <attachid>60787</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-08 00:58:39 -0700</bug_when>
    <thetext>Comment on attachment 60787
ProgressEvents with another layout test error message fixed

This patch won&apos;t apply on top of joepecks recent changes to ApplicationCacheGroup. Removing from commit-queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248533</commentid>
    <comment_count>32</comment_count>
      <attachid>60956</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2010-07-08 14:15:37 -0700</bug_when>
    <thetext>Created attachment 60956
ProgressEvents merged and resolved

Same patch as last time modulo merging and resolving.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248572</commentid>
    <comment_count>33</comment_count>
      <attachid>60956</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-07-08 15:03:45 -0700</bug_when>
    <thetext>Comment on attachment 60956
ProgressEvents merged and resolved

rs=me, same patch that ap r+&apos;ed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>248887</commentid>
    <comment_count>34</comment_count>
      <attachid>60787</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-09 03:19:03 -0700</bug_when>
    <thetext>Comment on attachment 60787
ProgressEvents with another layout test error message fixed

Cleared Alexey Proskuryakov&apos;s review+ from obsolete attachment 60787 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249031</commentid>
    <comment_count>35</comment_count>
      <attachid>60956</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-09 08:56:08 -0700</bug_when>
    <thetext>Comment on attachment 60956
ProgressEvents merged and resolved

Clearing flags on attachment: 60956

Committed r62957: &lt;http://trac.webkit.org/changeset/62957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249032</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-09 08:56:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56020</attachid>
            <date>2010-05-13 13:51:51 -0700</date>
            <delta_ts>2010-05-19 12:01:50 -0700</delta_ts>
            <desc>in-progress patch</desc>
            <filename>AppCacheProgress.patch</filename>
            <type>text/plain</type>
            <size>13747</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwIGIvV2ViQ29yZS9kb20v
UHJvZ3Jlc3NFdmVudC5jcHAKaW5kZXggOTlkZTUwMC4uMjJjOTNlZiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAKKysrIGIvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVu
dC5jcHAKQEAgLTMyLDYgKzMyLDggQEAgUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVudCgpCiAg
ICAgOiBtX2xlbmd0aENvbXB1dGFibGUoZmFsc2UpCiAgICAgLCBtX2xvYWRlZCgwKQogICAgICwg
bV90b3RhbCgwKQorICAgICwgbV9sb2FkZWRJdGVtcygwKQorICAgICwgbV90b3RhbEl0ZW1zKDAp
CiB7CiB9CiAKQEAgLTQzLDEyICs0NSwyNSBAQCBQcm9ncmVzc0V2ZW50OjpQcm9ncmVzc0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlLCB1bgogewog
fQogICAgIAorUHJvZ3Jlc3NFdmVudDo6UHJvZ3Jlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcm
IHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQgbG9hZGVkLCB1bnNpZ25lZCB0
b3RhbCwgdW5zaWduZWQgbG9hZGVkSXRlbXMsIHVuc2lnbmVkIHRvdGFsSXRlbXMpCisgICAgOiBF
dmVudCh0eXBlLCBmYWxzZSwgdHJ1ZSkKKyAgICAsIG1fbGVuZ3RoQ29tcHV0YWJsZShsZW5ndGhD
b21wdXRhYmxlKQorICAgICwgbV9sb2FkZWQobG9hZGVkKQorICAgICwgbV90b3RhbCh0b3RhbCkK
KyAgICAsIG1fbG9hZGVkSXRlbXMobG9hZGVkSXRlbXMpCisgICAgLCBtX3RvdGFsSXRlbXModG90
YWxJdGVtcykKK3sKK30KKyAgICAKIHZvaWQgUHJvZ3Jlc3NFdmVudDo6aW5pdFByb2dyZXNzRXZl
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBsZW5ndGhDb21wdXRhYmxlQXJnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb2FkZWRBcmcsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsQXJnKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3RhbEFyZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9hZGVkSXRlbXNBcmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsSXRlbXNB
cmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogeyAgICAKICAgICBp
ZiAoZGlzcGF0Y2hlZCgpKQogICAgICAgICByZXR1cm47CkBAIC01OCw2ICs3Myw4IEBAIHZvaWQg
UHJvZ3Jlc3NFdmVudDo6aW5pdFByb2dyZXNzRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
QXJnLAogICAgIG1fbGVuZ3RoQ29tcHV0YWJsZSA9IGxlbmd0aENvbXB1dGFibGVBcmc7CiAgICAg
bV9sb2FkZWQgPSBsb2FkZWRBcmc7CiAgICAgbV90b3RhbCA9IHRvdGFsQXJnOworICAgIG1fbG9h
ZGVkSXRlbXMgPSBsb2FkZWRJdGVtc0FyZzsKKyAgICBtX3RvdGFsSXRlbXMgPSB0b3RhbEl0ZW1z
QXJnOwogfQogCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmggYi9X
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmgKaW5kZXggZTMwY2IxYi4uNzZiMmE3OCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5oCisrKyBiL1dlYkNvcmUvZG9tL1Byb2dy
ZXNzRXZlbnQuaApAQCAtNDAsMjggKzQwLDM5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9ncmVzc0V2ZW50KHR5cGUs
IGxlbmd0aENvbXB1dGFibGUsIGxvYWRlZCwgdG90YWwpKTsKICAgICAgICAgfQorICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQcm9ncmVzc0V2ZW50PiBjcmVhdGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlLCBib29sIGxlbmd0aENvbXB1dGFibGUsIHVuc2lnbmVkIGxvYWRlZCwgdW5zaWduZWQg
dG90YWwsIHVuc2lnbmVkIGxvYWRlZEl0ZW1zLCB1bnNpZ25lZCB0b3RhbEl0ZW1zKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFByb2dyZXNzRXZlbnQodHlwZSwg
bGVuZ3RoQ29tcHV0YWJsZSwgbG9hZGVkLCB0b3RhbCwgbG9hZGVkSXRlbXMsIHRvdGFsSXRlbXMp
KTsKKyAgICAgICAgfQogCiAgICAgICAgIHZvaWQgaW5pdFByb2dyZXNzRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlQXJnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGNhbkJ1YmJsZUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbmNl
bGFibGVBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBsZW5ndGhDb21w
dXRhYmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvYWRl
ZEFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCB0b3RhbEFyZyk7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgdG90YWxBcmcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9hZGVkSXRlbXNBcmcgPSAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIHRvdGFsSXRlbXNBcmcgPSAw
KTsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSgpIGNvbnN0IHsgcmV0
dXJuIG1fbGVuZ3RoQ29tcHV0YWJsZTsgfQogICAgICAgICB1bnNpZ25lZCBsb2FkZWQoKSBjb25z
dCB7IHJldHVybiBtX2xvYWRlZDsgfQogICAgICAgICB1bnNpZ25lZCB0b3RhbCgpIGNvbnN0IHsg
cmV0dXJuIG1fdG90YWw7IH0KKyAgICAgICAgdW5zaWduZWQgbG9hZGVkSXRlbXMoKSBjb25zdCB7
IHJldHVybiBtX2xvYWRlZEl0ZW1zOyB9CisgICAgICAgIHVuc2lnbmVkIHRvdGFsSXRlbXMoKSBj
b25zdCB7IHJldHVybiBtX3RvdGFsSXRlbXM7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1Byb2dyZXNzRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIAog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgUHJvZ3Jlc3NFdmVudCgpOwogICAgICAgICBQcm9ncmVz
c0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBsZW5ndGhDb21wdXRhYmxlLCB1
bnNpZ25lZCBsb2FkZWQsIHVuc2lnbmVkIHRvdGFsKTsKKyAgICAgICAgUHJvZ3Jlc3NFdmVudChj
b25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgbGVuZ3RoQ29tcHV0YWJsZSwgdW5zaWduZWQg
bG9hZGVkLCB1bnNpZ25lZCB0b3RhbCwgdW5zaWduZWQgbG9hZGVkSXRlbXMsIHVuc2lnbmVkIHRv
dGFsSXRlbXMpOwogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBtX2xlbmd0aENvbXB1dGFi
bGU7CiAgICAgICAgIHVuc2lnbmVkIG1fbG9hZGVkOwogICAgICAgICB1bnNpZ25lZCBtX3RvdGFs
OworICAgICAgICB1bnNpZ25lZCBtX2xvYWRlZEl0ZW1zOworICAgICAgICB1bnNpZ25lZCBtX3Rv
dGFsSXRlbXM7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vUHJvZ3Jlc3NF
dmVudC5pZGwgYi9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmlkbAppbmRleCBhZmRmM2EyLi5l
NzBlNmIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmlkbAorKysgYi9X
ZWJDb3JlL2RvbS9Qcm9ncmVzc0V2ZW50LmlkbApAQCAtMjksMTIgKzI5LDE2IEBAIG1vZHVsZSBl
dmVudHMgewogICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gICAgICAgICBsZW5n
dGhDb21wdXRhYmxlOwogICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcg
ICBsb2FkZWQ7CiAgICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyAgIHRv
dGFsOworICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgICBsb2FkZWRJ
dGVtczsKKyAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nICAgdG90YWxJ
dGVtczsKICAgICAgICAgIHZvaWQgICAgICAgICAgICAgICBpbml0UHJvZ3Jlc3NFdmVudChpbiBE
T01TdHJpbmcgdHlwZUFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBib29sZWFuICAgICAgIGNhbkJ1YmJsZUFyZywKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuICAgICAgIGNhbmNlbGFibGVB
cmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9v
bGVhbiAgICAgICBsZW5ndGhDb21wdXRhYmxlQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcgbG9hZGVkQXJnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHVuc2lnbmVkIGxvbmcg
dG90YWxBcmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGluIHVuc2lnbmVkIGxvbmcgdG90YWxBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gdW5zaWduZWQgbG9uZyBsb2FkZWRJdGVtc0FyZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiB1bnNpZ25lZCBsb25n
IHRvdGFsSXRlbXNBcmcpOwogICAgIH07CiAKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDUyNjA0M2IuLjBhMmU0NTggMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5j
cHAKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNw
cApAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIk1hbmlmZXN0UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlBy
b2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAKQEAgLTUxLDYgKzUyLDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3AKICAgICA6
IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX3VwZGF0ZVN0YXR1cyhJZGxlKQog
ICAgICwgbV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCgwKQor
ICAgICwgbV90b3RhbEl0ZW1zKDApCisgICAgLCBtX2xvYWRlZEl0ZW1zKDApCiAgICAgLCBtX2Zy
YW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQogICAgICwgbV9pc09ic29sZXRlKGZhbHNlKQpA
QCAtODQ5LDcgKzg1MiwxMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkoKQogICAgIAogICAgIEVudHJ5TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fcGVu
ZGluZ0VudHJpZXMuYmVnaW4oKTsKIAotICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOwor
ICAgIG1fbG9hZGVkSXRlbXMrKzsKKworICAgIEF0b21pY1N0cmluZyBldmVudFR5cGUgPSBET01B
cHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JF
U1NfRVZFTlQpOworICAgIFJlZlB0cjxQcm9ncmVzc0V2ZW50PiBldmVudCA9IFByb2dyZXNzRXZl
bnQ6OmNyZWF0ZShldmVudFR5cGUsIGZhbHNlLCAwLCAwLCBtX2xvYWRlZEl0ZW1zLCBtX3RvdGFs
SXRlbXMpOworICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnQsIG1fYXNzb2NpYXRlZERvY3VtZW50
TG9hZGVycyk7CiAKICAgICBBU1NFUlQoIW1fY3VycmVudEhhbmRsZSk7CiAgICAgCkBAIC05MDAs
NiArOTA3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFkZEVudHJ5KGNvbnN0IFN0
cmluZyYgdXJsLCB1bnNpZ25lZCB0eXBlKQogICAgIH0KICAgICAKICAgICBwYWlyPEVudHJ5TWFw
OjppdGVyYXRvciwgYm9vbD4gcmVzdWx0ID0gbV9wZW5kaW5nRW50cmllcy5hZGQodXJsLCB0eXBl
KTsKKyAgICBtX3RvdGFsSXRlbXMrKzsKICAgICAKICAgICBpZiAoIXJlc3VsdC5zZWNvbmQpCiAg
ICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kIHw9IHR5cGU7CkBAIC05NTAsNyArOTU4LDEyIEBA
IGNsYXNzIENhbGxDYWNoZUxpc3RlbmVyVGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0OjpUYXNrIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0
ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQpCiAgICAgewotICAgICAgICByZXR1cm4g
bmV3IENhbGxDYWNoZUxpc3RlbmVyVGFzayhsb2FkZXIsIGV2ZW50SUQpOworICAgICAgICByZXR1
cm4gbmV3IENhbGxDYWNoZUxpc3RlbmVyVGFzayhsb2FkZXIsIGV2ZW50SUQsIDApOworICAgIH0K
KworICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxDYWNoZUxpc3RlbmVyVGFzaz4gY3JlYXRlKFBh
c3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
CisgICAgeworICAgICAgICByZXR1cm4gbmV3IENhbGxDYWNoZUxpc3RlbmVyVGFzayhsb2FkZXIs
IChBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCkwLCBldmVudCk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQp
CkBAIC05NjMsMTggKzk3NiwyMyBAQCBwdWJsaWM6CiAgICAgCiAgICAgICAgIEFTU0VSVChmcmFt
ZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgPT0gbV9kb2N1bWVudExvYWRlci5nZXQoKSk7
CiAKLSAgICAgICAgbV9kb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3QoKS0+bm90
aWZ5RE9NQXBwbGljYXRpb25DYWNoZShtX2V2ZW50SUQpOworICAgICAgICBpZiAobV9ldmVudCkK
KyAgICAgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5v
dGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUobV9ldmVudCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG1fZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUobV9ldmVudElEKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2FsbENh
Y2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBDYWxsQ2FjaGVMaXN0ZW5lclRh
c2soUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRCBldmVudElELCBQYXNzUmVmUHRyPEV2ZW50PiBldmVudCkKICAgICAgICAgOiBt
X2RvY3VtZW50TG9hZGVyKGxvYWRlcikKICAgICAgICAgLCBtX2V2ZW50SUQoZXZlbnRJRCkKKyAg
ICAgICAgLCBtX2V2ZW50KGV2ZW50KQogICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8RG9jdW1l
bnRMb2FkZXI+IG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2
ZW50SUQgbV9ldmVudElEOworICAgIFJlZlB0cjxFdmVudD4gbV9ldmVudDsKIH07CiAKIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElEIGV2ZW50SUQsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYgbG9h
ZGVyU2V0KQpAQCAtOTg0LDYgKzEwMDIsMTMgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnQKICAg
ICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudElELCAqaXRlcik7CiB9CiAKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50
LCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKK3sKKyAgICBIYXNo
U2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVuZCA9IGxvYWRl
clNldC5lbmQoKTsKKyAgICBmb3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6Y29uc3RfaXRl
cmF0b3IgaXRlciA9IGxvYWRlclNldC5iZWdpbigpOyBpdGVyICE9IGxvYWRlclNldEVuZDsgKytp
dGVyKQorICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50LCAqaXRlcik7Cit9CisKIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElEIGV2ZW50SUQsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiB7CiAgICAgRnJh
bWUqIGZyYW1lID0gbG9hZGVyLT5mcmFtZSgpOwpAQCAtOTk1LDYgKzEwMjAsMTcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkV2ZW50SUQgZXZlbnQKICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soQ2FsbENh
Y2hlTGlzdGVuZXJUYXNrOjpjcmVhdGUobG9hZGVyLCBldmVudElEKSk7CiB9CiAKK3ZvaWQgQXBw
bGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2
ZW50LCBEb2N1bWVudExvYWRlciogbG9hZGVyKQoreworICAgIEZyYW1lKiBmcmFtZSA9IGxvYWRl
ci0+ZnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgCisgICAg
QVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIpOworCisg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxDYWNoZUxpc3RlbmVyVGFzazo6Y3Jl
YXRlKGxvYWRlciwgZXZlbnQpKTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNs
ZWFyU3RvcmFnZUlEKCkKIHsKICAgICBtX3N0b3JhZ2VJRCA9IDA7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuaCBiL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCmluZGV4IDhkZjUyY2MuLmVhYTMw
MzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5oCkBAIC05Miw3ICs5Miw5IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBjb25zdCBI
YXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJU
YXNrKFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50LCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVy
Kj4mKTsKICAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElELCBEb2N1bWVudExvYWRlciopOworICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0
ZW5lclRhc2soUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIERvY3VtZW50TG9hZGVyKik7CiAgICAg
dm9pZCBzY2hlZHVsZVJlYWNoZWRNYXhBcHBDYWNoZVNpemVDYWxsYmFjaygpOwogCiAgICAgUGFz
c1JlZlB0cjxSZXNvdXJjZUhhbmRsZT4gY3JlYXRlUmVzb3VyY2VIYW5kbGUoY29uc3QgS1VSTCYs
IEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZSogbmV3ZXN0Q2FjaGVkUmVzb3VyY2UpOwpAQCAtMTQ3
LDYgKzE0OSwxMiBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBVUkxzIGFuZCB0eXBlcyBvZiBwZW5k
aW5nIGNhY2hlIGVudHJpZXMuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+
IEVudHJ5TWFwOwogICAgIEVudHJ5TWFwIG1fcGVuZGluZ0VudHJpZXM7CisgICAgCisgICAgLy8g
dG90YWwgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBjYWNoZSBncm91cAorICAgIGludCBtX3RvdGFs
SXRlbXM7CisKKyAgICAvLyBudW1iZXIgb2YgbG9hZGVkIGl0ZW1zIGluIHRoZSBjYWNoZSBncm91
cAorICAgIGludCBtX2xvYWRlZEl0ZW1zOwogCiAgICAgLy8gRnJhbWUgdXNlZCBmb3IgZmV0Y2hp
bmcgcmVzb3VyY2VzIHdoZW4gdXBkYXRpbmcuCiAgICAgLy8gRklYTUU6IEFuIHVwZGF0ZSBzdGFy
dGVkIGJ5IGEgcGFydGljdWxhciBmcmFtZSBzaG91bGQgbm90IHN0b3AgaWYgaXQgaXMgZGVzdHJv
eWVkLCBidXQgdGhlcmUgYXJlIG90aGVyIGZyYW1lcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUg
Y2FjaGUgZ3JvdXAuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNh
dGlvbkNhY2hlSG9zdC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlSG9zdC5jcHAKaW5kZXggZmM5ODc0Ni4uZTNmZjc0YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1dlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtMjMwLDE0ICsyMzAsMjIg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYXRpb25DYWNoZShET01B
cHBsaWNhdGlvbkNhY2hlKiBkb21BcHBsaWMKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElEIGlkKQogeworICAgIFJlZlB0cjxFdmVu
dD4gZXZlbnQgPSBFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBl
KGlkKSwgZmFsc2UsIGZhbHNlKTsKKyAgICBub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKGV2ZW50
KTsKK30KKwordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25D
YWNoZShQYXNzUmVmUHRyPEV2ZW50PiBwcnBFdmVudCkKK3sKKyAgICBSZWZQdHI8RXZlbnQ+IGV2
ZW50ID0gcHJwRXZlbnQ7CisgICAgCiAgICAgaWYgKG1fZGVmZXJzRXZlbnRzKSB7CiAgICAgICAg
IC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBmaXJlZC4K
LSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICBtX2RlZmVycmVk
RXZlbnRzLmFwcGVuZChldmVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1f
ZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUo
RE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7
CisgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMp
OwogICAgICAgICBBU1NFUlQoIWVjKTsgICAgCiAgICAgfQogfQpAQCAtMjQ2LDEwICsyNTQsMTEg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAg
ICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RlZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBSZWZQ
dHI8RXZlbnQ+IGV2ZW50ID0gbV9kZWZlcnJlZEV2ZW50c1tpXTsKICAgICAgICAgaWYgKG1fZG9t
QXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNy
ZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSks
IGVjKTsKKyAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChl
dmVudCwgZWMpOworICAgICAgICAgICAgZXZlbnQucmVsZWFzZSgpOwogICAgICAgICAgICAgQVNT
RVJUKCFlYyk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmQ0ZDQwLi4xM2U0YTk3IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisrKyBiL1dl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQzLDYgKzQz
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRE9NQXBwbGljYXRpb25DYWNo
ZTsKICAgICBjbGFzcyBEb2N1bWVudExvYWRlcjsKKyAgICBjbGFzcyBFdmVudDsKICAgICBjbGFz
cyBLVVJMOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIFJlc291cmNlRXJy
b3I7CkBAIC0xMTAsNyArMTExLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZv
aWQgc2V0RE9NQXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKiBkb21BcHBsaWNh
dGlvbkNhY2hlKTsKICAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50
SUQgaWQpOwotCisgICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShQYXNzUmVm
UHRyPEV2ZW50PiBldmVudCk7CisgICAgICAgIAogICAgICAgICB2b2lkIHN0b3BEZWZlcnJpbmdF
dmVudHMoKTsgLy8gQWxzbyByYWlzZXMgdGhlIGV2ZW50cyB0aGF0IGhhdmUgYmVlbiBxdWV1ZWQg
dXAuCiAKICAgICBwcml2YXRlOgpAQCAtMTIwLDcgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNhY2hlOwog
ICAgICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKICAgICAgICAgYm9vbCBt
X2RlZmVyc0V2ZW50czsgLy8gRXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVu
dCBvbmxvYWQuCi0gICAgICAgIFZlY3RvcjxFdmVudElEPiBtX2RlZmVycmVkRXZlbnRzOworICAg
ICAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fZGVmZXJyZWRFdmVudHM7CiAKICNpZiBQTEFU
Rk9STShDSFJPTUlVTSkKICAgICAgICAgZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
SW50ZXJuYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56509</attachid>
            <date>2010-05-19 12:01:50 -0700</date>
            <delta_ts>2010-06-30 14:57:02 -0700</delta_ts>
            <desc>latest in-progress patch </desc>
            <filename>b37602-2010-05-19-a.patch</filename>
            <type>text/plain</type>
            <size>13387</size>
            <attacher name="Patrick Mueller">pmuellr</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJh
bWUtbWFpbi1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2Zv
cmVpZ24taWZyYW1lLW1haW4tZXhwZWN0ZWQudHh0CmluZGV4IDY0ZDRkZTIuLjE2NjFhZDMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJhbWUt
bWFpbi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9m
b3JlaWduLWlmcmFtZS1tYWluLWV4cGVjdGVkLnR4dApAQCAtNSw2ICs1LDcgQEAgZG93bmxvYWRp
bmcKIHByb2dyZXNzCiBwcm9ncmVzcwogcHJvZ3Jlc3MKK3Byb2dyZXNzCiBjYWNoZWQKIFNVQ0NF
U1MKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVz
cy1jb3VudGVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cHJvZ3Jlc3MtY291bnRlci1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uNGQ1YzkxZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyIEBA
CitUaGlzIHRlc3RzIHRoYXQgdGhlIGxvYWRlZEl0ZW1zIC8gdG90YWxJdGVtcyBwcm9wZXJ0aWVz
IG9mIHRoZSBwcm9ncmVzcyBldmVudCBhcmUgc2V0IGNvcnJlY3RseQorU1VDQ0VTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50ZXIuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzQ5NjBkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVy
Lmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9wcm9ncmVz
cy1jb3VudGVyLm1hbmlmZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZXhwZWN0ZWRMb2Fk
ZWQgPSAwCit2YXIgZXhwZWN0ZWRUb3RhbCAgPSAyCit2YXIgZXZlbnRzSGl0ID0gW10KKworZnVu
Y3Rpb24gbGVhdmUoKSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBw
cm9ncmVzcyhldmVudCkKK3sKKyAgICBpZiAoZXZlbnQubG9hZGVkICE9IGV4cGVjdGVkTG9hZGVk
KSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwg
PSAiRkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVudC5sb2FkZWQgdG8gYmUgIiArIGV4cGVj
dGVkTG9hZGVkICsgIiBidXQgd2FzICIgKyBldmVudC5sb2FkZWQ7CisgICAgICAgIGxlYXZlKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZXZlbnRzSGl0W2V4cGVjdGVkTG9hZGVkXSA9
IHRydWUKKworICAgIGV4cGVjdGVkTG9hZGVkKys7CisgICAgCisgICAgaWYgKGV2ZW50LnRvdGFs
ICE9IGV4cGVjdGVkVG90YWwpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiBleHBlY3RlZCBwcm9ncmVzc0V2ZW50LnRvdGFs
IHRvIGJlICIgKyBleHBlY3RlZFRvdGFsICsgIiBidXQgd2FzICIgKyBldmVudC50b3RhbDsKKyAg
ICAgICAgbGVhdmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rpb24gY2Fj
aGVkKCkKK3sKKyAgICBpZiAoZXZlbnRzSGl0Lmxlbmd0aCAhPSAzKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0
ZWQgMyBwcm9ncmVzcyBldmVudHMsIGJ1dCBnb3QgIiArIGV2ZW50c0hpdC5sZW5ndGg7CisgICAg
ICAgIGxlYXZlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOworICAgIGxlYXZlKCk7
Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignY2FjaGVkJywgY2FjaGVk
LCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywg
Y2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dy
ZXNzJywgcHJvZ3Jlc3MsIGZhbHNlKTsKKworPC9zY3JpcHQ+Cis8ZGl2PlRoaXMgdGVzdHMgdGhh
dCB0aGUgbG9hZGVkSXRlbXMgLyB0b3RhbEl0ZW1zIHByb3BlcnRpZXMgb2YgdGhlCitwcm9ncmVz
cyBldmVudCBhcmUgc2V0IGNvcnJlY3RseTwvZGl2PgorCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxV
UkU8L2Rpdj4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRwcy1vcmlnaW4tcmVzb3VyY2UuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRwcy1v
cmlnaW4tcmVzb3VyY2UuaHRtbAppbmRleCA2NzQ3MDZhLi42OGU0NzljIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMt
b3JpZ2luLXJlc291cmNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sCkBAIC0yMCw4
ICsyMCwxMiBAQCBmdW5jdGlvbiBlcnJvcigpCiAgICAgaGFkRXJyb3IgPSB0cnVlOwogICAgIGZp
bmlzaCgpOwogfQorZnVuY3Rpb24gcHJvZ3Jlc3MoZSkgeworICAgIGlmIChlLmxvYWRlZCA9PSBl
LnRvdGFsKSByZXR1cm47CisgICAgZmFpbCgpOworfQogCi1hcHBsaWNhdGlvbkNhY2hlLm9ucHJv
Z3Jlc3MgPSBmdW5jdGlvbigpIHsgZmFpbCgpOyB9CithcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jl
c3MgPSBmdW5jdGlvbihlKSB7IHByb2dyZXNzKGUpOyB9CiBhcHBsaWNhdGlvbkNhY2hlLm9ubm91
cGRhdGUgPSBmdW5jdGlvbigpIHsgZmluaXNoKCk7IH0KIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNo
ZWQgPSBmdW5jdGlvbigpIHsgZmluaXNoKCk7IH0KIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9
IGZ1bmN0aW9uKCkgeyBlcnJvcigpOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVzcy1jb3VudGVyLm1hbmlmZXN0IGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5p
ZmVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODc3Y2Q4Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJv
Z3Jlc3MtY291bnRlci5tYW5pZmVzdApAQCAtMCwwICsxLDMgQEAKK0NBQ0hFIE1BTklGRVNUCitz
aW1wbGUudHh0CitlbXB0eS50eHQKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hl
L0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCmluZGV4IDUyNjA0M2IuLjliNzY1NjkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcApAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIk1h
bmlmZXN0UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlByb2dyZXNzRXZl
bnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAK
QEAgLTUxLDYgKzUyLDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hl
R3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3AKICAgICA6IG1fbWFuaWZl
c3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX3VwZGF0ZVN0YXR1cyhJZGxlKQogICAgICwgbV9k
b3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3VudCgwKQorICAgICwgbV90
b3RhbCgwKQorICAgICwgbV9sb2FkZWQoMCkKICAgICAsIG1fZnJhbWUoMCkKICAgICAsIG1fc3Rv
cmFnZUlEKDApCiAgICAgLCBtX2lzT2Jzb2xldGUoZmFsc2UpCkBAIC03ODIsNyArNzg1LDEzIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUoKQogICAg
ICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgog
ICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKQogICAgICAgICAgICAgICAgIGNhY2hlU3Rv
cmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQoKSk7CisKICAgICAgICAgICAgIC8vIEZp
cmUgdGhlIHN1Y2Nlc3MgZXZlbnRzLgorICAgICAgICAgICAgQVNTRVJUKG1fbG9hZGVkID09IG1f
dG90YWwpOworICAgICAgICAgICAgQXRvbWljU3RyaW5nIGV2ZW50VHlwZSA9IERPTUFwcGxpY2F0
aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpQUk9HUkVTU19FVkVO
VCk7CisgICAgICAgICAgICBSZWZQdHI8UHJvZ3Jlc3NFdmVudD4gZXZlbnQgPSBQcm9ncmVzc0V2
ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgbV9sb2FkZWQsIG1fdG90YWwpOworICAgICAg
ICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudCwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJz
KTsKKwogICAgICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gQXBw
bGljYXRpb25DYWNoZUhvc3Q6OlVQREFURVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5pc01heGltdW1TaXplUmVh
Y2hlZCgpICYmICFtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTg0OSw3ICs4
NTgsMTEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGluZ0VudHJ5KCkK
ICAgICAKICAgICBFbnRyeU1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3BlbmRpbmdFbnRyaWVz
LmJlZ2luKCk7CiAKLSAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpQ
Uk9HUkVTU19FVkVOVCwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKKyAgICBBdG9taWNT
dHJpbmcgZXZlbnRUeXBlID0gRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5UKTsKKyAgICBSZWZQdHI8UHJvZ3Jlc3NFdmVu
dD4gZXZlbnQgPSBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgbV9sb2Fk
ZWQsIG1fdG90YWwpOworICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnQsIG1fYXNzb2NpYXRlZERv
Y3VtZW50TG9hZGVycyk7CisKKyAgICBtX2xvYWRlZCsrOwogCiAgICAgQVNTRVJUKCFtX2N1cnJl
bnRIYW5kbGUpOwogICAgIApAQCAtOTAwLDYgKzkxMyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjphZGRFbnRyeShjb25zdCBTdHJpbmcmIHVybCwgdW5zaWduZWQgdHlwZSkKICAgICB9
CiAgICAgCiAgICAgcGFpcjxFbnRyeU1hcDo6aXRlcmF0b3IsIGJvb2w+IHJlc3VsdCA9IG1fcGVu
ZGluZ0VudHJpZXMuYWRkKHVybCwgdHlwZSk7CisgICAgbV90b3RhbCsrOwogICAgIAogICAgIGlm
ICghcmVzdWx0LnNlY29uZCkKICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQgfD0gdHlwZTsK
QEAgLTk1MCw3ICs5NjQsMTIgQEAgY2xhc3MgQ2FsbENhY2hlTGlzdGVuZXJUYXNrIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
T3duUHRyPENhbGxDYWNoZUxpc3RlbmVyVGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnRM
b2FkZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRlciwgZXZl
bnRJRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRlciwg
ZXZlbnRJRCwgMCk7CisgICAgfQorCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlz
dGVuZXJUYXNrPiBjcmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBQYXNz
UmVmUHRyPEV2ZW50PiBldmVudCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hl
TGlzdGVuZXJUYXNrKGxvYWRlciwgKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEKTAsIGV2
ZW50KTsKICAgICB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKQEAgLTk2MywxOCArOTgyLDIzIEBAIHB1YmxpYzoKICAgICAK
ICAgICAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBtX2Rv
Y3VtZW50TG9hZGVyLmdldCgpKTsKIAotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNh
dGlvbkNhY2hlSG9zdCgpLT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCk7Cisg
ICAgICAgIGlmIChtX2V2ZW50KQorICAgICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+YXBwbGlj
YXRpb25DYWNoZUhvc3QoKS0+bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShtX2V2ZW50KTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbV9kb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNo
ZUhvc3QoKS0+bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShtX2V2ZW50SUQpOwogICAgIH0KIAog
cHJpdmF0ZToKLSAgICBDYWxsQ2FjaGVMaXN0ZW5lclRhc2soUGFzc1JlZlB0cjxEb2N1bWVudExv
YWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElEKQorICAg
IENhbGxDYWNoZUxpc3RlbmVyVGFzayhQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIs
IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIFBhc3NSZWZQdHI8RXZlbnQ+
IGV2ZW50KQogICAgICAgICA6IG1fZG9jdW1lbnRMb2FkZXIobG9hZGVyKQogICAgICAgICAsIG1f
ZXZlbnRJRChldmVudElEKQorICAgICAgICAsIG1fZXZlbnQoZXZlbnQpCiAgICAgewogICAgIH0K
IAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsKICAgICBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBtX2V2ZW50SUQ7CisgICAgUmVmUHRyPEV2ZW50PiBt
X2V2ZW50OwogfTsKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRh
c2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgY29uc3QgSGFzaFNldDxE
b2N1bWVudExvYWRlcio+JiBsb2FkZXJTZXQpCkBAIC05ODQsNiArMTAwOCwxMyBAQCB2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRCBldmVudAogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50SUQsICppdGVy
KTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYgbG9h
ZGVyU2V0KQoreworICAgIEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6Y29uc3RfaXRlcmF0b3Ig
bG9hZGVyU2V0RW5kID0gbG9hZGVyU2V0LmVuZCgpOworICAgIGZvciAoSGFzaFNldDxEb2N1bWVu
dExvYWRlcio+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbG9hZGVyU2V0LmJlZ2luKCk7IGl0ZXIg
IT0gbG9hZGVyU2V0RW5kOyArK2l0ZXIpCisgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnQs
ICppdGVyKTsKK30KKwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRh
c2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIq
IGxvYWRlcikKIHsKICAgICBGcmFtZSogZnJhbWUgPSBsb2FkZXItPmZyYW1lKCk7CkBAIC05OTUs
NiArMTAyNiwxNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudAogICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50
SUQpKTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2so
UGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7CisgICAg
RnJhbWUqIGZyYW1lID0gbG9hZGVyLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBBU1NFUlQoZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRl
cigpID09IGxvYWRlcik7CisKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soQ2FsbENh
Y2hlTGlzdGVuZXJUYXNrOjpjcmVhdGUobG9hZGVyLCBldmVudCkpOworfQorCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6Y2xlYXJTdG9yYWdlSUQoKQogewogICAgIG1fc3RvcmFnZUlEID0g
MDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5oIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgK
aW5kZXggOGRmNTJjYy4uYjEwMDdjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgKQEAgLTkyLDcgKzkyLDkgQEAgcHVibGljOgogCiBwcml2
YXRlOgogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkV2ZW50SUQsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYpOworICAgIHN0YXRp
YyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQsIGNvbnN0IEhh
c2hTZXQ8RG9jdW1lbnRMb2FkZXIqPiYpOwogICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRh
c2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIERvY3VtZW50TG9hZGVyKik7CisgICAg
c3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhQYXNzUmVmUHRyPEV2ZW50PiBldmVudCwgRG9j
dW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIHNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNh
bGxiYWNrKCk7CiAKICAgICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJj
ZUhhbmRsZShjb25zdCBLVVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBuZXdlc3RDYWNo
ZWRSZXNvdXJjZSk7CkBAIC0xNDcsNiArMTQ5LDEyIEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIFVS
THMgYW5kIHR5cGVzIG9mIHBlbmRpbmcgY2FjaGUgZW50cmllcy4KICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCB1bnNpZ25lZD4gRW50cnlNYXA7CiAgICAgRW50cnlNYXAgbV9wZW5kaW5nRW50
cmllczsKKyAgICAKKyAgICAvLyB0b3RhbCBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNhY2hlIGdy
b3VwCisgICAgaW50IG1fdG90YWw7CisKKyAgICAvLyBudW1iZXIgb2YgbG9hZGVkIGl0ZW1zIGlu
IHRoZSBjYWNoZSBncm91cAorICAgIGludCBtX2xvYWRlZDsKIAogICAgIC8vIEZyYW1lIHVzZWQg
Zm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0aW5nLgogICAgIC8vIEZJWE1FOiBBbiB1
cGRhdGUgc3RhcnRlZCBieSBhIHBhcnRpY3VsYXIgZnJhbWUgc2hvdWxkIG5vdCBzdG9wIGlmIGl0
IGlzIGRlc3Ryb3llZCwgYnV0IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgYXNzb2NpYXRlZCB3aXRo
IHRoZSBzYW1lIGNhY2hlIGdyb3VwLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwIGIvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IGZjOTg3NDYuLjkzMzFhNDggMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAorKysgYi9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTIzMCwx
NCArMjMwLDIyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2F0aW9u
Q2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSogZG9tQXBwbGljCiAKIHZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCkKIHsKKyAgICBS
ZWZQdHI8RXZlbnQ+IGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0
b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSk7CisgICAgbm90aWZ5RE9NQXBwbGljYXRpb25D
YWNoZShldmVudCk7Cit9CisKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUoUGFzc1JlZlB0cjxFdmVudD4gcHJwRXZlbnQpCit7CisgICAgUmVmUHRy
PEV2ZW50PiBldmVudCA9IHBycEV2ZW50OworCiAgICAgaWYgKG1fZGVmZXJzRXZlbnRzKSB7CiAg
ICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBm
aXJlZC4KLSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICBtX2Rl
ZmVycmVkRXZlbnRzLmFwcGVuZChldmVudCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
aWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2Up
LCBlYyk7CisgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChldmVu
dCwgZWMpOwogICAgICAgICBBU1NFUlQoIWVjKTsgICAgCiAgICAgfQogfQpAQCAtMjQ2LDEwICsy
NTQsMTEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygp
CiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KGRvY3VtZW50TG9hZGVyKCkp
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RlZmVycmVkRXZlbnRzLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAg
ICBSZWZQdHI8RXZlbnQ+IGV2ZW50ID0gbV9kZWZlcnJlZEV2ZW50c1tpXTsKICAgICAgICAgaWYg
KG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewogICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBm
YWxzZSksIGVjKTsKKyAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hF
dmVudChldmVudCwgZWMpOworICAgICAgICAgICAgZXZlbnQucmVsZWFzZSgpOwogICAgICAgICAg
ICAgQVNTRVJUKCFlYyk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oIGIvV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAppbmRleCA1MmQ0ZDQwLi5hMTcwYWZlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCisr
KyBiL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKQEAgLTQz
LDYgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRE9NQXBwbGljYXRp
b25DYWNoZTsKICAgICBjbGFzcyBEb2N1bWVudExvYWRlcjsKKyAgICBjbGFzcyBFdmVudDsKICAg
ICBjbGFzcyBLVVJMOwogICAgIGNsYXNzIFJlc291cmNlTG9hZGVyOwogICAgIGNsYXNzIFJlc291
cmNlRXJyb3I7CkBAIC0xMTAsNiArMTExLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgc2V0RE9NQXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKiBkb21B
cHBsaWNhdGlvbkNhY2hlKTsKICAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNhY2hl
KEV2ZW50SUQgaWQpOworICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoUGFz
c1JlZlB0cjxFdmVudD4gZXZlbnQpOwogCiAgICAgICAgIHZvaWQgc3RvcERlZmVycmluZ0V2ZW50
cygpOyAvLyBBbHNvIHJhaXNlcyB0aGUgZXZlbnRzIHRoYXQgaGF2ZSBiZWVuIHF1ZXVlZCB1cC4K
IApAQCAtMTIwLDcgKzEyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRE9NQXBw
bGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICBEb2N1bWVudExv
YWRlciogbV9kb2N1bWVudExvYWRlcjsKICAgICAgICAgYm9vbCBtX2RlZmVyc0V2ZW50czsgLy8g
RXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVudCBvbmxvYWQuCi0gICAgICAg
IFZlY3RvcjxFdmVudElEPiBtX2RlZmVycmVkRXZlbnRzOworICAgICAgICBWZWN0b3I8UmVmUHRy
PEV2ZW50PiA+IG1fZGVmZXJyZWRFdmVudHM7CiAKICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWw7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59278</attachid>
            <date>2010-06-21 13:01:32 -0700</date>
            <delta_ts>2010-06-21 13:06:58 -0700</delta_ts>
            <desc>chromium webkit api for the extra info</desc>
            <filename>progressEvents.txt</filename>
            <type>text/plain</type>
            <size>3777</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE1NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMjEgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBBUEkgdG8gcGFzcyBhZGRpb3Rp
b25hbCBpbmZvIG5lZWRlZCBmb3IgQXBwQ2FjaGUgcHJvZ3Jlc3MgZXZlbnRzLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2MDIKKworICAgICAgICBB
bHNvLCBkZWxldGUgYW4gb2Jzb2xldGUgbWV0aG9kIGZyb20gdGhlIHdvcmtlciBBUEkuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaDogZGVmaW5lIGEg
bmV3IG1ldGhvZAorICAgICAgICAqIHB1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaDogcmVtb3ZlIGFu
IG9ic29sdGUgbWV0aG9kCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJu
YWwuaDogaW1wbGVtZW50IHRoZSBuZXcgbWV0aG9kCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlSG9zdEludGVybmFsOjpub3RpZnlQcm9ncmVzc0V2ZW50TGlzdGVuZXIpOgorCiAy
MDEwLTA2LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oCShyZXZpc2lvbiA2
MTU2MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzksOCArMzksOSBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIC8vIFRoaXMgaW50ZXJmYWNlIGlzIHVzZWQgYnkgdGhlIGVtYmVkZGVyIHRvIGNhbGwgaW50
byB3ZWJraXQuCiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudCB7CiBwdWJsaWM6
Ci0gICAgLy8gQ2FsbGVkIHRvIGZpcmUgdGhlIGV2ZW50IGluIHRoZSBzY3JpcHRhYmxlIGludGVy
ZmFjZS4KKyAgICAvLyBDYWxsZWQgdG8gZmlyZSBldmVudHMgaW4gdGhlIHNjcmlwdGFibGUgaW50
ZXJmYWNlLgogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlFdmVudExpc3RlbmVyKFdlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVByb2dy
ZXNzRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJVUkwmLCBpbnQgbnVtX3RvdGFsLCBpbnQgbnVtX2Nv
bXBsZXRlKSA9IDA7CiAKIHByb3RlY3RlZDoKICAgICAvLyBTaG91bGQgbm90IGJlIGRlbGV0ZWQg
YnkgdGhlIGVtYmVkZGVyLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFyZWRX
b3JrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdv
cmtlci5oCShyZXZpc2lvbiA2MTU2MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hh
cmVkV29ya2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYzLDE1ICs2Myw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgc291cmNl
Q29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbG9uZyBzY3Jp
cHRSZXNvdXJjZUFwcENhY2hlSUQpID0gMDsKIAotICAgIC8vIEZJWE1FKG1pY2hhZWxuKTogUmVt
b3ZlIHRoaXMgYWZ0ZXIgdGhlIHJvbGwgYW5kIGFkanVzdGluZyB0byBpdC4KLSAgICB2aXJ0dWFs
IHZvaWQgc3RhcnRXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlVSTCYgc2NyaXB0VVJMLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB1c2VyQWdl
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcm
IHNvdXJjZUNvZGUpCi0gICAgewotICAgICAgICBzdGFydFdvcmtlckNvbnRleHQoc2NyaXB0VVJM
LCBuYW1lLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsIDApOwotICAgIH0KLQogICAgIGNsYXNzIENv
bm5lY3RMaXN0ZW5lciB7CiAgICAgcHVibGljOgogICAgICAgICAvLyBJbnZva2VkIG9uY2UgdGhl
IGNvbm5lY3QgZXZlbnQgaGFzIGJlZW4gc2VudCBzbyB0aGUgY2FsbGVyIGNhbiBmcmVlIHRoaXMg
b2JqZWN0LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdElu
dGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNh
Y2hlSG9zdEludGVybmFsLmgJKHJldmlzaW9uIDYxNTYyKQorKysgV2ViS2l0L2Nocm9taXVtL3Ny
Yy9BcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTU3LDYg
KzU3LDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbm5lckhvc3QtPm5vdGlmeURPTUFwcGxpY2F0
aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50
SUQpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UHJvZ3Jlc3NFdmVudExpc3Rl
bmVyKGNvbnN0IFdlYlVSTCYsIGludCBudW1fdG90YWwsIGludCBudW1fY29tcGxldGUpIAorICAg
IHsKKyAgICAgICAgLy8gRklYTUU6IE1vZGlmeSB3ZWJjb3JlJ3MgcHJvZ3Jlc3MgZXZlbnQgaGFu
ZGxpbmcgdG8gY2FycnkgdGhlIGV4dHJhIGluZm8gYW5kIGFsdGVyIHRoZQorICAgICAgICAvLyBs
YXlvdXQgdGVzdHMgdG8gbm90IGZhaWwgd2hlbiB0aGUgbW9yZSByZWNlbnRseSBzcGVjaWZpZWQg
J2ZpbmFsJyBldmVudCBpcyByYWlzZWQuCisgICAgICAgIC8vIEZvciBub3csIHdlJ3JlIGVhdGlu
ZyB0aGUgZXh0cmEgaW5mbyBhbmQgdGhhdCBsYXN0IGV2ZW50LgorICAgICAgICAvLyBTZWUgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NjAyCisgICAgICAgIGlmIChu
dW1fY29tcGxldGUgPT0gbnVtX3RvdGFsKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBu
b3RpZnlFdmVudExpc3RlbmVyKFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZUhvc3Q6OlByb2dy
ZXNzRXZlbnQpOworICAgIH0KKwogICAgIHN0YXRpYyBXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0KiB0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBp
bm5lckhvc3QpCiAgICAgewogICAgICAgICBpZiAoaW5uZXJIb3N0ICYmIGlubmVySG9zdC0+bV9p
bnRlcm5hbC5nZXQoKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59279</attachid>
            <date>2010-06-21 13:06:58 -0700</date>
            <delta_ts>2010-06-21 15:54:10 -0700</delta_ts>
            <desc>chromium webkit api for the extra info</desc>
            <filename>progressEvents2.txt</filename>
            <type>text/plain</type>
            <size>3776</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE1NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMjEgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBBUEkgdG8gcGFzcyBhZGRpdGlv
bmFsIGluZm8gbmVlZGVkIGZvciBBcHBDYWNoZSBwcm9ncmVzcyBldmVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIEFs
c28sIGRlbGV0ZSBhbiBvYnNvbGV0ZSBtZXRob2QgZnJvbSB0aGUgd29ya2VyIEFQSS4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oOiBkZWZpbmUgYSBu
ZXcgbWV0aG9kCisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlci5oOiByZW1vdmUgYW4g
b2Jzb2x0ZSBtZXRob2QKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5h
bC5oOiBpbXBsZW1lbnQgdGhlIG5ldyBtZXRob2QKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWw6Om5vdGlmeVByb2dyZXNzRXZlbnRMaXN0ZW5lcik6CisKIDIw
MTAtMDYtMjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgJKHJldmlzaW9uIDYx
NTYyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogLy8gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSB0aGUgZW1iZWRkZXIgdG8gY2FsbCBpbnRv
IHdlYmtpdC4KIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICAvLyBDYWxsZWQgdG8gZmlyZSB0aGUgZXZlbnQgaW4gdGhlIHNjcmlwdGFibGUgaW50ZXJm
YWNlLgorICAgIC8vIENhbGxlZCB0byBmaXJlIGV2ZW50cyBpbiB0aGUgc2NyaXB0YWJsZSBpbnRl
cmZhY2UuCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UHJvZ3Jl
c3NFdmVudExpc3RlbmVyKGNvbnN0IFdlYlVSTCYsIGludCBudW1fdG90YWwsIGludCBudW1fY29t
cGxldGUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIC8vIFNob3VsZCBub3QgYmUgZGVsZXRlZCBi
eSB0aGUgZW1iZWRkZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdv
cmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hhcmVkV29y
a2VyLmgJKHJldmlzaW9uIDYxNTYyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFy
ZWRXb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTUgKzYzLDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VD
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNjcmlw
dFJlc291cmNlQXBwQ2FjaGVJRCkgPSAwOwogCi0gICAgLy8gRklYTUUobWljaGFlbG4pOiBSZW1v
dmUgdGhpcyBhZnRlciB0aGUgcm9sbCBhbmQgYWRqdXN0aW5nIHRvIGl0LgotICAgIHZpcnR1YWwg
dm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgV2ViVVJMJiBzY3JpcHRVUkwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHVzZXJBZ2Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
c291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHN0YXJ0V29ya2VyQ29udGV4dChzY3JpcHRVUkws
IG5hbWUsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgMCk7Ci0gICAgfQotCiAgICAgY2xhc3MgQ29u
bmVjdExpc3RlbmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIEludm9rZWQgb25jZSB0aGUg
Y29ubmVjdCBldmVudCBoYXMgYmVlbiBzZW50IHNvIHRoZSBjYWxsZXIgY2FuIGZyZWUgdGhpcyBv
YmplY3QuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50
ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0SW50ZXJuYWwuaAkocmV2aXNpb24gNjE1NjIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTcsNiAr
NTcsMTcgQEAgcHVibGljOgogICAgICAgICBtX2lubmVySG9zdC0+bm90aWZ5RE9NQXBwbGljYXRp
b25DYWNoZShzdGF0aWNfY2FzdDxBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRD4oZXZlbnRJ
RCkpOwogICAgIH0KIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQcm9ncmVzc0V2ZW50TGlzdGVu
ZXIoY29uc3QgV2ViVVJMJiwgaW50IG51bV90b3RhbCwgaW50IG51bV9jb21wbGV0ZSkgCisgICAg
eworICAgICAgICAvLyBGSVhNRTogTW9kaWZ5IHdlYmNvcmUncyBwcm9ncmVzcyBldmVudCBoYW5k
bGluZyB0byBjYXJyeSB0aGUgZXh0cmEgaW5mbyBhbmQgYWx0ZXIgdGhlCisgICAgICAgIC8vIGxh
eW91dCB0ZXN0cyB0byBub3QgZmFpbCB3aGVuIHRoZSBtb3JlIHJlY2VudGx5IHNwZWNpZmllZCAn
ZmluYWwnIGV2ZW50IGlzIHJhaXNlZC4KKyAgICAgICAgLy8gRm9yIG5vdywgd2UncmUgZWF0aW5n
IHRoZSBleHRyYSBpbmZvIGFuZCB0aGF0IGxhc3QgZXZlbnQuCisgICAgICAgIC8vIFNlZSBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2MDIKKyAgICAgICAgaWYgKG51
bV9jb21wbGV0ZSA9PSBudW1fdG90YWwpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5v
dGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UHJvZ3Jl
c3NFdmVudCk7CisgICAgfQorCiAgICAgc3RhdGljIFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNo
ZUhvc3QqIHRvV2ViQXBwbGljYXRpb25DYWNoZUhvc3QoQXBwbGljYXRpb25DYWNoZUhvc3QqIGlu
bmVySG9zdCkKICAgICB7CiAgICAgICAgIGlmIChpbm5lckhvc3QgJiYgaW5uZXJIb3N0LT5tX2lu
dGVybmFsLmdldCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59303</attachid>
            <date>2010-06-21 15:54:10 -0700</date>
            <delta_ts>2010-06-25 05:59:56 -0700</delta_ts>
            <desc>chromium webkit api for the extra info</desc>
            <filename>progressEvents3.txt</filename>
            <type>text/plain</type>
            <size>3923</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjE1NjUpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTAtMDYtMjEgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBBUEkgdG8gcGFzcyBhZGRpdGlv
bmFsIGluZm8gbmVlZGVkIGZvciBBcHBDYWNoZSBwcm9ncmVzcyBldmVudHMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIEFs
c28sIGRlbGV0ZSBhbiBvYnNvbGV0ZSBtZXRob2QgZnJvbSB0aGUgd29ya2VyIEFQSS4KKworICAg
ICAgICAqIHB1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudC5oOiBkZWZpbmUgYSBu
ZXcgbWV0aG9kCisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlci5oOiByZW1vdmUgYW4g
b2Jzb2x0ZSBtZXRob2QKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5h
bC5oOiBpbXBsZW1lbnQgdGhlIG5ldyBtZXRob2QKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWw6Om5vdGlmeVByb2dyZXNzRXZlbnRMaXN0ZW5lcik6CisKIDIw
MTAtMDYtMjEgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50LmgJKHJldmlzaW9uIDYx
NTYyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw4ICszOSw5IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogLy8gVGhpcyBpbnRlcmZhY2UgaXMgdXNlZCBieSB0aGUgZW1iZWRkZXIgdG8gY2FsbCBpbnRv
IHdlYmtpdC4KIGNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0Q2xpZW50IHsKIHB1YmxpYzoK
LSAgICAvLyBDYWxsZWQgdG8gZmlyZSB0aGUgZXZlbnQgaW4gdGhlIHNjcmlwdGFibGUgaW50ZXJm
YWNlLgorICAgIC8vIENhbGxlZCB0byBmaXJlIGV2ZW50cyBpbiB0aGUgc2NyaXB0YWJsZSBpbnRl
cmZhY2UuCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UHJvZ3Jl
c3NFdmVudExpc3RlbmVyKGNvbnN0IFdlYlVSTCYsIGludCBudW1fdG90YWwsIGludCBudW1fY29t
cGxldGUpID0gMDsKIAogcHJvdGVjdGVkOgogICAgIC8vIFNob3VsZCBub3QgYmUgZGVsZXRlZCBi
eSB0aGUgZW1iZWRkZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdv
cmtlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hhcmVkV29y
a2VyLmgJKHJldmlzaW9uIDYxNTYyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFy
ZWRXb3JrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjMsMTUgKzYzLDYgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VD
b2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBsb25nIHNjcmlw
dFJlc291cmNlQXBwQ2FjaGVJRCkgPSAwOwogCi0gICAgLy8gRklYTUUobWljaGFlbG4pOiBSZW1v
dmUgdGhpcyBhZnRlciB0aGUgcm9sbCBhbmQgYWRqdXN0aW5nIHRvIGl0LgotICAgIHZpcnR1YWwg
dm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgV2ViVVJMJiBzY3JpcHRVUkwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIG5hbWUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJTdHJpbmcmIHVzZXJBZ2Vu
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
c291cmNlQ29kZSkKLSAgICB7Ci0gICAgICAgIHN0YXJ0V29ya2VyQ29udGV4dChzY3JpcHRVUkws
IG5hbWUsIHVzZXJBZ2VudCwgc291cmNlQ29kZSwgMCk7Ci0gICAgfQotCiAgICAgY2xhc3MgQ29u
bmVjdExpc3RlbmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIEludm9rZWQgb25jZSB0aGUg
Y29ubmVjdCBldmVudCBoYXMgYmVlbiBzZW50IHNvIHRoZSBjYWxsZXIgY2FuIGZyZWUgdGhpcyBv
YmplY3QuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50
ZXJuYWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0SW50ZXJuYWwuaAkocmV2aXNpb24gNjE1NjIpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQAogI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgogI2luY2x1ZGUgIldlYktpdC5oIgog
I2luY2x1ZGUgIldlYktpdENsaWVudC5oIgorI2luY2x1ZGUgIldlYlVSTC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTU3LDYgKzU4LDE3IEBAIHB1YmxpYzoKICAgICAgICAgbV9pbm5l
ckhvc3QtPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25D
YWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZvaWQg
bm90aWZ5UHJvZ3Jlc3NFdmVudExpc3RlbmVyKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgaW50IG51
bV90b3RhbCwgaW50IG51bV9jb21wbGV0ZSkgCisgICAgeworICAgICAgICAvLyBGSVhNRTogTW9k
aWZ5IHdlYmNvcmUncyBwcm9ncmVzcyBldmVudCBoYW5kbGluZyB0byBjYXJyeSB0aGUgZXh0cmEg
aW5mbyBhbmQgYWx0ZXIgdGhlCisgICAgICAgIC8vIGxheW91dCB0ZXN0cyB0byBub3QgZmFpbCB3
aGVuIHRoZSBtb3JlIHJlY2VudGx5IHNwZWNpZmllZCAnZmluYWwnIGV2ZW50IGlzIHJhaXNlZC4K
KyAgICAgICAgLy8gRm9yIG5vdywgd2UncmUgZWF0aW5nIHRoZSBleHRyYSBpbmZvIGFuZCB0aGF0
IGxhc3QgZXZlbnQuCisgICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzc2MDIKKyAgICAgICAgaWYgKG51bV9jb21wbGV0ZSA9PSBudW1fdG90YWwp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0
OjpXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UHJvZ3Jlc3NFdmVudCk7CisgICAgfQorCiAgICAg
c3RhdGljIFdlYktpdDo6V2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIHRvV2ViQXBwbGljYXRpb25D
YWNoZUhvc3QoQXBwbGljYXRpb25DYWNoZUhvc3QqIGlubmVySG9zdCkKICAgICB7CiAgICAgICAg
IGlmIChpbm5lckhvc3QgJiYgaW5uZXJIb3N0LT5tX2ludGVybmFsLmdldCgpKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60156</attachid>
            <date>2010-06-30 14:57:02 -0700</date>
            <delta_ts>2010-06-30 19:42:08 -0700</delta_ts>
            <desc>ProgressEvents</desc>
            <filename>progress.txt</filename>
            <type>text/plain</type>
            <size>23399</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjIwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGNsYXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQg
cHJvZ3Jlc3MgZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBh
bmQgJ2xlbmd0aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhl
IGZpbmFsIHByb2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJp
YnV0ZQorICAgICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFj
ZSB3aXRoIHRoZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OkNhbGxDYWNoZUxp
c3RlbmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBv
c3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpEZWZlcnJlZEV2ZW50OjpEZWZlcnJlZEV2ZW50KToKKwogMjAxMC0wNi0zMCAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3Vz
dGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlRwogICAg
IDogbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUp
CiAgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50KDAp
CisgICAgLCBtX3Byb2dyZXNzVG90YWwoMCkKKyAgICAsIG1fcHJvZ3Jlc3NEb25lKDApCiAgICAg
LCBtX2ZyYW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQogICAgICwgbV9pc09ic29sZXRlKGZh
bHNlKQpAQCAtNjc0LDcgKzY3NiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lV2hpdGVsaXN0KG1h
bmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5n
VXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlmZXN0LmFsbG93QWxsTmV0
d29ya1JlcXVlc3RzKTsKLSAgICAKKworICAgIG1fcHJvZ3Jlc3NUb3RhbCA9IG1fcGVuZGluZ0Vu
dHJpZXMuc2l6ZSgpOworICAgIG1fcHJvZ3Jlc3NEb25lID0gMDsKKwogICAgIHN0YXJ0TG9hZGlu
Z0VudHJ5KCk7CiB9CiAKQEAgLTc4Miw3ICs3ODcsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93
IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKQog
ICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQo
KSk7Ci0gICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50cy4KKworICAgICAgICAg
ICAgLy8gRmlyZSB0aGUgZmluYWwgcHJvZ3Jlc3MgZXZlbnQuCisgICAgICAgICAgICBBU1NFUlQo
bV9wcm9ncmVzc0RvbmUgPT0gbV9wcm9ncmVzc1RvdGFsKTsKKyAgICAgICAgICAgIHBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX3Byb2dyZXNz
VG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworCisg
ICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50LgogICAgICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVQREFU
RVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYWNoZVN0b3JhZ2UoKS5pc01heGltdW1TaXplUmVhY2hlZCgpICYmICFtX2NhbGxlZFJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTg0OSw3ICs4NTksOCBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nCiAgICAgCiAgICAgRW50cnlNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9wZW5kaW5nRW50cmllcy5iZWdpbigpOwogCi0gICAgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JFU1NfRVZFTlQsIG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycyk7CisgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UFJPR1JFU1NfRVZFTlQsIG1fcHJvZ3Jlc3NUb3RhbCwgbV9wcm9ncmVzc0RvbmUsIG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgbV9wcm9ncmVzc0RvbmUrKzsKIAogICAgIEFTU0VS
VCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKQEAgLTk0OCw5ICs5NTksOSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjCiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVy
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
IGV2ZW50SUQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9u
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRl
ciwgZXZlbnRJRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxv
YWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTk2MywyOCArOTc0LDMyIEBAIHB1YmxpYzoKICAgICAKICAgICAgICAgQVNTRVJUKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBtX2RvY3VtZW50TG9hZGVyLmdldCgp
KTsKIAotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCk7CisgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUo
bV9ldmVudElELCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBD
YWxsQ2FjaGVMaXN0ZW5lclRhc2soUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwg
aW50IHByb2dyZXNzRG9uZSkKICAgICAgICAgOiBtX2RvY3VtZW50TG9hZGVyKGxvYWRlcikKICAg
ICAgICAgLCBtX2V2ZW50SUQoZXZlbnRJRCkKKyAgICAgICAgLCBtX3Byb2dyZXNzVG90YWwocHJv
Z3Jlc3NUb3RhbCkKKyAgICAgICAgLCBtX3Byb2dyZXNzRG9uZShwcm9ncmVzc0RvbmUpCiAgICAg
ewogICAgIH0KIAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBtX2V2ZW50SUQ7CisgICAgaW50IG1f
cHJvZ3Jlc3NUb3RhbDsKKyAgICBpbnQgbV9wcm9ncmVzc0RvbmU7CiB9OwogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCBldmVudElELCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNl
dCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsK
ICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVu
ZCA9IGxvYWRlclNldC5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxvYWRlclNldC5iZWdpbigpOyBpdGVyICE9IGxvYWRlclNl
dEVuZDsgKytpdGVyKQotICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50SUQsICppdGVyKTsK
KyAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVz
c0RvbmUsICppdGVyKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJU
YXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IGxvYWRlci0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtOTkyLDcg
KzEwMDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyCiAgICAg
CiAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIp
OwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxDYWNoZUxpc3RlbmVyVGFz
azo6Y3JlYXRlKGxvYWRlciwgZXZlbnRJRCkpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0
VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dy
ZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y2xlYXJTdG9yYWdlSUQoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDggKzkxLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb3B5OyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRl
cio+Jik7Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0TGlz
dGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBjb25zdCBIYXNoU2V0
PERvY3VtZW50TG9hZGVyKj4mIHNldCkgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAwLCBzZXQp
OyB9CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRCBpZCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgIHsgcG9zdExpc3RlbmVyVGFz
ayhpZCwgMCwgMCwgbG9hZGVyKTsgfQorICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2so
QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBzdGF0aWMg
dm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBpbnQg
cHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXIqKTsKKwogICAg
IHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKIAogICAgIFBh
c3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwm
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsKQEAgLTE0
Nyw2ICsxNTAsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMgb2YgcGVu
ZGluZyBjYWNoZSBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
PiBFbnRyeU1hcDsKICAgICBFbnRyeU1hcCBtX3BlbmRpbmdFbnRyaWVzOworICAgIAorICAgIC8v
IFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gYmUgcHJvY2Vzc2VkIHRvIHVwZGF0ZSB0aGUg
Y2FjaGUgZ3JvdXAgYW5kIHRoZSBudW1iZXIgdGhhdCBoYXZlIGJlZW4gZG9uZS4KKyAgICBpbnQg
bV9wcm9ncmVzc1RvdGFsOworICAgIGludCBtX3Byb2dyZXNzRG9uZTsKIAogICAgIC8vIEZyYW1l
IHVzZWQgZm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0aW5nLgogICAgIC8vIEZJWE1F
OiBBbiB1cGRhdGUgc3RhcnRlZCBieSBhIHBhcnRpY3VsYXIgZnJhbWUgc2hvdWxkIG5vdCBzdG9w
IGlmIGl0IGlzIGRlc3Ryb3llZCwgYnV0IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBzYW1lIGNhY2hlIGdyb3VwLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjIxNDcpCisrKyBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgi
CisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAg
LTIyOCwzNSArMjI5LDQyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxp
Y2EKICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2
ZW50SUQgaWQpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlv
bkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7CiAgICAgaWYgKG1fZGVm
ZXJzRXZlbnRzKSB7Ci0gICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1l
bnQub25sb2FkIGhhcyBmaXJlZC4KLSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQp
OworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBkZWZlcnJlZCB1bnRpbCBkb2N1bWVu
dC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChEZWZl
cnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsgICAgCi0gICAgfQorICAgIGRpc3BhdGNoRE9N
RXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90
ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rl
ZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVy
cmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIG1fZG9tQXBwbGljYXRp
b25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6
OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRGVmZXJyZWRFdmVudCYgZGVmZXJyZWQg
PSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBkaXNwYXRjaERPTUV2ZW50KGRlZmVycmVk
LmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90YWwsIGRlZmVycmVkLnByb2dyZXNzRG9uZSk7
CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2RlZmVyc0V2ZW50
cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2
ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCit7CisgICAgaWYgKG1fZG9tQXBw
bGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9
IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKTsKKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CisgICAgICAgIGlmIChp
ZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAgICAgIGV2ZW50ID0gUHJvZ3Jlc3NFdmVudDo6
Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpOwor
ICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsK
KyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlz
aW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDggKzEwOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCB1cGRhdGUoKTsKICAgICAgICAgYm9vbCBzd2FwQ2FjaGUoKTsKIAot
ICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSog
ZG9tQXBwbGljYXRpb25DYWNoZSk7Ci0gICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25D
YWNoZShFdmVudElEIGlkKTsKKyAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERP
TUFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKEV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKTsKIAogICAg
ICAgICB2b2lkIHN0b3BEZWZlcnJpbmdFdmVudHMoKTsgLy8gQWxzbyByYWlzZXMgdGhlIGV2ZW50
cyB0aGF0IGhhdmUgYmVlbiBxdWV1ZWQgdXAuCiAKQEAgLTExNywxMCArMTE3LDIwIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7
CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9j
dW1lbnRMb2FkZXI7IH0KIAorICAgICAgICBzdHJ1Y3QgRGVmZXJyZWRFdmVudAorICAgICAgICB7
CisgICAgICAgICAgICBFdmVudElEIGV2ZW50SUQ7CisgICAgICAgICAgICBpbnQgcHJvZ3Jlc3NU
b3RhbDsKKyAgICAgICAgICAgIGludCBwcm9ncmVzc0RvbmU7CisgICAgICAgICAgICBEZWZlcnJl
ZEV2ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpIDogZXZlbnRJRChpZCksIHBy
b2dyZXNzVG90YWwodG90YWwpLCBwcm9ncmVzc0RvbmUoZG9uZSkgeyB9CisgICAgICAgIH07CisK
ICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNhY2hlOwogICAg
ICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKICAgICAgICAgYm9vbCBtX2Rl
ZmVyc0V2ZW50czsgLy8gRXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVudCBv
bmxvYWQuCi0gICAgICAgIFZlY3RvcjxFdmVudElEPiBtX2RlZmVycmVkRXZlbnRzOworICAgICAg
ICBWZWN0b3I8RGVmZXJyZWRFdmVudD4gbV9kZWZlcnJlZEV2ZW50czsKKworICAgICAgICB2b2lk
IGRpc3BhdGNoRE9NRXZlbnQoRXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVz
c0RvbmUpOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGZyaWVuZCBjbGFzcyBB
cHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2
MjIwNSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyMSBAQAorMjAxMC0wNi0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xl
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
c2UgY2xhc3MgUHJvZ3Jlc3NFdmVudCB3aGVuIHJhaXNpbmcgYXBwY2FjaGUgcmVsYXRlZCBwcm9n
cmVzcyBldmVudHMgYW5kCisgICAgICAgIHNldCB0aGUgJ3RvdGFsJywgJ2xvYWRlZCcsIGFuZCAn
bGVuZ3RoQ29tcHV0YWJsZScgYXR0cmlidXRlcy4KKyAgICAgICAgQWxzbyByYWlzZSB0aGUgZmlu
YWwgcHJvZ3Jlc3MgZXZlbnQgd2l0aCB0aGUgJ3RvdGFsJyBhbmQgJ2xvYWRlZCcgYXR0cmlidXRl
CisgICAgICAgIHZhbHVlcyBhcmUgZXF1YWwgdG8gb25lIGFub3RoZXIgdG8ga2VlcCBwYWNlIHdp
dGggdGhlIHNwZWMgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NjAyCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25D
YWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om5v
dGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUhvc3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGlj
YXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQpOgorICAgICAgICAqIHNyYy9BcHBsaWNh
dGlvbkNhY2hlSG9zdEludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlSG9zdEludGVybmFsOjpub3RpZnlFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWw6Om5vdGlmeVByb2dyZXNzRXZlbnRMaXN0ZW5l
cik6CisKIDIwMTAtMDYtMjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA2MjE0NykK
KysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNp
bmNsdWRlICJET01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
ZWJVUkwuaCIKICNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgpAQCAtMTk1LDM0ICsxOTYsNDIgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogICAgIG1fZG9tQXBwbGlj
YXRpb25DYWNoZSA9IGRvbUFwcGxpY2F0aW9uQ2FjaGU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCkKK3ZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCwg
aW50IHRvdGFsLCBpbnQgZG9uZSkKIHsKICAgICBpZiAobV9kZWZlcnNFdmVudHMpIHsKLSAgICAg
ICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICAvLyBFdmVudCBkaXNwYXRj
aGluZyBpcyBkZWZlcnJlZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAg
ICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChEZWZlcnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkp
OwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUp
IHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRp
b25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6
OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVj
KTsKLSAgICB9CisgICAgZGlzcGF0Y2hET01FdmVudChpZCwgdG90YWwsIGRvbmUpOwogfQogCiB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKIHsKICAgICBS
ZWZQdHI8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3QoZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZGVmZXJyZWRFdmVudHMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgRXZlbnRJRCBpZCA9IG1fZGVmZXJyZWRFdmVudHNbaV07Ci0gICAgICAgIGlmIChtX2Rv
bUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgICAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50Ojpj
cmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2Up
LCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgfQorICAgICAgICBjb25z
dCBEZWZlcnJlZEV2ZW50JiBkZWZlcnJlZCA9IG1fZGVmZXJyZWRFdmVudHNbaV07CisgICAgICAg
IGRpc3BhdGNoRE9NRXZlbnQoZGVmZXJyZWQuZXZlbnRJRCwgZGVmZXJyZWQucHJvZ3Jlc3NUb3Rh
bCwgZGVmZXJyZWQucHJvZ3Jlc3NEb25lKTsKICAgICB9CiAgICAgbV9kZWZlcnJlZEV2ZW50cy5j
bGVhcigpOwogICAgIG1fZGVmZXJzRXZlbnRzID0gZmFsc2U7CiB9CiAKK3ZvaWQgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQoRXZlbnRJRCBpZCwgaW50IHRvdGFsLCBpbnQg
ZG9uZSkKK3sKKyAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0gRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5
cGUoaWQpOworICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgUmVmUHRyPEV2
ZW50PiBldmVudDsKKyAgICAgICAgaWYgKGlkID09IFBST0dSRVNTX0VWRU5UKQorICAgICAgICAg
ICAgZXZlbnQgPSBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBkb25lLCB0
b3RhbCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShl
dmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+
ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9Cit9
CisKIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnN0
YXR1cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwgPyBzdGF0aWNfY2FzdDxTdGF0
dXM+KG1faW50ZXJuYWwtPm1fb3V0ZXJIb3N0LT5zdGF0dXMoKSkgOiBVTkNBQ0hFRDsKSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5h
bC5oCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25D
YWNoZUhvc3RJbnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxOCArNTUsMTIgQEAgcHVi
bGljOgogCiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElEKQogICAgIHsKLSAgICAgICAgbV9p
bm5lckhvc3QtPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsKKyAgICAgICAgbV9pbm5lckhvc3QtPm5v
dGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6
OkV2ZW50SUQ+KGV2ZW50SUQpLCAwLCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90
aWZ5UHJvZ3Jlc3NFdmVudExpc3RlbmVyKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgaW50IG51bV90
b3RhbCwgaW50IG51bV9jb21wbGV0ZSkgCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVByb2dyZXNz
RXZlbnRMaXN0ZW5lcihjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGludCBwcm9ncmVzc1RvdGFsLCBp
bnQgcHJvZ3Jlc3NEb25lKSAKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBNb2RpZnkgd2ViY29y
ZSdzIHByb2dyZXNzIGV2ZW50IGhhbmRsaW5nIHRvIGNhcnJ5IHRoZSBleHRyYSBpbmZvIGFuZCBh
bHRlciB0aGUKLSAgICAgICAgLy8gbGF5b3V0IHRlc3RzIHRvIG5vdCBmYWlsIHdoZW4gdGhlIG1v
cmUgcmVjZW50bHkgc3BlY2lmaWVkICdmaW5hbCcgZXZlbnQgaXMgcmFpc2VkLgotICAgICAgICAv
LyBGb3Igbm93LCB3ZSdyZSBlYXRpbmcgdGhlIGV4dHJhIGluZm8gYW5kIHRoYXQgbGFzdCBldmVu
dC4KLSAgICAgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zNzYwMgotICAgICAgICBpZiAobnVtX2NvbXBsZXRlID09IG51bV90b3RhbCkKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgbm90aWZ5RXZlbnRMaXN0ZW5lcihXZWJLaXQ6OldlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpQcm9ncmVzc0V2ZW50KTsKKyAgICAgICAgbV9pbm5lckhvc3QtPm5v
dGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VW
RU5ULCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpOwogICAgIH0KIAogICAgIHN0YXRpYyBX
ZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiB0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0
KEFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBpbm5lckhvc3QpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjIw
NSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIw
IEBACisyMDEwLTA2LTMwICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxh
eW91dCB0ZXN0IHRvIHZlcmlmeSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHByb2dyZXNzIGV2ZW50
cyBhcmUgcmFpc2VkIGJ5IHRoZSBhcHBjYWNoZSwKKyAgICAgICAgYW5kIHRoYXQgdGhvc2UgZXZl
bnRzIGhhdmUgcHJvcGVybHkgc2V0ICdsZW5ndGhDb21wdXRhYmxlJywgJ2xvYWRlZCcsIGFuZCAn
dG90YWwnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gdXBkYXRlIGEgY291cGxlIG9mIG90aGVy
IHRlc3RzIHRoYXQgZGVwZW5kIG9uIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcHJvZ3Jlc3MgZXZl
bnRzIHRvCisgICAgICAgIGRldGVybWluZSBzdWNjZXNzIG9yIGZhaWx1cmUgdG8gbm93IGV4cGVj
dCB0aGUgYWRkaXRpb25hbCBmaW5hbCBwcm9ncmVzcyBldmVudCB0aGF0IGlzIGJlaW5nCisgICAg
ICAgIHJhaXNlZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM3NjAyCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1l
LW1haW4tZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jl
c3MtY291bnRlci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBw
Y2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2FwcGNhY2hlL3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0bWw6
CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRl
ci5tYW5pZmVzdDogQWRkZWQuCisKIDIwMTAtMDYtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWln
bi1pZnJhbWUtbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyMTQ3KQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAgZG93bmxvYWRpbmcKIHByb2dyZXNzCiBwcm9n
cmVzcwogcHJvZ3Jlc3MKK3Byb2dyZXNzCiBjYWNoZWQKIFNVQ0NFU1MKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNv
dW50ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyIEBACitUaGlzIHRlc3RzIHRoYXQgdGhlIGxvYWRlZEl0ZW1zIC8gdG90YWxJdGVt
cyBwcm9wZXJ0aWVzIG9mIHRoZSBwcm9ncmVzcyBldmVudCBhcmUgc2V0IGNvcnJlY3RseQorU1VD
Q0VTUwpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3Vu
dGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9w
cm9ncmVzcy1jb3VudGVyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50ZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2MSBAQAorPGh0bWwgbWFuaWZlc3Q9InJlc291cmNlcy9wcm9ncmVzcy1jb3VudGVyLm1hbmlm
ZXN0Ij4KKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIud2FpdFVudGlsRG9uZSgpOworfQorCit2YXIgZXhwZWN0ZWRMb2FkZWQgPSAwCit2YXIgZXhw
ZWN0ZWRUb3RhbCAgPSAyCit2YXIgZXZlbnRzSGl0ID0gW10KKworZnVuY3Rpb24gZG9uZSgpIHsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHByb2dyZXNzKGV2ZW50KQor
eworICAgIGlmICghZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUxVUkU6IGV4cGVjdGVkIHBy
b2dyZXNzRXZlbnQubGVuZ3RoQ29tcHV0YWJsZSB0byBiZSB0cnVlIjsKKyAgICAgICAgZG9uZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVudC5sb2FkZWQgIT0gZXhwZWN0
ZWRMb2FkZWQpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlu
bmVySFRNTCA9ICJGQUlMVVJFOiBleHBlY3RlZCBwcm9ncmVzc0V2ZW50LmxvYWRlZCB0byBiZSAi
ICsgZXhwZWN0ZWRMb2FkZWQgKyAiIGJ1dCB3YXMgIiArIGV2ZW50LmxvYWRlZDsKKyAgICAgICAg
ZG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV2ZW50c0hpdFtleHBlY3RlZExv
YWRlZF0gPSB0cnVlCisKKyAgICBleHBlY3RlZExvYWRlZCsrOworICAgIAorICAgIGlmIChldmVu
dC50b3RhbCAhPSBleHBlY3RlZFRvdGFsKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVu
dC50b3RhbCB0byBiZSAiICsgZXhwZWN0ZWRUb3RhbCArICIgYnV0IHdhcyAiICsgZXZlbnQudG90
YWw7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworZnVuY3Rp
b24gY2FjaGVkKCkKK3sKKyAgICBpZiAoZXZlbnRzSGl0Lmxlbmd0aCAhPSAzKSB7CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTog
ZXhwZWN0ZWQgMyBwcm9ncmVzcyBldmVudHMsIGJ1dCBnb3QgIiArIGV2ZW50c0hpdC5sZW5ndGg7
CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CisgICAgZG9u
ZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGNh
Y2hlZCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0
ZScsIGNhY2hlZCwgZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdw
cm9ncmVzcycsIHByb2dyZXNzLCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPGRpdj5UaGlzIHRlc3Rz
IHRoYXQgdGhlIGxvYWRlZEl0ZW1zIC8gdG90YWxJdGVtcyBwcm9wZXJ0aWVzIG9mIHRoZQorcHJv
Z3Jlc3MgZXZlbnQgYXJlIHNldCBjb3JyZWN0bHk8L2Rpdj4KKworPGRpdiBpZD0icmVzdWx0Ij5G
QUlMVVJFPC9kaXY+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvZGlmZmVy
ZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiA2MjE0NykKKysrIExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRwcy1vcmln
aW4tcmVzb3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTIgQEAgZnVuY3Rp
b24gZXJyb3IoKQogICAgIGhhZEVycm9yID0gdHJ1ZTsKICAgICBmaW5pc2goKTsKIH0KK2Z1bmN0
aW9uIHByb2dyZXNzSGFuZGxlcihlKSB7CisgICAgaWYgKGUubG9hZGVkID09IGUudG90YWwpIHJl
dHVybjsKKyAgICBmYWlsKCk7Cit9CiAKLWFwcGxpY2F0aW9uQ2FjaGUub25wcm9ncmVzcyA9IGZ1
bmN0aW9uKCkgeyBmYWlsKCk7IH0KK2FwcGxpY2F0aW9uQ2FjaGUub25wcm9ncmVzcyA9IHByb2dy
ZXNzSGFuZGxlcjsKIGFwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBm
aW5pc2goKTsgfQogYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBmaW5p
c2goKTsgfQogYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGVycm9yKCk7
IH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dy
ZXNzLWNvdW50ZXIubWFuaWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5pZmVzdAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNz
LWNvdW50ZXIubWFuaWZlc3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ0FDSEUgTUFO
SUZFU1QKK3NpbXBsZS50eHQKK2VtcHR5LnR4dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60185</attachid>
            <date>2010-06-30 19:42:08 -0700</date>
            <delta_ts>2010-07-01 15:23:18 -0700</delta_ts>
            <desc>ProgressEvents with a style fix</desc>
            <filename>progress2.txt</filename>
            <type>text/plain</type>
            <size>23388</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjIwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGNsYXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQg
cHJvZ3Jlc3MgZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBh
bmQgJ2xlbmd0aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhl
IGZpbmFsIHByb2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJp
YnV0ZQorICAgICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFj
ZSB3aXRoIHRoZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OkNhbGxDYWNoZUxp
c3RlbmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBv
c3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpEZWZlcnJlZEV2ZW50OjpEZWZlcnJlZEV2ZW50KToKKwogMjAxMC0wNi0zMCAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3Vz
dGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlRwogICAg
IDogbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUp
CiAgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50KDAp
CisgICAgLCBtX3Byb2dyZXNzVG90YWwoMCkKKyAgICAsIG1fcHJvZ3Jlc3NEb25lKDApCiAgICAg
LCBtX2ZyYW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQogICAgICwgbV9pc09ic29sZXRlKGZh
bHNlKQpAQCAtNjc0LDcgKzY3NiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lV2hpdGVsaXN0KG1h
bmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5n
VXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlmZXN0LmFsbG93QWxsTmV0
d29ya1JlcXVlc3RzKTsKLSAgICAKKworICAgIG1fcHJvZ3Jlc3NUb3RhbCA9IG1fcGVuZGluZ0Vu
dHJpZXMuc2l6ZSgpOworICAgIG1fcHJvZ3Jlc3NEb25lID0gMDsKKwogICAgIHN0YXJ0TG9hZGlu
Z0VudHJ5KCk7CiB9CiAKQEAgLTc4Miw3ICs3ODcsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93
IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKQog
ICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQo
KSk7Ci0gICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50cy4KKworICAgICAgICAg
ICAgLy8gRmlyZSB0aGUgZmluYWwgcHJvZ3Jlc3MgZXZlbnQuCisgICAgICAgICAgICBBU1NFUlQo
bV9wcm9ncmVzc0RvbmUgPT0gbV9wcm9ncmVzc1RvdGFsKTsKKyAgICAgICAgICAgIHBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX3Byb2dyZXNz
VG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworCisg
ICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50LgogICAgICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVQREFU
RVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYWNoZVN0b3JhZ2UoKS5pc01heGltdW1TaXplUmVhY2hlZCgpICYmICFtX2NhbGxlZFJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTg0OSw3ICs4NTksOCBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nCiAgICAgCiAgICAgRW50cnlNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9wZW5kaW5nRW50cmllcy5iZWdpbigpOwogCi0gICAgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JFU1NfRVZFTlQsIG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycyk7CisgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UFJPR1JFU1NfRVZFTlQsIG1fcHJvZ3Jlc3NUb3RhbCwgbV9wcm9ncmVzc0RvbmUsIG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgbV9wcm9ncmVzc0RvbmUrKzsKIAogICAgIEFTU0VS
VCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKQEAgLTk0OCw5ICs5NTksOSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjCiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVy
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
IGV2ZW50SUQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9u
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRl
ciwgZXZlbnRJRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxv
YWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTk2MywyOCArOTc0LDMyIEBAIHB1YmxpYzoKICAgICAKICAgICAgICAgQVNTRVJUKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBtX2RvY3VtZW50TG9hZGVyLmdldCgp
KTsKIAotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCk7CisgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUo
bV9ldmVudElELCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBD
YWxsQ2FjaGVMaXN0ZW5lclRhc2soUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwg
aW50IHByb2dyZXNzRG9uZSkKICAgICAgICAgOiBtX2RvY3VtZW50TG9hZGVyKGxvYWRlcikKICAg
ICAgICAgLCBtX2V2ZW50SUQoZXZlbnRJRCkKKyAgICAgICAgLCBtX3Byb2dyZXNzVG90YWwocHJv
Z3Jlc3NUb3RhbCkKKyAgICAgICAgLCBtX3Byb2dyZXNzRG9uZShwcm9ncmVzc0RvbmUpCiAgICAg
ewogICAgIH0KIAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBtX2V2ZW50SUQ7CisgICAgaW50IG1f
cHJvZ3Jlc3NUb3RhbDsKKyAgICBpbnQgbV9wcm9ncmVzc0RvbmU7CiB9OwogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCBldmVudElELCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNl
dCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsK
ICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVu
ZCA9IGxvYWRlclNldC5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxvYWRlclNldC5iZWdpbigpOyBpdGVyICE9IGxvYWRlclNl
dEVuZDsgKytpdGVyKQotICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50SUQsICppdGVyKTsK
KyAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVz
c0RvbmUsICppdGVyKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJU
YXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IGxvYWRlci0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtOTkyLDcg
KzEwMDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyCiAgICAg
CiAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIp
OwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxDYWNoZUxpc3RlbmVyVGFz
azo6Y3JlYXRlKGxvYWRlciwgZXZlbnRJRCkpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0
VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dy
ZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y2xlYXJTdG9yYWdlSUQoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDggKzkxLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb3B5OyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRl
cio+Jik7Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0TGlz
dGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBjb25zdCBIYXNoU2V0
PERvY3VtZW50TG9hZGVyKj4mIHNldCkgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAwLCBzZXQp
OyB9CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRCBpZCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgIHsgcG9zdExpc3RlbmVyVGFz
ayhpZCwgMCwgMCwgbG9hZGVyKTsgfQorICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2so
QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBzdGF0aWMg
dm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBpbnQg
cHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXIqKTsKKwogICAg
IHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKIAogICAgIFBh
c3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwm
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsKQEAgLTE0
Nyw2ICsxNTAsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMgb2YgcGVu
ZGluZyBjYWNoZSBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
PiBFbnRyeU1hcDsKICAgICBFbnRyeU1hcCBtX3BlbmRpbmdFbnRyaWVzOworICAgIAorICAgIC8v
IFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gYmUgcHJvY2Vzc2VkIHRvIHVwZGF0ZSB0aGUg
Y2FjaGUgZ3JvdXAgYW5kIHRoZSBudW1iZXIgdGhhdCBoYXZlIGJlZW4gZG9uZS4KKyAgICBpbnQg
bV9wcm9ncmVzc1RvdGFsOworICAgIGludCBtX3Byb2dyZXNzRG9uZTsKIAogICAgIC8vIEZyYW1l
IHVzZWQgZm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0aW5nLgogICAgIC8vIEZJWE1F
OiBBbiB1cGRhdGUgc3RhcnRlZCBieSBhIHBhcnRpY3VsYXIgZnJhbWUgc2hvdWxkIG5vdCBzdG9w
IGlmIGl0IGlzIGRlc3Ryb3llZCwgYnV0IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBzYW1lIGNhY2hlIGdyb3VwLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjIxNDcpCisrKyBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgi
CisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAg
LTIyOCwzNSArMjI5LDQyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxp
Y2EKICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2
ZW50SUQgaWQpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlv
bkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7CiAgICAgaWYgKG1fZGVm
ZXJzRXZlbnRzKSB7Ci0gICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1l
bnQub25sb2FkIGhhcyBmaXJlZC4KLSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQp
OworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBkZWZlcnJlZCB1bnRpbCBkb2N1bWVu
dC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChEZWZl
cnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsgICAgCi0gICAgfQorICAgIGRpc3BhdGNoRE9N
RXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90
ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rl
ZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVy
cmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIG1fZG9tQXBwbGljYXRp
b25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6
OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRGVmZXJyZWRFdmVudCBkZWZlcnJlZCA9
IG1fZGVmZXJyZWRFdmVudHNbaV07CisgICAgICAgIGRpc3BhdGNoRE9NRXZlbnQoZGVmZXJyZWQu
ZXZlbnRJRCwgZGVmZXJyZWQucHJvZ3Jlc3NUb3RhbCwgZGVmZXJyZWQucHJvZ3Jlc3NEb25lKTsK
ICAgICB9CiAgICAgbV9kZWZlcnJlZEV2ZW50cy5jbGVhcigpOwogICAgIG1fZGVmZXJzRXZlbnRz
ID0gZmFsc2U7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZl
bnQoRXZlbnRJRCBpZCwgaW50IHRvdGFsLCBpbnQgZG9uZSkKK3sKKyAgICBpZiAobV9kb21BcHBs
aWNhdGlvbkNhY2hlKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlID0g
RE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpOworICAgICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVudDsKKyAgICAgICAgaWYgKGlk
ID09IFBST0dSRVNTX0VWRU5UKQorICAgICAgICAgICAgZXZlbnQgPSBQcm9ncmVzc0V2ZW50Ojpj
cmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBkb25lLCB0b3RhbCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIGZhbHNlLCBmYWxzZSk7Cisg
ICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChldmVudCwgZWMpOwor
ICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9Cit9CisKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OnNldENhbmRpZGF0ZUFwcGxpY2F0aW9uQ2FjaGVHcm91cChBcHBsaWNhdGlvbkNhY2hlR3Jv
dXAqIGdyb3VwKQogewogICAgIEFTU0VSVCghbV9hcHBsaWNhdGlvbkNhY2hlKTsKSW5kZXg6IFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAkocmV2aXNp
b24gNjIxNDcpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9z
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsOCArMTA4LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIHVwZGF0ZSgpOwogICAgICAgICBib29sIHN3YXBDYWNoZSgpOwogCi0g
ICAgICAgIHZvaWQgc2V0RE9NQXBwbGljYXRpb25DYWNoZShET01BcHBsaWNhdGlvbkNhY2hlKiBk
b21BcHBsaWNhdGlvbkNhY2hlKTsKLSAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKEV2ZW50SUQgaWQpOworICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9N
QXBwbGljYXRpb25DYWNoZSopOworICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0aW9uQ2Fj
aGUoRXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpOwogCiAgICAg
ICAgIHZvaWQgc3RvcERlZmVycmluZ0V2ZW50cygpOyAvLyBBbHNvIHJhaXNlcyB0aGUgZXZlbnRz
IHRoYXQgaGF2ZSBiZWVuIHF1ZXVlZCB1cC4KIApAQCAtMTE3LDEwICsxMTcsMTkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoKTsK
ICAgICAgICAgRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyKCkgeyByZXR1cm4gbV9kb2N1
bWVudExvYWRlcjsgfQogCisgICAgICAgIHN0cnVjdCBEZWZlcnJlZEV2ZW50IHsKKyAgICAgICAg
ICAgIEV2ZW50SUQgZXZlbnRJRDsKKyAgICAgICAgICAgIGludCBwcm9ncmVzc1RvdGFsOworICAg
ICAgICAgICAgaW50IHByb2dyZXNzRG9uZTsKKyAgICAgICAgICAgIERlZmVycmVkRXZlbnQoRXZl
bnRJRCBpZCwgaW50IHRvdGFsLCBpbnQgZG9uZSkgOiBldmVudElEKGlkKSwgcHJvZ3Jlc3NUb3Rh
bCh0b3RhbCksIHByb2dyZXNzRG9uZShkb25lKSB7IH0KKyAgICAgICAgfTsKKwogICAgICAgICBE
T01BcHBsaWNhdGlvbkNhY2hlKiBtX2RvbUFwcGxpY2F0aW9uQ2FjaGU7CiAgICAgICAgIERvY3Vt
ZW50TG9hZGVyKiBtX2RvY3VtZW50TG9hZGVyOwogICAgICAgICBib29sIG1fZGVmZXJzRXZlbnRz
OyAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGFmdGVyIGRvY3VtZW50IG9ubG9hZC4KLSAg
ICAgICAgVmVjdG9yPEV2ZW50SUQ+IG1fZGVmZXJyZWRFdmVudHM7CisgICAgICAgIFZlY3RvcjxE
ZWZlcnJlZEV2ZW50PiBtX2RlZmVycmVkRXZlbnRzOworCisgICAgICAgIHZvaWQgZGlzcGF0Y2hE
T01FdmVudChFdmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSk7CiAK
ICNpZiBQTEFURk9STShDSFJPTUlVTSkKICAgICAgICAgZnJpZW5kIGNsYXNzIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0SW50ZXJuYWw7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMjA1KQorKysg
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDEwLTA2LTMwICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVzZSBjbGFzcyBQ
cm9ncmVzc0V2ZW50IHdoZW4gcmFpc2luZyBhcHBjYWNoZSByZWxhdGVkIHByb2dyZXNzIGV2ZW50
cyBhbmQKKyAgICAgICAgc2V0IHRoZSAndG90YWwnLCAnbG9hZGVkJywgYW5kICdsZW5ndGhDb21w
dXRhYmxlJyBhdHRyaWJ1dGVzLgorICAgICAgICBBbHNvIHJhaXNlIHRoZSBmaW5hbCBwcm9ncmVz
cyBldmVudCB3aXRoIHRoZSAndG90YWwnIGFuZCAnbG9hZGVkJyBhdHRyaWJ1dGUKKyAgICAgICAg
dmFsdWVzIGFyZSBlcXVhbCB0byBvbmUgYW5vdGhlciB0byBrZWVwIHBhY2Ugd2l0aCB0aGUgc3Bl
YyBmb3IgdGhpcyBmZWF0dXJlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzc2MDIKKworICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBw
bGljYXRpb25DYWNoZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
c3RvcERlZmVycmluZ0V2ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6ZGlzcGF0Y2hET01FdmVudCk6CisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0SW50ZXJuYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50
ZXJuYWw6Om5vdGlmeUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3RJbnRlcm5hbDo6bm90aWZ5UHJvZ3Jlc3NFdmVudExpc3RlbmVyKToKKwogMjAx
MC0wNi0yNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDYyMTQ3KQorKysgV2ViS2l0
L2Nocm9taXVtL3NyYy9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgogI2luY2x1ZGUgIkRP
TUFwcGxpY2F0aW9uQ2FjaGUuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlByb2dy
ZXNzRXZlbnQuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgog
I2luY2x1ZGUgIldlYlVSTEVycm9yLmgiCkBAIC0xOTUsMzQgKzE5Niw0MiBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpzZXRET01BcHBsaWNhCiAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hl
ID0gZG9tQXBwbGljYXRpb25DYWNoZTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElEIGlkKQordm9pZCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShFdmVudElEIGlkLCBpbnQgdG90YWws
IGludCBkb25lKQogewogICAgIGlmIChtX2RlZmVyc0V2ZW50cykgewotICAgICAgICBtX2RlZmVy
cmVkRXZlbnRzLmFwcGVuZChpZCk7CisgICAgICAgIC8vIEV2ZW50IGRpc3BhdGNoaW5nIGlzIGRl
ZmVycmVkIHVudGlsIGRvY3VtZW50Lm9ubG9hZCBoYXMgZmlyZWQuCisgICAgICAgIG1fZGVmZXJy
ZWRFdmVudHMuYXBwZW5kKERlZmVycmVkRXZlbnQoaWQsIHRvdGFsLCBkb25lKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewotICAgICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5k
aXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5
cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7Ci0gICAgICAgIEFTU0VSVCghZWMpOwotICAgIH0K
KyAgICBkaXNwYXRjaERPTUV2ZW50KGlkLCB0b3RhbCwgZG9uZSk7CiB9CiAKIHZvaWQgQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMoKQogewogICAgIFJlZlB0cjxEb2N1
bWVudExvYWRlcj4gcHJvdGVjdChkb2N1bWVudExvYWRlcigpKTsKICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV9kZWZlcnJlZEV2ZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBFdmVu
dElEIGlkID0gbV9kZWZlcnJlZEV2ZW50c1tpXTsKLSAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRp
b25DYWNoZSkgewotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAg
ICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01B
cHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKLSAg
ICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICB9CisgICAgICAgIGNvbnN0IERlZmVycmVk
RXZlbnQgZGVmZXJyZWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBkaXNwYXRjaERP
TUV2ZW50KGRlZmVycmVkLmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90YWwsIGRlZmVycmVk
LnByb2dyZXNzRG9uZSk7CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIoKTsKICAg
ICBtX2RlZmVyc0V2ZW50cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpkaXNwYXRjaERPTUV2ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCit7Cisg
ICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSA9IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKTsKKyAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7
CisgICAgICAgIGlmIChpZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAgICAgIGV2ZW50ID0g
UHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBm
YWxzZSwgZmFsc2UpOworICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZl
bnQoZXZlbnQsIGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorfQorCiBBcHBsaWNh
dGlvbkNhY2hlSG9zdDo6U3RhdHVzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdGF0dXMoKSBjb25z
dAogewogICAgIHJldHVybiBtX2ludGVybmFsID8gc3RhdGljX2Nhc3Q8U3RhdHVzPihtX2ludGVy
bmFsLT5tX291dGVySG9zdC0+c3RhdHVzKCkpIDogVU5DQUNIRUQ7CkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAkocmV2aXNp
b24gNjIxNDcpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50
ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTggKzU1LDEyIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBub3RpZnlFdmVudExpc3RlbmVyKFdlYktpdDo6V2ViQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKICAgICB7Ci0gICAgICAgIG1faW5uZXJIb3N0LT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpFdmVudElEPihldmVudElEKSk7CisgICAgICAgIG1faW5uZXJIb3N0LT5ub3RpZnlET01BcHBs
aWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEPihl
dmVudElEKSwgMCwgMCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVByb2dyZXNz
RXZlbnRMaXN0ZW5lcihjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGludCBudW1fdG90YWwsIGludCBu
dW1fY29tcGxldGUpIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQcm9ncmVzc0V2ZW50TGlzdGVu
ZXIoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNz
RG9uZSkgCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTW9kaWZ5IHdlYmNvcmUncyBwcm9ncmVz
cyBldmVudCBoYW5kbGluZyB0byBjYXJyeSB0aGUgZXh0cmEgaW5mbyBhbmQgYWx0ZXIgdGhlCi0g
ICAgICAgIC8vIGxheW91dCB0ZXN0cyB0byBub3QgZmFpbCB3aGVuIHRoZSBtb3JlIHJlY2VudGx5
IHNwZWNpZmllZCAnZmluYWwnIGV2ZW50IGlzIHJhaXNlZC4KLSAgICAgICAgLy8gRm9yIG5vdywg
d2UncmUgZWF0aW5nIHRoZSBleHRyYSBpbmZvIGFuZCB0aGF0IGxhc3QgZXZlbnQuCi0gICAgICAg
IC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2MDIKLSAg
ICAgICAgaWYgKG51bV9jb21wbGV0ZSA9PSBudW1fdG90YWwpCi0gICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6UHJvZ3Jlc3NFdmVudCk7CisgICAgICAgIG1faW5uZXJIb3N0LT5ub3RpZnlET01BcHBs
aWNhdGlvbkNhY2hlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpQUk9HUkVTU19FVkVOVCwgcHJvZ3Jl
c3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViS2l0OjpXZWJB
cHBsaWNhdGlvbkNhY2hlSG9zdCogdG9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdChBcHBsaWNhdGlv
bkNhY2hlSG9zdCogaW5uZXJIb3N0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjIyMDUpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0w
Ni0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVzdCB0
byB2ZXJpZnkgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBwcm9ncmVzcyBldmVudHMgYXJlIHJhaXNl
ZCBieSB0aGUgYXBwY2FjaGUsCisgICAgICAgIGFuZCB0aGF0IHRob3NlIGV2ZW50cyBoYXZlIHBy
b3Blcmx5IHNldCAnbGVuZ3RoQ29tcHV0YWJsZScsICdsb2FkZWQnLCBhbmQgJ3RvdGFsJyBhdHRy
aWJ1dGVzLgorICAgICAgICBBbHNvIHVwZGF0ZSBhIGNvdXBsZSBvZiBvdGhlciB0ZXN0cyB0aGF0
IGRlcGVuZCBvbiBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHByb2dyZXNzIGV2ZW50cyB0bworICAg
ICAgICBkZXRlcm1pbmUgc3VjY2VzcyBvciBmYWlsdXJlIHRvIG5vdyBleHBlY3QgdGhlIGFkZGl0
aW9uYWwgZmluYWwgcHJvZ3Jlc3MgZXZlbnQgdGhhdCBpcyBiZWluZworICAgICAgICByYWlzZWQu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgor
CisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50ZXIt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dy
ZXNzLWNvdW50ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sOgorICAgICAgICAq
IGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3Q6
IEFkZGVkLgorCiAyMDEwLTA2LTMwICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1h
aW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MjE0NykKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJhbWUtbWFpbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTUsNiArNSw3IEBAIGRvd25sb2FkaW5nCiBwcm9ncmVzcwogcHJvZ3Jlc3MKIHByb2dy
ZXNzCitwcm9ncmVzcwogY2FjaGVkCiBTVUNDRVNTCiAKSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cHJvZ3Jlc3MtY291bnRlci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMiBA
QAorVGhpcyB0ZXN0cyB0aGF0IHRoZSBsb2FkZWRJdGVtcyAvIHRvdGFsSXRlbXMgcHJvcGVydGll
cyBvZiB0aGUgcHJvZ3Jlc3MgZXZlbnQgYXJlIHNldCBjb3JyZWN0bHkKK1NVQ0NFU1MKSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291
bnRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9wcm9ncmVzcy1jb3VudGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKzxo
dG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5pZmVzdCI+Cis8c2Ny
aXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKwordmFyIGV4cGVjdGVkTG9hZGVkID0gMAordmFyIGV4cGVjdGVkVG90YWwg
ID0gMgordmFyIGV2ZW50c0hpdCA9IFtdCisKK2Z1bmN0aW9uIGRvbmUoKSB7CisgICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
bm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiBwcm9ncmVzcyhldmVudCkKK3sKKyAgICBpZiAo
IWV2ZW50Lmxlbmd0aENvbXB1dGFibGUpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiBleHBlY3RlZCBwcm9ncmVzc0V2ZW50
Lmxlbmd0aENvbXB1dGFibGUgdG8gYmUgdHJ1ZSI7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQubG9hZGVkICE9IGV4cGVjdGVkTG9hZGVkKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAi
RkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVudC5sb2FkZWQgdG8gYmUgIiArIGV4cGVjdGVk
TG9hZGVkICsgIiBidXQgd2FzICIgKyBldmVudC5sb2FkZWQ7CisgICAgICAgIGRvbmUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICBldmVudHNIaXRbZXhwZWN0ZWRMb2FkZWRdID0gdHJ1
ZQorCisgICAgZXhwZWN0ZWRMb2FkZWQrKzsKKyAgICAKKyAgICBpZiAoZXZlbnQudG90YWwgIT0g
ZXhwZWN0ZWRUb3RhbCkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0
JykuaW5uZXJIVE1MID0gIkZBSUxVUkU6IGV4cGVjdGVkIHByb2dyZXNzRXZlbnQudG90YWwgdG8g
YmUgIiArIGV4cGVjdGVkVG90YWwgKyAiIGJ1dCB3YXMgIiArIGV2ZW50LnRvdGFsOworICAgICAg
ICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIGNhY2hlZCgp
Cit7CisgICAgaWYgKGV2ZW50c0hpdC5sZW5ndGggIT0gMykgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUxVUkU6IGV4cGVjdGVkIDMg
cHJvZ3Jlc3MgZXZlbnRzLCBidXQgZ290ICIgKyBldmVudHNIaXQubGVuZ3RoOworICAgICAgICBk
b25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOworICAgIGRvbmUoKTsKK30KKwor
YXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBjYWNoZWQsIGZhbHNl
KTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBjYWNoZWQs
IGZhbHNlKTsKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcigncHJvZ3Jlc3MnLCBw
cm9ncmVzcywgZmFsc2UpOworCis8L3NjcmlwdD4KKzxkaXY+VGhpcyB0ZXN0cyB0aGF0IHRoZSBs
b2FkZWRJdGVtcyAvIHRvdGFsSXRlbXMgcHJvcGVydGllcyBvZiB0aGUKK3Byb2dyZXNzIGV2ZW50
IGFyZSBzZXQgY29ycmVjdGx5PC9kaXY+CisKKzxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJj
ZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRwcy1v
cmlnaW4tcmVzb3VyY2UuaHRtbAkocmV2aXNpb24gNjIxNDcpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNl
Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDggKzIwLDEyIEBAIGZ1bmN0aW9uIGVycm9yKCkK
ICAgICBoYWRFcnJvciA9IHRydWU7CiAgICAgZmluaXNoKCk7CiB9CitmdW5jdGlvbiBwcm9ncmVz
c0hhbmRsZXIoZSkgeworICAgIGlmIChlLmxvYWRlZCA9PSBlLnRvdGFsKSByZXR1cm47CisgICAg
ZmFpbCgpOworfQogCi1hcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jlc3MgPSBmdW5jdGlvbigpIHsg
ZmFpbCgpOyB9CithcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jlc3MgPSBwcm9ncmVzc0hhbmRsZXI7
CiBhcHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgZmluaXNoKCk7IH0K
IGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgZmluaXNoKCk7IH0KIGFw
cGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBlcnJvcigpOyB9CkluZGV4OiBM
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVzcy1jb3VudGVy
Lm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3QJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVzcy1jb3VudGVyLm1h
bmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NBQ0hFIE1BTklGRVNUCitzaW1w
bGUudHh0CitlbXB0eS50eHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60296</attachid>
            <date>2010-07-01 15:23:18 -0700</date>
            <delta_ts>2010-07-01 16:00:30 -0700</delta_ts>
            <desc>ProgressEvents with tweeks to the layout tests</desc>
            <filename>progress3.txt</filename>
            <type>text/plain</type>
            <size>23486</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjIwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGNsYXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQg
cHJvZ3Jlc3MgZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBh
bmQgJ2xlbmd0aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhl
IGZpbmFsIHByb2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJp
YnV0ZQorICAgICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFj
ZSB3aXRoIHRoZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OkNhbGxDYWNoZUxp
c3RlbmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBv
c3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpEZWZlcnJlZEV2ZW50OjpEZWZlcnJlZEV2ZW50KToKKwogMjAxMC0wNi0zMCAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3Vz
dGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlRwogICAg
IDogbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUp
CiAgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50KDAp
CisgICAgLCBtX3Byb2dyZXNzVG90YWwoMCkKKyAgICAsIG1fcHJvZ3Jlc3NEb25lKDApCiAgICAg
LCBtX2ZyYW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQogICAgICwgbV9pc09ic29sZXRlKGZh
bHNlKQpAQCAtNjc0LDcgKzY3NiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lV2hpdGVsaXN0KG1h
bmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5n
VXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlmZXN0LmFsbG93QWxsTmV0
d29ya1JlcXVlc3RzKTsKLSAgICAKKworICAgIG1fcHJvZ3Jlc3NUb3RhbCA9IG1fcGVuZGluZ0Vu
dHJpZXMuc2l6ZSgpOworICAgIG1fcHJvZ3Jlc3NEb25lID0gMDsKKwogICAgIHN0YXJ0TG9hZGlu
Z0VudHJ5KCk7CiB9CiAKQEAgLTc4Miw3ICs3ODcsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93
IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKQog
ICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQo
KSk7Ci0gICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50cy4KKworICAgICAgICAg
ICAgLy8gRmlyZSB0aGUgZmluYWwgcHJvZ3Jlc3MgZXZlbnQuCisgICAgICAgICAgICBBU1NFUlQo
bV9wcm9ncmVzc0RvbmUgPT0gbV9wcm9ncmVzc1RvdGFsKTsKKyAgICAgICAgICAgIHBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX3Byb2dyZXNz
VG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworCisg
ICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50LgogICAgICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVQREFU
RVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYWNoZVN0b3JhZ2UoKS5pc01heGltdW1TaXplUmVhY2hlZCgpICYmICFtX2NhbGxlZFJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTg0OSw3ICs4NTksOCBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nCiAgICAgCiAgICAgRW50cnlNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9wZW5kaW5nRW50cmllcy5iZWdpbigpOwogCi0gICAgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JFU1NfRVZFTlQsIG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycyk7CisgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UFJPR1JFU1NfRVZFTlQsIG1fcHJvZ3Jlc3NUb3RhbCwgbV9wcm9ncmVzc0RvbmUsIG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgbV9wcm9ncmVzc0RvbmUrKzsKIAogICAgIEFTU0VS
VCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKQEAgLTk0OCw5ICs5NTksOSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjCiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVy
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
IGV2ZW50SUQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9u
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRl
ciwgZXZlbnRJRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxv
YWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTk2MywyOCArOTc0LDMyIEBAIHB1YmxpYzoKICAgICAKICAgICAgICAgQVNTRVJUKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBtX2RvY3VtZW50TG9hZGVyLmdldCgp
KTsKIAotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCk7CisgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUo
bV9ldmVudElELCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBD
YWxsQ2FjaGVMaXN0ZW5lclRhc2soUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwg
aW50IHByb2dyZXNzRG9uZSkKICAgICAgICAgOiBtX2RvY3VtZW50TG9hZGVyKGxvYWRlcikKICAg
ICAgICAgLCBtX2V2ZW50SUQoZXZlbnRJRCkKKyAgICAgICAgLCBtX3Byb2dyZXNzVG90YWwocHJv
Z3Jlc3NUb3RhbCkKKyAgICAgICAgLCBtX3Byb2dyZXNzRG9uZShwcm9ncmVzc0RvbmUpCiAgICAg
ewogICAgIH0KIAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBtX2V2ZW50SUQ7CisgICAgaW50IG1f
cHJvZ3Jlc3NUb3RhbDsKKyAgICBpbnQgbV9wcm9ncmVzc0RvbmU7CiB9OwogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCBldmVudElELCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNl
dCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsK
ICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVu
ZCA9IGxvYWRlclNldC5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxvYWRlclNldC5iZWdpbigpOyBpdGVyICE9IGxvYWRlclNl
dEVuZDsgKytpdGVyKQotICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50SUQsICppdGVyKTsK
KyAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVz
c0RvbmUsICppdGVyKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJU
YXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IGxvYWRlci0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtOTkyLDcg
KzEwMDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyCiAgICAg
CiAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIp
OwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxDYWNoZUxpc3RlbmVyVGFz
azo6Y3JlYXRlKGxvYWRlciwgZXZlbnRJRCkpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0
VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dy
ZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y2xlYXJTdG9yYWdlSUQoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDggKzkxLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb3B5OyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRl
cio+Jik7Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0TGlz
dGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBjb25zdCBIYXNoU2V0
PERvY3VtZW50TG9hZGVyKj4mIHNldCkgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAwLCBzZXQp
OyB9CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRCBpZCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgIHsgcG9zdExpc3RlbmVyVGFz
ayhpZCwgMCwgMCwgbG9hZGVyKTsgfQorICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2so
QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBzdGF0aWMg
dm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBpbnQg
cHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXIqKTsKKwogICAg
IHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKIAogICAgIFBh
c3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwm
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsKQEAgLTE0
Nyw2ICsxNTAsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMgb2YgcGVu
ZGluZyBjYWNoZSBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
PiBFbnRyeU1hcDsKICAgICBFbnRyeU1hcCBtX3BlbmRpbmdFbnRyaWVzOworICAgIAorICAgIC8v
IFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gYmUgcHJvY2Vzc2VkIHRvIHVwZGF0ZSB0aGUg
Y2FjaGUgZ3JvdXAgYW5kIHRoZSBudW1iZXIgdGhhdCBoYXZlIGJlZW4gZG9uZS4KKyAgICBpbnQg
bV9wcm9ncmVzc1RvdGFsOworICAgIGludCBtX3Byb2dyZXNzRG9uZTsKIAogICAgIC8vIEZyYW1l
IHVzZWQgZm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0aW5nLgogICAgIC8vIEZJWE1F
OiBBbiB1cGRhdGUgc3RhcnRlZCBieSBhIHBhcnRpY3VsYXIgZnJhbWUgc2hvdWxkIG5vdCBzdG9w
IGlmIGl0IGlzIGRlc3Ryb3llZCwgYnV0IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBzYW1lIGNhY2hlIGdyb3VwLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjIxNDcpCisrKyBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgi
CisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAg
LTIyOCwzNSArMjI5LDQyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxp
Y2EKICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2
ZW50SUQgaWQpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlv
bkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7CiAgICAgaWYgKG1fZGVm
ZXJzRXZlbnRzKSB7Ci0gICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1l
bnQub25sb2FkIGhhcyBmaXJlZC4KLSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQp
OworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBkZWZlcnJlZCB1bnRpbCBkb2N1bWVu
dC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChEZWZl
cnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsgICAgCi0gICAgfQorICAgIGRpc3BhdGNoRE9N
RXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90
ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rl
ZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVy
cmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIG1fZG9tQXBwbGljYXRp
b25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6
OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRGVmZXJyZWRFdmVudCYgZGVmZXJyZWQg
PSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBkaXNwYXRjaERPTUV2ZW50KGRlZmVycmVk
LmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90YWwsIGRlZmVycmVkLnByb2dyZXNzRG9uZSk7
CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2RlZmVyc0V2ZW50
cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2
ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCit7CisgICAgaWYgKG1fZG9tQXBw
bGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9
IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKTsKKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CisgICAgICAgIGlmIChp
ZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAgICAgIGV2ZW50ID0gUHJvZ3Jlc3NFdmVudDo6
Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpOwor
ICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsK
KyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlz
aW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDggKzEwOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCB1cGRhdGUoKTsKICAgICAgICAgYm9vbCBzd2FwQ2FjaGUoKTsKIAot
ICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSog
ZG9tQXBwbGljYXRpb25DYWNoZSk7Ci0gICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25D
YWNoZShFdmVudElEIGlkKTsKKyAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERP
TUFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKEV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKTsKIAogICAg
ICAgICB2b2lkIHN0b3BEZWZlcnJpbmdFdmVudHMoKTsgLy8gQWxzbyByYWlzZXMgdGhlIGV2ZW50
cyB0aGF0IGhhdmUgYmVlbiBxdWV1ZWQgdXAuCiAKQEAgLTExNywxMCArMTE3LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7
CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9j
dW1lbnRMb2FkZXI7IH0KIAorICAgICAgICBzdHJ1Y3QgRGVmZXJyZWRFdmVudCB7CisgICAgICAg
ICAgICBFdmVudElEIGV2ZW50SUQ7CisgICAgICAgICAgICBpbnQgcHJvZ3Jlc3NUb3RhbDsKKyAg
ICAgICAgICAgIGludCBwcm9ncmVzc0RvbmU7CisgICAgICAgICAgICBEZWZlcnJlZEV2ZW50KEV2
ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpIDogZXZlbnRJRChpZCksIHByb2dyZXNzVG90
YWwodG90YWwpLCBwcm9ncmVzc0RvbmUoZG9uZSkgeyB9CisgICAgICAgIH07CisKICAgICAgICAg
RE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICBEb2N1
bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKICAgICAgICAgYm9vbCBtX2RlZmVyc0V2ZW50
czsgLy8gRXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVudCBvbmxvYWQuCi0g
ICAgICAgIFZlY3RvcjxFdmVudElEPiBtX2RlZmVycmVkRXZlbnRzOworICAgICAgICBWZWN0b3I8
RGVmZXJyZWRFdmVudD4gbV9kZWZlcnJlZEV2ZW50czsKKworICAgICAgICB2b2lkIGRpc3BhdGNo
RE9NRXZlbnQoRXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpOwog
CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlSG9zdEludGVybmFsOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjIwNSkKKysr
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAxMC0wNi0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgY2xhc3Mg
UHJvZ3Jlc3NFdmVudCB3aGVuIHJhaXNpbmcgYXBwY2FjaGUgcmVsYXRlZCBwcm9ncmVzcyBldmVu
dHMgYW5kCisgICAgICAgIHNldCB0aGUgJ3RvdGFsJywgJ2xvYWRlZCcsIGFuZCAnbGVuZ3RoQ29t
cHV0YWJsZScgYXR0cmlidXRlcy4KKyAgICAgICAgQWxzbyByYWlzZSB0aGUgZmluYWwgcHJvZ3Jl
c3MgZXZlbnQgd2l0aCB0aGUgJ3RvdGFsJyBhbmQgJ2xvYWRlZCcgYXR0cmlidXRlCisgICAgICAg
IHZhbHVlcyBhcmUgZXF1YWwgdG8gb25lIGFub3RoZXIgdG8ga2VlcCBwYWNlIHdpdGggdGhlIHNw
ZWMgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3NjAyCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6
OnN0b3BEZWZlcnJpbmdFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQpOgorICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hl
SG9zdEludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdElu
dGVybmFsOjpub3RpZnlFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWw6Om5vdGlmeVByb2dyZXNzRXZlbnRMaXN0ZW5lcik6CisKIDIw
MTAtMDYtMjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJE
T01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQcm9n
cmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIK
ICNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgpAQCAtMTk1LDM0ICsxOTYsNDIgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogICAgIG1fZG9tQXBwbGljYXRpb25DYWNo
ZSA9IGRvbUFwcGxpY2F0aW9uQ2FjaGU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCwgaW50IHRvdGFs
LCBpbnQgZG9uZSkKIHsKICAgICBpZiAobV9kZWZlcnNFdmVudHMpIHsKLSAgICAgICAgbV9kZWZl
cnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBk
ZWZlcnJlZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVy
cmVkRXZlbnRzLmFwcGVuZChEZWZlcnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRU
eXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9
CisgICAgZGlzcGF0Y2hET01FdmVudChpZCwgdG90YWwsIGRvbmUpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKIHsKICAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QoZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fZGVmZXJyZWRFdmVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRXZl
bnRJRCBpZCA9IG1fZGVmZXJyZWRFdmVudHNbaV07Ci0gICAgICAgIGlmIChtX2RvbUFwcGxpY2F0
aW9uQ2FjaGUpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAg
ICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9N
QXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7Ci0g
ICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBEZWZlcnJl
ZEV2ZW50JiBkZWZlcnJlZCA9IG1fZGVmZXJyZWRFdmVudHNbaV07CisgICAgICAgIGRpc3BhdGNo
RE9NRXZlbnQoZGVmZXJyZWQuZXZlbnRJRCwgZGVmZXJyZWQucHJvZ3Jlc3NUb3RhbCwgZGVmZXJy
ZWQucHJvZ3Jlc3NEb25lKTsKICAgICB9CiAgICAgbV9kZWZlcnJlZEV2ZW50cy5jbGVhcigpOwog
ICAgIG1fZGVmZXJzRXZlbnRzID0gZmFsc2U7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OmRpc3BhdGNoRE9NRXZlbnQoRXZlbnRJRCBpZCwgaW50IHRvdGFsLCBpbnQgZG9uZSkKK3sK
KyAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlID0gRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpOwor
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVu
dDsKKyAgICAgICAgaWYgKGlkID09IFBST0dSRVNTX0VWRU5UKQorICAgICAgICAgICAgZXZlbnQg
PSBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBkb25lLCB0b3RhbCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hF
dmVudChldmVudCwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9Cit9CisKIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnN0YXR1cygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwgPyBzdGF0aWNfY2FzdDxTdGF0dXM+KG1faW50
ZXJuYWwtPm1fb3V0ZXJIb3N0LT5zdGF0dXMoKSkgOiBVTkNBQ0hFRDsKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCShyZXZp
c2lvbiA2MjE0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxOCArNTUsMTIgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElEKQogICAgIHsKLSAgICAgICAgbV9pbm5lckhvc3Qt
Pm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhv
c3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsKKyAgICAgICAgbV9pbm5lckhvc3QtPm5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+
KGV2ZW50SUQpLCAwLCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UHJvZ3Jl
c3NFdmVudExpc3RlbmVyKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgaW50IG51bV90b3RhbCwgaW50
IG51bV9jb21wbGV0ZSkgCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVByb2dyZXNzRXZlbnRMaXN0
ZW5lcihjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jl
c3NEb25lKSAKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBNb2RpZnkgd2ViY29yZSdzIHByb2dy
ZXNzIGV2ZW50IGhhbmRsaW5nIHRvIGNhcnJ5IHRoZSBleHRyYSBpbmZvIGFuZCBhbHRlciB0aGUK
LSAgICAgICAgLy8gbGF5b3V0IHRlc3RzIHRvIG5vdCBmYWlsIHdoZW4gdGhlIG1vcmUgcmVjZW50
bHkgc3BlY2lmaWVkICdmaW5hbCcgZXZlbnQgaXMgcmFpc2VkLgotICAgICAgICAvLyBGb3Igbm93
LCB3ZSdyZSBlYXRpbmcgdGhlIGV4dHJhIGluZm8gYW5kIHRoYXQgbGFzdCBldmVudC4KLSAgICAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgot
ICAgICAgICBpZiAobnVtX2NvbXBsZXRlID09IG51bV90b3RhbCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgbm90aWZ5RXZlbnRMaXN0ZW5lcihXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpQcm9ncmVzc0V2ZW50KTsKKyAgICAgICAgbV9pbm5lckhvc3QtPm5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUoQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBwcm9n
cmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiB0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KEFwcGxpY2F0
aW9uQ2FjaGVIb3N0KiBpbm5lckhvc3QpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjIwNSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEw
LTA2LTMwICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHByb2dyZXNzIGV2ZW50cyBhcmUgcmFp
c2VkIGJ5IHRoZSBhcHBjYWNoZSwKKyAgICAgICAgYW5kIHRoYXQgdGhvc2UgZXZlbnRzIGhhdmUg
cHJvcGVybHkgc2V0ICdsZW5ndGhDb21wdXRhYmxlJywgJ2xvYWRlZCcsIGFuZCAndG90YWwnIGF0
dHJpYnV0ZXMuCisgICAgICAgIEFsc28gdXBkYXRlIGEgY291cGxlIG9mIG90aGVyIHRlc3RzIHRo
YXQgZGVwZW5kIG9uIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcHJvZ3Jlc3MgZXZlbnRzIHRvCisg
ICAgICAgIGRldGVybWluZSBzdWNjZXNzIG9yIGZhaWx1cmUgdG8gbm93IGV4cGVjdCB0aGUgYWRk
aXRpb25hbCBmaW5hbCBwcm9ncmVzcyBldmVudCB0aGF0IGlzIGJlaW5nCisgICAgICAgIHJhaXNl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NjAy
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcHJv
Z3Jlc3MtY291bnRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5pZmVz
dDogQWRkZWQuCisKIDIwMTAtMDYtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJhbWUt
bWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyMTQ3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNSw2ICs1LDcgQEAgZG93bmxvYWRpbmcKIHByb2dyZXNzCiBwcm9ncmVzcwogcHJv
Z3Jlc3MKK3Byb2dyZXNzCiBjYWNoZWQKIFNVQ0NFU1MKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50ZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACitUaGlzIHRlc3RzIHRoYXQgdGhlIGxlbmd0aENvbXB1dGFibGUgLyBsb2FkZWQgLyB0b3Rh
bCBwcm9wZXJ0aWVzIG9mIHRoZSBwcm9ncmVzcyBldmVudCBhcmUgc2V0IGNvcnJlY3RseS4KK1NV
Q0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291
bnRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cHJvZ3Jlc3MtY291bnRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTggQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5p
ZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGV4cGVjdGVkTG9hZGVkID0gMAordmFyIGV4
cGVjdGVkVG90YWwgPSAyCit2YXIgZXZlbnRzUmVjZWl2ZWQgPSAwOworCitmdW5jdGlvbiBkb25l
KCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcHJvZ3Jlc3MoZXZl
bnQpCit7CisgICAgZXZlbnRzUmVjZWl2ZWQrKzsKKworICAgIGlmICghZXZlbnQubGVuZ3RoQ29t
cHV0YWJsZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5u
ZXJIVE1MID0gIkZBSUxVUkU6IGV4cGVjdGVkIHByb2dyZXNzRXZlbnQubGVuZ3RoQ29tcHV0YWJs
ZSB0byBiZSB0cnVlIjsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIGlmIChldmVudC50b3RhbCAhPSBleHBlY3RlZFRvdGFsKSB7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0ZWQg
cHJvZ3Jlc3NFdmVudC50b3RhbCB0byBiZSAiICsgZXhwZWN0ZWRUb3RhbCArICIgYnV0IHdhcyAi
ICsgZXZlbnQudG90YWw7CisgICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICBpZiAoZXZlbnQubG9hZGVkICE9IGV4cGVjdGVkTG9hZGVkKyspIHsKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiBleHBl
Y3RlZCBwcm9ncmVzc0V2ZW50LmxvYWRlZCB0byBiZSAiICsgZXhwZWN0ZWRMb2FkZWQgKyAiIGJ1
dCB3YXMgIiArIGV2ZW50LmxvYWRlZDsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47
CisgICAgfSAgICAKK30KKworZnVuY3Rpb24gY2FjaGVkKCkKK3sKKyAgICBpZiAoZXZlbnRzUmVj
ZWl2ZWQgIT0gMykgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyku
aW5uZXJIVE1MID0gIkZBSUxVUkU6IGV4cGVjdGVkIDMgcHJvZ3Jlc3MgZXZlbnRzLCBidXQgZ290
ICIgKyBldmVudHNSZWNlaXZlZDsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
ICJTVUNDRVNTIjsKKyAgICBkb25lKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRM
aXN0ZW5lcignY2FjaGVkJywgY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hlLmFkZEV2
ZW50TGlzdGVuZXIoJ25vdXBkYXRlJywgY2FjaGVkLCBmYWxzZSk7CithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcHJvZ3Jlc3MsIGZhbHNlKTsKKworPC9zY3Jp
cHQ+Cis8ZGl2PlRoaXMgdGVzdHMgdGhhdCB0aGUgbGVuZ3RoQ29tcHV0YWJsZSAvIGxvYWRlZCAv
IHRvdGFsIHByb3BlcnRpZXMgb2YgdGhlIHByb2dyZXNzIGV2ZW50IGFyZSBzZXQgY29ycmVjdGx5
LjwvZGl2PgorCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rpdj4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRw
cy1vcmlnaW4tcmVzb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2FwcGNhY2hlL3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0
bWwJKHJldmlzaW9uIDYyMTQ3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9y
ZXNvdXJjZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCw4ICsyMCwxNCBAQCBmdW5jdGlvbiBlcnJvcigpCiAgICAgaGFkRXJyb3IgPSB0
cnVlOwogICAgIGZpbmlzaCgpOwogfQorZnVuY3Rpb24gcHJvZ3Jlc3NIYW5kbGVyKGUpCit7Cisg
ICAgLy8gVGhlIG9ubHkgcmVzb3VyY2UgbGlzdGVkIGluIHRoZSBtYW5pZmVzdCBmaWxlIGlzIGlu
IGEgZGlmZmVyZW50IGh0dHBzIG9yaWdpbiBhbmQgc2hvdWxkIGJlIHNraXBwZWQuCisgICAgaWYg
KGUubG9hZGVkICE9IDAgfHwgZS50b3RhbCAhPSAwKQorICAgICAgICBmYWlsKCk7Cit9CiAKLWFw
cGxpY2F0aW9uQ2FjaGUub25wcm9ncmVzcyA9IGZ1bmN0aW9uKCkgeyBmYWlsKCk7IH0KK2FwcGxp
Y2F0aW9uQ2FjaGUub25wcm9ncmVzcyA9IHByb2dyZXNzSGFuZGxlcjsKIGFwcGxpY2F0aW9uQ2Fj
aGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBmaW5pc2goKTsgfQogYXBwbGljYXRpb25DYWNo
ZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBmaW5pc2goKTsgfQogYXBwbGljYXRpb25DYWNoZS5v
bmVycm9yID0gZnVuY3Rpb24oKSB7IGVycm9yKCk7IH0KSW5kZXg6IExheW91dFRlc3RzL2h0dHAv
dGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3QKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJvZ3Jl
c3MtY291bnRlci5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3QJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorQ0FDSEUgTUFOSUZFU1QKK3NpbXBsZS50eHQKK2VtcHR5LnR4
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60307</attachid>
            <date>2010-07-01 16:00:30 -0700</date>
            <delta_ts>2010-07-07 15:15:23 -0700</delta_ts>
            <desc>ProgressEvents with layout test error message fixed</desc>
            <filename>progress4.txt</filename>
            <type>text/plain</type>
            <size>23454</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjIwNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGNsYXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQg
cHJvZ3Jlc3MgZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBh
bmQgJ2xlbmd0aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhl
IGZpbmFsIHByb2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJp
YnV0ZQorICAgICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFj
ZSB3aXRoIHRoZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OkNhbGxDYWNoZUxp
c3RlbmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBv
c3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpEZWZlcnJlZEV2ZW50OjpEZWZlcnJlZEV2ZW50KToKKwogMjAxMC0wNi0zMCAg
WGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3Vz
dGF2byBOb3JvbmhhLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUx
LDYgKzUxLDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlRwogICAg
IDogbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUp
CiAgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291cmNlTG9hZGVyc0NvdW50KDAp
CisgICAgLCBtX3Byb2dyZXNzVG90YWwoMCkKKyAgICAsIG1fcHJvZ3Jlc3NEb25lKDApCiAgICAg
LCBtX2ZyYW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQogICAgICwgbV9pc09ic29sZXRlKGZh
bHNlKQpAQCAtNjc0LDcgKzY3NiwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0T25saW5lV2hpdGVsaXN0KG1h
bmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+
c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7CiAgICAgbV9jYWNoZUJlaW5n
VXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1hbmlmZXN0LmFsbG93QWxsTmV0
d29ya1JlcXVlc3RzKTsKLSAgICAKKworICAgIG1fcHJvZ3Jlc3NUb3RhbCA9IG1fcGVuZGluZ0Vu
dHJpZXMuc2l6ZSgpOworICAgIG1fcHJvZ3Jlc3NEb25lID0gMDsKKwogICAgIHN0YXJ0TG9hZGlu
Z0VudHJ5KCk7CiB9CiAKQEAgLTc4Miw3ICs3ODcsMTIgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICAgICAgLy8gTmV3IGNhY2hlIHN0b3JlZCwgbm93
IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYgKG9sZE5ld2VzdENhY2hlKQog
ICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQo
KSk7Ci0gICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50cy4KKworICAgICAgICAg
ICAgLy8gRmlyZSB0aGUgZmluYWwgcHJvZ3Jlc3MgZXZlbnQuCisgICAgICAgICAgICBBU1NFUlQo
bV9wcm9ncmVzc0RvbmUgPT0gbV9wcm9ncmVzc1RvdGFsKTsKKyAgICAgICAgICAgIHBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX3Byb2dyZXNz
VG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworCisg
ICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50LgogICAgICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gQXBwbGljYXRpb25DYWNoZUhvc3Q6OlVQREFU
RVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNBQ0hFRF9FVkVOVCwgbV9hc3Nv
Y2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
IChjYWNoZVN0b3JhZ2UoKS5pc01heGltdW1TaXplUmVhY2hlZCgpICYmICFtX2NhbGxlZFJlYWNo
ZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTg0OSw3ICs4NTksOCBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nCiAgICAgCiAgICAgRW50cnlNYXA6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9wZW5kaW5nRW50cmllcy5iZWdpbigpOwogCi0gICAgcG9zdExpc3RlbmVyVGFz
ayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JFU1NfRVZFTlQsIG1fYXNzb2NpYXRlZERvY3Vt
ZW50TG9hZGVycyk7CisgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
UFJPR1JFU1NfRVZFTlQsIG1fcHJvZ3Jlc3NUb3RhbCwgbV9wcm9ncmVzc0RvbmUsIG1fYXNzb2Np
YXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgbV9wcm9ncmVzc0RvbmUrKzsKIAogICAgIEFTU0VS
VCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKQEAgLTk0OCw5ICs5NTksOSBAQCB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6c2NoZWR1bGVSZWFjCiAKIGNsYXNzIENhbGxDYWNoZUxpc3RlbmVy
VGFzayA6IHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDYWxsQ2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVm
UHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
IGV2ZW50SUQpCisgICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBj
cmVhdGUoUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9u
ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRl
ciwgZXZlbnRJRCk7CisgICAgICAgIHJldHVybiBuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxv
YWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCkKQEAgLTk2MywyOCArOTc0LDMyIEBAIHB1YmxpYzoKICAgICAKICAgICAgICAgQVNTRVJUKGZy
YW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBtX2RvY3VtZW50TG9hZGVyLmdldCgp
KTsKIAotICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKG1fZXZlbnRJRCk7CisgICAgICAgIG1fZG9jdW1lbnRM
b2FkZXItPmFwcGxpY2F0aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUo
bV9ldmVudElELCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGxvYWRlciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBD
YWxsQ2FjaGVMaXN0ZW5lclRhc2soUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwg
aW50IHByb2dyZXNzRG9uZSkKICAgICAgICAgOiBtX2RvY3VtZW50TG9hZGVyKGxvYWRlcikKICAg
ICAgICAgLCBtX2V2ZW50SUQoZXZlbnRJRCkKKyAgICAgICAgLCBtX3Byb2dyZXNzVG90YWwocHJv
Z3Jlc3NUb3RhbCkKKyAgICAgICAgLCBtX3Byb2dyZXNzRG9uZShwcm9ncmVzc0RvbmUpCiAgICAg
ewogICAgIH0KIAogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsK
ICAgICBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBtX2V2ZW50SUQ7CisgICAgaW50IG1f
cHJvZ3Jlc3NUb3RhbDsKKyAgICBpbnQgbV9wcm9ncmVzc0RvbmU7CiB9OwogCi12b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RXZlbnRJRCBldmVudElELCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNl
dCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsK
ICAgICBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVu
ZCA9IGxvYWRlclNldC5lbmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6
Y29uc3RfaXRlcmF0b3IgaXRlciA9IGxvYWRlclNldC5iZWdpbigpOyBpdGVyICE9IGxvYWRlclNl
dEVuZDsgKytpdGVyKQotICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50SUQsICppdGVyKTsK
KyAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVz
c0RvbmUsICppdGVyKTsKIH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0
ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJU
YXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEZy
YW1lKiBmcmFtZSA9IGxvYWRlci0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtOTkyLDcg
KzEwMDcsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyCiAgICAg
CiAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSA9PSBsb2FkZXIp
OwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnBvc3RUYXNrKENhbGxDYWNoZUxpc3RlbmVyVGFz
azo6Y3JlYXRlKGxvYWRlciwgZXZlbnRJRCkpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0
VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dy
ZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6Y2xlYXJTdG9yYWdlSUQoKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
LDggKzkxLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29weSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDb3B5OyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhB
cHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRl
cio+Jik7Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0TGlz
dGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBjb25zdCBIYXNoU2V0
PERvY3VtZW50TG9hZGVyKj4mIHNldCkgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAwLCBzZXQp
OyB9CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9z
dDo6RXZlbnRJRCBpZCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgIHsgcG9zdExpc3RlbmVyVGFz
ayhpZCwgMCwgMCwgbG9hZGVyKTsgfQorICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2so
QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJv
Z3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBzdGF0aWMg
dm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBpbnQg
cHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXIqKTsKKwogICAg
IHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKIAogICAgIFBh
c3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0IEtVUkwm
LCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsKQEAgLTE0
Nyw2ICsxNTAsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMgb2YgcGVu
ZGluZyBjYWNoZSBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVk
PiBFbnRyeU1hcDsKICAgICBFbnRyeU1hcCBtX3BlbmRpbmdFbnRyaWVzOworICAgIAorICAgIC8v
IFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gYmUgcHJvY2Vzc2VkIHRvIHVwZGF0ZSB0aGUg
Y2FjaGUgZ3JvdXAgYW5kIHRoZSBudW1iZXIgdGhhdCBoYXZlIGJlZW4gZG9uZS4KKyAgICBpbnQg
bV9wcm9ncmVzc1RvdGFsOworICAgIGludCBtX3Byb2dyZXNzRG9uZTsKIAogICAgIC8vIEZyYW1l
IHVzZWQgZm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0aW5nLgogICAgIC8vIEZJWE1F
OiBBbiB1cGRhdGUgc3RhcnRlZCBieSBhIHBhcnRpY3VsYXIgZnJhbWUgc2hvdWxkIG5vdCBzdG9w
IGlmIGl0IGlzIGRlc3Ryb3llZCwgYnV0IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgYXNzb2NpYXRl
ZCB3aXRoIHRoZSBzYW1lIGNhY2hlIGdyb3VwLgpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjIxNDcpCisrKyBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9hZGVyLmgi
CisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZGVyLmgi
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAg
LTIyOCwzNSArMjI5LDQyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxp
Y2EKICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwogfQog
Ci12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2
ZW50SUQgaWQpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlv
bkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7CiAgICAgaWYgKG1fZGVm
ZXJzRXZlbnRzKSB7Ci0gICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgZG9jdW1l
bnQub25sb2FkIGhhcyBmaXJlZC4KLSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoaWQp
OworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBkZWZlcnJlZCB1bnRpbCBkb2N1bWVu
dC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVuZChEZWZl
cnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9
IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsgICAgCi0gICAgfQorICAgIGRpc3BhdGNoRE9N
RXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90
ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rl
ZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVy
cmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAg
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIG1fZG9tQXBwbGljYXRp
b25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6
OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICAgICAgQVNTRVJU
KCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRGVmZXJyZWRFdmVudCYgZGVmZXJyZWQg
PSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBkaXNwYXRjaERPTUV2ZW50KGRlZmVycmVk
LmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90YWwsIGRlZmVycmVkLnByb2dyZXNzRG9uZSk7
CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2RlZmVyc0V2ZW50
cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2
ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCit7CisgICAgaWYgKG1fZG9tQXBw
bGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9
IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKTsKKyAgICAgICAgRXhjZXB0aW9u
Q29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CisgICAgICAgIGlmIChp
ZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAgICAgIGV2ZW50ID0gUHJvZ3Jlc3NFdmVudDo6
Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpOwor
ICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsK
KyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorfQorCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25DYWNoZUdy
b3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7CkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJKHJldmlz
aW9uIDYyMTQ3KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDggKzEwOCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAgICAgYm9vbCB1cGRhdGUoKTsKICAgICAgICAgYm9vbCBzd2FwQ2FjaGUoKTsKIAot
ICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGljYXRpb25DYWNoZSog
ZG9tQXBwbGljYXRpb25DYWNoZSk7Ci0gICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRpb25D
YWNoZShFdmVudElEIGlkKTsKKyAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERP
TUFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKEV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKTsKIAogICAg
ICAgICB2b2lkIHN0b3BEZWZlcnJpbmdFdmVudHMoKTsgLy8gQWxzbyByYWlzZXMgdGhlIGV2ZW50
cyB0aGF0IGhhdmUgYmVlbiBxdWV1ZWQgdXAuCiAKQEAgLTExNywxMCArMTE3LDE5IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCk7
CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIHsgcmV0dXJuIG1fZG9j
dW1lbnRMb2FkZXI7IH0KIAorICAgICAgICBzdHJ1Y3QgRGVmZXJyZWRFdmVudCB7CisgICAgICAg
ICAgICBFdmVudElEIGV2ZW50SUQ7CisgICAgICAgICAgICBpbnQgcHJvZ3Jlc3NUb3RhbDsKKyAg
ICAgICAgICAgIGludCBwcm9ncmVzc0RvbmU7CisgICAgICAgICAgICBEZWZlcnJlZEV2ZW50KEV2
ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpIDogZXZlbnRJRChpZCksIHByb2dyZXNzVG90
YWwodG90YWwpLCBwcm9ncmVzc0RvbmUoZG9uZSkgeyB9CisgICAgICAgIH07CisKICAgICAgICAg
RE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNhY2hlOwogICAgICAgICBEb2N1
bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKICAgICAgICAgYm9vbCBtX2RlZmVyc0V2ZW50
czsgLy8gRXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVudCBvbmxvYWQuCi0g
ICAgICAgIFZlY3RvcjxFdmVudElEPiBtX2RlZmVycmVkRXZlbnRzOworICAgICAgICBWZWN0b3I8
RGVmZXJyZWRFdmVudD4gbV9kZWZlcnJlZEV2ZW50czsKKworICAgICAgICB2b2lkIGRpc3BhdGNo
RE9NRXZlbnQoRXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUpOwog
CiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGZyaWVuZCBjbGFzcyBBcHBsaWNhdGlv
bkNhY2hlSG9zdEludGVybmFsOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjIwNSkKKysr
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAxMC0wNi0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgY2xhc3Mg
UHJvZ3Jlc3NFdmVudCB3aGVuIHJhaXNpbmcgYXBwY2FjaGUgcmVsYXRlZCBwcm9ncmVzcyBldmVu
dHMgYW5kCisgICAgICAgIHNldCB0aGUgJ3RvdGFsJywgJ2xvYWRlZCcsIGFuZCAnbGVuZ3RoQ29t
cHV0YWJsZScgYXR0cmlidXRlcy4KKyAgICAgICAgQWxzbyByYWlzZSB0aGUgZmluYWwgcHJvZ3Jl
c3MgZXZlbnQgd2l0aCB0aGUgJ3RvdGFsJyBhbmQgJ2xvYWRlZCcgYXR0cmlidXRlCisgICAgICAg
IHZhbHVlcyBhcmUgZXF1YWwgdG8gb25lIGFub3RoZXIgdG8ga2VlcCBwYWNlIHdpdGggdGhlIHNw
ZWMgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTM3NjAyCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25DYWNoZUhvc3Qu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6Om5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6
OnN0b3BEZWZlcnJpbmdFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNo
ZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQpOgorICAgICAgICAqIHNyYy9BcHBsaWNhdGlvbkNhY2hl
SG9zdEludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlSG9zdElu
dGVybmFsOjpub3RpZnlFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0SW50ZXJuYWw6Om5vdGlmeVByb2dyZXNzRXZlbnRMaXN0ZW5lcik6CisKIDIw
MTAtMDYtMjUgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCShyZXZpc2lvbiA2MjE0NykKKysrIFdlYktp
dC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJE
T01BcHBsaWNhdGlvbkNhY2hlLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQcm9n
cmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIK
ICNpbmNsdWRlICJXZWJVUkxFcnJvci5oIgpAQCAtMTk1LDM0ICsxOTYsNDIgQEAgdm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6c2V0RE9NQXBwbGljYQogICAgIG1fZG9tQXBwbGljYXRpb25DYWNo
ZSA9IGRvbUFwcGxpY2F0aW9uQ2FjaGU7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6
Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCkKK3ZvaWQgQXBwbGljYXRpb25D
YWNoZUhvc3Q6Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoRXZlbnRJRCBpZCwgaW50IHRvdGFs
LCBpbnQgZG9uZSkKIHsKICAgICBpZiAobV9kZWZlcnNFdmVudHMpIHsKLSAgICAgICAgbV9kZWZl
cnJlZEV2ZW50cy5hcHBlbmQoaWQpOworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBk
ZWZlcnJlZCB1bnRpbCBkb2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVy
cmVkRXZlbnRzLmFwcGVuZChEZWZlcnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+
ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRU
eXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICB9
CisgICAgZGlzcGF0Y2hET01FdmVudChpZCwgdG90YWwsIGRvbmUpOwogfQogCiB2b2lkIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKCkKIHsKICAgICBSZWZQdHI8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QoZG9jdW1lbnRMb2FkZXIoKSk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fZGVmZXJyZWRFdmVudHMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRXZl
bnRJRCBpZCA9IG1fZGVmZXJyZWRFdmVudHNbaV07Ci0gICAgICAgIGlmIChtX2RvbUFwcGxpY2F0
aW9uQ2FjaGUpIHsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAg
ICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoRE9N
QXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpLCBmYWxzZSwgZmFsc2UpLCBlYyk7Ci0g
ICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgfQorICAgICAgICBjb25zdCBEZWZlcnJl
ZEV2ZW50JiBkZWZlcnJlZCA9IG1fZGVmZXJyZWRFdmVudHNbaV07CisgICAgICAgIGRpc3BhdGNo
RE9NRXZlbnQoZGVmZXJyZWQuZXZlbnRJRCwgZGVmZXJyZWQucHJvZ3Jlc3NUb3RhbCwgZGVmZXJy
ZWQucHJvZ3Jlc3NEb25lKTsKICAgICB9CiAgICAgbV9kZWZlcnJlZEV2ZW50cy5jbGVhcigpOwog
ICAgIG1fZGVmZXJzRXZlbnRzID0gZmFsc2U7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OmRpc3BhdGNoRE9NRXZlbnQoRXZlbnRJRCBpZCwgaW50IHRvdGFsLCBpbnQgZG9uZSkKK3sK
KyAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7CisgICAgICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlID0gRE9NQXBwbGljYXRpb25DYWNoZTo6dG9FdmVudFR5cGUoaWQpOwor
ICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgUmVmUHRyPEV2ZW50PiBldmVu
dDsKKyAgICAgICAgaWYgKGlkID09IFBST0dSRVNTX0VWRU5UKQorICAgICAgICAgICAgZXZlbnQg
PSBQcm9ncmVzc0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCB0cnVlLCBkb25lLCB0b3RhbCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUs
IGZhbHNlLCBmYWxzZSk7CisgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hF
dmVudChldmVudCwgZWMpOworICAgICAgICBBU1NFUlQoIWVjKTsKKyAgICB9Cit9CisKIEFwcGxp
Y2F0aW9uQ2FjaGVIb3N0OjpTdGF0dXMgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnN0YXR1cygpIGNv
bnN0CiB7CiAgICAgcmV0dXJuIG1faW50ZXJuYWwgPyBzdGF0aWNfY2FzdDxTdGF0dXM+KG1faW50
ZXJuYWwtPm1fb3V0ZXJIb3N0LT5zdGF0dXMoKSkgOiBVTkNBQ0hFRDsKSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJbnRlcm5hbC5oCShyZXZp
c2lvbiA2MjE0NykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQXBwbGljYXRpb25DYWNoZUhvc3RJ
bnRlcm5hbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxOCArNTUsMTIgQEAgcHVibGljOgogCiAg
ICAgdmlydHVhbCB2b2lkIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElEKQogICAgIHsKLSAgICAgICAgbV9pbm5lckhvc3Qt
Pm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhv
c3Q6OkV2ZW50SUQ+KGV2ZW50SUQpKTsKKyAgICAgICAgbV9pbm5lckhvc3QtPm5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUoc3RhdGljX2Nhc3Q8QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQ+
KGV2ZW50SUQpLCAwLCAwKTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5UHJvZ3Jl
c3NFdmVudExpc3RlbmVyKGNvbnN0IFdlYktpdDo6V2ViVVJMJiwgaW50IG51bV90b3RhbCwgaW50
IG51bV9jb21wbGV0ZSkgCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVByb2dyZXNzRXZlbnRMaXN0
ZW5lcihjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jl
c3NEb25lKSAKICAgICB7Ci0gICAgICAgIC8vIEZJWE1FOiBNb2RpZnkgd2ViY29yZSdzIHByb2dy
ZXNzIGV2ZW50IGhhbmRsaW5nIHRvIGNhcnJ5IHRoZSBleHRyYSBpbmZvIGFuZCBhbHRlciB0aGUK
LSAgICAgICAgLy8gbGF5b3V0IHRlc3RzIHRvIG5vdCBmYWlsIHdoZW4gdGhlIG1vcmUgcmVjZW50
bHkgc3BlY2lmaWVkICdmaW5hbCcgZXZlbnQgaXMgcmFpc2VkLgotICAgICAgICAvLyBGb3Igbm93
LCB3ZSdyZSBlYXRpbmcgdGhlIGV4dHJhIGluZm8gYW5kIHRoYXQgbGFzdCBldmVudC4KLSAgICAg
ICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgot
ICAgICAgICBpZiAobnVtX2NvbXBsZXRlID09IG51bV90b3RhbCkKLSAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgbm90aWZ5RXZlbnRMaXN0ZW5lcihXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpQcm9ncmVzc0V2ZW50KTsKKyAgICAgICAgbV9pbm5lckhvc3QtPm5vdGlmeURPTUFw
cGxpY2F0aW9uQ2FjaGUoQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBwcm9n
cmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpOwogICAgIH0KIAogICAgIHN0YXRpYyBXZWJLaXQ6Oldl
YkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiB0b1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KEFwcGxpY2F0
aW9uQ2FjaGVIb3N0KiBpbm5lckhvc3QpCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2MjIwNSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEw
LTA2LTMwICBNaWNoYWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGxheW91dCB0ZXN0
IHRvIHZlcmlmeSB0aGUgZXhwZWN0ZWQgbnVtYmVyIG9mIHByb2dyZXNzIGV2ZW50cyBhcmUgcmFp
c2VkIGJ5IHRoZSBhcHBjYWNoZSwKKyAgICAgICAgYW5kIHRoYXQgdGhvc2UgZXZlbnRzIGhhdmUg
cHJvcGVybHkgc2V0ICdsZW5ndGhDb21wdXRhYmxlJywgJ2xvYWRlZCcsIGFuZCAndG90YWwnIGF0
dHJpYnV0ZXMuCisgICAgICAgIEFsc28gdXBkYXRlIGEgY291cGxlIG9mIG90aGVyIHRlc3RzIHRo
YXQgZGVwZW5kIG9uIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcHJvZ3Jlc3MgZXZlbnRzIHRvCisg
ICAgICAgIGRldGVybWluZSBzdWNjZXNzIG9yIGZhaWx1cmUgdG8gbm93IGV4cGVjdCB0aGUgYWRk
aXRpb25hbCBmaW5hbCBwcm9ncmVzcyBldmVudCB0aGF0IGlzIGJlaW5nCisgICAgICAgIHJhaXNl
ZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NjAy
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRl
ci1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcHJv
Z3Jlc3MtY291bnRlci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0bWw6CisgICAgICAg
ICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5pZmVz
dDogQWRkZWQuCisKIDIwMTAtMDYtMzAgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJhbWUt
bWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyMTQ3KQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNSw2ICs1LDcgQEAgZG93bmxvYWRpbmcKIHByb2dyZXNzCiBwcm9ncmVzcwogcHJv
Z3Jlc3MKK3Byb2dyZXNzCiBjYWNoZWQKIFNVQ0NFU1MKIApJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50ZXItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNo
ZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
IEBACitUaGlzIHRlc3RzIHRoYXQgdGhlIGxlbmd0aENvbXB1dGFibGUgLyBsb2FkZWQgLyB0b3Rh
bCBwcm9wZXJ0aWVzIG9mIHRoZSBwcm9ncmVzcyBldmVudCBhcmUgc2V0IGNvcnJlY3RseS4KK1NV
Q0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291
bnRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cHJvZ3Jlc3MtY291bnRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTYgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5p
ZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGV4cGVjdGVkVG90YWwgPSAyCit2YXIgZXZl
bnRzUmVjZWl2ZWQgPSAwOworCitmdW5jdGlvbiBkb25lKCkgeworICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURv
bmUoKTsKK30KKworZnVuY3Rpb24gcHJvZ3Jlc3MoZXZlbnQpCit7CisgICAgaWYgKCFldmVudC5s
ZW5ndGhDb21wdXRhYmxlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1
bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVudC5sZW5ndGhD
b21wdXRhYmxlIHRvIGJlIHRydWUiOworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgaWYgKGV2ZW50LnRvdGFsICE9IGV4cGVjdGVkVG90YWwpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiBl
eHBlY3RlZCBwcm9ncmVzc0V2ZW50LnRvdGFsIHRvIGJlICIgKyBleHBlY3RlZFRvdGFsICsgIiBi
dXQgd2FzICIgKyBldmVudC50b3RhbDsKKyAgICAgICAgZG9uZSgpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIGlmIChldmVudC5sb2FkZWQgIT0gZXZlbnRzUmVjZWl2ZWQpIHsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJF
OiBleHBlY3RlZCBwcm9ncmVzc0V2ZW50LmxvYWRlZCB0byBiZSAiICsgZXZlbnRzUmVjZWl2ZWQg
KyAiIGJ1dCB3YXMgIiArIGV2ZW50LmxvYWRlZDsKKyAgICAgICAgZG9uZSgpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIGV2ZW50c1JlY2VpdmVkKys7Cit9CisKK2Z1bmN0aW9uIGNhY2hl
ZCgpCit7CisgICAgaWYgKGV2ZW50c1JlY2VpdmVkICE9IDMpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiBleHBlY3RlZCAz
IHByb2dyZXNzIGV2ZW50cywgYnV0IGdvdCAiICsgZXZlbnRzUmVjZWl2ZWQ7CisgICAgICAgIGRv
bmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CisgICAgZG9uZSgpOworfQorCith
cHBsaWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGNhY2hlZCwgZmFsc2Up
OworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIGNhY2hlZCwg
ZmFsc2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHBy
b2dyZXNzLCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPGRpdj5UaGlzIHRlc3RzIHRoYXQgdGhlIGxl
bmd0aENvbXB1dGFibGUgLyBsb2FkZWQgLyB0b3RhbCBwcm9wZXJ0aWVzIG9mIHRoZSBwcm9ncmVz
cyBldmVudCBhcmUgc2V0IGNvcnJlY3RseS48L2Rpdj4KKworPGRpdiBpZD0icmVzdWx0Ij5GQUlM
VVJFPC9kaXY+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvZGlmZmVyZW50
LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiA2MjE0NykKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRwcy1vcmlnaW4t
cmVzb3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTQgQEAgZnVuY3Rpb24g
ZXJyb3IoKQogICAgIGhhZEVycm9yID0gdHJ1ZTsKICAgICBmaW5pc2goKTsKIH0KK2Z1bmN0aW9u
IHByb2dyZXNzSGFuZGxlcihlKQoreworICAgIC8vIFRoZSBvbmx5IHJlc291cmNlIGxpc3RlZCBp
biB0aGUgbWFuaWZlc3QgZmlsZSBpcyBpbiBhIGRpZmZlcmVudCBodHRwcyBvcmlnaW4gYW5kIHNo
b3VsZCBiZSBza2lwcGVkLgorICAgIGlmIChlLmxvYWRlZCAhPSAwIHx8IGUudG90YWwgIT0gMCkK
KyAgICAgICAgZmFpbCgpOworfQogCi1hcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jlc3MgPSBmdW5j
dGlvbigpIHsgZmFpbCgpOyB9CithcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jlc3MgPSBwcm9ncmVz
c0hhbmRsZXI7CiBhcHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgZmlu
aXNoKCk7IH0KIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgZmluaXNo
KCk7IH0KIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBlcnJvcigpOyB9
CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVz
cy1jb3VudGVyLm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3QJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVzcy1j
b3VudGVyLm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NBQ0hFIE1BTklG
RVNUCitzaW1wbGUudHh0CitlbXB0eS50eHQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60787</attachid>
            <date>2010-07-07 15:15:23 -0700</date>
            <delta_ts>2010-07-09 03:19:03 -0700</delta_ts>
            <desc>ProgressEvents with another layout test error message fixed</desc>
            <filename>progress5.txt</filename>
            <type>text/plain</type>
            <size>23679</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjQwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGNsYXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQg
cHJvZ3Jlc3MgZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBh
bmQgJ2xlbmd0aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhl
IGZpbmFsIHByb2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJp
YnV0ZQorICAgICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFj
ZSB3aXRoIHRoZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OkNhbGxDYWNoZUxp
c3RlbmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBv
c3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpEZWZlcnJlZEV2ZW50OjpEZWZlcnJlZEV2ZW50KToKKwogMjAxMC0wNy0wMiAg
QWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24gNjI0MDYpCisrKyBXZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01MSw2ICs1MSw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUcK
ICAgICA6IG1fbWFuaWZlc3RVUkwobWFuaWZlc3RVUkwpCiAgICAgLCBtX3VwZGF0ZVN0YXR1cyhJ
ZGxlKQogICAgICwgbV9kb3dubG9hZGluZ1BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnNDb3Vu
dCgwKQorICAgICwgbV9wcm9ncmVzc1RvdGFsKDApCisgICAgLCBtX3Byb2dyZXNzRG9uZSgwKQog
ICAgICwgbV9mcmFtZSgwKQogICAgICwgbV9zdG9yYWdlSUQoMCkKICAgICAsIG1faXNPYnNvbGV0
ZShmYWxzZSkKQEAgLTY3NCw3ICs2NzYsMTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OmRpZEZpbmlzaExvYQogICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQtPnNldE9ubGluZVdoaXRlbGlz
dChtYW5pZmVzdC5vbmxpbmVXaGl0ZWxpc3RlZFVSTHMpOwogICAgIG1fY2FjaGVCZWluZ1VwZGF0
ZWQtPnNldEZhbGxiYWNrVVJMcyhtYW5pZmVzdC5mYWxsYmFja1VSTHMpOwogICAgIG1fY2FjaGVC
ZWluZ1VwZGF0ZWQtPnNldEFsbG93c0FsbE5ldHdvcmtSZXF1ZXN0cyhtYW5pZmVzdC5hbGxvd0Fs
bE5ldHdvcmtSZXF1ZXN0cyk7Ci0gICAgCisKKyAgICBtX3Byb2dyZXNzVG90YWwgPSBtX3BlbmRp
bmdFbnRyaWVzLnNpemUoKTsKKyAgICBtX3Byb2dyZXNzRG9uZSA9IDA7CisKICAgICBzdGFydExv
YWRpbmdFbnRyeSgpOwogfQogCkBAIC03ODIsNyArNzg3LDEyIEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpjaGVja0lmTG9hZEkKICAgICAgICAgICAgIC8vIE5ldyBjYWNoZSBzdG9yZWQs
IG5vdyByZW1vdmUgdGhlIG9sZCBjYWNoZS4KICAgICAgICAgICAgIGlmIChvbGROZXdlc3RDYWNo
ZSkKICAgICAgICAgICAgICAgICBjYWNoZVN0b3JhZ2UoKS5yZW1vdmUob2xkTmV3ZXN0Q2FjaGUu
Z2V0KCkpOwotICAgICAgICAgICAgLy8gRmlyZSB0aGUgc3VjY2VzcyBldmVudHMuCisKKyAgICAg
ICAgICAgIC8vIEZpcmUgdGhlIGZpbmFsIHByb2dyZXNzIGV2ZW50LgorICAgICAgICAgICAgQVNT
RVJUKG1fcHJvZ3Jlc3NEb25lID09IG1fcHJvZ3Jlc3NUb3RhbCk7CisgICAgICAgICAgICBwb3N0
TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpQUk9HUkVTU19FVkVOVCwgbV9wcm9n
cmVzc1RvdGFsLCBtX3Byb2dyZXNzRG9uZSwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsK
KworICAgICAgICAgICAgLy8gRmlyZSB0aGUgc3VjY2VzcyBldmVudC4KICAgICAgICAgICAgIHBv
c3RMaXN0ZW5lclRhc2soaXNVcGdyYWRlQXR0ZW1wdCA/IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpV
UERBVEVSRUFEWV9FVkVOVCA6IEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDQUNIRURfRVZFTlQsIG1f
YXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICBpZiAoY2FjaGVTdG9yYWdlKCkuaXNNYXhpbXVtU2l6ZVJlYWNoZWQoKSAmJiAhbV9jYWxsZWRS
ZWFjaGVkTWF4QXBwQ2FjaGVTaXplKSB7CkBAIC04NDksNyArODU5LDggQEAgdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OnN0YXJ0TG9hZGluZwogICAgIAogICAgIEVudHJ5TWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fcGVuZGluZ0VudHJpZXMuYmVnaW4oKTsKIAotICAgIHBvc3RMaXN0ZW5l
clRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNTX0VWRU5ULCBtX2Fzc29jaWF0ZWRE
b2N1bWVudExvYWRlcnMpOworICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhv
c3Q6OlBST0dSRVNTX0VWRU5ULCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fz
c29jaWF0ZWREb2N1bWVudExvYWRlcnMpOworICAgIG1fcHJvZ3Jlc3NEb25lKys7CiAKICAgICBB
U1NFUlQoIW1fY3VycmVudEhhbmRsZSk7CiAgICAgCkBAIC05NDgsOSArOTU5LDkgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNjaGVkdWxlUmVhYwogCiBjbGFzcyBDYWxsQ2FjaGVMaXN0
ZW5lclRhc2sgOiBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzayB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q2FsbENhY2hlTGlzdGVuZXJUYXNrPiBjcmVhdGUoUGFz
c1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZl
bnRJRCBldmVudElEKQorICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxDYWNoZUxpc3RlbmVyVGFz
az4gY3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVz
c0RvbmUpCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IENhbGxDYWNoZUxpc3RlbmVyVGFzayhs
b2FkZXIsIGV2ZW50SUQpOworICAgICAgICByZXR1cm4gbmV3IENhbGxDYWNoZUxpc3RlbmVyVGFz
ayhsb2FkZXIsIGV2ZW50SUQsIHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSk7CiAgICAgfQog
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCkBAIC05NjMsMjggKzk3NCwzMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgICAgIEFTU0VS
VChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgPT0gbV9kb2N1bWVudExvYWRlci5n
ZXQoKSk7CiAKLSAgICAgICAgbV9kb2N1bWVudExvYWRlci0+YXBwbGljYXRpb25DYWNoZUhvc3Qo
KS0+bm90aWZ5RE9NQXBwbGljYXRpb25DYWNoZShtX2V2ZW50SUQpOworICAgICAgICBtX2RvY3Vt
ZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5ub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKG1fZXZlbnRJRCwgbV9wcm9ncmVzc1RvdGFsLCBtX3Byb2dyZXNzRG9uZSk7CiAgICAgfQog
CiBwcml2YXRlOgotICAgIENhbGxDYWNoZUxpc3RlbmVyVGFzayhQYXNzUmVmUHRyPERvY3VtZW50
TG9hZGVyPiBsb2FkZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQpCisg
ICAgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRl
ciwgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgaW50IHByb2dyZXNzVG90
YWwsIGludCBwcm9ncmVzc0RvbmUpCiAgICAgICAgIDogbV9kb2N1bWVudExvYWRlcihsb2FkZXIp
CiAgICAgICAgICwgbV9ldmVudElEKGV2ZW50SUQpCisgICAgICAgICwgbV9wcm9ncmVzc1RvdGFs
KHByb2dyZXNzVG90YWwpCisgICAgICAgICwgbV9wcm9ncmVzc0RvbmUocHJvZ3Jlc3NEb25lKQog
ICAgIHsKICAgICB9CiAKICAgICBSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IG1fZG9jdW1lbnRMb2Fk
ZXI7CiAgICAgQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgbV9ldmVudElEOworICAgIGlu
dCBtX3Byb2dyZXNzVG90YWw7CisgICAgaW50IG1fcHJvZ3Jlc3NEb25lOwogfTsKIAotdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhv
c3Q6OkV2ZW50SUQgZXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRlcio+JiBsb2Fk
ZXJTZXQpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3RlbmVyVGFzayhBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50
IHByb2dyZXNzRG9uZSwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRlcio+JiBsb2FkZXJTZXQp
CiB7CiAgICAgSGFzaFNldDxEb2N1bWVudExvYWRlcio+Ojpjb25zdF9pdGVyYXRvciBsb2FkZXJT
ZXRFbmQgPSBsb2FkZXJTZXQuZW5kKCk7CiAgICAgZm9yIChIYXNoU2V0PERvY3VtZW50TG9hZGVy
Kj46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBsb2FkZXJTZXQuYmVnaW4oKTsgaXRlciAhPSBsb2Fk
ZXJTZXRFbmQ7ICsraXRlcikKLSAgICAgICAgcG9zdExpc3RlbmVyVGFzayhldmVudElELCAqaXRl
cik7CisgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soZXZlbnRJRCwgcHJvZ3Jlc3NUb3RhbCwgcHJv
Z3Jlc3NEb25lLCAqaXRlcik7CiB9CiAKLXZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0
TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9zdExpc3Rl
bmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jl
c3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBsb2FkZXItPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKQEAgLTk5
Miw3ICsxMDA3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lcgog
ICAgIAogICAgIEFTU0VSVChmcmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgPT0gbG9h
ZGVyKTsKIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5l
clRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQpKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
cG9zdFRhc2soQ2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVhdGUobG9hZGVyLCBldmVudElELCBw
cm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
R3JvdXA6OmNsZWFyU3RvcmFnZUlEKCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0Fw
cGxpY2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiA2MjQwNikKKysrIFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MSw4ICs5MSwxMSBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0NvcHkoKSBjb25zdCB7IHJldHVy
biBtX2lzQ29weTsgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRh
c2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGNvbnN0IEhhc2hTZXQ8RG9jdW1lbnRM
b2FkZXIqPiYpOwotICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkV2ZW50SUQsIERvY3VtZW50TG9hZGVyKik7CisgICAgc3RhdGljIHZvaWQgcG9z
dExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBpZCwgY29uc3QgSGFz
aFNldDxEb2N1bWVudExvYWRlcio+JiBzZXQpIHsgcG9zdExpc3RlbmVyVGFzayhpZCwgMCwgMCwg
c2V0KTsgfQorICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OkV2ZW50SUQgaWQsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIpICB7IHBvc3RMaXN0ZW5l
clRhc2soaWQsIDAsIDAsIGxvYWRlcik7IH0KKyAgICBzdGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJU
YXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50
IHByb2dyZXNzRG9uZSwgY29uc3QgSGFzaFNldDxEb2N1bWVudExvYWRlcio+Jik7CisgICAgc3Rh
dGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwg
aW50IHByb2dyZXNzVG90YWwsIGludCBwcm9ncmVzc0RvbmUsIERvY3VtZW50TG9hZGVyKik7CisK
ICAgICB2b2lkIHNjaGVkdWxlUmVhY2hlZE1heEFwcENhY2hlU2l6ZUNhbGxiYWNrKCk7CiAKICAg
ICBQYXNzUmVmUHRyPFJlc291cmNlSGFuZGxlPiBjcmVhdGVSZXNvdXJjZUhhbmRsZShjb25zdCBL
VVJMJiwgQXBwbGljYXRpb25DYWNoZVJlc291cmNlKiBuZXdlc3RDYWNoZWRSZXNvdXJjZSk7CkBA
IC0xNDcsNiArMTUwLDEwIEBAIHByaXZhdGU6CiAgICAgLy8gVGhlIFVSTHMgYW5kIHR5cGVzIG9m
IHBlbmRpbmcgY2FjaGUgZW50cmllcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCB1bnNp
Z25lZD4gRW50cnlNYXA7CiAgICAgRW50cnlNYXAgbV9wZW5kaW5nRW50cmllczsKKyAgICAKKyAg
ICAvLyBUaGUgdG90YWwgbnVtYmVyIG9mIGl0ZW1zIHRvIGJlIHByb2Nlc3NlZCB0byB1cGRhdGUg
dGhlIGNhY2hlIGdyb3VwIGFuZCB0aGUgbnVtYmVyIHRoYXQgaGF2ZSBiZWVuIGRvbmUuCisgICAg
aW50IG1fcHJvZ3Jlc3NUb3RhbDsKKyAgICBpbnQgbV9wcm9ncmVzc0RvbmU7CiAKICAgICAvLyBG
cmFtZSB1c2VkIGZvciBmZXRjaGluZyByZXNvdXJjZXMgd2hlbiB1cGRhdGluZy4KICAgICAvLyBG
SVhNRTogQW4gdXBkYXRlIHN0YXJ0ZWQgYnkgYSBwYXJ0aWN1bGFyIGZyYW1lIHNob3VsZCBub3Qg
c3RvcCBpZiBpdCBpcyBkZXN0cm95ZWQsIGJ1dCB0aGVyZSBhcmUgb3RoZXIgZnJhbWVzIGFzc29j
aWF0ZWQgd2l0aCB0aGUgc2FtZSBjYWNoZSBncm91cC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHJldmlzaW9uIDYyNDA2KQor
KysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgogI2luY2x1ZGUgIk1haW5SZXNvdXJjZUxvYWRl
ci5oIgorI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRl
ci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgi
CkBAIC0yMjgsMzUgKzIyOSw0MiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzZXRET01B
cHBsaWNhCiAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlID0gZG9tQXBwbGljYXRpb25DYWNoZTsK
IH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGljYXRpb25DYWNo
ZShFdmVudElEIGlkKQordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6bm90aWZ5RE9NQXBwbGlj
YXRpb25DYWNoZShFdmVudElEIGlkLCBpbnQgdG90YWwsIGludCBkb25lKQogewogICAgIGlmICht
X2RlZmVyc0V2ZW50cykgewotICAgICAgICAvLyBFdmVudHMgYXJlIGRlZmVycmVkIHVudGlsIGRv
Y3VtZW50Lm9ubG9hZCBoYXMgZmlyZWQuCi0gICAgICAgIG1fZGVmZXJyZWRFdmVudHMuYXBwZW5k
KGlkKTsKKyAgICAgICAgLy8gRXZlbnQgZGlzcGF0Y2hpbmcgaXMgZGVmZXJyZWQgdW50aWwgZG9j
dW1lbnQub25sb2FkIGhhcyBmaXJlZC4KKyAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQo
RGVmZXJyZWRFdmVudChpZCwgdG90YWwsIGRvbmUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
LSAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBm
YWxzZSksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7ICAgIAotICAgIH0KKyAgICBkaXNwYXRj
aERPTUV2ZW50KGlkLCB0b3RhbCwgZG9uZSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUhv
c3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMoKQogewogICAgIFJlZlB0cjxEb2N1bWVudExvYWRlcj4g
cHJvdGVjdChkb2N1bWVudExvYWRlcigpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9kZWZlcnJlZEV2ZW50cy5zaXplKCk7ICsraSkgewotICAgICAgICBFdmVudElEIGlkID0gbV9k
ZWZlcnJlZEV2ZW50c1tpXTsKLSAgICAgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgewot
ICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBtX2RvbUFwcGxp
Y2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNh
Y2hlOjp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKLSAgICAgICAgICAgIEFT
U0VSVCghZWMpOwotICAgICAgICB9CisgICAgICAgIGNvbnN0IERlZmVycmVkRXZlbnQmIGRlZmVy
cmVkID0gbV9kZWZlcnJlZEV2ZW50c1tpXTsKKyAgICAgICAgZGlzcGF0Y2hET01FdmVudChkZWZl
cnJlZC5ldmVudElELCBkZWZlcnJlZC5wcm9ncmVzc1RvdGFsLCBkZWZlcnJlZC5wcm9ncmVzc0Rv
bmUpOwogICAgIH0KICAgICBtX2RlZmVycmVkRXZlbnRzLmNsZWFyKCk7CiAgICAgbV9kZWZlcnNF
dmVudHMgPSBmYWxzZTsKIH0KIAordm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6ZGlzcGF0Y2hE
T01FdmVudChFdmVudElEIGlkLCBpbnQgdG90YWwsIGludCBkb25lKQoreworICAgIGlmIChtX2Rv
bUFwcGxpY2F0aW9uQ2FjaGUpIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5
cGUgPSBET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50VHlwZShpZCk7CisgICAgICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOworICAgICAgICBSZWZQdHI8RXZlbnQ+IGV2ZW50OworICAgICAgICBp
ZiAoaWQgPT0gUFJPR1JFU1NfRVZFTlQpCisgICAgICAgICAgICBldmVudCA9IFByb2dyZXNzRXZl
bnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGRvbmUsIHRvdGFsKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgZXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgZmFsc2UsIGZhbHNl
KTsKKyAgICAgICAgbV9kb21BcHBsaWNhdGlvbkNhY2hlLT5kaXNwYXRjaEV2ZW50KGV2ZW50LCBl
Yyk7CisgICAgICAgIEFTU0VSVCghZWMpOworICAgIH0KK30KKwogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6c2V0Q2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwKEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cCogZ3JvdXApCiB7CiAgICAgQVNTRVJUKCFtX2FwcGxpY2F0aW9uQ2FjaGUpOwpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCShy
ZXZpc2lvbiA2MjQwNikKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw4ICsxMDgsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgdXBkYXRlKCk7CiAgICAgICAgIGJvb2wgc3dhcENhY2hlKCk7
CiAKLSAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNhY2hlKERPTUFwcGxpY2F0aW9uQ2Fj
aGUqIGRvbUFwcGxpY2F0aW9uQ2FjaGUpOwotICAgICAgICB2b2lkIG5vdGlmeURPTUFwcGxpY2F0
aW9uQ2FjaGUoRXZlbnRJRCBpZCk7CisgICAgICAgIHZvaWQgc2V0RE9NQXBwbGljYXRpb25DYWNo
ZShET01BcHBsaWNhdGlvbkNhY2hlKik7CisgICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGljYXRp
b25DYWNoZShFdmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSk7CiAK
ICAgICAgICAgdm9pZCBzdG9wRGVmZXJyaW5nRXZlbnRzKCk7IC8vIEFsc28gcmFpc2VzIHRoZSBl
dmVudHMgdGhhdCBoYXZlIGJlZW4gcXVldWVkIHVwLgogCkBAIC0xMTcsMTAgKzExNywxOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNBcHBsaWNhdGlvbkNhY2hlRW5hYmxl
ZCgpOwogICAgICAgICBEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIoKSB7IHJldHVybiBt
X2RvY3VtZW50TG9hZGVyOyB9CiAKKyAgICAgICAgc3RydWN0IERlZmVycmVkRXZlbnQgeworICAg
ICAgICAgICAgRXZlbnRJRCBldmVudElEOworICAgICAgICAgICAgaW50IHByb2dyZXNzVG90YWw7
CisgICAgICAgICAgICBpbnQgcHJvZ3Jlc3NEb25lOworICAgICAgICAgICAgRGVmZXJyZWRFdmVu
dChFdmVudElEIGlkLCBpbnQgdG90YWwsIGludCBkb25lKSA6IGV2ZW50SUQoaWQpLCBwcm9ncmVz
c1RvdGFsKHRvdGFsKSwgcHJvZ3Jlc3NEb25lKGRvbmUpIHsgfQorICAgICAgICB9OworCiAgICAg
ICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUqIG1fZG9tQXBwbGljYXRpb25DYWNoZTsKICAgICAgICAg
RG9jdW1lbnRMb2FkZXIqIG1fZG9jdW1lbnRMb2FkZXI7CiAgICAgICAgIGJvb2wgbV9kZWZlcnNF
dmVudHM7IC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwgYWZ0ZXIgZG9jdW1lbnQgb25sb2Fk
LgotICAgICAgICBWZWN0b3I8RXZlbnRJRD4gbV9kZWZlcnJlZEV2ZW50czsKKyAgICAgICAgVmVj
dG9yPERlZmVycmVkRXZlbnQ+IG1fZGVmZXJyZWRFdmVudHM7CisKKyAgICAgICAgdm9pZCBkaXNw
YXRjaERPTUV2ZW50KEV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25l
KTsKIAogI2lmIFBMQVRGT1JNKENIUk9NSVVNKQogICAgICAgICBmcmllbmQgY2xhc3MgQXBwbGlj
YXRpb25DYWNoZUhvc3RJbnRlcm5hbDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjI0MDYp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGNs
YXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQgcHJvZ3Jlc3Mg
ZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBhbmQgJ2xlbmd0
aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhlIGZpbmFsIHBy
b2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJpYnV0ZQorICAg
ICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFjZSB3aXRoIHRo
ZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgICogc3JjL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlE
T01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBzcmMvQXBwbGljYXRpb25D
YWNoZUhvc3RJbnRlcm5hbC5oOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhv
c3RJbnRlcm5hbDo6bm90aWZ5RXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlSG9zdEludGVybmFsOjpub3RpZnlQcm9ncmVzc0V2ZW50TGlzdGVuZXIpOgor
CiAyMDEwLTA3LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0v
c3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjI0MDYpCisrKyBXZWJL
aXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAi
RE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiUHJv
Z3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViVVJMLmgi
CiAjaW5jbHVkZSAiV2ViVVJMRXJyb3IuaCIKQEAgLTE5NSwzNCArMTk2LDQyIEBAIHZvaWQgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2EKICAgICBtX2RvbUFwcGxpY2F0aW9uQ2Fj
aGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0
Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpCit2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3Rh
bCwgaW50IGRvbmUpCiB7CiAgICAgaWYgKG1fZGVmZXJzRXZlbnRzKSB7Ci0gICAgICAgIG1fZGVm
ZXJyZWRFdmVudHMuYXBwZW5kKGlkKTsKKyAgICAgICAgLy8gRXZlbnQgZGlzcGF0Y2hpbmcgaXMg
ZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBmaXJlZC4KKyAgICAgICAgbV9kZWZl
cnJlZEV2ZW50cy5hcHBlbmQoRGVmZXJyZWRFdmVudChpZCwgdG90YWwsIGRvbmUpKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUt
PmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hlOjp0b0V2ZW50
VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAg
fQorICAgIGRpc3BhdGNoRE9NRXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAogdm9pZCBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAgUmVmUHRyPERv
Y3VtZW50TG9hZGVyPiBwcm90ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2RlZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV2
ZW50SUQgaWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9kb21BcHBsaWNh
dGlvbkNhY2hlKSB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAg
ICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERP
TUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwot
ICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRGVmZXJy
ZWRFdmVudCYgZGVmZXJyZWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBkaXNwYXRj
aERPTUV2ZW50KGRlZmVycmVkLmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90YWwsIGRlZmVy
cmVkLnByb2dyZXNzRG9uZSk7CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIoKTsK
ICAgICBtX2RlZmVyc0V2ZW50cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpkaXNwYXRjaERPTUV2ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCit7
CisgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSA9IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKTsK
KyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZl
bnQ7CisgICAgICAgIGlmIChpZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAgICAgIGV2ZW50
ID0gUHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBl
LCBmYWxzZSwgZmFsc2UpOworICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNo
RXZlbnQoZXZlbnQsIGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorfQorCiBBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpzdGF0dXMoKSBj
b25zdAogewogICAgIHJldHVybiBtX2ludGVybmFsID8gc3RhdGljX2Nhc3Q8U3RhdHVzPihtX2lu
dGVybmFsLT5tX291dGVySG9zdC0+c3RhdHVzKCkpIDogVU5DQUNIRUQ7CkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAkocmV2
aXNpb24gNjI0MDYpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0
SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTggKzU1LDEyIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgdm9pZCBub3RpZnlFdmVudExpc3RlbmVyKFdlYktpdDo6V2ViQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKICAgICB7Ci0gICAgICAgIG1faW5uZXJIb3N0
LT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0aW9uQ2FjaGVI
b3N0OjpFdmVudElEPihldmVudElEKSk7CisgICAgICAgIG1faW5uZXJIb3N0LT5ub3RpZnlET01B
cHBsaWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
PihldmVudElEKSwgMCwgMCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5vdGlmeVByb2dy
ZXNzRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGludCBudW1fdG90YWwsIGlu
dCBudW1fY29tcGxldGUpIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQcm9ncmVzc0V2ZW50TGlz
dGVuZXIoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dy
ZXNzRG9uZSkgCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTW9kaWZ5IHdlYmNvcmUncyBwcm9n
cmVzcyBldmVudCBoYW5kbGluZyB0byBjYXJyeSB0aGUgZXh0cmEgaW5mbyBhbmQgYWx0ZXIgdGhl
Ci0gICAgICAgIC8vIGxheW91dCB0ZXN0cyB0byBub3QgZmFpbCB3aGVuIHRoZSBtb3JlIHJlY2Vu
dGx5IHNwZWNpZmllZCAnZmluYWwnIGV2ZW50IGlzIHJhaXNlZC4KLSAgICAgICAgLy8gRm9yIG5v
dywgd2UncmUgZWF0aW5nIHRoZSBleHRyYSBpbmZvIGFuZCB0aGF0IGxhc3QgZXZlbnQuCi0gICAg
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2MDIK
LSAgICAgICAgaWYgKG51bV9jb21wbGV0ZSA9PSBudW1fdG90YWwpCi0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6UHJvZ3Jlc3NFdmVudCk7CisgICAgICAgIG1faW5uZXJIb3N0LT5ub3RpZnlET01B
cHBsaWNhdGlvbkNhY2hlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpQUk9HUkVTU19FVkVOVCwgcHJv
Z3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAgICBzdGF0aWMgV2ViS2l0OjpX
ZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogdG9XZWJBcHBsaWNhdGlvbkNhY2hlSG9zdChBcHBsaWNh
dGlvbkNhY2hlSG9zdCogaW5uZXJIb3N0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI0MDYpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAx
MC0wNi0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBsYXlvdXQgdGVz
dCB0byB2ZXJpZnkgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBwcm9ncmVzcyBldmVudHMgYXJlIHJh
aXNlZCBieSB0aGUgYXBwY2FjaGUsCisgICAgICAgIGFuZCB0aGF0IHRob3NlIGV2ZW50cyBoYXZl
IHByb3Blcmx5IHNldCAnbGVuZ3RoQ29tcHV0YWJsZScsICdsb2FkZWQnLCBhbmQgJ3RvdGFsJyBh
dHRyaWJ1dGVzLgorICAgICAgICBBbHNvIHVwZGF0ZSBhIGNvdXBsZSBvZiBvdGhlciB0ZXN0cyB0
aGF0IGRlcGVuZCBvbiBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHByb2dyZXNzIGV2ZW50cyB0bwor
ICAgICAgICBkZXRlcm1pbmUgc3VjY2VzcyBvciBmYWlsdXJlIHRvIG5vdyBleHBlY3QgdGhlIGFk
ZGl0aW9uYWwgZmluYWwgcHJvZ3Jlc3MgZXZlbnQgdGhhdCBpcyBiZWluZworICAgICAgICByYWlz
ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYw
MgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50
ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3By
b2dyZXNzLWNvdW50ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNo
ZS9yZXNvdXJjZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sOgorICAgICAg
ICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZl
c3Q6IEFkZGVkLgorCiAyMDEwLTA3LTAyICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFw
cGxlLmNvbT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBBbmRlcnMgQ2FybHNzb24uIApJ
bmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWlu
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2MjQwNikKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWlnbi1pZnJhbWUtbWFpbi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBAIGRvd25sb2FkaW5nCiBwcm9n
cmVzcwogcHJvZ3Jlc3MKIHByb2dyZXNzCitwcm9ncmVzcwogY2FjaGVkCiBTVUNDRVNTCiAKSW5k
ZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9w
cm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMiBAQAorVGhpcyB0ZXN0cyB0aGF0IHRoZSBsZW5ndGhDb21wdXRh
YmxlIC8gbG9hZGVkIC8gdG90YWwgcHJvcGVydGllcyBvZiB0aGUgcHJvZ3Jlc3MgZXZlbnQgYXJl
IHNldCBjb3JyZWN0bHkuCitTVUNDRVNTCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2Fw
cGNhY2hlL3Byb2dyZXNzLWNvdW50ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNvdW50ZXIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACis8aHRtbCBtYW5pZmVzdD0icmVzb3VyY2VzL3By
b2dyZXNzLWNvdW50ZXIubWFuaWZlc3QiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCkKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9CisKK3ZhciBleHBlY3Rl
ZFRvdGFsID0gMgordmFyIGV2ZW50c1JlY2VpdmVkID0gMDsKKworZnVuY3Rpb24gZG9uZSgpIHsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHByb2dyZXNzKGV2ZW50KQor
eworICAgIGlmICghZXZlbnQubGVuZ3RoQ29tcHV0YWJsZSkgeworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUxVUkU6IGV4cGVjdGVkIHBy
b2dyZXNzRXZlbnQubGVuZ3RoQ29tcHV0YWJsZSB0byBiZSB0cnVlIjsKKyAgICAgICAgZG9uZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVudC50b3RhbCAhPSBleHBlY3Rl
ZFRvdGFsKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVudC50b3RhbCB0byBiZSAiICsg
ZXhwZWN0ZWRUb3RhbCArICIgYnV0IHdhcyAiICsgZXZlbnQudG90YWw7CisgICAgICAgIGRvbmUo
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoZXZlbnQubG9hZGVkICE9IGV2ZW50
c1JlY2VpdmVkKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5p
bm5lckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVudC5sb2FkZWQgdG8gYmUg
IiArIGV2ZW50c1JlY2VpdmVkICsgIiBidXQgd2FzICIgKyBldmVudC5sb2FkZWQ7CisgICAgICAg
IGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBldmVudHNSZWNlaXZlZCsrOwor
fQorCitmdW5jdGlvbiBjYWNoZWQoKQoreworICAgIGlmIChldmVudHNSZWNlaXZlZCAhPSAzKSB7
CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAi
RkFJTFVSRTogZXhwZWN0ZWQgMyBwcm9ncmVzcyBldmVudHMsIGJ1dCBnb3QgIiArIGV2ZW50c1Jl
Y2VpdmVkOworICAgICAgICBkb25lKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlNVQ0NFU1MiOwor
ICAgIGRvbmUoKTsKK30KKworZnVuY3Rpb24gbm91cGRhdGUoKQoreworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTogdW5hYmxlIHRvIGNv
bmR1Y3QgdGVzdCBzaW5jZSB0aGUgYXBwY2FjaGUgYWxyZWFkeSBleGlzdHMsIHBsZWFzZSByZW1v
dmUgdGhlIGFwcGNhY2hlIGFuZCB0cnkgYWdhaW4iOworICAgIGRvbmUoKTsKK30KKworYXBwbGlj
YXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdjYWNoZWQnLCBjYWNoZWQsIGZhbHNlKTsKK2Fw
cGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBub3VwZGF0ZSwgZmFs
c2UpOworYXBwbGljYXRpb25DYWNoZS5hZGRFdmVudExpc3RlbmVyKCdwcm9ncmVzcycsIHByb2dy
ZXNzLCBmYWxzZSk7CisKKzwvc2NyaXB0PgorPGRpdj5UaGlzIHRlc3RzIHRoYXQgdGhlIGxlbmd0
aENvbXB1dGFibGUgLyBsb2FkZWQgLyB0b3RhbCBwcm9wZXJ0aWVzIG9mIHRoZSBwcm9ncmVzcyBl
dmVudCBhcmUgc2V0IGNvcnJlY3RseS48L2Rpdj4KKworPGRpdiBpZD0icmVzdWx0Ij5GQUlMVVJF
PC9kaXY+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jl
c291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2luLXJlc291cmNlLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvZGlmZmVyZW50LWh0
dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1sCShyZXZpc2lvbiA2MjQwNikKKysrIExheW91dFRlc3Rz
L2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2RpZmZlcmVudC1odHRwcy1vcmlnaW4tcmVz
b3VyY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMjAsOCArMjAsMTQgQEAgZnVuY3Rpb24gZXJy
b3IoKQogICAgIGhhZEVycm9yID0gdHJ1ZTsKICAgICBmaW5pc2goKTsKIH0KK2Z1bmN0aW9uIHBy
b2dyZXNzSGFuZGxlcihlKQoreworICAgIC8vIFRoZSBvbmx5IHJlc291cmNlIGxpc3RlZCBpbiB0
aGUgbWFuaWZlc3QgZmlsZSBpcyBpbiBhIGRpZmZlcmVudCBodHRwcyBvcmlnaW4gYW5kIHNob3Vs
ZCBiZSBza2lwcGVkLgorICAgIGlmIChlLmxvYWRlZCAhPSAwIHx8IGUudG90YWwgIT0gMCkKKyAg
ICAgICAgZmFpbCgpOworfQogCi1hcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jlc3MgPSBmdW5jdGlv
bigpIHsgZmFpbCgpOyB9CithcHBsaWNhdGlvbkNhY2hlLm9ucHJvZ3Jlc3MgPSBwcm9ncmVzc0hh
bmRsZXI7CiBhcHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgZmluaXNo
KCk7IH0KIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgZmluaXNoKCk7
IH0KIGFwcGxpY2F0aW9uQ2FjaGUub25lcnJvciA9IGZ1bmN0aW9uKCkgeyBlcnJvcigpOyB9Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVzcy1j
b3VudGVyLm1hbmlmZXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZlc3QJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9wcm9ncmVzcy1jb3Vu
dGVyLm1hbmlmZXN0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0NBQ0hFIE1BTklGRVNU
CitzaW1wbGUudHh0CitlbXB0eS50eHQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60956</attachid>
            <date>2010-07-08 14:15:37 -0700</date>
            <delta_ts>2010-07-09 08:56:07 -0700</delta_ts>
            <desc>ProgressEvents merged and resolved</desc>
            <filename>progress6.txt</filename>
            <type>text/plain</type>
            <size>23726</size>
            <attacher name="Michael Nordman">michaeln</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjgyMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMzAgIE1pY2hhZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXNlIGNsYXNzIFByb2dyZXNzRXZlbnQgd2hlbiByYWlzaW5nIGFwcGNhY2hlIHJlbGF0ZWQg
cHJvZ3Jlc3MgZXZlbnRzIGFuZAorICAgICAgICBzZXQgdGhlICd0b3RhbCcsICdsb2FkZWQnLCBh
bmQgJ2xlbmd0aENvbXB1dGFibGUnIGF0dHJpYnV0ZXMuCisgICAgICAgIEFsc28gcmFpc2UgdGhl
IGZpbmFsIHByb2dyZXNzIGV2ZW50IHdpdGggdGhlICd0b3RhbCcgYW5kICdsb2FkZWQnIGF0dHJp
YnV0ZQorICAgICAgICB2YWx1ZXMgYXJlIGVxdWFsIHRvIG9uZSBhbm90aGVyIHRvIGtlZXAgcGFj
ZSB3aXRoIHRoZSBzcGVjIGZvciB0aGlzIGZlYXR1cmUuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNzYwMgorCisgICAgICAgIFRlc3Q6IGh0dHAvdGVz
dHMvYXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCisKKyAgICAgICAgKiBsb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDo6QXBwbGljYXRpb25DYWNoZUdyb3VwKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hZGluZ01hbmlmZXN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJc0NvbXBs
ZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2Fk
aW5nRW50cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FsbENhY2hlTGlzdGVuZXJUYXNrOjpwZXJmb3JtVGFz
ayk6CisgICAgICAgIChXZWJDb3JlOjpDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OkNhbGxDYWNoZUxp
c3RlbmVyVGFzayk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBv
c3RMaXN0ZW5lclRhc2spOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6cG9z
dExpc3RlbmVyVGFzayk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3Rp
ZnlET01BcHBsaWNhdGlvbkNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0OjpzdG9wRGVmZXJyaW5nRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2Fj
aGUvQXBwbGljYXRpb25DYWNoZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpEZWZlcnJlZEV2ZW50OjpEZWZlcnJlZEV2ZW50KToKKwogMjAxMC0wNy0wOCAg
QW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQgY29tcGxlbWVudGFyeSBmaXggZm9yIHI2MjgxNQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwCShyZXZpc2lvbiA2MjgyMCkK
KysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDggQEAgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpBcHBs
aWNhdGlvbkNhY2hlRwogICAgIDogbV9tYW5pZmVzdFVSTChtYW5pZmVzdFVSTCkKICAgICAsIG1f
dXBkYXRlU3RhdHVzKElkbGUpCiAgICAgLCBtX2Rvd25sb2FkaW5nUGVuZGluZ01hc3RlclJlc291
cmNlTG9hZGVyc0NvdW50KDApCisgICAgLCBtX3Byb2dyZXNzVG90YWwoMCkKKyAgICAsIG1fcHJv
Z3Jlc3NEb25lKDApCiAgICAgLCBtX2ZyYW1lKDApCiAgICAgLCBtX3N0b3JhZ2VJRCgwKQogICAg
ICwgbV9pc09ic29sZXRlKGZhbHNlKQpAQCAtNzUxLDcgKzc1MywxMCBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9hCiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0
T25saW5lV2hpdGVsaXN0KG1hbmlmZXN0Lm9ubGluZVdoaXRlbGlzdGVkVVJMcyk7CiAgICAgbV9j
YWNoZUJlaW5nVXBkYXRlZC0+c2V0RmFsbGJhY2tVUkxzKG1hbmlmZXN0LmZhbGxiYWNrVVJMcyk7
CiAgICAgbV9jYWNoZUJlaW5nVXBkYXRlZC0+c2V0QWxsb3dzQWxsTmV0d29ya1JlcXVlc3RzKG1h
bmlmZXN0LmFsbG93QWxsTmV0d29ya1JlcXVlc3RzKTsKLSAgICAKKworICAgIG1fcHJvZ3Jlc3NU
b3RhbCA9IG1fcGVuZGluZ0VudHJpZXMuc2l6ZSgpOworICAgIG1fcHJvZ3Jlc3NEb25lID0gMDsK
KwogICAgIHN0YXJ0TG9hZGluZ0VudHJ5KCk7CiB9CiAKQEAgLTg1OSw3ICs4NjQsMTIgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSQogICAgICAgICAgICAgLy8gTmV3
IGNhY2hlIHN0b3JlZCwgbm93IHJlbW92ZSB0aGUgb2xkIGNhY2hlLgogICAgICAgICAgICAgaWYg
KG9sZE5ld2VzdENhY2hlKQogICAgICAgICAgICAgICAgIGNhY2hlU3RvcmFnZSgpLnJlbW92ZShv
bGROZXdlc3RDYWNoZS5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2
ZW50cy4KKworICAgICAgICAgICAgLy8gRmlyZSB0aGUgZmluYWwgcHJvZ3Jlc3MgZXZlbnQuCisg
ICAgICAgICAgICBBU1NFUlQobV9wcm9ncmVzc0RvbmUgPT0gbV9wcm9ncmVzc1RvdGFsKTsKKyAg
ICAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OlBST0dSRVNT
X0VWRU5ULCBtX3Byb2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lLCBtX2Fzc29jaWF0ZWREb2N1
bWVudExvYWRlcnMpOworCisgICAgICAgICAgICAvLyBGaXJlIHRoZSBzdWNjZXNzIGV2ZW50Lgog
ICAgICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhpc1VwZ3JhZGVBdHRlbXB0ID8gQXBwbGljYXRp
b25DYWNoZUhvc3Q6OlVQREFURVJFQURZX0VWRU5UIDogQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNB
Q0hFRF9FVkVOVCwgbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGlmIChjYWNoZVN0b3JhZ2UoKS5pc01heGltdW1TaXplUmVhY2hlZCgp
ICYmICFtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTkyNiw3ICs5MzYsOCBA
QCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c3RhcnRMb2FkaW5nCiAgICAgCiAgICAgRW50
cnlNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRW50cmllcy5iZWdpbigpOwogCi0g
ICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JFU1NfRVZFTlQs
IG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgcG9zdExpc3RlbmVyVGFzayhBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6UFJPR1JFU1NfRVZFTlQsIG1fcHJvZ3Jlc3NUb3RhbCwgbV9wcm9n
cmVzc0RvbmUsIG1fYXNzb2NpYXRlZERvY3VtZW50TG9hZGVycyk7CisgICAgbV9wcm9ncmVzc0Rv
bmUrKzsKIAogICAgIEFTU0VSVCghbV9jdXJyZW50SGFuZGxlKTsKICAgICAKQEAgLTEwMjUsOSAr
MTAzNiw5IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzY2hlZHVsZVJlYWMKIAogY2xh
c3MgQ2FsbENhY2hlTGlzdGVuZXJUYXNrIDogcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OlRhc2sgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzT3duUHRyPENhbGxDYWNoZUxpc3RlbmVy
VGFzaz4gY3JlYXRlKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgQXBwbGljYXRp
b25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBzdGF0aWMgUGFzc093blB0cjxDYWxs
Q2FjaGVMaXN0ZW5lclRhc2s+IGNyZWF0ZShQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2Fk
ZXIsIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1Rv
dGFsLCBpbnQgcHJvZ3Jlc3NEb25lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5l
dyBDYWxsQ2FjaGVMaXN0ZW5lclRhc2sobG9hZGVyLCBldmVudElEKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgQ2FsbENhY2hlTGlzdGVuZXJUYXNrKGxvYWRlciwgZXZlbnRJRCwgcHJv
Z3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCkBAIC0xMDQwLDI4ICsx
MDUxLDMyIEBAIHB1YmxpYzoKICAgICAKICAgICAgICAgQVNTRVJUKGZyYW1lLT5sb2FkZXIoKS0+
ZG9jdW1lbnRMb2FkZXIoKSA9PSBtX2RvY3VtZW50TG9hZGVyLmdldCgpKTsKIAotICAgICAgICBt
X2RvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5ub3RpZnlET01BcHBsaWNh
dGlvbkNhY2hlKG1fZXZlbnRJRCk7CisgICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCktPm5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUobV9ldmVudElELCBtX3By
b2dyZXNzVG90YWwsIG1fcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQ2Fs
bENhY2hlTGlzdGVuZXJUYXNrKFBhc3NSZWZQdHI8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciwgQXBw
bGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKKyAgICBDYWxsQ2FjaGVMaXN0ZW5l
clRhc2soUGFzc1JlZlB0cjxEb2N1bWVudExvYWRlcj4gbG9hZGVyLCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6RXZlbnRJRCBldmVudElELCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9u
ZSkKICAgICAgICAgOiBtX2RvY3VtZW50TG9hZGVyKGxvYWRlcikKICAgICAgICAgLCBtX2V2ZW50
SUQoZXZlbnRJRCkKKyAgICAgICAgLCBtX3Byb2dyZXNzVG90YWwocHJvZ3Jlc3NUb3RhbCkKKyAg
ICAgICAgLCBtX3Byb2dyZXNzRG9uZShwcm9ncmVzc0RvbmUpCiAgICAgewogICAgIH0KIAogICAg
IFJlZlB0cjxEb2N1bWVudExvYWRlcj4gbV9kb2N1bWVudExvYWRlcjsKICAgICBBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6RXZlbnRJRCBtX2V2ZW50SUQ7CisgICAgaW50IG1fcHJvZ3Jlc3NUb3RhbDsK
KyAgICBpbnQgbV9wcm9ncmVzc0RvbmU7CiB9OwogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6cG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCBldmVudElE
LCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKK3ZvaWQgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpF
dmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lLCBjb25z
dCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIGxvYWRlclNldCkKIHsKICAgICBIYXNoU2V0PERv
Y3VtZW50TG9hZGVyKj46OmNvbnN0X2l0ZXJhdG9yIGxvYWRlclNldEVuZCA9IGxvYWRlclNldC5l
bmQoKTsKICAgICBmb3IgKEhhc2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6Y29uc3RfaXRlcmF0b3Ig
aXRlciA9IGxvYWRlclNldC5iZWdpbigpOyBpdGVyICE9IGxvYWRlclNldEVuZDsgKytpdGVyKQot
ICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKGV2ZW50SUQsICppdGVyKTsKKyAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUsICppdGVyKTsK
IH0KIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
K3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpFdmVudElEIGV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jl
c3NEb25lLCBEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGxv
YWRlci0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQpAQCAtMTA2OSw3ICsxMDg0LDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lcgogICAgIAogICAgIEFTU0VSVChm
cmFtZS0+bG9hZGVyKCktPmRvY3VtZW50TG9hZGVyKCkgPT0gbG9hZGVyKTsKIAotICAgIGZyYW1l
LT5kb2N1bWVudCgpLT5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2Fk
ZXIsIGV2ZW50SUQpKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cG9zdFRhc2soQ2FsbENhY2hl
TGlzdGVuZXJUYXNrOjpjcmVhdGUobG9hZGVyLCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9n
cmVzc0RvbmUpKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldFVwZGF0ZVN0
YXR1cyhVcGRhdGVTdGF0dXMgc3RhdHVzKQpJbmRleDogV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZUdyb3VwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvYXBw
Y2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHJldmlzaW9uIDYyODIwKQorKysgV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyLDggKzkyLDExIEBAIHB1YmxpYzoKICAgICBib29sIGlzQ29weSgpIGNvbnN0IHsgcmV0
dXJuIG1faXNDb3B5OyB9CiAKIHByaXZhdGU6Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVy
VGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6RXZlbnRJRCwgY29uc3QgSGFzaFNldDxEb2N1bWVu
dExvYWRlcio+Jik7Ci0gICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlv
bkNhY2hlSG9zdDo6RXZlbnRJRCwgRG9jdW1lbnRMb2FkZXIqKTsKKyAgICBzdGF0aWMgdm9pZCBw
b3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGlkLCBjb25zdCBI
YXNoU2V0PERvY3VtZW50TG9hZGVyKj4mIHNldCkgeyBwb3N0TGlzdGVuZXJUYXNrKGlkLCAwLCAw
LCBzZXQpOyB9CisgICAgc3RhdGljIHZvaWQgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNh
Y2hlSG9zdDo6RXZlbnRJRCBpZCwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikgIHsgcG9zdExpc3Rl
bmVyVGFzayhpZCwgMCwgMCwgbG9hZGVyKTsgfQorICAgIHN0YXRpYyB2b2lkIHBvc3RMaXN0ZW5l
clRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBp
bnQgcHJvZ3Jlc3NEb25lLCBjb25zdCBIYXNoU2V0PERvY3VtZW50TG9hZGVyKj4mKTsKKyAgICBz
dGF0aWMgdm9pZCBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElE
LCBpbnQgcHJvZ3Jlc3NUb3RhbCwgaW50IHByb2dyZXNzRG9uZSwgRG9jdW1lbnRMb2FkZXIqKTsK
KwogICAgIHZvaWQgc2NoZWR1bGVSZWFjaGVkTWF4QXBwQ2FjaGVTaXplQ2FsbGJhY2soKTsKIAog
ICAgIFBhc3NSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IGNyZWF0ZVJlc291cmNlSGFuZGxlKGNvbnN0
IEtVUkwmLCBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2UqIG5ld2VzdENhY2hlZFJlc291cmNlKTsK
QEAgLTE1MSw2ICsxNTQsMTAgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgVVJMcyBhbmQgdHlwZXMg
b2YgcGVuZGluZyBjYWNoZSBlbnRyaWVzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIHVu
c2lnbmVkPiBFbnRyeU1hcDsKICAgICBFbnRyeU1hcCBtX3BlbmRpbmdFbnRyaWVzOworICAgIAor
ICAgIC8vIFRoZSB0b3RhbCBudW1iZXIgb2YgaXRlbXMgdG8gYmUgcHJvY2Vzc2VkIHRvIHVwZGF0
ZSB0aGUgY2FjaGUgZ3JvdXAgYW5kIHRoZSBudW1iZXIgdGhhdCBoYXZlIGJlZW4gZG9uZS4KKyAg
ICBpbnQgbV9wcm9ncmVzc1RvdGFsOworICAgIGludCBtX3Byb2dyZXNzRG9uZTsKIAogICAgIC8v
IEZyYW1lIHVzZWQgZm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0aW5nLgogICAgIC8v
IEZJWE1FOiBBbiB1cGRhdGUgc3RhcnRlZCBieSBhIHBhcnRpY3VsYXIgZnJhbWUgc2hvdWxkIG5v
dCBzdG9wIGlmIGl0IGlzIGRlc3Ryb3llZCwgYnV0IHRoZXJlIGFyZSBvdGhlciBmcmFtZXMgYXNz
b2NpYXRlZCB3aXRoIHRoZSBzYW1lIGNhY2hlIGdyb3VwLgpJbmRleDogV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjI4MjAp
CisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgog
I2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiTWFpblJlc291cmNlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3Mu
aCIKQEAgLTIyOCwzNSArMjI5LDQyIEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERP
TUFwcGxpY2EKICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hl
OwogfQogCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNh
Y2hlKEV2ZW50SUQgaWQpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBs
aWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCiB7CiAgICAgaWYg
KG1fZGVmZXJzRXZlbnRzKSB7Ci0gICAgICAgIC8vIEV2ZW50cyBhcmUgZGVmZXJyZWQgdW50aWwg
ZG9jdW1lbnQub25sb2FkIGhhcyBmaXJlZC4KLSAgICAgICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBl
bmQoaWQpOworICAgICAgICAvLyBFdmVudCBkaXNwYXRjaGluZyBpcyBkZWZlcnJlZCB1bnRpbCBk
b2N1bWVudC5vbmxvYWQgaGFzIGZpcmVkLgorICAgICAgICBtX2RlZmVycmVkRXZlbnRzLmFwcGVu
ZChEZWZlcnJlZEV2ZW50KGlkLCB0b3RhbCwgZG9uZSkpOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIGlmIChtX2RvbUFwcGxpY2F0aW9uQ2FjaGUpIHsKLSAgICAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7Ci0gICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2Us
IGZhbHNlKSwgZWMpOwotICAgICAgICBBU1NFUlQoIWVjKTsgICAgCi0gICAgfQorICAgIGRpc3Bh
dGNoRE9NRXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hl
SG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50TG9hZGVy
PiBwcm90ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX2RlZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIEV2ZW50SUQgaWQgPSBt
X2RlZmVycmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hlKSB7
Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAgICAgICAgIG1fZG9tQXBw
bGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKERPTUFwcGxpY2F0aW9u
Q2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNlKSwgZWMpOwotICAgICAgICAgICAg
QVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29uc3QgRGVmZXJyZWRFdmVudCYgZGVm
ZXJyZWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAgICBkaXNwYXRjaERPTUV2ZW50KGRl
ZmVycmVkLmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90YWwsIGRlZmVycmVkLnByb2dyZXNz
RG9uZSk7CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMuY2xlYXIoKTsKICAgICBtX2RlZmVy
c0V2ZW50cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpkaXNwYXRj
aERPTUV2ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpCit7CisgICAgaWYgKG1f
ZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50
VHlwZSA9IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKTsKKyAgICAgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxFdmVudD4gZXZlbnQ7CisgICAgICAg
IGlmIChpZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAgICAgIGV2ZW50ID0gUHJvZ3Jlc3NF
dmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwgdG90YWwpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUoZXZlbnRUeXBlLCBmYWxzZSwgZmFs
c2UpOworICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoZXZlbnQs
IGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQorfQorCiB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0OjpzZXRDYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoQXBwbGljYXRpb25D
YWNoZUdyb3VwKiBncm91cCkKIHsKICAgICBBU1NFUlQoIW1fYXBwbGljYXRpb25DYWNoZSk7Cklu
ZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmgJ
KHJldmlzaW9uIDYyODIwKQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUhvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDggKzEwNyw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCB1cGRhdGUoKTsKICAgICAgICAgYm9vbCBzd2FwQ2FjaGUo
KTsKIAotICAgICAgICB2b2lkIHNldERPTUFwcGxpY2F0aW9uQ2FjaGUoRE9NQXBwbGljYXRpb25D
YWNoZSogZG9tQXBwbGljYXRpb25DYWNoZSk7Ci0gICAgICAgIHZvaWQgbm90aWZ5RE9NQXBwbGlj
YXRpb25DYWNoZShFdmVudElEIGlkKTsKKyAgICAgICAgdm9pZCBzZXRET01BcHBsaWNhdGlvbkNh
Y2hlKERPTUFwcGxpY2F0aW9uQ2FjaGUqKTsKKyAgICAgICAgdm9pZCBub3RpZnlET01BcHBsaWNh
dGlvbkNhY2hlKEV2ZW50SUQsIGludCBwcm9ncmVzc1RvdGFsLCBpbnQgcHJvZ3Jlc3NEb25lKTsK
IAogICAgICAgICB2b2lkIHN0b3BEZWZlcnJpbmdFdmVudHMoKTsgLy8gQWxzbyByYWlzZXMgdGhl
IGV2ZW50cyB0aGF0IGhhdmUgYmVlbiBxdWV1ZWQgdXAuCiAKQEAgLTExOCwxMCArMTE4LDE5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0FwcGxpY2F0aW9uQ2FjaGVFbmFi
bGVkKCk7CiAgICAgICAgIERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jdW1lbnRMb2FkZXI7IH0KIAorICAgICAgICBzdHJ1Y3QgRGVmZXJyZWRFdmVu
dCB7CisgICAgICAgICAgICBFdmVudElEIGV2ZW50SUQ7CisgICAgICAgICAgICBpbnQgcHJvZ3Jl
c3NUb3RhbDsKKyAgICAgICAgICAgIGludCBwcm9ncmVzc0RvbmU7CisgICAgICAgICAgICBEZWZl
cnJlZEV2ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50IGRvbmUpIDogZXZlbnRJRChpZCks
IHByb2dyZXNzVG90YWwodG90YWwpLCBwcm9ncmVzc0RvbmUoZG9uZSkgeyB9CisgICAgICAgIH07
CisKICAgICAgICAgRE9NQXBwbGljYXRpb25DYWNoZSogbV9kb21BcHBsaWNhdGlvbkNhY2hlOwog
ICAgICAgICBEb2N1bWVudExvYWRlciogbV9kb2N1bWVudExvYWRlcjsKICAgICAgICAgYm9vbCBt
X2RlZmVyc0V2ZW50czsgLy8gRXZlbnRzIGFyZSBkZWZlcnJlZCB1bnRpbCBhZnRlciBkb2N1bWVu
dCBvbmxvYWQuCi0gICAgICAgIFZlY3RvcjxFdmVudElEPiBtX2RlZmVycmVkRXZlbnRzOworICAg
ICAgICBWZWN0b3I8RGVmZXJyZWRFdmVudD4gbV9kZWZlcnJlZEV2ZW50czsKKworICAgICAgICB2
b2lkIGRpc3BhdGNoRE9NRXZlbnQoRXZlbnRJRCwgaW50IHByb2dyZXNzVG90YWwsIGludCBwcm9n
cmVzc0RvbmUpOwogCiAjaWYgUExBVEZPUk0oQ0hST01JVU0pCiAgICAgICAgIGZyaWVuZCBjbGFz
cyBBcHBsaWNhdGlvbkNhY2hlSG9zdEludGVybmFsOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lv
biA2MjgyMCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMSBAQAorMjAxMC0wNi0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBVc2UgY2xhc3MgUHJvZ3Jlc3NFdmVudCB3aGVuIHJhaXNpbmcgYXBwY2FjaGUgcmVsYXRlZCBw
cm9ncmVzcyBldmVudHMgYW5kCisgICAgICAgIHNldCB0aGUgJ3RvdGFsJywgJ2xvYWRlZCcsIGFu
ZCAnbGVuZ3RoQ29tcHV0YWJsZScgYXR0cmlidXRlcy4KKyAgICAgICAgQWxzbyByYWlzZSB0aGUg
ZmluYWwgcHJvZ3Jlc3MgZXZlbnQgd2l0aCB0aGUgJ3RvdGFsJyBhbmQgJ2xvYWRlZCcgYXR0cmli
dXRlCisgICAgICAgIHZhbHVlcyBhcmUgZXF1YWwgdG8gb25lIGFub3RoZXIgdG8ga2VlcCBwYWNl
IHdpdGggdGhlIHNwZWMgZm9yIHRoaXMgZmVhdHVyZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM3NjAyCisKKyAgICAgICAgKiBzcmMvQXBwbGljYXRp
b25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUhvc3Q6
Om5vdGlmeURPTUFwcGxpY2F0aW9uQ2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUhvc3Q6OnN0b3BEZWZlcnJpbmdFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUhvc3Q6OmRpc3BhdGNoRE9NRXZlbnQpOgorICAgICAgICAqIHNyYy9BcHBs
aWNhdGlvbkNhY2hlSG9zdEludGVybmFsLmg6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlSG9zdEludGVybmFsOjpub3RpZnlFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWw6Om5vdGlmeVByb2dyZXNzRXZlbnRMaXN0
ZW5lcik6CisKIDIwMTAtMDctMDggIFZpdGFseSBSZXBlc2hrbyAgPHZpdGFseXJAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkocmV2aXNpb24gNjI4MjAp
CisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAj
aW5jbHVkZSAiRE9NQXBwbGljYXRpb25DYWNoZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiUHJvZ3Jlc3NFdmVudC5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAi
V2ViVVJMLmgiCiAjaW5jbHVkZSAiV2ViVVJMRXJyb3IuaCIKQEAgLTE5NSwzNCArMTk2LDQyIEBA
IHZvaWQgQXBwbGljYXRpb25DYWNoZUhvc3Q6OnNldERPTUFwcGxpY2EKICAgICBtX2RvbUFwcGxp
Y2F0aW9uQ2FjaGUgPSBkb21BcHBsaWNhdGlvbkNhY2hlOwogfQogCi12b2lkIEFwcGxpY2F0aW9u
Q2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQpCit2b2lkIEFw
cGxpY2F0aW9uQ2FjaGVIb3N0Ojpub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEV2ZW50SUQgaWQs
IGludCB0b3RhbCwgaW50IGRvbmUpCiB7CiAgICAgaWYgKG1fZGVmZXJzRXZlbnRzKSB7Ci0gICAg
ICAgIG1fZGVmZXJyZWRFdmVudHMuYXBwZW5kKGlkKTsKKyAgICAgICAgLy8gRXZlbnQgZGlzcGF0
Y2hpbmcgaXMgZGVmZXJyZWQgdW50aWwgZG9jdW1lbnQub25sb2FkIGhhcyBmaXJlZC4KKyAgICAg
ICAgbV9kZWZlcnJlZEV2ZW50cy5hcHBlbmQoRGVmZXJyZWRFdmVudChpZCwgdG90YWwsIGRvbmUp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpZiAobV9kb21BcHBsaWNhdGlvbkNhY2hl
KSB7Ci0gICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBtX2RvbUFwcGxpY2F0
aW9uQ2FjaGUtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShET01BcHBsaWNhdGlvbkNhY2hl
Ojp0b0V2ZW50VHlwZShpZCksIGZhbHNlLCBmYWxzZSksIGVjKTsKLSAgICAgICAgQVNTRVJUKCFl
Yyk7Ci0gICAgfQorICAgIGRpc3BhdGNoRE9NRXZlbnQoaWQsIHRvdGFsLCBkb25lKTsKIH0KIAog
dm9pZCBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6c3RvcERlZmVycmluZ0V2ZW50cygpCiB7CiAgICAg
UmVmUHRyPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KGRvY3VtZW50TG9hZGVyKCkpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2RlZmVycmVkRXZlbnRzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIEV2ZW50SUQgaWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOwotICAgICAgICBpZiAobV9k
b21BcHBsaWNhdGlvbkNhY2hlKSB7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICAgICAgICAgIG1fZG9tQXBwbGljYXRpb25DYWNoZS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRUeXBlKGlkKSwgZmFsc2UsIGZhbHNl
KSwgZWMpOwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgIH0KKyAgICAgICAgY29u
c3QgRGVmZXJyZWRFdmVudCYgZGVmZXJyZWQgPSBtX2RlZmVycmVkRXZlbnRzW2ldOworICAgICAg
ICBkaXNwYXRjaERPTUV2ZW50KGRlZmVycmVkLmV2ZW50SUQsIGRlZmVycmVkLnByb2dyZXNzVG90
YWwsIGRlZmVycmVkLnByb2dyZXNzRG9uZSk7CiAgICAgfQogICAgIG1fZGVmZXJyZWRFdmVudHMu
Y2xlYXIoKTsKICAgICBtX2RlZmVyc0V2ZW50cyA9IGZhbHNlOwogfQogCit2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpkaXNwYXRjaERPTUV2ZW50KEV2ZW50SUQgaWQsIGludCB0b3RhbCwgaW50
IGRvbmUpCit7CisgICAgaWYgKG1fZG9tQXBwbGljYXRpb25DYWNoZSkgeworICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSA9IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnRvRXZlbnRU
eXBlKGlkKTsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgICAgIFJlZlB0cjxF
dmVudD4gZXZlbnQ7CisgICAgICAgIGlmIChpZCA9PSBQUk9HUkVTU19FVkVOVCkKKyAgICAgICAg
ICAgIGV2ZW50ID0gUHJvZ3Jlc3NFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwgZG9uZSwg
dG90YWwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBldmVudCA9IEV2ZW50OjpjcmVhdGUo
ZXZlbnRUeXBlLCBmYWxzZSwgZmFsc2UpOworICAgICAgICBtX2RvbUFwcGxpY2F0aW9uQ2FjaGUt
PmRpc3BhdGNoRXZlbnQoZXZlbnQsIGVjKTsKKyAgICAgICAgQVNTRVJUKCFlYyk7CisgICAgfQor
fQorCiBBcHBsaWNhdGlvbkNhY2hlSG9zdDo6U3RhdHVzIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojpz
dGF0dXMoKSBjb25zdAogewogICAgIHJldHVybiBtX2ludGVybmFsID8gc3RhdGljX2Nhc3Q8U3Rh
dHVzPihtX2ludGVybmFsLT5tX291dGVySG9zdC0+c3RhdHVzKCkpIDogVU5DQUNIRUQ7CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJuYWwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9uQ2FjaGVIb3N0SW50ZXJu
YWwuaAkocmV2aXNpb24gNjI4MjApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0FwcGxpY2F0aW9u
Q2FjaGVIb3N0SW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTggKzU1LDEyIEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnlFdmVudExpc3RlbmVyKFdlYktpdDo6V2Vi
QXBwbGljYXRpb25DYWNoZUhvc3Q6OkV2ZW50SUQgZXZlbnRJRCkKICAgICB7Ci0gICAgICAgIG1f
aW5uZXJIb3N0LT5ub3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0
aW9uQ2FjaGVIb3N0OjpFdmVudElEPihldmVudElEKSk7CisgICAgICAgIG1faW5uZXJIb3N0LT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKHN0YXRpY19jYXN0PEFwcGxpY2F0aW9uQ2FjaGVIb3N0
OjpFdmVudElEPihldmVudElEKSwgMCwgMCk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG5v
dGlmeVByb2dyZXNzRXZlbnRMaXN0ZW5lcihjb25zdCBXZWJLaXQ6OldlYlVSTCYsIGludCBudW1f
dG90YWwsIGludCBudW1fY29tcGxldGUpIAorICAgIHZpcnR1YWwgdm9pZCBub3RpZnlQcm9ncmVz
c0V2ZW50TGlzdGVuZXIoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCBpbnQgcHJvZ3Jlc3NUb3RhbCwg
aW50IHByb2dyZXNzRG9uZSkgCiAgICAgewotICAgICAgICAvLyBGSVhNRTogTW9kaWZ5IHdlYmNv
cmUncyBwcm9ncmVzcyBldmVudCBoYW5kbGluZyB0byBjYXJyeSB0aGUgZXh0cmEgaW5mbyBhbmQg
YWx0ZXIgdGhlCi0gICAgICAgIC8vIGxheW91dCB0ZXN0cyB0byBub3QgZmFpbCB3aGVuIHRoZSBt
b3JlIHJlY2VudGx5IHNwZWNpZmllZCAnZmluYWwnIGV2ZW50IGlzIHJhaXNlZC4KLSAgICAgICAg
Ly8gRm9yIG5vdywgd2UncmUgZWF0aW5nIHRoZSBleHRyYSBpbmZvIGFuZCB0aGF0IGxhc3QgZXZl
bnQuCi0gICAgICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9Mzc2MDIKLSAgICAgICAgaWYgKG51bV9jb21wbGV0ZSA9PSBudW1fdG90YWwpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIG5vdGlmeUV2ZW50TGlzdGVuZXIoV2ViS2l0OjpXZWJBcHBs
aWNhdGlvbkNhY2hlSG9zdDo6UHJvZ3Jlc3NFdmVudCk7CisgICAgICAgIG1faW5uZXJIb3N0LT5u
b3RpZnlET01BcHBsaWNhdGlvbkNhY2hlKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpQUk9HUkVTU19F
VkVOVCwgcHJvZ3Jlc3NUb3RhbCwgcHJvZ3Jlc3NEb25lKTsKICAgICB9CiAKICAgICBzdGF0aWMg
V2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogdG9XZWJBcHBsaWNhdGlvbkNhY2hlSG9z
dChBcHBsaWNhdGlvbkNhY2hlSG9zdCogaW5uZXJIb3N0KQpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNjI4
MjApCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwy
MCBAQAorMjAxMC0wNi0zMCAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBs
YXlvdXQgdGVzdCB0byB2ZXJpZnkgdGhlIGV4cGVjdGVkIG51bWJlciBvZiBwcm9ncmVzcyBldmVu
dHMgYXJlIHJhaXNlZCBieSB0aGUgYXBwY2FjaGUsCisgICAgICAgIGFuZCB0aGF0IHRob3NlIGV2
ZW50cyBoYXZlIHByb3Blcmx5IHNldCAnbGVuZ3RoQ29tcHV0YWJsZScsICdsb2FkZWQnLCBhbmQg
J3RvdGFsJyBhdHRyaWJ1dGVzLgorICAgICAgICBBbHNvIHVwZGF0ZSBhIGNvdXBsZSBvZiBvdGhl
ciB0ZXN0cyB0aGF0IGRlcGVuZCBvbiBjb3VudGluZyB0aGUgbnVtYmVyIG9mIHByb2dyZXNzIGV2
ZW50cyB0bworICAgICAgICBkZXRlcm1pbmUgc3VjY2VzcyBvciBmYWlsdXJlIHRvIG5vdyBleHBl
Y3QgdGhlIGFkZGl0aW9uYWwgZmluYWwgcHJvZ3Jlc3MgZXZlbnQgdGhhdCBpcyBiZWluZworICAg
ICAgICByYWlzZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zNzYwMgorCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFt
ZS1tYWluLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dy
ZXNzLWNvdW50ZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2Fw
cGNhY2hlL3Byb2dyZXNzLWNvdW50ZXIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50
ZXIubWFuaWZlc3Q6IEFkZGVkLgorCiAyMDEwLTA3LTA3ICBPamFuIFZhZmFpICA8b2phbkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL2ZvcmVpZ24taWZyYW1lLW1haW4tZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvZm9yZWln
bi1pZnJhbWUtbWFpbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDYyODIwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mb3JlaWduLWlmcmFtZS1tYWluLWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAgZG93bmxvYWRpbmcKIHByb2dyZXNzCiBwcm9n
cmVzcwogcHJvZ3Jlc3MKK3Byb2dyZXNzCiBjYWNoZWQKIFNVQ0NFU1MKIApJbmRleDogTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Byb2dyZXNzLWNv
dW50ZXItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyIEBACitUaGlzIHRlc3RzIHRoYXQgdGhlIGxlbmd0aENvbXB1dGFibGUgLyBsb2Fk
ZWQgLyB0b3RhbCBwcm9wZXJ0aWVzIG9mIHRoZSBwcm9ncmVzcyBldmVudCBhcmUgc2V0IGNvcnJl
Y3RseS4KK1NVQ0NFU1MKSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcHJv
Z3Jlc3MtY291bnRlci5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcHJvZ3Jlc3MtY291bnRlci5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9wcm9ncmVzcy1jb3VudGVyLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjIgQEAKKzxodG1sIG1hbmlmZXN0PSJyZXNvdXJjZXMvcHJvZ3Jlc3MtY291
bnRlci5tYW5pZmVzdCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKwordmFyIGV4cGVjdGVkVG90YWwgPSAy
Cit2YXIgZXZlbnRzUmVjZWl2ZWQgPSAwOworCitmdW5jdGlvbiBkb25lKCkgeworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKTsKK30KKworZnVuY3Rpb24gcHJvZ3Jlc3MoZXZlbnQpCit7CisgICAgaWYg
KCFldmVudC5sZW5ndGhDb21wdXRhYmxlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTFVSRTogZXhwZWN0ZWQgcHJvZ3Jlc3NFdmVu
dC5sZW5ndGhDb21wdXRhYmxlIHRvIGJlIHRydWUiOworICAgICAgICBkb25lKCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgaWYgKGV2ZW50LnRvdGFsICE9IGV4cGVjdGVkVG90YWwpIHsK
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJG
QUlMVVJFOiBleHBlY3RlZCBwcm9ncmVzc0V2ZW50LnRvdGFsIHRvIGJlICIgKyBleHBlY3RlZFRv
dGFsICsgIiBidXQgd2FzICIgKyBldmVudC50b3RhbDsKKyAgICAgICAgZG9uZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIGlmIChldmVudC5sb2FkZWQgIT0gZXZlbnRzUmVjZWl2ZWQp
IHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9
ICJGQUlMVVJFOiBleHBlY3RlZCBwcm9ncmVzc0V2ZW50LmxvYWRlZCB0byBiZSAiICsgZXZlbnRz
UmVjZWl2ZWQgKyAiIGJ1dCB3YXMgIiArIGV2ZW50LmxvYWRlZDsKKyAgICAgICAgZG9uZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIGV2ZW50c1JlY2VpdmVkKys7Cit9CisKK2Z1bmN0
aW9uIGNhY2hlZCgpCit7CisgICAgaWYgKGV2ZW50c1JlY2VpdmVkICE9IDMpIHsKKyAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiBl
eHBlY3RlZCAzIHByb2dyZXNzIGV2ZW50cywgYnV0IGdvdCAiICsgZXZlbnRzUmVjZWl2ZWQ7Cisg
ICAgICAgIGRvbmUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiU1VDQ0VTUyI7CisgICAgZG9uZSgp
OworfQorCitmdW5jdGlvbiBub3VwZGF0ZSgpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMVVJFOiB1bmFibGUgdG8gY29uZHVjdCB0ZXN0
IHNpbmNlIHRoZSBhcHBjYWNoZSBhbHJlYWR5IGV4aXN0cywgcGxlYXNlIHJlbW92ZSB0aGUgYXBw
Y2FjaGUgYW5kIHRyeSBhZ2FpbiI7CisgICAgZG9uZSgpOworfQorCithcHBsaWNhdGlvbkNhY2hl
LmFkZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGNhY2hlZCwgZmFsc2UpOworYXBwbGljYXRpb25D
YWNoZS5hZGRFdmVudExpc3RlbmVyKCdub3VwZGF0ZScsIG5vdXBkYXRlLCBmYWxzZSk7CithcHBs
aWNhdGlvbkNhY2hlLmFkZEV2ZW50TGlzdGVuZXIoJ3Byb2dyZXNzJywgcHJvZ3Jlc3MsIGZhbHNl
KTsKKworPC9zY3JpcHQ+Cis8ZGl2PlRoaXMgdGVzdHMgdGhhdCB0aGUgbGVuZ3RoQ29tcHV0YWJs
ZSAvIGxvYWRlZCAvIHRvdGFsIHByb3BlcnRpZXMgb2YgdGhlIHByb2dyZXNzIGV2ZW50IGFyZSBz
ZXQgY29ycmVjdGx5LjwvZGl2PgorCis8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rpdj4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2Rp
ZmZlcmVudC1odHRwcy1vcmlnaW4tcmVzb3VyY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9kaWZmZXJlbnQtaHR0cHMtb3JpZ2lu
LXJlc291cmNlLmh0bWwJKHJldmlzaW9uIDYyODIwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9hcHBjYWNoZS9yZXNvdXJjZXMvZGlmZmVyZW50LWh0dHBzLW9yaWdpbi1yZXNvdXJjZS5odG1s
CSh3b3JraW5nIGNvcHkpCkBAIC0yMCw4ICsyMCwxNCBAQCBmdW5jdGlvbiBlcnJvcigpCiAgICAg
aGFkRXJyb3IgPSB0cnVlOwogICAgIGZpbmlzaCgpOwogfQorZnVuY3Rpb24gcHJvZ3Jlc3NIYW5k
bGVyKGUpCit7CisgICAgLy8gVGhlIG9ubHkgcmVzb3VyY2UgbGlzdGVkIGluIHRoZSBtYW5pZmVz
dCBmaWxlIGlzIGluIGEgZGlmZmVyZW50IGh0dHBzIG9yaWdpbiBhbmQgc2hvdWxkIGJlIHNraXBw
ZWQuCisgICAgaWYgKGUubG9hZGVkICE9IDAgfHwgZS50b3RhbCAhPSAwKQorICAgICAgICBmYWls
KCk7Cit9CiAKLWFwcGxpY2F0aW9uQ2FjaGUub25wcm9ncmVzcyA9IGZ1bmN0aW9uKCkgeyBmYWls
KCk7IH0KK2FwcGxpY2F0aW9uQ2FjaGUub25wcm9ncmVzcyA9IHByb2dyZXNzSGFuZGxlcjsKIGFw
cGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBmaW5pc2goKTsgfQogYXBw
bGljYXRpb25DYWNoZS5vbmNhY2hlZCA9IGZ1bmN0aW9uKCkgeyBmaW5pc2goKTsgfQogYXBwbGlj
YXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGVycm9yKCk7IH0KSW5kZXg6IExheW91
dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFu
aWZlc3QKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcHJvZ3Jlc3MtY291bnRlci5tYW5pZmVzdAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL3Byb2dyZXNzLWNvdW50ZXIubWFuaWZl
c3QJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorQ0FDSEUgTUFOSUZFU1QKK3NpbXBsZS50
eHQKK2VtcHR5LnR4dAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>