<?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>65595</bug_id>
          
          <creation_ts>2011-08-02 23:14:14 -0700</creation_ts>
          <short_desc>&lt;iframe&gt; inside shadow tree should be invisible from the host document.</short_desc>
          <delta_ts>2012-03-06 15:29:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78475</dependson>
          <blocked>72352</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kent Tamura">tkent</reporter>
          <assigned_to name="Kent Tamura">tkent</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dominicc</cc>
    
    <cc>hayato</cc>
    
    <cc>japhet</cc>
    
    <cc>morrita</cc>
    
    <cc>rniwa</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>sam</cc>
    
    <cc>shinyak</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>445729</commentid>
    <comment_count>0</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-02 23:14:14 -0700</bug_when>
    <thetext>&lt;iframe&gt; in a shadow tree have some problems for now.

 - hide shadow frames from windows.frames
 - Loading in a shadow frame shouldn&apos;t update the history.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445750</commentid>
    <comment_count>1</comment_count>
      <attachid>102749</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-03 00:47:08 -0700</bug_when>
    <thetext>Created attachment 102749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445756</commentid>
    <comment_count>2</comment_count>
      <attachid>102749</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-03 01:25:17 -0700</bug_when>
    <thetext>Comment on attachment 102749
Patch

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

Another idea is to maintain a separate list for shadow frame.

&gt; Source/WebCore/page/FrameTree.cpp:26
&gt; +#include &quot;HTMLFrameOwnerElement.h&quot;

Is this required?

&gt; Source/WebCore/page/FrameTree.cpp:70
&gt; +    while (frame-&gt;isInShadowTree())

is fram always non-null?

&gt; Source/WebCore/page/FrameTree.cpp:346
&gt; +    if (frame)

Do we need this check?

&gt; Source/WebCore/page/FrameTree.h:55
&gt; +        // The number of child frames excluding shadow frames.

This is obvious from the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445764</commentid>
    <comment_count>3</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-08-03 01:59:42 -0700</bug_when>
    <thetext>AFAICT, with this patch one cannot use firstChild(), nextChild(), previousSibling and nextSibling() within shadow trees at all. Rather than skipping frames where isInShadowTree() is true, it might be better to skip frames where the treeScope is different (?).

Also, in case the HTML of an &lt;iframe&gt; within a shadow tree includes itself an &lt;iframe&gt;, isInShadowTree() for the nested &lt;iframe&gt; would be false, and the frame thus visible. However, since the nested &lt;iframe&gt; got included by a shadow tree, this seems to run counter to the intent of the patch (?).

In the long run I wonder if it wasn&apos;t possible to have frame trees at the TreeScope level instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445765</commentid>
    <comment_count>4</comment_count>
      <attachid>102749</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-03 02:00:18 -0700</bug_when>
    <thetext>Comment on attachment 102749
Patch

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

Thank you for reviewing.

&gt; Another idea is to maintain a separate list for shadow frame.

It hink the current idea is better to maintain.  We might want to change the behavior in the future so that loading for shadow iframes updates the browser history.

&gt;&gt; Source/WebCore/page/FrameTree.cpp:26

&gt; 
&gt; Is this required?

It&apos;s not required.  Removed.

&gt;&gt; Source/WebCore/page/FrameTree.cpp:70
&gt;&gt; +    while (frame-&gt;isInShadowTree())
&gt; 
&gt; is fram always non-null?

frame can be null.  But it&apos;s safe to call 0-&gt;isInShadowTree().

&gt;&gt; Source/WebCore/page/FrameTree.cpp:346
&gt;&gt; +    if (frame)
&gt; 
&gt; Do we need this check?

It&apos;s not needed.  frame is always non-0 in this case.
Fixed.

&gt;&gt; Source/WebCore/page/FrameTree.h:55
&gt;&gt; +        // The number of child frames excluding shadow frames.
&gt; 
&gt; This is obvious from the code.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445768</commentid>
    <comment_count>5</comment_count>
      <attachid>102749</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-03 02:09:12 -0700</bug_when>
    <thetext>Comment on attachment 102749
Patch

Could you add test for dynamic frame tree modification like
- from main document to shadow tree (and vice versa)
- from a shadow tree to another shadow tree
?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445774</commentid>
    <comment_count>6</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-03 02:27:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; AFAICT, with this patch one cannot use firstChild(), nextChild(), previousSibling and nextSibling() within shadow trees at all. Rather than skipping frames where isInShadowTree() is true, it might be better to skip frames where the treeScope is different (?).

It&apos;s reasonable.  I need to investigate what we should do for Frame::ownerElement() == 0.

&gt; Also, in case the HTML of an &lt;iframe&gt; within a shadow tree includes itself an &lt;iframe&gt;, isInShadowTree() for the nested &lt;iframe&gt; would be false, and the frame thus visible. However, since the nested &lt;iframe&gt; got included by a shadow tree, this seems to run counter to the intent of the patch (?).

In this case, a deeper &lt;iframe&gt; might update the browser history.  I&apos;ll make a test and check the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445776</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-03 02:29:30 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 102749 [details])
&gt; Could you add test for dynamic frame tree modification like
&gt; - from main document to shadow tree (and vice versa)
&gt; - from a shadow tree to another shadow tree
&gt; ?

Do they make sense for the component model?
If such cases can be made only by window.internals, I don&apos;t think we should take care of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445931</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-03 10:22:02 -0700</bug_when>
    <thetext>What&apos;s the use case for having an iframe in a shadow tree? Can we just disallow them instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446271</commentid>
    <comment_count>9</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-08-03 18:41:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; What&apos;s the use case for having an iframe in a shadow tree? Can we just disallow them instead?

iframes in shadow tree have been discussed as one way to achieve strong isolation between the document and (parts of) a component.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446292</commentid>
    <comment_count>10</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-03 19:50:24 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; What&apos;s the use case for having an iframe in a shadow tree? Can we just disallow them instead?

A patch in Bug 53961 uses it to inject a lot of style sheet and JavaScript code into a shadow tree.
I think we have no other ways to execute JavaScript code in shadow trees without polluting the global context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446293</commentid>
    <comment_count>11</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-03 19:56:12 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; What&apos;s the use case for having an iframe in a shadow tree? Can we just disallow them instead?
&gt; 
&gt; A patch in Bug 53961 uses it to inject a lot of style sheet and JavaScript code into a shadow tree.
&gt; I think we have no other ways to execute JavaScript code in shadow trees without polluting the global context.

That sounds like a massive hack. I know you really want that calendar to land, but shouldn&apos;t we try to solve this problem properly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446310</commentid>
    <comment_count>12</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-08-03 21:06:20 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; What&apos;s the use case for having an iframe in a shadow tree? Can we just disallow them instead?
&gt; &gt; 
&gt; &gt; A patch in Bug 53961 uses it to inject a lot of style sheet and JavaScript code into a shadow tree.
&gt; &gt; I think we have no other ways to execute JavaScript code in shadow trees without polluting the global context.
&gt; 
&gt; That sounds like a massive hack. I know you really want that calendar to land, but shouldn&apos;t we try to solve this problem properly?
This might be a great opportunity to think about isolation:
If you want to create components in non intrusive way, what do we need?
This sounds worth to investigate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446338</commentid>
    <comment_count>13</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-03 22:57:34 -0700</bug_when>
    <thetext>I thought that the whole purpose of shadow trees was to provide isolation. If we need iframes for that, we could just as well remove shadow tree support and use iframes everywhere, couldn&apos;t we? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>446941</commentid>
    <comment_count>14</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-04 18:03:17 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; &gt; A patch in Bug 53961 uses it to inject a lot of style sheet and JavaScript code into a shadow tree.
&gt; &gt; I think we have no other ways to execute JavaScript code in shadow trees without polluting the global context.
&gt; 
&gt; That sounds like a massive hack. I know you really want that calendar to land, but shouldn&apos;t we try to solve this problem properly?

Yes, I really want to make the progress of the calendar picker.
I don&apos;t think implementing &quot;the proper way&quot; will be done in a few months, and the iframe-in-shadow might be needed anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447120</commentid>
    <comment_count>15</comment_count>
      <attachid>103051</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 01:44:25 -0700</bug_when>
    <thetext>Created attachment 103051
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447125</commentid>
    <comment_count>16</comment_count>
      <attachid>103051</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 02:00:06 -0700</bug_when>
    <thetext>Comment on attachment 103051
Patch 2

Attachment 103051 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9321002</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447126</commentid>
    <comment_count>17</comment_count>
      <attachid>103053</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 02:02:27 -0700</bug_when>
    <thetext>Created attachment 103053
Patch 3

Include Document.h for Chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447136</commentid>
    <comment_count>18</comment_count>
      <attachid>103053</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 02:39:11 -0700</bug_when>
    <thetext>Comment on attachment 103053
Patch 3

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

New failing tests:
fast/frames/layout-after-destruction.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447153</commentid>
    <comment_count>19</comment_count>
      <attachid>103059</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-05 04:30:02 -0700</bug_when>
    <thetext>Created attachment 103059
Patch 4

Fix a re-parenting bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447236</commentid>
    <comment_count>20</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-08-05 09:17:46 -0700</bug_when>
    <thetext>I still don&apos;t understand what the plan is here. Having iframes in shadow trees is a long term liability, and in the end, they should probably not be supported at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447241</commentid>
    <comment_count>21</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2011-08-05 09:35:49 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I still don&apos;t understand what the plan is here. Having iframes in shadow trees is a long term liability, and in the end, they should probably not be supported at all.

Having iframes in shadow DOM is not a problem in general. None of the component model proposals currently in existence place any limitations like this.

However, using iframes in the context of 53961 definitely seems like a hack. If what you&apos;re looking for is a global JS context (which I don&apos;t think you do -- you could just use closure), then we should do this explicitly for JS running in a component. If you&apos;re trying to avoid stylesheet pollution, then use scoped styles.

Does this make sense?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447836</commentid>
    <comment_count>22</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2011-08-07 22:07:16 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; &lt;iframe&gt; in a shadow tree have some problems for now.
&gt; 
&gt;  - hide shadow frames from windows.frames
&gt;  - Loading in a shadow frame shouldn&apos;t update the history.

Where do these rules come from?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447924</commentid>
    <comment_count>23</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-08 02:52:55 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; However, using iframes in the context of 53961 definitely seems like a hack. If what you&apos;re looking for is a global JS context (which I don&apos;t think you do -- you could just use closure), then we should do this explicitly for JS running in a component. If you&apos;re trying to avoid stylesheet pollution, then use scoped styles.


I confirmed &lt;script&gt; in a shadow tree worked.  Do you have any idea how to access the shadow tree from the script in the shadow tree?  We can&apos;t use document.getElementById(), etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447926</commentid>
    <comment_count>24</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-08-08 02:58:46 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; &gt;  - hide shadow frames from windows.frames
&gt; &gt;  - Loading in a shadow frame shouldn&apos;t update the history.
&gt; 
&gt; Where do these rules come from?

They are my opinions.  Others might object to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449422</commentid>
    <comment_count>25</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2011-08-10 15:12:11 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #0)
&gt; &gt; &lt;iframe&gt; in a shadow tree have some problems for now.
&gt; &gt; 
&gt; &gt;  - hide shadow frames from windows.frames
&gt; &gt;  - Loading in a shadow frame shouldn&apos;t update the history.
&gt; 
&gt; Where do these rules come from?

In my understanding these are a natural consequence of the isolation discussion of components: if a component is supposed to be isolated from the page by default, then the page should have no way of accessing those iframes unless the component opens them up. Conversely, the component should not &quot;pollute&quot; the page&apos;s history by virtue of it utilizing iframes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517954</commentid>
    <comment_count>26</comment_count>
      <attachid>103059</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-12-08 17:13:59 -0800</bug_when>
    <thetext>Comment on attachment 103059
Patch 4

I&apos;m trying another way to implement the calendar picker.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>551802</commentid>
    <comment_count>27</comment_count>
    <who name="Dominic Cooney">dominicc</who>
    <bug_when>2012-02-07 22:32:58 -0800</bug_when>
    <thetext>Now that ShadowRoot is exposed to script, ClusterFuzz demonstrated a crash adding an IFRAME to a ShadowRoot &lt;http://code.google.com/p/chromium/issues/detail?id=113167&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561759</commentid>
    <comment_count>28</comment_count>
      <attachid>128159</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 01:54:16 -0800</bug_when>
    <thetext>Created attachment 128159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561762</commentid>
    <comment_count>29</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 01:57:37 -0800</bug_when>
    <thetext>This change just hides iframes from accessor on document. History stuff is out of scope.
I don&apos;t think we need to hide navigation in shadowed iframes because
we don&apos;t do that for nested iframes.

The concept of shadow DOM is further clarified since the last patch was written. 
&lt;iframe&gt; in shadow is no longer a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562093</commentid>
    <comment_count>30</comment_count>
      <attachid>128159</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 10:15:39 -0800</bug_when>
    <thetext>Comment on attachment 128159
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        This change introduced FrameTree::documentChild() and

&quot;introduces&quot;

&gt; Source/WebCore/ChangeLog:10
&gt; +        frame lookup. Using these, now the named accessor and the indexed

remove &quot;now&quot; here ...

&gt; Source/WebCore/ChangeLog:11
&gt; +        acceccor on Document, and Window.length is TreeScope aware. They

and replace &quot;is&quot; with &quot;are now&quot;.

&gt; Source/WebCore/page/Frame.cpp:1128
&gt; +bool Frame::isScopedBy(TreeScope* scope) const

isScopedby -&gt; inScope

&gt; Source/WebCore/page/FrameTree.h:57
&gt;          Frame* previousSibling() const { return m_previousSibling; }
&gt;          Frame* firstChild() const { return m_firstChild.get(); }
&gt;          Frame* lastChild() const { return m_lastChild; }

Are these guys still being used?

&gt; Source/WebCore/page/FrameTree.h:78
&gt; +        Frame* documentChild(unsigned index) const;

I think the name is a bit unintuitive. It requires you to know that Document is a TreeScope.

Also, the purpose of scoped* functions is limited to just supplying results for document* functions. Do we need the complete set of the two? Can we collapse them into one set, called &quot;scopedChild&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562540</commentid>
    <comment_count>31</comment_count>
      <attachid>128328</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 16:35:27 -0800</bug_when>
    <thetext>Created attachment 128328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562545</commentid>
    <comment_count>32</comment_count>
      <attachid>128159</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 16:37:33 -0800</bug_when>
    <thetext>Comment on attachment 128159
Patch

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

Hi Dimitri, thanks for reviewing this! I addressed your point. Could you have another round?

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        This change introduced FrameTree::documentChild() and
&gt; 
&gt; &quot;introduces&quot;

fixed.

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        frame lookup. Using these, now the named accessor and the indexed
&gt; 
&gt; remove &quot;now&quot; here ...

removed...

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +        acceccor on Document, and Window.length is TreeScope aware. They
&gt; 
&gt; and replace &quot;is&quot; with &quot;are now&quot;.

... and fixed.

&gt;&gt; Source/WebCore/page/Frame.cpp:1128
&gt;&gt; +bool Frame::isScopedBy(TreeScope* scope) const
&gt; 
&gt; isScopedby -&gt; inScope

fixed.

&gt;&gt; Source/WebCore/page/FrameTree.h:57
&gt;&gt;          Frame* lastChild() const { return m_lastChild; }
&gt; 
&gt; Are these guys still being used?

Yes. People iterate over frame children for example in the history module.

&gt;&gt; Source/WebCore/page/FrameTree.h:78
&gt;&gt; +        Frame* documentChild(unsigned index) const;
&gt; 
&gt; I think the name is a bit unintuitive. It requires you to know that Document is a TreeScope.
&gt; 
&gt; Also, the purpose of scoped* functions is limited to just supplying results for document* functions. Do we need the complete set of the two? Can we collapse them into one set, called &quot;scopedChild&quot;?

Sounds good. done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562546</commentid>
    <comment_count>33</comment_count>
      <attachid>128328</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 16:37:57 -0800</bug_when>
    <thetext>Comment on attachment 128328
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        This change introduces FrameTree::documentChild() and
&gt; +        FrameTree::documentChild(), which can be used for scope-aware

Whoops! Still mentions documentChild!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562608</commentid>
    <comment_count>34</comment_count>
      <attachid>128344</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 17:25:25 -0800</bug_when>
    <thetext>Created attachment 128344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562610</commentid>
    <comment_count>35</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 17:25:59 -0800</bug_when>
    <thetext>(In reply to comment #33)
&gt; 
&gt; Whoops! Still mentions documentChild!
Whoaaaa. My text editor searched only under page/ and binding/ :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562613</commentid>
    <comment_count>36</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 17:26:42 -0800</bug_when>
    <thetext>&gt; &gt; Whoops! Still mentions documentChild!
&gt; Whoaaaa. My text editor searched only under page/ and binding/ :-/
And bots are red... I need to fix them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562616</commentid>
    <comment_count>37</comment_count>
      <attachid>128347</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 17:32:30 -0800</bug_when>
    <thetext>Created attachment 128347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562660</commentid>
    <comment_count>38</comment_count>
      <attachid>128347</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-22 18:13:08 -0800</bug_when>
    <thetext>Comment on attachment 128347
Patch

r=me, make sure bots are green before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562759</commentid>
    <comment_count>39</comment_count>
      <attachid>128377</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 20:28:24 -0800</bug_when>
    <thetext>Created attachment 128377
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>562760</commentid>
    <comment_count>40</comment_count>
      <attachid>128377</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 20:28:58 -0800</bug_when>
    <thetext>Comment on attachment 128377
Patch for landing

Waiting EWS greeness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563696</commentid>
    <comment_count>41</comment_count>
      <attachid>128377</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 16:54:25 -0800</bug_when>
    <thetext>Comment on attachment 128377
Patch for landing

Clearing flags on attachment: 128377

Committed r108700: &lt;http://trac.webkit.org/changeset/108700&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563697</commentid>
    <comment_count>42</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-23 16:54:32 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572206</commentid>
    <comment_count>43</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-03-06 15:29:43 -0800</bug_when>
    <thetext>The test added by this patch is failing on Mac port:
http://build.webkit.org/results/SnowLeopard%20Intel%20Release%20(Tests)/r109929%20(37823)/fast/dom/shadow/iframe-shadow-pretty-diff.html

There are a bunch of other tests that have been failing for the same missing WebKitShadowRoot error :( Could you guys skip all of those on Mac port?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102749</attachid>
            <date>2011-08-03 00:47:08 -0700</date>
            <delta_ts>2011-08-05 01:44:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65595-20110803164707.patch</filename>
            <type>text/plain</type>
            <size>14998</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTIwOTMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA3YzUwNmZmMTg4MGQ3MmMyOTRlZTIz
OWNiZWNjNmRjNTA1MGY1YTQyLi5kNjAzMDUxMzhjYjViMzQ5ODI0MGIwZjU5ZDJkZDQ4NDkzYmVj
ZTk4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDgtMDIgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgPGlmcmFtZT4gaW4gc2hhZG93IHRy
ZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0z
MSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0Njc5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTEuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZWFiMGIyNWM4Yzg5MDU0OTExZWVjYTA4NWU4NjAzZWJiYjhlMjg2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFt
ZTEuaHRtbApAQCAtMCwwICsxIEBACis8cD5TdWJmcmFtZSAxPC9wPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTIuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMvc3ViZnJhbWUyLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNDE4NzAzMWUxYmJlYWIxZDRjOGU0ZTM5NGVkZWI0ZTE0MTUyMThmNwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMvc3ViZnJhbWUyLmh0
bWwKQEAgLTAsMCArMSBAQAorPHA+U3ViZnJhbWUgMjwvcD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5mNzE2M2NjMTJjZWRmN2ZlZmFiMDRiZTg1NzdlNGVhZWQxYzcwYWQ0Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUtZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsMTIgQEAKK1RoZSByZXNvdXJjZSBmb3IgYSBzaGFvZG93IGlmcmFtZSBz
aG91bGQgYmUgbG9hZGVkLCBhbmQgdGhlIGlmcmFtZSBzaG91bGQgYmUgaW52aXNpYmxlIGluIHdp
bmRvdy5mcmFtZXMuCisKKz09PiBzdWJmcmFtZTEgaGFzIGJlZW4gbG9hZGVkLgorPT0+IHN1YmZy
YW1lMiBoYXMgYmVlbiBsb2FkZWQuCitQQVNTIHdpbmRvdy5mcmFtZXMubGVuZ3RoIGlzIDAKK1BB
U1Mgd2luZG93LmZyYW1lc1sic2hhZG93RnJhbWVOYW1lIl0gaXMgdW5kZWZpbmVkLgorUEFTUyBk
b2N1bWVudFsic2hhZG93RnJhbWVOYW1lIl0gaXMgdW5kZWZpbmVkLgorCisKKz09PT09PT09PT09
PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09CitjdXJyLT4gIChmaWxlIHRlc3Qp
OmZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwgICoqbmF2IHRhcmdldCoqCis9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUuaHRtbCBiL0xheW91dFRl
c3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjA5N2Qz
YTNmMDIyNjNiMzE1MmY3NjI3MzU2YjM0ZDZiY2FhMjA3MgotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKQEAgLTAsMCArMSw1
MSBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImFkZFNoYWRvd0ZyYW1lKCki
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3Jp
cHQ+Cis8cD5UaGUgcmVzb3VyY2UgZm9yIGEgc2hhb2RvdyBpZnJhbWUgc2hvdWxkIGJlIGxvYWRl
ZCwgYW5kIHRoZSBpZnJhbWUgc2hvdWxkIGJlIGludmlzaWJsZSBpbiB3aW5kb3cuZnJhbWVzLjwv
cD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iaG9zdCI+PC9kaXY+CisKKzxz
Y3JpcHQ+Cit2YXIgc2hhZG93RnJhbWU7Cit2YXIgY291bnQgPSAwOworCitmdW5jdGlvbiBhZGRT
aGFkb3dGcmFtZSgpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgZGVi
dWcoJ1RoaXMgdGVzdCBuZWVkcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsK
KyAgICB2YXIgc2hhZG93Um9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KGhvc3QpOwor
ICAgIHNoYWRvd0ZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAg
c2hhZG93RnJhbWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHNoYWRvd0ZyYW1lTG9hZGVkKTsK
KyAgICBzaGFkb3dGcmFtZS5zcmMgPSAncmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sJzsKKyAgICBz
aGFkb3dGcmFtZS5uYW1lID0gJ3NoYWRvd0ZyYW1lTmFtZSc7CisgICAgc2hhZG93Um9vdC5hcHBl
bmRDaGlsZChzaGFkb3dGcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNoYWRvd0ZyYW1lTG9hZGVkKCkg
eworICAgIGNvdW50Kys7CisgICAgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgZGVidWcoJz09
PiBzdWJmcmFtZTEgaGFzIGJlZW4gbG9hZGVkLicpOworICAgICAgICBzaGFkb3dGcmFtZS5zcmMg
PSAncmVzb3VyY2VzL3N1YmZyYW1lMi5odG1sJzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICBkZWJ1ZygnPT0+IHN1YmZyYW1lMiBoYXMgYmVlbiBsb2FkZWQuJyk7CisgICAgc2hvdWxkQmUo
J3dpbmRvdy5mcmFtZXMubGVuZ3RoJywgJzAnKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdp
bmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisgICAgICAgIGRlYnVnKCdbJyArIGkgKyAnXTogbmFt
ZT0iJyArIHdpbmRvdy5mcmFtZXNbaV0ubmFtZSArJyInKTsKKyAgICBzaG91bGRCZVVuZGVmaW5l
ZCgnd2luZG93LmZyYW1lc1sic2hhZG93RnJhbWVOYW1lIl0nKTsKKyAgICBzaG91bGRCZVVuZGVm
aW5lZCgnZG9jdW1lbnRbInNoYWRvd0ZyYW1lTmFtZSJdJyk7CisKKyAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpIHsKKyAgICAvLyBUaGUgYmFjayBmb3J3YXJkIGxpc3Qgc2hvdWxkIGNvbnRhaW4ganVzdCBv
bmUgbGluZS4KKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQmFja0ZvcndhcmRMaXN0KCk7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjBjNTc3MzNlNTQ1NjFjZDUyMjliOGFl
NjEzMGNlODZmZTQwNmJiNC4uMTkyOGFkNjc4YjNiNzQ0NjE4MmM5YzJkNDAzZGMxNWMxY2JkNjMy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDExLTA4LTAyICBLZW50IFRhbXVyYSAg
PHRrZW50QGNocm9taXVtLm9yZz4KKworICAgICAgICBTdXBwb3J0IDxpZnJhbWU+IGluIHNoYWRv
dyB0cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NjU1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
cmF2ZXJzaW5nIGZ1bmN0aW9ucyBvZiBGcmFtZVRyZWUgZXhjbHVkZXMgc2hhZG93IGZyYW1lcy4g
VGhpcyBtZWFuczoKKyAgICAgICAgLSB3aW5kb3cuZnJhbWVzW10gZG9lc24ndCBpbmNsdWRlIHNo
YWRvdyBmcmFtZXMuCisgICAgICAgIC0gTG9hZGluZ3MgaW4gc2hhZG93IGZyYW1lcyBkb24ndCB1
cGRhdGUgYnJvd3NlciBoaXN0b3J5LgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctaWZyYW1lLmh0bWwKKworICAgICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICBB
ZGQgRnJhbWVUcmVlOjpmaXJzdENoaWxkKCkgYW5kIG5leHRTaWJsaW5nKCkgYmVjYXVzZSBXZWJG
cmFtZS5tbSBjYWxscyB0aGVtLgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tMb2FkQ29tcGxldGUpOgorICAgICAg
ICBVc2UgdHJhdmVyc2VOZXh0SW5jbHVkaW5nU2hhZG93cygpIGluc3RlYWQgb2YgdHJhdmVyc2VO
ZXh0KCkuCisgICAgICAgICogbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRC
YWNrRm9yd2FyZExpc3QpOgorICAgICAgICBEb24ndCB1cGRhdGUgYSBoaXNvdHJ5IGl0ZW0gZm9y
IHNoYWRvdyBmcmFtZXMuCisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6aXNJblNoYWRvd1RyZWUpOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0ZyYW1l
Lmg6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVUcmVlOjpuZXh0U2libGluZyk6IERvbid0IHJldHVybiBzaGFkb3cgZnJhbWVzLgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpwcmV2aW91c1NpYmxpbmcpOiBkaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVHJlZTo6Zmlyc3RDaGlsZCk6IGRpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVUcmVlOjpsYXN0Q2hpbGQpOiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
VHJlZTo6YWN0dWFsbHlBcHBlbmRDaGlsZCk6IFVwZGF0ZSBtX3NoYWRvd0NoaWxkQ291bnQuCisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnJlbW92ZUNoaWxkKTogZGl0dG8uCisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVRyZWU6OnRyYXZlcnNlTmV4dEluY2x1ZGluZ1NoYWRvd3MpOgorICAg
ICAgICBBZGRlZC4gVGhpcyBmdW5jdGlvbnMgdHJhdmVyc2VzIHRoZSB0cmVlIGluY2x1ZGluZyBz
aGFkb3cgZnJhbWVzLgorICAgICAgICAqIHBhZ2UvRnJhbWVUcmVlLmg6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVRyZWU6OkZyYW1lVHJlZSk6IEluaXRpYWxpemUgbV9zaGFkb3dDaGlsZENvdW50
LgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpjaGlsZENvdW50KTogVGhpcyByZXR1cm5z
IHRoZSBudW1iZXIgb2Ygbm9uLXNoYWRvdyBmcmFtZXMuCisgICAgICAgICogcGFnZS9QYWdlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmNoZWNrRnJhbWVDb3VudENvbnNpc3RlbmN5KToK
KyAgICAgICAgVXNlIHRyYXZlcnNlTmV4dEluY2x1ZGluZ1NoYWRvd3MoKSBiZWNhdXNlIFBhZ2U6
Om1fZnJhbWVDb3VudCBpbmNsdWRlcworICAgICAgICB0aGUgbnVtYmVyIG9mIHNoYWRvdyBmcmFt
ZXMuCisKIDIwMTEtMDctMzEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBSRUdSRVNTSU9OOiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoKSBtZXRob2Qgb2YgUmFuZ2UgaW5j
b3JyZWN0bHkgcmV0dXJucyBudWxsIGZvciBjb2xsYXBzZWQgUmFuZ2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggZTE3NmY5MTUwOTYyNTU0NDU0YTM5M2E0MmRlYTUwYzAwYmYxY2U4OC4uZjg4MWMw
ZDIwZmU3MzY0NDRmMGY3ZmVhMzlkYjYzYTNiZTI0NmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTEzMjYsNiArMTMyNiw4IEBAIF9fWk5LN1dlYkNvcmU4UG9zaXRpb244dXBzdHJlYW1FTlNf
MjdFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGVFCiBfX1pOSzdXZWJDb3JlOURPTVdpbmRvdzI3
cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzRXYKIF9fWk5LN1dlYkNvcmU5RmxvYXRRdWFkMTFi
b3VuZGluZ0JveEV2CiBfX1pOSzdXZWJDb3JlOUZsb2F0UmVjdGN2N19OU1JlY3RFdgorX19aTks3
V2ViQ29yZTlGcmFtZVRyZWUxMGZpcnN0Q2hpbGRFdgorX19aTks3V2ViQ29yZTlGcmFtZVRyZWUx
MW5leHRTaWJsaW5nRXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTJ0cmF2ZXJzZU5leHRFUEtO
U181RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTE0aXNEZXNjZW5kYW50T2ZFUEtOU181
RnJhbWVFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTIwdHJhdmVyc2VOZXh0V2l0aFdyYXBFYgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKaW5kZXggNDdiYjIyMDA4MTI2YjY1MTRk
ZGM2YjdmYTcwMDdlNzczZmU4MDg3Yi4uOTkzNmRkZDViMmFlMzcxMDg1MGE0YTQ0MDBmNjBkOWNk
MmRlZDU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yMzYxLDcg
KzIzNjEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xvYWRDb21wbGV0ZSgpCiAgICAgLy8g
aXMgY3VycmVudGx5IG5lZWRlZCBpbiBvcmRlciB0byBudWxsIG91dCB0aGUgcHJldmlvdXMgaGlz
dG9yeSBpdGVtIGZvciBhbGwgZnJhbWVzLgogICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS0+
cGFnZSgpKSB7CiAgICAgICAgIFZlY3RvcjxSZWZQdHI8RnJhbWU+LCAxMD4gZnJhbWVzOwotICAg
ICAgICBmb3IgKFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgICAgIGZvciAoUmVm
UHRyPEZyYW1lPiBmcmFtZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRJbmNsdWRpbmdTaGFkb3dzKCkpCiAgICAgICAgICAgICBm
cmFtZXMuYXBwZW5kKGZyYW1lKTsKICAgICAgICAgLy8gVG8gcHJvY2VzcyBjaGlsZHJlbiBiZWZv
cmUgdGhlaXIgcGFyZW50cywgaXRlcmF0ZSB0aGUgdmVjdG9yIGJhY2t3YXJkcy4KICAgICAgICAg
Zm9yIChzaXplX3QgaSA9IGZyYW1lcy5zaXplKCk7IGk7IC0taSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDVjMzlmOTZmMDQ2NmQ4ZWU1ZjZjZmFj
MzlmNDE5NWRiNjM4OWQ5NDYuLmYwYmQ1OGU0ODI5Y2EzYTAwMDRjNjA5NzM3MGFmZTI2NjZhZWQ4
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAt
Mzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0
V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIH0KICAgICAgICAgLy8gVGhlIGNs
aWVudCByZWRpcmVjdCByZXBsYWNlcyB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0uCiAgICAgICAg
IHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKCFtX2Zy
YW1lLT5pc0luU2hhZG93VHJlZSgpKSB7CiAgICAgICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9IG1f
ZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnRGcmFtZSAmJiBwYXJl
bnRGcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+bV9jdXJyZW50SXRlbSkKICAgICAgICAgICAg
IHBhcmVudEZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5tX2N1cnJlbnRJdGVtLT5zZXRDaGls
ZEl0ZW0oY3JlYXRlSXRlbSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggZjNhYWUzMDBiMzUy
ZmVmZjViZDcxMjM0Zjk0MTRhYTUyNGM5MjMwOC4uOTVkYWI4NWEwZjcyMjI3ZDIwZjBiMjViNTZh
ZWZhNjlkNDljOTRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTExMTUsNCArMTExNSw5IEBA
IHZvaWQgRnJhbWU6Om5vdGlmeUNocm9tZUNsaWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFu
Z2VkKCkgY29uc3QKICAgICBtX3BhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bnVtV2hlZWxFdmVu
dEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CiB9CiAKK2Jvb2wgRnJhbWU6OmlzSW5TaGFkb3dUcmVl
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gdGhpcyAmJiBvd25lckVsZW1lbnQoKSAmJiBvd25lckVs
ZW1lbnQoKS0+aXNJblNoYWRvd1RyZWUoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCmluZGV4IDY0ODZjMDZmMGExZGYwNTNlNDI1NTk0ODFmYjYyMTQxMGIyMTcy
N2UuLjk3NzIzMDAzZmQ3MDk4M2NlNmQ2NGZhN2IwY2NlNTEwNzNhOTMzOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKQEAgLTEwMiw2ICsxMDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAg
UGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVy
RWxlbWVudCgpIGNvbnN0OworICAgICAgICBib29sIGlzSW5TaGFkb3dUcmVlKCkgY29uc3Q7CiAK
ICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CiAgICAgICAgIEZyYW1lVmlldyog
dmlldygpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IGYzZjMyZWM0Zjhm
Y2U2ZWNjMWMwYTliYTU5OGZkMTQ4Y2EzYjA3ZDkuLmY5NmEzZDg0M2YzNGJlMGVhYjNlYzM4NjVk
OTU0ODIwZDc0MmYwZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTIzLDYgKzIz
LDcgQEAKIAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5j
bHVkZSAiSFRNTEZyYW1lT3duZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1ZGUgPHN0ZGFyZy5oPgpAQCAtNjMsNiArNjQsNDAgQEAg
RnJhbWUqIEZyYW1lVHJlZTo6cGFyZW50KGJvb2wgY2hlY2tGb3JEaXNjb25uZWN0ZWRGcmFtZSkg
Y29uc3QKICAgICByZXR1cm4gbV9wYXJlbnQ7CiB9CiAKK0ZyYW1lKiBGcmFtZVRyZWU6Om5leHRT
aWJsaW5nKCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX25leHRTaWJsaW5nLmdldCgp
OworICAgIHdoaWxlIChmcmFtZS0+aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLT5tX25leHRTaWJsaW5nLmdldCgpOworICAgIHJldHVybiBmcmFtZTsKK30K
KworRnJhbWUqIEZyYW1lVHJlZTo6cHJldmlvdXNTaWJsaW5nKCkgY29uc3QKK3sKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX3ByZXZpb3VzU2libGluZzsKKyAgICB3aGlsZSAoZnJhbWUtPmlzSW5TaGFk
b3dUcmVlKCkpCisgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+bV9wcmV2aW91c1NpYmxp
bmc7CisgICAgcmV0dXJuIGZyYW1lOworfQorCitGcmFtZSogRnJhbWVUcmVlOjpmaXJzdENoaWxk
KCkgY29uc3QKK3sKKyAgICBGcmFtZSogZnJhbWUgPSBtX2ZpcnN0Q2hpbGQuZ2V0KCk7CisgICAg
aWYgKGZyYW1lLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPm5leHRTaWJsaW5nKCk7CisgICAgQVNTRVJUKCFmcmFtZS0+aXNJblNoYWRvd1RyZWUoKSk7
CisgICAgcmV0dXJuIGZyYW1lOworfQorCitGcmFtZSogRnJhbWVUcmVlOjpsYXN0Q2hpbGQoKSBj
b25zdAoreworICAgIEZyYW1lKiBmcmFtZSA9IG1fbGFzdENoaWxkOworICAgIGlmIChmcmFtZS0+
aXNJblNoYWRvd1RyZWUoKSkKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wcmV2aW91
c1NpYmxpbmcoKTsKKyAgICBBU1NFUlQoIWZyYW1lLT5pc0luU2hhZG93VHJlZSgpKTsKKyAgICBy
ZXR1cm4gZnJhbWU7Cit9CisKIGJvb2wgRnJhbWVUcmVlOjp0cmFuc2ZlckNoaWxkKFBhc3NSZWZQ
dHI8RnJhbWU+IGNoaWxkKQogewogICAgIEZyYW1lKiBvbGRQYXJlbnQgPSBjaGlsZC0+dHJlZSgp
LT5wYXJlbnQoKTsKQEAgLTEwMiw2ICsxMzcsOCBAQCB2b2lkIEZyYW1lVHJlZTo6YWN0dWFsbHlB
cHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKICAgICAgICAgbV9maXJzdENoaWxk
ID0gY2hpbGQ7CiAKICAgICBtX2NoaWxkQ291bnQrKzsKKyAgICBpZiAobV9sYXN0Q2hpbGQtPmlz
SW5TaGFkb3dUcmVlKCkpCisgICAgICAgIG1fc2hhZG93Q2hpbGRDb3VudCsrOwogCiAgICAgQVNT
RVJUKCFtX2xhc3RDaGlsZC0+dHJlZSgpLT5tX25leHRTaWJsaW5nKTsKIH0KQEAgLTEyNCw2ICsx
NjEsOCBAQCB2b2lkIEZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQoRnJhbWUqIGNoaWxkKQogICAgIGNo
aWxkLT50cmVlKCktPm1fbmV4dFNpYmxpbmcgPSAwOwogCiAgICAgbV9jaGlsZENvdW50LS07Cisg
ICAgaWYgKGNoaWxkLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICBtX3NoYWRvd0NoaWxkQ291
bnQtLTsKIH0KIAogQXRvbWljU3RyaW5nIEZyYW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKGNvbnN0
IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3QKQEAgLTI4Niw2ICszMjUsMzAgQEAg
RnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VOZXh0KGNvbnN0IEZyYW1lKiBzdGF5V2l0aGluKSBj
b25zdAogICAgIHJldHVybiAwOwogfQogCitGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRJ
bmNsdWRpbmdTaGFkb3dzKCkgY29uc3QKK3sKKyAgICBGcmFtZSogY2hpbGQgPSBtX2ZpcnN0Q2hp
bGQuZ2V0KCk7CisgICAgaWYgKGNoaWxkKQorICAgICAgICByZXR1cm4gY2hpbGQ7CisKKyAgICBG
cmFtZSogc2libGluZyA9IG1fbmV4dFNpYmxpbmcuZ2V0KCk7CisgICAgaWYgKHNpYmxpbmcpCisg
ICAgICAgIHJldHVybiBzaWJsaW5nOworCisgICAgRnJhbWUqIGZyYW1lID0gbV90aGlzRnJhbWU7
CisgICAgd2hpbGUgKCFzaWJsaW5nKSB7CisgICAgICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+
cGFyZW50KCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgc2libGluZyA9IGZyYW1lLT50cmVlKCktPm1fbmV4dFNpYmxpbmcuZ2V0KCk7CisgICAg
fQorCisgICAgaWYgKGZyYW1lKQorICAgICAgICByZXR1cm4gc2libGluZzsKKworICAgIHJldHVy
biAwOworfQorCiBGcmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRXaXRoV3JhcChib29sIHdy
YXApIGNvbnN0CiB7CiAgICAgaWYgKEZyYW1lKiByZXN1bHQgPSB0cmF2ZXJzZU5leHQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCmluZGV4IGJhYzU0NzUwMjk5ODI0Nzc3ODJkZTYzZjhkNzBhMmEw
ZGE5YjkwNTcuLjIzNGRjZmJjNDVjNjQ1ZjFhZDU4MzcxMWExNmJkZDkxZjE5YTQzZjYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgICAgICAsIG1fcHJldmlvdXNTaWJsaW5nKDApCiAgICAgICAgICAgICAsIG1fbGFz
dENoaWxkKDApCiAgICAgICAgICAgICAsIG1fY2hpbGRDb3VudCgwKQorICAgICAgICAgICAgLCBt
X3NoYWRvd0NoaWxkQ291bnQoMCkKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIH5GcmFt
ZVRyZWUoKTsKQEAgLTQ1LDE1ICs0NiwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZvaWQgY2xlYXJOYW1lKCk7CiAgICAgICAgIEZyYW1lKiBwYXJlbnQoYm9vbCBjaGVja0ZvckRp
c2Nvbm5lY3RlZEZyYW1lID0gZmFsc2UpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFBhcmVudChG
cmFtZSogcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9Ci0gICAgICAgIAotICAgICAgICBG
cmFtZSogbmV4dFNpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX25leHRTaWJsaW5nLmdldCgpOyB9
Ci0gICAgICAgIEZyYW1lKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZp
b3VzU2libGluZzsgfQotICAgICAgICBGcmFtZSogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJu
IG1fZmlyc3RDaGlsZC5nZXQoKTsgfQotICAgICAgICBGcmFtZSogbGFzdENoaWxkKCkgY29uc3Qg
eyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KLSAgICAgICAgdW5zaWduZWQgY2hpbGRDb3VudCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2hpbGRDb3VudDsgfQorCisgICAgICAgIC8vIG5leHRTaWJsaW5nKCks
IHByZXZpb3VzU2libGluZygpLCBmaXJzdENoaWxkKCksIGFuZCBsYXN0Q2hpbGQoKSBleGNsdWRl
IHNoYWRvdyBmcmFtZXMuCisgICAgICAgIEZyYW1lKiBuZXh0U2libGluZygpIGNvbnN0OworICAg
ICAgICBGcmFtZSogcHJldmlvdXNTaWJsaW5nKCkgY29uc3Q7CisgICAgICAgIEZyYW1lKiBmaXJz
dENoaWxkKCkgY29uc3Q7CisgICAgICAgIEZyYW1lKiBsYXN0Q2hpbGQoKSBjb25zdDsKKyAgICAg
ICAgLy8gVGhlIG51bWJlciBvZiBjaGlsZCBmcmFtZXMgZXhjbHVkaW5nIHNoYWRvdyBmcmFtZXMu
CisgICAgICAgIHVuc2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkQ291
bnQgLSBtX3NoYWRvd0NoaWxkQ291bnQ7IH0KIAogICAgICAgICBib29sIGlzRGVzY2VuZGFudE9m
KGNvbnN0IEZyYW1lKiBhbmNlc3RvcikgY29uc3Q7CiAgICAgICAgIEZyYW1lKiB0cmF2ZXJzZU5l
eHQoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIHRy
YXZlcnNlTmV4dEluY2x1ZGluZ1NoYWRvd3MoKSBjb25zdDsKICAgICAgICAgRnJhbWUqIHRyYXZl
cnNlTmV4dFdpdGhXcmFwKGJvb2wpIGNvbnN0OwogICAgICAgICBGcmFtZSogdHJhdmVyc2VQcmV2
aW91c1dpdGhXcmFwKGJvb2wpIGNvbnN0OwogICAgICAgICAKQEAgLTg2LDYgKzkwLDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZmlyc3RDaGlsZDsKICAg
ICAgICAgRnJhbWUqIG1fbGFzdENoaWxkOwogICAgICAgICB1bnNpZ25lZCBtX2NoaWxkQ291bnQ7
CisgICAgICAgIHVuc2lnbmVkIG1fc2hhZG93Q2hpbGRDb3VudDsKICAgICB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCAzMjQxOWEwYmY1Yjc1MjNmMmU1
ODk3M2Q2Y2Q1ZmQyMDg4MmIwMjYwLi5hODMzZjg0YmQ4ZGU3YjBiNjdmZTYxMDMxZjAzNWU4YTYz
Y2Y2MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTkzMSw3ICs5MzEsNyBAQCB2b2lkIFBhZ2U6
OmNoZWNrRnJhbWVDb3VudENvbnNpc3RlbmN5KCkgY29uc3QKICAgICBBU1NFUlQobV9mcmFtZUNv
dW50ID49IDApOwogCiAgICAgaW50IGZyYW1lQ291bnQgPSAwOwotICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNl
TmV4dCgpKQorICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dEluY2x1ZGluZ1NoYWRvd3MoKSkKICAgICAg
ICAgKytmcmFtZUNvdW50OwogCiAgICAgQVNTRVJUKG1fZnJhbWVDb3VudCArIDEgPT0gZnJhbWVD
b3VudCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103051</attachid>
            <date>2011-08-05 01:44:25 -0700</date>
            <delta_ts>2011-08-05 02:02:20 -0700</delta_ts>
            <desc>Patch 2</desc>
            <filename>bug-65595-20110805174423.patch</filename>
            <type>text/plain</type>
            <size>19487</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNjUxNDAwM2M4Y2JjNWFmOGI3ZDU1
MzhhNjk3ODZiYTA5Njc2M2UzLi5iZjNiMmM2YzBjYWUwOTg4MmI2MmIxMGRkODc4ZDhmYTY3MzQy
ZDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMDUgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgPGlmcmFtZT4gaW4gc2hhZG93IHRy
ZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAx
MS0wOC0wNCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QmFkIGludGVyYWN0aW9uIGJldHdlZW4gZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gYW5kIHVubG9hZCBl
dmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMv
c3ViZnJhbWUxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1
YmZyYW1lMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlYWIwYjI1YzhjODkwNTQ5MTFlZWNhMDg1ZTg2MDNl
YmJiOGUyODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
cmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sCkBAIC0wLDAgKzEgQEAKKzxwPlN1YmZyYW1lIDE8L3A+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1YmZy
YW1lMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFt
ZTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZmNhYTNiZjYwZWU1MTVjZmFlNzU3MTMyYjQ1M2JmMmZkMzZk
YmZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291
cmNlcy9zdWJmcmFtZTIuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxwPlN1YmZyYW1lIDI8L3A+Cis8
aWZyYW1lIHNyYz0ic3ViZnJhbWUxLmh0bWwiIG5hbWU9ImRlZXBlckZyYW1lTmFtZSI+Cis8L2lm
cmFtZT4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1p
ZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1p
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTQ1NzM1NzcwMjA3MGI0NjM1NWNhOTEw
YTgxOWEzZmViYTk0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhlIHJl
c291cmNlIGZvciBhIHNoYW9kb3cgaWZyYW1lIHNob3VsZCBiZSBsb2FkZWQsIGFuZCB0aGUgaWZy
YW1lIHNob3VsZCBiZSBpbnZpc2libGUgaW4gd2luZG93LmZyYW1lcy4KKworPT0+IHN1YmZyYW1l
MSBoYXMgYmVlbiBsb2FkZWQuCis9PT4gc3ViZnJhbWUyIGhhcyBiZWVuIGxvYWRlZC4KKworVGhl
IHRvcC1sZXZlbCB3aW5kb3cgaGFzIG5vIHJlZmVyZW5jZXMgdG8gdGhlIHNoYWRvdyBmcmFtZS4K
K1BBU1Mgd2luZG93LmZyYW1lcy5sZW5ndGggaXMgMAorUEFTUyB3aW5kb3cuZnJhbWVzWyJzaGFk
b3dGcmFtZU5hbWUiXSBpcyB1bmRlZmluZWQuCitQQVNTIGRvY3VtZW50WyJzaGFkb3dGcmFtZU5h
bWUiXSBpcyB1bmRlZmluZWQuCitQQVNTIGFub3RoZXJXaW5kb3cgPT0gc2hhZG93RnJhbWUuY29u
dGVudFdpbmRvdyBpcyBmYWxzZQorCitUaGUgd2luZG93IGluIHRoZSBzaGFkb3cgZnJhbWUgY29u
dGFpbnMgYW5vdGhlciBmcmFtZS4KK1BBU1Mgc2hhZG93V2luZG93LmZyYW1lcy5sZW5ndGggaXMg
MQorc2hhZG93V2luZG93LmZyYW1lc1swXTogbmFtZT0iZGVlcGVyRnJhbWVOYW1lIgorCisKKz09
PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09CitjdXJyLT4gIChm
aWxlIHRlc3QpOmZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwgICoqbmF2IHRhcmdl
dCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGZjNTQ3MTU5ZTgxNWMxNGNhYWQ1NGJiM2NmNDMzNWUxN2UwNTI1NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKQEAg
LTAsMCArMSw2NSBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImFkZFNoYWRv
d0ZyYW1lKCkiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8cD5UaGUgcmVzb3VyY2UgZm9yIGEgc2hhb2RvdyBpZnJhbWUgc2hvdWxk
IGJlIGxvYWRlZCwgYW5kIHRoZSBpZnJhbWUgc2hvdWxkIGJlIGludmlzaWJsZSBpbiB3aW5kb3cu
ZnJhbWVzLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iaG9zdCI+PC9k
aXY+CisKKzxzY3JpcHQ+Cit2YXIgc2hhZG93RnJhbWU7Cit2YXIgc2hhZG93V2luZG93OwordmFy
IGFub3RoZXJXaW5kb3c7Cit2YXIgY291bnQgPSAwOworCitmdW5jdGlvbiBhZGRTaGFkb3dGcmFt
ZSgpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgZGVidWcoJ1RoaXMg
dGVzdCBuZWVkcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKKyAgICB2YXIg
c2hhZG93Um9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KGhvc3QpOworICAgIHNoYWRv
d0ZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgc2hhZG93RnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHNoYWRvd0ZyYW1lTG9hZGVkKTsKKyAgICBzaGFk
b3dGcmFtZS5zcmMgPSAncmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sJzsKKyAgICBzaGFkb3dGcmFt
ZS5uYW1lID0gJ3NoYWRvd0ZyYW1lTmFtZSc7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChz
aGFkb3dGcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNoYWRvd0ZyYW1lTG9hZGVkKCkgeworICAgIGNv
dW50Kys7CisgICAgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgZGVidWcoJz09PiBzdWJmcmFt
ZTEgaGFzIGJlZW4gbG9hZGVkLicpOworICAgICAgICBzaGFkb3dGcmFtZS5zcmMgPSAncmVzb3Vy
Y2VzL3N1YmZyYW1lMi5odG1sJzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWJ1Zygn
PT0+IHN1YmZyYW1lMiBoYXMgYmVlbiBsb2FkZWQuJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAg
ZGVidWcoJ1RoZSB0b3AtbGV2ZWwgd2luZG93IGhhcyBubyByZWZlcmVuY2VzIHRvIHRoZSBzaGFk
b3cgZnJhbWUuJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5mcmFtZXMubGVuZ3RoJywgJzAnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgIGRlYnVnKCd3aW5kb3cuZnJhbWVzWycgKyBpICsgJ106IG5hbWU9IicgKyB3aW5kb3cuZnJh
bWVzW2ldLm5hbWUgKyciJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3dpbmRvdy5mcmFtZXNb
InNoYWRvd0ZyYW1lTmFtZSJdJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ2RvY3VtZW50WyJz
aGFkb3dGcmFtZU5hbWUiXScpOworICAgIGFub3RoZXJXaW5kb3cgPSB3aW5kb3cub3BlbigncmVz
b3VyY2VzL3N1YmZyYW1lMS5odG1sJywgJ3NoYWRvd0ZyYW1lTmFtZScpOworICAgIHNob3VsZEJl
RmFsc2UoJ2Fub3RoZXJXaW5kb3cgPT0gc2hhZG93RnJhbWUuY29udGVudFdpbmRvdycpOworCisg
ICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUaGUgd2luZG93IGluIHRoZSBzaGFkb3cgZnJhbWUg
Y29udGFpbnMgYW5vdGhlciBmcmFtZS4nKTsKKyAgICBzaGFkb3dXaW5kb3cgPSBzaGFkb3dGcmFt
ZS5jb250ZW50V2luZG93OworICAgIHNob3VsZEJlKCdzaGFkb3dXaW5kb3cuZnJhbWVzLmxlbmd0
aCcsICcxJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkb3dXaW5kb3cuZnJhbWVzLmxl
bmd0aDsgKytpKQorICAgICAgICBkZWJ1Zygnc2hhZG93V2luZG93LmZyYW1lc1snICsgaSArICdd
OiBuYW1lPSInICsgc2hhZG93V2luZG93LmZyYW1lc1tpXS5uYW1lICsnIicpOworCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgLy8gVGhlIGJhY2sgZm9yd2FyZCBsaXN0IHNob3VsZCBjb250
YWluIGp1c3Qgb25lIGxpbmUuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3
YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0OTZmMzUxY2M0ZTU3
NDNjNmNhNjQyMjcxYjczOGYwY2RiZDVjNjQuLmZhNGMwMmU0OWExY2FjMTc0NWFhYWQxZjM4NTVm
MzcwY2RjYzI1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wOC0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCA8aWZyYW1l
PiBpbiBzaGFkb3cgdHJlZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnJhbWVzIGluIHNoYWRvdyB0cmVlcyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCisg
ICAgICAgIC0gd2luZG93LmZyYW1lc1tdIGRvZXNuJ3QgaW5jbHVkZSBzaGFkb3cgZnJhbWVzLgor
ICAgICAgICAtIExvYWRpbmdzIGluIHNoYWRvdyBmcmFtZXMgZG9uJ3QgdXBkYXRlIGJyb3dzZXIg
aGlzdG9yeS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOiBSZXBsYWNlIEZy
YW1lVHJlZSBmdW5jdGlvbnMKKyAgICAgICAgd2l0aCAqSW5UcmVlU2NvcGUgdmVyc2lub3MuIFRo
ZSBoaXN0b3J5IHNob3VsZG4ndCBiZSBhZmZlY3RlZCBieQorICAgICAgICBuYXZpZ2F0aW9ucyBp
biBzaGFkb3cgZnJhbWVzLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNh
dmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRl
Rm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzSW5TaGFkb3dUcmVlKTogQWRkZWQuIFRoaXMgZnVuY3Rp
b24gcmV0dXJucyB0cnVlIGlmCisgICAgICAgIGFuIGFuY2VzdG9yIG9mIHRoaXMgZnJhbWUgaXMg
aW4gc2hhZG93IHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6b3duZXJUcmVlU2NvcGUp
OiBBZGRlZC4gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIEZyYW1lVHJlZS4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6IEFkZGVkIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6Om5leHRTaWJsaW5nSW5UcmVlU2NvcGUp
OgorICAgICAgICBBIHZhcmlhbnQgb2YgbmV4dFNpYmxpbmcoKS4gVGhpcyBkb2Vzbid0IHJldHVy
biBmcmFtZXMgaW4gb3RoZXIgVHJlZVNjb3Blcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJl
ZTo6Zmlyc3RDaGlsZEluVHJlZVNjb3BlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OnBhcmVudEluVHJlZVNjb3BlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQpOiBVcGRhdGUgbV9jaGlsZENvdW50SW5PdGhlclRy
ZWVTY29wZXMuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnJlbW92ZUNoaWxkKTogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmNoaWxkKTogRXhjbHVkZXMgZnJhbWVz
IGluIG90aGVyIFRyZWVTY29wZXMuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQp
OiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhdmVyc2VOZXh0SW5UcmVl
U2NvcGUpOgorICAgICAgICBBIHZhcmlhbnQgb2YgdHJhdmVyc2VOZXh0KCkuIEl0IGRvZXNuJ3Qg
cmV0dXJuIGZyYW1lcyBpbiBvdGhlciBUcmVlU2NvcGVzLgorICAgICAgICAqIHBhZ2UvRnJhbWVU
cmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OkZyYW1lVHJlZSk6IEluaXRpYWxp
emVzIG1fY2hpbGRDb3VudEluT3RoZXJUcmVlU2NvcGVzLgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVUcmVlOjpjaGlsZENvdW50KToKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZyYW1l
cyBvZiB3aGljaCBUcmVlU2NvcGUgaXMgdGhlIGRvY3VtZW50IG9mIHRoaXMgZnJhbWUuCisKIDIw
MTEtMDgtMDQgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbW92ZSBMZWdhY3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMgZmxhZyBmcm9tIGNhbnZhcyBJ
REwgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDVjMzlmOTZmMDQ2NmQ4ZWU1ZjZjZmFjMzlmNDE5NWRiNjM4OWQ5NDYuLmEwMzc5YzIxMmVi
ZDJlMjk1OWIxOWEwNWMyY2VlYzAwODIzOGYzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXRlKCkKIC8vIGhpc3RvcnkgaXRlbS4KIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCkKIHsKLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fZnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRy
YXZlcnNlTmV4dChtX2ZyYW1lKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0SW5UcmVlU2NvcGUobV9m
cmFtZSkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnNhdmVEb2N1bWVu
dFN0YXRlKCk7CiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlU2Nyb2xs
UG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPmN1
cnJlbnRJdGVtKCkpOwogICAgIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAg
ICAgICB9CiAgICAgICAgIC8vIFRoZSBjbGllbnQgcmVkaXJlY3QgcmVwbGFjZXMgdGhlIGN1cnJl
bnQgaGlzdG9yeSBpdGVtLgogICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgIH0gZWxz
ZSB7CisgICAgfSBlbHNlIGlmICghbV9mcmFtZS0+aXNJblNoYWRvd1RyZWUoKSkgewogICAgICAg
ICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgICAg
ICBpZiAocGFyZW50RnJhbWUgJiYgcGFyZW50RnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPm1f
Y3VycmVudEl0ZW0pCiAgICAgICAgICAgICBwYXJlbnRGcmFtZS0+bG9hZGVyKCktPmhpc3Rvcnko
KS0+bV9jdXJyZW50SXRlbS0+c2V0Q2hpbGRJdGVtKGNyZWF0ZUl0ZW0oKSk7CkBAIC00OTEsNyAr
NDkxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0
KCkKICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKIAogICAgIC8vIEl0
ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZQotICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
bV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVl
KCktPmZpcnN0Q2hpbGRJblRyZWVTY29wZSgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCkpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+aGlz
dG9yeSgpLT5yZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKTsKIH0KIApAQCAtNTMxLDcgKzUzMSw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvclNhbWVEb2N1bWVu
dE5hdmlnYXRpb24oKQogICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKIAogICAgIC8vIEl0ZXJh
dGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1f
ZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKQorICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgp
LT5maXJzdENoaWxkSW5UcmVlU2NvcGUoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+
bmV4dFNpYmxpbmdJblRyZWVTY29wZSgpKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCktPmhpc3Rv
cnkoKS0+cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogfQogCkBA
IC02NTAsNyArNjUwLDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xs
ZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm8KICAgICAgICAgICAgIGJm
SXRlbS0+c2V0RG9jdW1lbnRTZXF1ZW5jZU51bWJlcihtX3ByZXZpb3VzSXRlbS0+ZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoRnJhbWUqIGNoaWxk
ID0gbV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50
cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2Zy
YW1lLT50cmVlKCktPmZpcnN0Q2hpbGRJblRyZWVTY29wZSgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCkpIHsKICAgICAgICAgICAgIEZyYW1l
TG9hZGVyKiBjaGlsZExvYWRlciA9IGNoaWxkLT5sb2FkZXIoKTsKICAgICAgICAgICAgIGJvb2wg
aGFzQ2hpbGRMb2FkZWQgPSBjaGlsZExvYWRlci0+ZnJhbWVIYXNMb2FkZWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCBmM2FhZTMwMGIzNTJmZWZmNWJkNzEyMzRmOTQxNGFhNTI0YzkyMzA4
Li44OTc2MDY2NGU4ODc1NDU5ZGIzMTdiZTVkN2VjNmU4ZDQwODBmMTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMTExNSw0ICsxMTE1LDE4IEBAIHZvaWQgRnJhbWU6Om5vdGlmeUNocm9tZUNs
aWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCkgY29uc3QKICAgICBtX3BhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CiB9
CiAKK2Jvb2wgRnJhbWU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0
IEZyYW1lKiBmcmFtZSA9IHRoaXM7IGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoZnJhbWUtPm93bmVy
RWxlbWVudCgpLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVHJlZVNjb3BlKiBGcmFtZTo6b3duZXJUcmVl
U2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBvd25lckVsZW1lbnQoKSA/IG93bmVyRWxlbWVu
dCgpLT50cmVlU2NvcGUoKSA6IGRvY3VtZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCA2NDg2YzA2ZjBhMWRmMDUzZTQyNTU5NDgxZmI2MjE0MTBi
MjE3MjdlLi5hMWFlYzNjZGZmZDFhMmEzNDZlMGZjZTIzM2NlOWVhMjcwNmIyN2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCkBAIC02OSw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBSZWd1bGFyRXhwcmVzc2lvbjsKICAgICBjbGFzcyBSZW5kZXJQYXJ0OwogICAgIGNsYXNzIFRp
bGVkQmFja2luZ1N0b3JlOworICAgIGNsYXNzIFRyZWVTY29wZTsKIAogI2lmICFFTkFCTEUoVElM
RURfQkFDS0lOR19TVE9SRSkKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7IH07
CkBAIC0xMDIsNiArMTAzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2Uq
IHBhZ2UoKSBjb25zdDsKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpIGNvbnN0OworICAgICAg
ICBUcmVlU2NvcGUqIG93bmVyVHJlZVNjb3BlKCkgY29uc3Q7CiAKICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IGYzZjMyZWM0ZjhmY2U2ZWNjMWMwYTliYTU5OGZk
MTQ4Y2EzYjA3ZDkuLjgxNWZkYWIxNGUwY2EzYTgxZTk0NTEzNWMyZDc2N2NlMmFlMzY5ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTYzLDYgKzYzLDI5IEBAIEZyYW1lKiBGcmFt
ZVRyZWU6OnBhcmVudChib29sIGNoZWNrRm9yRGlzY29ubmVjdGVkRnJhbWUpIGNvbnN0CiAgICAg
cmV0dXJuIG1fcGFyZW50OwogfQogCitGcmFtZSogRnJhbWVUcmVlOjpuZXh0U2libGluZ0luVHJl
ZVNjb3BlKCkgY29uc3QKK3sKKyAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IG1fdGhp
c0ZyYW1lLT5vd25lclRyZWVTY29wZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fbmV4dFNpYmxp
bmcuZ2V0KCk7CisgICAgd2hpbGUgKGZyYW1lICYmIHRyZWVTY29wZSAhPSBmcmFtZS0+b3duZXJU
cmVlU2NvcGUoKSkKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5tX25leHRTaWJsaW5n
LmdldCgpOworICAgIHJldHVybiBmcmFtZTsKK30KKworRnJhbWUqIEZyYW1lVHJlZTo6Zmlyc3RD
aGlsZEluVHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29w
ZSA9IG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpOworICAgIEZyYW1lKiBmcmFtZSA9IG1fZmlyc3RD
aGlsZC5nZXQoKTsKKyAgICB3aGlsZSAoZnJhbWUgJiYgdHJlZVNjb3BlICE9IGZyYW1lLT5vd25l
clRyZWVTY29wZSgpKQorICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPm1fbmV4dFNpYmxp
bmcuZ2V0KCk7CisgICAgcmV0dXJuIGZyYW1lOworfQorCitGcmFtZSogRnJhbWVUcmVlOjpwYXJl
bnRJblRyZWVTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3BhcmVudCAmJiBtX3BhcmVu
dC0+ZG9jdW1lbnQoKSA9PSBtX3RoaXNGcmFtZS0+b3duZXJUcmVlU2NvcGUoKSkgPyBtX3BhcmVu
dCA6IDA7Cit9CisKIGJvb2wgRnJhbWVUcmVlOjp0cmFuc2ZlckNoaWxkKFBhc3NSZWZQdHI8RnJh
bWU+IGNoaWxkKQogewogICAgIEZyYW1lKiBvbGRQYXJlbnQgPSBjaGlsZC0+dHJlZSgpLT5wYXJl
bnQoKTsKQEAgLTEwMiw2ICsxMjUsOCBAQCB2b2lkIEZyYW1lVHJlZTo6YWN0dWFsbHlBcHBlbmRD
aGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKICAgICAgICAgbV9maXJzdENoaWxkID0gY2hp
bGQ7CiAKICAgICBtX2NoaWxkQ291bnQrKzsKKyAgICBpZiAobV90aGlzRnJhbWUtPmRvY3VtZW50
KCkgIT0gbV9sYXN0Q2hpbGQtPm93bmVyVHJlZVNjb3BlKCkpCisgICAgICAgIG1fY2hpbGRDb3Vu
dEluT3RoZXJUcmVlU2NvcGVzKys7CiAKICAgICBBU1NFUlQoIW1fbGFzdENoaWxkLT50cmVlKCkt
Pm1fbmV4dFNpYmxpbmcpOwogfQpAQCAtMTI0LDYgKzE0OSw4IEBAIHZvaWQgRnJhbWVUcmVlOjpy
ZW1vdmVDaGlsZChGcmFtZSogY2hpbGQpCiAgICAgY2hpbGQtPnRyZWUoKS0+bV9uZXh0U2libGlu
ZyA9IDA7CiAKICAgICBtX2NoaWxkQ291bnQtLTsKKyAgICBpZiAobV90aGlzRnJhbWUtPmRvY3Vt
ZW50KCkgIT0gY2hpbGQtPm93bmVyVHJlZVNjb3BlKCkpCisgICAgICAgIG1fY2hpbGRDb3VudElu
T3RoZXJUcmVlU2NvcGVzLS07CiB9CiAKIEF0b21pY1N0cmluZyBGcmFtZVRyZWU6OnVuaXF1ZUNo
aWxkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHJlcXVlc3RlZE5hbWUpIGNvbnN0CkBAIC0xNzcs
MTUgKzIwNCwxNSBAQCBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdAogCiBGcmFtZSogRnJhbWVUcmVl
OjpjaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKLSAgICBGcmFtZSogcmVzdWx0ID0gZmly
c3RDaGlsZCgpOworICAgIEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkSW5UcmVlU2NvcGUoKTsK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyByZXN1bHQgJiYgaSAhPSBpbmRleDsgKytpKQotICAg
ICAgICByZXN1bHQgPSByZXN1bHQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKTsKKyAgICAgICAgcmVz
dWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nSW5UcmVlU2NvcGUoKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCiBGcmFtZSogRnJhbWVUcmVlOjpjaGlsZChjb25zdCBBdG9taWNTdHJp
bmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgZm9yIChGcmFtZSogY2hpbGQgPSBmaXJzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChG
cmFtZSogY2hpbGQgPSBmaXJzdENoaWxkSW5UcmVlU2NvcGUoKTsgY2hpbGQ7IGNoaWxkID0gY2hp
bGQtPnRyZWUoKS0+bmV4dFNpYmxpbmdJblRyZWVTY29wZSgpKQogICAgICAgICBpZiAoY2hpbGQt
PnRyZWUoKS0+dW5pcXVlTmFtZSgpID09IG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gY2hpbGQ7
CiAgICAgcmV0dXJuIDA7CkBAIC0yMDcsOSArMjM0LDEwIEBAIEZyYW1lKiBGcmFtZVRyZWU6OmZp
bmQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIC8vIFNlYXJjaCBzdWJ0cmVlIHN0YXJ0aW5nIHdpdGggdGhpcyBmcmFtZSBmaXJzdC4KLSAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHQobV90aGlzRnJhbWUpKQorICAgIGZvciAoRnJhbWUqIGZyYW1l
ID0gbV90aGlzRnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4
dEluVHJlZVNjb3BlKG1fdGhpc0ZyYW1lKSkgewogICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS0+
dW5pcXVlTmFtZSgpID09IG5hbWUpCiAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgfQog
CiAgICAgLy8gU2VhcmNoIHRoZSBlbnRpcmUgdHJlZSBmb3IgdGhpcyBwYWdlIG5leHQuCiAgICAg
UGFnZSogcGFnZSA9IG1fdGhpc0ZyYW1lLT5wYWdlKCk7CkBAIC0yMTgsOSArMjQ2LDEzIEBAIEZy
YW1lKiBGcmFtZVRyZWU6OmZpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAg
IGlmICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBmb3IgKEZyYW1lKiBmcmFtZSA9
IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJz
ZU5leHQoKSkKKyAgICBpZiAobV90aGlzRnJhbWUtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0SW5UcmVlU2NvcGUoKSkg
ewogICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpID09IG5hbWUpCiAgICAg
ICAgICAgICByZXR1cm4gZnJhbWU7CisgICAgfQogCiAgICAgLy8gU2VhcmNoIHRoZSBlbnRpcmUg
dHJlZSBvZiBlYWNoIG9mIHRoZSBvdGhlciBwYWdlcyBpbiB0aGlzIG5hbWVzcGFjZS4KICAgICAv
LyBGSVhNRTogSXMgcmFuZG9tIG9yZGVyIE9LPwpAQCAtMjI5LDcgKzI2MSw3IEBAIEZyYW1lKiBG
cmFtZVRyZWU6OmZpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogICAgIGZvciAo
SGFzaFNldDxQYWdlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CiAgICAgICAgIFBhZ2UqIG90aGVyUGFnZSA9ICppdDsKICAgICAgICAgaWYg
KG90aGVyUGFnZSAhPSBwYWdlKSB7Ci0gICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG90
aGVyUGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZl
cnNlTmV4dCgpKSB7CisgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG90aGVyUGFnZS0+
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dElu
VHJlZVNjb3BlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPnRyZWUoKS0+dW5pcXVl
TmFtZSgpID09IG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKICAgICAg
ICAgICAgIH0KQEAgLTI4Niw2ICszMTgsMzUgQEAgRnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VO
ZXh0KGNvbnN0IEZyYW1lKiBzdGF5V2l0aGluKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCitG
cmFtZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHRJblRyZWVTY29wZShjb25zdCBGcmFtZSogc3Rh
eVdpdGhpbikgY29uc3QKK3sKKyAgICBGcmFtZSogY2hpbGQgPSBmaXJzdENoaWxkSW5UcmVlU2Nv
cGUoKTsKKyAgICBpZiAoY2hpbGQpIHsKKyAgICAgICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IGNo
aWxkLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAgcmV0dXJu
IGNoaWxkOworICAgIH0KKworICAgIGlmIChtX3RoaXNGcmFtZSA9PSBzdGF5V2l0aGluKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIEZyYW1lKiBzaWJsaW5nID0gbmV4dFNpYmxpbmdJblRyZWVT
Y29wZSgpOworICAgIGlmIChzaWJsaW5nKSB7CisgICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8
fCBzaWJsaW5nLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAg
cmV0dXJuIHNpYmxpbmc7CisgICAgfQorCisgICAgRnJhbWUqIGZyYW1lID0gbV90aGlzRnJhbWU7
CisgICAgd2hpbGUgKCFzaWJsaW5nICYmICghc3RheVdpdGhpbiB8fCBmcmFtZS0+dHJlZSgpLT5w
YXJlbnRJblRyZWVTY29wZSgpICE9IHN0YXlXaXRoaW4pKSB7CisgICAgICAgIGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+cGFyZW50SW5UcmVlU2NvcGUoKTsKKyAgICAgICAgaWYgKCFmcmFtZSkKKyAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzaWJsaW5nID0gZnJhbWUtPnRyZWUoKS0+bmV4
dFNpYmxpbmdJblRyZWVTY29wZSgpOworICAgIH0KKworICAgIEFTU0VSVCghc3RheVdpdGhpbiB8
fCAhc2libGluZyB8fCBzaWJsaW5nLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4p
KTsKKyAgICByZXR1cm4gc2libGluZzsKK30KKwogRnJhbWUqIEZyYW1lVHJlZTo6dHJhdmVyc2VO
ZXh0V2l0aFdyYXAoYm9vbCB3cmFwKSBjb25zdAogewogICAgIGlmIChGcmFtZSogcmVzdWx0ID0g
dHJhdmVyc2VOZXh0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJl
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAppbmRleCBiYWM1NDc1MDI5OTgy
NDc3NzgyZGU2M2Y4ZDcwYTJhMGRhOWI5MDU3Li4yNmI5OTI5NTg3N2Q3ZDYzZmUwNjU2MjFiODE0
NDc3OTZmZjNkZjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKQEAgLTM1LDYgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgLCBtX3ByZXZpb3VzU2libGluZygwKQog
ICAgICAgICAgICAgLCBtX2xhc3RDaGlsZCgwKQogICAgICAgICAgICAgLCBtX2NoaWxkQ291bnQo
MCkKKyAgICAgICAgICAgICwgbV9jaGlsZENvdW50SW5PdGhlclRyZWVTY29wZXMoMCkKICAgICAg
ICAgewogICAgICAgICB9CiAgICAgICAgIH5GcmFtZVRyZWUoKTsKQEAgLTUwLDE4ICs1MSwyMyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiBwcmV2aW91c1NpYmxpbmcoKSBj
b25zdCB7IHJldHVybiBtX3ByZXZpb3VzU2libGluZzsgfQogICAgICAgICBGcmFtZSogZmlyc3RD
aGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZC5nZXQoKTsgfQogICAgICAgICBGcmFt
ZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KLSAgICAgICAgdW5z
aWduZWQgY2hpbGRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRDb3VudDsgfQogCiAgICAg
ICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgRnJhbWUqIGFuY2VzdG9yKSBjb25zdDsKICAg
ICAgICAgRnJhbWUqIHRyYXZlcnNlTmV4dChjb25zdCBGcmFtZSogc3RheVdpdGhpbiA9IDApIGNv
bnN0OwogICAgICAgICBGcmFtZSogdHJhdmVyc2VOZXh0V2l0aFdyYXAoYm9vbCkgY29uc3Q7CiAg
ICAgICAgIEZyYW1lKiB0cmF2ZXJzZVByZXZpb3VzV2l0aFdyYXAoYm9vbCkgY29uc3Q7CiAgICAg
ICAgIAorICAgICAgICBGcmFtZSogbmV4dFNpYmxpbmdJblRyZWVTY29wZSgpIGNvbnN0OworICAg
ICAgICBGcmFtZSogZmlyc3RDaGlsZEluVHJlZVNjb3BlKCkgY29uc3Q7CisgICAgICAgIEZyYW1l
KiB0cmF2ZXJzZU5leHRJblRyZWVTY29wZShjb25zdCBGcmFtZSogc3RheVdpdGhpbiA9IDApIGNv
bnN0OworCiAgICAgICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4pOwogICAg
ICAgICBib29sIHRyYW5zZmVyQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4pOwogICAgICAgICB2b2lk
IGRldGFjaEZyb21QYXJlbnQoKSB7IG1fcGFyZW50ID0gMDsgfQogICAgICAgICB2b2lkIHJlbW92
ZUNoaWxkKEZyYW1lKik7CiAKKyAgICAgICAgLy8gY2hpbGRDb3VudCgpLCBjaGlsZCgpIGFuZCBm
aW5kKCkgZXhjbHVkZSBmcmFtZXMgaW4gZGlmZmVyZW50IFRyZWVTY29wZXMuCisgICAgICAgIHVu
c2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkQ291bnQgLSBtX2NoaWxk
Q291bnRJbk90aGVyVHJlZVNjb3BlczsgfQogICAgICAgICBGcmFtZSogY2hpbGQodW5zaWduZWQg
aW5kZXgpIGNvbnN0OwogICAgICAgICBGcmFtZSogY2hpbGQoY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lKSBjb25zdDsKICAgICAgICAgRnJhbWUqIGZpbmQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdDsKQEAgLTczLDYgKzc5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHByaXZh
dGU6CiAgICAgICAgIEZyYW1lKiBkZWVwTGFzdENoaWxkKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
YWN0dWFsbHlBcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPik7CisgICAgICAgIEZyYW1lKiBw
YXJlbnRJblRyZWVTY29wZSgpIGNvbnN0OwogCiAgICAgICAgIEZyYW1lKiBtX3RoaXNGcmFtZTsK
IApAQCAtODYsNiArOTMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxG
cmFtZT4gbV9maXJzdENoaWxkOwogICAgICAgICBGcmFtZSogbV9sYXN0Q2hpbGQ7CiAgICAgICAg
IHVuc2lnbmVkIG1fY2hpbGRDb3VudDsKKyAgICAgICAgdW5zaWduZWQgbV9jaGlsZENvdW50SW5P
dGhlclRyZWVTY29wZXM7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103053</attachid>
            <date>2011-08-05 02:02:27 -0700</date>
            <delta_ts>2011-08-05 04:29:55 -0700</delta_ts>
            <desc>Patch 3</desc>
            <filename>bug-65595-20110805180225.patch</filename>
            <type>text/plain</type>
            <size>19638</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNjUxNDAwM2M4Y2JjNWFmOGI3ZDU1
MzhhNjk3ODZiYTA5Njc2M2UzLi5iZjNiMmM2YzBjYWUwOTg4MmI2MmIxMGRkODc4ZDhmYTY3MzQy
ZDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMDUgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgPGlmcmFtZT4gaW4gc2hhZG93IHRy
ZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAx
MS0wOC0wNCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QmFkIGludGVyYWN0aW9uIGJldHdlZW4gZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gYW5kIHVubG9hZCBl
dmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMv
c3ViZnJhbWUxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1
YmZyYW1lMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlYWIwYjI1YzhjODkwNTQ5MTFlZWNhMDg1ZTg2MDNl
YmJiOGUyODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
cmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sCkBAIC0wLDAgKzEgQEAKKzxwPlN1YmZyYW1lIDE8L3A+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1YmZy
YW1lMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFt
ZTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZmNhYTNiZjYwZWU1MTVjZmFlNzU3MTMyYjQ1M2JmMmZkMzZk
YmZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291
cmNlcy9zdWJmcmFtZTIuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxwPlN1YmZyYW1lIDI8L3A+Cis8
aWZyYW1lIHNyYz0ic3ViZnJhbWUxLmh0bWwiIG5hbWU9ImRlZXBlckZyYW1lTmFtZSI+Cis8L2lm
cmFtZT4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1p
ZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1p
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTQ1NzM1NzcwMjA3MGI0NjM1NWNhOTEw
YTgxOWEzZmViYTk0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhlIHJl
c291cmNlIGZvciBhIHNoYW9kb3cgaWZyYW1lIHNob3VsZCBiZSBsb2FkZWQsIGFuZCB0aGUgaWZy
YW1lIHNob3VsZCBiZSBpbnZpc2libGUgaW4gd2luZG93LmZyYW1lcy4KKworPT0+IHN1YmZyYW1l
MSBoYXMgYmVlbiBsb2FkZWQuCis9PT4gc3ViZnJhbWUyIGhhcyBiZWVuIGxvYWRlZC4KKworVGhl
IHRvcC1sZXZlbCB3aW5kb3cgaGFzIG5vIHJlZmVyZW5jZXMgdG8gdGhlIHNoYWRvdyBmcmFtZS4K
K1BBU1Mgd2luZG93LmZyYW1lcy5sZW5ndGggaXMgMAorUEFTUyB3aW5kb3cuZnJhbWVzWyJzaGFk
b3dGcmFtZU5hbWUiXSBpcyB1bmRlZmluZWQuCitQQVNTIGRvY3VtZW50WyJzaGFkb3dGcmFtZU5h
bWUiXSBpcyB1bmRlZmluZWQuCitQQVNTIGFub3RoZXJXaW5kb3cgPT0gc2hhZG93RnJhbWUuY29u
dGVudFdpbmRvdyBpcyBmYWxzZQorCitUaGUgd2luZG93IGluIHRoZSBzaGFkb3cgZnJhbWUgY29u
dGFpbnMgYW5vdGhlciBmcmFtZS4KK1BBU1Mgc2hhZG93V2luZG93LmZyYW1lcy5sZW5ndGggaXMg
MQorc2hhZG93V2luZG93LmZyYW1lc1swXTogbmFtZT0iZGVlcGVyRnJhbWVOYW1lIgorCisKKz09
PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09CitjdXJyLT4gIChm
aWxlIHRlc3QpOmZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwgICoqbmF2IHRhcmdl
dCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGZjNTQ3MTU5ZTgxNWMxNGNhYWQ1NGJiM2NmNDMzNWUxN2UwNTI1NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKQEAg
LTAsMCArMSw2NSBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImFkZFNoYWRv
d0ZyYW1lKCkiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8cD5UaGUgcmVzb3VyY2UgZm9yIGEgc2hhb2RvdyBpZnJhbWUgc2hvdWxk
IGJlIGxvYWRlZCwgYW5kIHRoZSBpZnJhbWUgc2hvdWxkIGJlIGludmlzaWJsZSBpbiB3aW5kb3cu
ZnJhbWVzLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iaG9zdCI+PC9k
aXY+CisKKzxzY3JpcHQ+Cit2YXIgc2hhZG93RnJhbWU7Cit2YXIgc2hhZG93V2luZG93OwordmFy
IGFub3RoZXJXaW5kb3c7Cit2YXIgY291bnQgPSAwOworCitmdW5jdGlvbiBhZGRTaGFkb3dGcmFt
ZSgpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgZGVidWcoJ1RoaXMg
dGVzdCBuZWVkcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKKyAgICB2YXIg
c2hhZG93Um9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KGhvc3QpOworICAgIHNoYWRv
d0ZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgc2hhZG93RnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHNoYWRvd0ZyYW1lTG9hZGVkKTsKKyAgICBzaGFk
b3dGcmFtZS5zcmMgPSAncmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sJzsKKyAgICBzaGFkb3dGcmFt
ZS5uYW1lID0gJ3NoYWRvd0ZyYW1lTmFtZSc7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChz
aGFkb3dGcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNoYWRvd0ZyYW1lTG9hZGVkKCkgeworICAgIGNv
dW50Kys7CisgICAgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgZGVidWcoJz09PiBzdWJmcmFt
ZTEgaGFzIGJlZW4gbG9hZGVkLicpOworICAgICAgICBzaGFkb3dGcmFtZS5zcmMgPSAncmVzb3Vy
Y2VzL3N1YmZyYW1lMi5odG1sJzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWJ1Zygn
PT0+IHN1YmZyYW1lMiBoYXMgYmVlbiBsb2FkZWQuJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAg
ZGVidWcoJ1RoZSB0b3AtbGV2ZWwgd2luZG93IGhhcyBubyByZWZlcmVuY2VzIHRvIHRoZSBzaGFk
b3cgZnJhbWUuJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5mcmFtZXMubGVuZ3RoJywgJzAnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgIGRlYnVnKCd3aW5kb3cuZnJhbWVzWycgKyBpICsgJ106IG5hbWU9IicgKyB3aW5kb3cuZnJh
bWVzW2ldLm5hbWUgKyciJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3dpbmRvdy5mcmFtZXNb
InNoYWRvd0ZyYW1lTmFtZSJdJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ2RvY3VtZW50WyJz
aGFkb3dGcmFtZU5hbWUiXScpOworICAgIGFub3RoZXJXaW5kb3cgPSB3aW5kb3cub3BlbigncmVz
b3VyY2VzL3N1YmZyYW1lMS5odG1sJywgJ3NoYWRvd0ZyYW1lTmFtZScpOworICAgIHNob3VsZEJl
RmFsc2UoJ2Fub3RoZXJXaW5kb3cgPT0gc2hhZG93RnJhbWUuY29udGVudFdpbmRvdycpOworCisg
ICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUaGUgd2luZG93IGluIHRoZSBzaGFkb3cgZnJhbWUg
Y29udGFpbnMgYW5vdGhlciBmcmFtZS4nKTsKKyAgICBzaGFkb3dXaW5kb3cgPSBzaGFkb3dGcmFt
ZS5jb250ZW50V2luZG93OworICAgIHNob3VsZEJlKCdzaGFkb3dXaW5kb3cuZnJhbWVzLmxlbmd0
aCcsICcxJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkb3dXaW5kb3cuZnJhbWVzLmxl
bmd0aDsgKytpKQorICAgICAgICBkZWJ1Zygnc2hhZG93V2luZG93LmZyYW1lc1snICsgaSArICdd
OiBuYW1lPSInICsgc2hhZG93V2luZG93LmZyYW1lc1tpXS5uYW1lICsnIicpOworCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgLy8gVGhlIGJhY2sgZm9yd2FyZCBsaXN0IHNob3VsZCBjb250
YWluIGp1c3Qgb25lIGxpbmUuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3
YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0OTZmMzUxY2M0ZTU3
NDNjNmNhNjQyMjcxYjczOGYwY2RiZDVjNjQuLmZhNGMwMmU0OWExY2FjMTc0NWFhYWQxZjM4NTVm
MzcwY2RjYzI1YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAxMS0wOC0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCA8aWZyYW1l
PiBpbiBzaGFkb3cgdHJlZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnJhbWVzIGluIHNoYWRvdyB0cmVlcyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCisg
ICAgICAgIC0gd2luZG93LmZyYW1lc1tdIGRvZXNuJ3QgaW5jbHVkZSBzaGFkb3cgZnJhbWVzLgor
ICAgICAgICAtIExvYWRpbmdzIGluIHNoYWRvdyBmcmFtZXMgZG9uJ3QgdXBkYXRlIGJyb3dzZXIg
aGlzdG9yeS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOiBSZXBsYWNlIEZy
YW1lVHJlZSBmdW5jdGlvbnMKKyAgICAgICAgd2l0aCAqSW5UcmVlU2NvcGUgdmVyc2lub3MuIFRo
ZSBoaXN0b3J5IHNob3VsZG4ndCBiZSBhZmZlY3RlZCBieQorICAgICAgICBuYXZpZ2F0aW9ucyBp
biBzaGFkb3cgZnJhbWVzLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNh
dmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRl
Rm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzSW5TaGFkb3dUcmVlKTogQWRkZWQuIFRoaXMgZnVuY3Rp
b24gcmV0dXJucyB0cnVlIGlmCisgICAgICAgIGFuIGFuY2VzdG9yIG9mIHRoaXMgZnJhbWUgaXMg
aW4gc2hhZG93IHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6b3duZXJUcmVlU2NvcGUp
OiBBZGRlZC4gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIEZyYW1lVHJlZS4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6IEFkZGVkIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6Om5leHRTaWJsaW5nSW5UcmVlU2NvcGUp
OgorICAgICAgICBBIHZhcmlhbnQgb2YgbmV4dFNpYmxpbmcoKS4gVGhpcyBkb2Vzbid0IHJldHVy
biBmcmFtZXMgaW4gb3RoZXIgVHJlZVNjb3Blcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJl
ZTo6Zmlyc3RDaGlsZEluVHJlZVNjb3BlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OnBhcmVudEluVHJlZVNjb3BlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQpOiBVcGRhdGUgbV9jaGlsZENvdW50SW5PdGhlclRy
ZWVTY29wZXMuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnJlbW92ZUNoaWxkKTogZGl0
dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmNoaWxkKTogRXhjbHVkZXMgZnJhbWVz
IGluIG90aGVyIFRyZWVTY29wZXMuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmZpbmQp
OiBkaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6dHJhdmVyc2VOZXh0SW5UcmVl
U2NvcGUpOgorICAgICAgICBBIHZhcmlhbnQgb2YgdHJhdmVyc2VOZXh0KCkuIEl0IGRvZXNuJ3Qg
cmV0dXJuIGZyYW1lcyBpbiBvdGhlciBUcmVlU2NvcGVzLgorICAgICAgICAqIHBhZ2UvRnJhbWVU
cmVlLmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OkZyYW1lVHJlZSk6IEluaXRpYWxp
emVzIG1fY2hpbGRDb3VudEluT3RoZXJUcmVlU2NvcGVzLgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVUcmVlOjpjaGlsZENvdW50KToKKyAgICAgICAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZyYW1l
cyBvZiB3aGljaCBUcmVlU2NvcGUgaXMgdGhlIGRvY3VtZW50IG9mIHRoaXMgZnJhbWUuCisKIDIw
MTEtMDgtMDQgIE1hcmsgUGlsZ3JpbSAgPHBpbGdyaW1AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlbW92ZSBMZWdhY3lEZWZhdWx0T3B0aW9uYWxBcmd1bWVudHMgZmxhZyBmcm9tIGNhbnZhcyBJ
REwgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDVjMzlmOTZmMDQ2NmQ4ZWU1ZjZjZmFjMzlmNDE5NWRiNjM4OWQ5NDYuLmEwMzc5YzIxMmVi
ZDJlMjk1OWIxOWEwNWMyY2VlYzAwODIzOGYzNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0hpc3RvcnlDb250cm9sbGVyLmNwcApAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgSGlzdG9yeUNv
bnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXRlKCkKIC8vIGhpc3RvcnkgaXRlbS4KIHZvaWQgSGlz
dG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKCkKIHsKLSAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9IG1fZnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRy
YXZlcnNlTmV4dChtX2ZyYW1lKSkgeworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0SW5UcmVlU2NvcGUobV9m
cmFtZSkpIHsKICAgICAgICAgZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnNhdmVEb2N1bWVu
dFN0YXRlKCk7CiAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5zYXZlU2Nyb2xs
UG9zaXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oZnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPmN1
cnJlbnRJdGVtKCkpOwogICAgIH0KQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIEhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QoKQogICAg
ICAgICB9CiAgICAgICAgIC8vIFRoZSBjbGllbnQgcmVkaXJlY3QgcmVwbGFjZXMgdGhlIGN1cnJl
bnQgaGlzdG9yeSBpdGVtLgogICAgICAgICB1cGRhdGVDdXJyZW50SXRlbSgpOwotICAgIH0gZWxz
ZSB7CisgICAgfSBlbHNlIGlmICghbV9mcmFtZS0+aXNJblNoYWRvd1RyZWUoKSkgewogICAgICAg
ICBGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLT50cmVlKCktPnBhcmVudCgpOwogICAgICAg
ICBpZiAocGFyZW50RnJhbWUgJiYgcGFyZW50RnJhbWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPm1f
Y3VycmVudEl0ZW0pCiAgICAgICAgICAgICBwYXJlbnRGcmFtZS0+bG9hZGVyKCktPmhpc3Rvcnko
KS0+bV9jdXJyZW50SXRlbS0+c2V0Q2hpbGRJdGVtKGNyZWF0ZUl0ZW0oKSk7CkBAIC00OTEsNyAr
NDkxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0
KCkKICAgICByZXN0b3JlU2Nyb2xsUG9zaXRpb25BbmRWaWV3U3RhdGUoKTsKIAogICAgIC8vIEl0
ZXJhdGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZQotICAgIGZvciAoRnJhbWUqIGNoaWxkID0g
bV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVl
KCktPm5leHRTaWJsaW5nKCkpCisgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVl
KCktPmZpcnN0Q2hpbGRJblRyZWVTY29wZSgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCkpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+aGlz
dG9yeSgpLT5yZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKTsKIH0KIApAQCAtNTMxLDcgKzUzMSw3
IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvclNhbWVEb2N1bWVu
dE5hdmlnYXRpb24oKQogICAgIG1fcHJvdmlzaW9uYWxJdGVtID0gMDsKIAogICAgIC8vIEl0ZXJh
dGUgb3ZlciB0aGUgcmVzdCBvZiB0aGUgdHJlZS4KLSAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1f
ZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgp
LT5uZXh0U2libGluZygpKQorICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgp
LT5maXJzdENoaWxkSW5UcmVlU2NvcGUoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+
bmV4dFNpYmxpbmdJblRyZWVTY29wZSgpKQogICAgICAgICBjaGlsZC0+bG9hZGVyKCktPmhpc3Rv
cnkoKS0+cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpOwogfQogCkBA
IC02NTAsNyArNjUwLDcgQEAgUGFzc1JlZlB0cjxIaXN0b3J5SXRlbT4gSGlzdG9yeUNvbnRyb2xs
ZXI6OmNyZWF0ZUl0ZW1UcmVlKEZyYW1lKiB0YXJnZXRGcmFtZSwgYm8KICAgICAgICAgICAgIGJm
SXRlbS0+c2V0RG9jdW1lbnRTZXF1ZW5jZU51bWJlcihtX3ByZXZpb3VzSXRlbS0+ZG9jdW1lbnRT
ZXF1ZW5jZU51bWJlcigpKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAoRnJhbWUqIGNoaWxk
ID0gbV9mcmFtZS0+dHJlZSgpLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50
cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2Zy
YW1lLT50cmVlKCktPmZpcnN0Q2hpbGRJblRyZWVTY29wZSgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCkpIHsKICAgICAgICAgICAgIEZyYW1l
TG9hZGVyKiBjaGlsZExvYWRlciA9IGNoaWxkLT5sb2FkZXIoKTsKICAgICAgICAgICAgIGJvb2wg
aGFzQ2hpbGRMb2FkZWQgPSBjaGlsZExvYWRlci0+ZnJhbWVIYXNMb2FkZWQoKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lLmNwcAppbmRleCBmM2FhZTMwMGIzNTJmZWZmNWJkNzEyMzRmOTQxNGFhNTI0YzkyMzA4
Li44OTc2MDY2NGU4ODc1NDU5ZGIzMTdiZTVkN2VjNmU4ZDQwODBmMTE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmNwcApAQCAtMTExNSw0ICsxMTE1LDE4IEBAIHZvaWQgRnJhbWU6Om5vdGlmeUNocm9tZUNs
aWVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKCkgY29uc3QKICAgICBtX3BhZ2UtPmNo
cm9tZSgpLT5jbGllbnQoKS0+bnVtV2hlZWxFdmVudEhhbmRsZXJzQ2hhbmdlZChjb3VudCk7CiB9
CiAKK2Jvb2wgRnJhbWU6OmlzSW5TaGFkb3dUcmVlKCkgY29uc3QKK3sKKyAgICBmb3IgKGNvbnN0
IEZyYW1lKiBmcmFtZSA9IHRoaXM7IGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoZnJhbWUtPm93bmVy
RWxlbWVudCgpLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworVHJlZVNjb3BlKiBGcmFtZTo6b3duZXJUcmVl
U2NvcGUoKSBjb25zdAoreworICAgIHJldHVybiBvd25lckVsZW1lbnQoKSA/IG93bmVyRWxlbWVu
dCgpLT50cmVlU2NvcGUoKSA6IGRvY3VtZW50KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRnJhbWUuaAppbmRleCA2NDg2YzA2ZjBhMWRmMDUzZTQyNTU5NDgxZmI2MjE0MTBi
MjE3MjdlLi5hMWFlYzNjZGZmZDFhMmEzNDZlMGZjZTIzM2NlOWVhMjcwNmIyN2NkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5oCkBAIC02OSw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFz
cyBSZWd1bGFyRXhwcmVzc2lvbjsKICAgICBjbGFzcyBSZW5kZXJQYXJ0OwogICAgIGNsYXNzIFRp
bGVkQmFja2luZ1N0b3JlOworICAgIGNsYXNzIFRyZWVTY29wZTsKIAogI2lmICFFTkFCTEUoVElM
RURfQkFDS0lOR19TVE9SRSkKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7IH07
CkBAIC0xMDIsNiArMTAzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIFBhZ2Uq
IHBhZ2UoKSBjb25zdDsKICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1l
bnQoKSBjb25zdDsKKyAgICAgICAgYm9vbCBpc0luU2hhZG93VHJlZSgpIGNvbnN0OworICAgICAg
ICBUcmVlU2NvcGUqIG93bmVyVHJlZVNjb3BlKCkgY29uc3Q7CiAKICAgICAgICAgRG9jdW1lbnQq
IGRvY3VtZW50KCkgY29uc3Q7CiAgICAgICAgIEZyYW1lVmlldyogdmlldygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IGYzZjMyZWM0ZjhmY2U2ZWNjMWMwYTliYTU5OGZk
MTQ4Y2EzYjA3ZDkuLjVmZTdmMWIyZGY4YzcyYTIzM2IzODE1ZjkyYzZhMzFlNjUwNGYwNzcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTIxLDYgKzIxLDcgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJGcmFtZVRyZWUuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQ
YWdlLmgiCkBAIC02Myw2ICs2NCwyOSBAQCBGcmFtZSogRnJhbWVUcmVlOjpwYXJlbnQoYm9vbCBj
aGVja0ZvckRpc2Nvbm5lY3RlZEZyYW1lKSBjb25zdAogICAgIHJldHVybiBtX3BhcmVudDsKIH0K
IAorRnJhbWUqIEZyYW1lVHJlZTo6bmV4dFNpYmxpbmdJblRyZWVTY29wZSgpIGNvbnN0Cit7Cisg
ICAgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX3RoaXNGcmFtZS0+b3duZXJUcmVlU2Nv
cGUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX25leHRTaWJsaW5nLmdldCgpOworICAgIHdoaWxl
IChmcmFtZSAmJiB0cmVlU2NvcGUgIT0gZnJhbWUtPm93bmVyVHJlZVNjb3BlKCkpCisgICAgICAg
IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+bV9uZXh0U2libGluZy5nZXQoKTsKKyAgICByZXR1cm4g
ZnJhbWU7Cit9CisKK0ZyYW1lKiBGcmFtZVRyZWU6OmZpcnN0Q2hpbGRJblRyZWVTY29wZSgpIGNv
bnN0Cit7CisgICAgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBtX3RoaXNGcmFtZS0+ZG9j
dW1lbnQoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBtX2ZpcnN0Q2hpbGQuZ2V0KCk7CisgICAgd2hp
bGUgKGZyYW1lICYmIHRyZWVTY29wZSAhPSBmcmFtZS0+b3duZXJUcmVlU2NvcGUoKSkKKyAgICAg
ICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5tX25leHRTaWJsaW5nLmdldCgpOworICAgIHJldHVy
biBmcmFtZTsKK30KKworRnJhbWUqIEZyYW1lVHJlZTo6cGFyZW50SW5UcmVlU2NvcGUoKSBjb25z
dAoreworICAgIHJldHVybiAobV9wYXJlbnQgJiYgbV9wYXJlbnQtPmRvY3VtZW50KCkgPT0gbV90
aGlzRnJhbWUtPm93bmVyVHJlZVNjb3BlKCkpID8gbV9wYXJlbnQgOiAwOworfQorCiBib29sIEZy
YW1lVHJlZTo6dHJhbnNmZXJDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKIHsKICAgICBG
cmFtZSogb2xkUGFyZW50ID0gY2hpbGQtPnRyZWUoKS0+cGFyZW50KCk7CkBAIC0xMDIsNiArMTI2
LDggQEAgdm9pZCBGcmFtZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFt
ZT4gY2hpbGQpCiAgICAgICAgIG1fZmlyc3RDaGlsZCA9IGNoaWxkOwogCiAgICAgbV9jaGlsZENv
dW50Kys7CisgICAgaWYgKG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpICE9IG1fbGFzdENoaWxkLT5v
d25lclRyZWVTY29wZSgpKQorICAgICAgICBtX2NoaWxkQ291bnRJbk90aGVyVHJlZVNjb3Blcysr
OwogCiAgICAgQVNTRVJUKCFtX2xhc3RDaGlsZC0+dHJlZSgpLT5tX25leHRTaWJsaW5nKTsKIH0K
QEAgLTEyNCw2ICsxNTAsOCBAQCB2b2lkIEZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQoRnJhbWUqIGNo
aWxkKQogICAgIGNoaWxkLT50cmVlKCktPm1fbmV4dFNpYmxpbmcgPSAwOwogCiAgICAgbV9jaGls
ZENvdW50LS07CisgICAgaWYgKG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpICE9IGNoaWxkLT5vd25l
clRyZWVTY29wZSgpKQorICAgICAgICBtX2NoaWxkQ291bnRJbk90aGVyVHJlZVNjb3Blcy0tOwog
fQogCiBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWlj
U3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdApAQCAtMTc3LDE1ICsyMDUsMTUgQEAgQXRvbWlj
U3RyaW5nIEZyYW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcmVx
dWVzdGVkTmFtZSkgY29uc3QKIAogRnJhbWUqIEZyYW1lVHJlZTo6Y2hpbGQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0CiB7Ci0gICAgRnJhbWUqIHJlc3VsdCA9IGZpcnN0Q2hpbGQoKTsKKyAgICBGcmFt
ZSogcmVzdWx0ID0gZmlyc3RDaGlsZEluVHJlZVNjb3BlKCk7CiAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgcmVzdWx0ICYmIGkgIT0gaW5kZXg7ICsraSkKLSAgICAgICAgcmVzdWx0ID0gcmVzdWx0
LT50cmVlKCktPm5leHRTaWJsaW5nKCk7CisgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgp
LT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogRnJh
bWUqIEZyYW1lVHJlZTo6Y2hpbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAogewot
ICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+dHJlZSgpLT5uZXh0U2libGluZygpKQorICAgIGZvciAoRnJhbWUqIGNoaWxkID0gZmlyc3RD
aGlsZEluVHJlZVNjb3BlKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJs
aW5nSW5UcmVlU2NvcGUoKSkKICAgICAgICAgaWYgKGNoaWxkLT50cmVlKCktPnVuaXF1ZU5hbWUo
KSA9PSBuYW1lKQogICAgICAgICAgICAgcmV0dXJuIGNoaWxkOwogICAgIHJldHVybiAwOwpAQCAt
MjA3LDkgKzIzNSwxMCBAQCBGcmFtZSogRnJhbWVUcmVlOjpmaW5kKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBTZWFyY2ggc3VidHJl
ZSBzdGFydGluZyB3aXRoIHRoaXMgZnJhbWUgZmlyc3QuCi0gICAgZm9yIChGcmFtZSogZnJhbWUg
PSBtX3RoaXNGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0
KG1fdGhpc0ZyYW1lKSkKKyAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRJblRyZWVTY29wZShtX3RoaXNG
cmFtZSkpIHsKICAgICAgICAgaWYgKGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1l
KQogICAgICAgICAgICAgcmV0dXJuIGZyYW1lOworICAgIH0KIAogICAgIC8vIFNlYXJjaCB0aGUg
ZW50aXJlIHRyZWUgZm9yIHRoaXMgcGFnZSBuZXh0LgogICAgIFBhZ2UqIHBhZ2UgPSBtX3RoaXNG
cmFtZS0+cGFnZSgpOwpAQCAtMjE4LDkgKzI0NywxMyBAQCBGcmFtZSogRnJhbWVUcmVlOjpmaW5k
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICBpZiAoIXBhZ2UpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgZm9yIChGcmFtZSogZnJhbWUgPSBwYWdlLT5tYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpCisgICAgaWYgKG1f
dGhpc0ZyYW1lLT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCktPnRyYXZlcnNlTmV4dEluVHJlZVNjb3BlKCkpIHsKICAgICAgICAgaWYgKGZyYW1l
LT50cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1lKQogICAgICAgICAgICAgcmV0dXJuIGZyYW1l
OworICAgIH0KIAogICAgIC8vIFNlYXJjaCB0aGUgZW50aXJlIHRyZWUgb2YgZWFjaCBvZiB0aGUg
b3RoZXIgcGFnZXMgaW4gdGhpcyBuYW1lc3BhY2UuCiAgICAgLy8gRklYTUU6IElzIHJhbmRvbSBv
cmRlciBPSz8KQEAgLTIyOSw3ICsyNjIsNyBAQCBGcmFtZSogRnJhbWVUcmVlOjpmaW5kKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKICAgICBmb3IgKEhhc2hTZXQ8UGFnZSo+Ojpjb25z
dF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAg
ICBQYWdlKiBvdGhlclBhZ2UgPSAqaXQ7CiAgICAgICAgIGlmIChvdGhlclBhZ2UgIT0gcGFnZSkg
ewotICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBvdGhlclBhZ2UtPm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHQoKSkgeworICAgICAg
ICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBvdGhlclBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2ZXJzZU5leHRJblRyZWVTY29wZSgpKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKGZyYW1lLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1lKQogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7CiAgICAgICAgICAgICB9CkBAIC0yODYsNiAr
MzE5LDM1IEBAIEZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlTmV4dChjb25zdCBGcmFtZSogc3Rh
eVdpdGhpbikgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAorRnJhbWUqIEZyYW1lVHJlZTo6dHJh
dmVyc2VOZXh0SW5UcmVlU2NvcGUoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4pIGNvbnN0Cit7Cisg
ICAgRnJhbWUqIGNoaWxkID0gZmlyc3RDaGlsZEluVHJlZVNjb3BlKCk7CisgICAgaWYgKGNoaWxk
KSB7CisgICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCBjaGlsZC0+dHJlZSgpLT5pc0Rlc2Nl
bmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICB9CisKKyAg
ICBpZiAobV90aGlzRnJhbWUgPT0gc3RheVdpdGhpbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBGcmFtZSogc2libGluZyA9IG5leHRTaWJsaW5nSW5UcmVlU2NvcGUoKTsKKyAgICBpZiAoc2li
bGluZykgeworICAgICAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgc2libGluZy0+dHJlZSgpLT5p
c0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgICAgIHJldHVybiBzaWJsaW5nOworICAg
IH0KKworICAgIEZyYW1lKiBmcmFtZSA9IG1fdGhpc0ZyYW1lOworICAgIHdoaWxlICghc2libGlu
ZyAmJiAoIXN0YXlXaXRoaW4gfHwgZnJhbWUtPnRyZWUoKS0+cGFyZW50SW5UcmVlU2NvcGUoKSAh
PSBzdGF5V2l0aGluKSkgeworICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBhcmVudElu
VHJlZVNjb3BlKCk7CisgICAgICAgIGlmICghZnJhbWUpCisgICAgICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgc2libGluZyA9IGZyYW1lLT50cmVlKCktPm5leHRTaWJsaW5nSW5UcmVlU2NvcGUo
KTsKKyAgICB9CisKKyAgICBBU1NFUlQoIXN0YXlXaXRoaW4gfHwgIXNpYmxpbmcgfHwgc2libGlu
Zy0+dHJlZSgpLT5pc0Rlc2NlbmRhbnRPZihzdGF5V2l0aGluKSk7CisgICAgcmV0dXJuIHNpYmxp
bmc7Cit9CisKIEZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlTmV4dFdpdGhXcmFwKGJvb2wgd3Jh
cCkgY29uc3QKIHsKICAgICBpZiAoRnJhbWUqIHJlc3VsdCA9IHRyYXZlcnNlTmV4dCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggYmFjNTQ3NTAyOTk4MjQ3Nzc4MmRlNjNmOGQ3MGEyYTBk
YTliOTA1Ny4uMjZiOTkyOTU4NzdkN2Q2M2ZlMDY1NjIxYjgxNDQ3Nzk2ZmYzZGYzOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgICwgbV9wcmV2aW91c1NpYmxpbmcoMCkKICAgICAgICAgICAgICwgbV9sYXN0
Q2hpbGQoMCkKICAgICAgICAgICAgICwgbV9jaGlsZENvdW50KDApCisgICAgICAgICAgICAsIG1f
Y2hpbGRDb3VudEluT3RoZXJUcmVlU2NvcGVzKDApCiAgICAgICAgIHsKICAgICAgICAgfQogICAg
ICAgICB+RnJhbWVUcmVlKCk7CkBAIC01MCwxOCArNTEsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBGcmFtZSogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2
aW91c1NpYmxpbmc7IH0KICAgICAgICAgRnJhbWUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVy
biBtX2ZpcnN0Q2hpbGQuZ2V0KCk7IH0KICAgICAgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkQ291bnQoKSBj
b25zdCB7IHJldHVybiBtX2NoaWxkQ291bnQ7IH0KIAogICAgICAgICBib29sIGlzRGVzY2VuZGFu
dE9mKGNvbnN0IEZyYW1lKiBhbmNlc3RvcikgY29uc3Q7CiAgICAgICAgIEZyYW1lKiB0cmF2ZXJz
ZU5leHQoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKICAgICAgICAgRnJhbWUq
IHRyYXZlcnNlTmV4dFdpdGhXcmFwKGJvb2wpIGNvbnN0OwogICAgICAgICBGcmFtZSogdHJhdmVy
c2VQcmV2aW91c1dpdGhXcmFwKGJvb2wpIGNvbnN0OwogICAgICAgICAKKyAgICAgICAgRnJhbWUq
IG5leHRTaWJsaW5nSW5UcmVlU2NvcGUoKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIGZpcnN0Q2hp
bGRJblRyZWVTY29wZSgpIGNvbnN0OworICAgICAgICBGcmFtZSogdHJhdmVyc2VOZXh0SW5UcmVl
U2NvcGUoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKKwogICAgICAgICB2b2lk
IGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKICAgICAgICAgYm9vbCB0cmFuc2ZlckNo
aWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKICAgICAgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkg
eyBtX3BhcmVudCA9IDA7IH0KICAgICAgICAgdm9pZCByZW1vdmVDaGlsZChGcmFtZSopOwogCisg
ICAgICAgIC8vIGNoaWxkQ291bnQoKSwgY2hpbGQoKSBhbmQgZmluZCgpIGV4Y2x1ZGUgZnJhbWVz
IGluIGRpZmZlcmVudCBUcmVlU2NvcGVzLgorICAgICAgICB1bnNpZ25lZCBjaGlsZENvdW50KCkg
Y29uc3QgeyByZXR1cm4gbV9jaGlsZENvdW50IC0gbV9jaGlsZENvdW50SW5PdGhlclRyZWVTY29w
ZXM7IH0KICAgICAgICAgRnJhbWUqIGNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICAg
ICAgRnJhbWUqIGNoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgICAg
IEZyYW1lKiBmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CkBAIC03Myw2ICs3
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZSog
ZGVlcExhc3RDaGlsZCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFjdHVhbGx5QXBwZW5kQ2hpbGQo
UGFzc1JlZlB0cjxGcmFtZT4pOworICAgICAgICBGcmFtZSogcGFyZW50SW5UcmVlU2NvcGUoKSBj
b25zdDsKIAogICAgICAgICBGcmFtZSogbV90aGlzRnJhbWU7CiAKQEAgLTg2LDYgKzkzLDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZmlyc3RDaGlsZDsK
ICAgICAgICAgRnJhbWUqIG1fbGFzdENoaWxkOwogICAgICAgICB1bnNpZ25lZCBtX2NoaWxkQ291
bnQ7CisgICAgICAgIHVuc2lnbmVkIG1fY2hpbGRDb3VudEluT3RoZXJUcmVlU2NvcGVzOwogICAg
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103059</attachid>
            <date>2011-08-05 04:30:02 -0700</date>
            <delta_ts>2012-02-22 01:54:09 -0800</delta_ts>
            <desc>Patch 4</desc>
            <filename>bug-65595-20110805203000.patch</filename>
            <type>text/plain</type>
            <size>21154</size>
            <attacher name="Kent Tamura">tkent</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI0NDMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBjNjUxNDAwM2M4Y2JjNWFmOGI3ZDU1
MzhhNjk3ODZiYTA5Njc2M2UzLi5iZjNiMmM2YzBjYWUwOTg4MmI2MmIxMGRkODc4ZDhmYTY3MzQy
ZDAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDgtMDUgIEtlbnQgVGFtdXJhICA8dGtl
bnRAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFN1cHBvcnQgPGlmcmFtZT4gaW4gc2hhZG93IHRy
ZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTEuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFtZTIuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5odG1sOiBBZGRlZC4KKwogMjAx
MS0wOC0wNCAgU2NvdHQgR3JhaGFtICA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QmFkIGludGVyYWN0aW9uIGJldHdlZW4gZG9jdW1lbnQgZGVzdHJ1Y3Rpb24gYW5kIHVubG9hZCBl
dmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9yZXNvdXJjZXMv
c3ViZnJhbWUxLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1
YmZyYW1lMS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJlYWIwYjI1YzhjODkwNTQ5MTFlZWNhMDg1ZTg2MDNl
YmJiOGUyODYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
cmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sCkBAIC0wLDAgKzEgQEAKKzxwPlN1YmZyYW1lIDE8L3A+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvcmVzb3VyY2VzL3N1YmZy
YW1lMi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291cmNlcy9zdWJmcmFt
ZTIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4zZmNhYTNiZjYwZWU1MTVjZmFlNzU3MTMyYjQ1M2JmMmZkMzZk
YmZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3Jlc291
cmNlcy9zdWJmcmFtZTIuaHRtbApAQCAtMCwwICsxLDQgQEAKKzxwPlN1YmZyYW1lIDI8L3A+Cis8
aWZyYW1lIHNyYz0ic3ViZnJhbWUxLmh0bWwiIG5hbWU9ImRlZXBlckZyYW1lTmFtZSI+Cis8L2lm
cmFtZT4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1p
ZnJhbWUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1p
ZnJhbWUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA0OTQ1NzM1NzcwMjA3MGI0NjM1NWNhOTEw
YTgxOWEzZmViYTk0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
aGFkb3cvc2hhZG93LWlmcmFtZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxOSBAQAorVGhlIHJl
c291cmNlIGZvciBhIHNoYW9kb3cgaWZyYW1lIHNob3VsZCBiZSBsb2FkZWQsIGFuZCB0aGUgaWZy
YW1lIHNob3VsZCBiZSBpbnZpc2libGUgaW4gd2luZG93LmZyYW1lcy4KKworPT0+IHN1YmZyYW1l
MSBoYXMgYmVlbiBsb2FkZWQuCis9PT4gc3ViZnJhbWUyIGhhcyBiZWVuIGxvYWRlZC4KKworVGhl
IHRvcC1sZXZlbCB3aW5kb3cgaGFzIG5vIHJlZmVyZW5jZXMgdG8gdGhlIHNoYWRvdyBmcmFtZS4K
K1BBU1Mgd2luZG93LmZyYW1lcy5sZW5ndGggaXMgMAorUEFTUyB3aW5kb3cuZnJhbWVzWyJzaGFk
b3dGcmFtZU5hbWUiXSBpcyB1bmRlZmluZWQuCitQQVNTIGRvY3VtZW50WyJzaGFkb3dGcmFtZU5h
bWUiXSBpcyB1bmRlZmluZWQuCitQQVNTIGFub3RoZXJXaW5kb3cgPT0gc2hhZG93RnJhbWUuY29u
dGVudFdpbmRvdyBpcyBmYWxzZQorCitUaGUgd2luZG93IGluIHRoZSBzaGFkb3cgZnJhbWUgY29u
dGFpbnMgYW5vdGhlciBmcmFtZS4KK1BBU1Mgc2hhZG93V2luZG93LmZyYW1lcy5sZW5ndGggaXMg
MQorc2hhZG93V2luZG93LmZyYW1lc1swXTogbmFtZT0iZGVlcGVyRnJhbWVOYW1lIgorCisKKz09
PT09PT09PT09PT09IEJhY2sgRm9yd2FyZCBMaXN0ID09PT09PT09PT09PT09CitjdXJyLT4gIChm
aWxlIHRlc3QpOmZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwgICoqbmF2IHRhcmdl
dCoqCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1pZnJhbWUuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMGZjNTQ3MTU5ZTgxNWMxNGNhYWQ1NGJiM2NmNDMzNWUxN2UwNTI1NAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctaWZyYW1lLmh0bWwKQEAg
LTAsMCArMSw2NSBAQAorPCFET0NUWVBFPgorPGh0bWw+Cis8Ym9keSBvbmxvYWQ9ImFkZFNoYWRv
d0ZyYW1lKCkiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8cD5UaGUgcmVzb3VyY2UgZm9yIGEgc2hhb2RvdyBpZnJhbWUgc2hvdWxk
IGJlIGxvYWRlZCwgYW5kIHRoZSBpZnJhbWUgc2hvdWxkIGJlIGludmlzaWJsZSBpbiB3aW5kb3cu
ZnJhbWVzLjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPGRpdiBpZD0iaG9zdCI+PC9k
aXY+CisKKzxzY3JpcHQ+Cit2YXIgc2hhZG93RnJhbWU7Cit2YXIgc2hhZG93V2luZG93OwordmFy
IGFub3RoZXJXaW5kb3c7Cit2YXIgY291bnQgPSAwOworCitmdW5jdGlvbiBhZGRTaGFkb3dGcmFt
ZSgpIHsKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgZGVidWcoJ1RoaXMg
dGVzdCBuZWVkcyB3aW5kb3cuaW50ZXJuYWxzLicpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIHZhciBob3N0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2hvc3QnKTsKKyAgICB2YXIg
c2hhZG93Um9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KGhvc3QpOworICAgIHNoYWRv
d0ZyYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7CisgICAgc2hhZG93RnJh
bWUuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHNoYWRvd0ZyYW1lTG9hZGVkKTsKKyAgICBzaGFk
b3dGcmFtZS5zcmMgPSAncmVzb3VyY2VzL3N1YmZyYW1lMS5odG1sJzsKKyAgICBzaGFkb3dGcmFt
ZS5uYW1lID0gJ3NoYWRvd0ZyYW1lTmFtZSc7CisgICAgc2hhZG93Um9vdC5hcHBlbmRDaGlsZChz
aGFkb3dGcmFtZSk7Cit9CisKK2Z1bmN0aW9uIHNoYWRvd0ZyYW1lTG9hZGVkKCkgeworICAgIGNv
dW50Kys7CisgICAgaWYgKGNvdW50ID09IDEpIHsKKyAgICAgICAgZGVidWcoJz09PiBzdWJmcmFt
ZTEgaGFzIGJlZW4gbG9hZGVkLicpOworICAgICAgICBzaGFkb3dGcmFtZS5zcmMgPSAncmVzb3Vy
Y2VzL3N1YmZyYW1lMi5odG1sJzsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBkZWJ1Zygn
PT0+IHN1YmZyYW1lMiBoYXMgYmVlbiBsb2FkZWQuJyk7CisKKyAgICBkZWJ1ZygnJyk7CisgICAg
ZGVidWcoJ1RoZSB0b3AtbGV2ZWwgd2luZG93IGhhcyBubyByZWZlcmVuY2VzIHRvIHRoZSBzaGFk
b3cgZnJhbWUuJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5mcmFtZXMubGVuZ3RoJywgJzAnKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHdpbmRvdy5mcmFtZXMubGVuZ3RoOyArK2kpCisgICAg
ICAgIGRlYnVnKCd3aW5kb3cuZnJhbWVzWycgKyBpICsgJ106IG5hbWU9IicgKyB3aW5kb3cuZnJh
bWVzW2ldLm5hbWUgKyciJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ3dpbmRvdy5mcmFtZXNb
InNoYWRvd0ZyYW1lTmFtZSJdJyk7CisgICAgc2hvdWxkQmVVbmRlZmluZWQoJ2RvY3VtZW50WyJz
aGFkb3dGcmFtZU5hbWUiXScpOworICAgIGFub3RoZXJXaW5kb3cgPSB3aW5kb3cub3BlbigncmVz
b3VyY2VzL3N1YmZyYW1lMS5odG1sJywgJ3NoYWRvd0ZyYW1lTmFtZScpOworICAgIHNob3VsZEJl
RmFsc2UoJ2Fub3RoZXJXaW5kb3cgPT0gc2hhZG93RnJhbWUuY29udGVudFdpbmRvdycpOworCisg
ICAgZGVidWcoJycpOworICAgIGRlYnVnKCdUaGUgd2luZG93IGluIHRoZSBzaGFkb3cgZnJhbWUg
Y29udGFpbnMgYW5vdGhlciBmcmFtZS4nKTsKKyAgICBzaGFkb3dXaW5kb3cgPSBzaGFkb3dGcmFt
ZS5jb250ZW50V2luZG93OworICAgIHNob3VsZEJlKCdzaGFkb3dXaW5kb3cuZnJhbWVzLmxlbmd0
aCcsICcxJyk7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFkb3dXaW5kb3cuZnJhbWVzLmxl
bmd0aDsgKytpKQorICAgICAgICBkZWJ1Zygnc2hhZG93V2luZG93LmZyYW1lc1snICsgaSArICdd
OiBuYW1lPSInICsgc2hhZG93V2luZG93LmZyYW1lc1tpXS5uYW1lICsnIicpOworCisgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgLy8gVGhlIGJhY2sgZm9yd2FyZCBsaXN0IHNob3VsZCBjb250
YWluIGp1c3Qgb25lIGxpbmUuCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEJhY2tGb3J3
YXJkTGlzdCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
Kzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDA0OTZmMzUxY2M0ZTU3
NDNjNmNhNjQyMjcxYjczOGYwY2RiZDVjNjQuLmI2ZDQxODJiZjNiYzk1YmQ4ZWViZWVkZDQ2MmY1
MjBkZThmMzMzZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxMS0wOC0wNSAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgU3VwcG9ydCA8aWZyYW1l
PiBpbiBzaGFkb3cgdHJlZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTY1NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRnJhbWVzIGluIHNoYWRvdyB0cmVlcyBzaG91bGQgbm90IGJlIGV4cG9zZWQuCisg
ICAgICAgIC0gd2luZG93LmZyYW1lc1tdIGRvZXNuJ3QgaW5jbHVkZSBzaGFkb3cgZnJhbWVzLgor
ICAgICAgICAtIExvYWRpbmdzIGluIHNoYWRvdyBmcmFtZXMgZG9uJ3QgdXBkYXRlIGJyb3dzZXIg
aGlzdG9yeS4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWlmcmFtZS5o
dG1sCisKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOiBSZXBsYWNlIEZy
YW1lVHJlZSBmdW5jdGlvbnMKKyAgICAgICAgd2l0aCAqSW5UcmVlU2NvcGUgdmVyc2lub3MuIFRo
ZSBoaXN0b3J5IHNob3VsZG4ndCBiZSBhZmZlY3RlZCBieQorICAgICAgICBuYXZpZ2F0aW9ucyBp
biBzaGFkb3cgZnJhbWVzLgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNh
dmVEb2N1bWVudEFuZFNjcm9sbFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExpc3QpOgorICAg
ICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1p
dCk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRl
Rm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29u
dHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzSW5TaGFkb3dUcmVlKTogQWRkZWQuIFRoaXMgZnVuY3Rp
b24gcmV0dXJucyB0cnVlIGlmCisgICAgICAgIGFuIGFuY2VzdG9yIG9mIHRoaXMgZnJhbWUgaXMg
aW4gc2hhZG93IHRyZWUuCisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6b3duZXJUcmVlU2NvcGUp
OiBBZGRlZC4gQSBoZWxwZXIgZnVuY3Rpb24gZm9yIEZyYW1lVHJlZS4KKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6IEFkZGVkIGRlY2xhcmF0aW9ucy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6Om5leHRTaWJsaW5nSW5UcmVlU2NvcGUp
OgorICAgICAgICBBIHZhcmlhbnQgb2YgbmV4dFNpYmxpbmcoKS4gVGhpcyBkb2Vzbid0IHJldHVy
biBmcmFtZXMgaW4gb3RoZXIgVHJlZVNjb3Blcy4KKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJl
ZTo6Zmlyc3RDaGlsZEluVHJlZVNjb3BlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OnBhcmVudEluVHJlZVNjb3BlKTogZGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVRyZWU6OmFjdHVhbGx5QXBwZW5kQ2hpbGQpOiBJbnZhbGlkYXRlIG1fY2hpbGRDb3VudC4KKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQpOiBkaXR0by4KKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lVHJlZTo6Y2hpbGRDb3VudCk6CisgICAgICAgIFRoaXMgcmV0dXJucyB0
aGUgbnVtYmVyIG9mIGZyYW1lcyBvZiB3aGljaCBUcmVlU2NvcGUgaXMgdGhlCisgICAgICAgIGRv
Y3VtZW50IG9mIHRoaXMgZnJhbWUuICBDb3VudCBpdCBpZiAhbV9jaGlsZENvdW50SXNWYWxpZCwg
YW5kIHNldAorICAgICAgICBtX2NoaWxkQ291bnRJc1ZhbGlkLgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVUcmVlOjpjaGlsZCk6IEV4Y2x1ZGVzIGZyYW1lcyBpbiBvdGhlciBUcmVlU2NvcGVzLgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpmaW5kKTogZGl0dG8uCisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVRyZWU6OnRyYXZlcnNlTmV4dEluVHJlZVNjb3BlKToKKyAgICAgICAgQSB2YXJp
YW50IG9mIHRyYXZlcnNlTmV4dCgpLiBJdCBkb2Vzbid0IHJldHVybiBmcmFtZXMgaW4gb3RoZXIg
VHJlZVNjb3Blcy4KKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5oOgorICAgICAgICAtIEFkZCBt
X2NoaWxkQ291bnRJc1ZhbGlkLgorICAgICAgICAtIE1ha2UgbV9jaGlsZENvdW50IG11dGFibGUg
YmVjYXVzZSBjaGlsZENvdW50KCkgc2hvdWxkIGJlIGNvbnN0LgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVUcmVlOjpGcmFtZVRyZWUpOiBJbml0aWFsaXplcyBtX2NoaWxkQ291bnRJc1ZhbGlkLgor
CiAyMDExLTA4LTA0ICBNYXJrIFBpbGdyaW0gIDxwaWxncmltQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBSZW1vdmUgTGVnYWN5RGVmYXVsdE9wdGlvbmFsQXJndW1lbnRzIGZsYWcgZnJvbSBjYW52
YXMgSURMIGZpbGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCmluZGV4IGI0MTI5OTgxYjMxZjc0ZTcwMDhl
YjRmMzcyNTE3NTUwOWYzODYzNWYuLmQ1ZmRlYzM2NTY2OGMyY2Y1OTNhYjkyYmZkYjdmNGU2ODYx
ZGRkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCkBAIC0xMzI4LDYgKzEzMjgsNyBAQCBfX1pOSzdX
ZWJDb3JlOFBvc2l0aW9uOHVwc3RyZWFtRU5TXzI3RWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxl
RQogX19aTks3V2ViQ29yZTlET01XaW5kb3cyN3BlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVyc0V2
CiBfX1pOSzdXZWJDb3JlOUZsb2F0UXVhZDExYm91bmRpbmdCb3hFdgogX19aTks3V2ViQ29yZTlG
bG9hdFJlY3RjdjdfTlNSZWN0RXYKK19fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTBjaGlsZENvdW50
RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMTJ0cmF2ZXJzZU5leHRFUEtOU181RnJhbWVFCiBf
X1pOSzdXZWJDb3JlOUZyYW1lVHJlZTE0aXNEZXNjZW5kYW50T2ZFUEtOU181RnJhbWVFCiBfX1pO
SzdXZWJDb3JlOUZyYW1lVHJlZTIwdHJhdmVyc2VOZXh0V2l0aFdyYXBFYgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAKaW5kZXggNWMzOWY5NmYwNDY2ZDhlZTVm
NmNmYWMzOWY0MTk1ZGI2Mzg5ZDk0Ni4uYTAzNzljMjEyZWJkMmUyOTU5YjE5YTA1YzJjZWVjMDA4
MjM4ZjM0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3Bw
CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50
U3RhdGUoKQogLy8gaGlzdG9yeSBpdGVtLgogdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURv
Y3VtZW50QW5kU2Nyb2xsU3RhdGUoKQogewotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFt
ZTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KG1fZnJhbWUpKSB7
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLT50cmF2ZXJzZU5leHRJblRyZWVTY29wZShtX2ZyYW1lKSkgewogICAgICAgICBmcmFt
ZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+c2F2ZURvY3VtZW50U3RhdGUoKTsKICAgICAgICAgZnJh
bWUtPmxvYWRlcigpLT5oaXN0b3J5KCktPnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRv
SXRlbShmcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+Y3VycmVudEl0ZW0oKSk7CiAgICAgfQpA
QCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGly
ZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIH0KICAgICAgICAgLy8gVGhl
IGNsaWVudCByZWRpcmVjdCByZXBsYWNlcyB0aGUgY3VycmVudCBoaXN0b3J5IGl0ZW0uCiAgICAg
ICAgIHVwZGF0ZUN1cnJlbnRJdGVtKCk7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKCFt
X2ZyYW1lLT5pc0luU2hhZG93VHJlZSgpKSB7CiAgICAgICAgIEZyYW1lKiBwYXJlbnRGcmFtZSA9
IG1fZnJhbWUtPnRyZWUoKS0+cGFyZW50KCk7CiAgICAgICAgIGlmIChwYXJlbnRGcmFtZSAmJiBw
YXJlbnRGcmFtZS0+bG9hZGVyKCktPmhpc3RvcnkoKS0+bV9jdXJyZW50SXRlbSkKICAgICAgICAg
ICAgIHBhcmVudEZyYW1lLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5tX2N1cnJlbnRJdGVtLT5zZXRD
aGlsZEl0ZW0oY3JlYXRlSXRlbSgpKTsKQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjpyZWN1cnNpdmVVcGRhdGVGb3JDb21taXQoKQogICAgIHJlc3RvcmVTY3JvbGxQ
b3NpdGlvbkFuZFZpZXdTdGF0ZSgpOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSByZXN0IG9m
IHRoZSB0cmVlCi0gICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0
Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAg
ICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGlsZEluVHJlZVNj
b3BlKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nSW5UcmVlU2Nv
cGUoKSkKICAgICAgICAgY2hpbGQtPmxvYWRlcigpLT5oaXN0b3J5KCktPnJlY3Vyc2l2ZVVwZGF0
ZUZvckNvbW1pdCgpOwogfQogCkBAIC01MzEsNyArNTMxLDcgQEAgdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiAgICAgbV9w
cm92aXNpb25hbEl0ZW0gPSAwOwogCiAgICAgLy8gSXRlcmF0ZSBvdmVyIHRoZSByZXN0IG9mIHRo
ZSB0cmVlLgotICAgIGZvciAoRnJhbWUqIGNoaWxkID0gbV9mcmFtZS0+dHJlZSgpLT5maXJzdENo
aWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAg
Zm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZpcnN0Q2hpbGRJblRyZWVTY29w
ZSgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZ0luVHJlZVNjb3Bl
KCkpCiAgICAgICAgIGNoaWxkLT5sb2FkZXIoKS0+aGlzdG9yeSgpLT5yZWN1cnNpdmVVcGRhdGVG
b3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7CiB9CiAKQEAgLTY1MCw3ICs2NTAsNyBAQCBQYXNz
UmVmUHRyPEhpc3RvcnlJdGVtPiBIaXN0b3J5Q29udHJvbGxlcjo6Y3JlYXRlSXRlbVRyZWUoRnJh
bWUqIHRhcmdldEZyYW1lLCBibwogICAgICAgICAgICAgYmZJdGVtLT5zZXREb2N1bWVudFNlcXVl
bmNlTnVtYmVyKG1fcHJldmlvdXNJdGVtLT5kb2N1bWVudFNlcXVlbmNlTnVtYmVyKCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgZm9yIChGcmFtZSogY2hpbGQgPSBtX2ZyYW1lLT50cmVlKCktPmZp
cnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkg
eworICAgICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fZnJhbWUtPnRyZWUoKS0+Zmlyc3RDaGls
ZEluVHJlZVNjb3BlKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT50cmVlKCktPm5leHRTaWJsaW5n
SW5UcmVlU2NvcGUoKSkgewogICAgICAgICAgICAgRnJhbWVMb2FkZXIqIGNoaWxkTG9hZGVyID0g
Y2hpbGQtPmxvYWRlcigpOwogICAgICAgICAgICAgYm9vbCBoYXNDaGlsZExvYWRlZCA9IGNoaWxk
TG9hZGVyLT5mcmFtZUhhc0xvYWRlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IGYzYWFl
MzAwYjM1MmZlZmY1YmQ3MTIzNGY5NDE0YWE1MjRjOTIzMDguLjg5NzYwNjY0ZTg4NzU0NTlkYjMx
N2JlNWQ3ZWM2ZThkNDA4MGYxMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMTE1LDQgKzEx
MTUsMTggQEAgdm9pZCBGcmFtZTo6bm90aWZ5Q2hyb21lQ2xpZW50V2hlZWxFdmVudEhhbmRsZXJD
b3VudENoYW5nZWQoKSBjb25zdAogICAgIG1fcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5udW1X
aGVlbEV2ZW50SGFuZGxlcnNDaGFuZ2VkKGNvdW50KTsKIH0KIAorYm9vbCBGcmFtZTo6aXNJblNo
YWRvd1RyZWUoKSBjb25zdAoreworICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0gdGhpczsg
ZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnBh
cmVudCgpKSB7CisgICAgICAgIGlmIChmcmFtZS0+b3duZXJFbGVtZW50KCktPmlzSW5TaGFkb3dU
cmVlKCkpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNl
OworfQorCitUcmVlU2NvcGUqIEZyYW1lOjpvd25lclRyZWVTY29wZSgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG93bmVyRWxlbWVudCgpID8gb3duZXJFbGVtZW50KCktPnRyZWVTY29wZSgpIDogZG9j
dW1lbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCmluZGV4
IDY0ODZjMDZmMGExZGYwNTNlNDI1NTk0ODFmYjYyMTQxMGIyMTcyN2UuLmExYWVjM2NkZmZkMWEy
YTM0NmUwZmNlMjMzY2U5ZWEyNzA2YjI3Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKQEAgLTY5LDYgKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFJlZ3VsYXJFeHByZXNzaW9uOwog
ICAgIGNsYXNzIFJlbmRlclBhcnQ7CiAgICAgY2xhc3MgVGlsZWRCYWNraW5nU3RvcmU7CisgICAg
Y2xhc3MgVHJlZVNjb3BlOwogCiAjaWYgIUVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAg
IGNsYXNzIFRpbGVkQmFja2luZ1N0b3JlQ2xpZW50IHsgfTsKQEAgLTEwMiw2ICsxMDMsOCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAg
ICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OworICAgICAgICBi
b29sIGlzSW5TaGFkb3dUcmVlKCkgY29uc3Q7CisgICAgICAgIFRyZWVTY29wZSogb3duZXJUcmVl
U2NvcGUoKSBjb25zdDsKIAogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAg
ICAgICAgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAK
aW5kZXggZjNmMzJlYzRmOGZjZTZlY2MxYzBhOWJhNTk4ZmQxNDhjYTNiMDdkOS4uMWNlNGVjYTM1
YmU4NDE2NzI0MDBmZjVhM2M3MmJhY2E3NjYzOGJiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVl
LmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZy
YW1lVHJlZS5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgog
I2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKQEAgLTYzLDYgKzY0LDI5
IEBAIEZyYW1lKiBGcmFtZVRyZWU6OnBhcmVudChib29sIGNoZWNrRm9yRGlzY29ubmVjdGVkRnJh
bWUpIGNvbnN0CiAgICAgcmV0dXJuIG1fcGFyZW50OwogfQogCitGcmFtZSogRnJhbWVUcmVlOjpu
ZXh0U2libGluZ0luVHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICBjb25zdCBUcmVlU2NvcGUqIHRy
ZWVTY29wZSA9IG1fdGhpc0ZyYW1lLT5vd25lclRyZWVTY29wZSgpOworICAgIEZyYW1lKiBmcmFt
ZSA9IG1fbmV4dFNpYmxpbmcuZ2V0KCk7CisgICAgd2hpbGUgKGZyYW1lICYmIHRyZWVTY29wZSAh
PSBmcmFtZS0+b3duZXJUcmVlU2NvcGUoKSkKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LT5tX25leHRTaWJsaW5nLmdldCgpOworICAgIHJldHVybiBmcmFtZTsKK30KKworRnJhbWUqIEZy
YW1lVHJlZTo6Zmlyc3RDaGlsZEluVHJlZVNjb3BlKCkgY29uc3QKK3sKKyAgICBjb25zdCBUcmVl
U2NvcGUqIHRyZWVTY29wZSA9IG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpOworICAgIEZyYW1lKiBm
cmFtZSA9IG1fZmlyc3RDaGlsZC5nZXQoKTsKKyAgICB3aGlsZSAoZnJhbWUgJiYgdHJlZVNjb3Bl
ICE9IGZyYW1lLT5vd25lclRyZWVTY29wZSgpKQorICAgICAgICBmcmFtZSA9IGZyYW1lLT50cmVl
KCktPm1fbmV4dFNpYmxpbmcuZ2V0KCk7CisgICAgcmV0dXJuIGZyYW1lOworfQorCitGcmFtZSog
RnJhbWVUcmVlOjpwYXJlbnRJblRyZWVTY29wZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3Bh
cmVudCAmJiBtX3BhcmVudC0+ZG9jdW1lbnQoKSA9PSBtX3RoaXNGcmFtZS0+b3duZXJUcmVlU2Nv
cGUoKSkgPyBtX3BhcmVudCA6IDA7Cit9CisKIGJvb2wgRnJhbWVUcmVlOjp0cmFuc2ZlckNoaWxk
KFBhc3NSZWZQdHI8RnJhbWU+IGNoaWxkKQogewogICAgIEZyYW1lKiBvbGRQYXJlbnQgPSBjaGls
ZC0+dHJlZSgpLT5wYXJlbnQoKTsKQEAgLTEwMSw3ICsxMjUsNyBAQCB2b2lkIEZyYW1lVHJlZTo6
YWN0dWFsbHlBcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKICAgICB9IGVsc2UK
ICAgICAgICAgbV9maXJzdENoaWxkID0gY2hpbGQ7CiAKLSAgICBtX2NoaWxkQ291bnQrKzsKKyAg
ICBtX2NoaWxkQ291bnRJc1ZhbGlkID0gZmFsc2U7CiAKICAgICBBU1NFUlQoIW1fbGFzdENoaWxk
LT50cmVlKCktPm1fbmV4dFNpYmxpbmcpOwogfQpAQCAtMTIzLDcgKzE0Nyw3IEBAIHZvaWQgRnJh
bWVUcmVlOjpyZW1vdmVDaGlsZChGcmFtZSogY2hpbGQpCiAgICAgY2hpbGQtPnRyZWUoKS0+bV9w
cmV2aW91c1NpYmxpbmcgPSAwOwogICAgIGNoaWxkLT50cmVlKCktPm1fbmV4dFNpYmxpbmcgPSAw
OwogCi0gICAgbV9jaGlsZENvdW50LS07CisgICAgbV9jaGlsZENvdW50SXNWYWxpZCA9IGZhbHNl
OwogfQogCiBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdApAQCAtMTc1LDE3ICsxOTksMzMgQEAgQXRv
bWljU3RyaW5nIEZyYW1lVHJlZTo6dW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0b21pY1N0cmluZyYg
cmVxdWVzdGVkTmFtZSkgY29uc3QKICAgICByZXR1cm4gQXRvbWljU3RyaW5nKG5hbWUpOwogfQog
Cit1bnNpZ25lZCBGcmFtZVRyZWU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIC8vIFdlIGNh
bid0IGtlZXAgdHJhY2sgdGhlIGNoaWxkIGNvdW50IGNvcnJlY3RseSBieSBpbmNyZW1lbnQgaW4K
KyAgICAvLyBhY3R1YWxseUFwcGVuZENoaWxkKCkgYW5kIGRlY3JlbWVudCBpbiByZW1vdmVDaGls
ZCgpIGJlY2F1c2UgVHJlZVNjb3BlCisgICAgLy8gZm9yIDxpZnJhbWU+IGlzIHVwZGF0ZWQgYmVm
b3JlIHJlbW92ZUNoaWxkKCkgaW4gYSBjYXNlIG9mCisgICAgLy8gYWRvcHROb2RlKCkuIFNvLCB3
ZSBjb3VudCB0aGUgbnVtYmVyIG9mIGZyYW1lcyBpbiB0aGUgc2FtZSBUcmVlU2NvcGUgb24KKyAg
ICAvLyBkZW1hbmQuCisgICAgaWYgKG1fY2hpbGRDb3VudElzVmFsaWQpCisgICAgICAgIHJldHVy
biBtX2NoaWxkQ291bnQ7CisgICAgbV9jaGlsZENvdW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiBm
cmFtZSA9IGZpcnN0Q2hpbGRJblRyZWVTY29wZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJl
ZSgpLT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCkpCisgICAgICAgICsrbV9jaGlsZENvdW50Owor
ICAgIG1fY2hpbGRDb3VudElzVmFsaWQgPSB0cnVlOworICAgIHJldHVybiBtX2NoaWxkQ291bnQ7
Cit9CisKIEZyYW1lKiBGcmFtZVRyZWU6OmNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewot
ICAgIEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7CisgICAgRnJhbWUqIHJlc3VsdCA9IGZp
cnN0Q2hpbGRJblRyZWVTY29wZSgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IHJlc3VsdCAm
JiBpICE9IGluZGV4OyArK2kpCi0gICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgpLT5uZXh0
U2libGluZygpOworICAgICAgICByZXN1bHQgPSByZXN1bHQtPnRyZWUoKS0+bmV4dFNpYmxpbmdJ
blRyZWVTY29wZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIEZyYW1lKiBGcmFtZVRyZWU6
OmNoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBmb3IgKEZyYW1l
KiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGRJblRyZWVTY29w
ZSgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5uZXh0U2libGluZ0luVHJlZVNjb3Bl
KCkpCiAgICAgICAgIGlmIChjaGlsZC0+dHJlZSgpLT51bmlxdWVOYW1lKCkgPT0gbmFtZSkKICAg
ICAgICAgICAgIHJldHVybiBjaGlsZDsKICAgICByZXR1cm4gMDsKQEAgLTIwNyw5ICsyNDcsMTAg
QEAgRnJhbWUqIEZyYW1lVHJlZTo6ZmluZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gU2VhcmNoIHN1YnRyZWUgc3RhcnRpbmcgd2l0
aCB0aGlzIGZyYW1lIGZpcnN0LgotICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV90aGlzRnJhbWU7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dChtX3RoaXNGcmFtZSkp
CisgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX3RoaXNGcmFtZTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0SW5UcmVlU2NvcGUobV90aGlzRnJhbWUpKSB7CiAgICAg
ICAgIGlmIChmcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkgPT0gbmFtZSkKICAgICAgICAgICAg
IHJldHVybiBmcmFtZTsKKyAgICB9CiAKICAgICAvLyBTZWFyY2ggdGhlIGVudGlyZSB0cmVlIGZv
ciB0aGlzIHBhZ2UgbmV4dC4KICAgICBQYWdlKiBwYWdlID0gbV90aGlzRnJhbWUtPnBhZ2UoKTsK
QEAgLTIxOCw5ICsyNTksMTMgQEAgRnJhbWUqIEZyYW1lVHJlZTo6ZmluZChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0CiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCktPnRyYXZlcnNlTmV4dCgpKQorICAgIGlmIChtX3RoaXNGcmFtZS0+aXNJ
blNoYWRvd1RyZWUoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IHBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT50cmF2
ZXJzZU5leHRJblRyZWVTY29wZSgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+dHJlZSgpLT51bmlx
dWVOYW1lKCkgPT0gbmFtZSkKICAgICAgICAgICAgIHJldHVybiBmcmFtZTsKKyAgICB9CiAKICAg
ICAvLyBTZWFyY2ggdGhlIGVudGlyZSB0cmVlIG9mIGVhY2ggb2YgdGhlIG90aGVyIHBhZ2VzIGlu
IHRoaXMgbmFtZXNwYWNlLgogICAgIC8vIEZJWE1FOiBJcyByYW5kb20gb3JkZXIgT0s/CkBAIC0y
MjksNyArMjc0LDcgQEAgRnJhbWUqIEZyYW1lVHJlZTo6ZmluZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0CiAgICAgZm9yIChIYXNoU2V0PFBhZ2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBwYWdlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgUGFnZSogb3RoZXJQ
YWdlID0gKml0OwogICAgICAgICBpZiAob3RoZXJQYWdlICE9IHBhZ2UpIHsKLSAgICAgICAgICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS0+dHJhdmVyc2VOZXh0KCkpIHsKKyAgICAgICAgICAgIGZvciAoRnJh
bWUqIGZyYW1lID0gb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS0+dHJhdmVyc2VOZXh0SW5UcmVlU2NvcGUoKSkgewogICAgICAgICAgICAgICAgIGlm
IChmcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkgPT0gbmFtZSkKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZyYW1lOwogICAgICAgICAgICAgfQpAQCAtMjg2LDYgKzMzMSwzOSBAQCBGcmFt
ZSogRnJhbWVUcmVlOjp0cmF2ZXJzZU5leHQoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4pIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAKK0ZyYW1lKiBGcmFtZVRyZWU6OnRyYXZlcnNlTmV4dEluVHJl
ZVNjb3BlKGNvbnN0IEZyYW1lKiBzdGF5V2l0aGluKSBjb25zdAoreworICAgIEZyYW1lKiBjaGls
ZCA9IGZpcnN0Q2hpbGRJblRyZWVTY29wZSgpOworICAgIGlmIChjaGlsZCkgeworICAgICAgICBB
U1NFUlQoIXN0YXlXaXRoaW4gfHwgY2hpbGQtPnRyZWUoKS0+aXNEZXNjZW5kYW50T2Yoc3RheVdp
dGhpbikpOworICAgICAgICByZXR1cm4gY2hpbGQ7CisgICAgfQorCisgICAgaWYgKG1fdGhpc0Zy
YW1lID09IHN0YXlXaXRoaW4pCisgICAgICAgIHJldHVybiAwOworCisgICAgRnJhbWUqIHNpYmxp
bmcgPSBuZXh0U2libGluZ0luVHJlZVNjb3BlKCk7CisgICAgaWYgKHNpYmxpbmcpIHsKKyAgICAg
ICAgQVNTRVJUKCFzdGF5V2l0aGluIHx8IHNpYmxpbmctPnRyZWUoKS0+aXNEZXNjZW5kYW50T2Yo
c3RheVdpdGhpbikpOworICAgICAgICByZXR1cm4gc2libGluZzsKKyAgICB9CisKKyAgICBGcmFt
ZSogZnJhbWUgPSBtX3RoaXNGcmFtZTsKKyAgICB3aGlsZSAoIXNpYmxpbmcgJiYgKCFzdGF5V2l0
aGluIHx8IGZyYW1lLT50cmVlKCktPnBhcmVudEluVHJlZVNjb3BlKCkgIT0gc3RheVdpdGhpbikp
IHsKKyAgICAgICAgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLT5wYXJlbnRJblRyZWVTY29wZSgpOwor
ICAgICAgICBpZiAoIWZyYW1lKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHNpYmxp
bmcgPSBmcmFtZS0+dHJlZSgpLT5uZXh0U2libGluZ0luVHJlZVNjb3BlKCk7CisgICAgfQorCisg
ICAgaWYgKGZyYW1lKSB7CisgICAgICAgIEFTU0VSVCghc3RheVdpdGhpbiB8fCAhc2libGluZyB8
fCBzaWJsaW5nLT50cmVlKCktPmlzRGVzY2VuZGFudE9mKHN0YXlXaXRoaW4pKTsKKyAgICAgICAg
cmV0dXJuIHNpYmxpbmc7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKIEZyYW1lKiBGcmFt
ZVRyZWU6OnRyYXZlcnNlTmV4dFdpdGhXcmFwKGJvb2wgd3JhcCkgY29uc3QKIHsKICAgICBpZiAo
RnJhbWUqIHJlc3VsdCA9IHRyYXZlcnNlTmV4dCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5k
ZXggYmFjNTQ3NTAyOTk4MjQ3Nzc4MmRlNjNmOGQ3MGEyYTBkYTliOTA1Ny4uNTIxYWUyMTkyMTU4
YzdkN2EwMzUyMTJjYzE4Zjk3ZGI4NDVhZjM1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBA
IC0zNSw2ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICwgbV9wcmV2
aW91c1NpYmxpbmcoMCkKICAgICAgICAgICAgICwgbV9sYXN0Q2hpbGQoMCkKICAgICAgICAgICAg
ICwgbV9jaGlsZENvdW50KDApCisgICAgICAgICAgICAsIG1fY2hpbGRDb3VudElzVmFsaWQoZmFs
c2UpCiAgICAgICAgIHsKICAgICAgICAgfQogICAgICAgICB+RnJhbWVUcmVlKCk7CkBAIC01MCwx
OCArNTEsMjMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGcmFtZSogcHJldmlvdXNT
aWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1NpYmxpbmc7IH0KICAgICAgICAgRnJh
bWUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQuZ2V0KCk7IH0KICAg
ICAgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0g
ICAgICAgIHVuc2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkQ291bnQ7
IH0KIAogICAgICAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IEZyYW1lKiBhbmNlc3Rvcikg
Y29uc3Q7CiAgICAgICAgIEZyYW1lKiB0cmF2ZXJzZU5leHQoY29uc3QgRnJhbWUqIHN0YXlXaXRo
aW4gPSAwKSBjb25zdDsKICAgICAgICAgRnJhbWUqIHRyYXZlcnNlTmV4dFdpdGhXcmFwKGJvb2wp
IGNvbnN0OwogICAgICAgICBGcmFtZSogdHJhdmVyc2VQcmV2aW91c1dpdGhXcmFwKGJvb2wpIGNv
bnN0OwogICAgICAgICAKKyAgICAgICAgRnJhbWUqIG5leHRTaWJsaW5nSW5UcmVlU2NvcGUoKSBj
b25zdDsKKyAgICAgICAgRnJhbWUqIGZpcnN0Q2hpbGRJblRyZWVTY29wZSgpIGNvbnN0OworICAg
ICAgICBGcmFtZSogdHJhdmVyc2VOZXh0SW5UcmVlU2NvcGUoY29uc3QgRnJhbWUqIHN0YXlXaXRo
aW4gPSAwKSBjb25zdDsKKwogICAgICAgICB2b2lkIGFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJh
bWU+KTsKICAgICAgICAgYm9vbCB0cmFuc2ZlckNoaWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKICAg
ICAgICAgdm9pZCBkZXRhY2hGcm9tUGFyZW50KCkgeyBtX3BhcmVudCA9IDA7IH0KICAgICAgICAg
dm9pZCByZW1vdmVDaGlsZChGcmFtZSopOwogCisgICAgICAgIC8vIGNoaWxkQ291bnQoKSwgY2hp
bGQoKSBhbmQgZmluZCgpIGV4Y2x1ZGUgZnJhbWVzIGluIGRpZmZlcmVudCBUcmVlU2NvcGVzLgor
ICAgICAgICB1bnNpZ25lZCBjaGlsZENvdW50KCkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBjaGls
ZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBjaGlsZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgICAgICBGcmFtZSogZmluZChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0OwpAQCAtNzMsNiArNzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgcHJpdmF0ZToKICAgICAgICAgRnJhbWUqIGRlZXBMYXN0Q2hpbGQoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBhY3R1YWxseUFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+KTsKKyAgICAg
ICAgRnJhbWUqIHBhcmVudEluVHJlZVNjb3BlKCkgY29uc3Q7CiAKICAgICAgICAgRnJhbWUqIG1f
dGhpc0ZyYW1lOwogCkBAIC04NSw3ICs5Miw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRnJhbWUqIG1fcHJldmlvdXNTaWJsaW5nOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZmly
c3RDaGlsZDsKICAgICAgICAgRnJhbWUqIG1fbGFzdENoaWxkOwotICAgICAgICB1bnNpZ25lZCBt
X2NoaWxkQ291bnQ7CisgICAgICAgIC8vIGNoaWxkQ291bnQoKSBpcyBjb25jZXB0dWFsbHkgY29u
c3QuCisgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9jaGlsZENvdW50OworICAgICAgICBtdXRh
YmxlIGJvb2wgbV9jaGlsZENvdW50SXNWYWxpZDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128159</attachid>
            <date>2012-02-22 01:54:16 -0800</date>
            <delta_ts>2012-02-22 17:25:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65595-20120222185415.patch</filename>
            <type>text/plain</type>
            <size>19959</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjMmIwMGI5NmIxMjU5
NTI3MjBkNjRkZTkzZGE2NmNmYzBhMDk0My4uY2ZkYjU1OGE3ZWFkODM4ZmJiYTExMjNkZDliMmIz
MWM2NzI0ZjliOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEyLTAyLTIyICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFRoaXMgdGVzdCBjaGVj
a3Mgc2VsZWN0IGF0dHJpYnV0ZSBvZiBjb250ZW50IGVsZW1lbnQgaXMgdmFsaWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZWQgRnJhbWVUcmVlOjpkb2N1bWVudENoaWxkKCkgYW5kCisgICAgICAgIEZyYW1lVHJlZTo6
ZG9jdW1lbnRDaGlsZCgpLCB3aGljaCBjYW4gYmUgdXNlZCBmb3Igc2NvcGUtYXdhcmUKKyAgICAg
ICAgZnJhbWUgbG9va3VwLiBVc2luZyB0aGVzZSwgbm93IHRoZSBuYW1lZCBhY2Nlc3NvciBhbmQg
dGhlIGluZGV4ZWQKKyAgICAgICAgYWNjZWNjb3Igb24gRG9jdW1lbnQsIGFuZCBXaW5kb3cubGVu
Z3RoIGlzIFRyZWVTY29wZSBhd2FyZS4gVGhleQorICAgICAgICBkb24ndCBjb3VudCBpZnJhbWVz
IGluIFNoYWRvdyBET00uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyByZW1vdmVzIEZyYW1l
VHJlZTo6bV9jaGlsZENvdW50IHNpbmNlCisgICAgICAgIEZyYW1lOjpjaGlsZENvdW50KCkgaXMg
bm8gbG9uZ2VyIGluIHRoZSBob3QKKyAgICAgICAgcGF0aC4gbV9kb2N1bWVudENoaWxkQ291bnQg
aXMgYWRkZWQgaW5zdGVhZC4KKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9zaGFkb3cvaWZyYW1l
LXNoYWRvdy5odG1sCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpjaGlsZEZyYW1lR2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OmluZGV4R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Q
cm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcik6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjppbmRleGVkUHJvcGVy
dHlHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Om5hbWVkUHJvcGVydHlH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVj
ayk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sp
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdp
bmRvdzo6bGVuZ3RoKToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lOjppc1Njb3BlZEJ5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBh
Z2UvRnJhbWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhbWUpOgorICAgICAg
ICAqIHBhZ2UvRnJhbWVUcmVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6YWN0
dWFsbHlBcHBlbmRDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnJlbW92ZUNo
aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQpOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnNjb3BlZENoaWxkQ291
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpkb2N1bWVudENoaWxkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6ZG9jdW1lbnRDaGlsZENvdW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVHJlZTo6Y2hpbGRDb3VudCk6CisgICAgICAgICogcGFnZS9GcmFtZVRyZWUu
aDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhbWVUcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVHJlZTo6RnJhbWVUcmVlKToKKwogMjAxMi0wMi0yMCAgUmF5bW9uZCBMaXUg
IDxyYXltb25kLmxpdUBpbnRlbC5jb20+CiAKICAgICAgICAgSGF2ZSB0aGUgRHluYW1pY3NDb21w
cmVzc29yTm9kZSBzdXBwb3J0IG11bHRpLWNoYW5uZWwgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGJhZjgwZDM2MDMwZjA1
N2IxZWFiOGJmYjFmZjljY2ZkYjZhMjA5YjguLmUzNDYxYzg3ZmIyOWY0MzIzODk2NjE3N2Q0NGZl
ZWE3YTVkYzFhMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTk5LDEyICs5OSwxMiBAQCBKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0
aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZQogCiBzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQogewotICAgIHJl
dHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJh
c2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2luZG93KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMs
IHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5m
cmFtZSgpLT50cmVlKCktPmRvY3VtZW50Q2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHBy
b3BlcnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0
dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpCiB7
Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVj
dChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaW5kZXgpLT5kb21X
aW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cq
Pihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+ZG9jdW1lbnRD
aGlsZChpbmRleCktPmRvbVdpbmRvdygpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVt
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lKQpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgSlNET01XaW5kb3c6Omdl
dE93blByb3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRl
bnRpCiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIHdpbmRv
dyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNpbmNlIHdl
IGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8vIGl0IHRoZSBNb3ogd2F5
LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaWRl
bnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5kb2N1bWVudENoaWxkKGlkZW50aWZpZXJUb0F0
b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlz
T2JqZWN0LCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpA
QCAtMjQ0LDcgKzI0NCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdChK
U0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpCiAgICAgLy8gYWxsb3cg
d2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCiAgICAgYm9vbCBvazsKICAgICB1
bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChvayk7Ci0gICAgaWYgKG9rICYm
IGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGRDb3VudCgpKSB7
CisgICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+
ZG9jdW1lbnRDaGlsZENvdW50KCkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlz
T2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAg
LTMxMCw3ICszMTAsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIC8vIG5hbWluZyBm
cmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAg
ICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2Us
IHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVj
dC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkt
PnRyZWUoKS0+ZG9jdW1lbnRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlO
YW1lKSkpIHsKICAgICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXNPYmplY3QsIGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNl
dERlc2NyaXB0b3Ioc2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8
IERvbnREZWxldGUgfCBEb250RW51bSk7CkBAIC0zMTksNyArMzE5LDcgQEAgYm9vbCBKU0RPTVdp
bmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0
ZSogZXhlYywgY28KICAgICAKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0
eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2sgJiYgaSA8IHRoaXNPYmplY3QtPmlt
cGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZENvdW50KCkpIHsKKyAgICBpZiAob2sgJiYgaSA8
IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5kb2N1bWVudENoaWxkQ291bnQo
KSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21J
bmRleCh0aGlzT2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0
RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGZiNzYyOGViN2NmYTg4
MmMyNjQxYzMwM2QyNDI1YjYzNTIzZjFmNjYuLjMwOTdhN2ZiZmU5NWU4MmVmNmYyMGFjNTdiYmNi
NTUwMGFhNDY3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDc2LDcgKzQ3Niw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90
IGluZGV4LCBjb25zdCB2CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5vdEhhbmRs
ZWRCeUludGVyY2VwdG9yKCk7CiAKLSAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5j
aGlsZChpbmRleCk7CisgICAgRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+ZG9jdW1lbnRD
aGlsZChpbmRleCk7CiAgICAgaWYgKGNoaWxkKQogICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+
ZG9tV2luZG93KCkpOwogCkBAIC00OTksNyArNDk5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBu
YW0KIAogICAgIC8vIFNlYXJjaCBzdWItZnJhbWVzLgogICAgIEF0b21pY1N0cmluZyBwcm9wTmFt
ZSA9IHY4U3RyaW5nVG9BdG9taWNXZWJDb3JlU3RyaW5nKG5hbWUpOwotICAgIEZyYW1lKiBjaGls
ZCA9IGZyYW1lLT50cmVlKCktPmNoaWxkKHByb3BOYW1lKTsKKyAgICBGcmFtZSogY2hpbGQgPSBm
cmFtZS0+dHJlZSgpLT5kb2N1bWVudENoaWxkKHByb3BOYW1lKTsKICAgICBpZiAoY2hpbGQpCiAg
ICAgICAgIHJldHVybiB0b1Y4KGNoaWxkLT5kb21XaW5kb3coKSk7CiAKQEAgLTU1NiwxNCArNTU2
LDE1IEBAIGJvb2wgVjhET01XaW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6
Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWCiAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBuYW1lT2ZQcm90b1Byb3BlcnR5LCAoIl9fcHJvdG9fXyIpKTsKIAog
ICAgICAgICBTdHJpbmcgbmFtZSA9IHRvV2ViQ29yZVN0cmluZyhrZXkpOworICAgICAgICBGcmFt
ZSogY2hpbGRGcmFtZSA9IHRhcmdldC0+dHJlZSgpLT5kb2N1bWVudENoaWxkKG5hbWUpOwogICAg
ICAgICAvLyBOb3RpY2UgdGhhdCB3ZSBjYW4ndCBjYWxsIEhhc1JlYWxOYW1lZFByb3BlcnR5IGZv
ciBBQ0NFU1NfSEFTCiAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBnZW5lcmF0ZSBpbmZp
bml0ZSByZWN1cnNpb24uCi0gICAgICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfSEFTICYmIHRh
cmdldC0+dHJlZSgpLT5jaGlsZChuYW1lKSkKKyAgICAgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VT
U19IQVMgJiYgY2hpbGRGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAv
LyBXZSBuZWVkIHRvIGV4cGxpY2l0bHkgY29tcGFyZSBhZ2FpbnN0IG5hbWVPZlByb3RvUHJvcGVy
dHkgYmVjYXVzZQogICAgICAgICAvLyBWOCdzIEpTT2JqZWN0OjpMb2NhbExvb2t1cCBmaW5kcyBf
X3Byb3RvX18gYmVmb3JlCiAgICAgICAgIC8vIGludGVyY2VwdG9ycyBhbmQgZXZlbiB3aGVuIF9f
cHJvdG9fXyBpc24ndCBhICJyZWFsIG5hbWVkIHByb3BlcnR5Ii4KLSAgICAgICAgaWYgKHR5cGUg
PT0gdjg6OkFDQ0VTU19HRVQgJiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKG5hbWUpICYmICFob3N0
LT5IYXNSZWFsTmFtZWRQcm9wZXJ0eShrZXktPlRvU3RyaW5nKCkpICYmIG5hbWUgIT0gbmFtZU9m
UHJvdG9Qcm9wZXJ0eSkKKyAgICAgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19HRVQgJiYgY2hp
bGRGcmFtZSAmJiAhaG9zdC0+SGFzUmVhbE5hbWVkUHJvcGVydHkoa2V5LT5Ub1N0cmluZygpKSAm
JiBuYW1lICE9IG5hbWVPZlByb3RvUHJvcGVydHkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICB9CiAKQEAgLTU4MywxMiArNTg0LDEzIEBAIGJvb2wgVjhET01XaW5kb3c6OmluZGV4ZWRT
ZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50MzJfdCBpbmRlCiAg
ICAgRnJhbWUqIHRhcmdldCA9IHRhcmdldFdpbmRvdy0+ZnJhbWUoKTsKICAgICBpZiAoIXRhcmdl
dCkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gIHRhcmdl
dC0+dHJlZSgpLT5kb2N1bWVudENoaWxkKGluZGV4KTsKIAogICAgIC8vIE5vdGljZSB0aGF0IHdl
IGNhbid0IGNhbGwgSGFzUmVhbE5hbWVkUHJvcGVydHkgZm9yIEFDQ0VTU19IQVMKICAgICAvLyBi
ZWNhdXNlIHRoYXQgd291bGQgZ2VuZXJhdGUgaW5maW5pdGUgcmVjdXJzaW9uLgotICAgIGlmICh0
eXBlID09IHY4OjpBQ0NFU1NfSEFTICYmIHRhcmdldC0+dHJlZSgpLT5jaGlsZChpbmRleCkpCisg
ICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19IQVMgJiYgY2hpbGRGcmFtZSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19HRVQgJiYgdGFyZ2V0LT50cmVl
KCktPmNoaWxkKGluZGV4KSAmJiAhaG9zdC0+SGFzUmVhbEluZGV4ZWRQcm9wZXJ0eShpbmRleCkp
CisgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19HRVQgJiYgY2hpbGRGcmFtZSAmJiAhaG9zdC0+
SGFzUmVhbEluZGV4ZWRQcm9wZXJ0eShpbmRleCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAg
ICAgcmV0dXJuIFY4QmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0
ZTo6T25seSgpLCB0YXJnZXQsIGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRl
eCA1NDEzYmRiZTYyNWEyY2JhMjQyZTYyNmRjNzQxMWE5Y2U2ZjM0MTIyLi43Y2U4Y2Q0MDVkZjM1
YzViMTBlYWVmOWJjYjBiNTcwYzVhMTEyM2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB1bnNpZ25lZCBET01XaW5kb3c6Omxlbmd0aCgpIGNvbnN0
CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT5jaGlsZENvdW50KCk7CisgICAgcmV0
dXJuIG1fZnJhbWUtPnRyZWUoKS0+ZG9jdW1lbnRDaGlsZENvdW50KCk7CiB9CiAKIFN0cmluZyBE
T01XaW5kb3c6Om5hbWUoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA1NzVlNzM2NjIw
YmVhNWQ4YTI3Y2EyYTZlOTA0ZjI5ZjgyOTVlNjAxLi44NmI5YThkMzk3YTc1OTBhNWJiMDY1Mzky
NTQyODE2OTY4MDEwYjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcApAQCAtMTEyNSw2ICsxMTI1LDE1
IEBAIERyYWdJbWFnZVJlZiBGcmFtZTo6ZHJhZ0ltYWdlRm9yU2VsZWN0aW9uKCkKICAgICByZXR1
cm4gY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKGltYWdlLmdldCgpKTsKIH0KIAorYm9vbCBGcmFt
ZTo6aXNTY29wZWRCeShUcmVlU2NvcGUqIHNjb3BlKSBjb25zdAoreworICAgIEFTU0VSVChzY29w
ZSk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lciA9IGRvY3VtZW50KCktPm93bmVy
RWxlbWVudCgpOworICAgIC8vIFNjb3BpbmcgdGVzdCBzaG91bGQgYmUgZG9uZSBvbmx5IGZvciBj
aGlsZCBmcmFtZXMuCisgICAgQVNTRVJUKG93bmVyKTsKKyAgICByZXR1cm4gb3duZXItPnRyZWVT
Y29wZSgpID09IHNjb3BlOworfQorCiAjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZS5oCmluZGV4IGE3YWM2MTlmMzIyODNlNDMwYzYxMGVlM2FiZWM2NTRlM2Y0ZGE4
NWQuLjEyNTkzODg5YWViNzc5MTEyOWQ5NzM4OGNjNjI0Y2ZkZTRkYmQyZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKQEAgLTc0LDYgKzc0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFRp
bGVkQmFja2luZ1N0b3JlQ2xpZW50IHsgfTsKICNlbmRpZgogCisgICAgY2xhc3MgVHJlZVNjb3Bl
OworCiAgICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxGcmFtZT4sIHB1YmxpYyBU
aWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFt
ZUxvYWRlckNsaWVudCopOwpAQCAtMTIzLDYgKzEyNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzZXRJc0Rpc2Nvbm5lY3RlZChib29sKTsKICAgICAgICAgYm9vbCBleGNs
dWRlRnJvbVRleHRTZWFyY2goKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRFeGNsdWRlRnJvbVRl
eHRTZWFyY2goYm9vbCk7CisgICAgICAgIGJvb2wgaXNTY29wZWRCeShUcmVlU2NvcGUqKSBjb25z
dDsKIAogICAgICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25U
aW1lKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5kZXggZmE0OTgyYzli
ZWE1OWMzZmY0MzExODlhMTYwMGYyYmM1N2E3M2VlOS4uNDQxYjVkMGNmMzVlYWFkYWM2Mjg0ZGI1
ZTZmYjE5MjE2YjMwNDQzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRy
ZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApAQCAtMTAzLDcg
KzEwMyw3IEBAIHZvaWQgRnJhbWVUcmVlOjphY3R1YWxseUFwcGVuZENoaWxkKFBhc3NSZWZQdHI8
RnJhbWU+IGNoaWxkKQogICAgIH0gZWxzZQogICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsK
IAotICAgIG1fY2hpbGRDb3VudCsrOworICAgIG1fZG9jdW1lbnRDaGlsZENvdW50ID0gaW52YWxp
ZENvdW50OwogCiAgICAgQVNTRVJUKCFtX2xhc3RDaGlsZC0+dHJlZSgpLT5tX25leHRTaWJsaW5n
KTsKIH0KQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIEZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQoRnJh
bWUqIGNoaWxkKQogICAgIGNoaWxkLT50cmVlKCktPm1fcHJldmlvdXNTaWJsaW5nID0gMDsKICAg
ICBjaGlsZC0+dHJlZSgpLT5tX25leHRTaWJsaW5nID0gMDsKIAotICAgIG1fY2hpbGRDb3VudC0t
OworICAgIG1fZG9jdW1lbnRDaGlsZENvdW50ID0gaW52YWxpZENvdW50OwogfQogCiBBdG9taWNT
dHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiByZXF1
ZXN0ZWROYW1lKSBjb25zdApAQCAtMTc3LDYgKzE3Nyw2NCBAQCBBdG9taWNTdHJpbmcgRnJhbWVU
cmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBj
b25zdAogICAgIHJldHVybiBBdG9taWNTdHJpbmcobmFtZSk7CiB9CiAKK2lubGluZSBGcmFtZSog
RnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJlZVNjb3BlKiBzY29wZSkg
Y29uc3QKK3sKKyAgICB1bnNpZ25lZCBzY29wZWRJbmRleCA9IDA7CisgICAgZm9yIChGcmFtZSog
cmVzdWx0ID0gZmlyc3RDaGlsZCgpOyByZXN1bHQ7IHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPmlzU2NvcGVkQnkoc2NvcGUpKSB7
CisgICAgICAgICAgICBpZiAoc2NvcGVkSW5kZXggPT0gaW5kZXgpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIHNjb3BlZEluZGV4Kys7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIEZyYW1lKiBGcmFtZVRyZWU6OnNjb3Bl
ZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVHJlZVNjb3BlKiBzY29wZSkgY29uc3QK
K3sKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0g
Y2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgaWYgKGNoaWxkLT50cmVlKCkt
PnVuaXF1ZU5hbWUoKSA9PSBuYW1lICYmIGNoaWxkLT5pc1Njb3BlZEJ5KHNjb3BlKSkKKyAgICAg
ICAgICAgIHJldHVybiBjaGlsZDsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHVuc2lnbmVk
IEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudChUcmVlU2NvcGUqIHNjb3BlKSBjb25zdAorewor
ICAgIHVuc2lnbmVkIHNjb3BlZENvdW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBm
aXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5n
KCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+aXNTY29wZWRCeShzY29wZSkpCisgICAgICAgICAg
ICBzY29wZWRDb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBzY29wZWRDb3VudDsKK30KKwor
RnJhbWUqIEZyYW1lVHJlZTo6ZG9jdW1lbnRDaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sK
KyAgICByZXR1cm4gc2NvcGVkQ2hpbGQoaW5kZXgsIG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpKTsK
K30KKworRnJhbWUqIEZyYW1lVHJlZTo6ZG9jdW1lbnRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjb3BlZENoaWxkKG5hbWUsIG1fdGhpc0ZyYW1l
LT5kb2N1bWVudCgpKTsKK30KKwordW5zaWduZWQgRnJhbWVUcmVlOjpkb2N1bWVudENoaWxkQ291
bnQoKSBjb25zdAoreworICAgIGlmIChtX2RvY3VtZW50Q2hpbGRDb3VudCA9PSBpbnZhbGlkQ291
bnQpCisgICAgICAgIG1fZG9jdW1lbnRDaGlsZENvdW50ID0gc2NvcGVkQ2hpbGRDb3VudChtX3Ro
aXNGcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIG1fZG9jdW1lbnRDaGlsZENvdW50Owor
fQorCit1bnNpZ25lZCBGcmFtZVRyZWU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHVuc2ln
bmVkIGNvdW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJl
c3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgICAgICsr
Y291bnQ7CisgICAgcmV0dXJuIGNvdW50OworfQorCiBGcmFtZSogRnJhbWVUcmVlOjpjaGlsZCh1
bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggZDgyOTFmN2I2MDRlOTVkMGQzNDUyY2Y4NzI1
Y2ViMWY1YmYyNWFmOS4uOWM1MzFmNWNkMmVhNmY2NDRjYzFkMzY4NDQzOTMwOWRjZTJlODFhNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0yMCwyMyArMjAsMjggQEAKICNpZm5kZWYgRnJh
bWVUcmVlX2gKICNkZWZpbmUgRnJhbWVUcmVlX2gKIAorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBUcmVlU2NvcGU7CiAKICAgICBjbGFz
cyBGcmFtZVRyZWUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZVRyZWUpOwog
ICAgIHB1YmxpYzoKKyAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIGludmFsaWRDb3VudCA9
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXVEY6Om5vdEZvdW5kKTsKKwogICAgICAgICBGcmFtZVRy
ZWUoRnJhbWUqIHRoaXNGcmFtZSwgRnJhbWUqIHBhcmVudEZyYW1lKSAKICAgICAgICAgICAgIDog
bV90aGlzRnJhbWUodGhpc0ZyYW1lKQogICAgICAgICAgICAgLCBtX3BhcmVudChwYXJlbnRGcmFt
ZSkKICAgICAgICAgICAgICwgbV9wcmV2aW91c1NpYmxpbmcoMCkKICAgICAgICAgICAgICwgbV9s
YXN0Q2hpbGQoMCkKLSAgICAgICAgICAgICwgbV9jaGlsZENvdW50KDApCisgICAgICAgICAgICAs
IG1fZG9jdW1lbnRDaGlsZENvdW50KGludmFsaWRDb3VudCkKICAgICAgICAgewogICAgICAgICB9
CisKICAgICAgICAgfkZyYW1lVHJlZSgpOwogCiAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAtNTAsNyArNTUsNiBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiBwcmV2aW91c1NpYmxpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3ByZXZpb3VzU2libGluZzsgfQogICAgICAgICBGcmFtZSogZmlyc3RDaGlsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZC5nZXQoKTsgfQogICAgICAgICBGcmFtZSogbGFzdENo
aWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0KLSAgICAgICAgdW5zaWduZWQgY2hp
bGRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRDb3VudDsgfQogCiAgICAgICAgIGJvb2wg
aXNEZXNjZW5kYW50T2YoY29uc3QgRnJhbWUqIGFuY2VzdG9yKSBjb25zdDsKICAgICAgICAgRnJh
bWUqIHRyYXZlcnNlTmV4dChjb25zdCBGcmFtZSogc3RheVdpdGhpbiA9IDApIGNvbnN0OwpAQCAt
NjUsMTUgKzY5LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWUqIGNoaWxk
KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICAgICAgRnJhbWUqIGNoaWxkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBmaW5kKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdDsK
IAogICAgICAgICBBdG9taWNTdHJpbmcgdW5pcXVlQ2hpbGROYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcmVxdWVzdGVkTmFtZSkgY29uc3Q7CiAKICAgICAgICAgRnJhbWUqIHRvcChib29sIGNoZWNr
Rm9yRGlzY29ubmVjdGVkRnJhbWUgPSBmYWxzZSkgY29uc3Q7CiAKKyAgICAgICAgRnJhbWUqIGRv
Y3VtZW50Q2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgICAgICBGcmFtZSogZG9jdW1l
bnRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICB1bnNpZ25l
ZCBkb2N1bWVudENoaWxkQ291bnQoKSBjb25zdDsKKwogICAgIHByaXZhdGU6CiAgICAgICAgIEZy
YW1lKiBkZWVwTGFzdENoaWxkKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgYWN0dWFsbHlBcHBlbmRD
aGlsZChQYXNzUmVmUHRyPEZyYW1lPik7CiAKKyAgICAgICAgYm9vbCBzY29wZWRCeShUcmVlU2Nv
cGUqKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKHVuc2lnbmVkIGluZGV4LCBU
cmVlU2NvcGUqKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSwgVHJlZVNjb3BlKikgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIHNjb3Bl
ZENoaWxkQ291bnQoVHJlZVNjb3BlKikgY29uc3Q7CisKICAgICAgICAgRnJhbWUqIG1fdGhpc0Zy
YW1lOwogCiAgICAgICAgIEZyYW1lKiBtX3BhcmVudDsKQEAgLTg1LDcgKzk5LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICBGcmFtZSogbV9wcmV2aW91c1NpYmxpbmc7CiAgICAgICAg
IFJlZlB0cjxGcmFtZT4gbV9maXJzdENoaWxkOwogICAgICAgICBGcmFtZSogbV9sYXN0Q2hpbGQ7
Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRDb3VudDsKKyAgICAgICAgbXV0YWJsZSB1bnNpZ25l
ZCBtX2RvY3VtZW50Q2hpbGRDb3VudDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggZjBlYzRiZTA3NmVjOTRmNmM2OWE0MTAwOWZmZDJkZGRiOGY5ZDdlZi4uMjU1OGEy
NTRmMWM3Y2I1OTk5YzFhZjI4NTEyZDViM2RkMWNhYjVhYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBA
CisyMDEyLTAyLTIyICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAg
ICAgIFRoaXMgdGVzdCBjaGVja3Mgc2VsZWN0IGF0dHJpYnV0ZSBvZiBjb250ZW50IGVsZW1lbnQg
aXMgdmFsaWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02NTU5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRvdy5odG1sOiBBZGRlZC4KKwogMjAx
Mi0wMi0yMCAgRGF2aWQgQmFydG9uICA8ZGJhcnRvbkBtYXRoc2NyaWJlLmNvbT4KIAogICAgICAg
ICBSZW5kZXJNYXRoTUxSb3c6OmJhc2VsaW5lUG9zaXRpb24oKSBvbmx5IGlmIGxpbmVQb3NpdGlv
bk1vZGUgPT0gUG9zaXRpb25PbkNvbnRhaW5pbmdMaW5lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRvdy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTU3NmQxNmIxM2VlOWMyZTcxZGUwOWMwZjU4N2Y3ZDBiZDQxNjg3NQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pZnJhbWUtc2hhZG93LWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIzIEBACitUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGlmcmFtZSBpbnNpZGUg
c2hhZG93IGlzbid0IHZpc2libGUgZnJvbSB0aGUgaG9zdCBkb2N1bWVudC4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2luZG93Lmxlbmd0aCBpcyA0CitQQVNTIGkwYnlu
YW1lLmxlbmd0aCBpcyAxCitQQVNTIGkwIGlzIGkwYnluYW1lWzBdLmNvbnRlbnRXaW5kb3cKK1BB
U1MgaTEubGVuZ3RoIGlzIDIKK1BBU1Mgd2luZG93Lmxlbmd0aCBpcyA0CitQQVNTIGkyYnluYW1l
Lmxlbmd0aCBpcyAxCitQQVNTIGkyYnluYW1lWzBdLmNvbnRlbnRXaW5kb3cgaXMgaTIKK1BBU1Mg
aTNieW5hbWUubGVuZ3RoIGlzIDAKK1BBU1MgaTMgaXMgdW5kZWZpbmVkCitQQVNTIHdpbmRvdy5s
ZW5ndGggaXMgMworUEFTUyBkb2N1bWVudFsnaTAnXSBpcyB1bmRlZmluZWQKK1BBU1Mgd2luZG93
Lmxlbmd0aCBpcyA0CitQQVNTIGRvY3VtZW50WydpMyddIGlzIGkzSW5TaGFkb3cuY29udGVudFdp
bmRvdworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisg
ICAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFk
b3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pZnJhbWUtc2hhZG93Lmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTc3ZGY0ZjY2MmI5ZmZkNWNkOGY5MjdjM2U1YjBhNGQ5NDM3NDQ2MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pZnJhbWUtc2hhZG93
Lmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgor
PHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImNvbnNvbGUiPjwvcHJlPgorPGlmcmFtZSBuYW1l
PSJpMCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5hbWU9ImkxIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFt
ZT0iaTEiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJpMiI+PC9pZnJhbWU+CisKKzxkaXYgaWQ9
Imhvc3QiPjwvZGl2PgorCis8c2NyaXB0PgorCitkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3Vy
ZXMgdGhhdCBpZnJhbWUgaW5zaWRlIHNoYWRvdyBpc24ndCB2aXNpYmxlIGZyb20gdGhlIGhvc3Qg
ZG9jdW1lbnQuIik7CisKKy8vIEF0IGZpcnN0LCBjaGVjayBpZnJhbWUgaW4gdXN1YWwgd2F5Citz
aG91bGRCZSgid2luZG93Lmxlbmd0aCIsICI0Iik7Cit2YXIgaTAgPSBkb2N1bWVudFsiaTAiXTsK
K3ZhciBpMGJ5bmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJpMCIpOworc2hvdWxk
QmUoImkwYnluYW1lLmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiaTAiLCAiaTBieW5hbWVbMF0u
Y29udGVudFdpbmRvdyIpOworCit2YXIgaTEgPSBkb2N1bWVudFsiaTEiXTsKK3ZhciBpMmJ5bmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJpMCIpOworc2hvdWxkQmUoImkxLmxlbmd0
aCIsICIyIik7CisKKy8vIFRoZW4gQWRkaW5nIHNvbWUgaWZyYW1lcyBpbnRvIGEgc2hhZG93Lgor
Cit2YXIgaG9zdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJob3N0Iik7Cit2YXIgc2hhZG93
ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7Cit2YXIgaTJJblNoYWRvdyA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworaTJJblNoYWRvdy5zZXRBdHRyaWJ1dGUoIm5hbWUi
LCAiaTIiKTsKK3NoYWRvdy5hcHBlbmRDaGlsZChpMkluU2hhZG93KTsKKwordmFyIGkzSW5TaGFk
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKK2kzSW5TaGFkb3cuc2V0QXR0
cmlidXRlKCJuYW1lIiwgImkzIik7CitzaGFkb3cuYXBwZW5kQ2hpbGQoaTNJblNoYWRvdyk7CisK
K3Nob3VsZEJlKCJ3aW5kb3cubGVuZ3RoIiwgIjQiKTsKKwordmFyIGkyID0gZG9jdW1lbnRbImky
Il07Cit2YXIgaTJieW5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgiaTIiKTsKK3No
b3VsZEJlKCJpMmJ5bmFtZS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoImkyYnluYW1lWzBdLmNv
bnRlbnRXaW5kb3ciLCAiaTIiKTsKKwordmFyIGkzID0gZG9jdW1lbnRbImkzIl07Cit2YXIgaTNi
eW5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgiaTMiKTsKK3Nob3VsZEJlKCJpM2J5
bmFtZS5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUoImkzIiwgInVuZGVmaW5lZCIpOworCisvLyBN
b3ZpbmcgaWZyYW1lcyBhY3Jvc3Mgc2hhZG93IGJvdW5kYXJ5IHRvIGVuc3VyZQorLy8gVGhhdCB3
aW5kb3cubGVuZ3RoIGFuZCBwcm9wZXJ0eSBhdmFpbGFiaWxpdHkgYXJlCisvLyBjb3JyZWN0bHkg
dXBkYXRlZC4KKworc2hhZG93LmFwcGVuZENoaWxkKGkwLmZyYW1lRWxlbWVudCk7CisKK3Nob3Vs
ZEJlKCJ3aW5kb3cubGVuZ3RoIiwgIjMiKTsKK3Nob3VsZEJlKCJkb2N1bWVudFsnaTAnXSIsICJ1
bmRlZmluZWQiKTsKKworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpM0luU2hhZG93KTsKK3No
b3VsZEJlKCJ3aW5kb3cubGVuZ3RoIiwgIjQiKTsKK3Nob3VsZEJlKCJkb2N1bWVudFsnaTMnXSIs
ICJpM0luU2hhZG93LmNvbnRlbnRXaW5kb3ciKTsKKworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3Jj
PSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128328</attachid>
            <date>2012-02-22 16:35:27 -0800</date>
            <delta_ts>2012-02-22 17:25:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65595-20120223093526.patch</filename>
            <type>text/plain</type>
            <size>20570</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjMmIwMGI5NmIxMjU5
NTI3MjBkNjRkZTkzZGE2NmNmYzBhMDk0My4uOTFmYWU1YTAyYTg1YTRiNTQ3OWI4ZmIzOWUxYTli
MWEzMzA3MWUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTIyICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFRoaXMgdGVzdCBjaGVj
a3Mgc2VsZWN0IGF0dHJpYnV0ZSBvZiBjb250ZW50IGVsZW1lbnQgaXMgdmFsaWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgRnJhbWVUcmVlOjpkb2N1bWVudENoaWxkKCkgYW5kCisgICAgICAgIEZyYW1lVHJlZTo6
ZG9jdW1lbnRDaGlsZCgpLCB3aGljaCBjYW4gYmUgdXNlZCBmb3Igc2NvcGUtYXdhcmUKKyAgICAg
ICAgZnJhbWUgbG9va3VwLiBVc2luZyB0aGVzZSwgdGhlIG5hbWVkIGFjY2Vzc29yIGFuZCB0aGUg
aW5kZXhlZAorICAgICAgICBhY2NlY2NvciBvbiBEb2N1bWVudCwgYW5kIFdpbmRvdy5sZW5ndGgg
YXJlIG5vdyBUcmVlU2NvcGUKKyAgICAgICAgYXdhcmUuIFRoZXkgZG9uJ3QgY291bnQgaWZyYW1l
cyBpbiBTaGFkb3cgRE9NLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gcmVtb3ZlcyBGcmFt
ZVRyZWU6Om1fY2hpbGRDb3VudCBzaW5jZQorICAgICAgICBGcmFtZTo6Y2hpbGRDb3VudCgpIGlz
IG5vIGxvbmdlciBpbiB0aGUgaG90CisgICAgICAgIHBhdGguIG1fZG9jdW1lbnRDaGlsZENvdW50
IGlzIGFkZGVkIGluc3RlYWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2lmcmFt
ZS1zaGFkb3cuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRlcik6CisgICAgICAgIChXZWJD
b3JlOjppbmRleEdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9w
ZXJ0eURlc2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3Bl
cnR5R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNr
KToKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01X
aW5kb3c6Omxlbmd0aCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZTo6aW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmFjdHVh
bGx5QXBwZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpyZW1vdmVDaGls
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnNjb3BlZENoaWxkKToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpzY29wZWRDaGlsZENvdW50
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6Y2hpbGRDb3VudCk6CisgICAgICAgICog
cGFnZS9GcmFtZVRyZWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhbWVUcmVl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6RnJhbWVUcmVlKToKKwogMjAxMi0wMi0y
MCAgUmF5bW9uZCBMaXUgIDxyYXltb25kLmxpdUBpbnRlbC5jb20+CiAKICAgICAgICAgSGF2ZSB0
aGUgRHluYW1pY3NDb21wcmVzc29yTm9kZSBzdXBwb3J0IG11bHRpLWNoYW5uZWwgZGF0YQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmV4cC5pbgppbmRleCBhYTVjMTc3ZjIyNWFlN2IwMWM5ZTQ0MTlmMmNiOWU2MGU0MjFi
OTZiLi45ZTUyZWMzNGI4YmVhZmE1N2NjNDI3MmFhOTk5Zjc2YjZhZGQ5YTdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgpAQCAtMTQ3Nyw2ICsxNDc3LDEwIEBAIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVl
MjB0cmF2ZXJzZU5leHRXaXRoV3JhcEViCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTI0dHJhdmVy
c2VQcmV2aW91c1dpdGhXcmFwRWIKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlNGZpbmRFUktOM1dU
RjEyQXRvbWljU3RyaW5nRQogX19aTks3V2ViQ29yZTlGcmFtZVRyZWU2cGFyZW50RWIKK19fWk5L
N1dlYkNvcmU1RnJhbWUxMGlzU2NvcGVkQnlFUE5TXzlUcmVlU2NvcGVFCitfX1pOSzdXZWJDb3Jl
OUZyYW1lVHJlZTE2c2NvcGVkQ2hpbGRDb3VudEV2CitfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTEx
c2NvcGVkQ2hpbGRFUktOM1dURjEyQXRvbWljU3RyaW5nRQorX19aTks3V2ViQ29yZTlGcmFtZVRy
ZWUxMXNjb3BlZENoaWxkRWoKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTFuZWVkc0xheW91dEV2
CiBfX1pOSzdXZWJDb3JlOUZyYW1lVmlldzEzaXNUcmFuc3BhcmVudEV2CiBfX1pOSzdXZWJDb3Jl
OUZyYW1lVmlldzEzcGFpbnRCZWhhdmlvckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYmFmODBkMzYwMzBmMDU3YjFlYWI4YmZi
MWZmOWNjZmRiNmEyMDliOC4uMGJhMjU5ZTc2ZDI4MzcwNmRkZjY1YTc2YTM5ZTMxOGE3Y2I5ZDEz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcApAQCAtOTksMTIgKzk5LDEyIEBAIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9u
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllCiAKIHN0YXRp
YyBKU1ZhbHVlIGNoaWxkRnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RC
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHRvSlMo
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBs
KCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nh
c3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRy
ZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkp
LT5kb21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJu
IHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkp
LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaW5kZXgpLT5kb21XaW5kb3coKSk7Cisg
ICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChz
bG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaW5kZXgpLT5k
b21XaW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKQEAgLTIyMCw3ICsyMjAsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNs
b3QoSlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aQogICAgIC8vIG5h
bWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0
aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2Yg
dGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhp
c09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKGlkZW50aWZpZXJUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZy
YW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNoaWxkRnJh
bWVHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDQsNyArMjQ0LDcg
QEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKiBleGVjLCBjb25zdCBJZGVudGkKICAgICAvLyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFy
ZW50WzFdIGV0Yy4gKCM1Njk4MykKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGkgPSBwcm9w
ZXJ0eU5hbWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2sgJiYgaSA8IHRoaXNPYmplY3Qt
PmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZENvdW50KCkpIHsKKyAgICBpZiAob2sgJiYg
aSA8IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZENvdW50
KCkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpLCBpbmRleEdl
dHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMxMCw3ICszMTAsNyBAQCBi
b29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVj
dCwgRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQg
Y29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBi
dXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAg
ICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgp
LT50cmVlKCktPmNoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkg
eworICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hp
bGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFBy
b3BlcnR5U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBjaGls
ZEZyYW1lR2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0
VmFsdWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVu
dW0pOwpAQCAtMzE5LDcgKzMxOSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgCiAg
ICAgYm9vbCBvazsKICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChv
ayk7Ci0gICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUo
KS0+Y2hpbGRDb3VudCgpKSB7CisgICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCkt
PmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGlu
ZGV4R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFs
dWUoZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2lu
ZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKaW5kZXggZmI3NjI4ZWI3Y2ZhODgyYzI2NDFjMzAzZDI0MjViNjM1MjNm
MWY2Ni4uY2JhZTExMzAwZThhOGYxZjlkODhhMWEwMzIyNzhjN2M4YjAxZDQxMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2lu
ZG93OjppbmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHYKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAot
ICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPmNoaWxkKGluZGV4KTsKKyAgICBGcmFt
ZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCk7CiAgICAgaWYgKGNo
aWxkKQogICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9tV2luZG93KCkpOwogCkBAIC00OTks
NyArNDk5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3Bl
cnR5R2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogICAgIC8vIFNlYXJjaCBzdWIt
ZnJhbWVzLgogICAgIEF0b21pY1N0cmluZyBwcm9wTmFtZSA9IHY4U3RyaW5nVG9BdG9taWNXZWJD
b3JlU3RyaW5nKG5hbWUpOwotICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPmNoaWxk
KHByb3BOYW1lKTsKKyAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRDaGls
ZChwcm9wTmFtZSk7CiAgICAgaWYgKGNoaWxkKQogICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+
ZG9tV2luZG93KCkpOwogCkBAIC01NTYsMTQgKzU1NiwxNSBAQCBib29sIFY4RE9NV2luZG93Ojpu
YW1lZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2
ODo6VgogICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZU9mUHJv
dG9Qcm9wZXJ0eSwgKCJfX3Byb3RvX18iKSk7CiAKICAgICAgICAgU3RyaW5nIG5hbWUgPSB0b1dl
YkNvcmVTdHJpbmcoa2V5KTsKKyAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSB0YXJnZXQtPnRy
ZWUoKS0+c2NvcGVkQ2hpbGQobmFtZSk7CiAgICAgICAgIC8vIE5vdGljZSB0aGF0IHdlIGNhbid0
IGNhbGwgSGFzUmVhbE5hbWVkUHJvcGVydHkgZm9yIEFDQ0VTU19IQVMKICAgICAgICAgLy8gYmVj
YXVzZSB0aGF0IHdvdWxkIGdlbmVyYXRlIGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICAgICAgaWYg
KHR5cGUgPT0gdjg6OkFDQ0VTU19IQVMgJiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKG5hbWUpKQor
ICAgICAgICBpZiAodHlwZSA9PSB2ODo6QUNDRVNTX0hBUyAmJiBjaGlsZEZyYW1lKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gZXhwbGljaXRseSBjb21w
YXJlIGFnYWluc3QgbmFtZU9mUHJvdG9Qcm9wZXJ0eSBiZWNhdXNlCiAgICAgICAgIC8vIFY4J3Mg
SlNPYmplY3Q6OkxvY2FsTG9va3VwIGZpbmRzIF9fcHJvdG9fXyBiZWZvcmUKICAgICAgICAgLy8g
aW50ZXJjZXB0b3JzIGFuZCBldmVuIHdoZW4gX19wcm90b19fIGlzbid0IGEgInJlYWwgbmFtZWQg
cHJvcGVydHkiLgotICAgICAgICBpZiAodHlwZSA9PSB2ODo6QUNDRVNTX0dFVCAmJiB0YXJnZXQt
PnRyZWUoKS0+Y2hpbGQobmFtZSkgJiYgIWhvc3QtPkhhc1JlYWxOYW1lZFByb3BlcnR5KGtleS0+
VG9TdHJpbmcoKSkgJiYgbmFtZSAhPSBuYW1lT2ZQcm90b1Byb3BlcnR5KQorICAgICAgICBpZiAo
dHlwZSA9PSB2ODo6QUNDRVNTX0dFVCAmJiBjaGlsZEZyYW1lICYmICFob3N0LT5IYXNSZWFsTmFt
ZWRQcm9wZXJ0eShrZXktPlRvU3RyaW5nKCkpICYmIG5hbWUgIT0gbmFtZU9mUHJvdG9Qcm9wZXJ0
eSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNTgzLDEyICs1ODQsMTMg
QEAgYm9vbCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpP
YmplY3Q+IGhvc3QsIHVpbnQzMl90IGluZGUKICAgICBGcmFtZSogdGFyZ2V0ID0gdGFyZ2V0V2lu
ZG93LT5mcmFtZSgpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgRnJhbWUqIGNoaWxkRnJhbWUgPSAgdGFyZ2V0LT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4
KTsKIAogICAgIC8vIE5vdGljZSB0aGF0IHdlIGNhbid0IGNhbGwgSGFzUmVhbE5hbWVkUHJvcGVy
dHkgZm9yIEFDQ0VTU19IQVMKICAgICAvLyBiZWNhdXNlIHRoYXQgd291bGQgZ2VuZXJhdGUgaW5m
aW5pdGUgcmVjdXJzaW9uLgotICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfSEFTICYmIHRhcmdl
dC0+dHJlZSgpLT5jaGlsZChpbmRleCkpCisgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19IQVMg
JiYgY2hpbGRGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHR5cGUgPT0gdjg6
OkFDQ0VTU19HRVQgJiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKGluZGV4KSAmJiAhaG9zdC0+SGFz
UmVhbEluZGV4ZWRQcm9wZXJ0eShpbmRleCkpCisgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19H
RVQgJiYgY2hpbGRGcmFtZSAmJiAhaG9zdC0+SGFzUmVhbEluZGV4ZWRQcm9wZXJ0eShpbmRleCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIFY4QmluZGluZ1NlY3VyaXR5Ojpj
YW5BY2Nlc3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCB0YXJnZXQsIGZhbHNlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA1NDEzYmRiZTYyNWEyY2JhMjQyZTYyNmRjNzQx
MWE5Y2U2ZjM0MTIyLi4yOTdjOWFmMTExNmU4NzRlYjg1M2E5MTc3YmRjNTBmOGQyYWM3MWY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB1bnNpZ25l
ZCBET01XaW5kb3c6Omxlbmd0aCgpIGNvbnN0CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+dHJl
ZSgpLT5jaGlsZENvdW50KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+c2NvcGVkQ2hp
bGRDb3VudCgpOwogfQogCiBTdHJpbmcgRE9NV2luZG93OjpuYW1lKCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5jcHAKaW5kZXggNTc1ZTczNjYyMGJlYTVkOGEyN2NhMmE2ZTkwNGYyOWY4Mjk1ZTYwMS4u
NTMzYWY3OTYxM2FiM2VjY2MzYzA3NTI5MzU5NTdjMzUwOTAxYTRlZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKQEAgLTExMjUsNiArMTEyNSwxNSBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFn
ZUZvclNlbGVjdGlvbigpCiAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFn
ZS5nZXQoKSk7CiB9CiAKK2Jvb2wgRnJhbWU6OmluU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgY29u
c3QKK3sKKyAgICBBU1NFUlQoc2NvcGUpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3du
ZXIgPSBkb2N1bWVudCgpLT5vd25lckVsZW1lbnQoKTsKKyAgICAvLyBTY29waW5nIHRlc3Qgc2hv
dWxkIGJlIGRvbmUgb25seSBmb3IgY2hpbGQgZnJhbWVzLgorICAgIEFTU0VSVChvd25lcik7Cisg
ICAgcmV0dXJuIG93bmVyLT50cmVlU2NvcGUoKSA9PSBzY29wZTsKK30KKwogI2VuZGlmCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBhN2FjNjE5ZjMyMjgzZTQz
MGM2MTBlZTNhYmVjNjU0ZTNmNGRhODVkLi5iMThmNjQwMjliM2FhNDIxYjEzYzQzMWIzMTA0MDlk
NmIwMzc0MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03NCw2ICs3NCw4IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7IH07CiAjZW5kaWYK
IAorICAgIGNsYXNzIFRyZWVTY29wZTsKKwogICAgIGNsYXNzIEZyYW1lIDogcHVibGljIFJlZkNv
dW50ZWQ8RnJhbWU+LCBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQgewogICAgIHB1Ymxp
YzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZShQYWdlKiwgSFRNTEZy
YW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKQEAgLTEyMyw2ICsxMjUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNEaXNjb25uZWN0ZWQoYm9v
bCk7CiAgICAgICAgIGJvb2wgZXhjbHVkZUZyb21UZXh0U2VhcmNoKCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgc2V0RXhjbHVkZUZyb21UZXh0U2VhcmNoKGJvb2wpOworICAgICAgICBib29sIGluU2Nv
cGUoVHJlZVNjb3BlKikgY29uc3Q7CiAKICAgICAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhV
c2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
Y3BwCmluZGV4IGZhNDk4MmM5YmVhNTljM2ZmNDMxMTg5YTE2MDBmMmJjNTdhNzNlZTkuLmNlZDYy
MDA3MmZjYmNkMjhmOWE5ODk5YWI5ZjlkMTEzOGY4OTBiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
VHJlZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEZyYW1lVHJlZTo6YWN0dWFsbHlBcHBl
bmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKICAgICB9IGVsc2UKICAgICAgICAgbV9m
aXJzdENoaWxkID0gY2hpbGQ7CiAKLSAgICBtX2NoaWxkQ291bnQrKzsKKyAgICBtX3Njb3BlZENo
aWxkQ291bnQgPSBpbnZhbGlkQ291bnQ7CiAKICAgICBBU1NFUlQoIW1fbGFzdENoaWxkLT50cmVl
KCktPm1fbmV4dFNpYmxpbmcpOwogfQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRnJhbWVUcmVl
OjpyZW1vdmVDaGlsZChGcmFtZSogY2hpbGQpCiAgICAgY2hpbGQtPnRyZWUoKS0+bV9wcmV2aW91
c1NpYmxpbmcgPSAwOwogICAgIGNoaWxkLT50cmVlKCktPm1fbmV4dFNpYmxpbmcgPSAwOwogCi0g
ICAgbV9jaGlsZENvdW50LS07CisgICAgbV9zY29wZWRDaGlsZENvdW50ID0gaW52YWxpZENvdW50
OwogfQogCiBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdApAQCAtMTc3LDYgKzE3Nyw2NCBAQCBBdG9t
aWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBy
ZXF1ZXN0ZWROYW1lKSBjb25zdAogICAgIHJldHVybiBBdG9taWNTdHJpbmcobmFtZSk7CiB9CiAK
K2lubGluZSBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJl
ZVNjb3BlKiBzY29wZSkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzY29wZWRJbmRleCA9IDA7Cisg
ICAgZm9yIChGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOyByZXN1bHQ7IHJlc3VsdCA9IHJl
c3VsdC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPmluU2Nv
cGUoc2NvcGUpKSB7CisgICAgICAgICAgICBpZiAoc2NvcGVkSW5kZXggPT0gaW5kZXgpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIHNjb3BlZEluZGV4Kys7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIEZyYW1lKiBGcmFt
ZVRyZWU6OnNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVHJlZVNjb3BlKiBz
Y29wZSkgY29uc3QKK3sKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hp
bGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgaWYgKGNo
aWxkLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1lICYmIGNoaWxkLT5pblNjb3BlKHNjb3Bl
KSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5l
IHVuc2lnbmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudChUcmVlU2NvcGUqIHNjb3BlKSBj
b25zdAoreworICAgIHVuc2lnbmVkIHNjb3BlZENvdW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiBy
ZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5l
eHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+aW5TY29wZShzY29wZSkpCisgICAg
ICAgICAgICBzY29wZWRDb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBzY29wZWRDb3VudDsK
K30KKworRnJhbWUqIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNjb3BlZENoaWxkKGluZGV4LCBtX3RoaXNGcmFtZS0+ZG9jdW1lbnQo
KSk7Cit9CisKK0ZyYW1lKiBGcmFtZVRyZWU6OnNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2NvcGVkQ2hpbGQobmFtZSwgbV90aGlzRnJh
bWUtPmRvY3VtZW50KCkpOworfQorCit1bnNpZ25lZCBGcmFtZVRyZWU6OnNjb3BlZENoaWxkQ291
bnQoKSBjb25zdAoreworICAgIGlmIChtX3Njb3BlZENoaWxkQ291bnQgPT0gaW52YWxpZENvdW50
KQorICAgICAgICBtX3Njb3BlZENoaWxkQ291bnQgPSBzY29wZWRDaGlsZENvdW50KG1fdGhpc0Zy
YW1lLT5kb2N1bWVudCgpKTsKKyAgICByZXR1cm4gbV9zY29wZWRDaGlsZENvdW50OworfQorCit1
bnNpZ25lZCBGcmFtZVRyZWU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNv
dW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJlc3VsdDsg
cmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7
CisgICAgcmV0dXJuIGNvdW50OworfQorCiBGcmFtZSogRnJhbWVUcmVlOjpjaGlsZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKIHsKICAgICBGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggZDgyOTFmN2I2MDRlOTVkMGQzNDUyY2Y4NzI1Y2ViMWY1
YmYyNWFmOS4uNWY5ZTMxN2E5YjMwMDQ4ZDM5NDkxNDY0OWM3NTJhYjBiY2FhOThjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0yMCwyMyArMjAsMjggQEAKICNpZm5kZWYgRnJhbWVUcmVl
X2gKICNkZWZpbmUgRnJhbWVUcmVlX2gKIAorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBUcmVlU2NvcGU7CiAKICAgICBjbGFzcyBGcmFt
ZVRyZWUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZVRyZWUpOwogICAgIHB1
YmxpYzoKKyAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIGludmFsaWRDb3VudCA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihXVEY6Om5vdEZvdW5kKTsKKwogICAgICAgICBGcmFtZVRyZWUoRnJh
bWUqIHRoaXNGcmFtZSwgRnJhbWUqIHBhcmVudEZyYW1lKSAKICAgICAgICAgICAgIDogbV90aGlz
RnJhbWUodGhpc0ZyYW1lKQogICAgICAgICAgICAgLCBtX3BhcmVudChwYXJlbnRGcmFtZSkKICAg
ICAgICAgICAgICwgbV9wcmV2aW91c1NpYmxpbmcoMCkKICAgICAgICAgICAgICwgbV9sYXN0Q2hp
bGQoMCkKLSAgICAgICAgICAgICwgbV9jaGlsZENvdW50KDApCisgICAgICAgICAgICAsIG1fc2Nv
cGVkQ2hpbGRDb3VudChpbnZhbGlkQ291bnQpCiAgICAgICAgIHsKICAgICAgICAgfQorCiAgICAg
ICAgIH5GcmFtZVRyZWUoKTsKIAogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBj
b25zdCB7IHJldHVybiBtX25hbWU7IH0KQEAgLTUwLDcgKzU1LDYgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBGcmFtZSogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9w
cmV2aW91c1NpYmxpbmc7IH0KICAgICAgICAgRnJhbWUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJl
dHVybiBtX2ZpcnN0Q2hpbGQuZ2V0KCk7IH0KICAgICAgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkQ291bnQo
KSBjb25zdCB7IHJldHVybiBtX2NoaWxkQ291bnQ7IH0KIAogICAgICAgICBib29sIGlzRGVzY2Vu
ZGFudE9mKGNvbnN0IEZyYW1lKiBhbmNlc3RvcikgY29uc3Q7CiAgICAgICAgIEZyYW1lKiB0cmF2
ZXJzZU5leHQoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKQEAgLTY1LDE1ICs2
OSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiBjaGlsZCh1bnNpZ25l
ZCBpbmRleCkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBjaGlsZChjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0OwogICAgICAgICBGcmFtZSogZmluZChjb25zdCBBdG9taWNTdHJpbmcmIG5h
bWUpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBjaGlsZENvdW50KCkgY29uc3Q7CiAKICAgICAg
ICAgQXRvbWljU3RyaW5nIHVuaXF1ZUNoaWxkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHJlcXVl
c3RlZE5hbWUpIGNvbnN0OwogCiAgICAgICAgIEZyYW1lKiB0b3AoYm9vbCBjaGVja0ZvckRpc2Nv
bm5lY3RlZEZyYW1lID0gZmFsc2UpIGNvbnN0OwogCisgICAgICAgIEZyYW1lKiBzY29wZWRDaGls
ZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBzY29wZWRDaGls
ZENvdW50KCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZSogZGVlcExhc3RD
aGlsZCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFjdHVhbGx5QXBwZW5kQ2hpbGQoUGFzc1JlZlB0
cjxGcmFtZT4pOwogCisgICAgICAgIGJvb2wgc2NvcGVkQnkoVHJlZVNjb3BlKikgY29uc3Q7Cisg
ICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJlZVNjb3BlKikgY29u
c3Q7CisgICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUs
IFRyZWVTY29wZSopIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBzY29wZWRDaGlsZENvdW50KFRy
ZWVTY29wZSopIGNvbnN0OworCiAgICAgICAgIEZyYW1lKiBtX3RoaXNGcmFtZTsKIAogICAgICAg
ICBGcmFtZSogbV9wYXJlbnQ7CkBAIC04NSw3ICs5OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgRnJhbWUqIG1fcHJldmlvdXNTaWJsaW5nOwogICAgICAgICBSZWZQdHI8RnJhbWU+
IG1fZmlyc3RDaGlsZDsKICAgICAgICAgRnJhbWUqIG1fbGFzdENoaWxkOwotICAgICAgICB1bnNp
Z25lZCBtX2NoaWxkQ291bnQ7CisgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9zY29wZWRDaGls
ZENvdW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMGVjNGJl
MDc2ZWM5NGY2YzY5YTQxMDA5ZmZkMmRkZGI4ZjlkN2VmLi4yNTU4YTI1NGYxYzdjYjU5OTljMWFm
Mjg1MTJkNWIzZGQxY2FiNWFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMjIgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhpcyB0ZXN0IGNo
ZWNrcyBzZWxlY3QgYXR0cmlidXRlIG9mIGNvbnRlbnQgZWxlbWVudCBpcyB2YWxpZC4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTk1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFk
b3cvaWZyYW1lLXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L3NoYWRvdy9pZnJhbWUtc2hhZG93Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTIwICBEYXZpZCBC
YXJ0b24gIDxkYmFydG9uQG1hdGhzY3JpYmUuY29tPgogCiAgICAgICAgIFJlbmRlck1hdGhNTFJv
dzo6YmFzZWxpbmVQb3NpdGlvbigpIG9ubHkgaWYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlv
bk9uQ29udGFpbmluZ0xpbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9pZnJhbWUtc2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9pZnJhbWUtc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTc2ZDE2YjEzZWU5YzJl
NzFkZTA5YzBmNTg3ZjdkMGJkNDE2ODc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMg
QEAKK1RoaXMgdGVzdCBlbnN1cmVzIHRoYXQgaWZyYW1lIGluc2lkZSBzaGFkb3cgaXNuJ3Qgdmlz
aWJsZSBmcm9tIHRoZSBob3N0IGRvY3VtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyB3aW5kb3cubGVuZ3RoIGlzIDQKK1BBU1MgaTBieW5hbWUubGVuZ3RoIGlzIDEK
K1BBU1MgaTAgaXMgaTBieW5hbWVbMF0uY29udGVudFdpbmRvdworUEFTUyBpMS5sZW5ndGggaXMg
MgorUEFTUyB3aW5kb3cubGVuZ3RoIGlzIDQKK1BBU1MgaTJieW5hbWUubGVuZ3RoIGlzIDEKK1BB
U1MgaTJieW5hbWVbMF0uY29udGVudFdpbmRvdyBpcyBpMgorUEFTUyBpM2J5bmFtZS5sZW5ndGgg
aXMgMAorUEFTUyBpMyBpcyB1bmRlZmluZWQKK1BBU1Mgd2luZG93Lmxlbmd0aCBpcyAzCitQQVNT
IGRvY3VtZW50WydpMCddIGlzIHVuZGVmaW5lZAorUEFTUyB3aW5kb3cubGVuZ3RoIGlzIDQKK1BB
U1MgZG9jdW1lbnRbJ2kzJ10gaXMgaTNJblNoYWRvdy5jb250ZW50V2luZG93CitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRvdy5odG1sIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzdk
ZjRmNjYyYjlmZmQ1Y2Q4ZjkyN2MzZTViMGE0ZDk0Mzc0NDYxCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbApAQCAtMCwwICsx
LDcxIEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorPHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8aWZyYW1lIG5hbWU9ImkwIj48L2lmcmFtZT4K
KzxpZnJhbWUgbmFtZT0iaTEiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJpMSI+PC9pZnJhbWU+
Cis8aWZyYW1lIG5hbWU9ImkyIj48L2lmcmFtZT4KKworPGRpdiBpZD0iaG9zdCI+PC9kaXY+CisK
KzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGlmcmFtZSBp
bnNpZGUgc2hhZG93IGlzbid0IHZpc2libGUgZnJvbSB0aGUgaG9zdCBkb2N1bWVudC4iKTsKKwor
Ly8gQXQgZmlyc3QsIGNoZWNrIGlmcmFtZSBpbiB1c3VhbCB3YXkKK3Nob3VsZEJlKCJ3aW5kb3cu
bGVuZ3RoIiwgIjQiKTsKK3ZhciBpMCA9IGRvY3VtZW50WyJpMCJdOwordmFyIGkwYnluYW1lID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoImkwIik7CitzaG91bGRCZSgiaTBieW5hbWUubGVu
Z3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJpMCIsICJpMGJ5bmFtZVswXS5jb250ZW50V2luZG93Iik7
CisKK3ZhciBpMSA9IGRvY3VtZW50WyJpMSJdOwordmFyIGkyYnluYW1lID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeU5hbWUoImkwIik7CitzaG91bGRCZSgiaTEubGVuZ3RoIiwgIjIiKTsKKworLy8g
VGhlbiBBZGRpbmcgc29tZSBpZnJhbWVzIGludG8gYSBzaGFkb3cuCisKK3ZhciBob3N0ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKK3ZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hh
ZG93Um9vdChob3N0KTsKK3ZhciBpMkluU2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aWZyYW1lIik7CitpMkluU2hhZG93LnNldEF0dHJpYnV0ZSgibmFtZSIsICJpMiIpOworc2hhZG93
LmFwcGVuZENoaWxkKGkySW5TaGFkb3cpOworCit2YXIgaTNJblNoYWRvdyA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworaTNJblNoYWRvdy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAi
aTMiKTsKK3NoYWRvdy5hcHBlbmRDaGlsZChpM0luU2hhZG93KTsKKworc2hvdWxkQmUoIndpbmRv
dy5sZW5ndGgiLCAiNCIpOworCit2YXIgaTIgPSBkb2N1bWVudFsiaTIiXTsKK3ZhciBpMmJ5bmFt
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJpMiIpOworc2hvdWxkQmUoImkyYnluYW1l
Lmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgiaTJieW5hbWVbMF0uY29udGVudFdpbmRvdyIsICJp
MiIpOworCit2YXIgaTMgPSBkb2N1bWVudFsiaTMiXTsKK3ZhciBpM2J5bmFtZSA9IGRvY3VtZW50
LmdldEVsZW1lbnRzQnlOYW1lKCJpMyIpOworc2hvdWxkQmUoImkzYnluYW1lLmxlbmd0aCIsICIw
Iik7CitzaG91bGRCZSgiaTMiLCAidW5kZWZpbmVkIik7CisKKy8vIE1vdmluZyBpZnJhbWVzIGFj
cm9zcyBzaGFkb3cgYm91bmRhcnkgdG8gZW5zdXJlCisvLyBUaGF0IHdpbmRvdy5sZW5ndGggYW5k
IHByb3BlcnR5IGF2YWlsYWJpbGl0eSBhcmUKKy8vIGNvcnJlY3RseSB1cGRhdGVkLgorCitzaGFk
b3cuYXBwZW5kQ2hpbGQoaTAuZnJhbWVFbGVtZW50KTsKKworc2hvdWxkQmUoIndpbmRvdy5sZW5n
dGgiLCAiMyIpOworc2hvdWxkQmUoImRvY3VtZW50WydpMCddIiwgInVuZGVmaW5lZCIpOworCitk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGkzSW5TaGFkb3cpOworc2hvdWxkQmUoIndpbmRvdy5s
ZW5ndGgiLCAiNCIpOworc2hvdWxkQmUoImRvY3VtZW50WydpMyddIiwgImkzSW5TaGFkb3cuY29u
dGVudFdpbmRvdyIpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128344</attachid>
            <date>2012-02-22 17:25:25 -0800</date>
            <delta_ts>2012-02-22 17:32:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65595-20120223102524.patch</filename>
            <type>text/plain</type>
            <size>20564</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjMmIwMGI5NmIxMjU5
NTI3MjBkNjRkZTkzZGE2NmNmYzBhMDk0My4uNmVlZWM0MzRiNDE5YWUwYjNiNGMyOTRiZGZkM2Ez
YzZkNWFlYTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTIyICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFRoaXMgdGVzdCBjaGVj
a3Mgc2VsZWN0IGF0dHJpYnV0ZSBvZiBjb250ZW50IGVsZW1lbnQgaXMgdmFsaWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgRnJhbWVUcmVlOjpzY29wZWRDaGlsZCgpIGFuZAorICAgICAgICBGcmFtZVRyZWU6OnNj
b3BlZENoaWxkKCksIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBzY29wZS1hd2FyZQorICAgICAgICBm
cmFtZSBsb29rdXAuIFVzaW5nIHRoZXNlLCB0aGUgbmFtZWQgYWNjZXNzb3IgYW5kIHRoZSBpbmRl
eGVkCisgICAgICAgIGFjY2VjY29yIG9uIERvY3VtZW50LCBhbmQgV2luZG93Lmxlbmd0aCBhcmUg
bm93IFRyZWVTY29wZQorICAgICAgICBhd2FyZS4gVGhleSBkb24ndCBjb3VudCBpZnJhbWVzIGlu
IFNoYWRvdyBET00uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyByZW1vdmVzIEZyYW1lVHJl
ZTo6bV9jaGlsZENvdW50IHNpbmNlCisgICAgICAgIEZyYW1lOjpjaGlsZENvdW50KCkgaXMgbm8g
bG9uZ2VyIGluIHRoZSBob3QKKyAgICAgICAgcGF0aC4gbV9zY29wZWRDaGlsZENvdW50IGlzIGFk
ZGVkIGluc3RlYWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFk
b3cuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpp
bmRleEdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
Omxlbmd0aCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6aW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmFjdHVhbGx5QXBw
ZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnNjb3BlZENoaWxkKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpzY29wZWRDaGlsZENvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6Y2hpbGRDb3VudCk6CisgICAgICAgICogcGFnZS9G
cmFtZVRyZWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhbWVUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6RnJhbWVUcmVlKToKKwogMjAxMi0wMi0yMCAgUmF5
bW9uZCBMaXUgIDxyYXltb25kLmxpdUBpbnRlbC5jb20+CiAKICAgICAgICAgSGF2ZSB0aGUgRHlu
YW1pY3NDb21wcmVzc29yTm9kZSBzdXBwb3J0IG11bHRpLWNoYW5uZWwgZGF0YQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCBhYTVjMTc3ZjIyNWFlN2IwMWM5ZTQ0MTlmMmNiOWU2MGU0MjFiOTZiLi45
ZTUyZWMzNGI4YmVhZmE1N2NjNDI3MmFhOTk5Zjc2YjZhZGQ5YTdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTQ3Nyw2ICsxNDc3LDEwIEBAIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMjB0cmF2
ZXJzZU5leHRXaXRoV3JhcEViCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTI0dHJhdmVyc2VQcmV2
aW91c1dpdGhXcmFwRWIKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlNGZpbmRFUktOM1dURjEyQXRv
bWljU3RyaW5nRQogX19aTks3V2ViQ29yZTlGcmFtZVRyZWU2cGFyZW50RWIKK19fWk5LN1dlYkNv
cmU1RnJhbWUxMGlzU2NvcGVkQnlFUE5TXzlUcmVlU2NvcGVFCitfX1pOSzdXZWJDb3JlOUZyYW1l
VHJlZTE2c2NvcGVkQ2hpbGRDb3VudEV2CitfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTExc2NvcGVk
Q2hpbGRFUktOM1dURjEyQXRvbWljU3RyaW5nRQorX19aTks3V2ViQ29yZTlGcmFtZVRyZWUxMXNj
b3BlZENoaWxkRWoKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTFuZWVkc0xheW91dEV2CiBfX1pO
SzdXZWJDb3JlOUZyYW1lVmlldzEzaXNUcmFuc3BhcmVudEV2CiBfX1pOSzdXZWJDb3JlOUZyYW1l
VmlldzEzcGFpbnRCZWhhdmlvckV2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKaW5kZXggYmFmODBkMzYwMzBmMDU3YjFlYWI4YmZiMWZmOWNj
ZmRiNmEyMDliOC4uMGJhMjU5ZTc2ZDI4MzcwNmRkZjY1YTc2YTM5ZTMxOGE3Y2I5ZDEzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApA
QCAtOTksMTIgKzk5LDEyIEBAIEpTVmFsdWUgbm9uQ2FjaGluZ1N0YXRpY0Z1bmN0aW9uR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllCiAKIHN0YXRpYyBKU1Zh
bHVlIGNoaWxkRnJhbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgcmV0dXJuIHRvSlMoZXhlYywg
c3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZy
YW1lKCktPnRyZWUoKS0+Y2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpLT5kb21XaW5kb3coKSk7CisgICAgcmV0dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNE
T01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+
c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpLT5kb21X
aW5kb3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBzbG90QmFzZSwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIHRvSlMo
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFzZSkpLT5pbXBs
KCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaW5kZXgpLT5kb21XaW5kb3coKSk7CisgICAgcmV0
dXJuIHRvSlMoZXhlYywgc3RhdGljX2Nhc3Q8SlNET01XaW5kb3cqPihhc09iamVjdChzbG90QmFz
ZSkpLT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaW5kZXgpLT5kb21XaW5k
b3coKSk7CiB9CiAKIHN0YXRpYyBKU1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKQEAg
LTIyMCw3ICsyMjAsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlND
ZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aQogICAgIC8vIG5hbWluZyBm
cmFtZXMgdGhpbmdzIHRoYXQgY29uZmxpY3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAg
ICAgLy8gYXJlIGluIE1veiBidXQgbm90IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2Us
IHdlIGhhdmUgdG8gZG8KICAgICAvLyBpdCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVj
dC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKSkgeworICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCkt
PnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIGNoaWxkRnJhbWVHZXR0
ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBAIC0yNDQsNyArMjQ0LDcgQEAgYm9v
bCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRl
KiBleGVjLCBjb25zdCBJZGVudGkKICAgICAvLyBhbGxvdyB3aW5kb3dbMV0gb3IgcGFyZW50WzFd
IGV0Yy4gKCM1Njk4MykKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5h
bWUudG9BcnJheUluZGV4KG9rKTsKLSAgICBpZiAob2sgJiYgaSA8IHRoaXNPYmplY3QtPmltcGwo
KS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZENvdW50KCkpIHsKKyAgICBpZiAob2sgJiYgaSA8IHRo
aXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZENvdW50KCkpIHsK
ICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRleCh0aGlzT2JqZWN0LCBpLCBpbmRleEdldHRlcik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTMxMCw3ICszMTAsNyBAQCBib29sIEpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgIC8vIG5hbWluZyBmcmFtZXMgdGhpbmdzIHRoYXQgY29uZmxp
Y3Qgd2l0aCB3aW5kb3cgcHJvcGVydGllcyB0aGF0CiAgICAgLy8gYXJlIGluIE1veiBidXQgbm90
IElFLiBTaW5jZSB3ZSBoYXZlIHNvbWUgb2YgdGhlc2UsIHdlIGhhdmUgdG8gZG8KICAgICAvLyBp
dCB0aGUgTW96IHdheS4KLSAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVl
KCktPmNoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgeworICAg
IGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+c2NvcGVkQ2hpbGQoaWRl
bnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFByb3BlcnR5
U2xvdCBzbG90OwogICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBjaGlsZEZyYW1l
R2V0dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUo
ZXhlYywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwpA
QCAtMzE5LDcgKzMxOSw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgCiAgICAgYm9v
bCBvazsKICAgICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChvayk7Ci0g
ICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hp
bGRDb3VudCgpKSB7CisgICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1l
KCktPnRyZWUoKS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAgICAgIFByb3BlcnR5U2xvdCBz
bG90OwogICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGksIGluZGV4R2V0
dGVyKTsKICAgICAgICAgZGVzY3JpcHRvci5zZXREZXNjcmlwdG9yKHNsb3QuZ2V0VmFsdWUoZXhl
YywgcHJvcGVydHlOYW1lKSwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggZmI3NjI4ZWI3Y2ZhODgyYzI2NDFjMzAzZDI0MjViNjM1MjNmMWY2Ni4u
Y2JhZTExMzAwZThhOGYxZjlkODhhMWEwMzIyNzhjN2M4YjAxZDQxMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3Bw
CkBAIC00NzYsNyArNDc2LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93Ojpp
bmRleGVkUHJvcGVydHlHZXR0ZXIodWludDMyX3QgaW5kZXgsIGNvbnN0IHYKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gbm90SGFuZGxlZEJ5SW50ZXJjZXB0b3IoKTsKIAotICAgIEZy
YW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPmNoaWxkKGluZGV4KTsKKyAgICBGcmFtZSogY2hp
bGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRDaGlsZChpbmRleCk7CiAgICAgaWYgKGNoaWxkKQog
ICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9tV2luZG93KCkpOwogCkBAIC00OTksNyArNDk5
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0
dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIAogICAgIC8vIFNlYXJjaCBzdWItZnJhbWVz
LgogICAgIEF0b21pY1N0cmluZyBwcm9wTmFtZSA9IHY4U3RyaW5nVG9BdG9taWNXZWJDb3JlU3Ry
aW5nKG5hbWUpOwotICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPmNoaWxkKHByb3BO
YW1lKTsKKyAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5zY29wZWRDaGlsZChwcm9w
TmFtZSk7CiAgICAgaWYgKGNoaWxkKQogICAgICAgICByZXR1cm4gdG9WOChjaGlsZC0+ZG9tV2lu
ZG93KCkpOwogCkBAIC01NTYsMTQgKzU1NiwxNSBAQCBib29sIFY4RE9NV2luZG93OjpuYW1lZFNl
Y3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3QsIHY4OjpMb2NhbDx2ODo6Vgog
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbmFtZU9mUHJvdG9Qcm9w
ZXJ0eSwgKCJfX3Byb3RvX18iKSk7CiAKICAgICAgICAgU3RyaW5nIG5hbWUgPSB0b1dlYkNvcmVT
dHJpbmcoa2V5KTsKKyAgICAgICAgRnJhbWUqIGNoaWxkRnJhbWUgPSB0YXJnZXQtPnRyZWUoKS0+
c2NvcGVkQ2hpbGQobmFtZSk7CiAgICAgICAgIC8vIE5vdGljZSB0aGF0IHdlIGNhbid0IGNhbGwg
SGFzUmVhbE5hbWVkUHJvcGVydHkgZm9yIEFDQ0VTU19IQVMKICAgICAgICAgLy8gYmVjYXVzZSB0
aGF0IHdvdWxkIGdlbmVyYXRlIGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICAgICAgaWYgKHR5cGUg
PT0gdjg6OkFDQ0VTU19IQVMgJiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKG5hbWUpKQorICAgICAg
ICBpZiAodHlwZSA9PSB2ODo6QUNDRVNTX0hBUyAmJiBjaGlsZEZyYW1lKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gZXhwbGljaXRseSBjb21wYXJlIGFn
YWluc3QgbmFtZU9mUHJvdG9Qcm9wZXJ0eSBiZWNhdXNlCiAgICAgICAgIC8vIFY4J3MgSlNPYmpl
Y3Q6OkxvY2FsTG9va3VwIGZpbmRzIF9fcHJvdG9fXyBiZWZvcmUKICAgICAgICAgLy8gaW50ZXJj
ZXB0b3JzIGFuZCBldmVuIHdoZW4gX19wcm90b19fIGlzbid0IGEgInJlYWwgbmFtZWQgcHJvcGVy
dHkiLgotICAgICAgICBpZiAodHlwZSA9PSB2ODo6QUNDRVNTX0dFVCAmJiB0YXJnZXQtPnRyZWUo
KS0+Y2hpbGQobmFtZSkgJiYgIWhvc3QtPkhhc1JlYWxOYW1lZFByb3BlcnR5KGtleS0+VG9TdHJp
bmcoKSkgJiYgbmFtZSAhPSBuYW1lT2ZQcm90b1Byb3BlcnR5KQorICAgICAgICBpZiAodHlwZSA9
PSB2ODo6QUNDRVNTX0dFVCAmJiBjaGlsZEZyYW1lICYmICFob3N0LT5IYXNSZWFsTmFtZWRQcm9w
ZXJ0eShrZXktPlRvU3RyaW5nKCkpICYmIG5hbWUgIT0gbmFtZU9mUHJvdG9Qcm9wZXJ0eSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtNTgzLDEyICs1ODQsMTMgQEAgYm9v
bCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+
IGhvc3QsIHVpbnQzMl90IGluZGUKICAgICBGcmFtZSogdGFyZ2V0ID0gdGFyZ2V0V2luZG93LT5m
cmFtZSgpOwogICAgIGlmICghdGFyZ2V0KQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgRnJh
bWUqIGNoaWxkRnJhbWUgPSAgdGFyZ2V0LT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4KTsKIAog
ICAgIC8vIE5vdGljZSB0aGF0IHdlIGNhbid0IGNhbGwgSGFzUmVhbE5hbWVkUHJvcGVydHkgZm9y
IEFDQ0VTU19IQVMKICAgICAvLyBiZWNhdXNlIHRoYXQgd291bGQgZ2VuZXJhdGUgaW5maW5pdGUg
cmVjdXJzaW9uLgotICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfSEFTICYmIHRhcmdldC0+dHJl
ZSgpLT5jaGlsZChpbmRleCkpCisgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19IQVMgJiYgY2hp
bGRGcmFtZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VT
U19HRVQgJiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKGluZGV4KSAmJiAhaG9zdC0+SGFzUmVhbElu
ZGV4ZWRQcm9wZXJ0eShpbmRleCkpCisgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19HRVQgJiYg
Y2hpbGRGcmFtZSAmJiAhaG9zdC0+SGFzUmVhbEluZGV4ZWRQcm9wZXJ0eShpbmRleCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIFY4QmluZGluZ1NlY3VyaXR5OjpjYW5BY2Nl
c3NGcmFtZShWOEJpbmRpbmdTdGF0ZTo6T25seSgpLCB0YXJnZXQsIGZhbHNlKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAppbmRleCA1NDEzYmRiZTYyNWEyY2JhMjQyZTYyNmRjNzQxMWE5Y2U2
ZjM0MTIyLi4yOTdjOWFmMTExNmU4NzRlYjg1M2E5MTc3YmRjNTBmOGQyYWM3MWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xMjA2LDcgKzEyMDYsNyBAQCB1bnNpZ25lZCBET01X
aW5kb3c6Omxlbmd0aCgpIGNvbnN0CiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJh
bWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT5j
aGlsZENvdW50KCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+c2NvcGVkQ2hpbGRDb3Vu
dCgpOwogfQogCiBTdHJpbmcgRE9NV2luZG93OjpuYW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKaW5kZXggNTc1ZTczNjYyMGJlYTVkOGEyN2NhMmE2ZTkwNGYyOWY4Mjk1ZTYwMS4uNTMzYWY3
OTYxM2FiM2VjY2MzYzA3NTI5MzU5NTdjMzUwOTAxYTRlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAK
QEAgLTExMjUsNiArMTEyNSwxNSBAQCBEcmFnSW1hZ2VSZWYgRnJhbWU6OmRyYWdJbWFnZUZvclNl
bGVjdGlvbigpCiAgICAgcmV0dXJuIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShpbWFnZS5nZXQo
KSk7CiB9CiAKK2Jvb2wgRnJhbWU6OmluU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgY29uc3QKK3sK
KyAgICBBU1NFUlQoc2NvcGUpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBk
b2N1bWVudCgpLT5vd25lckVsZW1lbnQoKTsKKyAgICAvLyBTY29waW5nIHRlc3Qgc2hvdWxkIGJl
IGRvbmUgb25seSBmb3IgY2hpbGQgZnJhbWVzLgorICAgIEFTU0VSVChvd25lcik7CisgICAgcmV0
dXJuIG93bmVyLT50cmVlU2NvcGUoKSA9PSBzY29wZTsKK30KKwogI2VuZGlmCiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRleCBhN2FjNjE5ZjMyMjgzZTQzMGM2MTBl
ZTNhYmVjNjU0ZTNmNGRhODVkLi5iMThmNjQwMjliM2FhNDIxYjEzYzQzMWIzMTA0MDlkNmIwMzc0
MjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03NCw2ICs3NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNsaWVudCB7IH07CiAjZW5kaWYKIAorICAg
IGNsYXNzIFRyZWVTY29wZTsKKwogICAgIGNsYXNzIEZyYW1lIDogcHVibGljIFJlZkNvdW50ZWQ8
RnJhbWU+LCBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVDbGllbnQgewogICAgIHB1YmxpYzoKICAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZShQYWdlKiwgSFRNTEZyYW1lT3du
ZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsKQEAgLTEyMyw2ICsxMjUsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0SXNEaXNjb25uZWN0ZWQoYm9vbCk7CiAg
ICAgICAgIGJvb2wgZXhjbHVkZUZyb21UZXh0U2VhcmNoKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
c2V0RXhjbHVkZUZyb21UZXh0U2VhcmNoKGJvb2wpOworICAgICAgICBib29sIGluU2NvcGUoVHJl
ZVNjb3BlKikgY29uc3Q7CiAKICAgICAgICAgdm9pZCBpbmplY3RVc2VyU2NyaXB0cyhVc2VyU2Ny
aXB0SW5qZWN0aW9uVGltZSk7CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmlu
ZGV4IGZhNDk4MmM5YmVhNTljM2ZmNDMxMTg5YTE2MDBmMmJjNTdhNzNlZTkuLmNlZDYyMDA3MmZj
YmNkMjhmOWE5ODk5YWI5ZjlkMTEzOGY4OTBiMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5j
cHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEZyYW1lVHJlZTo6YWN0dWFsbHlBcHBlbmRDaGls
ZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKICAgICB9IGVsc2UKICAgICAgICAgbV9maXJzdENo
aWxkID0gY2hpbGQ7CiAKLSAgICBtX2NoaWxkQ291bnQrKzsKKyAgICBtX3Njb3BlZENoaWxkQ291
bnQgPSBpbnZhbGlkQ291bnQ7CiAKICAgICBBU1NFUlQoIW1fbGFzdENoaWxkLT50cmVlKCktPm1f
bmV4dFNpYmxpbmcpOwogfQpAQCAtMTI1LDcgKzEyNSw3IEBAIHZvaWQgRnJhbWVUcmVlOjpyZW1v
dmVDaGlsZChGcmFtZSogY2hpbGQpCiAgICAgY2hpbGQtPnRyZWUoKS0+bV9wcmV2aW91c1NpYmxp
bmcgPSAwOwogICAgIGNoaWxkLT50cmVlKCktPm1fbmV4dFNpYmxpbmcgPSAwOwogCi0gICAgbV9j
aGlsZENvdW50LS07CisgICAgbV9zY29wZWRDaGlsZENvdW50ID0gaW52YWxpZENvdW50OwogfQog
CiBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWljU3Ry
aW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdApAQCAtMTc3LDYgKzE3Nyw2NCBAQCBBdG9taWNTdHJp
bmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiByZXF1ZXN0
ZWROYW1lKSBjb25zdAogICAgIHJldHVybiBBdG9taWNTdHJpbmcobmFtZSk7CiB9CiAKK2lubGlu
ZSBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJlZVNjb3Bl
KiBzY29wZSkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBzY29wZWRJbmRleCA9IDA7CisgICAgZm9y
IChGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOyByZXN1bHQ7IHJlc3VsdCA9IHJlc3VsdC0+
dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgICAgIGlmIChyZXN1bHQtPmluU2NvcGUoc2Nv
cGUpKSB7CisgICAgICAgICAgICBpZiAoc2NvcGVkSW5kZXggPT0gaW5kZXgpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIHNjb3BlZEluZGV4Kys7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIEZyYW1lKiBGcmFtZVRyZWU6
OnNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVHJlZVNjb3BlKiBzY29wZSkg
Y29uc3QKK3sKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNo
aWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkKKyAgICAgICAgaWYgKGNoaWxkLT50
cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1lICYmIGNoaWxkLT5pblNjb3BlKHNjb3BlKSkKKyAg
ICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICByZXR1cm4gMDsKK30KKworaW5saW5lIHVuc2ln
bmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudChUcmVlU2NvcGUqIHNjb3BlKSBjb25zdAor
eworICAgIHVuc2lnbmVkIHNjb3BlZENvdW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQg
PSBmaXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJs
aW5nKCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+aW5TY29wZShzY29wZSkpCisgICAgICAgICAg
ICBzY29wZWRDb3VudCsrOworICAgIH0KKworICAgIHJldHVybiBzY29wZWRDb3VudDsKK30KKwor
RnJhbWUqIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQodW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHNjb3BlZENoaWxkKGluZGV4LCBtX3RoaXNGcmFtZS0+ZG9jdW1lbnQoKSk7Cit9
CisKK0ZyYW1lKiBGcmFtZVRyZWU6OnNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFt
ZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2NvcGVkQ2hpbGQobmFtZSwgbV90aGlzRnJhbWUtPmRv
Y3VtZW50KCkpOworfQorCit1bnNpZ25lZCBGcmFtZVRyZWU6OnNjb3BlZENoaWxkQ291bnQoKSBj
b25zdAoreworICAgIGlmIChtX3Njb3BlZENoaWxkQ291bnQgPT0gaW52YWxpZENvdW50KQorICAg
ICAgICBtX3Njb3BlZENoaWxkQ291bnQgPSBzY29wZWRDaGlsZENvdW50KG1fdGhpc0ZyYW1lLT5k
b2N1bWVudCgpKTsKKyAgICByZXR1cm4gbV9zY29wZWRDaGlsZENvdW50OworfQorCit1bnNpZ25l
ZCBGcmFtZVRyZWU6OmNoaWxkQ291bnQoKSBjb25zdAoreworICAgIHVuc2lnbmVkIGNvdW50ID0g
MDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0
ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkpCisgICAgICAgICsrY291bnQ7CisgICAg
cmV0dXJuIGNvdW50OworfQorCiBGcmFtZSogRnJhbWVUcmVlOjpjaGlsZCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKIHsKICAgICBGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVUcmVlLmgKaW5kZXggZDgyOTFmN2I2MDRlOTVkMGQzNDUyY2Y4NzI1Y2ViMWY1YmYyNWFm
OS4uNWY5ZTMxN2E5YjMwMDQ4ZDM5NDkxNDY0OWM3NTJhYjBiY2FhOThjMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVHJlZS5oCkBAIC0yMCwyMyArMjAsMjggQEAKICNpZm5kZWYgRnJhbWVUcmVlX2gKICNk
ZWZpbmUgRnJhbWVUcmVlX2gKIAorI2luY2x1ZGUgPHd0Zi9Ob3RGb3VuZC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBj
bGFzcyBGcmFtZTsKKyAgICBjbGFzcyBUcmVlU2NvcGU7CiAKICAgICBjbGFzcyBGcmFtZVRyZWUg
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGcmFtZVRyZWUpOwogICAgIHB1YmxpYzoK
KyAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIGludmFsaWRDb3VudCA9IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihXVEY6Om5vdEZvdW5kKTsKKwogICAgICAgICBGcmFtZVRyZWUoRnJhbWUqIHRo
aXNGcmFtZSwgRnJhbWUqIHBhcmVudEZyYW1lKSAKICAgICAgICAgICAgIDogbV90aGlzRnJhbWUo
dGhpc0ZyYW1lKQogICAgICAgICAgICAgLCBtX3BhcmVudChwYXJlbnRGcmFtZSkKICAgICAgICAg
ICAgICwgbV9wcmV2aW91c1NpYmxpbmcoMCkKICAgICAgICAgICAgICwgbV9sYXN0Q2hpbGQoMCkK
LSAgICAgICAgICAgICwgbV9jaGlsZENvdW50KDApCisgICAgICAgICAgICAsIG1fc2NvcGVkQ2hp
bGRDb3VudChpbnZhbGlkQ291bnQpCiAgICAgICAgIHsKICAgICAgICAgfQorCiAgICAgICAgIH5G
cmFtZVRyZWUoKTsKIAogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7
IHJldHVybiBtX25hbWU7IH0KQEAgLTUwLDcgKzU1LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBGcmFtZSogcHJldmlvdXNTaWJsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wcmV2aW91
c1NpYmxpbmc7IH0KICAgICAgICAgRnJhbWUqIGZpcnN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0Q2hpbGQuZ2V0KCk7IH0KICAgICAgICAgRnJhbWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsg
cmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0gICAgICAgIHVuc2lnbmVkIGNoaWxkQ291bnQoKSBjb25z
dCB7IHJldHVybiBtX2NoaWxkQ291bnQ7IH0KIAogICAgICAgICBib29sIGlzRGVzY2VuZGFudE9m
KGNvbnN0IEZyYW1lKiBhbmNlc3RvcikgY29uc3Q7CiAgICAgICAgIEZyYW1lKiB0cmF2ZXJzZU5l
eHQoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4gPSAwKSBjb25zdDsKQEAgLTY1LDE1ICs2OSwyNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiBjaGlsZCh1bnNpZ25lZCBpbmRl
eCkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBjaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUp
IGNvbnN0OwogICAgICAgICBGcmFtZSogZmluZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNv
bnN0OworICAgICAgICB1bnNpZ25lZCBjaGlsZENvdW50KCkgY29uc3Q7CiAKICAgICAgICAgQXRv
bWljU3RyaW5nIHVuaXF1ZUNoaWxkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHJlcXVlc3RlZE5h
bWUpIGNvbnN0OwogCiAgICAgICAgIEZyYW1lKiB0b3AoYm9vbCBjaGVja0ZvckRpc2Nvbm5lY3Rl
ZEZyYW1lID0gZmFsc2UpIGNvbnN0OwogCisgICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZCh1bnNp
Z25lZCBpbmRleCkgY29uc3Q7CisgICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBzY29wZWRDaGlsZENvdW50
KCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAgICBGcmFtZSogZGVlcExhc3RDaGlsZCgp
IGNvbnN0OwogICAgICAgICB2b2lkIGFjdHVhbGx5QXBwZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFt
ZT4pOwogCisgICAgICAgIGJvb2wgc2NvcGVkQnkoVHJlZVNjb3BlKikgY29uc3Q7CisgICAgICAg
IEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCwgVHJlZVNjb3BlKikgY29uc3Q7Cisg
ICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIFRyZWVT
Y29wZSopIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBzY29wZWRDaGlsZENvdW50KFRyZWVTY29w
ZSopIGNvbnN0OworCiAgICAgICAgIEZyYW1lKiBtX3RoaXNGcmFtZTsKIAogICAgICAgICBGcmFt
ZSogbV9wYXJlbnQ7CkBAIC04NSw3ICs5OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgRnJhbWUqIG1fcHJldmlvdXNTaWJsaW5nOwogICAgICAgICBSZWZQdHI8RnJhbWU+IG1fZmly
c3RDaGlsZDsKICAgICAgICAgRnJhbWUqIG1fbGFzdENoaWxkOwotICAgICAgICB1bnNpZ25lZCBt
X2NoaWxkQ291bnQ7CisgICAgICAgIG11dGFibGUgdW5zaWduZWQgbV9zY29wZWRDaGlsZENvdW50
OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmMGVjNGJlMDc2ZWM5
NGY2YzY5YTQxMDA5ZmZkMmRkZGI4ZjlkN2VmLi4yNTU4YTI1NGYxYzdjYjU5OTljMWFmMjg1MTJk
NWIzZGQxY2FiNWFhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDItMjIgIE1PUklUQSBI
YWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgVGhpcyB0ZXN0IGNoZWNrcyBz
ZWxlY3QgYXR0cmlidXRlIG9mIGNvbnRlbnQgZWxlbWVudCBpcyB2YWxpZC4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY1NTk1CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvaWZy
YW1lLXNoYWRvdy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9pZnJhbWUtc2hhZG93Lmh0bWw6IEFkZGVkLgorCiAyMDEyLTAyLTIwICBEYXZpZCBCYXJ0b24g
IDxkYmFydG9uQG1hdGhzY3JpYmUuY29tPgogCiAgICAgICAgIFJlbmRlck1hdGhNTFJvdzo6YmFz
ZWxpbmVQb3NpdGlvbigpIG9ubHkgaWYgbGluZVBvc2l0aW9uTW9kZSA9PSBQb3NpdGlvbk9uQ29u
dGFpbmluZ0xpbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pZnJh
bWUtc2hhZG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9pZnJh
bWUtc2hhZG93LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNTc2ZDE2YjEzZWU5YzJlNzFkZTA5
YzBmNTg3ZjdkMGJkNDE2ODc1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L2lmcmFtZS1zaGFkb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMjMgQEAKK1Ro
aXMgdGVzdCBlbnN1cmVzIHRoYXQgaWZyYW1lIGluc2lkZSBzaGFkb3cgaXNuJ3QgdmlzaWJsZSBm
cm9tIHRoZSBob3N0IGRvY3VtZW50LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyB3aW5kb3cubGVuZ3RoIGlzIDQKK1BBU1MgaTBieW5hbWUubGVuZ3RoIGlzIDEKK1BBU1Mg
aTAgaXMgaTBieW5hbWVbMF0uY29udGVudFdpbmRvdworUEFTUyBpMS5sZW5ndGggaXMgMgorUEFT
UyB3aW5kb3cubGVuZ3RoIGlzIDQKK1BBU1MgaTJieW5hbWUubGVuZ3RoIGlzIDEKK1BBU1MgaTJi
eW5hbWVbMF0uY29udGVudFdpbmRvdyBpcyBpMgorUEFTUyBpM2J5bmFtZS5sZW5ndGggaXMgMAor
UEFTUyBpMyBpcyB1bmRlZmluZWQKK1BBU1Mgd2luZG93Lmxlbmd0aCBpcyAzCitQQVNTIGRvY3Vt
ZW50WydpMCddIGlzIHVuZGVmaW5lZAorUEFTUyB3aW5kb3cubGVuZ3RoIGlzIDQKK1BBU1MgZG9j
dW1lbnRbJ2kzJ10gaXMgaTNJblNoYWRvdy5jb250ZW50V2luZG93CitQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKyAgIAorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRvdy5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzdkZjRmNjYy
YjlmZmQ1Y2Q4ZjkyN2MzZTViMGE0ZDk0Mzc0NDYxCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbApAQCAtMCwwICsxLDcxIEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHBy
ZSBpZD0iY29uc29sZSI+PC9wcmU+Cis8aWZyYW1lIG5hbWU9ImkwIj48L2lmcmFtZT4KKzxpZnJh
bWUgbmFtZT0iaTEiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJpMSI+PC9pZnJhbWU+Cis8aWZy
YW1lIG5hbWU9ImkyIj48L2lmcmFtZT4KKworPGRpdiBpZD0iaG9zdCI+PC9kaXY+CisKKzxzY3Jp
cHQ+CisKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3QgZW5zdXJlcyB0aGF0IGlmcmFtZSBpbnNpZGUg
c2hhZG93IGlzbid0IHZpc2libGUgZnJvbSB0aGUgaG9zdCBkb2N1bWVudC4iKTsKKworLy8gQXQg
Zmlyc3QsIGNoZWNrIGlmcmFtZSBpbiB1c3VhbCB3YXkKK3Nob3VsZEJlKCJ3aW5kb3cubGVuZ3Ro
IiwgIjQiKTsKK3ZhciBpMCA9IGRvY3VtZW50WyJpMCJdOwordmFyIGkwYnluYW1lID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeU5hbWUoImkwIik7CitzaG91bGRCZSgiaTBieW5hbWUubGVuZ3RoIiwg
IjEiKTsKK3Nob3VsZEJlKCJpMCIsICJpMGJ5bmFtZVswXS5jb250ZW50V2luZG93Iik7CisKK3Zh
ciBpMSA9IGRvY3VtZW50WyJpMSJdOwordmFyIGkyYnluYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeU5hbWUoImkwIik7CitzaG91bGRCZSgiaTEubGVuZ3RoIiwgIjIiKTsKKworLy8gVGhlbiBB
ZGRpbmcgc29tZSBpZnJhbWVzIGludG8gYSBzaGFkb3cuCisKK3ZhciBob3N0ID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImhvc3QiKTsKK3ZhciBzaGFkb3cgPSBuZXcgV2ViS2l0U2hhZG93Um9v
dChob3N0KTsKK3ZhciBpMkluU2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1l
Iik7CitpMkluU2hhZG93LnNldEF0dHJpYnV0ZSgibmFtZSIsICJpMiIpOworc2hhZG93LmFwcGVu
ZENoaWxkKGkySW5TaGFkb3cpOworCit2YXIgaTNJblNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImlmcmFtZSIpOworaTNJblNoYWRvdy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAiaTMiKTsK
K3NoYWRvdy5hcHBlbmRDaGlsZChpM0luU2hhZG93KTsKKworc2hvdWxkQmUoIndpbmRvdy5sZW5n
dGgiLCAiNCIpOworCit2YXIgaTIgPSBkb2N1bWVudFsiaTIiXTsKK3ZhciBpMmJ5bmFtZSA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKCJpMiIpOworc2hvdWxkQmUoImkyYnluYW1lLmxlbmd0
aCIsICIxIik7CitzaG91bGRCZSgiaTJieW5hbWVbMF0uY29udGVudFdpbmRvdyIsICJpMiIpOwor
Cit2YXIgaTMgPSBkb2N1bWVudFsiaTMiXTsKK3ZhciBpM2J5bmFtZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlOYW1lKCJpMyIpOworc2hvdWxkQmUoImkzYnluYW1lLmxlbmd0aCIsICIwIik7Citz
aG91bGRCZSgiaTMiLCAidW5kZWZpbmVkIik7CisKKy8vIE1vdmluZyBpZnJhbWVzIGFjcm9zcyBz
aGFkb3cgYm91bmRhcnkgdG8gZW5zdXJlCisvLyBUaGF0IHdpbmRvdy5sZW5ndGggYW5kIHByb3Bl
cnR5IGF2YWlsYWJpbGl0eSBhcmUKKy8vIGNvcnJlY3RseSB1cGRhdGVkLgorCitzaGFkb3cuYXBw
ZW5kQ2hpbGQoaTAuZnJhbWVFbGVtZW50KTsKKworc2hvdWxkQmUoIndpbmRvdy5sZW5ndGgiLCAi
MyIpOworc2hvdWxkQmUoImRvY3VtZW50WydpMCddIiwgInVuZGVmaW5lZCIpOworCitkb2N1bWVu
dC5ib2R5LmFwcGVuZENoaWxkKGkzSW5TaGFkb3cpOworc2hvdWxkQmUoIndpbmRvdy5sZW5ndGgi
LCAiNCIpOworc2hvdWxkQmUoImRvY3VtZW50WydpMyddIiwgImkzSW5TaGFkb3cuY29udGVudFdp
bmRvdyIpOworCis8L3NjcmlwdD4KKworPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128347</attachid>
            <date>2012-02-22 17:32:30 -0800</date>
            <delta_ts>2012-02-22 20:28:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-65595-20120223103228.patch</filename>
            <type>text/plain</type>
            <size>19801</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4MjY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDVjMmIwMGI5NmIxMjU5
NTI3MjBkNjRkZTkzZGE2NmNmYzBhMDk0My4uNmVlZWM0MzRiNDE5YWUwYjNiNGMyOTRiZGZkM2Ez
YzZkNWFlYTQ4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTAyLTIyICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFRoaXMgdGVzdCBjaGVj
a3Mgc2VsZWN0IGF0dHJpYnV0ZSBvZiBjb250ZW50IGVsZW1lbnQgaXMgdmFsaWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGludHJv
ZHVjZXMgRnJhbWVUcmVlOjpzY29wZWRDaGlsZCgpIGFuZAorICAgICAgICBGcmFtZVRyZWU6OnNj
b3BlZENoaWxkKCksIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBzY29wZS1hd2FyZQorICAgICAgICBm
cmFtZSBsb29rdXAuIFVzaW5nIHRoZXNlLCB0aGUgbmFtZWQgYWNjZXNzb3IgYW5kIHRoZSBpbmRl
eGVkCisgICAgICAgIGFjY2VjY29yIG9uIERvY3VtZW50LCBhbmQgV2luZG93Lmxlbmd0aCBhcmUg
bm93IFRyZWVTY29wZQorICAgICAgICBhd2FyZS4gVGhleSBkb24ndCBjb3VudCBpZnJhbWVzIGlu
IFNoYWRvdyBET00uCisKKyAgICAgICAgVGhpcyBjaGFuZ2UgYWxzbyByZW1vdmVzIEZyYW1lVHJl
ZTo6bV9jaGlsZENvdW50IHNpbmNlCisgICAgICAgIEZyYW1lOjpjaGlsZENvdW50KCkgaXMgbm8g
bG9uZ2VyIGluIHRoZSBob3QKKyAgICAgICAgcGF0aC4gbV9zY29wZWRDaGlsZENvdW50IGlzIGFk
ZGVkIGluc3RlYWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFk
b3cuaHRtbAorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y2hpbGRGcmFtZUdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpp
bmRleEdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVy
dHlTbG90KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2spOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrKToKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6
Omxlbmd0aCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZTo6aW5TY29wZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBwYWdlL0ZyYW1l
Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZyYW1lKToKKyAgICAgICAgKiBwYWdl
L0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmFjdHVhbGx5QXBw
ZW5kQ2hpbGQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpyZW1vdmVDaGlsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OnNjb3BlZENoaWxkKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpzY29wZWRDaGlsZENvdW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6Y2hpbGRDb3VudCk6CisgICAgICAgICogcGFnZS9G
cmFtZVRyZWUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRnJhbWVUcmVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6RnJhbWVUcmVlKToKKwogMjAxMi0wMi0yMCAgUmF5
bW9uZCBMaXUgIDxyYXltb25kLmxpdUBpbnRlbC5jb20+CiAKICAgICAgICAgSGF2ZSB0aGUgRHlu
YW1pY3NDb21wcmVzc29yTm9kZSBzdXBwb3J0IG11bHRpLWNoYW5uZWwgZGF0YQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGJhZjgw
ZDM2MDMwZjA1N2IxZWFiOGJmYjFmZjljY2ZkYjZhMjA5YjguLjBiYTI1OWU3NmQyODM3MDZkZGY2
NWE3NmEzOWUzMThhN2NiOWQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTk5LDEyICs5OSwxMiBAQCBKU1ZhbHVlIG5vbkNh
Y2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZQogCiBzdGF0aWMgSlNWYWx1ZSBjaGlsZEZyYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQog
ewotICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oYXNPYmpl
Y3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKGlkZW50aWZpZXJU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2luZG93KCkpOworICAgIHJldHVybiB0
b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+
aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKS0+ZG9tV2luZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBp
bmRleEdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgc2xvdEJhc2UsIHVuc2lnbmVkIGlu
ZGV4KQogewotICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NV2luZG93Kj4o
YXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkKGluZGV4
KS0+ZG9tV2luZG93KCkpOworICAgIHJldHVybiB0b0pTKGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9N
V2luZG93Kj4oYXNPYmplY3Qoc2xvdEJhc2UpKS0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNj
b3BlZENoaWxkKGluZGV4KS0+ZG9tV2luZG93KCkpOwogfQogCiBzdGF0aWMgSlNWYWx1ZSBuYW1l
ZEl0ZW1HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eU5hbWUpCkBAIC0yMjAsNyArMjIwLDcgQEAgYm9vbCBKU0RPTVdpbmRv
dzo6Z2V0T3duUHJvcGVydHlTbG90KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGkKICAgICAvLyBuYW1pbmcgZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGgg
d2luZG93IHByb3BlcnRpZXMgdGhhdAogICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2lu
Y2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNlLCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1v
eiB3YXkuCi0gICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGls
ZChpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhp
c09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkKGlkZW50aWZpZXJU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbSh0
aGlzT2JqZWN0LCBjaGlsZEZyYW1lR2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQpAQCAtMjQ0LDcgKzI0NCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xv
dChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpCiAgICAgLy8gYWxs
b3cgd2luZG93WzFdIG9yIHBhcmVudFsxXSBldGMuICgjNTY5ODMpCiAgICAgYm9vbCBvazsKICAg
ICB1bnNpZ25lZCBpID0gcHJvcGVydHlOYW1lLnRvQXJyYXlJbmRleChvayk7Ci0gICAgaWYgKG9r
ICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGRDb3VudCgp
KSB7CisgICAgaWYgKG9rICYmIGkgPCB0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUo
KS0+c2NvcGVkQ2hpbGRDb3VudCgpKSB7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhp
c09iamVjdCwgaSwgaW5kZXhHZXR0ZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CkBA
IC0zMTAsNyArMzEwLDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAvLyBuYW1pbmcg
ZnJhbWVzIHRoaW5ncyB0aGF0IGNvbmZsaWN0IHdpdGggd2luZG93IHByb3BlcnRpZXMgdGhhdAog
ICAgIC8vIGFyZSBpbiBNb3ogYnV0IG5vdCBJRS4gU2luY2Ugd2UgaGF2ZSBzb21lIG9mIHRoZXNl
LCB3ZSBoYXZlIHRvIGRvCiAgICAgLy8gaXQgdGhlIE1veiB3YXkuCi0gICAgaWYgKHRoaXNPYmpl
Y3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpIHsKKyAgICBpZiAodGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgp
LT50cmVlKCktPnNjb3BlZENoaWxkKGlkZW50aWZpZXJUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKSkgewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0
b20odGhpc09iamVjdCwgY2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0
RGVzY3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtKTsKQEAgLTMxOSw3ICszMTksNyBAQCBib29sIEpTRE9NV2lu
ZG93OjpnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgIAogICAgIGJvb2wgb2s7CiAgICAgdW5zaWduZWQgaSA9IHByb3BlcnR5
TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAmJiBpIDwgdGhpc09iamVjdC0+aW1w
bCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkQ291bnQoKSkgeworICAgIGlmIChvayAmJiBpIDwg
dGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQoKSkg
ewogICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdDsKICAgICAgICAgc2xvdC5zZXRDdXN0b21JbmRl
eCh0aGlzT2JqZWN0LCBpLCBpbmRleEdldHRlcik7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0RGVz
Y3JpcHRvcihzbG90LmdldFZhbHVlKGV4ZWMsIHByb3BlcnR5TmFtZSksIFJlYWRPbmx5IHwgRG9u
dERlbGV0ZSB8IERvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGZiNzYyOGViN2NmYTg4MmMy
NjQxYzMwM2QyNDI1YjYzNTIzZjFmNjYuLmNiYWUxMTMwMGU4YThmMWY5ZDg4YTFhMDMyMjc4Yzdj
OGIwMWQ0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTVdpbmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNDc2LDcgKzQ3Niw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6aW5kZXhlZFByb3BlcnR5R2V0dGVyKHVpbnQzMl90IGlu
ZGV4LCBjb25zdCB2CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5vdEhhbmRsZWRC
eUludGVyY2VwdG9yKCk7CiAKLSAgICBGcmFtZSogY2hpbGQgPSBmcmFtZS0+dHJlZSgpLT5jaGls
ZChpbmRleCk7CisgICAgRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+c2NvcGVkQ2hpbGQo
aW5kZXgpOwogICAgIGlmIChjaGlsZCkKICAgICAgICAgcmV0dXJuIHRvVjgoY2hpbGQtPmRvbVdp
bmRvdygpKTsKIApAQCAtNDk5LDcgKzQ5OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtCiAK
ICAgICAvLyBTZWFyY2ggc3ViLWZyYW1lcy4KICAgICBBdG9taWNTdHJpbmcgcHJvcE5hbWUgPSB2
OFN0cmluZ1RvQXRvbWljV2ViQ29yZVN0cmluZyhuYW1lKTsKLSAgICBGcmFtZSogY2hpbGQgPSBm
cmFtZS0+dHJlZSgpLT5jaGlsZChwcm9wTmFtZSk7CisgICAgRnJhbWUqIGNoaWxkID0gZnJhbWUt
PnRyZWUoKS0+c2NvcGVkQ2hpbGQocHJvcE5hbWUpOwogICAgIGlmIChjaGlsZCkKICAgICAgICAg
cmV0dXJuIHRvVjgoY2hpbGQtPmRvbVdpbmRvdygpKTsKIApAQCAtNTU2LDE0ICs1NTYsMTUgQEAg
Ym9vbCBWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0
PiBob3N0LCB2ODo6TG9jYWw8djg6OlYKICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIG5hbWVPZlByb3RvUHJvcGVydHksICgiX19wcm90b19fIikpOwogCiAgICAgICAg
IFN0cmluZyBuYW1lID0gdG9XZWJDb3JlU3RyaW5nKGtleSk7CisgICAgICAgIEZyYW1lKiBjaGls
ZEZyYW1lID0gdGFyZ2V0LT50cmVlKCktPnNjb3BlZENoaWxkKG5hbWUpOwogICAgICAgICAvLyBO
b3RpY2UgdGhhdCB3ZSBjYW4ndCBjYWxsIEhhc1JlYWxOYW1lZFByb3BlcnR5IGZvciBBQ0NFU1Nf
SEFTCiAgICAgICAgIC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBnZW5lcmF0ZSBpbmZpbml0ZSByZWN1
cnNpb24uCi0gICAgICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfSEFTICYmIHRhcmdldC0+dHJl
ZSgpLT5jaGlsZChuYW1lKSkKKyAgICAgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19IQVMgJiYg
Y2hpbGRGcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAvLyBXZSBuZWVk
IHRvIGV4cGxpY2l0bHkgY29tcGFyZSBhZ2FpbnN0IG5hbWVPZlByb3RvUHJvcGVydHkgYmVjYXVz
ZQogICAgICAgICAvLyBWOCdzIEpTT2JqZWN0OjpMb2NhbExvb2t1cCBmaW5kcyBfX3Byb3RvX18g
YmVmb3JlCiAgICAgICAgIC8vIGludGVyY2VwdG9ycyBhbmQgZXZlbiB3aGVuIF9fcHJvdG9fXyBp
c24ndCBhICJyZWFsIG5hbWVkIHByb3BlcnR5Ii4KLSAgICAgICAgaWYgKHR5cGUgPT0gdjg6OkFD
Q0VTU19HRVQgJiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKG5hbWUpICYmICFob3N0LT5IYXNSZWFs
TmFtZWRQcm9wZXJ0eShrZXktPlRvU3RyaW5nKCkpICYmIG5hbWUgIT0gbmFtZU9mUHJvdG9Qcm9w
ZXJ0eSkKKyAgICAgICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19HRVQgJiYgY2hpbGRGcmFtZSAm
JiAhaG9zdC0+SGFzUmVhbE5hbWVkUHJvcGVydHkoa2V5LT5Ub1N0cmluZygpKSAmJiBuYW1lICE9
IG5hbWVPZlByb3RvUHJvcGVydHkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
QEAgLTU4MywxMiArNTg0LDEzIEBAIGJvb2wgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNo
ZWNrKHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBob3N0LCB1aW50MzJfdCBpbmRlCiAgICAgRnJhbWUq
IHRhcmdldCA9IHRhcmdldFdpbmRvdy0+ZnJhbWUoKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIEZyYW1lKiBjaGlsZEZyYW1lID0gIHRhcmdldC0+dHJlZSgp
LT5zY29wZWRDaGlsZChpbmRleCk7CiAKICAgICAvLyBOb3RpY2UgdGhhdCB3ZSBjYW4ndCBjYWxs
IEhhc1JlYWxOYW1lZFByb3BlcnR5IGZvciBBQ0NFU1NfSEFTCiAgICAgLy8gYmVjYXVzZSB0aGF0
IHdvdWxkIGdlbmVyYXRlIGluZmluaXRlIHJlY3Vyc2lvbi4KLSAgICBpZiAodHlwZSA9PSB2ODo6
QUNDRVNTX0hBUyAmJiB0YXJnZXQtPnRyZWUoKS0+Y2hpbGQoaW5kZXgpKQorICAgIGlmICh0eXBl
ID09IHY4OjpBQ0NFU1NfSEFTICYmIGNoaWxkRnJhbWUpCiAgICAgICAgIHJldHVybiB0cnVlOwot
ICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfR0VUICYmIHRhcmdldC0+dHJlZSgpLT5jaGlsZChp
bmRleCkgJiYgIWhvc3QtPkhhc1JlYWxJbmRleGVkUHJvcGVydHkoaW5kZXgpKQorICAgIGlmICh0
eXBlID09IHY4OjpBQ0NFU1NfR0VUICYmIGNoaWxkRnJhbWUgJiYgIWhvc3QtPkhhc1JlYWxJbmRl
eGVkUHJvcGVydHkoaW5kZXgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIHJldHVybiBW
OEJpbmRpbmdTZWN1cml0eTo6Y2FuQWNjZXNzRnJhbWUoVjhCaW5kaW5nU3RhdGU6Ok9ubHkoKSwg
dGFyZ2V0LCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNTQxM2JkYmU2
MjVhMmNiYTI0MmU2MjZkYzc0MTFhOWNlNmYzNDEyMi4uMjk3YzlhZjExMTZlODc0ZWI4NTNhOTE3
N2JkYzUwZjhkMmFjNzFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTIwNiw3
ICsxMjA2LDcgQEAgdW5zaWduZWQgRE9NV2luZG93OjpsZW5ndGgoKSBjb25zdAogICAgIGlmICgh
aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIG1fZnJhbWUtPnRyZWUoKS0+Y2hpbGRDb3VudCgpOworICAgIHJldHVybiBtX2ZyYW1l
LT50cmVlKCktPnNjb3BlZENoaWxkQ291bnQoKTsKIH0KIAogU3RyaW5nIERPTVdpbmRvdzo6bmFt
ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDU3NWU3MzY2MjBiZWE1ZDhhMjdjYTJh
NmU5MDRmMjlmODI5NWU2MDEuLmI1NTNmOWU4ODE0OWE5ZTE3ZDQxN2I0NjA5ZjQwMmE4ODljMTQ4
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0yMjksNiArMjI5LDE1IEBAIEZyYW1lOjp+RnJh
bWUoKQogICAgIH0KIH0KIAorYm9vbCBGcmFtZTo6aW5TY29wZShUcmVlU2NvcGUqIHNjb3BlKSBj
b25zdAoreworICAgIEFTU0VSVChzY29wZSk7CisgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50KiBv
d25lciA9IGRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpOworICAgIC8vIFNjb3BpbmcgdGVzdCBz
aG91bGQgYmUgZG9uZSBvbmx5IGZvciBjaGlsZCBmcmFtZXMuCisgICAgQVNTRVJUKG93bmVyKTsK
KyAgICByZXR1cm4gb3duZXItPnRyZWVTY29wZSgpID09IHNjb3BlOworfQorCiB2b2lkIEZyYW1l
OjphZGREZXN0cnVjdGlvbk9ic2VydmVyKEZyYW1lRGVzdHJ1Y3Rpb25PYnNlcnZlciogb2JzZXJ2
ZXIpCiB7CiAgICAgbV9kZXN0cnVjdGlvbk9ic2VydmVycy5hZGQob2JzZXJ2ZXIpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9G
cmFtZS5oCmluZGV4IGE3YWM2MTlmMzIyODNlNDMwYzYxMGVlM2FiZWM2NTRlM2Y0ZGE4NWQuLmIx
OGY2NDAyOWIzYWE0MjFiMTNjNDMxYjMxMDQwOWQ2YjAzNzQyMGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgK
QEAgLTc0LDYgKzc0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFRpbGVkQmFj
a2luZ1N0b3JlQ2xpZW50IHsgfTsKICNlbmRpZgogCisgICAgY2xhc3MgVHJlZVNjb3BlOworCiAg
ICAgY2xhc3MgRnJhbWUgOiBwdWJsaWMgUmVmQ291bnRlZDxGcmFtZT4sIHB1YmxpYyBUaWxlZEJh
Y2tpbmdTdG9yZUNsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxGcmFtZT4gY3JlYXRlKFBhZ2UqLCBIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBGcmFtZUxvYWRl
ckNsaWVudCopOwpAQCAtMTIzLDYgKzEyNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXRJc0Rpc2Nvbm5lY3RlZChib29sKTsKICAgICAgICAgYm9vbCBleGNsdWRlRnJv
bVRleHRTZWFyY2goKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRFeGNsdWRlRnJvbVRleHRTZWFy
Y2goYm9vbCk7CisgICAgICAgIGJvb2wgaW5TY29wZShUcmVlU2NvcGUqKSBjb25zdDsKIAogICAg
ICAgICB2b2lkIGluamVjdFVzZXJTY3JpcHRzKFVzZXJTY3JpcHRJbmplY3Rpb25UaW1lKTsKICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5kZXggZmE0OTgyYzliZWE1OWMzZmY0
MzExODlhMTYwMGYyYmM1N2E3M2VlOS4uY2VkNjIwMDcyZmNiY2QyOGY5YTk4OTlhYjlmOWQxMTM4
Zjg5MGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApAQCAtMTAzLDcgKzEwMyw3IEBA
IHZvaWQgRnJhbWVUcmVlOjphY3R1YWxseUFwcGVuZENoaWxkKFBhc3NSZWZQdHI8RnJhbWU+IGNo
aWxkKQogICAgIH0gZWxzZQogICAgICAgICBtX2ZpcnN0Q2hpbGQgPSBjaGlsZDsKIAotICAgIG1f
Y2hpbGRDb3VudCsrOworICAgIG1fc2NvcGVkQ2hpbGRDb3VudCA9IGludmFsaWRDb3VudDsKIAog
ICAgIEFTU0VSVCghbV9sYXN0Q2hpbGQtPnRyZWUoKS0+bV9uZXh0U2libGluZyk7CiB9CkBAIC0x
MjUsNyArMTI1LDcgQEAgdm9pZCBGcmFtZVRyZWU6OnJlbW92ZUNoaWxkKEZyYW1lKiBjaGlsZCkK
ICAgICBjaGlsZC0+dHJlZSgpLT5tX3ByZXZpb3VzU2libGluZyA9IDA7CiAgICAgY2hpbGQtPnRy
ZWUoKS0+bV9uZXh0U2libGluZyA9IDA7CiAKLSAgICBtX2NoaWxkQ291bnQtLTsKKyAgICBtX3Nj
b3BlZENoaWxkQ291bnQgPSBpbnZhbGlkQ291bnQ7CiB9CiAKIEF0b21pY1N0cmluZyBGcmFtZVRy
ZWU6OnVuaXF1ZUNoaWxkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHJlcXVlc3RlZE5hbWUpIGNv
bnN0CkBAIC0xNzcsNiArMTc3LDY0IEBAIEF0b21pY1N0cmluZyBGcmFtZVRyZWU6OnVuaXF1ZUNo
aWxkTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHJlcXVlc3RlZE5hbWUpIGNvbnN0CiAgICAgcmV0
dXJuIEF0b21pY1N0cmluZyhuYW1lKTsKIH0KIAoraW5saW5lIEZyYW1lKiBGcmFtZVRyZWU6OnNj
b3BlZENoaWxkKHVuc2lnbmVkIGluZGV4LCBUcmVlU2NvcGUqIHNjb3BlKSBjb25zdAoreworICAg
IHVuc2lnbmVkIHNjb3BlZEluZGV4ID0gMDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJz
dENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkp
IHsKKyAgICAgICAgaWYgKHJlc3VsdC0+aW5TY29wZShzY29wZSkpIHsKKyAgICAgICAgICAgIGlm
IChzY29wZWRJbmRleCA9PSBpbmRleCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgICAgICAgICAgc2NvcGVkSW5kZXgrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biAwOworfQorCitpbmxpbmUgRnJhbWUqIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lLCBUcmVlU2NvcGUqIHNjb3BlKSBjb25zdAoreworICAgIGZvciAoRnJh
bWUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+dHJlZSgpLT5u
ZXh0U2libGluZygpKQorICAgICAgICBpZiAoY2hpbGQtPnRyZWUoKS0+dW5pcXVlTmFtZSgpID09
IG5hbWUgJiYgY2hpbGQtPmluU2NvcGUoc2NvcGUpKQorICAgICAgICAgICAgcmV0dXJuIGNoaWxk
OworICAgIHJldHVybiAwOworfQorCitpbmxpbmUgdW5zaWduZWQgRnJhbWVUcmVlOjpzY29wZWRD
aGlsZENvdW50KFRyZWVTY29wZSogc2NvcGUpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgc2NvcGVk
Q291bnQgPSAwOworICAgIGZvciAoRnJhbWUqIHJlc3VsdCA9IGZpcnN0Q2hpbGQoKTsgcmVzdWx0
OyByZXN1bHQgPSByZXN1bHQtPnRyZWUoKS0+bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAo
cmVzdWx0LT5pblNjb3BlKHNjb3BlKSkKKyAgICAgICAgICAgIHNjb3BlZENvdW50Kys7CisgICAg
fQorCisgICAgcmV0dXJuIHNjb3BlZENvdW50OworfQorCitGcmFtZSogRnJhbWVUcmVlOjpzY29w
ZWRDaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gc2NvcGVkQ2hpbGQo
aW5kZXgsIG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpKTsKK30KKworRnJhbWUqIEZyYW1lVHJlZTo6
c2NvcGVkQ2hpbGQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAoreworICAgIHJldHVy
biBzY29wZWRDaGlsZChuYW1lLCBtX3RoaXNGcmFtZS0+ZG9jdW1lbnQoKSk7Cit9CisKK3Vuc2ln
bmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudCgpIGNvbnN0Cit7CisgICAgaWYgKG1fc2Nv
cGVkQ2hpbGRDb3VudCA9PSBpbnZhbGlkQ291bnQpCisgICAgICAgIG1fc2NvcGVkQ2hpbGRDb3Vu
dCA9IHNjb3BlZENoaWxkQ291bnQobV90aGlzRnJhbWUtPmRvY3VtZW50KCkpOworICAgIHJldHVy
biBtX3Njb3BlZENoaWxkQ291bnQ7Cit9CisKK3Vuc2lnbmVkIEZyYW1lVHJlZTo6Y2hpbGRDb3Vu
dCgpIGNvbnN0Cit7CisgICAgdW5zaWduZWQgY291bnQgPSAwOworICAgIGZvciAoRnJhbWUqIHJl
c3VsdCA9IGZpcnN0Q2hpbGQoKTsgcmVzdWx0OyByZXN1bHQgPSByZXN1bHQtPnRyZWUoKS0+bmV4
dFNpYmxpbmcoKSkKKyAgICAgICAgKytjb3VudDsKKyAgICByZXR1cm4gY291bnQ7Cit9CisKIEZy
YW1lKiBGcmFtZVRyZWU6OmNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIEZyYW1l
KiByZXN1bHQgPSBmaXJzdENoaWxkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0ZyYW1lVHJlZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAppbmRleCBkODI5
MWY3YjYwNGU5NWQwZDM0NTJjZjg3MjVjZWIxZjViZjI1YWY5Li41ZjllMzE3YTliMzAwNDhkMzk0
OTE0NjQ5Yzc1MmFiMGJjYWE5OGMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lVHJlZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKQEAgLTIwLDIz
ICsyMCwyOCBAQAogI2lmbmRlZiBGcmFtZVRyZWVfaAogI2RlZmluZSBGcmFtZVRyZWVfaAogCisj
aW5jbHVkZSA8d3RmL05vdEZvdW5kLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5n
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNz
IFRyZWVTY29wZTsKIAogICAgIGNsYXNzIEZyYW1lVHJlZSB7CiAgICAgICAgIFdURl9NQUtFX05P
TkNPUFlBQkxFKEZyYW1lVHJlZSk7CiAgICAgcHVibGljOgorICAgICAgICBjb25zdCBzdGF0aWMg
dW5zaWduZWQgaW52YWxpZENvdW50ID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFdURjo6bm90Rm91
bmQpOworCiAgICAgICAgIEZyYW1lVHJlZShGcmFtZSogdGhpc0ZyYW1lLCBGcmFtZSogcGFyZW50
RnJhbWUpIAogICAgICAgICAgICAgOiBtX3RoaXNGcmFtZSh0aGlzRnJhbWUpCiAgICAgICAgICAg
ICAsIG1fcGFyZW50KHBhcmVudEZyYW1lKQogICAgICAgICAgICAgLCBtX3ByZXZpb3VzU2libGlu
ZygwKQogICAgICAgICAgICAgLCBtX2xhc3RDaGlsZCgwKQotICAgICAgICAgICAgLCBtX2NoaWxk
Q291bnQoMCkKKyAgICAgICAgICAgICwgbV9zY29wZWRDaGlsZENvdW50KGludmFsaWRDb3VudCkK
ICAgICAgICAgewogICAgICAgICB9CisKICAgICAgICAgfkZyYW1lVHJlZSgpOwogCiAgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQpAQCAt
NTAsNyArNTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiBwcmV2aW91
c1NpYmxpbmcoKSBjb25zdCB7IHJldHVybiBtX3ByZXZpb3VzU2libGluZzsgfQogICAgICAgICBG
cmFtZSogZmlyc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGlsZC5nZXQoKTsgfQog
ICAgICAgICBGcmFtZSogbGFzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0Q2hpbGQ7IH0K
LSAgICAgICAgdW5zaWduZWQgY2hpbGRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1fY2hpbGRDb3Vu
dDsgfQogCiAgICAgICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgRnJhbWUqIGFuY2VzdG9y
KSBjb25zdDsKICAgICAgICAgRnJhbWUqIHRyYXZlcnNlTmV4dChjb25zdCBGcmFtZSogc3RheVdp
dGhpbiA9IDApIGNvbnN0OwpAQCAtNjUsMTUgKzY5LDI1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgRnJhbWUqIGNoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICAgICAgRnJh
bWUqIGNoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CiAgICAgICAgIEZyYW1l
KiBmaW5kKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVk
IGNoaWxkQ291bnQoKSBjb25zdDsKIAogICAgICAgICBBdG9taWNTdHJpbmcgdW5pcXVlQ2hpbGRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcmVxdWVzdGVkTmFtZSkgY29uc3Q7CiAKICAgICAgICAg
RnJhbWUqIHRvcChib29sIGNoZWNrRm9yRGlzY29ubmVjdGVkRnJhbWUgPSBmYWxzZSkgY29uc3Q7
CiAKKyAgICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAg
ICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7
CisgICAgICAgIHVuc2lnbmVkIHNjb3BlZENoaWxkQ291bnQoKSBjb25zdDsKKwogICAgIHByaXZh
dGU6CiAgICAgICAgIEZyYW1lKiBkZWVwTGFzdENoaWxkKCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
YWN0dWFsbHlBcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPik7CiAKKyAgICAgICAgYm9vbCBz
Y29wZWRCeShUcmVlU2NvcGUqKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIHNjb3BlZENoaWxkKHVu
c2lnbmVkIGluZGV4LCBUcmVlU2NvcGUqKSBjb25zdDsKKyAgICAgICAgRnJhbWUqIHNjb3BlZENo
aWxkKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSwgVHJlZVNjb3BlKikgY29uc3Q7CisgICAgICAg
IHVuc2lnbmVkIHNjb3BlZENoaWxkQ291bnQoVHJlZVNjb3BlKikgY29uc3Q7CisKICAgICAgICAg
RnJhbWUqIG1fdGhpc0ZyYW1lOwogCiAgICAgICAgIEZyYW1lKiBtX3BhcmVudDsKQEAgLTg1LDcg
Kzk5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGcmFtZSogbV9wcmV2aW91c1Np
Ymxpbmc7CiAgICAgICAgIFJlZlB0cjxGcmFtZT4gbV9maXJzdENoaWxkOwogICAgICAgICBGcmFt
ZSogbV9sYXN0Q2hpbGQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fY2hpbGRDb3VudDsKKyAgICAgICAg
bXV0YWJsZSB1bnNpZ25lZCBtX3Njb3BlZENoaWxkQ291bnQ7CiAgICAgfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGYwZWM0YmUwNzZlYzk0ZjZjNjlhNDEwMDlmZmQyZGRkYjhm
OWQ3ZWYuLjI1NThhMjU0ZjFjN2NiNTk5OWMxYWYyODUxMmQ1YjNkZDFjYWI1YWEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMyBAQAorMjAxMi0wMi0yMiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xl
LmNvbT4KKworICAgICAgICBUaGlzIHRlc3QgY2hlY2tzIHNlbGVjdCBhdHRyaWJ1dGUgb2YgY29u
dGVudCBlbGVtZW50IGlzIHZhbGlkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NjU1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9pZnJhbWUtc2hhZG93LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbDog
QWRkZWQuCisKIDIwMTItMDItMjAgIERhdmlkIEJhcnRvbiAgPGRiYXJ0b25AbWF0aHNjcmliZS5j
b20+CiAKICAgICAgICAgUmVuZGVyTWF0aE1MUm93OjpiYXNlbGluZVBvc2l0aW9uKCkgb25seSBp
ZiBsaW5lUG9zaXRpb25Nb2RlID09IFBvc2l0aW9uT25Db250YWluaW5nTGluZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3ctZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3ctZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjE1NzZkMTZiMTNlZTljMmU3MWRlMDljMGY1ODdmN2QwYmQ0MTY4NzUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRv
dy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMyBAQAorVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBp
ZnJhbWUgaW5zaWRlIHNoYWRvdyBpc24ndCB2aXNpYmxlIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQu
CisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHdpbmRvdy5sZW5ndGggaXMg
NAorUEFTUyBpMGJ5bmFtZS5sZW5ndGggaXMgMQorUEFTUyBpMCBpcyBpMGJ5bmFtZVswXS5jb250
ZW50V2luZG93CitQQVNTIGkxLmxlbmd0aCBpcyAyCitQQVNTIHdpbmRvdy5sZW5ndGggaXMgNAor
UEFTUyBpMmJ5bmFtZS5sZW5ndGggaXMgMQorUEFTUyBpMmJ5bmFtZVswXS5jb250ZW50V2luZG93
IGlzIGkyCitQQVNTIGkzYnluYW1lLmxlbmd0aCBpcyAwCitQQVNTIGkzIGlzIHVuZGVmaW5lZAor
UEFTUyB3aW5kb3cubGVuZ3RoIGlzIDMKK1BBU1MgZG9jdW1lbnRbJ2kwJ10gaXMgdW5kZWZpbmVk
CitQQVNTIHdpbmRvdy5sZW5ndGggaXMgNAorUEFTUyBkb2N1bWVudFsnaTMnXSBpcyBpM0luU2hh
ZG93LmNvbnRlbnRXaW5kb3cKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVT
VCBDT01QTEVURQorICAgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9pZnJhbWUtc2hhZG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1l
LXNoYWRvdy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2RmNGY2NjJiOWZmZDVjZDhmOTI3YzNlNWIwYTRk
OTQzNzQ0NjEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
aWZyYW1lLXNoYWRvdy5odG1sCkBAIC0wLDAgKzEsNzEgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8cHJlIGlkPSJjb25zb2xlIj48L3ByZT4K
KzxpZnJhbWUgbmFtZT0iaTAiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1lPSJpMSI+PC9pZnJhbWU+
Cis8aWZyYW1lIG5hbWU9ImkxIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iaTIiPjwvaWZyYW1l
PgorCis8ZGl2IGlkPSJob3N0Ij48L2Rpdj4KKworPHNjcmlwdD4KKworZGVzY3JpcHRpb24oIlRo
aXMgdGVzdCBlbnN1cmVzIHRoYXQgaWZyYW1lIGluc2lkZSBzaGFkb3cgaXNuJ3QgdmlzaWJsZSBm
cm9tIHRoZSBob3N0IGRvY3VtZW50LiIpOworCisvLyBBdCBmaXJzdCwgY2hlY2sgaWZyYW1lIGlu
IHVzdWFsIHdheQorc2hvdWxkQmUoIndpbmRvdy5sZW5ndGgiLCAiNCIpOwordmFyIGkwID0gZG9j
dW1lbnRbImkwIl07Cit2YXIgaTBieW5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgi
aTAiKTsKK3Nob3VsZEJlKCJpMGJ5bmFtZS5sZW5ndGgiLCAiMSIpOworc2hvdWxkQmUoImkwIiwg
ImkwYnluYW1lWzBdLmNvbnRlbnRXaW5kb3ciKTsKKwordmFyIGkxID0gZG9jdW1lbnRbImkxIl07
Cit2YXIgaTJieW5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5TmFtZSgiaTAiKTsKK3Nob3Vs
ZEJlKCJpMS5sZW5ndGgiLCAiMiIpOworCisvLyBUaGVuIEFkZGluZyBzb21lIGlmcmFtZXMgaW50
byBhIHNoYWRvdy4KKwordmFyIGhvc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaG9zdCIp
OwordmFyIHNoYWRvdyA9IG5ldyBXZWJLaXRTaGFkb3dSb290KGhvc3QpOwordmFyIGkySW5TaGFk
b3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKK2kySW5TaGFkb3cuc2V0QXR0
cmlidXRlKCJuYW1lIiwgImkyIik7CitzaGFkb3cuYXBwZW5kQ2hpbGQoaTJJblNoYWRvdyk7CisK
K3ZhciBpM0luU2hhZG93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7CitpM0lu
U2hhZG93LnNldEF0dHJpYnV0ZSgibmFtZSIsICJpMyIpOworc2hhZG93LmFwcGVuZENoaWxkKGkz
SW5TaGFkb3cpOworCitzaG91bGRCZSgid2luZG93Lmxlbmd0aCIsICI0Iik7CisKK3ZhciBpMiA9
IGRvY3VtZW50WyJpMiJdOwordmFyIGkyYnluYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5h
bWUoImkyIik7CitzaG91bGRCZSgiaTJieW5hbWUubGVuZ3RoIiwgIjEiKTsKK3Nob3VsZEJlKCJp
MmJ5bmFtZVswXS5jb250ZW50V2luZG93IiwgImkyIik7CisKK3ZhciBpMyA9IGRvY3VtZW50WyJp
MyJdOwordmFyIGkzYnluYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoImkzIik7Citz
aG91bGRCZSgiaTNieW5hbWUubGVuZ3RoIiwgIjAiKTsKK3Nob3VsZEJlKCJpMyIsICJ1bmRlZmlu
ZWQiKTsKKworLy8gTW92aW5nIGlmcmFtZXMgYWNyb3NzIHNoYWRvdyBib3VuZGFyeSB0byBlbnN1
cmUKKy8vIFRoYXQgd2luZG93Lmxlbmd0aCBhbmQgcHJvcGVydHkgYXZhaWxhYmlsaXR5IGFyZQor
Ly8gY29ycmVjdGx5IHVwZGF0ZWQuCisKK3NoYWRvdy5hcHBlbmRDaGlsZChpMC5mcmFtZUVsZW1l
bnQpOworCitzaG91bGRCZSgid2luZG93Lmxlbmd0aCIsICIzIik7CitzaG91bGRCZSgiZG9jdW1l
bnRbJ2kwJ10iLCAidW5kZWZpbmVkIik7CisKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaTNJ
blNoYWRvdyk7CitzaG91bGRCZSgid2luZG93Lmxlbmd0aCIsICI0Iik7CitzaG91bGRCZSgiZG9j
dW1lbnRbJ2kzJ10iLCAiaTNJblNoYWRvdy5jb250ZW50V2luZG93Iik7CisKKzwvc2NyaXB0Pgor
Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128377</attachid>
            <date>2012-02-22 20:28:24 -0800</date>
            <delta_ts>2012-02-23 16:54:25 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-65595-20120223132822.patch</filename>
            <type>text/plain</type>
            <size>20499</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2YwNzU2ZjYzMGZiZDlm
NzdjOTE3NjQ0OWFjYjMzMTIzNzQ2MjEyNC4uODlmOWIyZjAxMDBkOTRmZTgyYTE5NjQ1ZWIzMTNm
YjVlMWY2NWViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0IEBACiAyMDEyLTAyLTIyICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgogCisgICAgICAgIFRoaXMgdGVzdCBjaGVj
a3Mgc2VsZWN0IGF0dHJpYnV0ZSBvZiBjb250ZW50IGVsZW1lbnQgaXMgdmFsaWQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTU5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KKworICAgICAgICBUaGlzIGNoYW5nZSBpbnRy
b2R1Y2VzIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQoKSBhbmQKKyAgICAgICAgRnJhbWVUcmVlOjpz
Y29wZWRDaGlsZCgpLCB3aGljaCBjYW4gYmUgdXNlZCBmb3Igc2NvcGUtYXdhcmUKKyAgICAgICAg
ZnJhbWUgbG9va3VwLiBVc2luZyB0aGVzZSwgdGhlIG5hbWVkIGFjY2Vzc29yIGFuZCB0aGUgaW5k
ZXhlZAorICAgICAgICBhY2NlY2NvciBvbiBEb2N1bWVudCwgYW5kIFdpbmRvdy5sZW5ndGggYXJl
IG5vdyBUcmVlU2NvcGUKKyAgICAgICAgYXdhcmUuIFRoZXkgZG9uJ3QgY291bnQgaWZyYW1lcyBp
biBTaGFkb3cgRE9NLgorCisgICAgICAgIFRoaXMgY2hhbmdlIGFsc28gcmVtb3ZlcyBGcmFtZVRy
ZWU6Om1fY2hpbGRDb3VudCBzaW5jZQorICAgICAgICBGcmFtZTo6Y2hpbGRDb3VudCgpIGlzIG5v
IGxvbmdlciBpbiB0aGUgaG90CisgICAgICAgIHBhdGguIG1fc2NvcGVkQ2hpbGRDb3VudCBpcyBh
ZGRlZCBpbnN0ZWFkLgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL3NoYWRvdy9pZnJhbWUtc2hh
ZG93Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
aW5kZXhHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01XaW5kb3c6OmdldE93blByb3Bl
cnR5U2xvdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRQcm9wZXJ0eUdldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6bmFtZWRTZWN1cml0eUNoZWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVjayk6Cisg
ICAgICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpsZW5ndGgpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWU6OmluU2NvcGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9GcmFt
ZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChGcmFtZSk6CisgICAgICAgICogcGFn
ZS9GcmFtZVRyZWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjphY3R1YWxseUFw
cGVuZENoaWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6cmVtb3ZlQ2hpbGQpOgor
ICAgICAgICAoV2ViQ29yZTo6RnJhbWVUcmVlOjpzY29wZWRDaGlsZCk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OmNoaWxkQ291bnQpOgorICAgICAgICAqIHBhZ2Uv
RnJhbWVUcmVlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKEZyYW1lVHJlZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVRyZWU6OkZyYW1lVHJlZSk6CisKKzIwMTItMDItMjIgIE1P
UklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKICAgICAgICAgQWRkaW5nIGEgU2hh
ZG93Um9vdCB0byBpbWFnZS1iYWNrZWQgZWxlbWVudCBjYXVzZXMgYSBjcmFzaAogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg4NzgKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LmV4cC5pbgppbmRleCAwZDI4NzcxZDkwNzYzNmE2NDZiY2U5ZTViNTkyYzRiZTg0YWNlMTIyLi5m
ZjFmMGUxODYyODg4MGQ5YzExNWI1YzkwOWZhZGQzYzE5MGNlNDNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgpAQCAtMTQ3Niw2ICsxNDc2LDcgQEAgX19aTks3V2ViQ29yZTlGcmFtZVRyZWUyMHRyYXZl
cnNlTmV4dFdpdGhXcmFwRWIKIF9fWk5LN1dlYkNvcmU5RnJhbWVUcmVlMjR0cmF2ZXJzZVByZXZp
b3VzV2l0aFdyYXBFYgogX19aTks3V2ViQ29yZTlGcmFtZVRyZWU0ZmluZEVSS04zV1RGMTJBdG9t
aWNTdHJpbmdFCiBfX1pOSzdXZWJDb3JlOUZyYW1lVHJlZTZwYXJlbnRFYgorX19aTks3V2ViQ29y
ZTlGcmFtZVRyZWUxMGNoaWxkQ291bnRFdgogX19aTks3V2ViQ29yZTlGcmFtZVZpZXcxMW5lZWRz
TGF5b3V0RXYKIF9fWk5LN1dlYkNvcmU5RnJhbWVWaWV3MTNpc1RyYW5zcGFyZW50RXYKIF9fWk5L
N1dlYkNvcmU5RnJhbWVWaWV3MTNwYWludEJlaGF2aW9yRXYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBiYWY4MGQzNjAzMGYwNTdi
MWVhYjhiZmIxZmY5Y2NmZGI2YTIwOWI4Li4wYmEyNTllNzZkMjgzNzA2ZGRmNjVhNzZhMzllMzE4
YTdjYjlkMTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCkBAIC05OSwxMiArOTksMTIgQEAgSlNWYWx1ZSBub25DYWNoaW5nU3RhdGlj
RnVuY3Rpb25HZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWUK
IAogc3RhdGljIEpTVmFsdWUgY2hpbGRGcmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgc2xvdEJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1
cm4gdG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNl
KSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSktPmRvbVdpbmRvdygpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBz
dGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJh
bWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSktPmRvbVdpbmRvdygpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgaW5kZXhHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHNsb3RCYXNlLCB1bnNpZ25lZCBpbmRleCkKIHsKLSAg
ICByZXR1cm4gdG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGFzT2JqZWN0KHNs
b3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5jaGlsZChpbmRleCktPmRvbVdpbmRv
dygpKTsKKyAgICByZXR1cm4gdG9KUyhleGVjLCBzdGF0aWNfY2FzdDxKU0RPTVdpbmRvdyo+KGFz
T2JqZWN0KHNsb3RCYXNlKSktPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChp
bmRleCktPmRvbVdpbmRvdygpKTsKIH0KIAogc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBzbG90QmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHlOYW1lKQpAQCAtMjIwLDcgKzIyMCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blBy
b3BlcnR5U2xvdChKU0NlbGwqIGNlbGwsIEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSWRlbnRpCiAg
ICAgLy8gbmFtaW5nIGZyYW1lcyB0aGluZ3MgdGhhdCBjb25mbGljdCB3aXRoIHdpbmRvdyBwcm9w
ZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUgaW4gTW96IGJ1dCBub3QgSUUuIFNpbmNlIHdlIGhhdmUg
c29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0byBkbwogICAgIC8vIGl0IHRoZSBNb3ogd2F5LgotICAg
IGlmICh0aGlzT2JqZWN0LT5pbXBsKCktPmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaWRlbnRpZmll
clRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmlt
cGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSkpIHsKICAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
Y2hpbGRGcmFtZUdldHRlcik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTI0NCw3
ICsyNDQsNyBAQCBib29sIEpTRE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDZWxsKiBj
ZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aQogICAgIC8vIGFsbG93IHdpbmRvd1sx
XSBvciBwYXJlbnRbMV0gZXRjLiAoIzU2OTgzKQogICAgIGJvb2wgb2s7CiAgICAgdW5zaWduZWQg
aSA9IHByb3BlcnR5TmFtZS50b0FycmF5SW5kZXgob2spOwotICAgIGlmIChvayAmJiBpIDwgdGhp
c09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPmNoaWxkQ291bnQoKSkgeworICAgIGlm
IChvayAmJiBpIDwgdGhpc09iamVjdC0+aW1wbCgpLT5mcmFtZSgpLT50cmVlKCktPnNjb3BlZENo
aWxkQ291bnQoKSkgewogICAgICAgICBzbG90LnNldEN1c3RvbUluZGV4KHRoaXNPYmplY3QsIGks
IGluZGV4R2V0dGVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzEwLDcgKzMx
MCw3IEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgLy8gbmFtaW5nIGZyYW1lcyB0aGlu
Z3MgdGhhdCBjb25mbGljdCB3aXRoIHdpbmRvdyBwcm9wZXJ0aWVzIHRoYXQKICAgICAvLyBhcmUg
aW4gTW96IGJ1dCBub3QgSUUuIFNpbmNlIHdlIGhhdmUgc29tZSBvZiB0aGVzZSwgd2UgaGF2ZSB0
byBkbwogICAgIC8vIGl0IHRoZSBNb3ogd2F5LgotICAgIGlmICh0aGlzT2JqZWN0LT5pbXBsKCkt
PmZyYW1lKCktPnRyZWUoKS0+Y2hpbGQoaWRlbnRpZmllclRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKSB7CisgICAgaWYgKHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5z
Y29wZWRDaGlsZChpZGVudGlmaWVyVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpIHsKICAg
ICAgICAgUHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmpl
Y3QsIGNoaWxkRnJhbWVHZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Io
c2xvdC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8IERvbnREZWxldGUg
fCBEb250RW51bSk7CkBAIC0zMTksNyArMzE5LDcgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICAKICAgICBib29sIG9rOwogICAgIHVuc2lnbmVkIGkgPSBwcm9wZXJ0eU5hbWUudG9BcnJh
eUluZGV4KG9rKTsKLSAgICBpZiAob2sgJiYgaSA8IHRoaXNPYmplY3QtPmltcGwoKS0+ZnJhbWUo
KS0+dHJlZSgpLT5jaGlsZENvdW50KCkpIHsKKyAgICBpZiAob2sgJiYgaSA8IHRoaXNPYmplY3Qt
PmltcGwoKS0+ZnJhbWUoKS0+dHJlZSgpLT5zY29wZWRDaGlsZENvdW50KCkpIHsKICAgICAgICAg
UHJvcGVydHlTbG90IHNsb3Q7CiAgICAgICAgIHNsb3Quc2V0Q3VzdG9tSW5kZXgodGhpc09iamVj
dCwgaSwgaW5kZXhHZXR0ZXIpOwogICAgICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3Ioc2xv
dC5nZXRWYWx1ZShleGVjLCBwcm9wZXJ0eU5hbWUpLCBSZWFkT25seSB8IERvbnREZWxldGUgfCBE
b250RW51bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RE9NV2luZG93Q3VzdG9tLmNwcAppbmRleCBmYjc2MjhlYjdjZmE4ODJjMjY0MWMzMDNkMjQy
NWI2MzUyM2YxZjY2Li5jYmFlMTEzMDBlOGE4ZjFmOWQ4OGExYTAzMjI3OGM3YzhiMDFkNDExIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhET01XaW5kb3c6OmluZGV4ZWRQcm9wZXJ0eUdldHRlcih1aW50MzJfdCBpbmRleCwgY29uc3Qg
dgogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRv
cigpOwogCi0gICAgRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUoKS0+Y2hpbGQoaW5kZXgpOwor
ICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNjb3BlZENoaWxkKGluZGV4KTsKICAg
ICBpZiAoY2hpbGQpCiAgICAgICAgIHJldHVybiB0b1Y4KGNoaWxkLT5kb21XaW5kb3coKSk7CiAK
QEAgLTQ5OSw3ICs0OTksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6Om5h
bWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogCiAgICAgLy8gU2Vh
cmNoIHN1Yi1mcmFtZXMuCiAgICAgQXRvbWljU3RyaW5nIHByb3BOYW1lID0gdjhTdHJpbmdUb0F0
b21pY1dlYkNvcmVTdHJpbmcobmFtZSk7Ci0gICAgRnJhbWUqIGNoaWxkID0gZnJhbWUtPnRyZWUo
KS0+Y2hpbGQocHJvcE5hbWUpOworICAgIEZyYW1lKiBjaGlsZCA9IGZyYW1lLT50cmVlKCktPnNj
b3BlZENoaWxkKHByb3BOYW1lKTsKICAgICBpZiAoY2hpbGQpCiAgICAgICAgIHJldHVybiB0b1Y4
KGNoaWxkLT5kb21XaW5kb3coKSk7CiAKQEAgLTU1NiwxNCArNTU2LDE1IEBAIGJvb2wgVjhET01X
aW5kb3c6Om5hbWVkU2VjdXJpdHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6
OkxvY2FsPHY4OjpWCiAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBu
YW1lT2ZQcm90b1Byb3BlcnR5LCAoIl9fcHJvdG9fXyIpKTsKIAogICAgICAgICBTdHJpbmcgbmFt
ZSA9IHRvV2ViQ29yZVN0cmluZyhrZXkpOworICAgICAgICBGcmFtZSogY2hpbGRGcmFtZSA9IHRh
cmdldC0+dHJlZSgpLT5zY29wZWRDaGlsZChuYW1lKTsKICAgICAgICAgLy8gTm90aWNlIHRoYXQg
d2UgY2FuJ3QgY2FsbCBIYXNSZWFsTmFtZWRQcm9wZXJ0eSBmb3IgQUNDRVNTX0hBUwogICAgICAg
ICAvLyBiZWNhdXNlIHRoYXQgd291bGQgZ2VuZXJhdGUgaW5maW5pdGUgcmVjdXJzaW9uLgotICAg
ICAgICBpZiAodHlwZSA9PSB2ODo6QUNDRVNTX0hBUyAmJiB0YXJnZXQtPnRyZWUoKS0+Y2hpbGQo
bmFtZSkpCisgICAgICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfSEFTICYmIGNoaWxkRnJhbWUp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgLy8gV2UgbmVlZCB0byBleHBsaWNp
dGx5IGNvbXBhcmUgYWdhaW5zdCBuYW1lT2ZQcm90b1Byb3BlcnR5IGJlY2F1c2UKICAgICAgICAg
Ly8gVjgncyBKU09iamVjdDo6TG9jYWxMb29rdXAgZmluZHMgX19wcm90b19fIGJlZm9yZQogICAg
ICAgICAvLyBpbnRlcmNlcHRvcnMgYW5kIGV2ZW4gd2hlbiBfX3Byb3RvX18gaXNuJ3QgYSAicmVh
bCBuYW1lZCBwcm9wZXJ0eSIuCi0gICAgICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfR0VUICYm
IHRhcmdldC0+dHJlZSgpLT5jaGlsZChuYW1lKSAmJiAhaG9zdC0+SGFzUmVhbE5hbWVkUHJvcGVy
dHkoa2V5LT5Ub1N0cmluZygpKSAmJiBuYW1lICE9IG5hbWVPZlByb3RvUHJvcGVydHkpCisgICAg
ICAgIGlmICh0eXBlID09IHY4OjpBQ0NFU1NfR0VUICYmIGNoaWxkRnJhbWUgJiYgIWhvc3QtPkhh
c1JlYWxOYW1lZFByb3BlcnR5KGtleS0+VG9TdHJpbmcoKSkgJiYgbmFtZSAhPSBuYW1lT2ZQcm90
b1Byb3BlcnR5KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC01ODMsMTIg
KzU4NCwxMyBAQCBib29sIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVjayh2ODo6TG9j
YWw8djg6Ok9iamVjdD4gaG9zdCwgdWludDMyX3QgaW5kZQogICAgIEZyYW1lKiB0YXJnZXQgPSB0
YXJnZXRXaW5kb3ctPmZyYW1lKCk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBGcmFtZSogY2hpbGRGcmFtZSA9ICB0YXJnZXQtPnRyZWUoKS0+c2NvcGVkQ2hp
bGQoaW5kZXgpOwogCiAgICAgLy8gTm90aWNlIHRoYXQgd2UgY2FuJ3QgY2FsbCBIYXNSZWFsTmFt
ZWRQcm9wZXJ0eSBmb3IgQUNDRVNTX0hBUwogICAgIC8vIGJlY2F1c2UgdGhhdCB3b3VsZCBnZW5l
cmF0ZSBpbmZpbml0ZSByZWN1cnNpb24uCi0gICAgaWYgKHR5cGUgPT0gdjg6OkFDQ0VTU19IQVMg
JiYgdGFyZ2V0LT50cmVlKCktPmNoaWxkKGluZGV4KSkKKyAgICBpZiAodHlwZSA9PSB2ODo6QUND
RVNTX0hBUyAmJiBjaGlsZEZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBpZiAodHlw
ZSA9PSB2ODo6QUNDRVNTX0dFVCAmJiB0YXJnZXQtPnRyZWUoKS0+Y2hpbGQoaW5kZXgpICYmICFo
b3N0LT5IYXNSZWFsSW5kZXhlZFByb3BlcnR5KGluZGV4KSkKKyAgICBpZiAodHlwZSA9PSB2ODo6
QUNDRVNTX0dFVCAmJiBjaGlsZEZyYW1lICYmICFob3N0LT5IYXNSZWFsSW5kZXhlZFByb3BlcnR5
KGluZGV4KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gVjhCaW5kaW5nU2Vj
dXJpdHk6OmNhbkFjY2Vzc0ZyYW1lKFY4QmluZGluZ1N0YXRlOjpPbmx5KCksIHRhcmdldCwgZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IDQ1ZDk2MGJmMjI3Nzk2MDk1MTEx
MWM1YWJhZWM4ZTE0ODUwYjAxN2MuLmIyOTdhY2FjNTRlMGFlNzBlNTI2NWUwMWI2MjczN2RlM2Fi
YTNiZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTExMzgsNyArMTEzOCw3IEBA
IHVuc2lnbmVkIERPTVdpbmRvdzo6bGVuZ3RoKCkgY29uc3QKICAgICBpZiAoIWlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX2Zy
YW1lLT50cmVlKCktPmNoaWxkQ291bnQoKTsKKyAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLT5z
Y29wZWRDaGlsZENvdW50KCk7CiB9CiAKIFN0cmluZyBET01XaW5kb3c6Om5hbWUoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAppbmRleCA5MzQ0ZTEyNDdiNWFhODdlYmY2ZjBkODcyZDFiODg4ZGU2
OGI3MDJiLi5lZTNjMDY4Yzg1MWZmMjk2NjU4NzJjYWRiYTMzMzRiMWUzMWM0Nzc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmNwcApAQCAtMjI5LDYgKzIyOSwxNSBAQCBGcmFtZTo6fkZyYW1lKCkKICAgICB9
CiB9CiAKK2Jvb2wgRnJhbWU6OmluU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkgY29uc3QKK3sKKyAg
ICBBU1NFUlQoc2NvcGUpOworICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXIgPSBkb2N1
bWVudCgpLT5vd25lckVsZW1lbnQoKTsKKyAgICAvLyBTY29waW5nIHRlc3Qgc2hvdWxkIGJlIGRv
bmUgb25seSBmb3IgY2hpbGQgZnJhbWVzLgorICAgIEFTU0VSVChvd25lcik7CisgICAgcmV0dXJu
IG93bmVyLT50cmVlU2NvcGUoKSA9PSBzY29wZTsKK30KKwogdm9pZCBGcmFtZTo6YWRkRGVzdHJ1
Y3Rpb25PYnNlcnZlcihGcmFtZURlc3RydWN0aW9uT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAg
IG1fZGVzdHJ1Y3Rpb25PYnNlcnZlcnMuYWRkKG9ic2VydmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaAppbmRl
eCAyODMyY2IwNTM1MWZhM2IzYzE4NzEyYzM3ZjRkOTcyZDhhZDgzN2RjLi5lMDZjMGRmYzdmMzI4
YTUxMWY4ZjIzZjZjZWU3MzQ5YmRiNjMyN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC03NCw2ICs3
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBUaWxlZEJhY2tpbmdTdG9yZUNs
aWVudCB7IH07CiAjZW5kaWYKIAorICAgIGNsYXNzIFRyZWVTY29wZTsKKwogICAgIGNsYXNzIEZy
YW1lIDogcHVibGljIFJlZkNvdW50ZWQ8RnJhbWU+LCBwdWJsaWMgVGlsZWRCYWNraW5nU3RvcmVD
bGllbnQgewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RnJhbWU+IGNy
ZWF0ZShQYWdlKiwgSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgRnJhbWVMb2FkZXJDbGllbnQqKTsK
QEAgLTEyMyw2ICsxMjUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0
SXNEaXNjb25uZWN0ZWQoYm9vbCk7CiAgICAgICAgIGJvb2wgZXhjbHVkZUZyb21UZXh0U2VhcmNo
KCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0RXhjbHVkZUZyb21UZXh0U2VhcmNoKGJvb2wpOwor
ICAgICAgICBib29sIGluU2NvcGUoVHJlZVNjb3BlKikgY29uc3Q7CiAKICAgICAgICAgdm9pZCBp
bmplY3RVc2VyU2NyaXB0cyhVc2VyU2NyaXB0SW5qZWN0aW9uVGltZSk7CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IGZhNDk4MmM5YmVhNTljM2ZmNDMxMTg5YTE2MDBm
MmJjNTdhNzNlZTkuLmNlZDYyMDA3MmZjYmNkMjhmOWE5ODk5YWI5ZjlkMTEzOGY4OTBiMmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEZyYW1l
VHJlZTo6YWN0dWFsbHlBcHBlbmRDaGlsZChQYXNzUmVmUHRyPEZyYW1lPiBjaGlsZCkKICAgICB9
IGVsc2UKICAgICAgICAgbV9maXJzdENoaWxkID0gY2hpbGQ7CiAKLSAgICBtX2NoaWxkQ291bnQr
KzsKKyAgICBtX3Njb3BlZENoaWxkQ291bnQgPSBpbnZhbGlkQ291bnQ7CiAKICAgICBBU1NFUlQo
IW1fbGFzdENoaWxkLT50cmVlKCktPm1fbmV4dFNpYmxpbmcpOwogfQpAQCAtMTI1LDcgKzEyNSw3
IEBAIHZvaWQgRnJhbWVUcmVlOjpyZW1vdmVDaGlsZChGcmFtZSogY2hpbGQpCiAgICAgY2hpbGQt
PnRyZWUoKS0+bV9wcmV2aW91c1NpYmxpbmcgPSAwOwogICAgIGNoaWxkLT50cmVlKCktPm1fbmV4
dFNpYmxpbmcgPSAwOwogCi0gICAgbV9jaGlsZENvdW50LS07CisgICAgbV9zY29wZWRDaGlsZENv
dW50ID0gaW52YWxpZENvdW50OwogfQogCiBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVD
aGlsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdApAQCAtMTc3
LDYgKzE3Nyw2NCBAQCBBdG9taWNTdHJpbmcgRnJhbWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29u
c3QgQXRvbWljU3RyaW5nJiByZXF1ZXN0ZWROYW1lKSBjb25zdAogICAgIHJldHVybiBBdG9taWNT
dHJpbmcobmFtZSk7CiB9CiAKK2lubGluZSBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1
bnNpZ25lZCBpbmRleCwgVHJlZVNjb3BlKiBzY29wZSkgY29uc3QKK3sKKyAgICB1bnNpZ25lZCBz
Y29wZWRJbmRleCA9IDA7CisgICAgZm9yIChGcmFtZSogcmVzdWx0ID0gZmlyc3RDaGlsZCgpOyBy
ZXN1bHQ7IHJlc3VsdCA9IHJlc3VsdC0+dHJlZSgpLT5uZXh0U2libGluZygpKSB7CisgICAgICAg
IGlmIChyZXN1bHQtPmluU2NvcGUoc2NvcGUpKSB7CisgICAgICAgICAgICBpZiAoc2NvcGVkSW5k
ZXggPT0gaW5kZXgpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAg
IHNjb3BlZEluZGV4Kys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKwor
aW5saW5lIEZyYW1lKiBGcmFtZVRyZWU6OnNjb3BlZENoaWxkKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSwgVHJlZVNjb3BlKiBzY29wZSkgY29uc3QKK3sKKyAgICBmb3IgKEZyYW1lKiBjaGlsZCA9
IGZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmco
KSkKKyAgICAgICAgaWYgKGNoaWxkLT50cmVlKCktPnVuaXF1ZU5hbWUoKSA9PSBuYW1lICYmIGNo
aWxkLT5pblNjb3BlKHNjb3BlKSkKKyAgICAgICAgICAgIHJldHVybiBjaGlsZDsKKyAgICByZXR1
cm4gMDsKK30KKworaW5saW5lIHVuc2lnbmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudChU
cmVlU2NvcGUqIHNjb3BlKSBjb25zdAoreworICAgIHVuc2lnbmVkIHNjb3BlZENvdW50ID0gMDsK
KyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJzdENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0g
cmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgaWYgKHJlc3VsdC0+aW5T
Y29wZShzY29wZSkpCisgICAgICAgICAgICBzY29wZWRDb3VudCsrOworICAgIH0KKworICAgIHJl
dHVybiBzY29wZWRDb3VudDsKK30KKworRnJhbWUqIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGQodW5z
aWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHNjb3BlZENoaWxkKGluZGV4LCBtX3Ro
aXNGcmFtZS0+ZG9jdW1lbnQoKSk7Cit9CisKK0ZyYW1lKiBGcmFtZVRyZWU6OnNjb3BlZENoaWxk
KGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3QKK3sKKyAgICByZXR1cm4gc2NvcGVkQ2hp
bGQobmFtZSwgbV90aGlzRnJhbWUtPmRvY3VtZW50KCkpOworfQorCit1bnNpZ25lZCBGcmFtZVRy
ZWU6OnNjb3BlZENoaWxkQ291bnQoKSBjb25zdAoreworICAgIGlmIChtX3Njb3BlZENoaWxkQ291
bnQgPT0gaW52YWxpZENvdW50KQorICAgICAgICBtX3Njb3BlZENoaWxkQ291bnQgPSBzY29wZWRD
aGlsZENvdW50KG1fdGhpc0ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICByZXR1cm4gbV9zY29wZWRD
aGlsZENvdW50OworfQorCit1bnNpZ25lZCBGcmFtZVRyZWU6OmNoaWxkQ291bnQoKSBjb25zdAor
eworICAgIHVuc2lnbmVkIGNvdW50ID0gMDsKKyAgICBmb3IgKEZyYW1lKiByZXN1bHQgPSBmaXJz
dENoaWxkKCk7IHJlc3VsdDsgcmVzdWx0ID0gcmVzdWx0LT50cmVlKCktPm5leHRTaWJsaW5nKCkp
CisgICAgICAgICsrY291bnQ7CisgICAgcmV0dXJuIGNvdW50OworfQorCiBGcmFtZSogRnJhbWVU
cmVlOjpjaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBGcmFtZSogcmVzdWx0ID0g
Zmlyc3RDaGlsZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggZDgyOTFmN2I2MDRlOTVk
MGQzNDUyY2Y4NzI1Y2ViMWY1YmYyNWFmOS4uNWY5ZTMxN2E5YjMwMDQ4ZDM5NDkxNDY0OWM3NTJh
YjBiY2FhOThjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0yMCwyMyArMjAsMjggQEAK
ICNpZm5kZWYgRnJhbWVUcmVlX2gKICNkZWZpbmUgRnJhbWVUcmVlX2gKIAorI2luY2x1ZGUgPHd0
Zi9Ob3RGb3VuZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBUcmVlU2NvcGU7
CiAKICAgICBjbGFzcyBGcmFtZVRyZWUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShG
cmFtZVRyZWUpOwogICAgIHB1YmxpYzoKKyAgICAgICAgY29uc3Qgc3RhdGljIHVuc2lnbmVkIGlu
dmFsaWRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihXVEY6Om5vdEZvdW5kKTsKKwogICAg
ICAgICBGcmFtZVRyZWUoRnJhbWUqIHRoaXNGcmFtZSwgRnJhbWUqIHBhcmVudEZyYW1lKSAKICAg
ICAgICAgICAgIDogbV90aGlzRnJhbWUodGhpc0ZyYW1lKQogICAgICAgICAgICAgLCBtX3BhcmVu
dChwYXJlbnRGcmFtZSkKICAgICAgICAgICAgICwgbV9wcmV2aW91c1NpYmxpbmcoMCkKICAgICAg
ICAgICAgICwgbV9sYXN0Q2hpbGQoMCkKLSAgICAgICAgICAgICwgbV9jaGlsZENvdW50KDApCisg
ICAgICAgICAgICAsIG1fc2NvcGVkQ2hpbGRDb3VudChpbnZhbGlkQ291bnQpCiAgICAgICAgIHsK
ICAgICAgICAgfQorCiAgICAgICAgIH5GcmFtZVRyZWUoKTsKIAogICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KQEAgLTUwLDcgKzU1LDYg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBGcmFtZSogcHJldmlvdXNTaWJsaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmV2aW91c1NpYmxpbmc7IH0KICAgICAgICAgRnJhbWUqIGZpcnN0
Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2ZpcnN0Q2hpbGQuZ2V0KCk7IH0KICAgICAgICAgRnJh
bWUqIGxhc3RDaGlsZCgpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdENoaWxkOyB9Ci0gICAgICAgIHVu
c2lnbmVkIGNoaWxkQ291bnQoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkQ291bnQ7IH0KIAogICAg
ICAgICBib29sIGlzRGVzY2VuZGFudE9mKGNvbnN0IEZyYW1lKiBhbmNlc3RvcikgY29uc3Q7CiAg
ICAgICAgIEZyYW1lKiB0cmF2ZXJzZU5leHQoY29uc3QgRnJhbWUqIHN0YXlXaXRoaW4gPSAwKSBj
b25zdDsKQEAgLTY1LDE1ICs2OSwyNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZy
YW1lKiBjaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgICAgIEZyYW1lKiBjaGlsZChj
b25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OwogICAgICAgICBGcmFtZSogZmluZChjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBjaGlsZENvdW50
KCkgY29uc3Q7CiAKICAgICAgICAgQXRvbWljU3RyaW5nIHVuaXF1ZUNoaWxkTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIHJlcXVlc3RlZE5hbWUpIGNvbnN0OwogCiAgICAgICAgIEZyYW1lKiB0b3Ao
Ym9vbCBjaGVja0ZvckRpc2Nvbm5lY3RlZEZyYW1lID0gZmFsc2UpIGNvbnN0OwogCisgICAgICAg
IEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgICAgIEZyYW1l
KiBzY29wZWRDaGlsZChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0OworICAgICAgICB1
bnNpZ25lZCBzY29wZWRDaGlsZENvdW50KCkgY29uc3Q7CisKICAgICBwcml2YXRlOgogICAgICAg
ICBGcmFtZSogZGVlcExhc3RDaGlsZCgpIGNvbnN0OwogICAgICAgICB2b2lkIGFjdHVhbGx5QXBw
ZW5kQ2hpbGQoUGFzc1JlZlB0cjxGcmFtZT4pOwogCisgICAgICAgIGJvb2wgc2NvcGVkQnkoVHJl
ZVNjb3BlKikgY29uc3Q7CisgICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRl
eCwgVHJlZVNjb3BlKikgY29uc3Q7CisgICAgICAgIEZyYW1lKiBzY29wZWRDaGlsZChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUsIFRyZWVTY29wZSopIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBz
Y29wZWRDaGlsZENvdW50KFRyZWVTY29wZSopIGNvbnN0OworCiAgICAgICAgIEZyYW1lKiBtX3Ro
aXNGcmFtZTsKIAogICAgICAgICBGcmFtZSogbV9wYXJlbnQ7CkBAIC04NSw3ICs5OSw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWUqIG1fcHJldmlvdXNTaWJsaW5nOwogICAg
ICAgICBSZWZQdHI8RnJhbWU+IG1fZmlyc3RDaGlsZDsKICAgICAgICAgRnJhbWUqIG1fbGFzdENo
aWxkOwotICAgICAgICB1bnNpZ25lZCBtX2NoaWxkQ291bnQ7CisgICAgICAgIG11dGFibGUgdW5z
aWduZWQgbV9zY29wZWRDaGlsZENvdW50OwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCBiMDhiZGIwNjM5YTk2OTliY2MwYmE5MzE2Y2VkY2YyZmU2YWJmYzMzLi40NjYw
MzA0YjJlODg4ODZjYmM0MjZiZGMxMWJhZDU2NDQzYWQ3M2YzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTUg
QEAKIDIwMTItMDItMjIgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKKyAg
ICAgICAgVGhpcyB0ZXN0IGNoZWNrcyBzZWxlY3QgYXR0cmlidXRlIG9mIGNvbnRlbnQgZWxlbWVu
dCBpcyB2YWxpZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTY1NTk1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgorCisgICAg
ICAgICogZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3ctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRvdy5odG1sOiBBZGRlZC4KKwor
MjAxMi0wMi0yMiAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKwogICAgICAg
ICBBZGRpbmcgYSBTaGFkb3dSb290IHRvIGltYWdlLWJhY2tlZCBlbGVtZW50IGNhdXNlcyBhIGNy
YXNoCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODg3
OAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvaWZyYW1lLXNoYWRv
dy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTU3NmQxNmIxM2VlOWMyZTcxZGUwOWMwZjU4N2Y3
ZDBiZDQxNjg3NQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9pZnJhbWUtc2hhZG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIzIEBACitUaGlzIHRlc3Qg
ZW5zdXJlcyB0aGF0IGlmcmFtZSBpbnNpZGUgc2hhZG93IGlzbid0IHZpc2libGUgZnJvbSB0aGUg
aG9zdCBkb2N1bWVudC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgd2lu
ZG93Lmxlbmd0aCBpcyA0CitQQVNTIGkwYnluYW1lLmxlbmd0aCBpcyAxCitQQVNTIGkwIGlzIGkw
YnluYW1lWzBdLmNvbnRlbnRXaW5kb3cKK1BBU1MgaTEubGVuZ3RoIGlzIDIKK1BBU1Mgd2luZG93
Lmxlbmd0aCBpcyA0CitQQVNTIGkyYnluYW1lLmxlbmd0aCBpcyAxCitQQVNTIGkyYnluYW1lWzBd
LmNvbnRlbnRXaW5kb3cgaXMgaTIKK1BBU1MgaTNieW5hbWUubGVuZ3RoIGlzIDAKK1BBU1MgaTMg
aXMgdW5kZWZpbmVkCitQQVNTIHdpbmRvdy5sZW5ndGggaXMgMworUEFTUyBkb2N1bWVudFsnaTAn
XSBpcyB1bmRlZmluZWQKK1BBU1Mgd2luZG93Lmxlbmd0aCBpcyA0CitQQVNTIGRvY3VtZW50Wydp
MyddIGlzIGkzSW5TaGFkb3cuY29udGVudFdpbmRvdworUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisgICAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L2lmcmFtZS1zaGFkb3cuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9pZnJhbWUtc2hhZG93Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTc3ZGY0ZjY2MmI5ZmZkNWNk
OGY5MjdjM2U1YjBhNGQ5NDM3NDQ2MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL3NoYWRvdy9pZnJhbWUtc2hhZG93Lmh0bWwKQEAgLTAsMCArMSw3MSBAQAorPCFET0NU
WVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImNv
bnNvbGUiPjwvcHJlPgorPGlmcmFtZSBuYW1lPSJpMCI+PC9pZnJhbWU+Cis8aWZyYW1lIG5hbWU9
ImkxIj48L2lmcmFtZT4KKzxpZnJhbWUgbmFtZT0iaTEiPjwvaWZyYW1lPgorPGlmcmFtZSBuYW1l
PSJpMiI+PC9pZnJhbWU+CisKKzxkaXYgaWQ9Imhvc3QiPjwvZGl2PgorCis8c2NyaXB0PgorCitk
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0IGVuc3VyZXMgdGhhdCBpZnJhbWUgaW5zaWRlIHNoYWRvdyBp
c24ndCB2aXNpYmxlIGZyb20gdGhlIGhvc3QgZG9jdW1lbnQuIik7CisKKy8vIEF0IGZpcnN0LCBj
aGVjayBpZnJhbWUgaW4gdXN1YWwgd2F5CitzaG91bGRCZSgid2luZG93Lmxlbmd0aCIsICI0Iik7
Cit2YXIgaTAgPSBkb2N1bWVudFsiaTAiXTsKK3ZhciBpMGJ5bmFtZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlOYW1lKCJpMCIpOworc2hvdWxkQmUoImkwYnluYW1lLmxlbmd0aCIsICIxIik7Citz
aG91bGRCZSgiaTAiLCAiaTBieW5hbWVbMF0uY29udGVudFdpbmRvdyIpOworCit2YXIgaTEgPSBk
b2N1bWVudFsiaTEiXTsKK3ZhciBpMmJ5bmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1l
KCJpMCIpOworc2hvdWxkQmUoImkxLmxlbmd0aCIsICIyIik7CisKKy8vIFRoZW4gQWRkaW5nIHNv
bWUgaWZyYW1lcyBpbnRvIGEgc2hhZG93LgorCit2YXIgaG9zdCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJob3N0Iik7Cit2YXIgc2hhZG93ID0gbmV3IFdlYktpdFNoYWRvd1Jvb3QoaG9zdCk7
Cit2YXIgaTJJblNoYWRvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpOworaTJJ
blNoYWRvdy5zZXRBdHRyaWJ1dGUoIm5hbWUiLCAiaTIiKTsKK3NoYWRvdy5hcHBlbmRDaGlsZChp
MkluU2hhZG93KTsKKwordmFyIGkzSW5TaGFkb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJp
ZnJhbWUiKTsKK2kzSW5TaGFkb3cuc2V0QXR0cmlidXRlKCJuYW1lIiwgImkzIik7CitzaGFkb3cu
YXBwZW5kQ2hpbGQoaTNJblNoYWRvdyk7CisKK3Nob3VsZEJlKCJ3aW5kb3cubGVuZ3RoIiwgIjQi
KTsKKwordmFyIGkyID0gZG9jdW1lbnRbImkyIl07Cit2YXIgaTJieW5hbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5TmFtZSgiaTIiKTsKK3Nob3VsZEJlKCJpMmJ5bmFtZS5sZW5ndGgiLCAiMSIp
Oworc2hvdWxkQmUoImkyYnluYW1lWzBdLmNvbnRlbnRXaW5kb3ciLCAiaTIiKTsKKwordmFyIGkz
ID0gZG9jdW1lbnRbImkzIl07Cit2YXIgaTNieW5hbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
TmFtZSgiaTMiKTsKK3Nob3VsZEJlKCJpM2J5bmFtZS5sZW5ndGgiLCAiMCIpOworc2hvdWxkQmUo
ImkzIiwgInVuZGVmaW5lZCIpOworCisvLyBNb3ZpbmcgaWZyYW1lcyBhY3Jvc3Mgc2hhZG93IGJv
dW5kYXJ5IHRvIGVuc3VyZQorLy8gVGhhdCB3aW5kb3cubGVuZ3RoIGFuZCBwcm9wZXJ0eSBhdmFp
bGFiaWxpdHkgYXJlCisvLyBjb3JyZWN0bHkgdXBkYXRlZC4KKworc2hhZG93LmFwcGVuZENoaWxk
KGkwLmZyYW1lRWxlbWVudCk7CisKK3Nob3VsZEJlKCJ3aW5kb3cubGVuZ3RoIiwgIjMiKTsKK3No
b3VsZEJlKCJkb2N1bWVudFsnaTAnXSIsICJ1bmRlZmluZWQiKTsKKworZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChpM0luU2hhZG93KTsKK3Nob3VsZEJlKCJ3aW5kb3cubGVuZ3RoIiwgIjQiKTsK
K3Nob3VsZEJlKCJkb2N1bWVudFsnaTMnXSIsICJpM0luU2hhZG93LmNvbnRlbnRXaW5kb3ciKTsK
KworPC9zY3JpcHQ+CisKKzxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>