<?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>175340</bug_id>
          
          <creation_ts>2017-08-08 13:18:39 -0700</creation_ts>
          <short_desc>AX: crash at WebCore::AccessibilityObject::supportsARIALiveRegion() const + 24</short_desc>
          <delta_ts>2017-08-10 15:15:52 -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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>175435</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nan Wang">n_wang</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>buildbot</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>n_wang</cc>
    
    <cc>samuel_white</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1336610</commentid>
    <comment_count>0</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-08 13:18:39 -0700</bug_when>
    <thetext>Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.WebCore             	0x00007fff6474c628 WebCore::AccessibilityObject::supportsARIALiveRegion() const + 24
1   com.apple.WebCore             	0x00007fff64754210 WebCore::AccessibilityObject::isInsideARIALiveRegion() const + 96
2   com.apple.WebCore             	0x00007fff6573c86c -[WebAccessibilityObjectWrapper additionalAccessibilityAttributeNames] + 636
3   com.apple.WebCore             	0x00007fff6573e395 -[WebAccessibilityObjectWrapper accessibilityAttributeNames] + 6261
4   com.apple.AppKit              	0x00007fff54dd2030 __NSAccessibilityEntryPointAttributeNames_block_invoke.llvm.9569B7B1 + 85
5   com.apple.AppKit              	0x00007fff54dd18bb NSAccessibilityPerformEntryPointObject.llvm.9569B7B1 + 16
6   com.apple.AppKit              	0x00007fff54936d16 NSAccessibilityEntryPointAttributeNames + 87
7   com.apple.AppKit              	0x00007fff54b7ba29 -[NSObject(NSAccessibilityInternal) _accessibilityAttributeNamesClientError:] + 56
8   com.apple.AppKit              	0x00007fff54b804a7 CopyAttributeNames + 169
9   com.apple.HIServices          	0x00007fff55a74d39 _AXXMIGCopyAttributeNames + 216
10  com.apple.HIServices          	0x00007fff55a7efe3 _XCopyAttributeNames + 362
11  com.apple.HIServices          	0x00007fff55a57989 mshMIGPerform + 212
12  com.apple.CoreFoundation      	0x00007fff5716c679 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 41
13  com.apple.CoreFoundation      	0x00007fff5716c5c5 __CFRunLoopDoSource1 + 533
14  com.apple.CoreFoundation      	0x00007fff571641b0 __CFRunLoopRun + 2848
15  com.apple.CoreFoundation      	0x00007fff57163403 CFRunLoopRunSpecific + 483

Related crash:
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff7ea52fce __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff7eb90384 pthread_kill + 333
2   libsystem_c.dylib             	0x00007fff7e9aed56 abort + 127
3   libc++abi.dylib               	0x00007fff7c9a3f8f abort_message + 245
4   libc++abi.dylib               	0x00007fff7c9c0952 __cxa_pure_virtual + 18
5   com.apple.WebCore             	0x00007fff6475712c WebCore::AccessibilityObject::defaultObjectInclusion() const + 92
6   com.apple.WebCore             	0x00007fff6476a496 WebCore::AccessibilitySVGElement::computeAccessibilityIsIgnored() const + 22
7   com.apple.WebCore             	0x00007fff647571ec WebCore::AccessibilityObject::accessibilityIsIgnored() const + 76
8   com.apple.WebCore             	0x00007fff647d6114 WebCore::AXObjectCache::getOrCreate(WebCore::RenderObject*) + 1716
9   com.apple.WebCore             	0x00007fff64764b20 WebCore::AccessibilityRenderObject::addChildren() + 48
10  com.apple.WebCore             	0x00007fff64752892 WebCore::AccessibilityObject::updateChildrenIfNecessary() + 66
11  com.apple.WebCore             	0x00007fff6474d22d WebCore::AccessibilityObject::updateBackingStore() + 77
12  com.apple.WebCore             	0x00007fff6573614d -[WebAccessibilityObjectWrapperBase updateObjectBackingStore] + 61
13  com.apple.WebCore             	0x00007fff657424c7 -[WebAccessibilityObjectWrapper accessibilityAttributeValue:] + 39
14  com.apple.AppKit              	0x00007fff5482300f NSAccessibilityGetObjectForAttributeUsingLegacyAPI + 371
15  com.apple.AppKit              	0x00007fff54dd5d2d ___NSAccessibilityEntryPointValueForAttribute_block_invoke.816.llvm.9569B7B1 + 1674
16  com.apple.AppKit              	0x00007fff54dd18bb NSAccessibilityPerformEntryPointObject.llvm.9569B7B1 + 16
17  com.apple.AppKit              	0x00007fff54dd1a87 _NSAccessibilityEntryPointValueForAttribute.llvm.9569B7B1 + 182
18  com.apple.AppKit              	0x00007fff54b7bd68 -[NSObject(NSAccessibilityInternal) _accessibilityValueForAttribute:clientError:] + 351</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336611</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-08 13:18:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/33782159&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336618</commentid>
    <comment_count>2</comment_count>
      <attachid>317606</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-08 13:32:12 -0700</bug_when>
    <thetext>Created attachment 317606
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1336629</commentid>
    <comment_count>3</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-08 14:00:43 -0700</bug_when>
    <thetext>Will keep looking for a better way to notify ax that the node has been detached.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337008</commentid>
    <comment_count>4</comment_count>
      <attachid>317713</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 09:51:11 -0700</bug_when>
    <thetext>Created attachment 317713
patch

update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337016</commentid>
    <comment_count>5</comment_count>
      <attachid>317713</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-09 10:03:22 -0700</bug_when>
    <thetext>Comment on attachment 317713
patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        the element has already been relayout but we are still holding onto its stale children. Fixed it

has already been layed out</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337017</commentid>
    <comment_count>6</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 10:09:44 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #5)
&gt; Comment on attachment 317713 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317713&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:10
&gt; &gt; +        the element has already been relayout but we are still holding onto its stale children. Fixed it
&gt; 
&gt; has already been layed out

Ok, will update and commit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337036</commentid>
    <comment_count>7</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 10:52:38 -0700</bug_when>
    <thetext>Committed r220463: &lt;http://trac.webkit.org/changeset/220463&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337105</commentid>
    <comment_count>8</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-09 13:32:55 -0700</bug_when>
    <thetext>I am not sure if this patch is correct. Just because some element becomes floating (or non-floating) it does not mean it&apos;s stale. They become stale when we detached them from the tree/destroy them. 

What exactly do you mean by &quot;When adding a psuedo element child to a RenderBlockFlow element, there might be a chance where the element has already been relayout but we are still holding onto its stale children.&quot;
What is the stale child in this context? The pseudo element&apos;s RenderInline?

&quot;by notifying AX correctly when inserting/removing children during layout&quot;
the floating object map is an internal helper container; Not sure why AX needs to know whether we add a renderer to a internal container.
r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337107</commentid>
    <comment_count>9</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-09 13:34:59 -0700</bug_when>
    <thetext>See my previous comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337112</commentid>
    <comment_count>10</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 13:46:08 -0700</bug_when>
    <thetext>(In reply to zalan from comment #9)
&gt; See my previous comment.

Ok, I&apos;ll revisit on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337169</commentid>
    <comment_count>11</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 15:30:58 -0700</bug_when>
    <thetext>(In reply to zalan from comment #8)
&gt; I am not sure if this patch is correct. Just because some element becomes
&gt; floating (or non-floating) it does not mean it&apos;s stale. They become stale
&gt; when we detached them from the tree/destroy them. 
&gt; 
&gt; What exactly do you mean by &quot;When adding a psuedo element child to a
&gt; RenderBlockFlow element, there might be a chance where the element has
&gt; already been relayout but we are still holding onto its stale children.&quot;
&gt; What is the stale child in this context? The pseudo element&apos;s RenderInline?
&gt; 
&gt; &quot;by notifying AX correctly when inserting/removing children during layout&quot;
&gt; the floating object map is an internal helper container; Not sure why AX
&gt; needs to know whether we add a renderer to a internal container.
&gt; r-

I think there&apos;s something going on during layout process that invalidates some of the RenderBlockFlow object&apos;s children. Do you think it would be suitable to notify AX in layoutBlock? I think we have something similar in RenderElement::styleWillChange to notify AX on visibility change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337179</commentid>
    <comment_count>12</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-09 15:35:47 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #11)
&gt; (In reply to zalan from comment #8)
&gt; &gt; I am not sure if this patch is correct. Just because some element becomes
&gt; &gt; floating (or non-floating) it does not mean it&apos;s stale. They become stale
&gt; &gt; when we detached them from the tree/destroy them. 
&gt; &gt; 
&gt; &gt; What exactly do you mean by &quot;When adding a psuedo element child to a
&gt; &gt; RenderBlockFlow element, there might be a chance where the element has
&gt; &gt; already been relayout but we are still holding onto its stale children.&quot;
&gt; &gt; What is the stale child in this context? The pseudo element&apos;s RenderInline?
&gt; &gt; 
&gt; &gt; &quot;by notifying AX correctly when inserting/removing children during layout&quot;
&gt; &gt; the floating object map is an internal helper container; Not sure why AX
&gt; &gt; needs to know whether we add a renderer to a internal container.
&gt; &gt; r-
&gt; 
&gt; I think there&apos;s something going on during layout process that invalidates
&gt; some of the RenderBlockFlow object&apos;s children. Do you think it would be
&gt; suitable to notify AX in layoutBlock?
By invalidating you mean destroying the child renderer? In such cases, AX is already notified through ::willBedDestroyed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337221</commentid>
    <comment_count>13</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 16:55:18 -0700</bug_when>
    <thetext>(In reply to zalan from comment #12)
&gt; (In reply to Nan Wang from comment #11)
&gt; &gt; (In reply to zalan from comment #8)
&gt; &gt; &gt; I am not sure if this patch is correct. Just because some element becomes
&gt; &gt; &gt; floating (or non-floating) it does not mean it&apos;s stale. They become stale
&gt; &gt; &gt; when we detached them from the tree/destroy them. 
&gt; &gt; &gt; 
&gt; &gt; &gt; What exactly do you mean by &quot;When adding a psuedo element child to a
&gt; &gt; &gt; RenderBlockFlow element, there might be a chance where the element has
&gt; &gt; &gt; already been relayout but we are still holding onto its stale children.&quot;
&gt; &gt; &gt; What is the stale child in this context? The pseudo element&apos;s RenderInline?
&gt; &gt; &gt; 
&gt; &gt; &gt; &quot;by notifying AX correctly when inserting/removing children during layout&quot;
&gt; &gt; &gt; the floating object map is an internal helper container; Not sure why AX
&gt; &gt; &gt; needs to know whether we add a renderer to a internal container.
&gt; &gt; &gt; r-
&gt; &gt; 
&gt; &gt; I think there&apos;s something going on during layout process that invalidates
&gt; &gt; some of the RenderBlockFlow object&apos;s children. Do you think it would be
&gt; &gt; suitable to notify AX in layoutBlock?
&gt; By invalidating you mean destroying the child renderer? In such cases, AX is
&gt; already notified through ::willBedDestroyed.

The case here seems to be the child renderer is not attached to the same parent, so that AX is holding a stale tree. When we ask for the ax parent object from the child renderer it will then lead to accessing an invalid memory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337227</commentid>
    <comment_count>14</comment_count>
      <attachid>317763</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-09 17:09:33 -0700</bug_when>
    <thetext>Created attachment 317763
patch

updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337230</commentid>
    <comment_count>15</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-09 17:14:01 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #13)
&gt; (In reply to zalan from comment #12)
&gt; &gt; (In reply to Nan Wang from comment #11)
&gt; &gt; &gt; (In reply to zalan from comment #8)
&gt; &gt; &gt; &gt; I am not sure if this patch is correct. Just because some element becomes
&gt; &gt; &gt; &gt; floating (or non-floating) it does not mean it&apos;s stale. They become stale
&gt; &gt; &gt; &gt; when we detached them from the tree/destroy them. 
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; What exactly do you mean by &quot;When adding a psuedo element child to a
&gt; &gt; &gt; &gt; RenderBlockFlow element, there might be a chance where the element has
&gt; &gt; &gt; &gt; already been relayout but we are still holding onto its stale children.&quot;
&gt; &gt; &gt; &gt; What is the stale child in this context? The pseudo element&apos;s RenderInline?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; &quot;by notifying AX correctly when inserting/removing children during layout&quot;
&gt; &gt; &gt; &gt; the floating object map is an internal helper container; Not sure why AX
&gt; &gt; &gt; &gt; needs to know whether we add a renderer to a internal container.
&gt; &gt; &gt; &gt; r-
&gt; &gt; &gt; 
&gt; &gt; &gt; I think there&apos;s something going on during layout process that invalidates
&gt; &gt; &gt; some of the RenderBlockFlow object&apos;s children. Do you think it would be
&gt; &gt; &gt; suitable to notify AX in layoutBlock?
&gt; &gt; By invalidating you mean destroying the child renderer? In such cases, AX is
&gt; &gt; already notified through ::willBedDestroyed.
&gt; 
&gt; The case here seems to be the child renderer is not attached to the same
&gt; parent, so that AX is holding a stale tree. When we ask for the ax parent
&gt; object from the child renderer it will then lead to accessing an invalid
&gt; memory.
Reparenting is not very uncommon in the rendering code. How do you handle first letter or column changes? They are very similar to what you just described here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337236</commentid>
    <comment_count>16</comment_count>
      <attachid>317763</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-08-09 17:16:01 -0700</bug_when>
    <thetext>Comment on attachment 317763
patch

If it&apos;s about repareting, then this change is incorrect (it&apos;s incorrect for other reasons as well)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337338</commentid>
    <comment_count>17</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 00:45:16 -0700</bug_when>
    <thetext>(In reply to zalan from comment #16)
&gt; Comment on attachment 317763 [details]
&gt; patch
&gt; 
&gt; If it&apos;s about repareting, then this change is incorrect (it&apos;s incorrect for
&gt; other reasons as well)

Thanks for the comment. 
I have figured out the issue. So like you said, we are notifying accessibility on childrenChanged() correctly when objects being inserted/removed. I think this particular case is that when a svg image being destroyed we didn&apos;t remove the corresponding ax object correctly, and accessing the stale object then leads to a crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337339</commentid>
    <comment_count>18</comment_count>
      <attachid>317793</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 00:47:00 -0700</bug_when>
    <thetext>Created attachment 317793
patch

fix the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337341</commentid>
    <comment_count>19</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-10 00:48:04 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #17)
&gt; (In reply to zalan from comment #16)
&gt; &gt; Comment on attachment 317763 [details]
&gt; &gt; patch
&gt; &gt; 
&gt; &gt; If it&apos;s about repareting, then this change is incorrect (it&apos;s incorrect for
&gt; &gt; other reasons as well)
&gt; 
&gt; Thanks for the comment. 
&gt; I have figured out the issue. So like you said, we are notifying
&gt; accessibility on childrenChanged() correctly when objects being
&gt; inserted/removed. I think this particular case is that when a svg image
&gt; being destroyed we didn&apos;t remove the corresponding ax object correctly, and
&gt; accessing the stale object then leads to a crash.

That&apos;s promising. It may finally resolve

&lt;rdar://problem/32188382&gt; com.apple.WebKit.WebContent at WebCore::AccessibilityRenderObject::remoteSVGRootElement const + 32</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337402</commentid>
    <comment_count>20</comment_count>
      <attachid>317793</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-08-10 07:09:45 -0700</bug_when>
    <thetext>Comment on attachment 317793
patch

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

&gt; Source/WebCore/rendering/RenderImage.cpp:156
&gt; +    // Remove this from accessibility first, since the below shutdown() function
&gt; +    // will clear m_cachedImage and lead to a stale ax render object.
&gt; +    if (UNLIKELY(AXObjectCache::accessibilityEnabled())) {
&gt; +        if (AXObjectCache* cache = document().existingAXObjectCache())
&gt; +            cache-&gt;remove(this);
&gt; +    }

Do you mind explaining what you mean by &quot;clear m_cachedImage and lead to a stale ax render object&quot;. What&apos;s the connection between the m_cachedImage and the AX render object? What exactly prevents us from going through the normal RenderObject::willBeDestroyed path? Also, though Chris might know more about this, but this changeset makes a call to AXObjectCache::remove() before notifying the parent (please see the related comments in RenderObject::willBeDestoryed()).
If the problem here is that the AccessibilitySVGRoot outlives the AX RenderImage (which is correct, since svg root is a resource, while the RenderImage is a renderer), then it needs to be addressed in another way.

I tried to debug this myself but the attached test case (in second patch) passes fine even with guard malloc. -is it ASan only?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337448</commentid>
    <comment_count>21</comment_count>
      <attachid>317814</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 09:15:56 -0700</bug_when>
    <thetext>Created attachment 317814
patch

Ok, I think this is problematic due to the accessibility set up. We rely on the CachedImage object to retrieve the corresponding AccessibilitySVGRoot when detaching. But since that&apos;s been cleared, the detaching was fail so that the AccessibilitySVGRoot object is still pointing to the RenderImage&apos;s ax render object as parent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337449</commentid>
    <comment_count>22</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 09:16:41 -0700</bug_when>
    <thetext>Sorry wrong patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337450</commentid>
    <comment_count>23</comment_count>
      <attachid>317815</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 09:18:02 -0700</bug_when>
    <thetext>Created attachment 317815
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337453</commentid>
    <comment_count>24</comment_count>
      <attachid>317815</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-10 09:27:27 -0700</bug_when>
    <thetext>Comment on attachment 317815
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3096
&gt; +    m_remoteSVGRoot = root;

do we need to set this back to nullptr if we clear our children?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337454</commentid>
    <comment_count>25</comment_count>
      <attachid>317815</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 09:33:11 -0700</bug_when>
    <thetext>Comment on attachment 317815
patch

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

&gt;&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:3096
&gt;&gt; +    m_remoteSVGRoot = root;
&gt; 
&gt; do we need to set this back to nullptr if we clear our children?

You are right</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337457</commentid>
    <comment_count>26</comment_count>
      <attachid>317817</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 09:33:45 -0700</bug_when>
    <thetext>Created attachment 317817
patch

updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337462</commentid>
    <comment_count>27</comment_count>
      <attachid>317817</attachid>
    <who name="alan">zalan</who>
    <bug_when>2017-08-10 09:53:48 -0700</bug_when>
    <thetext>Comment on attachment 317817
patch

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

&gt; Source/WebCore/accessibility/AccessibilityRenderObject.cpp:112
&gt; +    , m_remoteSVGRoot(nullptr)

Remove this please and switch over to &quot;AccessibilitySVGRoot* m_remoteSVGRoot { nullptr };&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337463</commentid>
    <comment_count>28</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-10 09:55:21 -0700</bug_when>
    <thetext>This is core accessibility, I&apos;d rather have Chris r+ it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337516</commentid>
    <comment_count>29</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 11:28:28 -0700</bug_when>
    <thetext>Rolled out previous patch in r220535: &lt;http://trac.webkit.org/changeset/220535&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337548</commentid>
    <comment_count>30</comment_count>
      <attachid>317834</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 12:48:19 -0700</bug_when>
    <thetext>Created attachment 317834
patch

Introducing weak pointer to solve the issue, based on Chris&apos; suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337549</commentid>
    <comment_count>31</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 12:49:04 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #30)
&gt; Created attachment 317834 [details]
&gt; patch
&gt; 
&gt; Introducing weak pointer to solve the issue, based on Chris&apos; suggestion.

wrong patch again..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337550</commentid>
    <comment_count>32</comment_count>
      <attachid>317835</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 12:49:57 -0700</bug_when>
    <thetext>Created attachment 317835
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337555</commentid>
    <comment_count>33</comment_count>
      <attachid>317835</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-10 13:04:48 -0700</bug_when>
    <thetext>Comment on attachment 317835
patch

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

&gt; LayoutTests/ChangeLog:16
&gt; +        Layout test accessibility/press-target-uses-text-descendant-node.html is flaky.

need to remove this entry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337557</commentid>
    <comment_count>34</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-10 13:05:10 -0700</bug_when>
    <thetext>(In reply to zalan from comment #28)
&gt; This is core accessibility, I&apos;d rather have Chris r+ it.

Zalan can you also take a look at this and see if we&apos;ve implemented weak pointer correctly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337559</commentid>
    <comment_count>35</comment_count>
      <attachid>317838</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 13:17:33 -0700</bug_when>
    <thetext>Created attachment 317838
patch

corrected change log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337560</commentid>
    <comment_count>36</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-08-10 13:21:18 -0700</bug_when>
    <thetext>Attachment 317838 did not pass style-queue:


ERROR: /Volumes/Data/StyleQueue/WebKit/LayoutTests/platform/gtk/TestExpectations:3406:  Duplicate or ambiguous entry lines LayoutTests/platform/gtk/TestExpectations:2661 and LayoutTests/platform/gtk/TestExpectations:3406.  [test/expectations] [5]
Total errors found: 1 in 10 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>1337561</commentid>
    <comment_count>37</comment_count>
      <attachid>317839</attachid>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 13:25:42 -0700</bug_when>
    <thetext>Created attachment 317839
patch

Removed bad TestExpectation change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337580</commentid>
    <comment_count>38</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-10 14:08:08 -0700</bug_when>
    <thetext>IIRC WeakPtr is not cheap. Did you measure the impact on memory consumption?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337587</commentid>
    <comment_count>39</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 14:18:46 -0700</bug_when>
    <thetext>(In reply to zalan from comment #38)
&gt; IIRC WeakPtr is not cheap. Did you measure the impact on memory consumption?

This should only impact the page with svg root available. 
I&apos;ve tested with the page with lots of svg elements being added/removed constantly. The memory consumptions are similar before/after this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337604</commentid>
    <comment_count>40</comment_count>
      <attachid>317839</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-10 14:43:32 -0700</bug_when>
    <thetext>Comment on attachment 317839
patch

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

&gt; LayoutTests/ChangeLog:12
&gt; +        * platform/gtk/TestExpectations:

not seeing this file in the diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337605</commentid>
    <comment_count>41</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 14:44:19 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #40)
&gt; Comment on attachment 317839 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=317839&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:12
&gt; &gt; +        * platform/gtk/TestExpectations:
&gt; 
&gt; not seeing this file in the diff

Oh I removed it but didn&apos;t update the changeLog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337617</commentid>
    <comment_count>42</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2017-08-10 14:57:25 -0700</bug_when>
    <thetext>(In reply to Nan Wang from comment #39)
&gt; (In reply to zalan from comment #38)
&gt; &gt; IIRC WeakPtr is not cheap. Did you measure the impact on memory consumption?
&gt; 
&gt; This should only impact the page with svg root available. 
&gt; I&apos;ve tested with the page with lots of svg elements being added/removed
&gt; constantly. The memory consumptions are similar before/after this change.
It increases the size of every AccessibilityRenderObject. Anyway, it should be fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337621</commentid>
    <comment_count>43</comment_count>
      <attachid>317839</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2017-08-10 15:03:21 -0700</bug_when>
    <thetext>Comment on attachment 317839
patch

looks ok to me from AX perspective. glad we got to the actual problem</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1337630</commentid>
    <comment_count>44</comment_count>
    <who name="Nan Wang">n_wang</who>
    <bug_when>2017-08-10 15:15:52 -0700</bug_when>
    <thetext>Committed r220551: &lt;http://trac.webkit.org/changeset/220551&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317606</attachid>
            <date>2017-08-08 13:32:12 -0700</date>
            <delta_ts>2017-08-09 09:51:11 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5668</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDQxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA4LTA4ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYWRkaW5nIGEgcHN1ZWRvIGVsZW1lbnQgY2hp
bGQsIHRoZXJlIG1pZ2h0IGJlIGEgY2hhbmNlIHdoZXJlIHRoZSBlbGVtZW50IGhhcyBhbHJlYWR5
IGJlZW4gCisgICAgICAgIHJlbW92ZWQgZnJvbSB0aGUgcmVuZGVyIHRyZWUgYnV0IHdlIGFyZSBz
dGlsbCBob2xkaW5nIG9udG8gaXRzIGNoaWxkcmVuLiBUaGlzIHdpbGwgY2F1c2UgYSBjcmFzaAor
ICAgICAgICBpZiB3ZSB0cnkgdG8gYWNjZXNzIHRoZSBhdHRyaWJ1dGVzIG9mIGl0cyBjaGlsZHJl
bi4gRml4ZWQgaXQgYnkgYWx3YXlzIGNsZWFyaW5nIHRoZSBjaGlsZHJlbiBvZiAKKyAgICAgICAg
cHNldWRvIGVsZW1lbnRzIHdoZW4gYnVpZGluZyB0aGUgQVggdHJlZSwgc28gdGhhdCB3ZSBkb24n
dCBob2xkIG9udG8gb3V0ZGF0ZWQgZGF0YS4gCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0
eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbAorCisgICAgICAgICogYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlPYmplY3Q6Omluc2VydENoaWxkKToKKwogMjAxNy0wOC0wOCAgSmVyZW15IEpvbmVzICA8
amVyZW15akBhcHBsZS5jb20+CiAKICAgICAgICAgQ2hhbmdlIGZhc3Qgc2VlayBsb2dpYyB0byBw
cmV2ZW50IHBpbmctcG9uZ2luZy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkocmV2aXNpb24gMjIwMjQ4KQorKysg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTY4LDYgKzU2OCwxMSBAQCB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6
Omluc2VydENoaWxkKEFjCiAgICAgICAgIC8vIFBhc3MgbV9zdWJ0cmVlRGlydHkgZmxhZyBkb3du
IHRvIHRoZSBjaGlsZCBzbyB0aGF0IGNoaWxkcmVuIGNhY2hlIGdldHMgcmVzZXQgcHJvcGVybHku
CiAgICAgICAgIGlmIChtX3N1YnRyZWVEaXJ0eSkKICAgICAgICAgICAgIGNoaWxkLT5zZXROZWVk
c1RvVXBkYXRlU3VidHJlZSgpOworICAgIH0gZWxzZSBpZiAoY2hpbGQtPnJlbmRlcmVyKCkgJiYg
Y2hpbGQtPnJlbmRlcmVyKCktPmlzQW5vbnltb3VzKCkpIHsKKyAgICAgICAgLy8gRm9yIHRoZSBh
bm9ueW1vdXMgY2hpbGQsIHdlIHNob3VsZCBhbHdheXMgcmVzZXQgaXRzIHN1YnRyZWUgaW4gb3Jk
ZXIgdG8gYXZvaWQgY2FzZXMgbGlrZQorICAgICAgICAvLyBhZGRpbmcgYSBkZXRhY2hlZCBwc2V1
ZG8gZWxlbWVudCB0byB0aGUgY2hpbGRyZW4gbGlzdC4KKyAgICAgICAgY2hpbGQtPmNsZWFyQ2hp
bGRyZW4oKTsKKyAgICAgICAgY2hpbGQtPnNldE5lZWRzVG9VcGRhdGVTdWJ0cmVlKCk7CiAgICAg
fSBlbHNlIHsKICAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHRoZSBncmFuZCBjaGlsZHJlbiBt
aWdodCBiZSBkZXRhY2hlZCBzbyB0aGF0IHdlIG5lZWQgdG8gcmVnZW5lcmF0ZSB0aGUKICAgICAg
ICAgLy8gY2hpbGRyZW4gbGlzdCBvZiB0aGlzIGNoaWxkLgpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIw
MjQ4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTctMDgtMDggIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KKworICAgICAg
ICBBWDogY3Jhc2ggYXQgV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6c3VwcG9ydHNBUklB
TGl2ZVJlZ2lvbigpIGNvbnN0ICsgMjQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE3NTM0MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzM3ODIxNTk+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcmVzb3VyY2VzL3N2Zy1jaXJjbGUu
c3ZnOiBBZGRlZC4KKwogMjAxNy0wOC0wMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIE11bHRpcGxlIExheW91dCB0ZXN0cyBmcm9tIHdlYi1wbGF0Zm9ybS10ZXN0
cy9iZWFjb24vIGFyZSB0aW1pbmcgb3V0LgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50LWV4
cGVjdGVkLnR4dAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2Fk
ZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSwxMyBAQAorCitNYWtlIHN1cmUgdGhhdCB3ZSBhcmUgdXBkYXRpbmcgdGhlIHBzZXVk
byBlbGVtZW50J3MgY2hpbGRyZW4gY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBlbGVtZW50LmNoaWxkcmVuQ291bnQgaXMgMgorUEFTUyBlbGVtZW50LmNo
aWxkcmVuQ291bnQgaXMgMQorUEFTUyBlbGVtZW50LmNoaWxkcmVuQ291bnQgaXMgMgorUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRv
LWVsZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsNTQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKworPHN0eWxlPgorLnBzZXVkbzo6YWZ0ZXIgeworICBjb250
ZW50OiB1cmwocmVzb3VyY2VzL3N2Zy1jaXJjbGUuc3ZnKTsKKyAgd2lkdGg6IDE4cHg7CisgIGhl
aWdodDogMjBweDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBtYXJnaW4tdG9wOiA2cHg7Cisg
IHJpZ2h0OiA2cHgKK30KKworLnBzZXVkby5oaWRkZW46OmFmdGVyIHsKKyAgICBjb250ZW50OiAn
ICc7Cit9Cis8L3N0eWxlPgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9InRlc3QiIGNs
YXNzPSJwc2V1ZG8iPgorPGlucHV0PgorPC9kaXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlv
bigiTWFrZSBzdXJlIHRoYXQgd2UgYXJlIHVwZGF0aW5nIHRoZSBwc2V1ZG8gZWxlbWVudCdzIGNo
aWxkcmVuIGNvcnJlY3RseS4iKTsKKworICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKKyAgICAgICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQu
Y2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgIHZhciBwc2V1ZG8gPSBlbGVtZW50LmNoaWxk
QXRJbmRleCgxKTsKKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0
ZXN0IikuY2xhc3NOYW1lICs9ICJoaWRkZW4iOworICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5j
aGlsZHJlbkNvdW50IiwgIjEiKTsKKyAgICAgICAgCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJ0ZXN0IikuY2xhc3NOYW1lID0gInBzZXVkbyI7CisgICAgICAgIHNob3VsZEJlKCJl
bGVtZW50LmNoaWxkcmVuQ291bnQiLCAiMiIpOworICAgICAgICAKKyAgICAgICAgLy8gTWFrZSBz
dXJlIGdldHRpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNoaWxkcmVuIHdvbid0IGNhdXNlIGNy
YXNoCisgICAgICAgIHBzZXVkby5hdHRyaWJ1dGVzT2ZDaGlsZHJlbigpOworICAgIH0KKworPC9z
Y3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
cmVzb3VyY2VzL3N2Zy1jaXJjbGUuc3ZnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvcmVzb3VyY2VzL3N2Zy1jaXJjbGUuc3ZnCShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvcmVzb3VyY2VzL3N2Zy1jaXJjbGUuc3ZnCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOCBAQAorCis8c3ZnIHZpZXdCb3g9IjAgMCA5NSA1MCIKKyAgICAgeG1s
bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyAgIDxnIHN0cm9rZT0iZ3JlZW4iIGZp
bGw9IndoaXRlIiBzdHJva2Utd2lkdGg9IjUiPgorICAgICA8Y2lyY2xlIGN4PSIyNSIgY3k9IjI1
IiByPSIxNSIvPgorICAgICA8dGV4dD5jaXJjbGU8L3RleHQ+CisgICA8L2c+Cis8L3N2Zz4KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317713</attachid>
            <date>2017-08-09 09:51:11 -0700</date>
            <delta_ts>2017-08-09 17:09:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>6210</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDQ2MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDE3LTA4LTA5ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW4gYWRkaW5nIGEgcHN1ZWRvIGVsZW1lbnQgY2hp
bGQgdG8gYSBSZW5kZXJCbG9ja0Zsb3cgZWxlbWVudCwgdGhlcmUgbWlnaHQgYmUgYSBjaGFuY2Ug
d2hlcmUKKyAgICAgICAgdGhlIGVsZW1lbnQgaGFzIGFscmVhZHkgYmVlbiByZWxheW91dCBidXQg
d2UgYXJlIHN0aWxsIGhvbGRpbmcgb250byBpdHMgc3RhbGUgY2hpbGRyZW4uIEZpeGVkIGl0Cisg
ICAgICAgIGJ5IG5vdGlmeWluZyBBWCBjb3JyZWN0bHkgd2hlbiBpbnNlcnRpbmcvcmVtb3Zpbmcg
Y2hpbGRyZW4gZHVyaW5nIGxheW91dC4KKworICAgICAgICBUZXN0OiBhY2Nlc3NpYmlsaXR5L2Fk
ZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC5odG1sCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQmxvY2tGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5z
ZXJ0RmxvYXRpbmdPYmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpy
ZW1vdmVGbG9hdGluZ09iamVjdCk6CisKIDIwMTctMDgtMDkgIERhbmllbCBCYXRlcyAgPGRhYmF0
ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMTkwMTMpOiBPQXV0aCBmbG93
cyBhcmUgYnJva2VuIHdoZW4gcmVkaXJlY3RpbmcgYmFjayB0byBhcHBsaWNhdGlvbiBhZnRlciBh
dXRoZW50aWNhdGlvbgpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2Nr
Rmxvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAJKHJldmlzaW9uIDIyMDI0OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCbG9ja0Zsb3cuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAj
aW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2tGbG93LmgiCiAKKyNpbmNs
dWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRmxv
YXRpbmdPYmplY3RzLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKQEAgLTIzNTIsNiArMjM1Myw5IEBA
IEZsb2F0aW5nT2JqZWN0KiBSZW5kZXJCbG9ja0Zsb3c6Omluc2VydEYKICAgICB9CiAKICAgICBz
ZXRMb2dpY2FsV2lkdGhGb3JGbG9hdCgqZmxvYXRpbmdPYmplY3QsIGxvZ2ljYWxXaWR0aEZvckNo
aWxkKGZsb2F0Qm94KSArIG1hcmdpblN0YXJ0Rm9yQ2hpbGQoZmxvYXRCb3gpICsgbWFyZ2luRW5k
Rm9yQ2hpbGQoZmxvYXRCb3gpKTsKKyAgICAKKyAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUg
PSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICBjYWNoZS0+Y2hp
bGRyZW5DaGFuZ2VkKHRoaXMpOwogCiAgICAgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQo
V1RGTW92ZShmbG9hdGluZ09iamVjdCkpOwogfQpAQCAtMjM4OSw2ICsyMzkzLDkgQEAgdm9pZCBS
ZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZQogICAgICAgICAgICAgICAgIG1hcmtM
aW5lc0RpcnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZSgmZmxvYXRpbmdPYmplY3QpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1
bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAgICAgIGNhY2hlLT5j
aGlsZHJlbkNoYW5nZWQodGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9CkluZGV4OiBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMjAyNDgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxNy0wOC0wOSAgTmFuIFdhbmcgIDxuX3dhbmdAYXBwbGUuY29tPgor
CisgICAgICAgIEFYOiBjcmFzaCBhdCBXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzdXBw
b3J0c0FSSUFMaXZlUmVnaW9uKCkgY29uc3QgKyAyNAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1MzQwCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8z
Mzc4MjE1OT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGFjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVs
ZW1lbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3Zn
LWNpcmNsZS5zdmc6IEFkZGVkLgorCiAyMDE3LTA4LTAzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgTXVsdGlwbGUgTGF5b3V0IHRlc3RzIGZyb20gd2ViLXBsYXRm
b3JtLXRlc3RzL2JlYWNvbi8gYXJlIHRpbWluZyBvdXQuCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDEyIEBACitMYW5ndWFnZSBFbWFpbCAKK01ha2Ugc3VyZSB0aGF0IHdl
IGFyZSB1cGRhdGluZyB0aGUgcmVuZGVyIGJsb2NrIGZsb3cgZWxlbWVudCdzIGNoaWxkcmVuIGNv
cnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZWxlbWVudC5j
aGlsZHJlbkNvdW50IGlzIDMKK1BBU1MgZWxlbWVudC5jaGlsZHJlbkNvdW50IGlzIDIKK1BBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVk
by1lbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDcwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxzdHlsZT4KKy5wc2V1ZG86OmFmdGVyIHsKKyAgY29u
dGVudDogdXJsKHJlc291cmNlcy9zdmctY2lyY2xlLnN2Zyk7CisgIHdpZHRoOiAxOHB4OworICBo
ZWlnaHQ6IDIwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbWFyZ2luLXRvcDogNnB4Owor
ICByaWdodDogNnB4Cit9CisKKy5wc2V1ZG8uaGlkZGVuOjphZnRlciB7CisgICAgY29udGVudDog
JyAnOworfQorPC9zdHlsZT4KKworPGJvZHkgaWQ9ImJvZHkiPgorCis8ZGl2IGlkPSJjb250YWlu
ZXIiPgorPGRpdiBpZD0idGVzdCIgc3R5bGU9ImZsb2F0IDogbGVmdDsiPgorPHNwYW4+TGFuZ3Vh
Z2U8L3NwYW4+Cis8aW5wdXQgaWQ9InRlc3QiPgorPC9kaXY+CisKKzxkaXYgaWQ9ImZsb2F0IiBz
dHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyIgY2xhc3M9InBzZXVkbyI+Cis8c3BhbiByZXF1
aXJlZD0iIiBzdHlsZT0iY29sb3I6IHJnYigxOTQsIDAsIDApOyI+RW1haWw8L3NwYW4+Cis8aW5w
dXQgdHlwZT0idGV4dCIgcmVxdWlyZWQ9IiIgYXJpYS1yZXF1aXJlZD0idHJ1ZSIgdmFsdWU9IiIg
b25rZXl1cD0iaGlkZVBzZXVkbygpOyI+Cis8L2Rpdj4KKworPC9kaXY+CisKKzxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisKKyAg
ICBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIHRoYXQgd2UgYXJlIHVwZGF0aW5nIHRoZSByZW5kZXIg
YmxvY2sgZmxvdyBlbGVtZW50J3MgY2hpbGRyZW4gY29ycmVjdGx5LiIpOworCisgICAgaWYgKHdp
bmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2YXIgZWxlbWVudCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiZmxvYXQiKTsKKyAg
ICAgICAgc2hvdWxkQmUoImVsZW1lbnQuY2hpbGRyZW5Db3VudCIsICIzIik7CisgICAgICAgIAor
ICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCdcdCcpOworICAgICAgICAKKyAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQuY2hpbGRy
ZW5Db3VudCIsICIyIik7CisgICAgICAgIHNob3dQc2V1ZG8oKTsKKyAgICAgICAgCisgICAgICAg
IGZ1bmN0aW9uIGhpZGVQc2V1ZG8oKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZmxvYXQiKS5jbGFzc05hbWUgKz0gImhpZGRlbiIKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgZnVuY3Rpb24gc2hvd1BzZXVkbygpIHsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJmbG9hdCIpLmNsYXNzTmFtZSA9ICJwc2V1ZG8iOworICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSBnZXR0aW5nIHRoZSBhdHRyaWJ1
dGVzIG9mIGl0cyBjaGlsZHJlbiB3b24ndCBjYXVzZSBjcmFzaAorICAgICAgICBlbGVtZW50LmF0
dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CisgICAgfQorCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9
Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3ZnLWNpcmNsZS5z
dmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3Zn
LWNpcmNsZS5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9y
ZXNvdXJjZXMvc3ZnLWNpcmNsZS5zdmcJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2IEBACis8
c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgIDxnPgorICAgICAg
ICA8dGV4dCBzdHlsZT0iZmxvYXQ6cmlnaHQiPjwvdGV4dD4KKyAgICAgICAgPHRleHQ+Y2lyY2xl
PC90ZXh0PgorICAgIDwvZz4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="338222"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317763</attachid>
            <date>2017-08-09 17:09:33 -0700</date>
            <delta_ts>2017-08-10 00:47:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>2770</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE3LTA4LTA5ICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydGluZyBjaGFuZ2VzIGluIHIyMjA0NjMuIAor
ICAgICAgICBUaGUgaXNzdWUgaGVyZSBpcyB0aGF0IHRoZSBBWCB0cmVlIGNvdWxkIGJlY29tZSBp
bnZhbGlkIGFmdGVyIHRoZSBjaGlsZCByZW5kZXJlcidzIAorICAgICAgICBsYXlvdXQgcHJvY2Vz
cy4gU28gdG8gbWFrZSBzdXJlIHRoZSBheCB0cmVlIGlzIGFsd2F5cyB1cCB0byBkYXRlLCB3ZSBu
b3RpZnkgYWNjZXNzaWJpbGl0eQorICAgICAgICBkdXJpbmcgbGF5b3V0QmxvY2tDaGlsZCBpZiBw
b3NzaWJsZS4KKworICAgICAgICBDaGFuZ2VzIGFyZSBjb3ZlcmVkIGluIHRoZSB0ZXN0IGFkZGVk
IGluIHIyMjA0NjMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6bGF5b3V0QmxvY2tDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6Omluc2VydEZsb2F0aW5nT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6cmVtb3ZlRmxvYXRpbmdPYmplY3Qp
OgorCiAyMDE3LTA4LTA5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0JlYWNvbl1bTmV0d29ya1Nlc3Npb25dIFN1cHBvcnQgQ09SUy1wcmVmbGlnaHRpbmcgb24g
cmVkaXJlY3RzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tG
bG93LmNwcAkocmV2aXNpb24gMjIwNDk4KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckJsb2NrRmxvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2Myw4ICs3NjMsMTQgQEAgdm9p
ZCBSZW5kZXJCbG9ja0Zsb3c6OmxheW91dEJsb2NrQ2hpbGQoUgogCiAgICAgYm9vbCBjaGlsZEhh
ZExheW91dCA9IGNoaWxkLmV2ZXJIYWRMYXlvdXQoKTsKICAgICBib29sIGNoaWxkTmVlZGVkTGF5
b3V0ID0gY2hpbGQubmVlZHNMYXlvdXQoKTsKLSAgICBpZiAoY2hpbGROZWVkZWRMYXlvdXQpCisg
ICAgaWYgKGNoaWxkTmVlZGVkTGF5b3V0KSB7CiAgICAgICAgIGNoaWxkLmxheW91dCgpOworICAg
ICAgICAKKyAgICAgICAgLy8gTm90aWZ5IGFjY2Vzc2liaWxpdHkgc2luY2UgdGhlIGNoaWxkIGxh
eW91dCBwcm9jZXNzIG1pZ2h0IGludmFsaWRhdGUKKyAgICAgICAgLy8gdGhlIGN1cnJlbnQgYXgg
dHJlZS4KKyAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlz
dGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgICAgIGNhY2hlLT5jaGlsZHJlbkNoYW5nZWQo
dGhpcyk7CisgICAgfQogCiAgICAgLy8gQ2FjaGUgaWYgd2UgYXJlIGF0IHRoZSB0b3Agb2YgdGhl
IGJsb2NrIHJpZ2h0IG5vdy4KICAgICBib29sIGF0QmVmb3JlU2lkZU9mQmxvY2sgPSBtYXJnaW5J
bmZvLmF0QmVmb3JlU2lkZU9mQmxvY2soKTsKQEAgLTIzNTMsOSArMjM1OSw2IEBAIEZsb2F0aW5n
T2JqZWN0KiBSZW5kZXJCbG9ja0Zsb3c6Omluc2VydEYKICAgICB9CiAKICAgICBzZXRMb2dpY2Fs
V2lkdGhGb3JGbG9hdCgqZmxvYXRpbmdPYmplY3QsIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGZsb2F0
Qm94KSArIG1hcmdpblN0YXJ0Rm9yQ2hpbGQoZmxvYXRCb3gpICsgbWFyZ2luRW5kRm9yQ2hpbGQo
ZmxvYXRCb3gpKTsKLSAgICAKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVu
dCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQotICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFu
Z2VkKHRoaXMpOwogCiAgICAgcmV0dXJuIG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoV1RGTW92ZShm
bG9hdGluZ09iamVjdCkpOwogfQpAQCAtMjM5Myw5ICsyMzk2LDYgQEAgdm9pZCBSZW5kZXJCbG9j
a0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2JqZQogICAgICAgICAgICAgICAgIG1hcmtMaW5lc0RpcnR5
SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxCb3R0b20pOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgbV9mbG9hdGluZ09iamVjdHMtPnJlbW92ZSgmZmxvYXRpbmdPYmplY3QpOwotICAgICAgICAg
ICAgCi0gICAgICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4
aXN0aW5nQVhPYmplY3RDYWNoZSgpKQotICAgICAgICAgICAgICAgIGNhY2hlLT5jaGlsZHJlbkNo
YW5nZWQodGhpcyk7CiAgICAgICAgIH0KICAgICB9CiB9Cg==
</data>
<flag name="review"
          id="338276"
          type_id="1"
          status="-"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317793</attachid>
            <date>2017-08-10 00:47:00 -0700</date>
            <delta_ts>2017-08-10 09:15:56 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3028</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDUyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydGluZyBjaGFuZ2VzIGluIHIyMjA0NjMuIAor
ICAgICAgICBUaGUgaXNzdWUgaGVyZSBpcyB0aGF0IHdoZW4gYSBSZW5kZXJJbWFnZSBvYmplY3Qg
aXMgYmVpbmcgZGVzdHJveWVkLCB0aGUgY29ycmVzcG9uZGluZyAKKyAgICAgICAgYWNjZXNzaWJp
bGl0eSByZW5kZXIgb2JqZWN0IGNvdWxkIHN0aWxsIGJlIGFyb3VuZC4gQWNjZXNzaW5nIHRoZSBB
Y2Nlc3NpYmlsaXR5U1ZHUm9vdCBvYmplY3QKKyAgICAgICAgdGhhdCBsaW5rcyB0byB0aGlzIGF4
IG9iamVjdCB3aWxsIGxlYWQgdG8gYSBjcmFzaC4gRml4ZWQgdGhpcyBieSBtYWtpbmcgc3VyZSB3
ZSByZW1vdmUgdGhlIAorICAgICAgICBvYmplY3QgZnJvbSBhY2Nlc3NpYmlsaXR5IGNvcnJlY3Rs
eS4KKworICAgICAgICBDaGFuZ2VzIGFyZSBjb3ZlcmVkIGluIHRoZSB0ZXN0IGFkZGVkIGluIHIy
MjA0NjMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjp3aWxsQmVEZXN0cm95ZWQpOgorCiAyMDE3LTA4LTEwICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbVGV4TWFwXSBEcm9wIEdyYXBoaWNz
Q29udGV4dDNEIHVzYWdlIGZyb20gQml0bWFwVGV4dHVyZUdMCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24gMjIwNDk4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNTMsOSArMjM1Myw2IEBAIEZsb2F0aW5nT2JqZWN0KiBSZW5kZXJCbG9ja0Zsb3c6
Omluc2VydEYKICAgICB9CiAKICAgICBzZXRMb2dpY2FsV2lkdGhGb3JGbG9hdCgqZmxvYXRpbmdP
YmplY3QsIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGZsb2F0Qm94KSArIG1hcmdpblN0YXJ0Rm9yQ2hp
bGQoZmxvYXRCb3gpICsgbWFyZ2luRW5kRm9yQ2hpbGQoZmxvYXRCb3gpKTsKLSAgICAKLSAgICBp
ZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpKQotICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwogCiAgICAgcmV0dXJu
IG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoV1RGTW92ZShmbG9hdGluZ09iamVjdCkpOwogfQpAQCAt
MjM5Myw5ICsyMzkwLDYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2Jq
ZQogICAgICAgICAgICAgICAgIG1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxC
b3R0b20pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJl
bW92ZSgmZmxvYXRpbmdPYmplY3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoQVhP
YmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQot
ICAgICAgICAgICAgICAgIGNhY2hlLT5jaGlsZHJlbkNoYW5nZWQodGhpcyk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJ
KHJldmlzaW9uIDIyMDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsMTMgQEAgUmVuZGVySW1hZ2U6On5S
ZW5kZXJJbWFnZSgpCiAKIHZvaWQgUmVuZGVySW1hZ2U6OndpbGxCZURlc3Ryb3llZCgpCiB7Cisg
ICAgLy8gUmVtb3ZlIHRoaXMgZnJvbSBhY2Nlc3NpYmlsaXR5IGZpcnN0LCBzaW5jZSB0aGUgYmVs
b3cgc2h1dGRvd24oKSBmdW5jdGlvbgorICAgIC8vIHdpbGwgY2xlYXIgbV9jYWNoZWRJbWFnZSBh
bmQgbGVhZCB0byBhIHN0YWxlIGF4IHJlbmRlciBvYmplY3QuCisgICAgaWYgKFVOTElLRUxZKEFY
T2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpKSB7CisgICAgICAgIGlmIChBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisg
ICAgICAgICAgICBjYWNoZS0+cmVtb3ZlKHRoaXMpOworICAgIH0KKyAgICAKICAgICBpbWFnZVJl
c291cmNlKCkuc2h1dGRvd24oKTsKICAgICBSZW5kZXJSZXBsYWNlZDo6d2lsbEJlRGVzdHJveWVk
KCk7CiB9Cg==
</data>
<flag name="review"
          id="338300"
          type_id="1"
          status="-"
          setter="zalan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317814</attachid>
            <date>2017-08-10 09:15:56 -0700</date>
            <delta_ts>2017-08-10 09:16:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>3028</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDUyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydGluZyBjaGFuZ2VzIGluIHIyMjA0NjMuIAor
ICAgICAgICBUaGUgaXNzdWUgaGVyZSBpcyB0aGF0IHdoZW4gYSBSZW5kZXJJbWFnZSBvYmplY3Qg
aXMgYmVpbmcgZGVzdHJveWVkLCB0aGUgY29ycmVzcG9uZGluZyAKKyAgICAgICAgYWNjZXNzaWJp
bGl0eSByZW5kZXIgb2JqZWN0IGNvdWxkIHN0aWxsIGJlIGFyb3VuZC4gQWNjZXNzaW5nIHRoZSBB
Y2Nlc3NpYmlsaXR5U1ZHUm9vdCBvYmplY3QKKyAgICAgICAgdGhhdCBsaW5rcyB0byB0aGlzIGF4
IG9iamVjdCB3aWxsIGxlYWQgdG8gYSBjcmFzaC4gRml4ZWQgdGhpcyBieSBtYWtpbmcgc3VyZSB3
ZSByZW1vdmUgdGhlIAorICAgICAgICBvYmplY3QgZnJvbSBhY2Nlc3NpYmlsaXR5IGNvcnJlY3Rs
eS4KKworICAgICAgICBDaGFuZ2VzIGFyZSBjb3ZlcmVkIGluIHRoZSB0ZXN0IGFkZGVkIGluIHIy
MjA0NjMuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJsb2NrRmxvdzo6aW5zZXJ0RmxvYXRpbmdPYmplY3QpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93OjpyZW1vdmVGbG9hdGluZ09iamVjdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckltYWdlOjp3aWxsQmVEZXN0cm95ZWQpOgorCiAyMDE3LTA4LTEwICBaYW4gRG9iZXJzZWsg
IDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAogICAgICAgICBbVGV4TWFwXSBEcm9wIEdyYXBoaWNz
Q29udGV4dDNEIHVzYWdlIGZyb20gQml0bWFwVGV4dHVyZUdMCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAkocmV2aXNpb24gMjIwNDk4KQorKysg
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNTMsOSArMjM1Myw2IEBAIEZsb2F0aW5nT2JqZWN0KiBSZW5kZXJCbG9ja0Zsb3c6
Omluc2VydEYKICAgICB9CiAKICAgICBzZXRMb2dpY2FsV2lkdGhGb3JGbG9hdCgqZmxvYXRpbmdP
YmplY3QsIGxvZ2ljYWxXaWR0aEZvckNoaWxkKGZsb2F0Qm94KSArIG1hcmdpblN0YXJ0Rm9yQ2hp
bGQoZmxvYXRCb3gpICsgbWFyZ2luRW5kRm9yQ2hpbGQoZmxvYXRCb3gpKTsKLSAgICAKLSAgICBp
ZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpKQotICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMpOwogCiAgICAgcmV0dXJu
IG1fZmxvYXRpbmdPYmplY3RzLT5hZGQoV1RGTW92ZShmbG9hdGluZ09iamVjdCkpOwogfQpAQCAt
MjM5Myw5ICsyMzkwLDYgQEAgdm9pZCBSZW5kZXJCbG9ja0Zsb3c6OnJlbW92ZUZsb2F0aW5nT2Jq
ZQogICAgICAgICAgICAgICAgIG1hcmtMaW5lc0RpcnR5SW5CbG9ja1JhbmdlKDAsIGxvZ2ljYWxC
b3R0b20pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9mbG9hdGluZ09iamVjdHMtPnJl
bW92ZSgmZmxvYXRpbmdPYmplY3QpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoQVhP
YmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQot
ICAgICAgICAgICAgICAgIGNhY2hlLT5jaGlsZHJlbkNoYW5nZWQodGhpcyk7CiAgICAgICAgIH0K
ICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFnZS5jcHAJ
KHJldmlzaW9uIDIyMDQ5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJJbWFn
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0OCw2ICsxNDgsMTMgQEAgUmVuZGVySW1hZ2U6On5S
ZW5kZXJJbWFnZSgpCiAKIHZvaWQgUmVuZGVySW1hZ2U6OndpbGxCZURlc3Ryb3llZCgpCiB7Cisg
ICAgLy8gUmVtb3ZlIHRoaXMgZnJvbSBhY2Nlc3NpYmlsaXR5IGZpcnN0LCBzaW5jZSB0aGUgYmVs
b3cgc2h1dGRvd24oKSBmdW5jdGlvbgorICAgIC8vIHdpbGwgY2xlYXIgbV9jYWNoZWRJbWFnZSBh
bmQgbGVhZCB0byBhIHN0YWxlIGF4IHJlbmRlciBvYmplY3QuCisgICAgaWYgKFVOTElLRUxZKEFY
T2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpKSB7CisgICAgICAgIGlmIChBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisg
ICAgICAgICAgICBjYWNoZS0+cmVtb3ZlKHRoaXMpOworICAgIH0KKyAgICAKICAgICBpbWFnZVJl
c291cmNlKCkuc2h1dGRvd24oKTsKICAgICBSZW5kZXJSZXBsYWNlZDo6d2lsbEJlRGVzdHJveWVk
KCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317815</attachid>
            <date>2017-08-10 09:18:02 -0700</date>
            <delta_ts>2017-08-10 09:33:45 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4412</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDUyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydGluZyBjaGFuZ2VzIGluIHIyMjA0NjMuIAor
ICAgICAgICBUaGUgaXNzdWUgaGVyZSBpcyB0aGF0IHdoZW4gYSBSZW5kZXJJbWFnZSBvYmplY3Qg
aXMgYmVpbmcgZGVzdHJveWVkLCBpdHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBTVkcgcm9vdCBv
YmplY3QgbWlnaHQgc3RpbGwgYmUgaG9sZGluZyBvbnRvIGl0cyBjb3JyZXNwb25kaW5nIGFjY2Vz
c2liaWxpdHkgcmVuZGVyIG9iamVjdC4KKyAgICAgICAgQmVjYXVzZSB0aGUgZGV0YWNoaW5nIHdv
dWxkIGZhaWwgZHVlIHRvIGFjY2Vzc2liaWxpdHkgdXNpbmcgdGhlIENhY2hlZEltYWdlIG9iamVj
dCB0byAKKyAgICAgICAgcmV0cmlldmUgdGhlIFNWRyByb290LgorICAgICAgICBGaXhlZCB0aGlz
IGJ5IGNhY2hpbmcgdGhlIFNWRyByb290IGluIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgdG8g
bWFrZSBzdXJlIHRoZSBkZXRhY2hpbmcKKyAgICAgICAgd29ya3MgY29ycmVjdGx5LgorCisgICAg
ICAgIENoYW5nZXMgYXJlIGNvdmVyZWQgaW4gdGhlIHRlc3QgYWRkZWQgaW4gcjIyMDQ2My4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZHQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpp
bnNlcnRGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKwogMjAxNy0wOC0xMCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB3aW5kb3dzIGJ1aWxkLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMjA1MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDksNiArMTA5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KHJlbmRlcmVyLT5u
b2RlKCkpCiAgICAgLCBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9yZW1vdGVTVkdSb290
KG51bGxwdHIpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2Jq
ZWN0KHRydWUpOwpAQCAtMzAzNSw3ICszMDM2LDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6aXNTVkdJbWEKICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlTVkdSb290KiBy
b290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoUmV0cmlldmUpKQorICAgIEFjY2Vzc2liaWxpdHlT
VkdSb290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoUmV0cmlldmUpOworICAgIGlmICgh
cm9vdCkKKyAgICAgICAgcm9vdCA9IG1fcmVtb3RlU1ZHUm9vdDsKKyAgICAKKyAgICBpZiAocm9v
dCkKICAgICAgICAgcm9vdC0+c2V0UGFyZW50KG51bGxwdHIpOwogfQogCkBAIC0zMDg4LDYgKzMw
OTMsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJlbW90CiAgICAgaWYg
KCFyb290KQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgbV9yZW1vdGVTVkdSb290ID0gcm9v
dDsKICAgICByb290LT5zZXRQYXJlbnQodGhpcyk7CiAgICAgCiAgICAgaWYgKHJvb3QtPmFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9uIDIy
MDUyMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJvdGVjdGVkOgog
I2VuZGlmCiAKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgQWNjZXNzaWJpbGl0
eVNWR1Jvb3QqIG1fcmVtb3RlU1ZHUm9vdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZpc2lv
biAyMjA1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZsb2F0aW5nT2JqZWN0cy5oIgogI2lu
Y2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzUzLDkgKzIzNTIsNiBAQCBGbG9hdGluZ09iamVjdCogUmVu
ZGVyQmxvY2tGbG93OjppbnNlcnRGCiAgICAgfQogCiAgICAgc2V0TG9naWNhbFdpZHRoRm9yRmxv
YXQoKmZsb2F0aW5nT2JqZWN0LCBsb2dpY2FsV2lkdGhGb3JDaGlsZChmbG9hdEJveCkgKyBtYXJn
aW5TdGFydEZvckNoaWxkKGZsb2F0Qm94KSArIG1hcmdpbkVuZEZvckNoaWxkKGZsb2F0Qm94KSk7
Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGlu
Z0FYT2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgY2FjaGUtPmNoaWxkcmVuQ2hhbmdlZCh0aGlzKTsK
IAogICAgIHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKFdURk1vdmUoZmxvYXRpbmdPYmpl
Y3QpKTsKIH0KQEAgLTIzOTMsOSArMjM4OSw2IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93OjpyZW1v
dmVGbG9hdGluZ09iamUKICAgICAgICAgICAgICAgICBtYXJrTGluZXNEaXJ0eUluQmxvY2tSYW5n
ZSgwLCBsb2dpY2FsQm90dG9tKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZmxvYXRp
bmdPYmplY3RzLT5yZW1vdmUoJmZsb2F0aW5nT2JqZWN0KTsKLSAgICAgICAgICAgIAotICAgICAg
ICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSkKLSAgICAgICAgICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRoaXMp
OwogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317817</attachid>
            <date>2017-08-10 09:33:45 -0700</date>
            <delta_ts>2017-08-10 11:28:00 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4643</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDUyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDMwIEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFJldmVydGluZyBjaGFuZ2VzIGluIHIyMjA0NjMuIAor
ICAgICAgICBUaGUgaXNzdWUgaGVyZSBpcyB0aGF0IHdoZW4gYSBSZW5kZXJJbWFnZSBvYmplY3Qg
aXMgYmVpbmcgZGVzdHJveWVkLCBpdHMgYWNjZXNzaWJpbGl0eQorICAgICAgICBTVkcgcm9vdCBv
YmplY3QgbWlnaHQgc3RpbGwgYmUgaG9sZGluZyBvbnRvIGl0cyBjb3JyZXNwb25kaW5nIGFjY2Vz
c2liaWxpdHkgcmVuZGVyIG9iamVjdC4KKyAgICAgICAgQmVjYXVzZSB0aGUgZGV0YWNoaW5nIHdv
dWxkIGZhaWwgZHVlIHRvIGFjY2Vzc2liaWxpdHkgdXNpbmcgdGhlIENhY2hlZEltYWdlIG9iamVj
dCB0byAKKyAgICAgICAgcmV0cmlldmUgdGhlIFNWRyByb290LgorICAgICAgICBGaXhlZCB0aGlz
IGJ5IGNhY2hpbmcgdGhlIFNWRyByb290IGluIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgdG8g
bWFrZSBzdXJlIHRoZSBkZXRhY2hpbmcKKyAgICAgICAgd29ya3MgY29ycmVjdGx5LgorCisgICAg
ICAgIENoYW5nZXMgYXJlIGNvdmVyZWQgaW4gdGhlIHRlc3QgYWRkZWQgaW4gcjIyMDQ2My4KKwor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmRldGFjaFJlbW90ZVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkUmVtb3RlU1ZHQ2hpbGRyZW4pOgorICAgICAgICAqIGFjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAqIHJlbmRlcmluZy9S
ZW5kZXJCbG9ja0Zsb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQmxvY2tGbG93Ojpp
bnNlcnRGbG9hdGluZ09iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCbG9ja0Zsb3c6
OnJlbW92ZUZsb2F0aW5nT2JqZWN0KToKKwogMjAxNy0wOC0xMCAgQW50dGkgS29pdmlzdG8gIDxh
bnR0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCB3aW5kb3dzIGJ1aWxkLgpJbmRl
eDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMjA1MjIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMDksNiArMTA5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlcikKICAgICA6IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KHJlbmRlcmVyLT5u
b2RlKCkpCiAgICAgLCBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAgICwgbV9yZW1vdGVTVkdSb290
KG51bGxwdHIpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2Jq
ZWN0KHRydWUpOwpAQCAtMjk3MSw2ICsyOTcyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjpjbGVhckNoaQogewogICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmNsZWFyQ2hpbGRy
ZW4oKTsKICAgICBtX2NoaWxkcmVuRGlydHkgPSBmYWxzZTsKKyAgICBtX3JlbW90ZVNWR1Jvb3Qg
PSBudWxscHRyOwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZEltYWdl
TWFwQ2hpbGRyZW4oKQpAQCAtMzAzNSw3ICszMDM3LDExIEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdDo6aXNTVkdJbWEKICAgICAKIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6ZGV0YWNoUmVtb3RlU1ZHUm9vdCgpCiB7Ci0gICAgaWYgKEFjY2Vzc2liaWxpdHlTVkdSb290
KiByb290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoUmV0cmlldmUpKQorICAgIEFjY2Vzc2liaWxp
dHlTVkdSb290KiByb290ID0gcmVtb3RlU1ZHUm9vdEVsZW1lbnQoUmV0cmlldmUpOworICAgIGlm
ICghcm9vdCkKKyAgICAgICAgcm9vdCA9IG1fcmVtb3RlU1ZHUm9vdDsKKyAgICAKKyAgICBpZiAo
cm9vdCkKICAgICAgICAgcm9vdC0+c2V0UGFyZW50KG51bGxwdHIpOwogfQogCkBAIC0zMDg4LDYg
KzMwOTQsNyBAQCB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmFkZFJlbW90CiAgICAg
aWYgKCFyb290KQogICAgICAgICByZXR1cm47CiAgICAgCisgICAgbV9yZW1vdGVTVkdSb290ID0g
cm9vdDsKICAgICByb290LT5zZXRQYXJlbnQodGhpcyk7CiAgICAgCiAgICAgaWYgKHJvb3QtPmFj
Y2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmgJKHJldmlzaW9u
IDIyMDUyMikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTUsNiArMjE1LDcgQEAgcHJvdGVjdGVk
OgogI2VuZGlmCiAKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CisgICAgQWNjZXNzaWJp
bGl0eVNWR1Jvb3QqIG1fcmVtb3RlU1ZHUm9vdDsKIAogcHJpdmF0ZToKICAgICBib29sIGlzQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9ja0Zsb3cuY3BwCShyZXZp
c2lvbiAyMjA1MjIpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogCi0jaW5jbHVkZSAiQVhPYmplY3RDYWNo
ZS5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZsb2F0aW5nT2JqZWN0cy5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCkBAIC0yMzUzLDkgKzIzNTIsNiBAQCBGbG9hdGluZ09iamVjdCog
UmVuZGVyQmxvY2tGbG93OjppbnNlcnRGCiAgICAgfQogCiAgICAgc2V0TG9naWNhbFdpZHRoRm9y
RmxvYXQoKmZsb2F0aW5nT2JqZWN0LCBsb2dpY2FsV2lkdGhGb3JDaGlsZChmbG9hdEJveCkgKyBt
YXJnaW5TdGFydEZvckNoaWxkKGZsb2F0Qm94KSArIG1hcmdpbkVuZEZvckNoaWxkKGZsb2F0Qm94
KSk7Ci0gICAgCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlz
dGluZ0FYT2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgY2FjaGUtPmNoaWxkcmVuQ2hhbmdlZCh0aGlz
KTsKIAogICAgIHJldHVybiBtX2Zsb2F0aW5nT2JqZWN0cy0+YWRkKFdURk1vdmUoZmxvYXRpbmdP
YmplY3QpKTsKIH0KQEAgLTIzOTMsOSArMjM4OSw2IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpy
ZW1vdmVGbG9hdGluZ09iamUKICAgICAgICAgICAgICAgICBtYXJrTGluZXNEaXJ0eUluQmxvY2tS
YW5nZSgwLCBsb2dpY2FsQm90dG9tKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fZmxv
YXRpbmdPYmplY3RzLT5yZW1vdmUoJmZsb2F0aW5nT2JqZWN0KTsKLSAgICAgICAgICAgIAotICAg
ICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FY
T2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgICAgICAgICBjYWNoZS0+Y2hpbGRyZW5DaGFuZ2VkKHRo
aXMpOwogICAgICAgICB9CiAgICAgfQogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317834</attachid>
            <date>2017-08-10 12:48:19 -0700</date>
            <delta_ts>2017-08-10 12:49:29 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5012</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIyMDUzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA4LTEwICBOYW4gV2FuZyAgPG5fd2Fu
Z0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1l
bnQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FkZC1jaGls
ZHJlbi1wc2V1ZG8tZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L3Jlc291cmNlcy9zdmctY2lyY2xlLnN2ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnM6CisKKzIwMTctMDgtMTAgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxl
LmNvbT4KKworICAgICAgICBMYXlvdXQgdGVzdCBhY2Nlc3NpYmlsaXR5L3ByZXNzLXRhcmdldC11
c2VzLXRleHQtZGVzY2VuZGFudC1ub2RlLmh0bWwgaXMgZmxha3kuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNzIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzMzNzU2OTYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFNpbmNlIGFjY2Vzc2liaWxpdHlQcmVzcyBpcyBhc3luYyBub3csIHdlIHNob3Vs
ZCBnaXZlIGl0IG1vcmUgdGltZQorICAgICAgICB0byBtYWtlIHN1cmUgdGhlIGxvZ2dpbmcgaXMg
aW4gY29ycmVjdCBvcmRlci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcHJlc3MtdGFyZ2V0
LXVzZXMtdGV4dC1kZXNjZW5kYW50LW5vZGUuaHRtbDoKKwogMjAxNy0wOC0xMCAgQ29tbWl0IFF1
ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjIyMDQ2My4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNo
aWxkcmVuLXBzZXVkby1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50
eHQJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRy
ZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MTIgQEAKK0xhbmd1YWdlIEVtYWlsIAorTWFrZSBzdXJlIHRoYXQgd2UgYXJlIHVwZGF0aW5nIHRo
ZSByZW5kZXIgYmxvY2sgZmxvdyBlbGVtZW50J3MgY2hpbGRyZW4gY29ycmVjdGx5LgorCitPbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBlbGVtZW50LmNoaWxkcmVuQ291bnQgaXMg
MworUEFTUyBlbGVtZW50LmNoaWxkcmVuQ291bnQgaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbAko
bm9uZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1w
c2V1ZG8tZWxlbWVudC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+
Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwv
aGVhZD4KKworPHN0eWxlPgorLnBzZXVkbzo6YWZ0ZXIgeworICBjb250ZW50OiB1cmwocmVzb3Vy
Y2VzL3N2Zy1jaXJjbGUuc3ZnKTsKKyAgd2lkdGg6IDE4cHg7CisgIGhlaWdodDogMjBweDsKKyAg
cG9zaXRpb246IGFic29sdXRlOworICBtYXJnaW4tdG9wOiA2cHg7CisgIHJpZ2h0OiA2cHgKK30K
KworLnBzZXVkby5oaWRkZW46OmFmdGVyIHsKKyAgICBjb250ZW50OiAnICc7Cit9Cis8L3N0eWxl
PgorCis8Ym9keSBpZD0iYm9keSI+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cis8ZGl2IGlkPSJ0
ZXN0IiBzdHlsZT0iZmxvYXQgOiBsZWZ0OyI+Cis8c3Bhbj5MYW5ndWFnZTwvc3Bhbj4KKzxpbnB1
dCBpZD0idGVzdCI+Cis8L2Rpdj4KKworPGRpdiBpZD0iZmxvYXQiIHN0eWxlPSJkaXNwbGF5OiBp
bmxpbmUtYmxvY2s7IiBjbGFzcz0icHNldWRvIj4KKzxzcGFuIHJlcXVpcmVkPSIiIHN0eWxlPSJj
b2xvcjogcmdiKDE5NCwgMCwgMCk7Ij5FbWFpbDwvc3Bhbj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiBy
ZXF1aXJlZD0iIiBhcmlhLXJlcXVpcmVkPSJ0cnVlIiB2YWx1ZT0iIiBvbmtleXVwPSJoaWRlUHNl
dWRvKCk7Ij4KKzwvZGl2PgorCis8L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJN
YWtlIHN1cmUgdGhhdCB3ZSBhcmUgdXBkYXRpbmcgdGhlIHJlbmRlciBibG9jayBmbG93IGVsZW1l
bnQncyBjaGlsZHJlbiBjb3JyZWN0bHkuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJmbG9hdCIpOworICAgICAgICBzaG91bGRCZSgi
ZWxlbWVudC5jaGlsZHJlbkNvdW50IiwgIjMiKTsKKyAgICAgICAgCisgICAgICAgIGV2ZW50U2Vu
ZGVyLmtleURvd24oJ1x0Jyk7CisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1x0Jyk7Cisg
ICAgICAgIAorICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5jaGlsZHJlbkNvdW50IiwgIjIiKTsK
KyAgICAgICAgc2hvd1BzZXVkbygpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gaGlkZVBz
ZXVkbygpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbG9hdCIpLmNs
YXNzTmFtZSArPSAiaGlkZGVuIgorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlv
biBzaG93UHNldWRvKCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZs
b2F0IikuY2xhc3NOYW1lID0gInBzZXVkbyI7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAK
KyAgICAgICAgLy8gTWFrZSBzdXJlIGdldHRpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNoaWxk
cmVuIHdvbid0IGNhdXNlIGNyYXNoCisgICAgICAgIGVsZW1lbnQuYXR0cmlidXRlc09mQ2hpbGRy
ZW4oKTsKKyAgICB9CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctY2lyY2xlLnN2Zwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctY2lyY2xlLnN2Zwkobm9u
ZXhpc3RlbnQpCisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctY2ly
Y2xlLnN2Zwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzxzdmcgdmlld0JveD0iMCAw
IDk1IDUwIgorICAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGcg
c3Ryb2tlPSJncmVlbiIgZmlsbD0id2hpdGUiIHN0cm9rZS13aWR0aD0iNSI+CisgICAgICAgIDxj
aXJjbGUgY3g9IjI1IiBjeT0iMjUiIHI9IjE1Ii8+CisgICAgICAgIDx0ZXh0PmNpcmNsZTwvdGV4
dD4KKyAgICA8L2c+Cis8L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIwNTM4
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcg
Y29weSkKQEAgLTI2NTgsNiArMjY1OCw4IEBAIHdlYmtpdC5vcmcvYi8xMDI3NzYgbWVkaWEvdHJh
Y2svdHJhY2stY3UKIAogd2Via2l0Lm9yZy9iLzk4MTQ2IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5k
cy5odG1sIFsgRmFpbHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8xNzUzNDAgYWNjZXNzaWJpbGl0eS9h
ZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorCiAjIEVuYWJsZSB3aGVu
IHN1cHBvcnQgZHJhZy1hbmQtZHJvcCBhdXRvc2Nyb2xsaW5nCiB3ZWJraXQub3JnL2IvMzk3MjUg
ZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwgWyBTa2lwIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317835</attachid>
            <date>2017-08-10 12:49:57 -0700</date>
            <delta_ts>2017-08-10 13:17:33 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10472</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgd2UgbWFudWFs
eSBzZXQgdGhlIHBhcmVudCBvYmplY3Qgb2YgdGhlIEFjY2Vzc2liaWxpdHlTVkdSb290IG9iamVj
dAorICAgICAgICBhbmQgdGhlcmUgYXJlIGNoYW5jZXMgdGhhdCB0aGUgcGFyZW50IGRvZXNuJ3Qg
ZGV0YWNoIGl0IHByb3Blcmx5IGR1cmluZyB0aGUgcGFyZW50J3MgZGVzdHJveWluZworICAgICAg
ICBwcm9jZXNzLiBBY2Nlc3NpbmcgdGhlIHN0YWxlIHBhcmVudCBvYmplY3Qgd2lsbCBsZWFkIHRv
IGEgY3Jhc2guCisgICAgICAgIEZpeGVkIHRoaXMgYnkgbWFraW5nIHRoZSBwYXJlbnQgb2JqZWN0
IGEgd2VhayBwb2ludGVyIHNvIHdlIGRvbid0IGFjY2VzcyBhbiBpbnZhbGlkIG1lbW9yeS4gCisK
KyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y3JlYXRlV2Vha1B0cik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9v
dDo6QWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZH
Um9vdDo6cGFyZW50T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290Lmg6CisKIDIwMTctMDgtMTAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyMDUxNSkgW0dUS11b
Q01ha2VdIEJ1aWxkIHdpdGggRU5BQkxFX0dFT0xPQ0FUSU9OIGZhaWxzIG9uIERlYmlhbiBKZXNz
aWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIwNTM4KQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChyZW5k
ZXJlci0+bm9kZSgpKQogICAgICwgbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAsIG1fd2Vha1B0
ckZhY3RvcnkodGhpcykKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9yZW5kZXJlci0+c2V0SGFz
QVhPYmplY3QodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjIwNTM4KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKQEAgLTE5OCw2ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHBhc3N3
b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFdlYWtQdHI8QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdD4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCopOwpAQCAtMjE3LDYgKzIyMCw3IEBA
IHByb3RlY3RlZDoKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAKIHByaXZhdGU6Cisg
ICAgV2Vha1B0ckZhY3Rvcnk8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4gbV93ZWFrUHRyRmFj
dG9yeTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJs
ZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAJ
KHJldmlzaW9uIDIyMDUzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdS
b290KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dChyZW5kZXJlcikKLSAgICAsIG1fcGFyZW50KG51bGxwdHIpCiB7CiB9CiAKQEAgLTQ3LDEzICs0
NiwyMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IEFjY2Vzc2liaWxpdHlTCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVNWR1Jvb3QocmVuZGVyZXIpKTsKIH0K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6c2V0UGFyZW50KEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QgKnBhcmVudCkKK3sKKyAgICBpZiAocGFyZW50KQorICAgICAgICBtX3BhcmVudCA9
IHBhcmVudC0+Y3JlYXRlV2Vha1B0cigpOworICAgIGVsc2UKKyAgICAgICAgbV9wYXJlbnQgPSBu
dWxscHRyOworfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNWR1Jv
b3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBwYXJlbnQgd2FzIHNldCBi
ZWNhdXNlIHRoaXMgaXMgYSByZW1vdGUgU1ZHIHJlc291cmNlLCB1c2UgdGhhdAogICAgIC8vIGJ1
dCBvdGhlcndpc2UsIHdlIHNob3VsZCByZWx5IG9uIHRoZSBzdGFuZGFyZCByZW5kZXIgdHJlZSBm
b3IgdGhlIHBhcmVudC4KICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVu
dDsKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50LmdldCgpOwogICAgIAogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudDo6cGFyZW50T2JqZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCShyZXZp
c2lvbiAyMjA1MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTVkdSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IGNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpOwogICAgIAotICAg
IHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3BhcmVudCA9
IHBhcmVudDsgfQorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qq
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChSZW5kZXJP
YmplY3QqKTsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJp
bGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICBXZWFrUHRyPEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q+IG1fcGFyZW50OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyb3VwUm9sZTsgfQogfTsKICAgICAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMDUzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDI5IEBACisyMDE3LTA4LTEwICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1
cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8t
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9z
dmctY2lyY2xlLnN2ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKKzIwMTctMDgtMTAgIE5hbiBXYW5nICA8bl93YW5nQGFwcGxlLmNvbT4KKworICAg
ICAgICBMYXlvdXQgdGVzdCBhY2Nlc3NpYmlsaXR5L3ByZXNzLXRhcmdldC11c2VzLXRleHQtZGVz
Y2VuZGFudC1ub2RlLmh0bWwgaXMgZmxha3kuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUyNzIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzU2
OTYyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNp
bmNlIGFjY2Vzc2liaWxpdHlQcmVzcyBpcyBhc3luYyBub3csIHdlIHNob3VsZCBnaXZlIGl0IG1v
cmUgdGltZQorICAgICAgICB0byBtYWtlIHN1cmUgdGhlIGxvZ2dpbmcgaXMgaW4gY29ycmVjdCBv
cmRlci4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvcHJlc3MtdGFyZ2V0LXVzZXMtdGV4dC1k
ZXNjZW5kYW50LW5vZGUuaHRtbDoKKwogMjAxNy0wOC0xMCAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0
LXF1ZXVlQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIy
MDQ2My4KSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVk
by1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBlY3RlZC50eHQJKG5vbmV4aXN0
ZW50KQorKysgTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTIgQEAKK0xhbmd1
YWdlIEVtYWlsIAorTWFrZSBzdXJlIHRoYXQgd2UgYXJlIHVwZGF0aW5nIHRoZSByZW5kZXIgYmxv
Y2sgZmxvdyBlbGVtZW50J3MgY2hpbGRyZW4gY29ycmVjdGx5LgorCitPbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCisKKworUEFTUyBlbGVtZW50LmNoaWxkcmVuQ291bnQgaXMgMworUEFTUyBlbGVt
ZW50LmNoaWxkcmVuQ291bnQgaXMgMgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNo
aWxkcmVuLXBzZXVkby1lbGVtZW50Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbAkobm9uZXhpc3RlbnQp
CisrKyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVu
dC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworPHN0
eWxlPgorLnBzZXVkbzo6YWZ0ZXIgeworICBjb250ZW50OiB1cmwocmVzb3VyY2VzL3N2Zy1jaXJj
bGUuc3ZnKTsKKyAgd2lkdGg6IDE4cHg7CisgIGhlaWdodDogMjBweDsKKyAgcG9zaXRpb246IGFi
c29sdXRlOworICBtYXJnaW4tdG9wOiA2cHg7CisgIHJpZ2h0OiA2cHgKK30KKworLnBzZXVkby5o
aWRkZW46OmFmdGVyIHsKKyAgICBjb250ZW50OiAnICc7Cit9Cis8L3N0eWxlPgorCis8Ym9keSBp
ZD0iYm9keSI+CisKKzxkaXYgaWQ9ImNvbnRhaW5lciI+Cis8ZGl2IGlkPSJ0ZXN0IiBzdHlsZT0i
ZmxvYXQgOiBsZWZ0OyI+Cis8c3Bhbj5MYW5ndWFnZTwvc3Bhbj4KKzxpbnB1dCBpZD0idGVzdCI+
Cis8L2Rpdj4KKworPGRpdiBpZD0iZmxvYXQiIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7
IiBjbGFzcz0icHNldWRvIj4KKzxzcGFuIHJlcXVpcmVkPSIiIHN0eWxlPSJjb2xvcjogcmdiKDE5
NCwgMCwgMCk7Ij5FbWFpbDwvc3Bhbj4KKzxpbnB1dCB0eXBlPSJ0ZXh0IiByZXF1aXJlZD0iIiBh
cmlhLXJlcXVpcmVkPSJ0cnVlIiB2YWx1ZT0iIiBvbmtleXVwPSJoaWRlUHNldWRvKCk7Ij4KKzwv
ZGl2PgorCis8L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKworICAgIGRlc2NyaXB0aW9uKCJNYWtlIHN1cmUgdGhh
dCB3ZSBhcmUgdXBkYXRpbmcgdGhlIHJlbmRlciBibG9jayBmbG93IGVsZW1lbnQncyBjaGlsZHJl
biBjb3JyZWN0bHkuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KSB7CisgICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJmbG9hdCIpOworICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5jaGls
ZHJlbkNvdW50IiwgIjMiKTsKKyAgICAgICAgCisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24o
J1x0Jyk7CisgICAgICAgIGV2ZW50U2VuZGVyLmtleURvd24oJ1x0Jyk7CisgICAgICAgIAorICAg
ICAgICBzaG91bGRCZSgiZWxlbWVudC5jaGlsZHJlbkNvdW50IiwgIjIiKTsKKyAgICAgICAgc2hv
d1BzZXVkbygpOworICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gaGlkZVBzZXVkbygpIHsKKyAg
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbG9hdCIpLmNsYXNzTmFtZSArPSAi
aGlkZGVuIgorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBzaG93UHNldWRv
KCkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZsb2F0IikuY2xhc3NO
YW1lID0gInBzZXVkbyI7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgLy8g
TWFrZSBzdXJlIGdldHRpbmcgdGhlIGF0dHJpYnV0ZXMgb2YgaXRzIGNoaWxkcmVuIHdvbid0IGNh
dXNlIGNyYXNoCisgICAgICAgIGVsZW1lbnQuYXR0cmlidXRlc09mQ2hpbGRyZW4oKTsKKyAgICB9
CisKKzwvc2NyaXB0PgorCis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5q
cyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3Jlc291cmNlcy9zdmctY2lyY2xlLnN2Zwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctY2lyY2xlLnN2Zwkobm9uZXhpc3RlbnQpCisr
KyBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9zdmctY2lyY2xlLnN2Zwkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDcgQEAKKzxzdmcgdmlld0JveD0iMCAwIDk1IDUwIgorICAg
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgPGcgc3Ryb2tlPSJncmVl
biIgZmlsbD0id2hpdGUiIHN0cm9rZS13aWR0aD0iNSI+CisgICAgICAgIDxjaXJjbGUgY3g9IjI1
IiBjeT0iMjUiIHI9IjE1Ii8+CisgICAgICAgIDx0ZXh0PmNpcmNsZTwvdGV4dD4KKyAgICA8L2c+
Cis8L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9ndGsvVGVzdEV4cGVjdGF0aW9ucwkocmV2aXNpb24gMjIwNTM4KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMJKHdvcmtpbmcgY29weSkKQEAgLTI2
NTgsNiArMjY1OCw4IEBAIHdlYmtpdC5vcmcvYi8xMDI3NzYgbWVkaWEvdHJhY2svdHJhY2stY3UK
IAogd2Via2l0Lm9yZy9iLzk4MTQ2IGFjY2Vzc2liaWxpdHkvc3ZnLWJvdW5kcy5odG1sIFsgRmFp
bHVyZSBdCiAKK3dlYmtpdC5vcmcvYi8xNzUzNDAgYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4t
cHNldWRvLWVsZW1lbnQuaHRtbCBbIFNraXAgXQorCiAjIEVuYWJsZSB3aGVuIHN1cHBvcnQgZHJh
Zy1hbmQtZHJvcCBhdXRvc2Nyb2xsaW5nCiB3ZWJraXQub3JnL2IvMzk3MjUgZmFzdC9ldmVudHMv
ZHJhZy1hbmQtZHJvcC1hdXRvc2Nyb2xsLmh0bWwgWyBTa2lwIF0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317838</attachid>
            <date>2017-08-10 13:17:33 -0700</date>
            <delta_ts>2017-08-10 13:25:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10002</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgd2UgbWFudWFs
eSBzZXQgdGhlIHBhcmVudCBvYmplY3Qgb2YgdGhlIEFjY2Vzc2liaWxpdHlTVkdSb290IG9iamVj
dAorICAgICAgICBhbmQgdGhlcmUgYXJlIGNoYW5jZXMgdGhhdCB0aGUgcGFyZW50IGRvZXNuJ3Qg
ZGV0YWNoIGl0IHByb3Blcmx5IGR1cmluZyB0aGUgcGFyZW50J3MgZGVzdHJveWluZworICAgICAg
ICBwcm9jZXNzLiBBY2Nlc3NpbmcgdGhlIHN0YWxlIHBhcmVudCBvYmplY3Qgd2lsbCBsZWFkIHRv
IGEgY3Jhc2guCisgICAgICAgIEZpeGVkIHRoaXMgYnkgbWFraW5nIHRoZSBwYXJlbnQgb2JqZWN0
IGEgd2VhayBwb2ludGVyIHNvIHdlIGRvbid0IGFjY2VzcyBhbiBpbnZhbGlkIG1lbW9yeS4gCisK
KyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y3JlYXRlV2Vha1B0cik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9v
dDo6QWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZH
Um9vdDo6cGFyZW50T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290Lmg6CisKIDIwMTctMDgtMTAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyMDUxNSkgW0dUS11b
Q01ha2VdIEJ1aWxkIHdpdGggRU5BQkxFX0dFT0xPQ0FUSU9OIGZhaWxzIG9uIERlYmlhbiBKZXNz
aWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIwNTM4KQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChyZW5k
ZXJlci0+bm9kZSgpKQogICAgICwgbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAsIG1fd2Vha1B0
ckZhY3RvcnkodGhpcykKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9yZW5kZXJlci0+c2V0SGFz
QVhPYmplY3QodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjIwNTM4KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKQEAgLTE5OCw2ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHBhc3N3
b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFdlYWtQdHI8QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdD4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCopOwpAQCAtMjE3LDYgKzIyMCw3IEBA
IHByb3RlY3RlZDoKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAKIHByaXZhdGU6Cisg
ICAgV2Vha1B0ckZhY3Rvcnk8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4gbV93ZWFrUHRyRmFj
dG9yeTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJs
ZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAJ
KHJldmlzaW9uIDIyMDUzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdS
b290KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dChyZW5kZXJlcikKLSAgICAsIG1fcGFyZW50KG51bGxwdHIpCiB7CiB9CiAKQEAgLTQ3LDEzICs0
NiwyMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IEFjY2Vzc2liaWxpdHlTCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVNWR1Jvb3QocmVuZGVyZXIpKTsKIH0K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6c2V0UGFyZW50KEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QgKnBhcmVudCkKK3sKKyAgICBpZiAocGFyZW50KQorICAgICAgICBtX3BhcmVudCA9
IHBhcmVudC0+Y3JlYXRlV2Vha1B0cigpOworICAgIGVsc2UKKyAgICAgICAgbV9wYXJlbnQgPSBu
dWxscHRyOworfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNWR1Jv
b3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBwYXJlbnQgd2FzIHNldCBi
ZWNhdXNlIHRoaXMgaXMgYSByZW1vdGUgU1ZHIHJlc291cmNlLCB1c2UgdGhhdAogICAgIC8vIGJ1
dCBvdGhlcndpc2UsIHdlIHNob3VsZCByZWx5IG9uIHRoZSBzdGFuZGFyZCByZW5kZXIgdHJlZSBm
b3IgdGhlIHBhcmVudC4KICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVu
dDsKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50LmdldCgpOwogICAgIAogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudDo6cGFyZW50T2JqZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCShyZXZp
c2lvbiAyMjA1MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTVkdSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IGNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpOwogICAgIAotICAg
IHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3BhcmVudCA9
IHBhcmVudDsgfQorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qq
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChSZW5kZXJP
YmplY3QqKTsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJp
bGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICBXZWFrUHRyPEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q+IG1fcGFyZW50OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyb3VwUm9sZTsgfQogfTsKICAgICAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMDUzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTEwICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1
cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8t
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9z
dmctY2lyY2xlLnN2ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTctMDgtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjA0NjMuCkluZGV4OiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hp
bGRyZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitMYW5ndWFnZSBFbWFpbCAKK01h
a2Ugc3VyZSB0aGF0IHdlIGFyZSB1cGRhdGluZyB0aGUgcmVuZGVyIGJsb2NrIGZsb3cgZWxlbWVu
dCdzIGNoaWxkcmVuIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZWxlbWVudC5jaGlsZHJlbkNvdW50IGlzIDMKK1BBU1MgZWxlbWVudC5jaGlsZHJlbkNv
dW50IGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8t
ZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRk
LWNoaWxkcmVuLXBzZXVkby1lbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxzdHlsZT4KKy5wc2V1ZG86
OmFmdGVyIHsKKyAgY29udGVudDogdXJsKHJlc291cmNlcy9zdmctY2lyY2xlLnN2Zyk7CisgIHdp
ZHRoOiAxOHB4OworICBoZWlnaHQ6IDIwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbWFy
Z2luLXRvcDogNnB4OworICByaWdodDogNnB4Cit9CisKKy5wc2V1ZG8uaGlkZGVuOjphZnRlciB7
CisgICAgY29udGVudDogJyAnOworfQorPC9zdHlsZT4KKworPGJvZHkgaWQ9ImJvZHkiPgorCis8
ZGl2IGlkPSJjb250YWluZXIiPgorPGRpdiBpZD0idGVzdCIgc3R5bGU9ImZsb2F0IDogbGVmdDsi
PgorPHNwYW4+TGFuZ3VhZ2U8L3NwYW4+Cis8aW5wdXQgaWQ9InRlc3QiPgorPC9kaXY+CisKKzxk
aXYgaWQ9ImZsb2F0IiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyIgY2xhc3M9InBzZXVk
byI+Cis8c3BhbiByZXF1aXJlZD0iIiBzdHlsZT0iY29sb3I6IHJnYigxOTQsIDAsIDApOyI+RW1h
aWw8L3NwYW4+Cis8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQ9IiIgYXJpYS1yZXF1aXJlZD0i
dHJ1ZSIgdmFsdWU9IiIgb25rZXl1cD0iaGlkZVBzZXVkbygpOyI+Cis8L2Rpdj4KKworPC9kaXY+
CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIHRoYXQgd2UgYXJlIHVwZGF0
aW5nIHRoZSByZW5kZXIgYmxvY2sgZmxvdyBlbGVtZW50J3MgY2hpbGRyZW4gY29ycmVjdGx5LiIp
OworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2
YXIgZWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiZmxvYXQiKTsKKyAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQuY2hpbGRyZW5Db3VudCIsICIz
Iik7CisgICAgICAgIAorICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgICAgICAKKyAgICAgICAgc2hvdWxkQmUo
ImVsZW1lbnQuY2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgIHNob3dQc2V1ZG8oKTsKKyAg
ICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGhpZGVQc2V1ZG8oKSB7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZmxvYXQiKS5jbGFzc05hbWUgKz0gImhpZGRlbiIKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gc2hvd1BzZXVkbygpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbG9hdCIpLmNsYXNzTmFtZSA9ICJwc2V1ZG8i
OworICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSBnZXR0
aW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGl0cyBjaGlsZHJlbiB3b24ndCBjYXVzZSBjcmFzaAorICAg
ICAgICBlbGVtZW50LmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CisgICAgfQorCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJj
ZXMvc3ZnLWNpcmNsZS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9yZXNvdXJjZXMvc3ZnLWNpcmNsZS5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3ZnLWNpcmNsZS5zdmcJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3IEBACis8c3ZnIHZpZXdCb3g9IjAgMCA5NSA1MCIKKyAgICB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxnIHN0cm9rZT0iZ3JlZW4iIGZpbGw9IndoaXRl
IiBzdHJva2Utd2lkdGg9IjUiPgorICAgICAgICA8Y2lyY2xlIGN4PSIyNSIgY3k9IjI1IiByPSIx
NSIvPgorICAgICAgICA8dGV4dD5jaXJjbGU8L3RleHQ+CisgICAgPC9nPgorPC9zdmc+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMJKHJldmlzaW9uIDIyMDUzOCkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2d0ay9UZXN0RXhwZWN0YXRpb25zCSh3b3JraW5nIGNvcHkpCkBAIC0yNjU4LDYgKzI2NTgsOCBA
QCB3ZWJraXQub3JnL2IvMTAyNzc2IG1lZGlhL3RyYWNrL3RyYWNrLWN1CiAKIHdlYmtpdC5vcmcv
Yi85ODE0NiBhY2Nlc3NpYmlsaXR5L3N2Zy1ib3VuZHMuaHRtbCBbIEZhaWx1cmUgXQogCit3ZWJr
aXQub3JnL2IvMTc1MzQwIGFjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50
Lmh0bWwgWyBTa2lwIF0KKwogIyBFbmFibGUgd2hlbiBzdXBwb3J0IGRyYWctYW5kLWRyb3AgYXV0
b3Njcm9sbGluZwogd2Via2l0Lm9yZy9iLzM5NzI1IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3At
YXV0b3Njcm9sbC5odG1sIFsgU2tpcCBdCiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>317839</attachid>
            <date>2017-08-10 13:25:42 -0700</date>
            <delta_ts>2017-08-10 15:03:21 -0700</delta_ts>
            <desc>patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>9428</size>
            <attacher name="Nan Wang">n_wang</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMDU0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA4LTEwICBOYW4gV2Fu
ZyAgPG5fd2FuZ0BhcHBsZS5jb20+CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3Q6OnN1cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgd2UgbWFudWFs
eSBzZXQgdGhlIHBhcmVudCBvYmplY3Qgb2YgdGhlIEFjY2Vzc2liaWxpdHlTVkdSb290IG9iamVj
dAorICAgICAgICBhbmQgdGhlcmUgYXJlIGNoYW5jZXMgdGhhdCB0aGUgcGFyZW50IGRvZXNuJ3Qg
ZGV0YWNoIGl0IHByb3Blcmx5IGR1cmluZyB0aGUgcGFyZW50J3MgZGVzdHJveWluZworICAgICAg
ICBwcm9jZXNzLiBBY2Nlc3NpbmcgdGhlIHN0YWxlIHBhcmVudCBvYmplY3Qgd2lsbCBsZWFkIHRv
IGEgY3Jhc2guCisgICAgICAgIEZpeGVkIHRoaXMgYnkgbWFraW5nIHRoZSBwYXJlbnQgb2JqZWN0
IGEgd2VhayBwb2ludGVyIHNvIHdlIGRvbid0IGFjY2VzcyBhbiBpbnZhbGlkIG1lbW9yeS4gCisK
KyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQu
aHRtbAorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5oOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y3JlYXRlV2Vha1B0cik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5U1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZHUm9v
dDo6QWNjZXNzaWJpbGl0eVNWR1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVNWR1Jvb3Q6OnNldFBhcmVudCk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U1ZH
Um9vdDo6cGFyZW50T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlTVkdSb290Lmg6CisKIDIwMTctMDgtMTAgIE1pY2hhZWwgQ2F0YW56YXJvICA8bWNh
dGFuemFyb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIyMDUxNSkgW0dUS11b
Q01ha2VdIEJ1aWxkIHdpdGggRU5BQkxFX0dFT0xPQ0FUSU9OIGZhaWxzIG9uIERlYmlhbiBKZXNz
aWUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24gMjIwNTM4KQorKysgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChyZW5k
ZXJlci0+bm9kZSgpKQogICAgICwgbV9yZW5kZXJlcihyZW5kZXJlcikKKyAgICAsIG1fd2Vha1B0
ckZhY3RvcnkodGhpcykKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9yZW5kZXJlci0+c2V0SGFz
QVhPYmplY3QodHJ1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaAkocmV2aXNpb24gMjIwNTM4KQor
KysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5Tm9kZU9iamVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICAKQEAgLTE5OCw2ICsxOTksOCBAQCBwdWJsaWM6CiAgICAgQWNjZXNzaWJpbGl0eVJv
bGUgcm9sZVZhbHVlRm9yTVNBQSgpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgU3RyaW5nIHBhc3N3
b3JkRmllbGRWYWx1ZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIAorICAgIFdlYWtQdHI8QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdD4gY3JlYXRlV2Vha1B0cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZh
Y3RvcnkuY3JlYXRlV2Vha1B0cigpOyB9CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCopOwpAQCAtMjE3LDYgKzIyMCw3IEBA
IHByb3RlY3RlZDoKICAgICBSZW5kZXJPYmplY3QqIG1fcmVuZGVyZXI7CiAKIHByaXZhdGU6Cisg
ICAgV2Vha1B0ckZhY3Rvcnk8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4gbV93ZWFrUHRyRmFj
dG9yeTsKICAgICBib29sIGlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KICAgICB2b2lkIGFyaWFMaXN0Ym94U2VsZWN0ZWRDaGlsZHJlbihB
Y2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKICAgICB2b2lkIGFyaWFMaXN0Ym94VmlzaWJs
ZUNoaWxkcmVuKEFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5jcHAJ
KHJldmlzaW9uIDIyMDUzOCkKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw3ICszNSw2IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogQWNjZXNzaWJpbGl0eVNWR1Jvb3Q6OkFjY2Vzc2liaWxpdHlTVkdS
b290KFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiAgICAgOiBBY2Nlc3NpYmlsaXR5U1ZHRWxlbWVu
dChyZW5kZXJlcikKLSAgICAsIG1fcGFyZW50KG51bGxwdHIpCiB7CiB9CiAKQEAgLTQ3LDEzICs0
NiwyMSBAQCBSZWY8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IEFjY2Vzc2liaWxpdHlTCiB7CiAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgQWNjZXNzaWJpbGl0eVNWR1Jvb3QocmVuZGVyZXIpKTsKIH0K
Kwordm9pZCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdDo6c2V0UGFyZW50KEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QgKnBhcmVudCkKK3sKKyAgICBpZiAocGFyZW50KQorICAgICAgICBtX3BhcmVudCA9
IHBhcmVudC0+Y3JlYXRlV2Vha1B0cigpOworICAgIGVsc2UKKyAgICAgICAgbV9wYXJlbnQgPSBu
dWxscHRyOworfQogICAgIAogQWNjZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVNWR1Jv
b3Q6OnBhcmVudE9iamVjdCgpIGNvbnN0CiB7CiAgICAgLy8gSWYgYSBwYXJlbnQgd2FzIHNldCBi
ZWNhdXNlIHRoaXMgaXMgYSByZW1vdGUgU1ZHIHJlc291cmNlLCB1c2UgdGhhdAogICAgIC8vIGJ1
dCBvdGhlcndpc2UsIHdlIHNob3VsZCByZWx5IG9uIHRoZSBzdGFuZGFyZCByZW5kZXIgdHJlZSBm
b3IgdGhlIHBhcmVudC4KICAgICBpZiAobV9wYXJlbnQpCi0gICAgICAgIHJldHVybiBtX3BhcmVu
dDsKKyAgICAgICAgcmV0dXJuIG1fcGFyZW50LmdldCgpOwogICAgIAogICAgIHJldHVybiBBY2Nl
c3NpYmlsaXR5U1ZHRWxlbWVudDo6cGFyZW50T2JqZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTVkdSb290LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U1ZHUm9vdC5oCShyZXZp
c2lvbiAyMjA1MzgpCisrKyBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlTVkdSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNwcmFnbWEgb25j
ZQogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eVNWR0VsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYv
V2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDcgKzM4LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8QWNjZXNzaWJpbGl0eVNWR1Jvb3Q+IGNyZWF0ZShSZW5kZXJP
YmplY3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5U1ZHUm9vdCgpOwogICAgIAotICAg
IHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCkgeyBtX3BhcmVudCA9
IHBhcmVudDsgfQorICAgIHZvaWQgc2V0UGFyZW50KEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Qq
KTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBBY2Nlc3NpYmlsaXR5U1ZHUm9vdChSZW5kZXJP
YmplY3QqKTsKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJpdmF0ZToKICAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBwYXJlbnRPYmplY3QoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzQWNjZXNzaWJp
bGl0eVNWR1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBtX3BhcmVudDsKKyAgICBXZWFrUHRyPEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q+IG1fcGFyZW50OwogICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGVWYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEdyb3VwUm9sZTsgfQogfTsKICAgICAKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMDUzOCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE2IEBACisyMDE3LTA4LTEwICBOYW4gV2FuZyAgPG5fd2FuZ0BhcHBsZS5jb20+
CisKKyAgICAgICAgQVg6IGNyYXNoIGF0IFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnN1
cHBvcnRzQVJJQUxpdmVSZWdpb24oKSBjb25zdCArIDI0CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUzNDAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzMzNzgyMTU5PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8t
ZWxlbWVudC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L3Jlc291cmNlcy9z
dmctY2lyY2xlLnN2ZzogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisKIDIwMTctMDgtMTAgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIyMjA0NjMuCkluZGV4OiBM
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8tZWxlbWVudC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hp
bGRyZW4tcHNldWRvLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShub25leGlzdGVudCkKKysrIExheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRkLWNoaWxkcmVuLXBzZXVkby1lbGVtZW50LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACitMYW5ndWFnZSBFbWFpbCAKK01h
a2Ugc3VyZSB0aGF0IHdlIGFyZSB1cGRhdGluZyB0aGUgcmVuZGVyIGJsb2NrIGZsb3cgZWxlbWVu
dCdzIGNoaWxkcmVuIGNvcnJlY3RseS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgZWxlbWVudC5jaGlsZHJlbkNvdW50IGlzIDMKK1BBU1MgZWxlbWVudC5jaGlsZHJlbkNv
dW50IGlzIDIKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVU
RQorCkluZGV4OiBMYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2FkZC1jaGlsZHJlbi1wc2V1ZG8t
ZWxlbWVudC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvYWRk
LWNoaWxkcmVuLXBzZXVkby1lbGVtZW50Lmh0bWwJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9hZGQtY2hpbGRyZW4tcHNldWRvLWVsZW1lbnQuaHRtbAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDcwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzxzdHlsZT4KKy5wc2V1ZG86
OmFmdGVyIHsKKyAgY29udGVudDogdXJsKHJlc291cmNlcy9zdmctY2lyY2xlLnN2Zyk7CisgIHdp
ZHRoOiAxOHB4OworICBoZWlnaHQ6IDIwcHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbWFy
Z2luLXRvcDogNnB4OworICByaWdodDogNnB4Cit9CisKKy5wc2V1ZG8uaGlkZGVuOjphZnRlciB7
CisgICAgY29udGVudDogJyAnOworfQorPC9zdHlsZT4KKworPGJvZHkgaWQ9ImJvZHkiPgorCis8
ZGl2IGlkPSJjb250YWluZXIiPgorPGRpdiBpZD0idGVzdCIgc3R5bGU9ImZsb2F0IDogbGVmdDsi
PgorPHNwYW4+TGFuZ3VhZ2U8L3NwYW4+Cis8aW5wdXQgaWQ9InRlc3QiPgorPC9kaXY+CisKKzxk
aXYgaWQ9ImZsb2F0IiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrOyIgY2xhc3M9InBzZXVk
byI+Cis8c3BhbiByZXF1aXJlZD0iIiBzdHlsZT0iY29sb3I6IHJnYigxOTQsIDAsIDApOyI+RW1h
aWw8L3NwYW4+Cis8aW5wdXQgdHlwZT0idGV4dCIgcmVxdWlyZWQ9IiIgYXJpYS1yZXF1aXJlZD0i
dHJ1ZSIgdmFsdWU9IiIgb25rZXl1cD0iaGlkZVBzZXVkbygpOyI+Cis8L2Rpdj4KKworPC9kaXY+
CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisK
KzxzY3JpcHQ+CisKKyAgICBkZXNjcmlwdGlvbigiTWFrZSBzdXJlIHRoYXQgd2UgYXJlIHVwZGF0
aW5nIHRoZSByZW5kZXIgYmxvY2sgZmxvdyBlbGVtZW50J3MgY2hpbGRyZW4gY29ycmVjdGx5LiIp
OworCisgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICB2
YXIgZWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiZmxvYXQiKTsKKyAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQuY2hpbGRyZW5Db3VudCIsICIz
Iik7CisgICAgICAgIAorICAgICAgICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgICAg
ICBldmVudFNlbmRlci5rZXlEb3duKCdcdCcpOworICAgICAgICAKKyAgICAgICAgc2hvdWxkQmUo
ImVsZW1lbnQuY2hpbGRyZW5Db3VudCIsICIyIik7CisgICAgICAgIHNob3dQc2V1ZG8oKTsKKyAg
ICAgICAgCisgICAgICAgIGZ1bmN0aW9uIGhpZGVQc2V1ZG8oKSB7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgiZmxvYXQiKS5jbGFzc05hbWUgKz0gImhpZGRlbiIKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gc2hvd1BzZXVkbygpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmbG9hdCIpLmNsYXNzTmFtZSA9ICJwc2V1ZG8i
OworICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIE1ha2Ugc3VyZSBnZXR0
aW5nIHRoZSBhdHRyaWJ1dGVzIG9mIGl0cyBjaGlsZHJlbiB3b24ndCBjYXVzZSBjcmFzaAorICAg
ICAgICBlbGVtZW50LmF0dHJpYnV0ZXNPZkNoaWxkcmVuKCk7CisgICAgfQorCis8L3NjcmlwdD4K
KworPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9yZXNvdXJj
ZXMvc3ZnLWNpcmNsZS5zdmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9yZXNvdXJjZXMvc3ZnLWNpcmNsZS5zdmcJKG5vbmV4aXN0ZW50KQorKysgTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9yZXNvdXJjZXMvc3ZnLWNpcmNsZS5zdmcJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw3IEBACis8c3ZnIHZpZXdCb3g9IjAgMCA5NSA1MCIKKyAgICB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPgorICAgIDxnIHN0cm9rZT0iZ3JlZW4iIGZpbGw9IndoaXRl
IiBzdHJva2Utd2lkdGg9IjUiPgorICAgICAgICA8Y2lyY2xlIGN4PSIyNSIgY3k9IjI1IiByPSIx
NSIvPgorICAgICAgICA8dGV4dD5jaXJjbGU8L3RleHQ+CisgICAgPC9nPgorPC9zdmc+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="338342"
          type_id="1"
          status="+"
          setter="cfleizach"
    />
          </attachment>
      

    </bug>

</bugzilla>