<?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>44472</bug_id>
          
          <creation_ts>2010-08-23 17:55:14 -0700</creation_ts>
          <short_desc>Add AX notification for childrenChanged</short_desc>
          <delta_ts>2010-08-28 21:15:07 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Chris Guillory">ctguil</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268230</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-23 17:55:14 -0700</bug_when>
    <thetext>The user facing accessibility tree in the chromium port is cache in the browser process and needs to be notified to update portions of the tree as they change. This change adds the AXChildrenChanged and sends it as a platform notification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268231</commentid>
    <comment_count>1</comment_count>
      <attachid>65193</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-23 18:06:54 -0700</bug_when>
    <thetext>Created attachment 65193
Proposed patch

Work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268677</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-24 11:37:24 -0700</bug_when>
    <thetext>Hey Chris, can you take a look over this patch? We&apos;re trying to add the ability to dynamically update the browser side cache of the accessibility tree within Chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268681</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-24 11:39:44 -0700</bug_when>
    <thetext>Attachment 65193 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/accessibility/chromium/AXObjectCacheChromium.cpp:68:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/accessibility/chromium/AXObjectCacheChromium.cpp:67:  Missing space before ( in switch(  [whitespace/parens] [5]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268682</commentid>
    <comment_count>4</comment_count>
      <attachid>65193</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-08-24 11:40:58 -0700</bug_when>
    <thetext>Comment on attachment 65193
Proposed patch

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 65849)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,18 @@
&gt; +2010-08-23  Chris Guillory   &lt;chris.guillory@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add AX notification for childrenChanged.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=44472
&gt; +
&gt; +        * accessibility/AXObjectCache.h:
&gt; +        (WebCore::AXObjectCache::):
&gt; +        * accessibility/AccessibilityRenderObject.cpp:
&gt; +        (WebCore::AccessibilityRenderObject::childrenChanged):
&gt; +        * accessibility/chromium/AXObjectCacheChromium.cpp:
&gt; +        (WebCore::AXObjectCache::postPlatformNotification):
&gt; +        * page/chromium/ChromeClientChromium.h:
&gt; +
&gt;  2010-08-23  Darin Adler  &lt;darin@apple.com&gt;
&gt;  
&gt;          Reviewed by Geoff Garen.
&gt; Index: WebCore/accessibility/AXObjectCache.h
&gt; ===================================================================
&gt; --- WebCore/accessibility/AXObjectCache.h	(revision 65848)
&gt; +++ WebCore/accessibility/AXObjectCache.h	(working copy)
&gt; @@ -107,6 +107,7 @@ public:
&gt;      enum AXNotification {
&gt;          AXActiveDescendantChanged,
&gt;          AXCheckedStateChanged,
&gt; +        AXChildrenChanged,
&gt;          AXFocusedUIElementChanged,
&gt;          AXLayoutComplete,
&gt;          AXLoadComplete,
&gt; Index: WebCore/accessibility/AccessibilityRenderObject.cpp
&gt; ===================================================================
&gt; --- WebCore/accessibility/AccessibilityRenderObject.cpp	(revision 65848)
&gt; +++ WebCore/accessibility/AccessibilityRenderObject.cpp	(working copy)
&gt; @@ -3236,6 +3236,8 @@ void AccessibilityRenderObject::children
&gt;      if (!m_renderer)
&gt;          return;
&gt;      
&gt; +    BOOL sentChildrenChanged = false;
&gt; +    
&gt;      // Go up the accessibility parent chain, but only if the element already exists. This method is
&gt;      // called during render layouts, minimal work should be done. 
&gt;      // If AX elements are created now, they could interrogate the render tree while it&apos;s in a funky state.
&gt; @@ -3245,6 +3247,12 @@ void AccessibilityRenderObject::children
&gt;              continue;
&gt;          
&gt;          AccessibilityRenderObject* axParent = static_cast&lt;AccessibilityRenderObject*&gt;(parent);
&gt; +        
&gt; +        if (!sentChildrenChanged) {
&gt; +            axObjectCache()-&gt;postNotification(axParent-&gt;renderer(), AXObjectCache::AXChildrenChanged, true);
&gt; +            sentChildrenChanged = true;
&gt; +        }
&gt; +        
&gt;          // Only do work if the children haven&apos;t been marked dirty. This has the effect of blocking
&gt;          // future live region change notifications until the AX tree has been accessed again. This
&gt;          // is a good performance win for all parties.
&gt; Index: WebCore/accessibility/chromium/AXObjectCacheChromium.cpp
&gt; ===================================================================
&gt; --- WebCore/accessibility/chromium/AXObjectCacheChromium.cpp	(revision 65848)
&gt; +++ WebCore/accessibility/chromium/AXObjectCacheChromium.cpp	(working copy)
&gt; @@ -56,15 +56,23 @@ void AXObjectCache::attachWrapper(Access
&gt;  
&gt;  void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotification notification)
&gt;  {
&gt; -    if (notification != AXCheckedStateChanged)
&gt; +    if (notification != AXCheckedStateChanged &amp;&amp; notification != AXChildrenChanged)
&gt;          return;
&gt;  
&gt;      if (!obj || !obj-&gt;document() || !obj-&gt;documentFrameView())
&gt;          return;
&gt;  
&gt;      ChromeClientChromium* client = toChromeClientChromium(obj-&gt;documentFrameView());
&gt; -    if (client)
&gt; -        client-&gt;didChangeAccessibilityObjectState(obj);
&gt; +    if (client) {
&gt; +        switch(notification) {
&gt; +            case AXCheckedStateChanged:
&gt; +                client-&gt;didChangeAccessibilityObjectState(obj);
&gt; +                break;
&gt; +            case AXChildrenChanged:
&gt; +                client-&gt;didChangeAccessibilityObjectChildren(obj);
&gt; +                break;
&gt; +        }
&gt; +    }
&gt;  }
&gt;  
&gt;  void AXObjectCache::handleFocusedUIElementChanged(RenderObject*, RenderObject*)
&gt; Index: WebCore/page/chromium/ChromeClientChromium.h
&gt; ===================================================================
&gt; --- WebCore/page/chromium/ChromeClientChromium.h	(revision 65848)
&gt; +++ WebCore/page/chromium/ChromeClientChromium.h	(working copy)
&gt; @@ -55,6 +55,9 @@ public:
&gt;  
&gt;      // Notifies embedder that the state of an accessibility object has changed.
&gt;      virtual void didChangeAccessibilityObjectState(AccessibilityObject*) = 0;
&gt; +    
&gt; +    // Notified embedder that the children of an accessibility object has changed.
&gt; +    virtual void didChangeAccessibilityObjectChildren(AccessibilityObject*) = 0;
&gt;  };
&gt;  
&gt;  } // namespace WebCore
&gt; Index: WebKit/chromium/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/chromium/ChangeLog	(revision 65849)
&gt; +++ WebKit/chromium/ChangeLog	(working copy)
&gt; @@ -1,3 +1,16 @@
&gt; +2010-08-23  Chris Guillory   &lt;chris.guillory@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Add AX notification for childrenChanged.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=44472
&gt; +
&gt; +        * public/WebViewClient.h:
&gt; +        (WebKit::WebViewClient::didChangeAccessibilityObjectChildren):
&gt; +        * src/ChromeClientImpl.cpp:
&gt; +        (WebKit::ChromeClientImpl::didChangeAccessibilityObjectChildren):
&gt; +        * src/ChromeClientImpl.h:
&gt; +
&gt;  2010-08-23  Kenneth Russell  &lt;kbr@google.com&gt;
&gt;  
&gt;          Reviewed by Dimitri Glazkov.
&gt; Index: WebKit/chromium/public/WebViewClient.h
&gt; ===================================================================
&gt; --- WebKit/chromium/public/WebViewClient.h	(revision 65848)
&gt; +++ WebKit/chromium/public/WebViewClient.h	(working copy)
&gt; @@ -277,6 +277,9 @@ public:
&gt;  
&gt;      // Notifies embedder that the state of an accessibility object has changed.
&gt;      virtual void didChangeAccessibilityObjectState(const WebAccessibilityObject&amp;) { }
&gt; +    
&gt; +    // Notifies embedder that the children of an accessibility object has changed.
&gt; +    virtual void didChangeAccessibilityObjectChildren(const WebAccessibilityObject&amp;) { }
&gt;  
&gt;  
&gt;      // Developer tools -----------------------------------------------------
&gt; Index: WebKit/chromium/src/ChromeClientImpl.cpp
&gt; ===================================================================
&gt; --- WebKit/chromium/src/ChromeClientImpl.cpp	(revision 65848)
&gt; +++ WebKit/chromium/src/ChromeClientImpl.cpp	(working copy)
&gt; @@ -712,6 +712,13 @@ void ChromeClientImpl::didChangeAccessib
&gt;          m_webView-&gt;client()-&gt;didChangeAccessibilityObjectState(WebAccessibilityObject(obj));
&gt;  }
&gt;  
&gt; +void ChromeClientImpl::didChangeAccessibilityObjectChildren(WebCore::AccessibilityObject* obj)
&gt; +{
&gt; +    // Alert assistive technology about the accessibility object children change
&gt; +    if (obj)
&gt; +        m_webView-&gt;client()-&gt;didChangeAccessibilityObjectChildren(WebAccessibilityObject(obj));
&gt; +}
&gt; +
&gt;  #if ENABLE(NOTIFICATIONS)
&gt;  NotificationPresenter* ChromeClientImpl::notificationPresenter() const
&gt;  {
&gt; Index: WebKit/chromium/src/ChromeClientImpl.h
&gt; ===================================================================
&gt; --- WebKit/chromium/src/ChromeClientImpl.h	(revision 65848)
&gt; +++ WebKit/chromium/src/ChromeClientImpl.h	(working copy)
&gt; @@ -167,6 +167,7 @@ public:
&gt;                               bool handleExternally);
&gt;      virtual void popupClosed(WebCore::PopupContainer* popupContainer);
&gt;      virtual void didChangeAccessibilityObjectState(WebCore::AccessibilityObject*);
&gt; +    virtual void didChangeAccessibilityObjectChildren(WebCore::AccessibilityObject*);
&gt;  
&gt;      // ChromeClientImpl:
&gt;      void setCursor(const WebCursorInfo&amp; cursor);

WebCore/accessibility/AccessibilityRenderObject.cpp:3240
 +      
bool should be lowercase

Can you write a layout test to make sure that you&apos;re getting this notification on chrome?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268687</commentid>
    <comment_count>5</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-24 11:45:13 -0700</bug_when>
    <thetext>Attachment 65193 did not build on qt:
Build output: http://queues.webkit.org/results/3705591</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268942</commentid>
    <comment_count>6</comment_count>
      <attachid>65350</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-24 17:57:45 -0700</bug_when>
    <thetext>Created attachment 65350
Patch

I&apos;m not sure how to write such a layout test since the update logic takes place on the browser side. Only the propagation of the new notification occurs within the renderer. Any suggestions or is there another testing mechanism within webkit that I can use?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268948</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-24 18:02:19 -0700</bug_when>
    <thetext>Attachment 65350 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/accessibility/chromium/AXObjectCacheChromium.cpp:68:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebCore/accessibility/chromium/AXObjectCacheChromium.cpp:67:  Missing space before ( in switch(  [whitespace/parens] [5]
Total errors found: 2 in 9 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268952</commentid>
    <comment_count>8</comment_count>
      <attachid>65353</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-24 18:10:28 -0700</bug_when>
    <thetext>Created attachment 65353
Patch

Fixing case statement style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269063</commentid>
    <comment_count>9</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-08-25 00:36:55 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=65350) [details]
&gt; Patch
&gt; 
&gt; I&apos;m not sure how to write such a layout test since the update logic takes place on the browser side. Only the propagation of the new notification occurs within the renderer. Any suggestions or is there another testing mechanism within webkit that I can use?

I think you want to write a layout test that will make sure that the notification is fired in the right circumstances. In the Mac wrapper in DumpRenderTree, there are some mechanisms for observing notifications within layout tests. see if those make sense and if chromium&apos;s DRT wrappers can be modified to do a similar thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269544</commentid>
    <comment_count>10</comment_count>
      <attachid>65353</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-08-25 15:23:31 -0700</bug_when>
    <thetext>Comment on attachment 65353
Patch

the code looks fine here, but we need a layout test, so i&apos;m going to move to r-.
I don&apos;t know much about chromium layout tests, eric seidel would probably be a good person to ask about an approach to do this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270824</commentid>
    <comment_count>11</comment_count>
      <attachid>65789</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-27 17:01:53 -0700</bug_when>
    <thetext>Created attachment 65789
Proposed patch

I&apos;ve added a layout test that verifies the notification is received. It passes in the Chromium port of DRT (but not the Chromium testshell which is in the process of going away).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270832</commentid>
    <comment_count>12</comment_count>
      <attachid>65793</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-27 17:07:12 -0700</bug_when>
    <thetext>Created attachment 65793
Proposed patch

Fixing some typos and spacing issues in the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270833</commentid>
    <comment_count>13</comment_count>
      <attachid>65789</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-08-27 17:07:26 -0700</bug_when>
    <thetext>Comment on attachment 65789
Proposed patch

WebCore/accessibility/chromium/AXObjectCacheChromium.cpp:61
 +  
since you have a switch statement now (down below), i don&apos;t think you need this if at the top. other notifications will just fall through

WebKitTools/DumpRenderTree/chromium/AccessibilityController.h:48
 +      // Shadow to include accessibility initialization.
unneeded white space?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270914</commentid>
    <comment_count>14</comment_count>
      <attachid>65793</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-08-27 20:49:12 -0700</bug_when>
    <thetext>Comment on attachment 65793
Proposed patch


&gt; Index: WebCore/accessibility/chromium/AXObjectCacheChromium.cpp
&gt; ===================================================================
&gt; --- WebCore/accessibility/chromium/AXObjectCacheChromium.cpp	(revision 66033)
&gt; +++ WebCore/accessibility/chromium/AXObjectCacheChromium.cpp	(working copy)
&gt; @@ -56,15 +56,23 @@ void AXObjectCache::attachWrapper(Access
&gt;  
&gt;  void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotification notification)
&gt;  {
&gt; -    if (notification != AXCheckedStateChanged)
&gt; +    if (notification != AXCheckedStateChanged &amp;&amp; notification != AXChildrenChanged)
&gt;          return;
&gt;  

I don&apos;t think you need this check, since you have a switch statement below</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270915</commentid>
    <comment_count>15</comment_count>
      <attachid>65807</attachid>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-27 21:07:50 -0700</bug_when>
    <thetext>Created attachment 65807
Proposed patch

Yes, that check is unneeded for the logic. It was kind of an early exit of the function for unused notifications. I&apos;ve removed it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270916</commentid>
    <comment_count>16</comment_count>
      <attachid>65807</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2010-08-27 21:08:39 -0700</bug_when>
    <thetext>Comment on attachment 65807
Proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270962</commentid>
    <comment_count>17</comment_count>
      <attachid>65807</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-28 02:31:04 -0700</bug_when>
    <thetext>Comment on attachment 65807
Proposed patch

Clearing flags on attachment: 65807

Committed r66305: &lt;http://trac.webkit.org/changeset/66305&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270963</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-08-28 02:31:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270970</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-28 03:06:57 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66305 might have broken Chromium Mac Release</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271078</commentid>
    <comment_count>20</comment_count>
      <attachid>65807</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-28 17:17:50 -0700</bug_when>
    <thetext>Comment on attachment 65807
Proposed patch

&gt;  void AXObjectCache::postPlatformNotification(AccessibilityObject* obj, AXNotification notification)
&gt;  {
&gt; -    if (notification != AXCheckedStateChanged)
&gt; -        return;
&gt; -
&gt;      if (!obj || !obj-&gt;document() || !obj-&gt;documentFrameView())
&gt;          return;
&gt;  
&gt;      ChromeClientChromium* client = toChromeClientChromium(obj-&gt;documentFrameView());
&gt; -    if (client)
&gt; -        client-&gt;didChangeAccessibilityObjectState(obj);
&gt; +    if (client) {
&gt; +        switch (notification) {
&gt; +        case AXCheckedStateChanged:
&gt; +            client-&gt;didChangeAccessibilityObjectState(obj);
&gt; +            break;
&gt; +        case AXChildrenChanged:
&gt; +            client-&gt;didChangeAccessibilityObjectChildren(obj);
&gt; +            break;
&gt; +        }
&gt; +    }

This switch statement caused compile-time failures on the Chromium Mac Release bot because it neither has a default case nor handles all the enum values of AXNotification.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271087</commentid>
    <comment_count>21</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-28 18:23:16 -0700</bug_when>
    <thetext>Committed build fix in changeset 66317 &lt;http://trac.webkit.org/changeset/66317&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271099</commentid>
    <comment_count>22</comment_count>
    <who name="Chris Guillory">ctguil</who>
    <bug_when>2010-08-28 19:55:31 -0700</bug_when>
    <thetext>It&apos;s interested that the compilation was succeeded when all those other cases weren&apos;t handled in the switch statement prior to this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>271108</commentid>
    <comment_count>23</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-08-28 21:15:07 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; It&apos;s interested that the compilation was succeeded when all those other cases weren&apos;t handled in the switch statement prior to this change.

The Chromium Mac bots seems to be a bit more stringent (which in my opinion is good). They compile with the GCC flags -Wall and -Werror, which enables warnings about questionable constructions and treats all warnings as errors, respectively.

I would suggest that we enable such warnings and treat all warnings as errors on the other Chromium bots to help catch potential program errors at compile-time.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65193</attachid>
            <date>2010-08-23 18:06:54 -0700</date>
            <delta_ts>2010-08-24 17:57:45 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>7466</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMjMgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ0NzIKKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FY
T2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vQ2hy
b21lQ2xpZW50Q2hyb21pdW0uaDoKKwogMjAxMC0wOC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDY1ODQ4KQorKysgV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEFYTm90aWZpY2F0aW9uIHsKICAgICAgICAgQVhB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKICAgICAgICAgQVhDaGVja2VkU3RhdGVDaGFuZ2VkLAor
ICAgICAgICBBWENoaWxkcmVuQ2hhbmdlZCwKICAgICAgICAgQVhGb2N1c2VkVUlFbGVtZW50Q2hh
bmdlZCwKICAgICAgICAgQVhMYXlvdXRDb21wbGV0ZSwKICAgICAgICAgQVhMb2FkQ29tcGxldGUs
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiA2NTg0OCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzNiw2ICsz
MjM2LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGlsZHJlbgogICAgIGlm
ICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIEJPT0wgc2VudENoaWxk
cmVuQ2hhbmdlZCA9IGZhbHNlOworICAgIAogICAgIC8vIEdvIHVwIHRoZSBhY2Nlc3NpYmlsaXR5
IHBhcmVudCBjaGFpbiwgYnV0IG9ubHkgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIFRo
aXMgbWV0aG9kIGlzCiAgICAgLy8gY2FsbGVkIGR1cmluZyByZW5kZXIgbGF5b3V0cywgbWluaW1h
bCB3b3JrIHNob3VsZCBiZSBkb25lLiAKICAgICAvLyBJZiBBWCBlbGVtZW50cyBhcmUgY3JlYXRl
ZCBub3csIHRoZXkgY291bGQgaW50ZXJyb2dhdGUgdGhlIHJlbmRlciB0cmVlIHdoaWxlIGl0J3Mg
aW4gYSBmdW5reSBzdGF0ZS4KQEAgLTMyNDUsNiArMzI0NywxMiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGF4UGFyZW50ID0gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KHBhcmVudCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIXNlbnRDaGlsZHJlbkNoYW5nZWQpIHsKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUo
KS0+cG9zdE5vdGlmaWNhdGlvbihheFBhcmVudC0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6
QVhDaGlsZHJlbkNoYW5nZWQsIHRydWUpOworICAgICAgICAgICAgc2VudENoaWxkcmVuQ2hhbmdl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIE9ubHkgZG8gd29yayBp
ZiB0aGUgY2hpbGRyZW4gaGF2ZW4ndCBiZWVuIG1hcmtlZCBkaXJ0eS4gVGhpcyBoYXMgdGhlIGVm
ZmVjdCBvZiBibG9ja2luZwogICAgICAgICAvLyBmdXR1cmUgbGl2ZSByZWdpb24gY2hhbmdlIG5v
dGlmaWNhdGlvbnMgdW50aWwgdGhlIEFYIHRyZWUgaGFzIGJlZW4gYWNjZXNzZWQgYWdhaW4uIFRo
aXMKICAgICAgICAgLy8gaXMgYSBnb29kIHBlcmZvcm1hbmNlIHdpbiBmb3IgYWxsIHBhcnRpZXMu
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhP
YmplY3RDYWNoZUNocm9taXVtLmNwcAkocmV2aXNpb24gNjU4NDgpCisrKyBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTUgKzU2LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihB
Y2Nlc3MKIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0g
ICAgaWYgKG5vdGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQpCisgICAgaWYgKG5v
dGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQgJiYgbm90aWZpY2F0aW9uICE9IEFY
Q2hpbGRyZW5DaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW9iaiB8fCAhb2Jq
LT5kb2N1bWVudCgpIHx8ICFvYmotPmRvY3VtZW50RnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjbGllbnQgPSB0b0Nocm9tZUNsaWVudENo
cm9taXVtKG9iai0+ZG9jdW1lbnRGcmFtZVZpZXcoKSk7Ci0gICAgaWYgKGNsaWVudCkKLSAgICAg
ICAgY2xpZW50LT5kaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUob2JqKTsKKyAgICBp
ZiAoY2xpZW50KSB7CisgICAgICAgIHN3aXRjaChub3RpZmljYXRpb24pIHsKKyAgICAgICAgICAg
IGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgorICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlk
Q2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKG9iaik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEFYQ2hpbGRyZW5DaGFuZ2VkOgorICAgICAgICAgICAgICAg
IGNsaWVudC0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKG9iaik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
T2JqZWN0KikKSW5kZXg6IFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJv
bWl1bS5oCShyZXZpc2lvbiA2NTg0OCkKKysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVD
bGllbnRDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoK
IAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIHN0YXRlIG9mIGFuIGFjY2Vzc2li
aWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0U3RhdGUoQWNjZXNzaWJpbGl0eU9iamVjdCopID0gMDsKKyAgICAKKyAg
ICAvLyBOb3RpZmllZCBlbWJlZGRlciB0aGF0IHRoZSBjaGlsZHJlbiBvZiBhbiBhY2Nlc3NpYmls
aXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNz
aWJpbGl0eU9iamVjdENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1ODQ5KQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTA4LTIzICBDaHJpcyBHdWlsbG9yeSAgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBBWCBub3RpZmljYXRpb24gZm9yIGNoaWxkcmVuQ2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NDcyCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpkaWRDaGFu
Z2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdl
QWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50
SW1wbC5oOgorCiAyMDEwLTA4LTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNjU4NDgpCisrKyBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3
Nyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIHN0YXRl
IG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoY29uc3QgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCYpIHsgfQorICAgIAorICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIGNo
aWxkcmVuIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgorICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4oY29uc3QgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdCYpIHsgfQogCiAKICAgICAvLyBEZXZlbG9wZXIgdG9vbHMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjU4NDgpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MTIsNiArNzEyLDEzIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNj
ZXNzaWIKICAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0
eU9iamVjdFN0YXRlKFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSk7CiB9CiAKK3ZvaWQgQ2hy
b21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sKKyAgICAvLyBBbGVydCBhc3Npc3RpdmUg
dGVjaG5vbG9neSBhYm91dCB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QgY2hpbGRyZW4gY2hhbmdl
CisgICAgaWYgKG9iaikKKyAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZGlkQ2hhbmdlQWNj
ZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSk7Cit9
CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hy
b21lQ2xpZW50SW1wbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIHsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA2NTg0OCkKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjcsNiArMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGhhbmRsZUV4dGVybmFsbHkpOwogICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3Jl
OjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRy
ZW4oV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiAgICAgLy8gQ2hyb21lQ2xpZW50
SW1wbDoKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDdXJzb3JJbmZvJiBjdXJzb3IpOwo=
</data>
<flag name="review"
          id="53892"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65350</attachid>
            <date>2010-08-24 17:57:45 -0700</date>
            <delta_ts>2010-08-24 18:10:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>7466</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMjMgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ0NzIKKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FY
T2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vQ2hy
b21lQ2xpZW50Q2hyb21pdW0uaDoKKwogMjAxMC0wOC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDY1ODQ4KQorKysgV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEFYTm90aWZpY2F0aW9uIHsKICAgICAgICAgQVhB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKICAgICAgICAgQVhDaGVja2VkU3RhdGVDaGFuZ2VkLAor
ICAgICAgICBBWENoaWxkcmVuQ2hhbmdlZCwKICAgICAgICAgQVhGb2N1c2VkVUlFbGVtZW50Q2hh
bmdlZCwKICAgICAgICAgQVhMYXlvdXRDb21wbGV0ZSwKICAgICAgICAgQVhMb2FkQ29tcGxldGUs
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiA2NTg0OCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzNiw2ICsz
MjM2LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGlsZHJlbgogICAgIGlm
ICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIGJvb2wgc2VudENoaWxk
cmVuQ2hhbmdlZCA9IGZhbHNlOworICAgIAogICAgIC8vIEdvIHVwIHRoZSBhY2Nlc3NpYmlsaXR5
IHBhcmVudCBjaGFpbiwgYnV0IG9ubHkgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIFRo
aXMgbWV0aG9kIGlzCiAgICAgLy8gY2FsbGVkIGR1cmluZyByZW5kZXIgbGF5b3V0cywgbWluaW1h
bCB3b3JrIHNob3VsZCBiZSBkb25lLiAKICAgICAvLyBJZiBBWCBlbGVtZW50cyBhcmUgY3JlYXRl
ZCBub3csIHRoZXkgY291bGQgaW50ZXJyb2dhdGUgdGhlIHJlbmRlciB0cmVlIHdoaWxlIGl0J3Mg
aW4gYSBmdW5reSBzdGF0ZS4KQEAgLTMyNDUsNiArMzI0NywxMiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGF4UGFyZW50ID0gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KHBhcmVudCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIXNlbnRDaGlsZHJlbkNoYW5nZWQpIHsKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUo
KS0+cG9zdE5vdGlmaWNhdGlvbihheFBhcmVudC0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6
QVhDaGlsZHJlbkNoYW5nZWQsIHRydWUpOworICAgICAgICAgICAgc2VudENoaWxkcmVuQ2hhbmdl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIE9ubHkgZG8gd29yayBp
ZiB0aGUgY2hpbGRyZW4gaGF2ZW4ndCBiZWVuIG1hcmtlZCBkaXJ0eS4gVGhpcyBoYXMgdGhlIGVm
ZmVjdCBvZiBibG9ja2luZwogICAgICAgICAvLyBmdXR1cmUgbGl2ZSByZWdpb24gY2hhbmdlIG5v
dGlmaWNhdGlvbnMgdW50aWwgdGhlIEFYIHRyZWUgaGFzIGJlZW4gYWNjZXNzZWQgYWdhaW4uIFRo
aXMKICAgICAgICAgLy8gaXMgYSBnb29kIHBlcmZvcm1hbmNlIHdpbiBmb3IgYWxsIHBhcnRpZXMu
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhP
YmplY3RDYWNoZUNocm9taXVtLmNwcAkocmV2aXNpb24gNjU4NDgpCisrKyBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTUgKzU2LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihB
Y2Nlc3MKIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0g
ICAgaWYgKG5vdGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQpCisgICAgaWYgKG5v
dGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQgJiYgbm90aWZpY2F0aW9uICE9IEFY
Q2hpbGRyZW5DaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW9iaiB8fCAhb2Jq
LT5kb2N1bWVudCgpIHx8ICFvYmotPmRvY3VtZW50RnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjbGllbnQgPSB0b0Nocm9tZUNsaWVudENo
cm9taXVtKG9iai0+ZG9jdW1lbnRGcmFtZVZpZXcoKSk7Ci0gICAgaWYgKGNsaWVudCkKLSAgICAg
ICAgY2xpZW50LT5kaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUob2JqKTsKKyAgICBp
ZiAoY2xpZW50KSB7CisgICAgICAgIHN3aXRjaChub3RpZmljYXRpb24pIHsKKyAgICAgICAgICAg
IGNhc2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgorICAgICAgICAgICAgICAgIGNsaWVudC0+ZGlk
Q2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKG9iaik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIEFYQ2hpbGRyZW5DaGFuZ2VkOgorICAgICAgICAgICAgICAg
IGNsaWVudC0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKG9iaik7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHZvaWQgQVhPYmplY3RD
YWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVy
T2JqZWN0KikKSW5kZXg6IFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1
bS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJv
bWl1bS5oCShyZXZpc2lvbiA2NTg0OCkKKysrIFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVD
bGllbnRDaHJvbWl1bS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoK
IAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIHN0YXRlIG9mIGFuIGFjY2Vzc2li
aWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0U3RhdGUoQWNjZXNzaWJpbGl0eU9iamVjdCopID0gMDsKKyAgICAKKyAg
ICAvLyBOb3RpZmllZCBlbWJlZGRlciB0aGF0IHRoZSBjaGlsZHJlbiBvZiBhbiBhY2Nlc3NpYmls
aXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNz
aWJpbGl0eU9iamVjdENoaWxkcmVuKEFjY2Vzc2liaWxpdHlPYmplY3QqKSA9IDA7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1ODQ5KQor
KysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2
IEBACisyMDEwLTA4LTIzICBDaHJpcyBHdWlsbG9yeSAgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBBWCBub3RpZmljYXRpb24gZm9yIGNoaWxkcmVuQ2hhbmdlZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NDcyCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpkaWRDaGFu
Z2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdl
QWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50
SW1wbC5oOgorCiAyMDEwLTA4LTIzICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkocmV2aXNpb24gNjU4NDgpCisrKyBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3
Nyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIHN0YXRl
IG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9p
ZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoY29uc3QgV2ViQWNjZXNzaWJpbGl0
eU9iamVjdCYpIHsgfQorICAgIAorICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIGNo
aWxkcmVuIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgorICAgIHZpcnR1
YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4oY29uc3QgV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdCYpIHsgfQogCiAKICAgICAvLyBEZXZlbG9wZXIgdG9vbHMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNjU4NDgpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03MTIsNiArNzEyLDEzIEBAIHZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNj
ZXNzaWIKICAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0
eU9iamVjdFN0YXRlKFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSk7CiB9CiAKK3ZvaWQgQ2hy
b21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaikKK3sKKyAgICAvLyBBbGVydCBhc3Npc3RpdmUg
dGVjaG5vbG9neSBhYm91dCB0aGUgYWNjZXNzaWJpbGl0eSBvYmplY3QgY2hpbGRyZW4gY2hhbmdl
CisgICAgaWYgKG9iaikKKyAgICAgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+ZGlkQ2hhbmdlQWNj
ZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSk7Cit9
CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hy
b21lQ2xpZW50SW1wbDo6bm90aWZpY2F0aW9uUHJlc2VudGVyKCkgY29uc3QKIHsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA2NTg0OCkKKysrIFdl
YktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NjcsNiArMTY3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGhhbmRsZUV4dGVybmFsbHkpOwogICAgIHZpcnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3Jl
OjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVj
dCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRy
ZW4oV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiAgICAgLy8gQ2hyb21lQ2xpZW50
SW1wbDoKICAgICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDdXJzb3JJbmZvJiBjdXJzb3IpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65353</attachid>
            <date>2010-08-24 18:10:28 -0700</date>
            <delta_ts>2010-08-27 17:07:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>7443</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NTg0OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTAtMDgtMjMgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ0NzIKKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6QVhP
YmplY3RDYWNoZTo6KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2Nocm9taXVtL0FY
T2JqZWN0Q2FjaGVDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hl
Ojpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24pOgorICAgICAgICAqIHBhZ2UvY2hyb21pdW0vQ2hy
b21lQ2xpZW50Q2hyb21pdW0uaDoKKwogMjAxMC0wOC0yMyAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR2VvZmYgR2FyZW4uCkluZGV4OiBXZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDY1ODQ4KQorKysgV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYg
KzEwNyw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEFYTm90aWZpY2F0aW9uIHsKICAgICAgICAgQVhB
Y3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKICAgICAgICAgQVhDaGVja2VkU3RhdGVDaGFuZ2VkLAor
ICAgICAgICBBWENoaWxkcmVuQ2hhbmdlZCwKICAgICAgICAgQVhGb2N1c2VkVUlFbGVtZW50Q2hh
bmdlZCwKICAgICAgICAgQVhMYXlvdXRDb21wbGV0ZSwKICAgICAgICAgQVhMb2FkQ29tcGxldGUs
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwCShyZXZpc2lvbiA2NTg0OCkKKysrIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzNiw2ICsz
MjM2LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGlsZHJlbgogICAgIGlm
ICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIGJvb2wgc2VudENoaWxk
cmVuQ2hhbmdlZCA9IGZhbHNlOworICAgIAogICAgIC8vIEdvIHVwIHRoZSBhY2Nlc3NpYmlsaXR5
IHBhcmVudCBjaGFpbiwgYnV0IG9ubHkgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBleGlzdHMuIFRo
aXMgbWV0aG9kIGlzCiAgICAgLy8gY2FsbGVkIGR1cmluZyByZW5kZXIgbGF5b3V0cywgbWluaW1h
bCB3b3JrIHNob3VsZCBiZSBkb25lLiAKICAgICAvLyBJZiBBWCBlbGVtZW50cyBhcmUgY3JlYXRl
ZCBub3csIHRoZXkgY291bGQgaW50ZXJyb2dhdGUgdGhlIHJlbmRlciB0cmVlIHdoaWxlIGl0J3Mg
aW4gYSBmdW5reSBzdGF0ZS4KQEAgLTMyNDUsNiArMzI0NywxMiBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
CiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGF4UGFyZW50ID0gc3RhdGljX2Nh
c3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KHBhcmVudCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIXNlbnRDaGlsZHJlbkNoYW5nZWQpIHsKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUo
KS0+cG9zdE5vdGlmaWNhdGlvbihheFBhcmVudC0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6
QVhDaGlsZHJlbkNoYW5nZWQsIHRydWUpOworICAgICAgICAgICAgc2VudENoaWxkcmVuQ2hhbmdl
ZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIE9ubHkgZG8gd29yayBp
ZiB0aGUgY2hpbGRyZW4gaGF2ZW4ndCBiZWVuIG1hcmtlZCBkaXJ0eS4gVGhpcyBoYXMgdGhlIGVm
ZmVjdCBvZiBibG9ja2luZwogICAgICAgICAvLyBmdXR1cmUgbGl2ZSByZWdpb24gY2hhbmdlIG5v
dGlmaWNhdGlvbnMgdW50aWwgdGhlIEFYIHRyZWUgaGFzIGJlZW4gYWNjZXNzZWQgYWdhaW4uIFRo
aXMKICAgICAgICAgLy8gaXMgYSBnb29kIHBlcmZvcm1hbmNlIHdpbiBmb3IgYWxsIHBhcnRpZXMu
CkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9t
aXVtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhP
YmplY3RDYWNoZUNocm9taXVtLmNwcAkocmV2aXNpb24gNjU4NDgpCisrKyBXZWJDb3JlL2FjY2Vz
c2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNTYsMTUgKzU2LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihB
Y2Nlc3MKIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNj
ZXNzaWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0g
ICAgaWYgKG5vdGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQpCisgICAgaWYgKG5v
dGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQgJiYgbm90aWZpY2F0aW9uICE9IEFY
Q2hpbGRyZW5DaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW9iaiB8fCAhb2Jq
LT5kb2N1bWVudCgpIHx8ICFvYmotPmRvY3VtZW50RnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjbGllbnQgPSB0b0Nocm9tZUNsaWVudENo
cm9taXVtKG9iai0+ZG9jdW1lbnRGcmFtZVZpZXcoKSk7Ci0gICAgaWYgKGNsaWVudCkKLSAgICAg
ICAgY2xpZW50LT5kaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUob2JqKTsKKyAgICBp
ZiAoY2xpZW50KSB7CisgICAgICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CisgICAgICAgIGNh
c2UgQVhDaGVja2VkU3RhdGVDaGFuZ2VkOgorICAgICAgICAgICAgY2xpZW50LT5kaWRDaGFuZ2VB
Y2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUob2JqKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBjYXNlIEFYQ2hpbGRyZW5DaGFuZ2VkOgorICAgICAgICAgICAgY2xpZW50LT5kaWRDaGFuZ2VB
Y2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4ob2JqKTsKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICB9CisgICAgfQogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCopCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24gNjU4NDgp
CisrKyBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3RpZmllcyBlbWJl
ZGRlciB0aGF0IHRoZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdl
ZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFj
Y2Vzc2liaWxpdHlPYmplY3QqKSA9IDA7CisgICAgCisgICAgLy8gTm90aWZpZWQgZW1iZWRkZXIg
dGhhdCB0aGUgY2hpbGRyZW4gb2YgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgaGFzIGNoYW5nZWQu
CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NTg0OSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wOC0yMyAgQ2hyaXMg
R3VpbGxvcnkgICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVggbm90aWZpY2F0aW9uIGZvciBj
aGlsZHJlbkNoYW5nZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD00NDQ3MgorCisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENo
aWxkcmVuKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGls
ZHJlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuaDoKKwogMjAxMC0wOC0yMyAg
S2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmgJKHJldmlzaW9uIDY1ODQ4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsOSBAQCBwdWJsaWM6CiAKICAgICAv
LyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRoZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9i
amVjdCBoYXMgY2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0
eU9iamVjdFN0YXRlKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSB7IH0KKyAgICAKKyAg
ICAvLyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRoZSBjaGlsZHJlbiBvZiBhbiBhY2Nlc3NpYmls
aXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNz
aWJpbGl0eU9iamVjdENoaWxkcmVuKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSB7IH0K
IAogCiAgICAgLy8gRGV2ZWxvcGVyIHRvb2xzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21l
Q2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDY1ODQ4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9D
aHJvbWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEyLDYgKzcxMiwxMyBAQCB2
b2lkIENocm9tZUNsaWVudEltcGw6OmRpZENoYW5nZUFjY2Vzc2liCiAgICAgICAgIG1fd2ViVmll
dy0+Y2xpZW50KCktPmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RTdGF0ZShXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0KG9iaikpOwogfQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OmRpZENoYW5n
ZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBvYmopCit7CisgICAgLy8gQWxlcnQgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYWJvdXQgdGhlIGFj
Y2Vzc2liaWxpdHkgb2JqZWN0IGNoaWxkcmVuIGNoYW5nZQorICAgIGlmIChvYmopCisgICAgICAg
IG1fd2ViVmlldy0+Y2xpZW50KCktPmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJl
bihXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG9iaikpOworfQorCiAjaWYgRU5BQkxFKE5PVElGSUNB
VElPTlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEltcGw6Om5vdGlmaWNh
dGlvblByZXNlbnRlcigpIGNvbnN0CiB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkocmV2aXNpb24gNjU4NDgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbGx5KTsKICAg
ICB2aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVw
Q29udGFpbmVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVj
dFN0YXRlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3QqKTsKIAogICAgIC8vIENocm9tZUNsaWVudEltcGw6CiAgICAgdm9pZCBzZXRDdXJz
b3IoY29uc3QgV2ViQ3Vyc29ySW5mbyYgY3Vyc29yKTsK
</data>
<flag name="review"
          id="54117"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65789</attachid>
            <date>2010-08-27 17:01:53 -0700</date>
            <delta_ts>2010-08-27 21:07:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>18620</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjI3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDgtMjcgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ3MgorCisgICAgICAg
IFRlc3QgYnkgcnVubmluZyBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVu
LWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgd2l0aGluIGNocm9pbWl1bSdzIERSVAorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmg6CisgICAgICAgIChXZWJDb3JlOjpB
WE9iamVjdENhY2hlOjopOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvY2hyb21pdW0v
QVhPYmplY3RDYWNoZUNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbik6CisgICAgICAgICogcGFnZS9jaHJvbWl1bS9D
aHJvbWVDbGllbnRDaHJvbWl1bS5oOgorCiAyMDEwLTA4LTI3ICBTaW1vbiBGcmFzZXIgIDxzaW1v
bi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hhbmcuCklu
ZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgJKHJldmlzaW9uIDY2MDMzKQor
KysgV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTA3LDYgKzEwNyw3IEBAIHB1YmxpYzoKICAgICBlbnVtIEFYTm90aWZpY2F0aW9uIHsKICAg
ICAgICAgQVhBY3RpdmVEZXNjZW5kYW50Q2hhbmdlZCwKICAgICAgICAgQVhDaGVja2VkU3RhdGVD
aGFuZ2VkLAorICAgICAgICBBWENoaWxkcmVuQ2hhbmdlZCwKICAgICAgICAgQVhGb2N1c2VkVUlF
bGVtZW50Q2hhbmdlZCwKICAgICAgICAgQVhMYXlvdXRDb21wbGV0ZSwKICAgICAgICAgQVhMb2Fk
Q29tcGxldGUsCkluZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIzNiw2ICszMjM2LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpjaGlsZHJl
bgogICAgIGlmICghbV9yZW5kZXJlcikKICAgICAgICAgcmV0dXJuOwogICAgIAorICAgIGJvb2wg
c2VudENoaWxkcmVuQ2hhbmdlZCA9IGZhbHNlOworICAgIAogICAgIC8vIEdvIHVwIHRoZSBhY2Nl
c3NpYmlsaXR5IHBhcmVudCBjaGFpbiwgYnV0IG9ubHkgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBl
eGlzdHMuIFRoaXMgbWV0aG9kIGlzCiAgICAgLy8gY2FsbGVkIGR1cmluZyByZW5kZXIgbGF5b3V0
cywgbWluaW1hbCB3b3JrIHNob3VsZCBiZSBkb25lLiAKICAgICAvLyBJZiBBWCBlbGVtZW50cyBh
cmUgY3JlYXRlZCBub3csIHRoZXkgY291bGQgaW50ZXJyb2dhdGUgdGhlIHJlbmRlciB0cmVlIHdo
aWxlIGl0J3MgaW4gYSBmdW5reSBzdGF0ZS4KQEAgLTMyNDUsNiArMzI0NywxMyBAQCB2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVuCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgCiAgICAgICAgIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QqIGF4UGFyZW50ID0g
c3RhdGljX2Nhc3Q8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCo+KHBhcmVudCk7CisgICAgICAg
IAorICAgICAgICAvLyBTZW5kIHRoZSBjaGlsZHJlbiBjaGFuZ2VkIG5vdGlmaWNhdGlvbiBvbiB0
aGUgZmlyc3QgYWNjZXNzaWJpbGl0eSByZW5kZXIgb2JqZWN0IGFuY2VzdG9yLgorICAgICAgICBp
ZiAoIXNlbnRDaGlsZHJlbkNoYW5nZWQpIHsKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+
cG9zdE5vdGlmaWNhdGlvbihheFBhcmVudC0+cmVuZGVyZXIoKSwgQVhPYmplY3RDYWNoZTo6QVhD
aGlsZHJlbkNoYW5nZWQsIHRydWUpOworICAgICAgICAgICAgc2VudENoaWxkcmVuQ2hhbmdlZCA9
IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIE9ubHkgZG8gd29yayBpZiB0
aGUgY2hpbGRyZW4gaGF2ZW4ndCBiZWVuIG1hcmtlZCBkaXJ0eS4gVGhpcyBoYXMgdGhlIGVmZmVj
dCBvZiBibG9ja2luZwogICAgICAgICAvLyBmdXR1cmUgbGl2ZSByZWdpb24gY2hhbmdlIG5vdGlm
aWNhdGlvbnMgdW50aWwgdGhlIEFYIHRyZWUgaGFzIGJlZW4gYWNjZXNzZWQgYWdhaW4uIFRoaXMK
ICAgICAgICAgLy8gaXMgYSBnb29kIHBlcmZvcm1hbmNlIHdpbiBmb3IgYWxsIHBhcnRpZXMuCklu
ZGV4OiBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVt
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvY2hyb21pdW0vQVhPYmpl
Y3RDYWNoZUNocm9taXVtLmNwcAkocmV2aXNpb24gNjYwMzMpCisrKyBXZWJDb3JlL2FjY2Vzc2li
aWxpdHkvY2hyb21pdW0vQVhPYmplY3RDYWNoZUNocm9taXVtLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsMTUgKzU2LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6YXR0YWNoV3JhcHBlcihBY2Nl
c3MKIAogdm9pZCBBWE9iamVjdENhY2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNz
aWJpbGl0eU9iamVjdCogb2JqLCBBWE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pCiB7Ci0gICAg
aWYgKG5vdGlmaWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQpCisgICAgaWYgKG5vdGlm
aWNhdGlvbiAhPSBBWENoZWNrZWRTdGF0ZUNoYW5nZWQgJiYgbm90aWZpY2F0aW9uICE9IEFYQ2hp
bGRyZW5DaGFuZ2VkKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW9iaiB8fCAhb2JqLT5k
b2N1bWVudCgpIHx8ICFvYmotPmRvY3VtZW50RnJhbWVWaWV3KCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIENocm9tZUNsaWVudENocm9taXVtKiBjbGllbnQgPSB0b0Nocm9tZUNsaWVudENocm9t
aXVtKG9iai0+ZG9jdW1lbnRGcmFtZVZpZXcoKSk7Ci0gICAgaWYgKGNsaWVudCkKLSAgICAgICAg
Y2xpZW50LT5kaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUob2JqKTsKKyAgICBpZiAo
Y2xpZW50KSB7CisgICAgICAgIHN3aXRjaCAobm90aWZpY2F0aW9uKSB7CisgICAgICAgIGNhc2Ug
QVhDaGVja2VkU3RhdGVDaGFuZ2VkOgorICAgICAgICAgICAgY2xpZW50LT5kaWRDaGFuZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0U3RhdGUob2JqKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlIEFYQ2hpbGRyZW5DaGFuZ2VkOgorICAgICAgICAgICAgY2xpZW50LT5kaWRDaGFuZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4ob2JqKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUZvY3VzZWRVSUVsZW1l
bnRDaGFuZ2VkKFJlbmRlck9iamVjdCosIFJlbmRlck9iamVjdCopCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkocmV2aXNpb24gNjYwMzMpCisr
KyBXZWJDb3JlL3BhZ2UvY2hyb21pdW0vQ2hyb21lQ2xpZW50Q2hyb21pdW0uaAkod29ya2luZyBj
b3B5KQpAQCAtNTUsNiArNTUsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBOb3RpZmllcyBlbWJlZGRl
ciB0aGF0IHRoZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdlZC4K
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKEFjY2Vz
c2liaWxpdHlPYmplY3QqKSA9IDA7CisgICAgCisgICAgLy8gTm90aWZpZWQgZW1iZWRkZXIgdGhh
dCB0aGUgY2hpbGRyZW4gb2YgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgaGFzIGNoYW5nZWQuCisg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KikgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjI3MykKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxMC0wOC0yNyAgQ2hyaXMgR3Vp
bGxvcnkgICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVggbm90aWZpY2F0aW9uIGZvciBjaGls
ZHJlbkNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQ0NDcyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJWaWV3Q2xpZW50OjpkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRy
ZW4pOgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6Q2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVu
KToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xpZW50SW1wbC5oOgorCiAyMDEwLTA4LTI3ICBNaWNo
YWVsIE5vcmRtYW4gIDxtaWNoYWVsbkBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIExldmluLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgJ
KHJldmlzaW9uIDY2MDMzKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw2ICsyNzcsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBO
b3RpZmllcyBlbWJlZGRlciB0aGF0IHRoZSBzdGF0ZSBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVj
dCBoYXMgY2hhbmdlZC4KICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9i
amVjdFN0YXRlKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSB7IH0KKyAgICAKKyAgICAv
LyBOb3RpZmllcyBlbWJlZGRlciB0aGF0IHRoZSBjaGlsZHJlbiBvZiBhbiBhY2Nlc3NpYmlsaXR5
IG9iamVjdCBoYXMgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJp
bGl0eU9iamVjdENoaWxkcmVuKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmKSB7IH0KIAog
CiAgICAgLy8gRGV2ZWxvcGVyIHRvb2xzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJv
bWVDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEyLDYgKzcxMiwxMyBAQCB2b2lk
IENocm9tZUNsaWVudEltcGw6OmRpZENoYW5nZUFjY2Vzc2liCiAgICAgICAgIG1fd2ViVmlldy0+
Y2xpZW50KCktPmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RTdGF0ZShXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0KG9iaikpOwogfQogCit2b2lkIENocm9tZUNsaWVudEltcGw6OmRpZENoYW5nZUFj
Y2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmopCit7CisgICAgLy8gQWxlcnQgYXNzaXN0aXZlIHRlY2hub2xvZ3kgYWJvdXQgdGhlIGFjY2Vz
c2liaWxpdHkgb2JqZWN0IGNoaWxkcmVuIGNoYW5nZQorICAgIGlmIChvYmopCisgICAgICAgIG1f
d2ViVmlldy0+Y2xpZW50KCktPmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihX
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KG9iaikpOworfQorCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCiBOb3RpZmljYXRpb25QcmVzZW50ZXIqIENocm9tZUNsaWVudEltcGw6Om5vdGlmaWNhdGlv
blByZXNlbnRlcigpIGNvbnN0CiB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVu
dEltcGwuaAkocmV2aXNpb24gNjYwMzMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBoYW5kbGVFeHRlcm5hbGx5KTsKICAgICB2
aXJ0dWFsIHZvaWQgcG9wdXBDbG9zZWQoV2ViQ29yZTo6UG9wdXBDb250YWluZXIqIHBvcHVwQ29u
dGFpbmVyKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0
YXRlKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlP
YmplY3QqKTsKIAogICAgIC8vIENocm9tZUNsaWVudEltcGw6CiAgICAgdm9pZCBzZXRDdXJzb3Io
Y29uc3QgV2ViQ3Vyc29ySW5mbyYgY3Vyc29yKTsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MjczKQor
KysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMTAtMDgtMjcgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxsb3J5QGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEFY
IG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ3MgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKToKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpyZXNldCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcjo6Z2V0Um9vdEVsZW1lbnQpOgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmR1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDoKKyAgICAgICAgKEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpzaG91bGREdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbnMp
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAg
ICAgICAgKFdlYlZpZXdIb3N0OjpkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4p
OgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIw
MTAtMDctMjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRXJpYyBDYXJsc29uLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gNjYwMzMpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDE1ICs0
NCwxMiBAQCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvCiAgICAgOiBt
X3NoZWxsKHNoZWxsKQogewogCi0gICAgYmluZE1ldGhvZCgibG9nRm9jdXNFdmVudHMiLAotICAg
ICAgICAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0ZvY3VzRXZlbnRzQ2FsbGJhY2spOwot
ICAgIGJpbmRNZXRob2QoImxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzIiwKLSAgICAgICAgJkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpsb2dTY3JvbGxpbmdTdGFydEV2ZW50c0NhbGxiYWNrKTsKLQot
ICAgIGJpbmRQcm9wZXJ0eSgiZm9jdXNlZEVsZW1lbnQiLAotICAgICAgICAmQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2spOwotICAgIGJpbmRQcm9w
ZXJ0eSgicm9vdEVsZW1lbnQiLAotICAgICAgICAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJv
b3RFbGVtZW50R2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImR1bXBBY2Nlc3NpYmls
aXR5Tm90aWZpY2F0aW9ucyIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZHVtcEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25zKTsKKyAgICBiaW5kTWV0aG9kKCJsb2dGb2N1c0V2ZW50cyIsICZB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHNDYWxsYmFjayk7CisgICAgYmlu
ZE1ldGhvZCgibG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OmxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzQ2FsbGJhY2spOworCisgICAgYmluZFByb3BlcnR5
KCJmb2N1c2VkRWxlbWVudCIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1l
bnRHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZFByb3BlcnR5KCJyb290RWxlbWVudCIsICZBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6cm9vdEVsZW1lbnRHZXR0ZXJDYWxsYmFjayk7CiAKICAgICBi
aW5kRmFsbGJhY2tNZXRob2QoJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmYWxsYmFja0NhbGxi
YWNrKTsKIH0KQEAgLTY4LDYgKzY1LDggQEAgdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6
cmVzZXQoKQogICAgIG1fcm9vdEVsZW1lbnQgPSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0KCk7CiAg
ICAgbV9mb2N1c2VkRWxlbWVudCA9IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKICAgICBtX2Vs
ZW1lbnRzLmNsZWFyKCk7CisgICAgCisgICAgbV9kdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bnMgPSBmYWxzZTsKIH0KIAogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0Rm9jdXNl
ZEVsZW1lbnQoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgZm9jdXNlZEVsZW1lbnQpCkBA
IC04OSw2ICs4OCwxMiBAQCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBBY2Nlc3NpYmlsaXR5Q29u
CiAgICAgcmV0dXJuIG1fZWxlbWVudHMuY3JlYXRlUm9vdChtX3Jvb3RFbGVtZW50KTsKIH0KIAor
dm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6ZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKK3sKKyAgICBt
X2R1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyA9IHRydWU7CisgICAgcmVzdWx0LT5zZXRO
dWxsKCk7Cit9CisKIHZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0ZvY3VzRXZlbnRz
Q2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQogewog
ICAgIC8vIEFzIG9mIHI0OTAzMSwgdGhpcyBpcyBub3QgYmVpbmcgdXNlZCB1cHN0cmVhbS4KSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAkocmV2aXNpb24gNjYwMzMpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFRlc3RTaGVsbDsKIGNsYXNzIEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyIDogcHVibGljIENwcEJvdW5kQ2xhc3MgewogcHVibGljOgog
ICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKFRlc3RTaGVsbCopOwotCisgICAg
CiAgICAgLy8gU2hhZG93IHRvIGluY2x1ZGUgYWNjZXNzaWJpbGl0eSBpbml0aWFsaXphdGlvbi4K
ICAgICB2b2lkIGJpbmRUb0phdmFzY3JpcHQoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiBjbGFzc25hbWUpOwogICAgIHZvaWQgcmVzZXQoKTsKQEAgLTUyLDggKzUy
LDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvY3VzZWRFbGVtZW50KGNvbnN0IFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdl
dEZvY3VzZWRFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0Um9vdEVs
ZW1lbnQoKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVs
bHMgdGhlIHRlc3Rfc2hlbGwgdG8gZHVtcCBhbGwgCisgICAgLy8gYWNjZXNzaWJpbGl0eSBub3Rp
ZmljYXRpb25zLgorICAgIHZvaWQgZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsKKworcHVibGljOgorICAgIC8vIFRoZSBm
b2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQgdG8gSmF2YVNjcmlwdC4KKyAgICBib29s
IHNob3VsZER1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucygpIHsgcmV0dXJuIG1fZHVtcEFj
Y2Vzc2liaWxpdHlOb3RpZmljYXRpb25zOyB9CiAKIHByaXZhdGU6CisgICAgLy8gSWYgdHJ1ZSwg
dGhlIHRlc3Rfc2hlbGwgd2lsbCBkdW1wIGFsbCBhY2Nlc3NpYmlsaXR5IG5vdGlmaWNhdGlvbnMu
CisgICAgYm9vbCBtX2R1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uczsKKwogICAgIC8vIEJv
dW5kIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKICAgICB2b2lkIGxvZ0ZvY3VzRXZlbnRzQ2FsbGJh
Y2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOwogICAgIHZvaWQgbG9nU2Ny
b2xsaW5nU3RhcnRFdmVudHNDYWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJp
YW50Kik7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDg5
LDYgKzQ4OSwxMiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpmb2N1c0FjY2Vzc2liaWxpdHlPYmplCiAg
ICAgbV9zaGVsbC0+YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKS0+c2V0Rm9jdXNlZEVsZW1lbnQo
b2JqZWN0KTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9i
amVjdENoaWxkcmVuKGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKK3sKKyAg
ICBpZiAobV9zaGVsbC0+YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoKS0+c2hvdWxkRHVtcEFjY2Vz
c2liaWxpdHlOb3RpZmljYXRpb25zKCkpCisgICAgICAgIHByaW50ZigiZGlkQ2hhbmdlQWNjZXNz
aWJpbGl0eU9iamVjdENoaWxkcmVuIC0gbmV3IGNvdW50OiAlZFxuIiwgb2JqZWN0LmNoaWxkQ291
bnQoKSk7Cit9CisKIFdlYk5vdGlmaWNhdGlvblByZXNlbnRlciogV2ViVmlld0hvc3Q6Om5vdGlm
aWNhdGlvblByZXNlbnRlcigpCiB7CiAgICAgcmV0dXJuIG1fc2hlbGwtPm5vdGlmaWNhdGlvblBy
ZXNlbnRlcigpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNiw2
ICsxMjYsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpCiAgICAg
dmlydHVhbCBpbnQgaGlzdG9yeUJhY2tMaXN0Q291bnQoKTsKICAgICB2aXJ0dWFsIGludCBoaXN0
b3J5Rm9yd2FyZExpc3RDb3VudCgpOwogICAgIHZpcnR1YWwgdm9pZCBmb2N1c0FjY2Vzc2liaWxp
dHlPYmplY3QoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0Jik7CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihjb25zdCBXZWJL
aXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTm90
aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25QcmVzZW50ZXIoKTsKICAgICB2aXJ0dWFs
IFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBnZW9sb2NhdGlvblNlcnZpY2UoKTsKICAg
ICB2aXJ0dWFsIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyKiBzcGVlY2hJbnB1dENv
bnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExpc3RlbmVyKik7CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiA2NjI3NykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDE4IEBACisyMDEwLTA4LTI3ICBDaHJpcyBHdWlsbG9yeSAgIDxjaHJpcy5ndWlsbG9y
eUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCBBWCBub3RpZmljYXRpb24gZm9yIGNoaWxkcmVuQ2hhbmdlZAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ0NzIKKworICAgICAgICBU
ZXN0IGJ5IHJ1bm5pbmcgcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9jaGlsZHJlbi1j
aGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sIHdpdGhpbiBjaHJvaW1pdW0ncyBEUlQKKworICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHk6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmljYXRp
b24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nl
c3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL2RydF9leHBlY3RhdGlvbnMudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dDoKKwogMjAxMC0wOC0yNyAg
VG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHVw
ZGF0aW5nIGNocm9taXVtIHRlc3QgZXhwZWN0YXRpb25zLgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vZHJ0X2V4cGVjdGF0aW9ucy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZHJ0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDY2
MDMzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vZHJ0X2V4cGVjdGF0aW9ucy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTM1NCw2ICszNTQsNyBAQCBCVUdfRFJUIFdJTiBNQUMgTElO
VVggOiBmYXN0L2RvbS9EZXZpY2VNCiBCVUdfRFJUIFdJTiBNQUMgTElOVVggOiBmYXN0L2RvbS9E
ZXZpY2VNb3Rpb24vb3B0aW9uYWwtZXZlbnQtcHJvcGVydGllcy5odG1sID0gVEVYVAogQlVHX0RS
VCBXSU4gTUFDIExJTlVYIDogZmFzdC9ldmVudHMvc3BlY2lhbC1rZXktZXZlbnRzLWluLWlucHV0
LXRleHQuaHRtbCA9IFRFWFQKIEJVR19EUlQgV0lOIE1BQyA6IGZhc3QvZG9tL0dlb2xvY2F0aW9u
L2RlbGF5ZWQtcGVybWlzc2lvbi1hbGxvd2VkLWZvci1tdWx0aXBsZS1yZXF1ZXN0cy5odG1sID0g
VElNRU9VVAorQlVHX0RSVCA6IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRy
ZW4tY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbCA9IFBBU1MKIAogLy8gV2luZG93cyBmYWlsdXJl
cyBmcm9tIHRoZSBuZXcgYnVpbGQgc2xhdmUgKHNvbWUgbWF5IGJlIFZpc3RhL1hQIGRpZmZzKQog
QlVHX0RSVCBXSU4gOiBjc3MyLjEvdDA4MDUtYzU1MTktYnJkci1yLTAxLWUuaHRtbCA9IElNQUdF
K1RFWFQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDY2MDMzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05NTEs
NiArOTUxLDkgQEAgQlVHMTAzMjIgREVGRVIgU0tJUCA6IGFjY2Vzc2liaWxpdHkgPSBQQQogQlVH
MTAzMjIgREVGRVIgU0tJUCA6IHBsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5ID0gUEFTUyBGQUlM
CiBCVUcxMDMyMiBERUZFUiBTS0lQIDogcGxhdGZvcm0vd2luL2FjY2Vzc2liaWxpdHkgPSBQQVNT
IEZBSUwKIAorLy8gRnVuY3Rpb25hbGl0eSBpcyBzdXBwb3J0ZWQgaW4gRFJUIGJ1dCBub3QgVGVz
dFNoZWxsCitXT05URklYIFNLSVAgOiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2No
aWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgPSBGQUlMCisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAv
LyBPdGhlciBmYWlsdXJlcwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmljYXRpb24tZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2Fj
Y2Vzc2liaWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMyBAQAorZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuIC0g
bmV3IGNvdW50OiAxCitUaGlzIHRlc3RzIHRoYXQgY2hyb21pdW0gY29ycmVjdGx5IHJlY2lldmVz
IG5vdGlmaWNhdGlvbnMgd2hlbiB0aGUgY2hpbGRyZW4gb2YgYW4gYWNjZXNzaWJpbGl0eSBvYmpl
Y3QgY2hhbmdlLgordGV4dApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNj
ZXNzaWJpbGl0eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRyZW4t
Y2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmljYXRp
b24uaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorPGh0bWw+Cis8Ym9keT4KK1Ro
aXMgdGVzdHMgdGhhdCBjaHJvbWl1bSBjb3JyZWN0bHkgcmVjaWV2ZXMgbm90aWZpY2F0aW9ucyB3
aGVuIHRoZSBjaGlsZHJlbiBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBjaGFuZ2UuCis8ZGl2
PjwvZGl2PgorPHNjcmlwdD4KKyAgICBmdW5jdGlvbiB0ZXN0RG9uZSgpIHsKKyAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlv
biB0ZXN0KCkgeworICAgICAgICBpZiAoIXdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNU
ZXh0KCk7CisKKyAgICAgICAgaWYgKCFhY2Nlc3NpYmlsaXR5Q29udHJvbGxlciB8fCAhYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFjY2VzcyBhY2Nlc3NpYmlsaXR5IG9iamVjdCB0
aGF0IHdpbGwgYmUgZGVsZXRlZC4KKyAgICAgICAgZG9jdW1lbnQuYm9keS5mb2N1cygpOworICAg
ICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudC5jaGlsZEF0SW5kZXgo
MCk7CisgICAgICAgIAorICAgICAgICBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5kdW1wQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbnMoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEluc2VydCBhIGNo
aWxkIGVsZW1lbnQgb24gdGhlIGRpdi4gVGhpcyBnZW5lcmF0ZXMgYW4gYWNjZXNzaWJpbGl0eSBj
aGlsZHJlZCBjaGFuZ2VkIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgZG9jdW1lbnQuYm9keS5jaGls
ZHJlblswXS5pbm5lckhUTUwgPSAidGV4dCI7CisKKyAgICAgICAgLy8gVXNlIHNldFRpbWVvdXQg
c28gdGhhdCBhc3luY2hyb25vdXMgYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zIGNhbiBiZSBw
cm9jZXNzZWQuCisgICAgICAgIHNldFRpbWVvdXQodGVzdERvbmUsIDApOworICAgIH0KKworICAg
IHRlc3QoKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65793</attachid>
            <date>2010-08-27 17:07:12 -0700</date>
            <delta_ts>2010-08-27 21:07:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>18301</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjI3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDgtMjcgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ3MgorCisgICAgICAg
IFRlc3QgYnkgcnVubmluZyBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVu
LWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgd2l0aGluIGNocm9taXVtJ3MgRFJUCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6Oik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9B
WE9iamVjdENhY2hlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0No
cm9tZUNsaWVudENocm9taXVtLmg6CisKIDIwMTAtMDgtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KSW5k
ZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNjYwMzMpCisr
KyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNiArMTA3LDcgQEAgcHVibGljOgogICAgIGVudW0gQVhOb3RpZmljYXRpb24gewogICAg
ICAgICBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkLAogICAgICAgICBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQsCisgICAgICAgIEFYQ2hpbGRyZW5DaGFuZ2VkLAogICAgICAgICBBWEZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkLAogICAgICAgICBBWExheW91dENvbXBsZXRlLAogICAgICAgICBBWExvYWRD
b21wbGV0ZSwKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjM2LDYgKzMyMzYsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVu
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgYm9vbCBz
ZW50Q2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CisgICAgCiAgICAgLy8gR28gdXAgdGhlIGFjY2Vz
c2liaWxpdHkgcGFyZW50IGNoYWluLCBidXQgb25seSBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4
aXN0cy4gVGhpcyBtZXRob2QgaXMKICAgICAvLyBjYWxsZWQgZHVyaW5nIHJlbmRlciBsYXlvdXRz
LCBtaW5pbWFsIHdvcmsgc2hvdWxkIGJlIGRvbmUuIAogICAgIC8vIElmIEFYIGVsZW1lbnRzIGFy
ZSBjcmVhdGVkIG5vdywgdGhleSBjb3VsZCBpbnRlcnJvZ2F0ZSB0aGUgcmVuZGVyIHRyZWUgd2hp
bGUgaXQncyBpbiBhIGZ1bmt5IHN0YXRlLgpAQCAtMzI0NSw2ICszMjQ3LDEzIEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKICAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogYXhQYXJlbnQgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4ocGFyZW50KTsKKyAgICAgICAg
CisgICAgICAgIC8vIFNlbmQgdGhlIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRo
ZSBmaXJzdCBhY2Nlc3NpYmlsaXR5IHJlbmRlciBvYmplY3QgYW5jZXN0b3IuCisgICAgICAgIGlm
ICghc2VudENoaWxkcmVuQ2hhbmdlZCkgeworICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5w
b3N0Tm90aWZpY2F0aW9uKGF4UGFyZW50LT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWENo
aWxkcmVuQ2hhbmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICBzZW50Q2hpbGRyZW5DaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gT25seSBkbyB3b3JrIGlmIHRo
ZSBjaGlsZHJlbiBoYXZlbid0IGJlZW4gbWFya2VkIGRpcnR5LiBUaGlzIGhhcyB0aGUgZWZmZWN0
IG9mIGJsb2NraW5nCiAgICAgICAgIC8vIGZ1dHVyZSBsaXZlIHJlZ2lvbiBjaGFuZ2Ugbm90aWZp
Y2F0aW9ucyB1bnRpbCB0aGUgQVggdHJlZSBoYXMgYmVlbiBhY2Nlc3NlZCBhZ2Fpbi4gVGhpcwog
ICAgICAgICAvLyBpcyBhIGdvb2QgcGVyZm9ybWFuY2Ugd2luIGZvciBhbGwgcGFydGllcy4KSW5k
ZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVj
dENhY2hlQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NiwxNSArNTYsMjMgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vz
cwogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKLSAgICBp
ZiAobm90aWZpY2F0aW9uICE9IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZCkKKyAgICBpZiAobm90aWZp
Y2F0aW9uICE9IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZCAmJiBub3RpZmljYXRpb24gIT0gQVhDaGls
ZHJlbkNoYW5nZWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghb2JqIHx8ICFvYmotPmRv
Y3VtZW50KCkgfHwgIW9iai0+ZG9jdW1lbnRGcmFtZVZpZXcoKSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgQ2hyb21lQ2xpZW50Q2hyb21pdW0qIGNsaWVudCA9IHRvQ2hyb21lQ2xpZW50Q2hyb21p
dW0ob2JqLT5kb2N1bWVudEZyYW1lVmlldygpKTsKLSAgICBpZiAoY2xpZW50KQotICAgICAgICBj
bGllbnQtPmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RTdGF0ZShvYmopOworICAgIGlmIChj
bGllbnQpIHsKKyAgICAgICAgc3dpdGNoIChub3RpZmljYXRpb24pIHsKKyAgICAgICAgY2FzZSBB
WENoZWNrZWRTdGF0ZUNoYW5nZWQ6CisgICAgICAgICAgICBjbGllbnQtPmRpZENoYW5nZUFjY2Vz
c2liaWxpdHlPYmplY3RTdGF0ZShvYmopOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQVhDaGlsZHJlbkNoYW5nZWQ6CisgICAgICAgICAgICBjbGllbnQtPmRpZENoYW5nZUFjY2Vz
c2liaWxpdHlPYmplY3RDaGlsZHJlbihvYmopOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICB9CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlRm9jdXNlZFVJRWxlbWVu
dENoYW5nZWQoUmVuZGVyT2JqZWN0KiwgUmVuZGVyT2JqZWN0KikKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCShyZXZpc2lvbiA2NjAzMykKKysr
IFdlYkNvcmUvcGFnZS9jaHJvbWl1bS9DaHJvbWVDbGllbnRDaHJvbWl1bS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01NSw2ICs1NSw5IEBAIHB1YmxpYzoKIAogICAgIC8vIE5vdGlmaWVzIGVtYmVkZGVy
IHRoYXQgdGhlIHN0YXRlIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3RhdGUoQWNjZXNz
aWJpbGl0eU9iamVjdCopID0gMDsKKyAgICAKKyAgICAvLyBOb3RpZmllZCBlbWJlZGRlciB0aGF0
IHRoZSBjaGlsZHJlbiBvZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBoYXMgY2hhbmdlZC4KKyAg
ICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKEFjY2Vz
c2liaWxpdHlPYmplY3QqKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY2MjczKQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDEwLTA4LTI3ICBDaHJpcyBHdWls
bG9yeSAgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBWCBub3RpZmljYXRpb24gZm9yIGNoaWxk
cmVuQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDQ0NzIKKworICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChX
ZWJLaXQ6OldlYlZpZXdDbGllbnQ6OmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJl
bik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpDaHJvbWVDbGllbnRJbXBsOjpkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4p
OgorICAgICAgICAqIHNyYy9DaHJvbWVDbGllbnRJbXBsLmg6CisKIDIwMTAtMDgtMjcgIE1pY2hh
ZWwgTm9yZG1hbiAgPG1pY2hhZWxuQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAko
cmV2aXNpb24gNjYwMzMpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMjc3LDYgKzI3Nyw5IEBAIHB1YmxpYzoKIAogICAgIC8vIE5v
dGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIHN0YXRlIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0
IGhhcyBjaGFuZ2VkLgogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2Jq
ZWN0U3RhdGUoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpIHsgfQorICAgIAorICAgIC8v
IE5vdGlmaWVzIGVtYmVkZGVyIHRoYXQgdGhlIGNoaWxkcmVuIG9mIGFuIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IGhhcyBjaGFuZ2VkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmls
aXR5T2JqZWN0Q2hpbGRyZW4oY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpIHsgfQogCiAK
ICAgICAvLyBEZXZlbG9wZXIgdG9vbHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGll
bnRJbXBsLmNwcAkocmV2aXNpb24gNjYwMzMpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9t
ZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MTIsNiArNzEyLDEzIEBAIHZvaWQg
Q2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNjZXNzaWIKICAgICAgICAgbV93ZWJWaWV3LT5j
bGllbnQoKS0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKFdlYkFjY2Vzc2liaWxp
dHlPYmplY3Qob2JqKSk7CiB9CiAKK3ZvaWQgQ2hyb21lQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQWNj
ZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QqIG9i
aikKK3sKKyAgICAvLyBBbGVydCBhc3Npc3RpdmUgdGVjaG5vbG9neSBhYm91dCB0aGUgYWNjZXNz
aWJpbGl0eSBvYmplY3QgY2hpbGRyZW4gY2hhbmdlCisgICAgaWYgKG9iaikKKyAgICAgICAgbV93
ZWJWaWV3LT5jbGllbnQoKS0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKFdl
YkFjY2Vzc2liaWxpdHlPYmplY3Qob2JqKSk7Cit9CisKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKIE5vdGlmaWNhdGlvblByZXNlbnRlciogQ2hyb21lQ2xpZW50SW1wbDo6bm90aWZpY2F0aW9u
UHJlc2VudGVyKCkgY29uc3QKIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50
SW1wbC5oCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xp
ZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjcsNiArMTY3LDcgQEAgcHVibGljOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGhhbmRsZUV4dGVybmFsbHkpOwogICAgIHZp
cnR1YWwgdm9pZCBwb3B1cENsb3NlZChXZWJDb3JlOjpQb3B1cENvbnRhaW5lciogcG9wdXBDb250
YWluZXIpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0U3Rh
dGUoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOworICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4oV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9i
amVjdCopOwogCiAgICAgLy8gQ2hyb21lQ2xpZW50SW1wbDoKICAgICB2b2lkIHNldEN1cnNvcihj
b25zdCBXZWJDdXJzb3JJbmZvJiBjdXJzb3IpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNjYyNzMpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAor
MjAxMC0wOC0yNyAgQ2hyaXMgR3VpbGxvcnkgICA8Y2hyaXMuZ3VpbGxvcnlAZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVgg
bm90aWZpY2F0aW9uIGZvciBjaGlsZHJlbkNoYW5nZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NDcyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHA6CisgICAgICAgIChBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlcjo6QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpOgorICAgICAgICAoQWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0KToKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250
cm9sbGVyOjpnZXRSb290RWxlbWVudCk6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6ZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oOgorICAgICAgICAoQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OnNob3VsZER1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAg
ICAgICAoV2ViVmlld0hvc3Q6OmRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAx
MC0wNy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBFcmljIENhcmxzb24uCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiA2NjAzMykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsMTUgKzQ0
LDEyIEBAIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmlsaXR5Q28KICAgICA6IG1f
c2hlbGwoc2hlbGwpCiB7CiAKLSAgICBiaW5kTWV0aG9kKCJsb2dGb2N1c0V2ZW50cyIsCi0gICAg
ICAgICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHNDYWxsYmFjayk7Ci0g
ICAgYmluZE1ldGhvZCgibG9nU2Nyb2xsaW5nU3RhcnRFdmVudHMiLAotICAgICAgICAmQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OmxvZ1Njcm9sbGluZ1N0YXJ0RXZlbnRzQ2FsbGJhY2spOwotCi0g
ICAgYmluZFByb3BlcnR5KCJmb2N1c2VkRWxlbWVudCIsCi0gICAgICAgICZBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6Zm9jdXNlZEVsZW1lbnRHZXR0ZXJDYWxsYmFjayk7Ci0gICAgYmluZFByb3Bl
cnR5KCJyb290RWxlbWVudCIsCi0gICAgICAgICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cm9v
dEVsZW1lbnRHZXR0ZXJDYWxsYmFjayk7CisgICAgYmluZE1ldGhvZCgiZHVtcEFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25zIiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpkdW1wQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbnMpOworICAgIGJpbmRNZXRob2QoImxvZ0ZvY3VzRXZlbnRzIiwgJkFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dGb2N1c0V2ZW50c0NhbGxiYWNrKTsKKyAgICBiaW5k
TWV0aG9kKCJsb2dTY3JvbGxpbmdTdGFydEV2ZW50cyIsICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cjo6bG9nU2Nyb2xsaW5nU3RhcnRFdmVudHNDYWxsYmFjayk7CisKKyAgICBiaW5kUHJvcGVydHko
ImZvY3VzZWRFbGVtZW50IiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVu
dEdldHRlckNhbGxiYWNrKTsKKyAgICBiaW5kUHJvcGVydHkoInJvb3RFbGVtZW50IiwgJkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudEdldHRlckNhbGxiYWNrKTsKIAogICAgIGJp
bmRGYWxsYmFja01ldGhvZCgmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmZhbGxiYWNrQ2FsbGJh
Y2spOwogfQpAQCAtNjgsNiArNjUsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpy
ZXNldCgpCiAgICAgbV9yb290RWxlbWVudCA9IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QoKTsKICAg
ICBtX2ZvY3VzZWRFbGVtZW50ID0gV2ViQWNjZXNzaWJpbGl0eU9iamVjdCgpOwogICAgIG1fZWxl
bWVudHMuY2xlYXIoKTsKKyAgICAKKyAgICBtX2R1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9u
cyA9IGZhbHNlOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpzZXRGb2N1c2Vk
RWxlbWVudChjb25zdCBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0JiBmb2N1c2VkRWxlbWVudCkKQEAg
LTg5LDYgKzg4LDEyIEBAIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQqIEFjY2Vzc2liaWxpdHlDb24K
ICAgICByZXR1cm4gbV9lbGVtZW50cy5jcmVhdGVSb290KG1fcm9vdEVsZW1lbnQpOwogfQogCit2
b2lkIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpkdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bnMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQoreworICAgIG1f
ZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zID0gdHJ1ZTsKKyAgICByZXN1bHQtPnNldE51
bGwoKTsKK30KKwogdm9pZCBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nRm9jdXNFdmVudHND
YWxsYmFjayhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCiB7CiAg
ICAgLy8gQXMgb2YgcjQ5MDMxLCB0aGlzIGlzIG5vdCBiZWluZyB1c2VkIHVwc3RyZWFtLgpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDggKzUyLDE5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZvY3Vz
ZWRFbGVtZW50KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQqIGdldEZvY3VzZWRFbGVtZW50KCk7CiAgICAgQWNjZXNzaWJp
bGl0eVVJRWxlbWVudCogZ2V0Um9vdEVsZW1lbnQoKTsKKyAgICAKKyAgICAvLyBUaGlzIGZ1bmN0
aW9uIHNldHMgYSBmbGFnIHRoYXQgdGVsbHMgdGhlIHRlc3Rfc2hlbGwgdG8gZHVtcCBhbGwgCisg
ICAgLy8gYWNjZXNzaWJpbGl0eSBub3RpZmljYXRpb25zLgorICAgIHZvaWQgZHVtcEFjY2Vzc2li
aWxpdHlOb3RpZmljYXRpb25zKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKTsK
KworcHVibGljOgorICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgbm90IGV4cG9zZWQg
dG8gSmF2YVNjcmlwdC4KKyAgICBib29sIHNob3VsZER1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9ucygpIHsgcmV0dXJuIG1fZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zOyB9CiAKIHBy
aXZhdGU6CisgICAgLy8gSWYgdHJ1ZSwgdGhlIHRlc3Rfc2hlbGwgd2lsbCBkdW1wIGFsbCBhY2Nl
c3NpYmlsaXR5IG5vdGlmaWNhdGlvbnMuCisgICAgYm9vbCBtX2R1bXBBY2Nlc3NpYmlsaXR5Tm90
aWZpY2F0aW9uczsKKwogICAgIC8vIEJvdW5kIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMKICAgICB2
b2lkIGxvZ0ZvY3VzRXZlbnRzQ2FsbGJhY2soY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFy
aWFudCopOwogICAgIHZvaWQgbG9nU2Nyb2xsaW5nU3RhcnRFdmVudHNDYWxsYmFjayhjb25zdCBD
cHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCShyZXZpc2lvbiA2NjAz
MykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDg5LDYgKzQ4OSwxMiBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpm
b2N1c0FjY2Vzc2liaWxpdHlPYmplCiAgICAgbV9zaGVsbC0+YWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIoKS0+c2V0Rm9jdXNlZEVsZW1lbnQob2JqZWN0KTsKIH0KIAordm9pZCBXZWJWaWV3SG9zdDo6
ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKGNvbnN0IFdlYkFjY2Vzc2liaWxp
dHlPYmplY3QmIG9iamVjdCkKK3sKKyAgICBpZiAobV9zaGVsbC0+YWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIoKS0+c2hvdWxkRHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKCkpCisgICAgICAg
IHByaW50ZigiZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuIC0gbmV3IGNvdW50
OiAlZFxuIiwgb2JqZWN0LmNoaWxkQ291bnQoKSk7Cit9CisKIFdlYk5vdGlmaWNhdGlvblByZXNl
bnRlciogV2ViVmlld0hvc3Q6Om5vdGlmaWNhdGlvblByZXNlbnRlcigpCiB7CiAgICAgcmV0dXJu
IG1fc2hlbGwtPm5vdGlmaWNhdGlvblByZXNlbnRlcigpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCShyZXZpc2lvbiA2NjAz
MykKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1
YmxpYyBXZWJLaXQ6OldlYlZpCiAgICAgdmlydHVhbCBpbnQgaGlzdG9yeUJhY2tMaXN0Q291bnQo
KTsKICAgICB2aXJ0dWFsIGludCBoaXN0b3J5Rm9yd2FyZExpc3RDb3VudCgpOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c0FjY2Vzc2liaWxpdHlPYmplY3QoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0Jik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlP
YmplY3RDaGlsZHJlbihjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKICAg
ICB2aXJ0dWFsIFdlYktpdDo6V2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBub3RpZmljYXRpb25Q
cmVzZW50ZXIoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViR2VvbG9jYXRpb25TZXJ2aWNlKiBn
ZW9sb2NhdGlvblNlcnZpY2UoKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyKiBzcGVlY2hJbnB1dENvbnRyb2xsZXIoV2ViS2l0OjpXZWJTcGVlY2hJbnB1dExp
c3RlbmVyKik7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NjI3NykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTA4LTI3ICBDaHJpcyBH
dWlsbG9yeSAgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBWCBub3RpZmljYXRpb24gZm9yIGNo
aWxkcmVuQ2hhbmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NDQ0NzIKKworICAgICAgICBUZXN0IGJ5IHJ1bm5pbmcgcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sIHdpdGhpbiBj
aHJvbWl1bSdzIERSVAorCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0
eTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9jaGls
ZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmlj
YXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vZHJ0X2V4cGVj
dGF0aW9ucy50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0OgorCiAyMDEwLTA4LTI3ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgdXBkYXRpbmcgY2hyb21pdW0gdGVzdCBleHBlY3RhdGlvbnMu
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9kcnRfZXhwZWN0YXRpb25zLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9kcnRfZXhwZWN0
YXRpb25zLnR4dAkocmV2aXNpb24gNjYwMzMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9kcnRfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzU0LDYgKzM1NCw3
IEBAIEJVR19EUlQgV0lOIE1BQyBMSU5VWCA6IGZhc3QvZG9tL0RldmljZU0KIEJVR19EUlQgV0lO
IE1BQyBMSU5VWCA6IGZhc3QvZG9tL0RldmljZU1vdGlvbi9vcHRpb25hbC1ldmVudC1wcm9wZXJ0
aWVzLmh0bWwgPSBURVhUCiBCVUdfRFJUIFdJTiBNQUMgTElOVVggOiBmYXN0L2V2ZW50cy9zcGVj
aWFsLWtleS1ldmVudHMtaW4taW5wdXQtdGV4dC5odG1sID0gVEVYVAogQlVHX0RSVCBXSU4gTUFD
IDogZmFzdC9kb20vR2VvbG9jYXRpb24vZGVsYXllZC1wZXJtaXNzaW9uLWFsbG93ZWQtZm9yLW11
bHRpcGxlLXJlcXVlc3RzLmh0bWwgPSBUSU1FT1VUCitCVUdfRFJUIDogcGxhdGZvcm0vY2hyb21p
dW0vYWNjZXNzaWJpbGl0eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sID0gUEFT
UwogCiAvLyBXaW5kb3dzIGZhaWx1cmVzIGZyb20gdGhlIG5ldyBidWlsZCBzbGF2ZSAoc29tZSBt
YXkgYmUgVmlzdGEvWFAgZGlmZnMpCiBCVUdfRFJUIFdJTiA6IGNzczIuMS90MDgwNS1jNTUxOS1i
cmRyLXItMDEtZS5odG1sID0gSU1BR0UrVEVYVApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gNjYwMzMp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTk1MSw2ICs5NTEsOSBAQCBCVUcxMDMyMiBERUZFUiBTS0lQIDog
YWNjZXNzaWJpbGl0eSA9IFBBCiBCVUcxMDMyMiBERUZFUiBTS0lQIDogcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkgPSBQQVNTIEZBSUwKIEJVRzEwMzIyIERFRkVSIFNLSVAgOiBwbGF0Zm9ybS93
aW4vYWNjZXNzaWJpbGl0eSA9IFBBU1MgRkFJTAogCisvLyBGdW5jdGlvbmFsaXR5IGlzIHN1cHBv
cnRlZCBpbiBEUlQgYnV0IG5vdCBUZXN0U2hlbGwKK1dPTlRGSVggU0tJUCA6IHBsYXRmb3JtL2No
cm9taXVtL2FjY2Vzc2liaWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbCA9
IEZBSUwKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIE90aGVyIGZhaWx1cmVzCiAvLyAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9jaGlsZHJlbi1j
aGFuZ2VkLW5vdGlmaWNhdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlm
aWNhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitkaWRDaGFuZ2VBY2Nlc3Np
YmlsaXR5T2JqZWN0Q2hpbGRyZW4gLSBuZXcgY291bnQ6IDEKK1RoaXMgdGVzdHMgdGhhdCBjaHJv
bWl1bSBjb3JyZWN0bHkgcmVjaWV2ZXMgbm90aWZpY2F0aW9ucyB3aGVuIHRoZSBjaGlsZHJlbiBv
ZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBjaGFuZ2UuCit0ZXh0CkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZp
Y2F0aW9uLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
YWNjZXNzaWJpbGl0eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9jaGls
ZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3
IEBACis8aHRtbD4KKzxib2R5PgorVGhpcyB0ZXN0cyB0aGF0IGNocm9taXVtIGNvcnJlY3RseSBy
ZWNpZXZlcyBub3RpZmljYXRpb25zIHdoZW4gdGhlIGNoaWxkcmVuIG9mIGFuIGFjY2Vzc2liaWxp
dHkgb2JqZWN0IGNoYW5nZS4KKzxkaXY+PC9kaXY+Cis8c2NyaXB0PgorICAgIGZ1bmN0aW9uIHRl
c3REb25lKCkgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cisg
ICAgfQorICAgIAorICAgIGZ1bmN0aW9uIHRlc3QoKSB7CisgICAgICAgIGlmICghd2luZG93Lmxh
eW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBpZiAoIWFjY2Vzc2liaWxp
dHlDb250cm9sbGVyIHx8ICFhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5kdW1wQWNjZXNzaWJpbGl0
eU5vdGlmaWNhdGlvbnMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgICAKKyAgICAgICAgLy8gQWNjZXNz
IGFjY2Vzc2liaWxpdHkgb2JqZWN0IHRoYXQgd2lsbCBiZSBkZWxldGVkLgorICAgICAgICBkb2N1
bWVudC5ib2R5LmZvY3VzKCk7CisgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgCisgICAgICAgIGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmR1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucygpOworICAgICAgICAK
KyAgICAgICAgLy8gSW5zZXJ0IGEgY2hpbGQgZWxlbWVudCBvbiB0aGUgZGl2LiBUaGlzIGdlbmVy
YXRlcyBhbiBhY2Nlc3NpYmlsaXR5IGNoaWxkcmVkIGNoYW5nZWQgbm90aWZpY2F0aW9uLgorICAg
ICAgICBkb2N1bWVudC5ib2R5LmNoaWxkcmVuWzBdLmlubmVySFRNTCA9ICJ0ZXh0IjsKKworICAg
ICAgICAvLyBVc2Ugc2V0VGltZW91dCBzbyB0aGF0IGFzeW5jaHJvbm91cyBhY2Nlc3NpYmlsaXR5
IG5vdGlmaWNhdGlvbnMgY2FuIGJlIHByb2Nlc3NlZC4KKyAgICAgICAgc2V0VGltZW91dCh0ZXN0
RG9uZSwgMCk7CisgICAgfQorCisgICAgdGVzdCgpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0
bWw+Cg==
</data>
<flag name="review"
          id="54657"
          type_id="1"
          status="-"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65807</attachid>
            <date>2010-08-27 21:07:50 -0700</date>
            <delta_ts>2010-08-28 17:17:50 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>MyPatch.txt</filename>
            <type>text/plain</type>
            <size>18216</size>
            <attacher name="Chris Guillory">ctguil</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NjI3MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMTAtMDgtMjcgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxs
b3J5QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ3MgorCisgICAgICAg
IFRlc3QgYnkgcnVubmluZyBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVu
LWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgd2l0aGluIGNocm9taXVtJ3MgRFJUCisKKyAgICAg
ICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFY
T2JqZWN0Q2FjaGU6Oik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9B
WE9iamVjdENhY2hlQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNo
ZTo6cG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBwYWdlL2Nocm9taXVtL0No
cm9tZUNsaWVudENocm9taXVtLmg6CisKIDIwMTAtMDgtMjcgIFNpbW9uIEZyYXNlciAgPHNpbW9u
LmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KSW5k
ZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAkocmV2aXNpb24gNjYwMzMpCisr
KyBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMDcsNiArMTA3LDcgQEAgcHVibGljOgogICAgIGVudW0gQVhOb3RpZmljYXRpb24gewogICAg
ICAgICBBWEFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkLAogICAgICAgICBBWENoZWNrZWRTdGF0ZUNo
YW5nZWQsCisgICAgICAgIEFYQ2hpbGRyZW5DaGFuZ2VkLAogICAgICAgICBBWEZvY3VzZWRVSUVs
ZW1lbnRDaGFuZ2VkLAogICAgICAgICBBWExheW91dENvbXBsZXRlLAogICAgICAgICBBWExvYWRD
b21wbGV0ZSwKSW5kZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjM2LDYgKzMyMzYsOCBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVu
CiAgICAgaWYgKCFtX3JlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgYm9vbCBz
ZW50Q2hpbGRyZW5DaGFuZ2VkID0gZmFsc2U7CisgICAgCiAgICAgLy8gR28gdXAgdGhlIGFjY2Vz
c2liaWxpdHkgcGFyZW50IGNoYWluLCBidXQgb25seSBpZiB0aGUgZWxlbWVudCBhbHJlYWR5IGV4
aXN0cy4gVGhpcyBtZXRob2QgaXMKICAgICAvLyBjYWxsZWQgZHVyaW5nIHJlbmRlciBsYXlvdXRz
LCBtaW5pbWFsIHdvcmsgc2hvdWxkIGJlIGRvbmUuIAogICAgIC8vIElmIEFYIGVsZW1lbnRzIGFy
ZSBjcmVhdGVkIG5vdywgdGhleSBjb3VsZCBpbnRlcnJvZ2F0ZSB0aGUgcmVuZGVyIHRyZWUgd2hp
bGUgaXQncyBpbiBhIGZ1bmt5IHN0YXRlLgpAQCAtMzI0NSw2ICszMjQ3LDEzIEBAIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRyZW4KICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAKICAgICAgICAgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCogYXhQYXJlbnQgPSBz
dGF0aWNfY2FzdDxBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Kj4ocGFyZW50KTsKKyAgICAgICAg
CisgICAgICAgIC8vIFNlbmQgdGhlIGNoaWxkcmVuIGNoYW5nZWQgbm90aWZpY2F0aW9uIG9uIHRo
ZSBmaXJzdCBhY2Nlc3NpYmlsaXR5IHJlbmRlciBvYmplY3QgYW5jZXN0b3IuCisgICAgICAgIGlm
ICghc2VudENoaWxkcmVuQ2hhbmdlZCkgeworICAgICAgICAgICAgYXhPYmplY3RDYWNoZSgpLT5w
b3N0Tm90aWZpY2F0aW9uKGF4UGFyZW50LT5yZW5kZXJlcigpLCBBWE9iamVjdENhY2hlOjpBWENo
aWxkcmVuQ2hhbmdlZCwgdHJ1ZSk7CisgICAgICAgICAgICBzZW50Q2hpbGRyZW5DaGFuZ2VkID0g
dHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gT25seSBkbyB3b3JrIGlmIHRo
ZSBjaGlsZHJlbiBoYXZlbid0IGJlZW4gbWFya2VkIGRpcnR5LiBUaGlzIGhhcyB0aGUgZWZmZWN0
IG9mIGJsb2NraW5nCiAgICAgICAgIC8vIGZ1dHVyZSBsaXZlIHJlZ2lvbiBjaGFuZ2Ugbm90aWZp
Y2F0aW9ucyB1bnRpbCB0aGUgQVggdHJlZSBoYXMgYmVlbiBhY2Nlc3NlZCBhZ2Fpbi4gVGhpcwog
ICAgICAgICAvLyBpcyBhIGdvb2QgcGVyZm9ybWFuY2Ugd2luIGZvciBhbGwgcGFydGllcy4KSW5k
ZXg6IFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0u
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYWNjZXNzaWJpbGl0eS9jaHJvbWl1bS9BWE9iamVj
dENhY2hlQ2hyb21pdW0uY3BwCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYkNvcmUvYWNjZXNzaWJp
bGl0eS9jaHJvbWl1bS9BWE9iamVjdENhY2hlQ2hyb21pdW0uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NiwxNSArNTYsMjAgQEAgdm9pZCBBWE9iamVjdENhY2hlOjphdHRhY2hXcmFwcGVyKEFjY2Vz
cwogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKLSAgICBp
ZiAobm90aWZpY2F0aW9uICE9IEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZCkKLSAgICAgICAgcmV0dXJu
OwotCiAgICAgaWYgKCFvYmogfHwgIW9iai0+ZG9jdW1lbnQoKSB8fCAhb2JqLT5kb2N1bWVudEZy
YW1lVmlldygpKQogICAgICAgICByZXR1cm47CiAKICAgICBDaHJvbWVDbGllbnRDaHJvbWl1bSog
Y2xpZW50ID0gdG9DaHJvbWVDbGllbnRDaHJvbWl1bShvYmotPmRvY3VtZW50RnJhbWVWaWV3KCkp
OwotICAgIGlmIChjbGllbnQpCi0gICAgICAgIGNsaWVudC0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0
eU9iamVjdFN0YXRlKG9iaik7CisgICAgaWYgKGNsaWVudCkgeworICAgICAgICBzd2l0Y2ggKG5v
dGlmaWNhdGlvbikgeworICAgICAgICBjYXNlIEFYQ2hlY2tlZFN0YXRlQ2hhbmdlZDoKKyAgICAg
ICAgICAgIGNsaWVudC0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdFN0YXRlKG9iaik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBWENoaWxkcmVuQ2hhbmdlZDoKKyAgICAg
ICAgICAgIGNsaWVudC0+ZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKG9iaik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KIH0KIAogdm9pZCBBWE9iamVj
dENhY2hlOjpoYW5kbGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChSZW5kZXJPYmplY3QqLCBSZW5k
ZXJPYmplY3QqKQpJbmRleDogV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENocm9t
aXVtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9tZUNsaWVudENo
cm9taXVtLmgJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViQ29yZS9wYWdlL2Nocm9taXVtL0Nocm9t
ZUNsaWVudENocm9taXVtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgcHVibGlj
OgogCiAgICAgLy8gTm90aWZpZXMgZW1iZWRkZXIgdGhhdCB0aGUgc3RhdGUgb2YgYW4gYWNjZXNz
aWJpbGl0eSBvYmplY3QgaGFzIGNoYW5nZWQuCiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFj
Y2Vzc2liaWxpdHlPYmplY3RTdGF0ZShBY2Nlc3NpYmlsaXR5T2JqZWN0KikgPSAwOworICAgIAor
ICAgIC8vIE5vdGlmaWVkIGVtYmVkZGVyIHRoYXQgdGhlIGNoaWxkcmVuIG9mIGFuIGFjY2Vzc2li
aWxpdHkgb2JqZWN0IGhhcyBjaGFuZ2VkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VBY2Nl
c3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4oQWNjZXNzaWJpbGl0eU9iamVjdCopID0gMDsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjYyNzMp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTYgQEAKKzIwMTAtMDgtMjcgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxsb3J5QGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ3MgorCisgICAgICAgICogcHVibGlj
L1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6ZGlkQ2hh
bmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKToKKyAgICAgICAgKiBzcmMvQ2hyb21lQ2xp
ZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudEltcGw6OmRpZENoYW5n
ZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbik6CisgICAgICAgICogc3JjL0Nocm9tZUNsaWVu
dEltcGwuaDoKKwogMjAxMC0wOC0yNyAgTWljaGFlbCBOb3JkbWFuICA8bWljaGFlbG5AZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCShyZXZpc2lvbiA2NjAzMykKKysrIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzcsNiAr
Mjc3LDkgQEAgcHVibGljOgogCiAgICAgLy8gTm90aWZpZXMgZW1iZWRkZXIgdGhhdCB0aGUgc3Rh
dGUgb2YgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgaGFzIGNoYW5nZWQuCiAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RTdGF0ZShjb25zdCBXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0JikgeyB9CisgICAgCisgICAgLy8gTm90aWZpZXMgZW1iZWRkZXIgdGhhdCB0aGUg
Y2hpbGRyZW4gb2YgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgaGFzIGNoYW5nZWQuCisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbihjb25zdCBXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0JikgeyB9CiAKIAogICAgIC8vIERldmVsb3BlciB0b29scyAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL0Nocm9tZUNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA2NjAzMykK
KysrIFdlYktpdC9jaHJvbWl1bS9zcmMvQ2hyb21lQ2xpZW50SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTcxMiw2ICs3MTIsMTMgQEAgdm9pZCBDaHJvbWVDbGllbnRJbXBsOjpkaWRDaGFuZ2VB
Y2Nlc3NpYgogICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5kaWRDaGFuZ2VBY2Nlc3NpYmls
aXR5T2JqZWN0U3RhdGUoV2ViQWNjZXNzaWJpbGl0eU9iamVjdChvYmopKTsKIH0KIAordm9pZCBD
aHJvbWVDbGllbnRJbXBsOjpkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4oV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqKQoreworICAgIC8vIEFsZXJ0IGFzc2lzdGl2
ZSB0ZWNobm9sb2d5IGFib3V0IHRoZSBhY2Nlc3NpYmlsaXR5IG9iamVjdCBjaGlsZHJlbiBjaGFu
Z2UKKyAgICBpZiAob2JqKQorICAgICAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5kaWRDaGFuZ2VB
Y2Nlc3NpYmlsaXR5T2JqZWN0Q2hpbGRyZW4oV2ViQWNjZXNzaWJpbGl0eU9iamVjdChvYmopKTsK
K30KKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQogTm90aWZpY2F0aW9uUHJlc2VudGVyKiBD
aHJvbWVDbGllbnRJbXBsOjpub3RpZmljYXRpb25QcmVzZW50ZXIoKSBjb25zdAogewpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHJldmlzaW9uIDY2MDMzKQorKysg
V2ViS2l0L2Nocm9taXVtL3NyYy9DaHJvbWVDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE2Nyw2ICsxNjcsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
b2wgaGFuZGxlRXh0ZXJuYWxseSk7CiAgICAgdmlydHVhbCB2b2lkIHBvcHVwQ2xvc2VkKFdlYkNv
cmU6OlBvcHVwQ29udGFpbmVyKiBwb3B1cENvbnRhaW5lcik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RTdGF0ZShXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2Jq
ZWN0Kik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGls
ZHJlbihXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAKICAgICAvLyBDaHJvbWVDbGll
bnRJbXBsOgogICAgIHZvaWQgc2V0Q3Vyc29yKGNvbnN0IFdlYkN1cnNvckluZm8mIGN1cnNvcik7
CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCShyZXZpc2lvbiA2NjI3MykKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEwLTA4LTI3ICBDaHJpcyBHdWlsbG9yeSAg
IDxjaHJpcy5ndWlsbG9yeUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBBWCBub3RpZmljYXRpb24gZm9yIGNoaWxkcmVuQ2hh
bmdlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ0
NzIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcik6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6cmVzZXQp
OgorICAgICAgICAoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmdldFJvb3RFbGVtZW50KToKKyAg
ICAgICAgKEFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpkdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2hvdWxkRHVt
cEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChXZWJWaWV3SG9zdDo6ZGlkQ2hhbmdl
QWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDEwLTA3LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9i
bGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgQ2FybHNvbi4KSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCwxNSArNDQsMTIgQEAgQWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXI6OkFjY2Vzc2liaWxpdHlDbwogICAgIDogbV9zaGVsbChzaGVsbCkKIHsKIAotICAgIGJpbmRN
ZXRob2QoImxvZ0ZvY3VzRXZlbnRzIiwKLSAgICAgICAgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
Ojpsb2dGb2N1c0V2ZW50c0NhbGxiYWNrKTsKLSAgICBiaW5kTWV0aG9kKCJsb2dTY3JvbGxpbmdT
dGFydEV2ZW50cyIsCi0gICAgICAgICZBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6bG9nU2Nyb2xs
aW5nU3RhcnRFdmVudHNDYWxsYmFjayk7Ci0KLSAgICBiaW5kUHJvcGVydHkoImZvY3VzZWRFbGVt
ZW50IiwKLSAgICAgICAgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpmb2N1c2VkRWxlbWVudEdl
dHRlckNhbGxiYWNrKTsKLSAgICBiaW5kUHJvcGVydHkoInJvb3RFbGVtZW50IiwKLSAgICAgICAg
JkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpyb290RWxlbWVudEdldHRlckNhbGxiYWNrKTsKKyAg
ICBiaW5kTWV0aG9kKCJkdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbnMiLCAmQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmR1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyk7CisgICAgYmlu
ZE1ldGhvZCgibG9nRm9jdXNFdmVudHMiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OmxvZ0Zv
Y3VzRXZlbnRzQ2FsbGJhY2spOworICAgIGJpbmRNZXRob2QoImxvZ1Njcm9sbGluZ1N0YXJ0RXZl
bnRzIiwgJkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOjpsb2dTY3JvbGxpbmdTdGFydEV2ZW50c0Nh
bGxiYWNrKTsKKworICAgIGJpbmRQcm9wZXJ0eSgiZm9jdXNlZEVsZW1lbnQiLCAmQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXI6OmZvY3VzZWRFbGVtZW50R2V0dGVyQ2FsbGJhY2spOworICAgIGJpbmRQ
cm9wZXJ0eSgicm9vdEVsZW1lbnQiLCAmQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJvb3RFbGVt
ZW50R2V0dGVyQ2FsbGJhY2spOwogCiAgICAgYmluZEZhbGxiYWNrTWV0aG9kKCZBY2Nlc3NpYmls
aXR5Q29udHJvbGxlcjo6ZmFsbGJhY2tDYWxsYmFjayk7CiB9CkBAIC02OCw2ICs2NSw4IEBAIHZv
aWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnJlc2V0KCkKICAgICBtX3Jvb3RFbGVtZW50ID0g
V2ViQWNjZXNzaWJpbGl0eU9iamVjdCgpOwogICAgIG1fZm9jdXNlZEVsZW1lbnQgPSBXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0KCk7CiAgICAgbV9lbGVtZW50cy5jbGVhcigpOworICAgIAorICAgIG1f
ZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zID0gZmFsc2U7CiB9CiAKIHZvaWQgQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6OnNldEZvY3VzZWRFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxp
dHlPYmplY3QmIGZvY3VzZWRFbGVtZW50KQpAQCAtODksNiArODgsMTIgQEAgQWNjZXNzaWJpbGl0
eVVJRWxlbWVudCogQWNjZXNzaWJpbGl0eUNvbgogICAgIHJldHVybiBtX2VsZW1lbnRzLmNyZWF0
ZVJvb3QobV9yb290RWxlbWVudCk7CiB9CiAKK3ZvaWQgQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6
OmR1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucyhjb25zdCBDcHBBcmd1bWVudExpc3QmLCBD
cHBWYXJpYW50KiByZXN1bHQpCit7CisgICAgbV9kdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bnMgPSB0cnVlOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOworfQorCiB2b2lkIEFjY2Vzc2liaWxp
dHlDb250cm9sbGVyOjpsb2dGb2N1c0V2ZW50c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlz
dCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKICAgICAvLyBBcyBvZiByNDkwMzEsIHRoaXMgaXMg
bm90IGJlaW5nIHVzZWQgdXBzdHJlYW0uCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9BY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgJ
KHJldmlzaW9uIDY2MDMzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsOCArNTIsMTkg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0Rm9jdXNlZEVsZW1lbnQoY29uc3QgV2ViS2l0OjpXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0Jik7CiAgICAgQWNjZXNzaWJpbGl0eVVJRWxlbWVudCogZ2V0Rm9j
dXNlZEVsZW1lbnQoKTsKICAgICBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KiBnZXRSb290RWxlbWVu
dCgpOworICAgIAorICAgIC8vIFRoaXMgZnVuY3Rpb24gc2V0cyBhIGZsYWcgdGhhdCB0ZWxscyB0
aGUgdGVzdF9zaGVsbCB0byBkdW1wIGFsbCAKKyAgICAvLyBhY2Nlc3NpYmlsaXR5IG5vdGlmaWNh
dGlvbnMuCisgICAgdm9pZCBkdW1wQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbnMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopOworCitwdWJsaWM6CisgICAgLy8gVGhlIGZvbGxv
d2luZyBtZXRob2RzIGFyZSBub3QgZXhwb3NlZCB0byBKYXZhU2NyaXB0LgorICAgIGJvb2wgc2hv
dWxkRHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zKCkgeyByZXR1cm4gbV9kdW1wQWNjZXNz
aWJpbGl0eU5vdGlmaWNhdGlvbnM7IH0KIAogcHJpdmF0ZToKKyAgICAvLyBJZiB0cnVlLCB0aGUg
dGVzdF9zaGVsbCB3aWxsIGR1bXAgYWxsIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9ucy4KKyAg
ICBib29sIG1fZHVtcEFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25zOworCiAgICAgLy8gQm91bmQg
bWV0aG9kcyBhbmQgcHJvcGVydGllcwogICAgIHZvaWQgbG9nRm9jdXNFdmVudHNDYWxsYmFjayhj
b25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50Kik7CiAgICAgdm9pZCBsb2dTY3JvbGxp
bmdTdGFydEV2ZW50c0NhbGxiYWNrKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KTsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHAJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00ODksNiAr
NDg5LDEyIEBAIHZvaWQgV2ViVmlld0hvc3Q6OmZvY3VzQWNjZXNzaWJpbGl0eU9iamUKICAgICBt
X3NoZWxsLT5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpLT5zZXRGb2N1c2VkRWxlbWVudChvYmpl
Y3QpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpkaWRDaGFuZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0
Q2hpbGRyZW4oY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQoreworICAgIGlm
IChtX3NoZWxsLT5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpLT5zaG91bGREdW1wQWNjZXNzaWJp
bGl0eU5vdGlmaWNhdGlvbnMoKSkKKyAgICAgICAgcHJpbnRmKCJkaWRDaGFuZ2VBY2Nlc3NpYmls
aXR5T2JqZWN0Q2hpbGRyZW4gLSBuZXcgY291bnQ6ICVkXG4iLCBvYmplY3QuY2hpbGRDb3VudCgp
KTsKK30KKwogV2ViTm90aWZpY2F0aW9uUHJlc2VudGVyKiBXZWJWaWV3SG9zdDo6bm90aWZpY2F0
aW9uUHJlc2VudGVyKCkKIHsKICAgICByZXR1cm4gbV9zaGVsbC0+bm90aWZpY2F0aW9uUHJlc2Vu
dGVyKCk7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmgJKHJldmlzaW9uIDY2MDMzKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEy
Niw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmkKICAgICB2aXJ0
dWFsIGludCBoaXN0b3J5QmFja0xpc3RDb3VudCgpOwogICAgIHZpcnR1YWwgaW50IGhpc3RvcnlG
b3J3YXJkTGlzdENvdW50KCk7CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzQWNjZXNzaWJpbGl0eU9i
amVjdChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmplY3QmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQ2hhbmdlQWNjZXNzaWJpbGl0eU9iamVjdENoaWxkcmVuKGNvbnN0IFdlYktpdDo6
V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJOb3RpZmlj
YXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpOwogICAgIHZpcnR1YWwgV2Vi
S2l0OjpXZWJHZW9sb2NhdGlvblNlcnZpY2UqIGdlb2xvY2F0aW9uU2VydmljZSgpOwogICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXIqIHNwZWVjaElucHV0Q29udHJv
bGxlcihXZWJLaXQ6OldlYlNwZWVjaElucHV0TGlzdGVuZXIqKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDY2Mjc3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTAtMDgtMjcgIENocmlzIEd1aWxsb3J5ICAgPGNocmlzLmd1aWxsb3J5QGdv
b2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIEFYIG5vdGlmaWNhdGlvbiBmb3IgY2hpbGRyZW5DaGFuZ2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDQ3MgorCisgICAgICAgIFRlc3Qg
YnkgcnVubmluZyBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5n
ZWQtbm90aWZpY2F0aW9uLmh0bWwgd2l0aGluIGNocm9taXVtJ3MgRFJUCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJp
bGl0eS9jaGlsZHJlbi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9jaHJvbWl1bS9kcnRfZXhwZWN0YXRpb25zLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMDgtMjcgIFRvbnkg
Q2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCB1cGRhdGlu
ZyBjaHJvbWl1bSB0ZXN0IGV4cGVjdGF0aW9ucy4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL2RydF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtL2RydF9leHBlY3RhdGlvbnMudHh0CShyZXZpc2lvbiA2NjAzMykK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2RydF9leHBlY3RhdGlvbnMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zNTQsNiArMzU0LDcgQEAgQlVHX0RSVCBXSU4gTUFDIExJTlVYIDog
ZmFzdC9kb20vRGV2aWNlTQogQlVHX0RSVCBXSU4gTUFDIExJTlVYIDogZmFzdC9kb20vRGV2aWNl
TW90aW9uL29wdGlvbmFsLWV2ZW50LXByb3BlcnRpZXMuaHRtbCA9IFRFWFQKIEJVR19EUlQgV0lO
IE1BQyBMSU5VWCA6IGZhc3QvZXZlbnRzL3NwZWNpYWwta2V5LWV2ZW50cy1pbi1pbnB1dC10ZXh0
Lmh0bWwgPSBURVhUCiBCVUdfRFJUIFdJTiBNQUMgOiBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kZWxh
eWVkLXBlcm1pc3Npb24tYWxsb3dlZC1mb3ItbXVsdGlwbGUtcmVxdWVzdHMuaHRtbCA9IFRJTUVP
VVQKK0JVR19EUlQgOiBwbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNo
YW5nZWQtbm90aWZpY2F0aW9uLmh0bWwgPSBQQVNTCiAKIC8vIFdpbmRvd3MgZmFpbHVyZXMgZnJv
bSB0aGUgbmV3IGJ1aWxkIHNsYXZlIChzb21lIG1heSBiZSBWaXN0YS9YUCBkaWZmcykKIEJVR19E
UlQgV0lOIDogY3NzMi4xL3QwODA1LWM1NTE5LWJyZHItci0wMS1lLmh0bWwgPSBJTUFHRStURVhU
CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBl
Y3RhdGlvbnMudHh0CShyZXZpc2lvbiA2NjAzMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTUxLDYgKzk1
MSw5IEBAIEJVRzEwMzIyIERFRkVSIFNLSVAgOiBhY2Nlc3NpYmlsaXR5ID0gUEEKIEJVRzEwMzIy
IERFRkVSIFNLSVAgOiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eSA9IFBBU1MgRkFJTAogQlVH
MTAzMjIgREVGRVIgU0tJUCA6IHBsYXRmb3JtL3dpbi9hY2Nlc3NpYmlsaXR5ID0gUEFTUyBGQUlM
CiAKKy8vIEZ1bmN0aW9uYWxpdHkgaXMgc3VwcG9ydGVkIGluIERSVCBidXQgbm90IFRlc3RTaGVs
bAorV09OVEZJWCBTS0lQIDogcGxhdGZvcm0vY2hyb21pdW0vYWNjZXNzaWJpbGl0eS9jaGlsZHJl
bi1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sID0gRkFJTAorCiAvLyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gT3Ro
ZXIgZmFpbHVyZXMKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3Np
YmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2liaWxpdHkvY2hp
bGRyZW4tY2hhbmdlZC1ub3RpZmljYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMgQEAKK2RpZENoYW5nZUFjY2Vzc2liaWxpdHlPYmplY3RDaGlsZHJlbiAtIG5ldyBj
b3VudDogMQorVGhpcyB0ZXN0cyB0aGF0IGNocm9taXVtIGNvcnJlY3RseSByZWNpZXZlcyBub3Rp
ZmljYXRpb25zIHdoZW4gdGhlIGNoaWxkcmVuIG9mIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGNo
YW5nZS4KK3RleHQKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2FjY2Vzc2li
aWxpdHkvY2hpbGRyZW4tY2hhbmdlZC1ub3RpZmljYXRpb24uaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5n
ZWQtbm90aWZpY2F0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS9hY2Nlc3NpYmlsaXR5L2NoaWxkcmVuLWNoYW5nZWQtbm90aWZpY2F0aW9uLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKzxodG1sPgorPGJvZHk+CitUaGlzIHRl
c3RzIHRoYXQgY2hyb21pdW0gY29ycmVjdGx5IHJlY2lldmVzIG5vdGlmaWNhdGlvbnMgd2hlbiB0
aGUgY2hpbGRyZW4gb2YgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgY2hhbmdlLgorPGRpdj48L2Rp
dj4KKzxzY3JpcHQ+CisgICAgZnVuY3Rpb24gdGVzdERvbmUoKSB7CisgICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24gdGVz
dCgpIHsKKyAgICAgICAgaWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OworCisgICAgICAgIGlmICghYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgfHwgIWFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmR1bXBBY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9ucykKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CisgICAgICAgIAorICAgICAgICAvLyBBY2Nlc3MgYWNjZXNzaWJpbGl0eSBvYmplY3QgdGhhdCB3
aWxsIGJlIGRlbGV0ZWQuCisgICAgICAgIGRvY3VtZW50LmJvZHkuZm9jdXMoKTsKKyAgICAgICAg
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICAKKyAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZHVtcEFjY2Vzc2liaWxp
dHlOb3RpZmljYXRpb25zKCk7CisgICAgICAgIAorICAgICAgICAvLyBJbnNlcnQgYSBjaGlsZCBl
bGVtZW50IG9uIHRoZSBkaXYuIFRoaXMgZ2VuZXJhdGVzIGFuIGFjY2Vzc2liaWxpdHkgY2hpbGRy
ZWQgY2hhbmdlZCBub3RpZmljYXRpb24uCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2hpbGRyZW5b
MF0uaW5uZXJIVE1MID0gInRleHQiOworCisgICAgICAgIC8vIFVzZSBzZXRUaW1lb3V0IHNvIHRo
YXQgYXN5bmNocm9ub3VzIGFjY2Vzc2liaWxpdHkgbm90aWZpY2F0aW9ucyBjYW4gYmUgcHJvY2Vz
c2VkLgorICAgICAgICBzZXRUaW1lb3V0KHRlc3REb25lLCAwKTsKKyAgICB9CisKKyAgICB0ZXN0
KCk7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>