<?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>76693</bug_id>
          
          <creation_ts>2012-01-20 03:20:36 -0800</creation_ts>
          <short_desc>ShadowRoot should inherit from DocumentFragment.</short_desc>
          <delta_ts>2012-02-01 20:21:57 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76354</dependson>
          <blocked>63601</blocked>
    
    <blocked>77511</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Hayato Ito">hayato</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>hayato</cc>
    
    <cc>ojan</cc>
    
    <cc>rolandsteiner</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539381</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-20 03:20:36 -0800</bug_when>
    <thetext>Current implementation is derived from Node. But it should inherit DocumentFragment.
For that, we need to add some missing APIs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540418</commentid>
    <comment_count>1</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-23 01:01:27 -0800</bug_when>
    <thetext>Hmmm - I wonder if it wouldn&apos;t be useful to have a ContainerNode IDL that both DocumentFragment and ShadowRoot (and Element, etc.) could derive from.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540723</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-23 11:53:51 -0800</bug_when>
    <thetext>&gt; Hmmm - I wonder if it wouldn&apos;t be useful to have a ContainerNode IDL that both DocumentFragment and ShadowRoot (and Element, etc.) could derive from.
I don&apos;t expect we can do it because declaring IDL makes it visible from JS. 
Fortunately, there are few  API in DocumentFragment itself.

One specific thing in my mind here is nodeType() value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542130</commentid>
    <comment_count>3</comment_count>
      <attachid>123909</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-25 03:01:38 -0800</bug_when>
    <thetext>Created attachment 123909
Make ShadowRoot inherit DocumentFragment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542134</commentid>
    <comment_count>4</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-25 03:10:16 -0800</bug_when>
    <thetext>I added 76354 as dependency.
In theory, this issue doesn&apos;t depends on 76354. But work-in-progress patch depends on 76354.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542138</commentid>
    <comment_count>5</comment_count>
      <attachid>123910</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-25 03:13:21 -0800</bug_when>
    <thetext>Created attachment 123910
update</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542140</commentid>
    <comment_count>6</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-25 03:23:04 -0800</bug_when>
    <thetext>Ops. I missed this spec. Let me implement this further.

&gt; The nodeType attribute of a ShadowRoot instance must return DOCUMENT_FRAGMENT_NODE. Accordingly, the nodeName attribute of a ShadowRoot instance must return &quot;#document-fragment&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542579</commentid>
    <comment_count>7</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-25 13:29:25 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Ops. I missed this spec. Let me implement this further.
&gt; 
&gt; &gt; The nodeType attribute of a ShadowRoot instance must return DOCUMENT_FRAGMENT_NODE. Accordingly, the nodeName attribute of a ShadowRoot instance must return &quot;#document-fragment&quot;.
Yes, please ;-)
Actually, this can be a bit tricky because we use it to check if the node is ShadowRoot. 
We need some other way to do such a check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542893</commentid>
    <comment_count>8</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-25 23:14:32 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #6)
&gt; &gt; Ops. I missed this spec. Let me implement this further.
&gt; &gt; 
&gt; &gt; &gt; The nodeType attribute of a ShadowRoot instance must return DOCUMENT_FRAGMENT_NODE. Accordingly, the nodeName attribute of a ShadowRoot instance must return &quot;#document-fragment&quot;.
&gt; Yes, please ;-)
&gt; Actually, this can be a bit tricky because we use it to check if the node is ShadowRoot. 
&gt; We need some other way to do such a check.

Yeah, it seems that we have to have CustomGetter which returns &quot;#document-fragment&quot; if we are not touching existing ShadowRoot::nodeName() and ShadowRoot::nodeType().

Is there any way to achieve it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542894</commentid>
    <comment_count>9</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-25 23:19:45 -0800</bug_when>
    <thetext>I am wondering a ShadowRoot is the only exceptional Node in the meaning that internal nodeName() and exposed nodeName() used in binding are different.
Let me know if you have some other examples, which helped us to achieve this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542913</commentid>
    <comment_count>10</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 00:11:11 -0800</bug_when>
    <thetext>I am wondering whether there is some extended attribute like:

  readonly attribute [CustomGetter CustomGetterImplementation=nodeNameForBinding] DOMString nodeName

so that we don&apos;t have to write custom code manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542948</commentid>
    <comment_count>11</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 01:16:23 -0800</bug_when>
    <thetext>I am now implementing CustomGetter for nodeName() and nodeType(). But such changes will be big since we should add files to V8 and JSC and update many build files.

So I&apos;d like to separate the change into two patches:

1. Make ShadowRoot&apos;s IDL inherits DocumentFragment and implements querySelector and querySelectorAll, which doesn&apos;t require updating build files.
2. Implement custom nodeName() and nodeType().

(In reply to comment #10)
&gt; I am wondering whether there is some extended attribute like:
&gt; 
&gt;   readonly attribute [CustomGetter CustomGetterImplementation=nodeNameForBinding] DOMString nodeName
&gt; 
&gt; so that we don&apos;t have to write custom code manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542960</commentid>
    <comment_count>12</comment_count>
      <attachid>124079</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 01:39:48 -0800</bug_when>
    <thetext>Created attachment 124079
Inherits DocumentFragment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542963</commentid>
    <comment_count>13</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 01:42:15 -0800</bug_when>
    <thetext>This is the first patch, simply making ShadowRoot inherit DocumentFragment in IDL and add some tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542966</commentid>
    <comment_count>14</comment_count>
      <attachid>124079</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-26 01:46:06 -0800</bug_when>
    <thetext>Comment on attachment 124079
Inherits DocumentFragment

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

&gt; Source/WebCore/dom/ShadowRoot.idl:32
&gt; -    ] ShadowRoot : Node {
&gt; +    ] ShadowRoot : DocumentFragment {

I take it the WebCore version already inherits from DocumentFragment ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542990</commentid>
    <comment_count>15</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 02:34:33 -0800</bug_when>
    <thetext>Hi Adam,

(In reply to comment #14)
&gt; (From update of attachment 124079 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124079&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.idl:32
&gt; &gt; -    ] ShadowRoot : Node {
&gt; &gt; +    ] ShadowRoot : DocumentFragment {
&gt; 
&gt; I take it the WebCore version already inherits from DocumentFragment ?

No. ShadowRoot&apos;s WebCore doesn&apos;t inherit DocumentFragment yet.
That&apos;s my biggest concern. Could you tell me that we should sync hierarchy of WebCore and IDL?
Although I couldn&apos;t find any LayoutTest failures on this patch, I am afraid there is a potential issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543066</commentid>
    <comment_count>16</comment_count>
      <attachid>124079</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 04:41:14 -0800</bug_when>
    <thetext>Comment on attachment 124079
Inherits DocumentFragment

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

New failing tests:
fast/dom/shadow/shadow-root-js-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543195</commentid>
    <comment_count>17</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-26 09:16:15 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; Hi Adam,
&gt; 
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 124079 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124079&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/dom/ShadowRoot.idl:32
&gt; &gt; &gt; -    ] ShadowRoot : Node {
&gt; &gt; &gt; +    ] ShadowRoot : DocumentFragment {
&gt; &gt; 
&gt; &gt; I take it the WebCore version already inherits from DocumentFragment ?
&gt; 
&gt; No. ShadowRoot&apos;s WebCore doesn&apos;t inherit DocumentFragment yet.
&gt; That&apos;s my biggest concern. Could you tell me that we should sync hierarchy of WebCore and IDL?
&gt; Although I couldn&apos;t find any LayoutTest failures on this patch, I am afraid there is a potential issue.

I don&apos;t think it&apos;s helpful to have IDL and WebCore hierarchies to be out of sync. Why aren&apos;t we starting with making ShadowRoot be a subclass of DocumentFragment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543228</commentid>
    <comment_count>18</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-01-26 10:05:19 -0800</bug_when>
    <thetext>Yeah, you can get a bad cast if the two are out of sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543570</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-26 15:29:52 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; Yeah, you can get a bad cast if the two are out of sync.

Whoa, So this is going to be a big deal than I originally expected. 
Since ShadowRoot is a subclass of TreeScope for its own sake, 
Changing that hierarchy will need certain effort. 

Roland may have some opinion here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543722</commentid>
    <comment_count>20</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-26 18:31:12 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; The nodeType attribute of a ShadowRoot instance must return DOCUMENT_FRAGMENT_NODE. Accordingly, the nodeName attribute of a ShadowRoot instance must return &quot;#document-fragment&quot;.

So I take adding a new SHADOW_ROOT_NODE node type has be vetoed (?).

(In reply to comment #19)
&gt; (In reply to comment #18)
&gt; &gt; Yeah, you can get a bad cast if the two are out of sync.
&gt; 
&gt; Whoa, So this is going to be a big deal than I originally expected. 
&gt; Since ShadowRoot is a subclass of TreeScope for its own sake, 
&gt; Changing that hierarchy will need certain effort. 
&gt; 
&gt; Roland may have some opinion here.

Hm, ad hoc I would say the best approach I can think of would be making DocumentFragment a TreeScope as well - i.e.:

Node
  ContainerNode
    Element
    TreeScope
      Document
      DocumentFragment
        ShadowRoot

IMHO it would be only natural to have getElementById, getElementsByTagName, et al available on DocumentFragment. However, this is certainly not a small change, and means that moving Nodes into/out of a DocumentFragment would require TreeScope fiddling (but then we have to traverse the tree anyway to set/clear the inDocument flag).

Alternatively we could make TreeScope a member rather than a base class, but I think that approach is less elegant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543726</commentid>
    <comment_count>21</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-26 18:43:17 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Yeah, it seems that we have to have CustomGetter which returns &quot;#document-fragment&quot; if we are not touching existing ShadowRoot::nodeName() and ShadowRoot::nodeType().
&gt; 
&gt; Is there any way to achieve it?

Whoa, why can&apos;t we simply change nodeType() and nodeName() to return DOCUMENT_FRAGMENT_NODE and &quot;#document-fragment&quot;, respectively? Internally, we can always simply use isShadowRoot() to discern between ShadowRoot and DocumentFragment. 

Granted, it sucks to have to remove all instances of SHADOW_ROOT_NODE again, but except for a few cases (e.g., Range::insertNode, Document::importNode), SHADOW_ROOT_NODE mostly follows the implementation cases of DOCUMENT_FRAGMENT_NODE anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543807</commentid>
    <comment_count>22</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 21:08:07 -0800</bug_when>
    <thetext>Okay. I realized that we must make ShadowRoot inherit DocumentFragment in WebCore at first.

Roland&apos;s suggestion (DocumentFragment inherits TreeScope) looks goods to me.

(In reply to comment #21)
&gt; (In reply to comment #8)
&gt; &gt; Yeah, it seems that we have to have CustomGetter which returns &quot;#document-fragment&quot; if we are not touching existing ShadowRoot::nodeName() and ShadowRoot::nodeType().
&gt; &gt; 
&gt; &gt; Is there any way to achieve it?
&gt; 
&gt; Whoa, why can&apos;t we simply change nodeType() and nodeName() to return DOCUMENT_FRAGMENT_NODE and &quot;#document-fragment&quot;, respectively? Internally, we can always simply use isShadowRoot() to discern between ShadowRoot and DocumentFragment. 

We can. Although we have to update case/switch statements which uses SHADOW_ROOT_NODE in many places, we can do it.

&gt; 
&gt; Granted, it sucks to have to remove all instances of SHADOW_ROOT_NODE again, but except for a few cases (e.g., Range::insertNode, Document::importNode), SHADOW_ROOT_NODE mostly follows the implementation cases of DOCUMENT_FRAGMENT_NODE anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543851</commentid>
    <comment_count>23</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-26 23:03:16 -0800</bug_when>
    <thetext>I have a couple of questions before I start actual works:

1. DocumentFragment should be &apos;lightweight&apos; according to the spec: http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-B63ED1A3
  If we make DocumentFragment inherit TreeScope, will DocmentFragment be heavyweight? Since TreeScope has some non-lightweight member variables, I am afraid the impact of performance. We must be careful to handle this issue.

2. Are all operations that are permitted on DocumentFragment also applicable to ShadowRoot?
  I think this assumption is implicitly declared once the spec says ShadowRoot&apos;s nodeType is DOCUMENT_FRAGMENT_NODE.

The spec says:
&gt; When a DocumentFragment is inserted into a Document (or indeed any other Node that may take children) the children of the DocumentFragment and not the DocumentFragment itself are inserted into the Node. This makes the DocumentFragment very useful when the user wishes to create nodes that are siblings; the DocumentFragment acts as the parent of these nodes so that the user can use the standard methods from the Node interface, such as Node.insertBefore and Node.appendChild.

  As well as we can insert DocumentFragment into arbitrary Node, we can insert ShadowRoot into arbitrary Node, cannot we?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543867</commentid>
    <comment_count>24</comment_count>
      <attachid>124268</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-27 00:30:38 -0800</bug_when>
    <thetext>Created attachment 124268
WIP. Make ShadowRoot inherit DocumentFragment. Some tests should be rebaselined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543869</commentid>
    <comment_count>25</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-27 00:34:13 -0800</bug_when>
    <thetext>I&apos;ve uploaded the work-in-progress patch of the initial attempt. Most layout tests seems passes. Some tests needs rebaseline.
Please enumerate what should be done further and what issues remain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543876</commentid>
    <comment_count>26</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-27 01:06:00 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; Roland&apos;s suggestion (DocumentFragment inherits TreeScope) looks goods to me.

Thanks, but I think this is a non-trivial change on which definitely should get broader consensus on before proceeding!

As a first step, we&apos;d need to make DocumentFragment inherit from TreeScope. As you write, this makes DocumentFragment &quot;heavier&quot;, and probably is a larger refactoring of its own. For one, DocumentFragment would then implicitly track element IDs, which it currently doesn&apos;t. I don&apos;t see this as a mistake, but I can also easily imagine people getting their torches and pitchforks out of the closet over it... How much it becoming &quot;heavier&quot; is an actual problem otherwise I can&apos;t say.

Second, we&apos;d need to make ShadowRoot inherit from DocumentFragment. Once the first step is done, this should be rather simple.

However, as you also note, ShadowRoot does behave differently from DocumentFragment in some regards: I personally cannot see a ShadowRoot being moved around willy-nilly. IMHO attempting to call insertBefore() or appendChild() with a ShadowRoot should throw (and indicate that something&apos;s seriously wrong). OTOH, the JavaScript user cannot even easily distinguish between a DocumentFragment ShadowRoot node so he managed to get his grubby hands on one somehow: AFAICT you&apos;d need hacks like &apos;if (node.nodeType() == DOCUMENT_FRAGMENT_NODE &amp;&amp; node.element)&apos;. Altogether reasons why I personally would have preferred to keep the SHADOW_ROOT_NODE node type.

&gt; (In reply to comment #21)
&gt; We can. Although we have to update case/switch statements which uses SHADOW_ROOT_NODE in many places, we can do it.

I would make this a separate bug - this should be quite orthogonal to the actual inheritance question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543880</commentid>
    <comment_count>27</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-27 01:07:53 -0800</bug_when>
    <thetext>(In reply to comment #26)
&gt; ...easily distinguish between a DocumentFragment ShadowRoot node 

This should be: &quot;...between a DocumentFragment AND a ShadowRoot node...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543891</commentid>
    <comment_count>28</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-27 01:29:59 -0800</bug_when>
    <thetext>This is completely off-topic, but I came up a crazy idea while I was working on this issue.
ShadowRoot and DocumentFragment is very similar and looks exchangeable for me.

So instead of current ShadowRoot API:

  new ShadowRoot(element)

How about this? :)

interface Element {
  DocumentFragment addShadowRoot(in DocumentFragment shadowRoot) raises(DOMException);
  void removeShadowRoot(in DocumentFragment shadowRoot) raises(DOMException);
}

Usage:
  var fragment = document.createDocumentFragment()
  element.addShadowRoot(fragment);

This sounds crazy?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543910</commentid>
    <comment_count>29</comment_count>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-27 02:00:57 -0800</bug_when>
    <thetext>(In reply to comment #28)
A shadow root needs to be a TreeScope, in order to be able to track IDs separately from the document. If DocumentFragment becomes a TreeScope, this would be handled implicitly. 
We&apos;d also need to find a way for the shadow root to refer back to the host element (currently &apos;element&apos; in the ShadowRoot IDL).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544322</commentid>
    <comment_count>30</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-27 13:39:45 -0800</bug_when>
    <thetext>If we need to talk about changing the spec, especially for one not small, let&apos;s talk at somewhere else.
Bugzilla isn&apos;t good for such purpose.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545020</commentid>
    <comment_count>31</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-30 04:58:45 -0800</bug_when>
    <thetext>I have yet another idea: TreeScope should be separated from the class hierarchy.
Document and DocumentFragment should inherit it using multiple-inheritance.

Node
  ContainerNode
    Element
      Document (also inherits TreeScope)
      DocumentFragment
        ShadowRoot (also inherits TreeScope)

Is there strong restriction that TreeScope should inherit Element?
If there is nothing, it&apos;s time to use multiple-inheritance, isn&apos;t it?

I know multiple inheritance is discouraged in general. I hate it, but it seems natural to use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545162</commentid>
    <comment_count>32</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-30 09:29:34 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; I have yet another idea: TreeScope should be separated from the class hierarchy.
&gt; Document and DocumentFragment should inherit it using multiple-inheritance.
&gt; 
&gt; Node
&gt;   ContainerNode
&gt;     Element
&gt;       Document (also inherits TreeScope)
&gt;       DocumentFragment
&gt;         ShadowRoot (also inherits TreeScope)
&gt; 
&gt; Is there strong restriction that TreeScope should inherit Element?
&gt; If there is nothing, it&apos;s time to use multiple-inheritance, isn&apos;t it?
&gt; 
&gt; I know multiple inheritance is discouraged in general. I hate it, but it seems natural to use it.

As long as we we don&apos;t have virtual methods on TreeScope, I think this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545956</commentid>
    <comment_count>33</comment_count>
      <attachid>124710</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 05:04:42 -0800</bug_when>
    <thetext>Created attachment 124710
Make ShadowRoot inherit DocumentFragment. TreeScope is now stand-alone class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545957</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 05:06:52 -0800</bug_when>
    <thetext>Attachment 124710 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545966</commentid>
    <comment_count>35</comment_count>
      <attachid>124712</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 05:29:35 -0800</bug_when>
    <thetext>Created attachment 124712
Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545968</commentid>
    <comment_count>36</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 05:31:28 -0800</bug_when>
    <thetext>Thank you. I&apos;ve uploaded the patch for the review.
Although I might polish further, it&apos;d be nice to have early feedbacks.

(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; I have yet another idea: TreeScope should be separated from the class hierarchy.
&gt; &gt; Document and DocumentFragment should inherit it using multiple-inheritance.
&gt; &gt; 
&gt; &gt; Node
&gt; &gt;   ContainerNode
&gt; &gt;     Element
&gt; &gt;       Document (also inherits TreeScope)
&gt; &gt;       DocumentFragment
&gt; &gt;         ShadowRoot (also inherits TreeScope)
&gt; &gt; 
&gt; &gt; Is there strong restriction that TreeScope should inherit Element?
&gt; &gt; If there is nothing, it&apos;s time to use multiple-inheritance, isn&apos;t it?
&gt; &gt; 
&gt; &gt; I know multiple inheritance is discouraged in general. I hate it, but it seems natural to use it.
&gt; 
&gt; As long as we we don&apos;t have virtual methods on TreeScope, I think this is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545969</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 05:32:18 -0800</bug_when>
    <thetext>Attachment 124712 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545970</commentid>
    <comment_count>38</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 05:34:37 -0800</bug_when>
    <thetext>It seems there is something wrong in style-queue bot. This patch doesn&apos;t contain that files...

&gt; CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped

(In reply to comment #37)
&gt; Attachment 124712 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9
&gt; 
&gt; Updating OpenSource
&gt; First, rewinding head to replay your work on top of it...
&gt; Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
&gt; Using index info to reconstruct a base tree...
&gt; Falling back to patching base and 3-way merge...
&gt; Auto-merging LayoutTests/ChangeLog
&gt; CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
&gt; Auto-merging LayoutTests/platform/qt/Skipped
&gt; CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
&gt; Auto-merging Source/WebCore/ChangeLog
&gt; CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
&gt; Failed to merge in the changes.
&gt; Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.
&gt; 
&gt; When you have resolved this problem run &quot;git rebase --continue&quot;.
&gt; If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
&gt; To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.
&gt; 
&gt; rebase refs/remotes/origin/master: command returned error: 1
&gt; 
&gt; Died at Tools/Scripts/update-webkit line 164.
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546180</commentid>
    <comment_count>39</comment_count>
      <attachid>124712</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-01-31 09:56:14 -0800</bug_when>
    <thetext>Comment on attachment 124712
Rebased

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

Looks like a nice improvement. It&apos;s along the lines of ScriptExecutionContext and other similar abstractions we&apos;ve done in WebKit. A couple of nagging questions though:

&gt; Source/WebCore/dom/Document.cpp:376
&gt; +    : ContainerNode(0), TreeScope(this)

TreeScope goes on new line.

&gt; Source/WebCore/dom/Document.cpp:647
&gt; +    Node* node = root ? root-&gt;attachedNode() : 0;

Can root ever be 0? If not, we should just assert here.

&gt; Source/WebCore/dom/TreeScope.cpp:-50
&gt; -    if (hasRareData())
&gt; -        clearRareData();

Oops, where does this go now?

&gt; Source/WebCore/dom/TreeScope.h:72
&gt; +    Node* attachedNode() const { return m_attachedNode; };

I think you can just call it node(). &quot;attach&quot; implies some sort of attachment/detachment machinery.

&gt; Source/WebCore/dom/TreeScope.h:81
&gt; +    Node* m_attachedNode;

m_node;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546784</commentid>
    <comment_count>40</comment_count>
      <attachid>124879</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 21:31:49 -0800</bug_when>
    <thetext>Created attachment 124879
Another iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546786</commentid>
    <comment_count>41</comment_count>
      <attachid>124712</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 21:36:10 -0800</bug_when>
    <thetext>Comment on attachment 124712
Rebased

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

&gt;&gt; Source/WebCore/dom/Document.cpp:376
&gt;&gt; +    : ContainerNode(0), TreeScope(this)
&gt; 
&gt; TreeScope goes on new line.

Done.

&gt;&gt; Source/WebCore/dom/Document.cpp:647
&gt;&gt; +    Node* node = root ? root-&gt;attachedNode() : 0;
&gt; 
&gt; Can root ever be 0? If not, we should just assert here.

root can be 0 in the previous patch.
But I changed caller side so that root never can be 0. ASSERT is added.

&gt;&gt; Source/WebCore/dom/TreeScope.cpp:-50
&gt;&gt; -        clearRareData();
&gt; 
&gt; Oops, where does this go now?

Ops. I wrongly assumed we don&apos;t need this anymore because Node&apos;s destructor does it.
It seems we need some tweaks in TreeScope&apos;s destructor also. I recovered it.

&gt;&gt; Source/WebCore/dom/TreeScope.h:72
&gt;&gt; +    Node* attachedNode() const { return m_attachedNode; };
&gt; 
&gt; I think you can just call it node(). &quot;attach&quot; implies some sort of attachment/detachment machinery.

Done. I renamed it.

&gt;&gt; Source/WebCore/dom/TreeScope.h:81
&gt;&gt; +    Node* m_attachedNode;
&gt; 
&gt; m_node;

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546799</commentid>
    <comment_count>42</comment_count>
      <attachid>124879</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-31 21:51:57 -0800</bug_when>
    <thetext>Comment on attachment 124879
Another iteration.

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

&gt; Source/WebCore/dom/TreeScope.h:72
&gt; +    Node* node() const { return m_node; };

I think this should be using and returning a ContainerNode* - I don&apos;t think a TreeScope that consists of a single Node would ever make sense. Likewise, since this must be the root node of a tree, I would suggest naming the function root() or rootNode(): &quot;treeScope-&gt;rootNode()&quot; is IMHO clearer than &quot;treeScope-&gt;node()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546815</commentid>
    <comment_count>43</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 22:26:07 -0800</bug_when>
    <thetext>I agree. rootNode() sounds good name for me than node(). Let me update the patch.

(In reply to comment #42)
&gt; (From update of attachment 124879 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124879&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/TreeScope.h:72
&gt; &gt; +    Node* node() const { return m_node; };
&gt; 
&gt; I think this should be using and returning a ContainerNode* - I don&apos;t think a TreeScope that consists of a single Node would ever make sense. Likewise, since this must be the root node of a tree, I would suggest naming the function root() or rootNode(): &quot;treeScope-&gt;rootNode()&quot; is IMHO clearer than &quot;treeScope-&gt;node()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546823</commentid>
    <comment_count>44</comment_count>
      <attachid>124887</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 22:57:30 -0800</bug_when>
    <thetext>Created attachment 124887
Another iteration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546835</commentid>
    <comment_count>45</comment_count>
      <attachid>124887</attachid>
    <who name="Roland Steiner">rolandsteiner</who>
    <bug_when>2012-01-31 23:42:52 -0800</bug_when>
    <thetext>Comment on attachment 124887
Another iteration.

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

(Sorry for the piece-meal review! ^_^;)

&gt; Source/WebCore/dom/Document.cpp:646
&gt;  void Document::buildAccessKeyMap(TreeScope* root)

Small nit: IMHO the parameter should be renamed &apos;scope&apos;, as it&apos;s no longer really a node.

&gt; Source/WebCore/dom/TreeScope.cpp:54
&gt; +        rootNode()-&gt;clearRareData();

Looking closer at this, this looks fragile. (Refer to http://trac.webkit.org/changeset/90378 for the original reason of the code). Since the patch now uses multiple inheritance, this now relies on the TreeScope destructor to run before the Node destructor. In turn, this relies on the written order of the base classes. So if anyone ever happens to change that, things will break again.
Although duplicating code, moving this to the destructors of the derived classes (i.e., Document and ShadowRoot), with an appropriate comment, would be safer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546843</commentid>
    <comment_count>46</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-01-31 23:57:25 -0800</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #45)
&gt; (From update of attachment 124887 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124887&amp;action=review
&gt; 
&gt; (Sorry for the piece-meal review! ^_^;)
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:646
&gt; &gt;  void Document::buildAccessKeyMap(TreeScope* root)
&gt; 
&gt; Small nit: IMHO the parameter should be renamed &apos;scope&apos;, as it&apos;s no longer really a node.
&gt; 

Okay. Let me rename.

&gt; &gt; Source/WebCore/dom/TreeScope.cpp:54
&gt; &gt; +        rootNode()-&gt;clearRareData();
&gt; 
&gt; Looking closer at this, this looks fragile. (Refer to http://trac.webkit.org/changeset/90378 for the original reason of the code). Since the patch now uses multiple inheritance, this now relies on the TreeScope destructor to run before the Node destructor. In turn, this relies on the written order of the base classes. So if anyone ever happens to change that, things will break again.
&gt; Although duplicating code, moving this to the destructors of the derived classes (i.e., Document and ShadowRoot), with an appropriate comment, would be safer.


Yeah, I thought it at first and was aware such issues. but I chose avoiding duplications for laziness.
Okay. Let me rewrite it as you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546882</commentid>
    <comment_count>47</comment_count>
      <attachid>124903</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 01:15:01 -0800</bug_when>
    <thetext>Created attachment 124903
another iteration</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547113</commentid>
    <comment_count>48</comment_count>
      <attachid>124903</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-02-01 09:10:49 -0800</bug_when>
    <thetext>Comment on attachment 124903
another iteration

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

Looks good, but for some reason there seems to be a build error on mac EWS?

&gt; Source/WebCore/dom/TreeScope.cpp:34
&gt; +#include &quot;Node.h&quot;

ContainerNode includes Node, so you probably don&apos;t need this include.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547248</commentid>
    <comment_count>49</comment_count>
      <attachid>124903</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-02-01 11:48:40 -0800</bug_when>
    <thetext>Comment on attachment 124903
another iteration

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

&gt; Source/WebCore/dom/Document.cpp:577
&gt; +    if (hasRareData())
&gt; +        clearRareData();

This very mysterious bit of code needs a “why” comment. Since this is called in Node, there must be a very good reason why it’s critical to call it earlier here, and the comment should state that reason. It’s sort of obvious to me why, but I don’t think it would be obvious to most programmers.

&gt; Source/WebCore/dom/Document.cpp:661
&gt; +        if (element-&gt;shadowRoot())
&gt; +            buildAccessKeyMap(element-&gt;shadowRoot());

Should put this in a local variable so we don’t do it twice.

&gt; Source/WebCore/dom/ShadowRoot.cpp:56
&gt; +    if (hasRareData())
&gt; +        clearRareData();

Same comment about this as in Document.

&gt; Source/WebCore/dom/TreeScope.h:41
&gt; +// A class which inherits both Node and TreeScope must call clearRareData() in its destructor.
&gt; +// See http://trac.webkit.org/changeset/90378 for the reason.

This comment explains the calls to clearRareData, but it seems likely that people reading the destructors won’t see the comment. I also think it’s unnecessarily indirect to give a trac link instead of having a comment somewhere in the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547584</commentid>
    <comment_count>50</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 19:23:22 -0800</bug_when>
    <thetext>Thank you for the review. If mac EWS build won&apos;t complain for the next patch, I&apos;ll land this.

(In reply to comment #48)
&gt; (From update of attachment 124903 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124903&amp;action=review
&gt; 
&gt; Looks good, but for some reason there seems to be a build error on mac EWS?

Hmm. I am not sure why that happened. I could not read a reason clearly from the build output.
Let me retry mac EWS later.

&gt; 
&gt; &gt; Source/WebCore/dom/TreeScope.cpp:34
&gt; &gt; +#include &quot;Node.h&quot;
&gt; 
&gt; ContainerNode includes Node, so you probably don&apos;t need this include.

Done.

(In reply to comment #49)
&gt; (From update of attachment 124903 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124903&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:577
&gt; &gt; +    if (hasRareData())
&gt; &gt; +        clearRareData();
&gt; 
&gt; This very mysterious bit of code needs a “why” comment. Since this is called in Node, there must be a very good reason why it’s critical to call it earlier here, and the comment should state that reason. It’s sort of obvious to me why, but I don’t think it would be obvious to most programmers.

Done. I&apos;ve added the comment here as well as the comment on TreeScope.h.

&gt; 
&gt; &gt; Source/WebCore/dom/Document.cpp:661
&gt; &gt; +        if (element-&gt;shadowRoot())
&gt; &gt; +            buildAccessKeyMap(element-&gt;shadowRoot());
&gt; 
&gt; Should put this in a local variable so we don’t do it twice.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/ShadowRoot.cpp:56
&gt; &gt; +    if (hasRareData())
&gt; &gt; +        clearRareData();
&gt; 
&gt; Same comment about this as in Document.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/TreeScope.h:41
&gt; &gt; +// A class which inherits both Node and TreeScope must call clearRareData() in its destructor.
&gt; &gt; +// See http://trac.webkit.org/changeset/90378 for the reason.
&gt; 
&gt; This comment explains the calls to clearRareData, but it seems likely that people reading the destructors won’t see the comment. I also think it’s unnecessarily indirect to give a trac link instead of having a comment somewhere in the code.

Done. I&apos;ve removed the link and put a comment here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547587</commentid>
    <comment_count>51</comment_count>
      <attachid>125065</attachid>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 19:26:08 -0800</bug_when>
    <thetext>Created attachment 125065
let me retry for mac-ews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547588</commentid>
    <comment_count>52</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 19:40:59 -0800</bug_when>
    <thetext>I am sure that mac ews issue was caused by unnecessary [OldStyleObjC] in ShadowRoot.idl.
That was removed in  http://trac.webkit.org/changeset/106449.

So I am sure it&apos;s safe to land this patch now. But let me watch mac ews again for safety.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547591</commentid>
    <comment_count>53</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 19:55:42 -0800</bug_when>
    <thetext>Mac ews became green. Let me land this patch manually.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547598</commentid>
    <comment_count>54</comment_count>
    <who name="Hayato Ito">hayato</who>
    <bug_when>2012-02-01 20:21:57 -0800</bug_when>
    <thetext>Committed r106530: &lt;http://trac.webkit.org/changeset/106530&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123909</attachid>
            <date>2012-01-25 03:01:38 -0800</date>
            <delta_ts>2012-01-25 03:13:16 -0800</delta_ts>
            <desc>Make ShadowRoot inherit DocumentFragment</desc>
            <filename>bug-76693-20120125200137.patch</filename>
            <type>text/plain</type>
            <size>2691</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE3ZDg3OGViYmMyOThh
YzM4ZTg5MjE3MTQyNjViMWM5ODQ1NDU1My4uZGIxNThmZjYwNTJmM2UwYWUzYjAwNzlkODk2ZGMx
NzdiNDdkMGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAxLTI1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qg
aW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IGluIEpTIGJpbmRpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjY5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaWRsOgorCiAy
MDEyLTAxLTIzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQgYSBTaGFkb3dSb290IGNvbnN0cnVjdG9yIGFzICdXZWJLaXRTaGFkb3dSb290Q29uc3RydWN0
b3InLCBlbmFibGVkIGJ5IFNIQURPV19ET00gZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290Lmlk
bAppbmRleCA1ZWVjNTBjNThiZDllOTJkZjM0NjU2ZmZkZjgxMTQ5YzExOGMwNDBjLi4yYjE1MWUw
MzNlNzJlNTZjZjlhYjQ2ZDQzNDdmN2Q2ZmVhNzA2OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaWRsCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgQ29uZGl0aW9u
YWw9U0hBRE9XX0RPTSwKICAgICAgICAgRW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00sCiAgICAg
ICAgIENvbnN0cnVjdG9yKGluIEVsZW1lbnQgaG9zdCkKLSAgICBdIFNoYWRvd1Jvb3QgOiBOb2Rl
IHsKKyAgICBdIFNoYWRvd1Jvb3QgOiBEb2N1bWVudEZyYWdtZW50IHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEVsZW1lbnQgaG9zdDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzZlNjdhMmQzNzEw
Zjg2ZWQyZWUzZWM0ZTJkM2Q5YzhjMDUzNGIyYi4uNjMzMTllZjgwMjI4NjM5YjVmZDg1MTA1MDU2
OTU4ZTAyYzFhNTMyYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAxLTI1ICBIYXlhdG8g
SXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3QgaW5o
ZXJpdCBEb2N1bWVudEZyYWdtZW50IGluIEpTIGJpbmRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjY5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS5odG1sOgorCiAyMDEyLTAxLTI0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBBZGQgYSBTaGFkb3dSb290IGNvbnN0cnVjdG9yIGFzICdXZWJLaXRT
aGFkb3dSb290Q29uc3RydWN0b3InLCBlbmFibGVkIGJ5IFNIQURPV19ET00gZmxhZy4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbApp
bmRleCAzNmNmZmE5MTBlMzhhOGI4NjI5MjRjMWZkNjZjYjczYmNmODFhOGRlLi5mOWViOTMzNTg3
NTE3NGM0M2Y1ZDg1NTc4ZDczZDRhNzgzNTIxNzdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCkBAIC0xNCw2ICsxNCwxNCBA
QCB2YXIgc2hhZG93SG9zdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogdmFyIHNo
YWRvd1Jvb3QgPSBuZXcgV2ViS2l0U2hhZG93Um9vdChzaGFkb3dIb3N0KTsKIHNob3VsZEJlKCJz
aGFkb3dIb3N0IiwgInNoYWRvd1Jvb3QuaG9zdCIpOwogCit2YXIgZGl2SW5TaGFkb3dSb290ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CitzaGFkb3dSb290LmFwcGVuZENoaWxkKGRp
dkluU2hhZG93Um9vdCkKK3Nob3VsZEJlKCJkaXZJblNoYWRvd1Jvb3QiLCAic2hhZG93Um9vdC5x
dWVyeVNlbGVjdG9yKCdkaXYnKSIpOworCit2YXIgcmVzdWx0cyA9IHNoYWRvd1Jvb3QucXVlcnlT
ZWxlY3RvckFsbCgnZGl2JykKK3Nob3VsZEJlKCIxIiwgInJlc3VsdHMubGVuZ3RoIik7CitzaG91
bGRCZSgiZGl2SW5TaGFkb3dSb290IiwgInJlc3VsdHMuaXRlbSgwKSIpOworCiA8L3NjcmlwdD4K
IDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123910</attachid>
            <date>2012-01-25 03:13:21 -0800</date>
            <delta_ts>2012-01-26 01:39:43 -0800</delta_ts>
            <desc>update</desc>
            <filename>bug-76693-20120125201319.patch</filename>
            <type>text/plain</type>
            <size>3425</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTE3ZDg3OGViYmMyOThh
YzM4ZTg5MjE3MTQyNjViMWM5ODQ1NDU1My4uZGIxNThmZjYwNTJmM2UwYWUzYjAwNzlkODk2ZGMx
NzdiNDdkMGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDEyLTAxLTI1ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qg
aW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IGluIEpTIGJpbmRpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjY5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaWRsOgorCiAy
MDEyLTAxLTIzICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBB
ZGQgYSBTaGFkb3dSb290IGNvbnN0cnVjdG9yIGFzICdXZWJLaXRTaGFkb3dSb290Q29uc3RydWN0
b3InLCBlbmFibGVkIGJ5IFNIQURPV19ET00gZmxhZy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290Lmlk
bAppbmRleCA1ZWVjNTBjNThiZDllOTJkZjM0NjU2ZmZkZjgxMTQ5YzExOGMwNDBjLi4yYjE1MWUw
MzNlNzJlNTZjZjlhYjQ2ZDQzNDdmN2Q2ZmVhNzA2OWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaWRsCkBAIC0zMCw3ICszMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgQ29uZGl0aW9u
YWw9U0hBRE9XX0RPTSwKICAgICAgICAgRW5hYmxlZEF0UnVudGltZT1zaGFkb3dET00sCiAgICAg
ICAgIENvbnN0cnVjdG9yKGluIEVsZW1lbnQgaG9zdCkKLSAgICBdIFNoYWRvd1Jvb3QgOiBOb2Rl
IHsKKyAgICBdIFNoYWRvd1Jvb3QgOiBEb2N1bWVudEZyYWdtZW50IHsKICAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIEVsZW1lbnQgaG9zdDsKICAgICB9OwogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzZlNjdhMmQzNzEw
Zjg2ZWQyZWUzZWM0ZTJkM2Q5YzhjMDUzNGIyYi4uNTc4NmM4N2MzNDRkZDFjY2JjZmZjN2M0NzU3
NmVmNjg2YmE0NjEyNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTAxLTI1ICBIYXlhdG8g
SXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3QgaW5o
ZXJpdCBEb2N1bWVudEZyYWdtZW50IGluIEpTIGJpbmRpbmcuCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjY5MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290
LWpzLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1y
b290LWpzLWFwaS5odG1sOgorCiAyMDEyLTAxLTI0ICBIYXlhdG8gSXRvICA8aGF5YXRvQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBBZGQgYSBTaGFkb3dSb290IGNvbnN0cnVjdG9yIGFzICdXZWJL
aXRTaGFkb3dSb290Q29uc3RydWN0b3InLCBlbmFibGVkIGJ5IFNIQURPV19ET00gZmxhZy4KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpz
LWFwaS1leHBlY3RlZC50eHQKaW5kZXggMGUwNGNjY2FmY2IzNmNlMWE5YWM3NDI0OTJjODhiOTQ2
NWM3ZjdiYy4uYzZiZmQ2NTkyZjdjZTEwN2YxMWQ1NGJkYmRlZWZkMWJkNzE5MGIxZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpz
LWFwaS1leHBlY3RlZC50eHQKQEAgLTQsNiArNCw5IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNl
ZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRF
CiAKIAogUEFTUyBzaGFkb3dIb3N0IGlzIHNoYWRvd1Jvb3QuaG9zdAorUEFTUyBkaXZJblNoYWRv
d1Jvb3QgaXMgc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCdkaXYnKQorUEFTUyAxIGlzIHJlc3Vs
dHMubGVuZ3RoCitQQVNTIGRpdkluU2hhZG93Um9vdCBpcyByZXN1bHRzLml0ZW0oMCkKIFBBU1Mg
c3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sCmluZGV4IDM2
Y2ZmYTkxMGUzOGE4Yjg2MjkyNGMxZmQ2NmNiNzNiY2Y4MWE4ZGUuLmY5ZWI5MzM1ODc1MTc0YzQz
ZjVkODU1NzhkNzNkNGE3ODM1MjE3N2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWwKQEAgLTE0LDYgKzE0LDE0IEBAIHZhciBz
aGFkb3dIb3N0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiB2YXIgc2hhZG93Um9v
dCA9IG5ldyBXZWJLaXRTaGFkb3dSb290KHNoYWRvd0hvc3QpOwogc2hvdWxkQmUoInNoYWRvd0hv
c3QiLCAic2hhZG93Um9vdC5ob3N0Iik7CiAKK3ZhciBkaXZJblNoYWRvd1Jvb3QgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKK3NoYWRvd1Jvb3QuYXBwZW5kQ2hpbGQoZGl2SW5TaGFk
b3dSb290KQorc2hvdWxkQmUoImRpdkluU2hhZG93Um9vdCIsICJzaGFkb3dSb290LnF1ZXJ5U2Vs
ZWN0b3IoJ2RpdicpIik7CisKK3ZhciByZXN1bHRzID0gc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9y
QWxsKCdkaXYnKQorc2hvdWxkQmUoIjEiLCAicmVzdWx0cy5sZW5ndGgiKTsKK3Nob3VsZEJlKCJk
aXZJblNoYWRvd1Jvb3QiLCAicmVzdWx0cy5pdGVtKDApIik7CisKIDwvc2NyaXB0PgogPHNjcmlw
dCBzcmM9Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124079</attachid>
            <date>2012-01-26 01:39:48 -0800</date>
            <delta_ts>2012-01-27 00:30:31 -0800</delta_ts>
            <desc>Inherits DocumentFragment</desc>
            <filename>bug-76693-20120126183947.patch</filename>
            <type>text/plain</type>
            <size>2880</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMwYjE1MGI0OWRjMjA0
MzMzZmUzOGFiZjVkY2U2MzNkZjY1YjQ2My4uYTljZmUxMTAzZjQyYjhmZmM1ZDE5MmU3M2UxMGMz
NWQyZDU4NjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTI2ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIFNoYWRvd1Jvb3Qg
aW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IGluIEpTIGJpbmRpbmcuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjY5MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIG5vZGVOYW1lKCkgYW5kIG5vZGVUeXBlKCkg
d2lsbCBiZSBmaXhlZCBpbiBmb2xsb3dpbmcgcGF0Y2hlcy4KKyAgICAgICAgT3RoZXIgQVBJcyBh
bmQgdGVzdHMgd2lsbCBiZSBhZGRlZCBsYXRlciBzbyB0aGF0IHdlIGNhbiBpc29sYXRlIGlzc3Vl
cy4KKworICAgICAgICAqIGRvbS9TaGFkb3dSb290LmlkbDoKKwogMjAxMi0wMS0yNCAgS2VuIEJ1
Y2hhbmFuICA8a2VucmJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENyYXNoIGluIHVwZGF0ZUZp
cnN0TGV0dGVyKCkgZnJvbSB1bm5lY2Vzc2FyeSBhbm9ueW1vdXMgYmxvY2sKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmlkbAppbmRleCA5YTgwOTMzNThiZGMwZmZmMDFjODY5NzM1ZTBhNDNmZDIzMDNh
MTNjLi43OTBmNDcwM2Y2NjJkOTRhOTIyYWQxZmFmNDA0OTQ0YzM4MjkxM2E1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaWRsCkBAIC0yOSw3ICsyOSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICBp
bnRlcmZhY2UgWwogICAgICAgICBDb25kaXRpb25hbD1TSEFET1dfRE9NLAogICAgICAgICBFbmFi
bGVkQXRSdW50aW1lPXNoYWRvd0RPTQotICAgIF0gU2hhZG93Um9vdCA6IE5vZGUgeworICAgIF0g
U2hhZG93Um9vdCA6IERvY3VtZW50RnJhZ21lbnQgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRWxlbWVudCBob3N0OwogICAgIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NGMzNDIzMGE1MmU4ZGFhOGRjOTgz
MDE2YmI4MDRlZGExNDk0MWM5Li41YTk2MTMwYWVlMGNkOWNmOTVmNThlYTc2N2EzY2Y4ZWEwMDYy
YTUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEhheWF0byBJdG8gIDxoYXlh
dG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgU2hhZG93Um9vdCBpbmhlcml0IERvY3Vt
ZW50RnJhZ21lbnQgaW4gSlMgYmluZGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc2NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgbm9kZU5hbWUoKSBhbmQgbm9kZVR5cGUoKSB3aWxsIGJlIGZpeGVk
IGluIGZvbGxvd2luZyBwYXRjaGVzLgorICAgICAgICBPdGhlciBBUElzIGFuZCB0ZXN0cyB3aWxs
IGJlIGFkZGVkIGxhdGVyIHNvIHRoYXQgd2UgY2FuIGlzb2xhdGUgaXNzdWVzLgorCisgICAgICAg
ICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFwaS5odG1sOgorCiAyMDEyLTAxLTI0
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIExpbnV4LXNw
ZWNpZmljIG92ZXJyaWRlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9z
aGFkb3ctcm9vdC1qcy1hcGkuaHRtbAppbmRleCBjZDZjNDQ2ZjJhODhmMDU2YWZmZmU0MDU0ODI5
ZDExYzJmNDQ3YzQ5Li5iMzgzYjIwOGJmMDVkMmM0MDk1NzY3ZDBhMjY4MzY2OTMyMmY5ZDBjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBp
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpzLWFw
aS5odG1sCkBAIC0xNSw2ICsxNSwxNCBAQCBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChzaGFk
b3dIb3N0KTsKIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoc2hhZG93SG9z
dCk7CiBzaG91bGRCZSgic2hhZG93SG9zdCIsICJzaGFkb3dSb290Lmhvc3QiKTsKIAordmFyIGRp
dkluU2hhZG93Um9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworc2hhZG93Um9v
dC5hcHBlbmRDaGlsZChkaXZJblNoYWRvd1Jvb3QpOworc2hvdWxkQmUoInNoYWRvd1Jvb3QucXVl
cnlTZWxlY3RvcignZGl2JykiLCAiZGl2SW5TaGFkb3dSb290Iik7CisKK3ZhciByZXN1bHRzID0g
c2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYnKTsKK3Nob3VsZEJlKCJyZXN1bHRzLmxl
bmd0aCIsICIxIik7CitzaG91bGRCZSgicmVzdWx0cy5pdGVtKDApIiwgImRpdkluU2hhZG93Um9v
dCIpOworCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124268</attachid>
            <date>2012-01-27 00:30:38 -0800</date>
            <delta_ts>2012-01-31 05:04:36 -0800</delta_ts>
            <desc>WIP. Make ShadowRoot inherit DocumentFragment. Some tests should be rebaselined.</desc>
            <filename>bug-76693-20120127173036.patch</filename>
            <type>text/plain</type>
            <size>23159</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1ODMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmMwYjE1MGI0OWRjMjA0
MzMzZmUzOGFiZjVkY2U2MzNkZjY1YjQ2My4uMWIxN2M2OWI1YmVjZDMxNDQyYmY3ZDdjNmFmNjcx
OTI3ZjRmNDY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTI3ICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyY2h5IC0gU2hhZG93Um9vdCBpbmhlcml0cyBEb2N1bWVudEZyYWdtZW50LCB3aGljaCBpbmhl
cml0cyBUcmVlU2NvcGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NjY5MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjp0b1Y4U2xvdyk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjppbXBvcnROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpjaGlsZFR5cGVBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjYW5S
ZXBsYWNlQ2hpbGQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6CisgICAgICAgIChEb2N1bWVudEZyYWdtZW50KToK
KyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0RlZmF1
bHROYW1lc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6bG9va3VwUHJlZml4KToKKyAg
ICAgICAgKFdlYkNvcmU6Ok5vZGU6Omxvb2t1cE5hbWVzcGFjZVVSSSk6CisgICAgICAgIChXZWJD
b3JlOjphcHBlbmRUZXh0Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpzZXRUZXh0
Q29udGVudCk6CisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKCk6CisgICAgICAgICog
ZG9tL1JhbmdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Omxlbmd0aE9mQ29udGVudHNJbk5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6UmFuZ2U6OnByb2Nlc3NDb250ZW50c0JldHdlZW5PZmZzZXRz
KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjppbnNlcnROb2RlKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlOjpjaGVja05vZGVXT2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJhbmdlOjpj
aGVja05vZGVCQSk6CisgICAgICAgIChXZWJDb3JlOjpSYW5nZTo6c2VsZWN0Tm9kZSk6CisgICAg
ICAgIChXZWJDb3JlOjpSYW5nZTo6c2VsZWN0Tm9kZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290OjpTaGFkb3dSb290KToKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGRvbS9TaGFkb3dSb290Lmg6CisgICAgICAgIChTaGFkb3dS
b290KToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5pZGw6CisgICAgICAgICogZWRpdGluZy9N
YXJrdXBBY2N1bXVsYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kU3RhcnRNYXJrdXApOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxFbGVtZW50
U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE5hbWVzOjppc1Jvb3ROb2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50U3RhY2s6OnB1c2hSb290Tm9kZSk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJ
bkhUTUxOYW1lc3BhY2UpOgorICAgICAgICAqIHhtbC9YUGF0aFV0aWwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6WFBhdGg6OmlzVmFsaWRDb250ZXh0Tm9kZSk6CisKIDIwMTItMDEtMjQgIEtlbiBC
dWNoYW5hbiAgPGtlbnJiQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiB1cGRhdGVG
aXJzdExldHRlcigpIGZyb20gdW5uZWNlc3NhcnkgYW5vbnltb3VzIGJsb2NrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDExZGQ0Nzg4NmY3NWZkNjdkODcwMzBmNjk1ODExNTUzYmUyZGNk
YzMuLjczZjYyOWY0NzUwMzhiN2FmMzQzMmQ5OTI1MjYyYzNmMWJlNzUxYWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDEtMjcgIEhheWF0byBJdG8g
IDxoYXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSBjbGFzcyBoaWVyYXJjaHkg
LSBTaGFkb3dSb290IGluaGVyaXRzIERvY3VtZW50RnJhZ21lbnQsIHdoaWNoIGluaGVyaXRzIFRy
ZWVTY29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc2NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBzcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVNlcmlhbGl6ZXJJbXBsOjpidWlsZENvbnRlbnRGb3JOb2RlKToKKwogMjAxMi0wMS0yNCAgRG1p
dHJ5IExvbW92ICA8ZHNsb21vdkBnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQ6IHJl
bW92aW5nIFdlYldvcmtlci5oIGFnYWluIGFmdGVyIHIxMDU2ODQuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IDRhZDEzZDRh
ZjdjZmQ1MjQ2ZjgwZjY4MWFjZmM0OTk2ZjkwNGM1ZDcuLmU2NDEwNDdhMDA2N2UxZTY0ZGNiZTkw
Mzk3ZTFlNmVjYTE5ZmJjYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC0xNjMsMTAgKzE2MywxMCBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSogaW1wbCwgYm9vbCBmb3JjZU5ld09iamVjdCkKICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgcmV0dXJuIHRvVjgoc3Rh
dGljX2Nhc3Q8RG9jdW1lbnRUeXBlKj4oaW1wbCksIGZvcmNlTmV3T2JqZWN0KTsKICAgICBjYXNl
IE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CisgICAgICAgIC8vIEZJWE1FOiBUaGVyZSBk
b2VzIG5vdCBzZWVtIHRvIGJlIHRoaXMgb3ZlcmxvYWRlZCBmdW5jdGlvbi4KICAgICAgICAgcmV0
dXJuIHRvVjgoc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+KGltcGwpLCBmb3JjZU5ld09i
amVjdCk7CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgICAgICByZXR1cm4gdG9W
OChzdGF0aWNfY2FzdDxOb3RhdGlvbio+KGltcGwpLCBmb3JjZU5ld09iamVjdCk7Ci0gICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOiAvLyBUaGVyZSdzIG5vIElETCBjbGFzcyBmb3IgU2hh
ZG93Um9vdCwgZmFsbC10aHJvdWdoIHRvIGRlZmF1bHQgYW5kIHVzZSBOb2RlIGluc3RlYWQuCiAg
ICAgZGVmYXVsdDogYnJlYWs7IC8vIFhQQVRIX05BTUVTUEFDRV9OT0RFCiAgICAgfQogICAgIHJl
dHVybiBWOE5vZGU6OndyYXAoaW1wbCwgZm9yY2VOZXdPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggM2FiYjNhZGE5YmNiNTFmMDFmMDI0NzVhODE5MTY3M2JkZWE4YTFhMS4uY2Qz
ZjAxOTFmZjE3YTBiMTJkYjRhYWExYmZlNGQ4MzczYjkyY2RkMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC04NjgsNiArODY4LDExIEBAIFBhc3NSZWZQdHI8Tm9kZT4gRG9jdW1lbnQ6Omlt
cG9ydE5vZGUoTm9kZSogaW1wb3J0ZWROb2RlLCBib29sIGRlZXAsIEV4Y2VwdGlvbkNvCiAgICAg
Y2FzZSBBVFRSSUJVVEVfTk9ERToKICAgICAgICAgcmV0dXJuIEF0dHI6OmNyZWF0ZSgwLCB0aGlz
LCBzdGF0aWNfY2FzdDxBdHRyKj4oaW1wb3J0ZWROb2RlKS0+YXR0cigpLT5jbG9uZSgpKTsKICAg
ICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6IHsKKyAgICAgICAgaWYgKGltcG9ydGVkTm9k
ZS0+aXNTaGFkb3dSb290KCkpIHsKKyAgICAgICAgICAgIC8vIFNoYWRvd1Jvb3Qgbm9kZXMgc2hv
dWxkIG5vdCBiZSBleHBsaWNpdGx5IGltcG9ydGFibGUuCisgICAgICAgICAgICAvLyBFaXRoZXIg
dGhleSBhcmUgaW1wb3J0ZWQgYWxvbmcgd2l0aCB0aGVpciBob3N0IG5vZGUsIG9yIGNyZWF0ZWQg
aW1wbGljaXRseS4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIERvY3Vt
ZW50RnJhZ21lbnQqIG9sZEZyYWdtZW50ID0gc3RhdGljX2Nhc3Q8RG9jdW1lbnRGcmFnbWVudCo+
KGltcG9ydGVkTm9kZSk7CiAgICAgICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBuZXdGcmFn
bWVudCA9IGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgaWYgKGRlZXApIHsKQEAg
LTg5MCw5ICs4OTUsNiBAQCBQYXNzUmVmUHRyPE5vZGU+IERvY3VtZW50OjppbXBvcnROb2RlKE5v
ZGUqIGltcG9ydGVkTm9kZSwgYm9vbCBkZWVwLCBFeGNlcHRpb25DbwogICAgIGNhc2UgRE9DVU1F
TlRfTk9ERToKICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICBjYXNlIFhQQVRIX05B
TUVTUEFDRV9OT0RFOgotICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKLSAgICAgICAgLy8gU2hh
ZG93Um9vdCBub2RlcyBzaG91bGQgbm90IGJlIGV4cGxpY2l0bHkgaW1wb3J0YWJsZS4KLSAgICAg
ICAgLy8gRWl0aGVyIHRoZXkgYXJlIGltcG9ydGVkIGFsb25nIHdpdGggdGhlaXIgaG9zdCBub2Rl
LCBvciBjcmVhdGVkIGltcGxpY2l0bHkuCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBlYyA9
IE5PVF9TVVBQT1JURURfRVJSOwpAQCAtMjgyOSw3ICsyODMxLDYgQEAgYm9vbCBEb2N1bWVudDo6
Y2hpbGRUeXBlQWxsb3dlZChOb2RlVHlwZSB0eXBlKSBjb25zdAogICAgIGNhc2UgTk9UQVRJT05f
Tk9ERToKICAgICBjYXNlIFRFWFRfTk9ERToKICAgICBjYXNlIFhQQVRIX05BTUVTUEFDRV9OT0RF
OgotICAgIGNhc2UgU0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IGNhc2UgQ09NTUVOVF9OT0RFOgogICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RF
OgpAQCAtMjg5OSw5ICsyOTAwLDYgQEAgYm9vbCBEb2N1bWVudDo6Y2FuUmVwbGFjZUNoaWxkKE5v
ZGUqIG5ld0NoaWxkLCBOb2RlKiBvbGRDaGlsZCkKICAgICAgICAgICAgIGNhc2UgRUxFTUVOVF9O
T0RFOgogICAgICAgICAgICAgICAgIG51bUVsZW1lbnRzKys7CiAgICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIFNIQURPV19ST09UX05PREU6Ci0gICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTI5MTUsNyArMjkxMyw2IEBA
IGJvb2wgRG9jdW1lbnQ6OmNhblJlcGxhY2VDaGlsZChOb2RlKiBuZXdDaGlsZCwgTm9kZSogb2xk
Q2hpbGQpCiAgICAgICAgIGNhc2UgTk9UQVRJT05fTk9ERToKICAgICAgICAgY2FzZSBURVhUX05P
REU6CiAgICAgICAgIGNhc2UgWFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgIGNhc2UgU0hB
RE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBD
T01NRU5UX05PREU6CiAgICAgICAgIGNhc2UgUFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmluZGV4IDIzZDhjMjA0M2UzOGE4
ZGIxOGYyZmNkZWNkZjQwMmQzNWIxZGJjODYuLjUxYTUzZTRiZDgzMmZiNzYzMmZlNjU1YjYyNWNi
MDA5MDQzNzZiZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAg
LTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1Eb2N1bWVudEZyYWdtZW50
OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IENvbnRhaW5lck5v
ZGUoZG9jdW1lbnQpCitEb2N1bWVudEZyYWdtZW50OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50
KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQorICAgIDogVHJl
ZVNjb3BlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewogICAgIEFTU0VSVChkb2N1bWVu
dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAppbmRleCA2YmY1MmYxYTc4
NGExMjFjOWEzYmQwOGM4MDhjODIzNjJhMDRmZjMwLi4yZTRmYmRlZmU2N2JkNWJlZGNhZTE3ODVm
MjNmNDkyNDgyZGNiMDNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAg
LTI0LDEyICsyNCwxMiBAQAogI2lmbmRlZiBEb2N1bWVudEZyYWdtZW50X2gKICNkZWZpbmUgRG9j
dW1lbnRGcmFnbWVudF9oCiAKLSNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAi
RnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmgiCisjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgRG9jdW1lbnRGcmFnbWVudCA6IHB1YmxpYyBD
b250YWluZXJOb2RlIHsKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQgOiBwdWJsaWMgVHJlZVNjb3Bl
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVh
dGUoRG9jdW1lbnQqKTsKIApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBw
cm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOworICAgIERvY3VtZW50
RnJhZ21lbnQoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsK
ICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDc2N2I4ZGQ5NWFmYTExMTc1MDUwZGFlMDhmYzE1NTgxMGMyNzQ2NDUuLjQ1
ZTE3MjJmNGZjZTVjYTIxZGE4NzIwMDc3MzhkOWZjOTc1OTYzZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTE5MTAsNyArMTkxMCw2IEBAIGJvb2wgTm9kZTo6aXNEZWZhdWx0TmFtZXNwYWNlKGNvbnN0
IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJTWF5YmVFbXB0eSkgY29uc3QKICAgICAgICAgY2Fz
ZSBOT1RBVElPTl9OT0RFOgogICAgICAgICBjYXNlIERPQ1VNRU5UX1RZUEVfTk9ERToKICAgICAg
ICAgY2FzZSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFOgotICAgICAgICBjYXNlIFNIQURPV19ST09U
X05PREU6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGNhc2UgQVRUUklCVVRF
X05PREU6IHsKICAgICAgICAgICAgIGNvbnN0IEF0dHIqIGF0dHIgPSBzdGF0aWNfY2FzdDxjb25z
dCBBdHRyKj4odGhpcyk7CkBAIC0xOTQ0LDcgKzE5NDMsNiBAQCBTdHJpbmcgTm9kZTo6bG9va3Vw
UHJlZml4KGNvbnN0IEF0b21pY1N0cmluZyAmbmFtZXNwYWNlVVJJKSBjb25zdAogICAgICAgICBj
YXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToK
ICAgICAgICAgY2FzZSBET0NVTUVOVF9UWVBFX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JP
T1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgY2FzZSBBVFRS
SUJVVEVfTk9ERTogewogICAgICAgICAgICAgY29uc3QgQXR0ciAqYXR0ciA9IHN0YXRpY19jYXN0
PGNvbnN0IEF0dHIgKj4odGhpcyk7CkBAIC0yMDA1LDcgKzIwMDMsNiBAQCBTdHJpbmcgTm9kZTo6
bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyAmcHJlZml4KSBjb25zdAogICAgICAgICBj
YXNlIE5PVEFUSU9OX05PREU6CiAgICAgICAgIGNhc2UgRE9DVU1FTlRfVFlQRV9OT0RFOgogICAg
ICAgICBjYXNlIERPQ1VNRU5UX0ZSQUdNRU5UX05PREU6Ci0gICAgICAgIGNhc2UgU0hBRE9XX1JP
T1RfTk9ERToKICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgY2FzZSBBVFRS
SUJVVEVfTk9ERTogewogICAgICAgICAgICAgY29uc3QgQXR0ciAqYXR0ciA9IHN0YXRpY19jYXN0
PGNvbnN0IEF0dHIgKj4odGhpcyk7CkBAIC0yMDc0LDcgKzIwNzEsNiBAQCBzdGF0aWMgdm9pZCBh
cHBlbmRUZXh0Q29udGVudChjb25zdCBOb2RlKiBub2RlLCBib29sIGNvbnZlcnRCUnNUb05ld2xp
bmVzLCBib29sJgogICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgY2FzZSBOb2RlOjpF
TlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9O
T0RFOgotICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgaXNOdWxsU3Ry
aW5nID0gZmFsc2U7CiAgICAgICAgIGZvciAoTm9kZSogY2hpbGQgPSBub2RlLT5maXJzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CiAgICAgICAgICAgICBp
ZiAoY2hpbGQtPm5vZGVUeXBlKCkgPT0gTm9kZTo6Q09NTUVOVF9OT0RFIHx8IGNoaWxkLT5ub2Rl
VHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkKQEAgLTIxMTIsOCAr
MjEwOCw3IEBAIHZvaWQgTm9kZTo6c2V0VGV4dENvbnRlbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBF
eGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgY2FzZSBBVFRSSUJVVEVfTk9ERToKICAgICAgICAg
Y2FzZSBFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBFTlRJVFlfUkVGRVJFTkNFX05PREU6Ci0g
ICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBTSEFET1df
Uk9PVF9OT0RFOiB7CisgICAgICAgIGNhc2UgRE9DVU1FTlRfRlJBR01FTlRfTk9ERTogewogICAg
ICAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gdG9Db250YWluZXJOb2RlKHRoaXMp
OwogI2lmIEVOQUJMRShNVVRBVElPTl9PQlNFUlZFUlMpCiAgICAgICAgICAgICBDaGlsZExpc3RN
dXRhdGlvblNjb3BlIG11dGF0aW9uKHRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKaW5kZXggNTQ3ZGVjODIxY2Q3
MTc1ZjM5MTYwNTQyMjY1MWM3NGM5N2MxZWY2Ny4uZDkwMTE1ZjVkNzE3ZDhhNWU0OGMyM2M4ZjFh
MDBjMzM1ZTlmOGFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0xMjIsNyArMTIyLDcgQEAgcHVibGljOgog
ICAgICAgICBET0NVTUVOVF9GUkFHTUVOVF9OT0RFID0gMTEsCiAgICAgICAgIE5PVEFUSU9OX05P
REUgPSAxMiwKICAgICAgICAgWFBBVEhfTkFNRVNQQUNFX05PREUgPSAxMywKLSAgICAgICAgU0hB
RE9XX1JPT1RfTk9ERSA9IDE0CisgICAgICAgIC8vIFNIQURPV19ST09UX05PREUgPSAxNAogICAg
IH07CiAgICAgZW51bSBEb2N1bWVudFBvc2l0aW9uIHsKICAgICAgICAgRE9DVU1FTlRfUE9TSVRJ
T05fRVFVSVZBTEVOVCA9IDB4MDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFu
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1JhbmdlLmNwcAppbmRleCA5YjU2OWIzZTAxMDk2
NDQ3NTdhNTBiM2Q4N2Q5YjcxODUxYWY3YjUzLi4xN2IyNjUyNGY5ZTllODI4YzI5ZDdkMTYwOTNj
MmRmZmUxNGMzZGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUmFuZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9SYW5nZS5jcHAKQEAgLTY3Nyw3ICs2NzcsNiBAQCBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGxlbmd0aE9mQ29udGVudHNJbk5vZGUoTm9kZSogbm9kZSkKICAg
ICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RB
VElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2Fz
ZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICByZXR1cm4gbm9kZS0+Y2hpbGROb2Rl
Q291bnQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC04NDAsNyArODM5
LDYgQEAgUGFzc1JlZlB0cjxOb2RlPiBSYW5nZTo6cHJvY2Vzc0NvbnRlbnRzQmV0d2Vlbk9mZnNl
dHMoQWN0aW9uVHlwZSBhY3Rpb24sIFBhc3NSZWYKICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZS
QUdNRU5UX05PREU6CiAgICAgY2FzZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9k
ZTo6WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RF
OgogICAgICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCB0aGF0IHNvbWUgbm9kZXMgbmV2
ZXIgYXBwZWFyIGhlcmU/CiAgICAgICAgIGlmIChhY3Rpb24gPT0gRVhUUkFDVF9DT05URU5UUyB8
fCBhY3Rpb24gPT0gQ0xPTkVfQ09OVEVOVFMpIHsKICAgICAgICAgICAgIGlmIChmcmFnbWVudCkK
QEAgLTEwMjgsNyArMTAyNiw2IEBAIHZvaWQgUmFuZ2U6Omluc2VydE5vZGUoUGFzc1JlZlB0cjxO
b2RlPiBwcnBOZXdOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBjYXNlIE5vZGU6OkVOVElU
WV9OT0RFOgogICAgIGNhc2UgTm9kZTo6Tk9UQVRJT05fTk9ERToKICAgICBjYXNlIE5vZGU6OkRP
Q1VNRU5UX05PREU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgogICAgICAgICBl
YyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICBkZWZhdWx0OgpAQCAtMTIxNyw4ICsxMjE0LDcgQEAgTm9kZSogUmFuZ2U6OmNoZWNr
Tm9kZVdPZmZzZXQoTm9kZSogbiwgaW50IG9mZnNldCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0
CiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpF
TEVNRU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgot
ICAgICAgICBjYXNlIE5vZGU6OlhQQVRIX05BTUVTUEFDRV9OT0RFOgotICAgICAgICBjYXNlIE5v
ZGU6OlNIQURPV19ST09UX05PREU6IHsKKyAgICAgICAgY2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BB
Q0VfTk9ERTogewogICAgICAgICAgICAgaWYgKCFvZmZzZXQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIDA7CiAgICAgICAgICAgICBOb2RlKiBjaGlsZEJlZm9yZSA9IG4tPmNoaWxkTm9kZShvZmZz
ZXQgLSAxKTsKQEAgLTEyNDMsNyArMTIzOSw2IEBAIHZvaWQgUmFuZ2U6OmNoZWNrTm9kZUJBKE5v
ZGUqIG4sIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VN
RU5UX05PREU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAgICAgICAgIGNhc2Ug
Tm9kZTo6Tk9UQVRJT05fTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RF
OgogICAgICAgICAgICAgZWMgPSBSYW5nZUV4Y2VwdGlvbjo6SU5WQUxJRF9OT0RFX1RZUEVfRVJS
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBjYXNlIE5vZGU6OkNEQVRBX1NFQ1RJT05f
Tk9ERToKQEAgLTEyNjUsNyArMTI2MCw2IEBAIHZvaWQgUmFuZ2U6OmNoZWNrTm9kZUJBKE5vZGUq
IG4sIEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVU
RV9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX05PREU6CiAgICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFET1df
Uk9PVF9OT0RFOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgTm9kZTo6Q0RBVEFf
U0VDVElPTl9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OkNPTU1FTlRfTk9ERToKQEAgLTEzOTcs
NyArMTM5MSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGUoTm9kZSogcmVmTm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgICAgICAgICBjYXNlIE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJ
T05fTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6VEVYVF9OT0RFOgogICAgICAgICAgICAg
Y2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgICAgIGNhc2UgTm9kZTo6
U0hBRE9XX1JPT1RfTk9ERToKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfVFlQRV9OT0RFOgogICAgICAgICAgICAgY2FzZSBOb2RlOjpFTlRJ
VFlfTk9ERToKQEAgLTE0MjIsNyArMTQxNSw2IEBAIHZvaWQgUmFuZ2U6OnNlbGVjdE5vZGUoTm9k
ZSogcmVmTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgTm9kZTo6RE9DVU1F
TlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpFTlRJVFlfTk9ERToKICAgICAgICAgY2FzZSBO
b2RlOjpOT1RBVElPTl9OT0RFOgotICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09UX05PREU6
CiAgICAgICAgICAgICBlYyA9IFJhbmdlRXhjZXB0aW9uOjpJTlZBTElEX05PREVfVFlQRV9FUlI7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTQ2Myw3ICsxNDU1LDYgQEAgdm9pZCBS
YW5nZTo6c2VsZWN0Tm9kZUNvbnRlbnRzKE5vZGUqIHJlZk5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogICAgICAgICAgICAgY2FzZSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREU6CiAg
ICAgICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6
WFBBVEhfTkFNRVNQQUNFX05PREU6Ci0gICAgICAgICAgICBjYXNlIE5vZGU6OlNIQURPV19ST09U
X05PREU6CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5vZGU6OkRP
Q1VNRU5UX1RZUEVfTk9ERToKICAgICAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBA
IC0xNDk3LDggKzE0ODgsMTMgQEAgdm9pZCBSYW5nZTo6c3Vycm91bmRDb250ZW50cyhQYXNzUmVm
UHRyPE5vZGU+IHBhc3NOZXdQYXJlbnQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIElOVkFM
SURfTk9ERV9UWVBFX0VSUjogUmFpc2VkIGlmIG5vZGUgaXMgYW4gQXR0ciwgRW50aXR5LCBEb2N1
bWVudFR5cGUsIE5vdGF0aW9uLAogICAgIC8vIERvY3VtZW50LCBvciBEb2N1bWVudEZyYWdtZW50
IG5vZGUuCiAgICAgc3dpdGNoIChuZXdQYXJlbnQtPm5vZGVUeXBlKCkpIHsKKyAgICAgICAgY2Fz
ZSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RFOiB7CisgICAgICAgICAgICBpZiAobmV3UGFy
ZW50LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGVjID0gUmFuZ2VFeGNlcHRpb246OklOVkFMSURfTk9ERV9UWVBFX0VSUjsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBjYXNlIE5vZGU6OkFUVFJJQlVURV9OT0RFOgot
ICAgICAgICBjYXNlIE5vZGU6OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU6CiAgICAgICAgIGNhc2Ug
Tm9kZTo6RE9DVU1FTlRfTk9ERToKICAgICAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9UWVBFX05P
REU6CiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CkBAIC0xNTEyLDcgKzE1MDgsNiBA
QCB2b2lkIFJhbmdlOjpzdXJyb3VuZENvbnRlbnRzKFBhc3NSZWZQdHI8Tm9kZT4gcGFzc05ld1Bh
cmVudCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgICAgIGNhc2UgTm9kZTo6UFJPQ0VTU0lOR19J
TlNUUlVDVElPTl9OT0RFOgogICAgICAgICBjYXNlIE5vZGU6OlRFWFRfTk9ERToKICAgICAgICAg
Y2FzZSBOb2RlOjpYUEFUSF9OQU1FU1BBQ0VfTk9ERToKLSAgICAgICAgY2FzZSBOb2RlOjpTSEFE
T1dfUk9PVF9OT0RFOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAKaW5kZXggMjI5ZDU1ODE1YTdmYWVlZTQ3OGFkMjlhNzA4YjI1ODk2YjI0ZWE2
Yy4uMzk2N2NhOGEwNDcwZjY1OGQwN2JlMjY4NDYzYWVjMmY2YTA3ZTg1MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dSb290LmNwcApAQCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IFRyZWVT
Y29wZShkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKKyAgICA6IERvY3VtZW50RnJhZ21lbnQo
ZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCiAgICAgLCBtX2FwcGx5QXV0aG9yU2hlZXRzKGZh
bHNlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CkBAIC01MywxNiArNTMsNiBAQCBTaGFkb3dS
b290Ojp+U2hhZG93Um9vdCgpCiB7CiB9CiAKLVN0cmluZyBTaGFkb3dSb290Ojpub2RlTmFtZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuICIjc2hhZG93LXJvb3QiOwotfQotCi1Ob2RlOjpOb2RlVHlw
ZSBTaGFkb3dSb290Ojpub2RlVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIFNIQURPV19ST09U
X05PREU7Ci19Ci0KIFBhc3NSZWZQdHI8Tm9kZT4gU2hhZG93Um9vdDo6Y2xvbmVOb2RlKGJvb2wp
CiB7CiAgICAgLy8gU2hhZG93Um9vdCBzaG91bGQgbm90IGJlIGFyYml0cmFyaWx5IGNsb25lZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2hhZG93Um9vdC5oCmluZGV4IGRhZTg5NWNhNzM3MjZkNGQ0Y2NhOTk4NDdiOTA5
ZTAxZDc4NTgzZTguLmVlODMzOTQ4NWE1NGYxMjJmYzI4NTBjZDVjYWY3Njg3OWRmMjc3NzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuaApAQCAtMjcsNyArMjcsNyBAQAogI2lmbmRlZiBTaGFkb3dS
b290X2gKICNkZWZpbmUgU2hhZG93Um9vdF9oCiAKLSNpbmNsdWRlICJUcmVlU2NvcGUuaCIKKyNp
bmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzUsNyArMzUsNyBAQCBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsK
IGNsYXNzIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvcjsKIAotY2xhc3MgU2hhZG93Um9vdCA6IHB1
YmxpYyBUcmVlU2NvcGUgeworY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdt
ZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFkb3dSb290PiBjcmVhdGUo
RG9jdW1lbnQqKTsKIApAQCAtNTksOCArNTksOCBAQCBwcml2YXRlOgogICAgIFNoYWRvd1Jvb3Qo
RG9jdW1lbnQqKTsKICAgICB2aXJ0dWFsIH5TaGFkb3dSb290KCk7CiAKLSAgICB2aXJ0dWFsIFN0
cmluZyBub2RlTmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgTm9kZVR5cGUgbm9kZVR5cGUoKSBj
b25zdDsKKy8vICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CisvLyAgICB2aXJ0
dWFsIE5vZGVUeXBlIG5vZGVUeXBlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPE5v
ZGU+IGNsb25lTm9kZShib29sIGRlZXApOwogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFR5cGVBbGxv
d2VkKE5vZGVUeXBlKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaWRsIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaWRsCmluZGV4IDlh
ODA5MzM1OGJkYzBmZmYwMWM4Njk3MzVlMGE0M2ZkMjMwM2ExM2MuLjc5MGY0NzAzZjY2MmQ5NGE5
MjJhZDFmYWY0MDQ5NDRjMzgyOTEzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9T
aGFkb3dSb290LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5pZGwKQEAg
LTI5LDcgKzI5LDcgQEAgbW9kdWxlIGNvcmUgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENv
bmRpdGlvbmFsPVNIQURPV19ET00sCiAgICAgICAgIEVuYWJsZWRBdFJ1bnRpbWU9c2hhZG93RE9N
Ci0gICAgXSBTaGFkb3dSb290IDogTm9kZSB7CisgICAgXSBTaGFkb3dSb290IDogRG9jdW1lbnRG
cmFnbWVudCB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGhvc3Q7CiAgICAg
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9NYXJrdXBBY2N1bXVsYXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAppbmRl
eCBjN2QyNzBmYzcyNjAyN2NiNTM1MzUyZmMyM2FiOTc5NmFjNTVlNTM3Li41YzNiNDRhNmNkYjM5
NTY0OTlmNjkwODljOTFhOTIzZmNjNmVjMGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL01hcmt1cEFjY3VtdWxhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L01hcmt1cEFjY3VtdWxhdG9yLmNwcApAQCAtNDQzLDggKzQ0Myw2IEBAIHZvaWQgTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZFN0YXJ0TWFya3VwKFN0cmluZ0J1aWxkZXImIHJlc3VsdCwgY29uc3Qg
Tm9kZSogbm9kCiAgICAgY2FzZSBOb2RlOjpFTlRJVFlfUkVGRVJFTkNFX05PREU6CiAgICAgY2Fz
ZSBOb2RlOjpOT1RBVElPTl9OT0RFOgogICAgIGNhc2UgTm9kZTo6WFBBVEhfTkFNRVNQQUNFX05P
REU6Ci0gICAgY2FzZSBOb2RlOjpTSEFET1dfUk9PVF9OT0RFOgotICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTEVsZW1lbnRTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmNwcAppbmRleCA5ODg4NTc0M2U3NzY4NjU2
NmY5Mjk3ZjY1NDYzMTMwOGRhMzQ0YTdlLi45Y2MzYTAzMTY2ZTUxMWFiMjU4NjcyZjQzY2I3MDA4
MTVjNzc0MDI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxl
bWVudFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVu
dFN0YWNrLmNwcApAQCAtNTMsNyArNTMsNiBAQCBpbmxpbmUgYm9vbCBpc051bWJlcmVkSGVhZGVy
RWxlbWVudChDb250YWluZXJOb2RlKiBub2RlKQogaW5saW5lIGJvb2wgaXNSb290Tm9kZShDb250
YWluZXJOb2RlKiBub2RlKQogewogICAgIHJldHVybiBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6
OkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBO
b2RlOjpTSEFET1dfUk9PVF9OT0RFCiAgICAgICAgIHx8IG5vZGUtPmhhc1RhZ05hbWUoaHRtbFRh
Zyk7CiB9CiAKQEAgLTMxMCw3ICszMDksNyBAQCB2b2lkIEhUTUxFbGVtZW50U3RhY2s6OnBvcFVu
dGlsRm9yZWlnbkNvbnRlbnRTY29wZU1hcmtlcigpCiAgICAgCiB2b2lkIEhUTUxFbGVtZW50U3Rh
Y2s6OnB1c2hSb290Tm9kZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHJvb3ROb2RlKQogewot
ICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVO
VF9OT0RFIHx8IHJvb3ROb2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OlNIQURPV19ST09UX05PREUp
OworICAgIEFTU0VSVChyb290Tm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFH
TUVOVF9OT0RFKTsKICAgICBwdXNoUm9vdE5vZGVDb21tb24ocm9vdE5vZGUpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRWxlbWVudFN0YWNrLmgKaW5kZXggZjYwNGY4
MmM3ODM3OTk3NWQ2ZmZiMzFiOGRiYmRmMTYyN2VhZjk4OC4uNTY5N2U4MGM4Nzg2Y2RhNGQwMzJi
OWVkMDY5MjNlOTIxMGEyZTg1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTEVsZW1lbnRTdGFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxFbGVtZW50U3RhY2suaApAQCAtMTgwLDggKzE4MCw3IEBAIGlubGluZSBib29sIGlzSW5IVE1M
TmFtZXNwYWNlKE5vZGUqIG5vZGUpCiAgICAgLy8gQSBEb2N1bWVudEZyYWdtZW50IHRha2VzIHRo
ZSBwbGFjZSBvZiB0aGUgZG9jdW1lbnQgZWxlbWVudCB3aGVuIHBhcnNpbmcKICAgICAvLyBmcmFn
bWVudHMgYW5kIHNob3VsZCBiZSBjb25zaWRlcmVkIGluIHRoZSBIVE1MIG5hbWVzcGFjZS4KICAg
ICByZXR1cm4gbm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gSFRNTE5hbWVzOjp4aHRtbE5hbWVzcGFj
ZVVSSQotICAgICAgICB8fCBub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkRPQ1VNRU5UX0ZSQUdN
RU5UX05PREUKLSAgICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpTSEFET1dfUk9P
VF9OT0RFOyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KKyAg
ICAgICAgfHwgbm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpET0NVTUVOVF9GUkFHTUVOVF9OT0RF
OyAvLyBGSVhNRTogRG9lcyB0aGlzIGFsc28gYXBwbHkgdG8gU2hhZG93Um9vdD8KIH0KIAogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhVdGlsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFV0aWwuY3BwCmluZGV4IDRjNDVmY2JjYTFhODdmYWZmMmJiNTYyYWY1ZmVk
NzcxZTVmYzQ4YWIuLjdhOGZmMzNjZjY3MzI1ZmIxZWI0NGUyODUyOGZmNzdmZDZlMmYzZTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3htbC9YUGF0aFV0aWwuY3BwCkBAIC04NSw3ICs4NSw2IEBAIGJvb2wgaXNWYWxpZENv
bnRleHROb2RlKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX05PREU6CiAg
ICAgICAgIGNhc2UgTm9kZTo6RU5USVRZX1JFRkVSRU5DRV9OT0RFOgogICAgICAgICBjYXNlIE5v
ZGU6Ok5PVEFUSU9OX05PREU6Ci0gICAgICAgIGNhc2UgTm9kZTo6U0hBRE9XX1JPT1RfTk9ERToK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBOb2RlOjpURVhUX05PREU6
CiAgICAgICAgICAgICByZXR1cm4gIShub2RlLT5wYXJlbnROb2RlKCkgJiYgbm9kZS0+cGFyZW50
Tm9kZSgpLT5pc0F0dHJpYnV0ZU5vZGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJQYWdlU2VyaWFsaXplckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViUGFnZVNlcmlhbGl6ZXJJbXBsLmNwcAppbmRleCAzNzQ4OWM2ZGQ2NzEzZjRi
NTgzZWJkY2I2MjA3YzA3MTkwZTM5MTRjLi4xOTFhZTJlYWM0ZTBlNjE0ZDhlMDYwY2ZjNDYyZDAx
MzVjMTFmZjJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJQYWdl
U2VyaWFsaXplckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlBh
Z2VTZXJpYWxpemVySW1wbC5jcHAKQEAgLTQxOCw3ICs0MTgsNiBAQCB2b2lkIFdlYlBhZ2VTZXJp
YWxpemVySW1wbDo6YnVpbGRDb250ZW50Rm9yTm9kZShOb2RlKiBub2RlLAogICAgIGNhc2UgTm9k
ZTo6QVRUUklCVVRFX05PREU6CiAgICAgY2FzZSBOb2RlOjpET0NVTUVOVF9OT0RFOgogICAgIGNh
c2UgTm9kZTo6RE9DVU1FTlRfRlJBR01FTlRfTk9ERToKLSAgICBjYXNlIE5vZGU6OlNIQURPV19S
T09UX05PREU6CiAgICAgICAgIC8vIFNob3VsZCBub3QgZXhpc3QuCiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA4NGMzNDIzMGE1MmU4ZGFhOGRj
OTgzMDE2YmI4MDRlZGExNDk0MWM5Li5iMzk4NTEzZTBkZDYwNTFjNWM5ZTRkNTgyODg5MWU0ODk3
ODM0ZTIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMjcgIEhheWF0byBJdG8gIDxo
YXlhdG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIENoYW5nZSBjbGFzcyBoaWVyYXJjaHkgLSBT
aGFkb3dSb290IGluaGVyaXRzIERvY3VtZW50RnJhZ21lbnQsIHdoaWNoIGluaGVyaXRzIFRyZWVT
Y29wZS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2
NjkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBm
YXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMtYXBpLmh0bWw6CisgICAgICAgICogcmVzb3Vy
Y2VzL2R1bXAtYXMtbWFya3VwLmpzOgorICAgICAgICAoTWFya3VwLl9nZXQpOgorCiAyMDEyLTAx
LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIExpbnV4
LXNwZWNpZmljIG92ZXJyaWRlcy4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctcm9vdC1qcy1hcGkuaHRtbAppbmRleCBjZDZjNDQ2ZjJhODhmMDU2YWZmZmU0MDU0
ODI5ZDExYzJmNDQ3YzQ5Li5iMzgzYjIwOGJmMDVkMmM0MDk1NzY3ZDBhMjY4MzY2OTMyMmY5ZDBj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LXJvb3QtanMt
YXBpLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1yb290LWpz
LWFwaS5odG1sCkBAIC0xNSw2ICsxNSwxNCBAQCBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdChz
aGFkb3dIb3N0KTsKIHZhciBzaGFkb3dSb290ID0gaW50ZXJuYWxzLnNoYWRvd1Jvb3Qoc2hhZG93
SG9zdCk7CiBzaG91bGRCZSgic2hhZG93SG9zdCIsICJzaGFkb3dSb290Lmhvc3QiKTsKIAordmFy
IGRpdkluU2hhZG93Um9vdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworc2hhZG93
Um9vdC5hcHBlbmRDaGlsZChkaXZJblNoYWRvd1Jvb3QpOworc2hvdWxkQmUoInNoYWRvd1Jvb3Qu
cXVlcnlTZWxlY3RvcignZGl2JykiLCAiZGl2SW5TaGFkb3dSb290Iik7CisKK3ZhciByZXN1bHRz
ID0gc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYnKTsKK3Nob3VsZEJlKCJyZXN1bHRz
Lmxlbmd0aCIsICIxIik7CitzaG91bGRCZSgicmVzdWx0cy5pdGVtKDApIiwgImRpdkluU2hhZG93
Um9vdCIpOworCiA8L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3Jlc291cmNlcy9kdW1wLWFzLW1hcmt1cC5qcyBiL0xheW91dFRlc3RzL3Jlc291cmNlcy9kdW1w
LWFzLW1hcmt1cC5qcwppbmRleCA4Y2I2OGVjODdlN2Q5Zjk2MmY0NDc0ZjViMTgxZDFkOGY2N2E4
MjczLi40M2NjMGEzYjU3MDg3OGNhNTU5OGVkMjYwMzBlYTRmMjRhMjcyOWJjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9yZXNvdXJjZXMvZHVtcC1hcy1tYXJrdXAuanMKKysrIGIvTGF5b3V0VGVz
dHMvcmVzb3VyY2VzL2R1bXAtYXMtbWFya3VwLmpzCkBAIC0yMTUsOCArMjE1LDEwIEBAIE1hcmt1
cC5fZ2V0ID0gZnVuY3Rpb24obm9kZSwgZGVwdGgpCiAgICAgICAgICAgICAgICAgc3RyICs9IE1h
cmt1cC5faW5kZW50KGRlcHRoICsgMSkgKyAndGhpcy52YWx1ZT0iJyArIG5vZGUudmFsdWUgKyAn
Iic7CiAKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxNDogLy8gU2VlIFNIQURPV19ST09UX05P
REUgb24gTm9kZTo6Tm9kZVR5cGUKLSAgICAgICAgc3RyICs9ICI8c2hhZG93OnJvb3Q+IjsKKyAg
ICBjYXNlIE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERToKKyAgICAgICAgLy8gRklYTUU6IHdp
bmRvdy5pbnRlcm5hbHMgc2hvdWxkIGhhdmUgJ2lzU2hhZG93Um9vdChub2RlKSc/CisgICAgICAg
IGlmIChub2RlLmhvc3QgfHwgd2luZG93LmludGVybmFscyAmJiB3aW5kb3cuaW50ZXJuYWxzLnNo
YWRvd1BzZXVkb0lkKG5vZGUpKQorICAgICAgICAgIHN0ciArPSAiPHNoYWRvdzpyb290PiI7CiAg
ICAgfQogCiAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGg7
IGkgPCBsZW47IGkrKykgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124710</attachid>
            <date>2012-01-31 05:04:42 -0800</date>
            <delta_ts>2012-01-31 05:29:26 -0800</delta_ts>
            <desc>Make ShadowRoot inherit DocumentFragment. TreeScope is now stand-alone class</desc>
            <filename>bug-76693-20120131220440.patch</filename>
            <type>text/plain</type>
            <size>16919</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzEzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTQ3NTJmOWY4NWFiZWNi
MDhhYzE4YzUxYjc4MjQxZTMwNDRhY2RmNy4uMGM0ZjRhMzljNzlkZjVhYjk5MTZiMTBhYzdmZTIw
NThkNTRiNTBiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTMxICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyeWN5IHNvIHRoYXQgU2hhZG93Um9vdCBjYW4gaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNoYWRv
d1Jvb3QgaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY2xh
c3MgaGllcmFyY2h5IG9mIElETCBpbiB0aGUgc3BlYy4KKyAgICAgICAgVHJlZVNjb3BlIGJlY29t
ZXMgYSBzZXBhcmF0ZWQgY2xhc3MsIHdoaWNoIGlzIG5vdyBpbmhlcml0ZWQgYnkgRG9jdW1lbnQg
YW5kIFNoYWRvd1Jvb3QgdXNpbmcgbXVsdGlwbGUtaW5oZXJpdGFuY2UuCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcHJlLXJlcXVpcmVtZW50IGZvciBjb21pbmcgSURMIGNoYW5nZS4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXRhY2gpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6
OkRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6Cisg
ICAgICAgIChEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6flRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldElt
YWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZmluZEFuY2hvcik6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmF0dGFjaGVkTm9kZSk6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
Y29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc0ZpbGVJbnB1dCk6CisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3duZXJPZlRyZWVT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2Fi
bGVOb2RlKToKKwogMjAxMi0wMS0zMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUu
Y29tPgogCiAgICAgICAgIFNob3cgcmVwYWludCBjb3VudGVycyBpbiBpbmRpdmlkdWFsIHRpbGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzYWJiM2FkYTliY2I1MWYwMWYwMjQ3NWE4MTkx
NjczYmRlYThhMWExLi4yNDYyNTQ2OGY2ZWI4NmEwM2IwN2ZmYTYzYzU1MWM5YTk1MTIxN2I1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM3Myw3ICszNzMsNyBAQCBwcml2YXRlOgogdWlu
dDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAwOwogCiBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIGJvb2wgaXNYSFRNTCwgYm9vbCBp
c0hUTUwpCi0gICAgOiBUcmVlU2NvcGUoMCkKKyAgICA6IENvbnRhaW5lck5vZGUoMCksIFRyZWVT
Y29wZSh0aGlzKQogICAgICwgbV9ndWFyZFJlZkNvdW50KDApCiAgICAgLCBtX2NvbXBhdGliaWxp
dHlNb2RlKE5vUXVpcmtzTW9kZSkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGVMb2NrZWQoZmFs
c2UpCkBAIC02NDQsNyArNjQ0LDggQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFj
Y2Vzc0tleShjb25zdCBTdHJpbmcmIGtleSkKIAogdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NL
ZXlNYXAoVHJlZVNjb3BlKiByb290KQogewotICAgICBmb3IgKE5vZGUqIG4gPSByb290OyBuOyBu
ID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgeworICAgIE5vZGUqIG5vZGUgPSByb290ID8g
cm9vdC0+YXR0YWNoZWROb2RlKCkgOiAwOworICAgIGZvciAoTm9kZSogbiA9IG5vZGU7IG47IG4g
PSBuLT50cmF2ZXJzZU5leHROb2RlKG5vZGUpKSB7CiAgICAgICAgIGlmICghbi0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQg
PSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CkBAIC03MjIsNyArNzIzLDcgQEAgRE9NSW1wbGVt
ZW50YXRpb24qIERvY3VtZW50OjppbXBsZW1lbnRhdGlvbigpCiAKIHZvaWQgRG9jdW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRCeVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBO
b2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxkQ291bnREZWx0YSkKIHsKLSAgICBUcmVlU2NvcGU6
OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFu
Z2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAgQ29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2Vk
KGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERl
bHRhKTsKICAgICAKICAgICBFbGVtZW50KiBuZXdEb2N1bWVudEVsZW1lbnQgPSBmaXJzdEVsZW1l
bnRDaGlsZCh0aGlzKTsKICAgICBpZiAobmV3RG9jdW1lbnRFbGVtZW50ID09IG1fZG9jdW1lbnRF
bGVtZW50KQpAQCAtMTg0MCw3ICsxODQxLDcgQEAgdm9pZCBEb2N1bWVudDo6YXR0YWNoKCkKICAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlciA9IHJlbmRlcmVyKCk7CiAgICAgc2V0UmVuZGVyZXIoMCk7
CiAKLSAgICBUcmVlU2NvcGU6OmF0dGFjaCgpOworICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgp
OwogCiAgICAgc2V0UmVuZGVyZXIocmVuZGVyKTsKIH0KQEAgLTE4OTQsNyArMTg5NSw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAgbV9mb2N1c2VkTm9kZSA9IDA7CiAgICAgbV9hY3Rp
dmVOb2RlID0gMDsKIAotICAgIFRyZWVTY29wZTo6ZGV0YWNoKCk7CisgICAgQ29udGFpbmVyTm9k
ZTo6ZGV0YWNoKCk7CiAKICAgICB1bnNjaGVkdWxlU3R5bGVSZWNhbGMoKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAppbmRleCBmZGIzOTg4NzVmNTE0ZGZmYzRjNzAzOTcyMWIxYTc1NzQ3Y2JiOTdiLi4z
OTlmNDNjNTIyNjI3Nzc3ZWU3YWQyZWIwYzIwM2JmNjIwMzRkN2I0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNoZWNrZWRSYWRpb0J1dHRvbnMuaCIK
ICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5oIgogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVk
ZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCkBAIC0y
MTMsNyArMjE0LDcgQEAgZW51bSBQYWdlc2hvd0V2ZW50UGVyc2lzdGVuY2UgewogCiBlbnVtIFN0
eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHsgUmVjYWxjU3R5bGVJbW1lZGlhdGVseSwgRGVmZXJSZWNh
bGNTdHlsZSwgUmVjYWxjU3R5bGVJZk5lZWRlZCB9OwogCi1jbGFzcyBEb2N1bWVudCA6IHB1Ymxp
YyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKK2NsYXNzIERvY3Vt
ZW50IDogcHVibGljIENvbnRhaW5lck5vZGUsIHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1
bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsKQogICAgIHsKQEAgLTIy
Nyw4ICsyMjgsOCBAQCBwdWJsaWM6CiAKICAgICBNZWRpYVF1ZXJ5TWF0Y2hlciogbWVkaWFRdWVy
eU1hdGNoZXIoKTsKIAotICAgIHVzaW5nIFRyZWVTY29wZTo6cmVmOwotICAgIHVzaW5nIFRyZWVT
Y29wZTo6ZGVyZWY7CisgICAgdXNpbmcgQ29udGFpbmVyTm9kZTo6cmVmOworICAgIHVzaW5nIENv
bnRhaW5lck5vZGU6OmRlcmVmOwogCiAgICAgLy8gTm9kZXMgYmVsb25naW5nIHRvIHRoaXMgZG9j
dW1lbnQgaG9sZCBndWFyZCByZWZlcmVuY2VzIC0KICAgICAvLyB0aGVzZSBhcmUgZW5vdWdoIHRv
IGtlZXAgdGhlIGRvY3VtZW50IGZyb20gYmVpbmcgZGVzdHJveWVkLCBidXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAppbmRleCAyM2Q4YzIwNDNlMzhhOGRiMThmMmZjZGVj
ZGY0MDJkMzViMWRiYzg2Li5mN2NmYWRmY2M3OWYzMWQ1MTY2M2VhYWMwNDJiMzQ1ZGE3MzRjMTlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCkBAIC0zMiw4ICszMiw4
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRG
cmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50
KQorRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQs
IENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKKyAgICA6IENvbnRhaW5lck5vZGUo
ZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCmluZGV4IDZiZjUyZjFhNzg0YTEyMWM5
YTNiZDA4YzgwOGM4MjM2MmEwNGZmMzAuLjFlYTRkY2IzMjY1ZmYyYTg2NjhiNDBkZjRmYWY3M2Rm
NWUwZTRkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzksNyAr
MzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnRGcmFn
bWVudChEb2N1bWVudCopOworICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBDb25zdHJ1
Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVyKTsKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFt
ZSgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcAppbmRleCA0NzI2OGM0MTg0M2MxYmM2ZGFmYzdhODNjYTU0ODVjYjdlNzBiZGU2Li5m
NDcyOTQyNTM3ZDgzOTgwNWE2NzFlYWQ2ODk5YjM2ZjlkOWMyZjdhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIGlubGluZSBF
bGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNv
bnN0IFRyZWVTY29wZSoKIAogICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkp
KSB7CiAgICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1h
dGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgotICAgICAgICBmb3IgKE5vZGUq
IG5vZGUgPSBzY29wZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLT5hdHRhY2hlZE5v
ZGUoKS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgp
KSB7CiAgICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50
Kj4obm9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNDAyMmU5YWVhMTc2ODQ4
MTgyMjcyYjA3ODQyYzM5Yzk1NDEyZjc4Yi4uMjE0MWQ5NzlhMWE1ODJmNDdlOWM4ZDFiNmI0OThi
NzJhOTcxZjljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMzcsNyArMzcsOCBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50
KiBkb2N1bWVudCkKLSAgICA6IFRyZWVTY29wZShkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkK
KyAgICA6IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAg
LCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMoZmFsc2UpCiB7CiAg
ICAgQVNTRVJUKGRvY3VtZW50KTsKQEAgLTE2Myw3ICsxNjQsNyBAQCB2b2lkIFNoYWRvd1Jvb3Q6
OmF0dGFjaCgpCiAgICAgLy8gZW5zdXJlSW5jbHVzaW9ucygpLCBhbmQgaGVyZSB3ZSBqdXN0IGVu
c3VyZSB0aGF0CiAgICAgLy8gaXQgaXMgaW4gY2xlYW4gc3RhdGUuCiAgICAgQVNTRVJUKCFtX2lu
Y2x1c2lvbnMgfHwgIW1faW5jbHVzaW9ucy0+aGFzQ2FuZGlkYXRlcygpKTsKLSAgICBUcmVlU2Nv
cGU6OmF0dGFjaCgpOworICAgIERvY3VtZW50RnJhZ21lbnQ6OmF0dGFjaCgpOwogICAgIGlmICht
X2luY2x1c2lvbnMpCiAgICAgICAgIG1faW5jbHVzaW9ucy0+ZGlkU2VsZWN0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAppbmRleCA4MzZlNGFhYWNkNGY2Y2UxNWY3Y2FlY2JiOGJmYjc2NjQ3
YmZjZDdhLi5lNDgzZDBmOTYzYjA4Nzc1M2ExY2ZjYTI0YjMyYjNmZGQ0MjBiNDEzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dSb290LmgKQEAgLTI3LDYgKzI3LDcgQEAKICNpZm5kZWYgU2hhZG93Um9vdF9o
CiAjZGVmaW5lIFNoYWRvd1Jvb3RfaAogCisjaW5jbHVkZSAiRG9jdW1lbnRGcmFnbWVudC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIKIApAQCAt
MzYsNyArMzcsNyBAQCBjbGFzcyBDb250ZW50SW5jbHVzaW9uU2VsZWN0b3I7CiBjbGFzcyBEb2N1
bWVudDsKIGNsYXNzIEhUTUxDb250ZW50RWxlbWVudDsKIAotY2xhc3MgU2hhZG93Um9vdCA6IHB1
YmxpYyBUcmVlU2NvcGUgeworY2xhc3MgU2hhZG93Um9vdCA6IHB1YmxpYyBEb2N1bWVudEZyYWdt
ZW50LCBwdWJsaWMgVHJlZVNjb3BlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxT
aGFkb3dSb290PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTaGFk
b3dSb290PiBjcmVhdGUoRWxlbWVudCosIEV4Y2VwdGlvbkNvZGUmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5jcHAKaW5kZXggOTFmM2MyOTViZWFhMjIxZmYxNzg4ZDhmOWM4NDI0YmQ4MDAwMTVjZC4u
OTU5YTI4NjI0NzFlNzRkYjljMWFkZjc2M2I4MzEwYzQ5YWJmMmY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5jcHAKQEAgLTMwLDE1ICszMCwxNyBAQAogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMu
aCIKLSNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVk
ZSAiVHJlZVNjb3BlQWRvcHRlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1
bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKLSAgICA6
IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUpCitUcmVlU2NvcGU6OlRy
ZWVTY29wZShOb2RlKiBub2RlKQorICAgIDogbV9hdHRhY2hlZE5vZGUobm9kZSkKICAgICAsIG1f
cGFyZW50VHJlZVNjb3BlKDApCiAgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CkBAIC00
Niw4ICs0OCw2IEBAIFRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgQ29u
c3RydWN0aW9uVHlwZSBjb25zdHJ1Y3Rpb25UeXBlKQogCiBUcmVlU2NvcGU6On5UcmVlU2NvcGUo
KQogewotICAgIGlmIChoYXNSYXJlRGF0YSgpKQotICAgICAgICBjbGVhclJhcmVEYXRhKCk7CiB9
CiAKIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCkBAIC01OSw3ICs1OSw3
IEBAIHZvaWQgVHJlZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCiB2b2lkIFRyZWVTY29w
ZTo6c2V0UGFyZW50VHJlZVNjb3BlKFRyZWVTY29wZSogbmV3UGFyZW50U2NvcGUpCiB7CiAgICAg
Ly8gQSBkb2N1bWVudCBub2RlIGNhbm5vdCBiZSByZS1wYXJlbnRlZC4KLSAgICBBU1NFUlQoIWlz
RG9jdW1lbnROb2RlKCkpOworICAgIEFTU0VSVCghYXR0YWNoZWROb2RlKCktPmlzRG9jdW1lbnRO
b2RlKCkpOwogICAgIC8vIEV2ZXJ5IHNjb3BlIG90aGVyIHRoYW4gZG9jdW1lbnQgbmVlZHMgYSBw
YXJlbnQgc2NvcGUuCiAgICAgQVNTRVJUKG5ld1BhcmVudFNjb3BlKTsKIApAQCAtMTA1LDcgKzEw
NSw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNvbnN0IFN0cmlu
ZyYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICBzaXplX3QgaGFzaFBvcyA9IHVy
bC5maW5kKCcjJyk7CiAgICAgU3RyaW5nIG5hbWUgPSAoaGFzaFBvcyA9PSBub3RGb3VuZCA/IHVy
bCA6IHVybC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7Ci0gICAgaWYgKGRvY3VtZW50
KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKGF0dGFjaGVkTm9kZSgpLT5kb2N1bWVudCgp
LT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVs
ZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZShB
dG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRoaXMpKTsKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlN
YXBOYW1lKEF0b21pY1N0cmluZyhuYW1lKS5pbXBsKCksIHRoaXMpKTsKIH0KQEAgLTExNiwxMCAr
MTE2LDEwIEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5h
bWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChFbGVtZW50KiBlbGVtZW50ID0gZ2V0RWxl
bWVudEJ5SWQobmFtZSkpCiAgICAgICAgIHJldHVybiBlbGVtZW50OwotICAgIGZvciAoTm9kZSog
bm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBhdHRhY2hlZE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRy
YXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhVGFnKSkg
ewogICAgICAgICAgICAgSFRNTEFuY2hvckVsZW1lbnQqIGFuY2hvciA9IHN0YXRpY19jYXN0PEhU
TUxBbmNob3JFbGVtZW50Kj4obm9kZSk7Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aW5R
dWlya3NNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChhdHRhY2hlZE5vZGUoKS0+ZG9jdW1lbnQo
KS0+aW5RdWlya3NNb2RlKCkpIHsKICAgICAgICAgICAgICAgICAvLyBRdWlya3MgbW9kZSwgY2Fz
ZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIG9mIG5hbWVzLgogICAgICAgICAgICAgICAgIGlmIChl
cXVhbElnbm9yaW5nQ2FzZShhbmNob3ItPm5hbWUoKSwgbmFtZSkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBhbmNob3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKaW5kZXggZmQ2YzNjYjhkZjll
ZjVhOTAxZjE2M2MyYTY0YzZiYjA0OWNkMDAxYi4uM2FkZjhhNmEzYzczNmY5N2FkMjZjNWNlODQ4
ZTQwYWE4NWZlNTgwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaApAQCAtMjYsMTUgKzI2LDE3IEBA
CiAjaWZuZGVmIFRyZWVTY29wZV9oCiAjZGVmaW5lIFRyZWVTY29wZV9oCiAKLSNpbmNsdWRlICJD
b250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRPcmRlcmVkTWFwLmgiCisjaW5jbHVk
ZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1l
bnQ7CitjbGFzcyBOb2RlOwogCi1jbGFzcyBUcmVlU2NvcGUgOiBwdWJsaWMgQ29udGFpbmVyTm9k
ZSB7CitjbGFzcyBUcmVlU2NvcGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKIAogcHVi
bGljOgpAQCAtNjcsMTMgKzY5LDE2IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNp
YyBET00gbXV0YXRpb24gbWV0aG9kcyAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCiAgICAgdm9pZCBh
ZG9wdElmTmVlZGVkKE5vZGUqKTsKIAorICAgIE5vZGUqIGF0dGFjaGVkTm9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXR0YWNoZWROb2RlOyB9OworCiBwcm90ZWN0ZWQ6Ci0gICAgVHJlZVNjb3BlKERv
Y3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CisgICAgVHJlZVNj
b3BlKE5vZGUqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAgIHZvaWQgZGVzdHJv
eVRyZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBOb2RlKiBtX2F0dGFjaGVkTm9kZTsK
ICAgICBUcmVlU2NvcGUqIG1fcGFyZW50VHJlZVNjb3BlOwogCiAgICAgRG9jdW1lbnRPcmRlcmVk
TWFwIG1fZWxlbWVudHNCeUlkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZUFkb3B0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3Bw
CmluZGV4IGFiMTE3OTIzZTc4ZDQyMWVjNGQwMDBmOTIzOWE5MTRlMjRjZmM4NjYuLmJkNzczNTNj
NGZlM2M3NWUyOWY5MTVmNWRmNjY2ZDJhNWIzODRmMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlQWRvcHRlci5jcHAKQEAgLTQ0LDggKzQ0LDggQEAgdm9pZCBUcmVlU2NvcGVBZG9wdGVy
Ojptb3ZlVHJlZVRvTmV3U2NvcGUoTm9kZSogcm9vdCkgY29uc3QKICAgICAvLyB0aGF0IGVsZW1l
bnQgbWF5IGNvbnRhaW4gc3RhbGUgZGF0YSBhcyBjaGFuZ2VzIG1hZGUgdG8gaXQgd2lsbCBoYXZl
IHVwZGF0ZWQgdGhlIERPTVRyZWVWZXJzaW9uCiAgICAgLy8gb2YgdGhlIGRvY3VtZW50IGl0IHdh
cyBtb3ZlZCB0by4gQnkgaW5jcmVhc2luZyB0aGUgRE9NVHJlZVZlcnNpb24gb2YgdGhlIGRvbmF0
aW5nIGRvY3VtZW50IGhlcmUKICAgICAvLyB3ZSBlbnN1cmUgdGhhdCB0aGUgY29sbGVjdGlvbiBj
YWNoZSB3aWxsIGJlIGludmFsaWRhdGVkIGFzIG5lZWRlZCB3aGVuIHRoZSBlbGVtZW50IGlzIG1v
dmVkIGJhY2suCi0gICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29wZSA/IG1fb2xk
U2NvcGUtPmRvY3VtZW50KCkgOiAwOwotICAgIERvY3VtZW50KiBuZXdEb2N1bWVudCA9IG1fbmV3
U2NvcGUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIG9sZERvY3VtZW50ID0gbV9vbGRTY29w
ZSA/IG1fb2xkU2NvcGUtPmF0dGFjaGVkTm9kZSgpLT5kb2N1bWVudCgpIDogMDsKKyAgICBEb2N1
bWVudCogbmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5hdHRhY2hlZE5vZGUoKS0+ZG9jdW1lbnQo
KTsKICAgICBib29sIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCA9IG9sZERvY3VtZW50ICE9IG5ld0Rv
Y3VtZW50OwogICAgIGlmIChvbGREb2N1bWVudCAmJiB3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAg
ICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBiYzQ1ZGJlNzFkYTc5NmM3NTg3MmZhZGRkMjkyNDk2
OWI5ZDc0ZTdhLi41NTZhN2IwYWMyMTE5MDk1MmNmYzNhYjI4YTA5OTY2OTFhMmJkMDNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjcwLDggKzI3MCw4IEBAIHN0
YXRpYyBIVE1MSW5wdXRFbGVtZW50KiBhc0ZpbGVJbnB1dChOb2RlKiBub2RlKQogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CiAKICAg
ICAvLyBJZiB0aGlzIGlzIGEgYnV0dG9uIGluc2lkZSBvZiB0aGUgYSBmaWxlIGlucHV0LCBtb3Zl
IHVwIHRvIHRoZSBmaWxlIGlucHV0LgotICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVt
ZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5pc1NoYWRv
d1Jvb3QoKSkKLSAgICAgICAgaW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50LT50cmVlU2NvcGUo
KS0+c2hhZG93SG9zdCgpLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmIChpbnB1dEVsZW1lbnQg
JiYgaW5wdXRFbGVtZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29w
ZSgpLT5hdHRhY2hlZE5vZGUoKS0+aXNTaGFkb3dSb290KCkpCisgICAgICAgIGlucHV0RWxlbWVu
dCA9IGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPmF0dGFjaGVkTm9kZSgpLT5zaGFkb3dIb3N0
KCktPnRvSW5wdXRFbGVtZW50KCk7CiAKICAgICByZXR1cm4gaW5wdXRFbGVtZW50ICYmIGlucHV0
RWxlbWVudC0+aXNGaWxlVXBsb2FkKCkgPyBpbnB1dEVsZW1lbnQgOiAwOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCmluZGV4IGIxOGQ0ZDE0ZDQwYmZlZDNlNTBmMmNj
YzZhMDMzZGQ4ODIzNjEyNTUuLmMyYmQ3MmYzYmM4NmIyZjU2ZjMxM2M2MWU5MDZjM2YzZWVhOTBm
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKQEAgLTMxOSwxMCAr
MzE5LDEwIEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3Jk
ZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiBzdGF0aWMgaW5saW5lIE5vZGUqIG93
bmVyT2ZUcmVlU2NvcGUoVHJlZVNjb3BlKiBzY29wZSkKIHsKICAgICBBU1NFUlQoc2NvcGUpOwot
ICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIHJldHVybiBzY29wZS0+c2hh
ZG93SG9zdCgpOwotICAgIGlmIChzY29wZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAg
cmV0dXJuIHNjb3BlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKKyAgICBp
ZiAoc2NvcGUtPmF0dGFjaGVkTm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJu
IHNjb3BlLT5hdHRhY2hlZE5vZGUoKS0+c2hhZG93SG9zdCgpOworICAgIGlmIChzY29wZS0+YXR0
YWNoZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBzY29wZS0+
YXR0YWNoZWROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogICAg
IHJldHVybiAwOwogfQogCkBAIC00MTksMTggKzQxOSwxOCBAQCBOb2RlKiBGb2N1c0NvbnRyb2xs
ZXI6Om5leHRGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXli
b2FyZAogICAgIC8vIExvb2sgZm9yIHRoZSBmaXJzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0Ogog
ICAgIC8vIDEpIGhhcyB0aGUgbG93ZXN0IHRhYmluZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4gc3Rh
cnQncyB0YWJpbmRleCAob3IgMCwgaWYgc3RhcnQgaXMgbnVsbCksIGFuZAogICAgIC8vIDIpIGNv
bWVzIGZpcnN0IGluIHRoZSBzY29wZSwgaWYgdGhlcmUncyBhIHRpZS4KLSAgICBpZiAoTm9kZSog
d2lubmVyID0gbmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBzdGFydCA/IHN0YXJ0
LT50YWJJbmRleCgpIDogMCwgZXZlbnQpKQorICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9k
ZVdpdGhHcmVhdGVyVGFiSW5kZXgoc2NvcGUtPmF0dGFjaGVkTm9kZSgpLCBzdGFydCA/IHN0YXJ0
LT50YWJJbmRleCgpIDogMCwgZXZlbnQpKQogICAgICAgICByZXR1cm4gd2lubmVyOwogCiAgICAg
Ly8gVGhlcmUgYXJlIG5vIG5vZGVzIHdpdGggYSB0YWJpbmRleCBncmVhdGVyIHRoYW4gc3RhcnQn
cyB0YWJpbmRleCwKICAgICAvLyBzbyBmaW5kIHRoZSBmaXJzdCBub2RlIHdpdGggYSB0YWJpbmRl
eCBvZiAwLgotICAgIHJldHVybiBuZXh0Tm9kZVdpdGhFeGFjdFRhYkluZGV4KHNjb3BlLCAwLCBl
dmVudCk7CisgICAgcmV0dXJuIG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUtPmF0dGFj
aGVkTm9kZSgpLCAwLCBldmVudCk7CiB9CiAKIE5vZGUqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlv
dXNGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2
ZW50KiBldmVudCkKIHsKICAgICBOb2RlKiBsYXN0OwotICAgIGZvciAobGFzdCA9IHNjb3BlOyBs
YXN0LT5sYXN0Q2hpbGQoKTsgbGFzdCA9IGxhc3QtPmxhc3RDaGlsZCgpKSB7IH0KKyAgICBmb3Ig
KGxhc3QgPSBzY29wZS0+YXR0YWNoZWROb2RlKCk7IGxhc3QtPmxhc3RDaGlsZCgpOyBsYXN0ID0g
bGFzdC0+bGFzdENoaWxkKCkpIHsgfQogCiAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGxh
c3Qgbm9kZSBpbiB0aGUgc2NvcGUgdGhhdCBjb21lcyBiZWZvcmUgc3RhcnQgYW5kIGhhcyB0aGUg
c2FtZSB0YWJpbmRleCBhcyBzdGFydC4KICAgICAvLyBJZiBzdGFydCBpcyBudWxsLCBmaW5kIHRo
ZSBsYXN0IG5vZGUgaW4gdGhlIHNjb3BlIHdpdGggYSB0YWJpbmRleCBvZiAwLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124712</attachid>
            <date>2012-01-31 05:29:35 -0800</date>
            <delta_ts>2012-01-31 21:36:10 -0800</delta_ts>
            <desc>Rebased</desc>
            <filename>bug-76693-20120131222934.patch</filename>
            <type>text/plain</type>
            <size>16944</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uM2JiYTMxNzNjMTQwMjIwYmUwZTcyNTA4ZDUxZTky
MjRhOWUyNWFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTMxICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyeWN5IHNvIHRoYXQgU2hhZG93Um9vdCBjYW4gaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNoYWRv
d1Jvb3QgaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY2xh
c3MgaGllcmFyY2h5IG9mIElETCBpbiB0aGUgc3BlYy4KKyAgICAgICAgVHJlZVNjb3BlIGJlY29t
ZXMgYSBzZXBhcmF0ZWQgY2xhc3MsIHdoaWNoIGlzIG5vdyBpbmhlcml0ZWQgYnkgRG9jdW1lbnQg
YW5kIFNoYWRvd1Jvb3QgdXNpbmcgbXVsdGlwbGUtaW5oZXJpdGFuY2UuCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcHJlLXJlcXVpcmVtZW50IGZvciBjb21pbmcgSURMIGNoYW5nZS4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXRhY2gpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6
OkRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6Cisg
ICAgICAgIChEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6flRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldElt
YWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZmluZEFuY2hvcik6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OmF0dGFjaGVkTm9kZSk6CisgICAgICAgIChUcmVlU2NvcGUpOgorICAg
ICAgICAqIGRvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVT
Y29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZSk6CisgICAgICAgICogcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjphc0ZpbGVJbnB1dCk6CisgICAgICAgICog
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3duZXJPZlRyZWVT
Y29wZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2Fi
bGVOb2RlKToKKwogMjAxMi0wMS0zMSAgUGFibG8gRmxvdXJldCAgPHBhYmxvZkBtb3Rvcm9sYS5j
b20+CiAKICAgICAgICAgRml4IGNvbXBpbGF0aW9uIGVycm9ycyBvbiBidWlsZC13ZWJraXQgLS1k
ZWJ1ZyAtLW5vLXdvcmtlcnMgb24gbWFjLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggM2Fi
YjNhZGE5YmNiNTFmMDFmMDI0NzVhODE5MTY3M2JkZWE4YTFhMS4uMjQ2MjU0NjhmNmViODZhMDNi
MDdmZmE2M2M1NTFjOWE5NTEyMTdiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC0zNzMs
NyArMzczLDcgQEAgcHJpdmF0ZToKIHVpbnQ2NF90IERvY3VtZW50OjpzX2dsb2JhbFRyZWVWZXJz
aW9uID0gMDsKIAogRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYg
dXJsLCBib29sIGlzWEhUTUwsIGJvb2wgaXNIVE1MKQotICAgIDogVHJlZVNjb3BlKDApCisgICAg
OiBDb250YWluZXJOb2RlKDApLCBUcmVlU2NvcGUodGhpcykKICAgICAsIG1fZ3VhcmRSZWZDb3Vu
dCgwKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZShOb1F1aXJrc01vZGUpCiAgICAgLCBtX2Nv
bXBhdGliaWxpdHlNb2RlTG9ja2VkKGZhbHNlKQpAQCAtNjQ0LDcgKzY0NCw4IEBAIEVsZW1lbnQq
IERvY3VtZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZv
aWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5TWFwKFRyZWVTY29wZSogcm9vdCkKIHsKLSAgICAg
Zm9yIChOb2RlKiBuID0gcm9vdDsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsK
KyAgICBOb2RlKiBub2RlID0gcm9vdCA/IHJvb3QtPmF0dGFjaGVkTm9kZSgpIDogMDsKKyAgICBm
b3IgKE5vZGUqIG4gPSBub2RlOyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShub2RlKSkgewog
ICAgICAgICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwpAQCAt
NzIyLDcgKzcyMyw3IEBAIERPTUltcGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXRp
b24oKQogCiB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50
RGVsdGEpCiB7Ci0gICAgVHJlZVNjb3BlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2Vy
LCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIENvbnRh
aW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwg
YWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgCiAgICAgRWxlbWVudCogbmV3RG9j
dW1lbnRFbGVtZW50ID0gZmlyc3RFbGVtZW50Q2hpbGQodGhpcyk7CiAgICAgaWYgKG5ld0RvY3Vt
ZW50RWxlbWVudCA9PSBtX2RvY3VtZW50RWxlbWVudCkKQEAgLTE4NDAsNyArMTg0MSw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmF0dGFjaCgpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXIgPSByZW5kZXJl
cigpOwogICAgIHNldFJlbmRlcmVyKDApOwogCi0gICAgVHJlZVNjb3BlOjphdHRhY2goKTsKKyAg
ICBDb250YWluZXJOb2RlOjphdHRhY2goKTsKIAogICAgIHNldFJlbmRlcmVyKHJlbmRlcik7CiB9
CkBAIC0xODk0LDcgKzE4OTUsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2goKQogICAgIG1fZm9j
dXNlZE5vZGUgPSAwOwogICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAKLSAgICBUcmVlU2NvcGU6OmRl
dGFjaCgpOworICAgIENvbnRhaW5lck5vZGU6OmRldGFjaCgpOwogCiAgICAgdW5zY2hlZHVsZVN0
eWxlUmVjYWxjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmRiMzk4ODc1ZjUxNGRmZmM0
YzcwMzk3MjFiMWE3NTc0N2NiYjk3Yi4uMzk5ZjQzYzUyMjYyNzc3N2VlN2FkMmViMGMyMDNiZjYy
MDM0ZDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRl
ICJDaGVja2VkUmFkaW9CdXR0b25zLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNp
bmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJE
T01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRl
ICJEb2N1bWVudFRpbWluZy5oIgpAQCAtMjEzLDcgKzIxNCw3IEBAIGVudW0gUGFnZXNob3dFdmVu
dFBlcnNpc3RlbmNlIHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB7IFJlY2FsY1N0
eWxlSW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUsIFJlY2FsY1N0eWxlSWZOZWVkZWQgfTsK
IAotY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCB7CitjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJs
aWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0
IEtVUkwmIHVybCkKICAgICB7CkBAIC0yMjcsOCArMjI4LDggQEAgcHVibGljOgogCiAgICAgTWVk
aWFRdWVyeU1hdGNoZXIqIG1lZGlhUXVlcnlNYXRjaGVyKCk7CiAKLSAgICB1c2luZyBUcmVlU2Nv
cGU6OnJlZjsKLSAgICB1c2luZyBUcmVlU2NvcGU6OmRlcmVmOworICAgIHVzaW5nIENvbnRhaW5l
ck5vZGU6OnJlZjsKKyAgICB1c2luZyBDb250YWluZXJOb2RlOjpkZXJlZjsKIAogICAgIC8vIE5v
ZGVzIGJlbG9uZ2luZyB0byB0aGlzIGRvY3VtZW50IGhvbGQgZ3VhcmQgcmVmZXJlbmNlcyAtCiAg
ICAgLy8gdGhlc2UgYXJlIGVub3VnaCB0byBrZWVwIHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRl
c3Ryb3llZCwgYnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXgg
MjNkOGMyMDQzZTM4YThkYjE4ZjJmY2RlY2RmNDAyZDM1YjFkYmM4Ni4uZjdjZmFkZmNjNzlmMzFk
NTE2NjNlYWFjMDQyYjM0NWRhNzM0YzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZy
YWdtZW50LmNwcApAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURv
Y3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogQ29udGFpbmVyTm9kZShkb2N1bWVudCkKK0RvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJh
Z21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5
cGUpCisgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewog
ICAgIEFTU0VSVChkb2N1bWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQu
aAppbmRleCA2YmY1MmYxYTc4NGExMjFjOWEzYmQwOGM4MDhjODIzNjJhMDRmZjMwLi4xZWE0ZGNi
MzI2NWZmMmE4NjY4YjQwZGY0ZmFmNzNkZjVlMGU0ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEZyYWdtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9v
bCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJv
dGVjdGVkOgotICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsKKyAgICBEb2N1bWVudEZy
YWdtZW50KERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CiAg
ICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKaW5kZXggNDcyNjhjNDE4NDNjMWJjNmRh
ZmM3YTgzY2E1NDg1Y2I3ZTcwYmRlNi4uZjQ3Mjk0MjUzN2Q4Mzk4MDVhNjcxZWFkNjg5OWIzNmY5
ZDljMmY3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1h
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAg
LTExNyw3ICsxMTcsNyBAQCBpbmxpbmUgRWxlbWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQo
QXRvbWljU3RyaW5nSW1wbCoga2V5LCBjb25zdCBUcmVlU2NvcGUqCiAKICAgICBpZiAobV9kdXBs
aWNhdGVDb3VudHMuY29udGFpbnMoa2V5KSkgewogICAgICAgICAvLyBXZSBrbm93IHRoZXJlJ3Mg
YXQgbGVhc3Qgb25lIG5vZGUgdGhhdCBtYXRjaGVzOyBpdGVyYXRlIHRvIGZpbmQgdGhlIGZpcnN0
IG9uZS4KLSAgICAgICAgZm9yIChOb2RlKiBub2RlID0gc2NvcGUtPmZpcnN0Q2hpbGQoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAgICAgICBmb3IgKE5vZGUq
IG5vZGUgPSBzY29wZS0+YXR0YWNoZWROb2RlKCktPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9
IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKCFub2RlLT5pc0Vs
ZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBlbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwCmluZGV4IDQwMjJlOWFlYTE3Njg0ODE4MjI3MmIwNzg0MmMzOWM5NTQxMmY3OGIuLjIxNDFk
OTc5YTFhNTgyZjQ3ZTljOGQxYjZiNDk4YjcyYTk3MWY5Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
Um9vdC5jcHAKQEAgLTM3LDcgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogU2hhZG93
Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBUcmVlU2NvcGUoZG9j
dW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAgOiBEb2N1bWVudEZyYWdtZW50KGRvY3VtZW50
LCBDcmVhdGVTaGFkb3dSb290KQorICAgICwgVHJlZVNjb3BlKHRoaXMpCiAgICAgLCBtX2FwcGx5
QXV0aG9yU2hlZXRzKGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CkBAIC0xNjMsNyAr
MTY0LDcgQEAgdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogICAgIC8vIGVuc3VyZUluY2x1c2lv
bnMoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAgIC8vIGl0IGlzIGluIGNsZWFu
IHN0YXRlLgogICAgIEFTU0VSVCghbV9pbmNsdXNpb25zIHx8ICFtX2luY2x1c2lvbnMtPmhhc0Nh
bmRpZGF0ZXMoKSk7Ci0gICAgVHJlZVNjb3BlOjphdHRhY2goKTsKKyAgICBEb2N1bWVudEZyYWdt
ZW50OjphdHRhY2goKTsKICAgICBpZiAobV9pbmNsdXNpb25zKQogICAgICAgICBtX2luY2x1c2lv
bnMtPmRpZFNlbGVjdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggODM2ZTRhYWFj
ZDRmNmNlMTVmN2NhZWNiYjhiZmI3NjY0N2JmY2Q3YS4uZTQ4M2QwZjk2M2IwODc3NTNhMWNmY2Ey
NGIzMmIzZmRkNDIwYjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jv
b3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0yNyw2ICsyNyw3
IEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RfaAogI2RlZmluZSBTaGFkb3dSb290X2gKIAorI2luY2x1
ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5j
bHVkZSAiVHJlZVNjb3BlLmgiCiAKQEAgLTM2LDcgKzM3LDcgQEAgY2xhc3MgQ29udGVudEluY2x1
c2lvblNlbGVjdG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVsZW1lbnQ7
CiAKLWNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKK2NsYXNzIFNoYWRvd1Jv
b3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50Kik7CiAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKEVsZW1lbnQqLCBFeGNlcHRp
b25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDkxZjNjMjk1YmVhYTIyMWZm
MTc4OGQ4ZjljODQyNGJkODAwMDE1Y2QuLjk1OWEyODYyNDcxZTc0ZGI5YzFhZGY3NjNiODMxMGM0
OWFiZjJmODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMCwxNSArMzAsMTcgQEAK
ICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTm9kZVJhcmVEYXRhLmgiCisj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZUFkb3B0ZXIuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAot
VHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBl
IGNvbnN0cnVjdGlvblR5cGUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1
Y3Rpb25UeXBlKQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoTm9kZSogbm9kZSkKKyAgICA6IG1fYXR0
YWNoZWROb2RlKG5vZGUpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQogICAgICwgbV9udW1O
b2RlTGlzdENhY2hlcygwKQogewpAQCAtNDYsOCArNDgsNiBAQCBUcmVlU2NvcGU6OlRyZWVTY29w
ZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkK
IAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKIHsKLSAgICBpZiAoaGFzUmFyZURhdGEoKSkKLSAg
ICAgICAgY2xlYXJSYXJlRGF0YSgpOwogfQogCiB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVT
Y29wZURhdGEoKQpAQCAtNTksNyArNTksNyBAQCB2b2lkIFRyZWVTY29wZTo6ZGVzdHJveVRyZWVT
Y29wZURhdGEoKQogdm9pZCBUcmVlU2NvcGU6OnNldFBhcmVudFRyZWVTY29wZShUcmVlU2NvcGUq
IG5ld1BhcmVudFNjb3BlKQogewogICAgIC8vIEEgZG9jdW1lbnQgbm9kZSBjYW5ub3QgYmUgcmUt
cGFyZW50ZWQuCi0gICAgQVNTRVJUKCFpc0RvY3VtZW50Tm9kZSgpKTsKKyAgICBBU1NFUlQoIWF0
dGFjaGVkTm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKICAgICAvLyBFdmVyeSBzY29wZSBvdGhl
ciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgogICAgIEFTU0VSVChuZXdQYXJl
bnRTY29wZSk7CiAKQEAgLTEwNSw3ICsxMDUsNyBAQCBIVE1MTWFwRWxlbWVudCogVHJlZVNjb3Bl
OjpnZXRJbWFnZU1hcChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7
CiAgICAgc2l6ZV90IGhhc2hQb3MgPSB1cmwuZmluZCgnIycpOwogICAgIFN0cmluZyBuYW1lID0g
KGhhc2hQb3MgPT0gbm90Rm91bmQgPyB1cmwgOiB1cmwuc3Vic3RyaW5nKGhhc2hQb3MgKyAxKSku
aW1wbCgpOwotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQorICAgIGlmIChh
dHRhY2hlZE5vZGUoKS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0RWxl
bWVudEJ5TG93ZXJjYXNlZE1hcE5hbWUoQXRvbWljU3RyaW5nKG5hbWUubG93ZXIoKSkuaW1wbCgp
LCB0aGlzKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFn
ZU1hcHNCeU5hbWUuZ2V0RWxlbWVudEJ5TWFwTmFtZShBdG9taWNTdHJpbmcobmFtZSkuaW1wbCgp
LCB0aGlzKSk7CiB9CkBAIC0xMTYsMTAgKzExNiwxMCBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmZp
bmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAo
RWxlbWVudCogZWxlbWVudCA9IGdldEVsZW1lbnRCeUlkKG5hbWUpKQogICAgICAgICByZXR1cm4g
ZWxlbWVudDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0gYXR0YWNoZWROb2Rl
KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgaWYg
KG5vZGUtPmhhc1RhZ05hbWUoYVRhZykpIHsKICAgICAgICAgICAgIEhUTUxBbmNob3JFbGVtZW50
KiBhbmNob3IgPSBzdGF0aWNfY2FzdDxIVE1MQW5jaG9yRWxlbWVudCo+KG5vZGUpOwotICAgICAg
ICAgICAgaWYgKGRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CisgICAgICAgICAgICBpZiAo
YXR0YWNoZWROb2RlKCktPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gUXVpcmtzIG1vZGUsIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBuYW1l
cy4KICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYW5jaG9yLT5uYW1lKCks
IG5hbWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5jaG9yOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVT
Y29wZS5oCmluZGV4IGZkNmMzY2I4ZGY5ZWY1YTkwMWYxNjNjMmE2NGM2YmIwNDljZDAwMWIuLjNh
ZGY4YTZhM2M3MzZmOTdhZDI2YzVjZTg0OGU0MGFhODVmZTU4MGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmgKQEAgLTI2LDE1ICsyNiwxNyBAQAogI2lmbmRlZiBUcmVlU2NvcGVfaAogI2RlZmluZSBU
cmVlU2NvcGVfaAogCi0jaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50T3JkZXJlZE1hcC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3Rm
L3RleHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRWxl
bWVudDsKIGNsYXNzIEhUTUxNYXBFbGVtZW50OworY2xhc3MgTm9kZTsKIAotY2xhc3MgVHJlZVNj
b3BlIDogcHVibGljIENvbnRhaW5lck5vZGUgeworY2xhc3MgVHJlZVNjb3BlIHsKICAgICBmcmll
bmQgY2xhc3MgRG9jdW1lbnQ7CiAKIHB1YmxpYzoKQEAgLTY3LDEzICs2OSwxNiBAQCBwdWJsaWM6
CiAgICAgLy8gVXNlZCBieSB0aGUgYmFzaWMgRE9NIG11dGF0aW9uIG1ldGhvZHMgKGUuZy4sIGFw
cGVuZENoaWxkKCkpLgogICAgIHZvaWQgYWRvcHRJZk5lZWRlZChOb2RlKik7CiAKKyAgICBOb2Rl
KiBhdHRhY2hlZE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2F0dGFjaGVkTm9kZTsgfTsKKwogcHJv
dGVjdGVkOgotICAgIFRyZWVTY29wZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVh
dGVDb250YWluZXIpOworICAgIFRyZWVTY29wZShOb2RlKik7CiAgICAgdmlydHVhbCB+VHJlZVNj
b3BlKCk7CiAKICAgICB2b2lkIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKIHByaXZhdGU6Cisg
ICAgTm9kZSogbV9hdHRhY2hlZE5vZGU7CiAgICAgVHJlZVNjb3BlKiBtX3BhcmVudFRyZWVTY29w
ZTsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1lbnRzQnlJZDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCBhYjExNzkyM2U3OGQ0MjFlYzRkMDAwZjky
MzlhOTE0ZTI0Y2ZjODY2Li5iZDc3MzUzYzRmZTNjNzVlMjlmOTE1ZjVkZjY2NmQyYTViMzg0ZjBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCkBAIC00NCw4ICs0NCw4
IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKE5vZGUqIHJvb3Qp
IGNvbnN0CiAgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250YWluIHN0YWxlIGRhdGEgYXMgY2hh
bmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRoZSBET01UcmVlVmVyc2lvbgogICAg
IC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8uIEJ5IGluY3JlYXNpbmcgdGhlIERP
TVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVudCBoZXJlCiAgICAgLy8gd2UgZW5z
dXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBiZSBpbnZhbGlkYXRlZCBhcyBuZWVk
ZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgotICAgIERvY3VtZW50KiBvbGREb2N1
bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNjb3BlLT5kb2N1bWVudCgpIDogMDsKLSAgICBEb2N1
bWVudCogbmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50
KiBvbGREb2N1bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNjb3BlLT5hdHRhY2hlZE5vZGUoKS0+
ZG9jdW1lbnQoKSA6IDA7CisgICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+
YXR0YWNoZWROb2RlKCktPmRvY3VtZW50KCk7CiAgICAgYm9vbCB3aWxsTW92ZVRvTmV3RG9jdW1l
bnQgPSBvbGREb2N1bWVudCAhPSBuZXdEb2N1bWVudDsKICAgICBpZiAob2xkRG9jdW1lbnQgJiYg
d2lsbE1vdmVUb05ld0RvY3VtZW50KQogICAgICAgICBvbGREb2N1bWVudC0+aW5jRE9NVHJlZVZl
cnNpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXggYmM0NWRi
ZTcxZGE3OTZjNzU4NzJmYWRkZDI5MjQ5NjliOWQ3NGU3YS4uNTU2YTdiMGFjMjExOTA5NTJjZmMz
YWIyOGEwOTk2NjkxYTJiZDAzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAKQEAgLTI3MCw4ICsyNzAsOCBAQCBzdGF0aWMgSFRNTElucHV0RWxlbWVudCogYXNGaWxlSW5w
dXQoTm9kZSogbm9kZSkKICAgICBIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBub2Rl
LT50b0lucHV0RWxlbWVudCgpOwogCiAgICAgLy8gSWYgdGhpcyBpcyBhIGJ1dHRvbiBpbnNpZGUg
b2YgdGhlIGEgZmlsZSBpbnB1dCwgbW92ZSB1cCB0byB0aGUgZmlsZSBpbnB1dC4KLSAgICBpZiAo
aW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVt
ZW50LT50cmVlU2NvcGUoKS0+aXNTaGFkb3dSb290KCkpCi0gICAgICAgIGlucHV0RWxlbWVudCA9
IGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnNoYWRvd0hvc3QoKS0+dG9JbnB1dEVsZW1lbnQo
KTsKKyAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNUZXh0QnV0dG9uKCkg
JiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+YXR0YWNoZWROb2RlKCktPmlzU2hhZG93Um9v
dCgpKQorICAgICAgICBpbnB1dEVsZW1lbnQgPSBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5h
dHRhY2hlZE5vZGUoKS0+c2hhZG93SG9zdCgpLT50b0lucHV0RWxlbWVudCgpOwogCiAgICAgcmV0
dXJuIGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzRmlsZVVwbG9hZCgpID8gaW5wdXRF
bGVtZW50IDogMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRl
eCBiMThkNGQxNGQ0MGJmZWQzZTUwZjJjY2M2YTAzM2RkODgyMzYxMjU1Li5jMmJkNzJmM2JjODZi
MmY1NmYzMTNjNjFlOTA2YzNmM2VlYTkwZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0Nv
bnRyb2xsZXIuY3BwCkBAIC0zMTksMTAgKzMxOSwxMCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6
YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5
Ygogc3RhdGljIGlubGluZSBOb2RlKiBvd25lck9mVHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUp
CiB7CiAgICAgQVNTRVJUKHNjb3BlKTsKLSAgICBpZiAoc2NvcGUtPmlzU2hhZG93Um9vdCgpKQot
ICAgICAgICByZXR1cm4gc2NvcGUtPnNoYWRvd0hvc3QoKTsKLSAgICBpZiAoc2NvcGUtPmRvY3Vt
ZW50KCktPmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBzY29wZS0+ZG9jdW1lbnQoKS0+ZnJhbWUo
KS0+b3duZXJFbGVtZW50KCk7CisgICAgaWYgKHNjb3BlLT5hdHRhY2hlZE5vZGUoKS0+aXNTaGFk
b3dSb290KCkpCisgICAgICAgIHJldHVybiBzY29wZS0+YXR0YWNoZWROb2RlKCktPnNoYWRvd0hv
c3QoKTsKKyAgICBpZiAoc2NvcGUtPmF0dGFjaGVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgp
KQorICAgICAgICByZXR1cm4gc2NvcGUtPmF0dGFjaGVkTm9kZSgpLT5kb2N1bWVudCgpLT5mcmFt
ZSgpLT5vd25lckVsZW1lbnQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNDE5LDE4ICs0MTks
MTggQEAgTm9kZSogRm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlTm9kZShUcmVlU2NvcGUq
IHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmQKICAgICAvLyBMb29rIGZvciB0aGUgZmlyc3Qg
bm9kZSBpbiB0aGUgc2NvcGUgdGhhdDoKICAgICAvLyAxKSBoYXMgdGhlIGxvd2VzdCB0YWJpbmRl
eCB0aGF0IGlzIGhpZ2hlciB0aGFuIHN0YXJ0J3MgdGFiaW5kZXggKG9yIDAsIGlmIHN0YXJ0IGlz
IG51bGwpLCBhbmQKICAgICAvLyAyKSBjb21lcyBmaXJzdCBpbiB0aGUgc2NvcGUsIGlmIHRoZXJl
J3MgYSB0aWUuCi0gICAgaWYgKE5vZGUqIHdpbm5lciA9IG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJ
bmRleChzY29wZSwgc3RhcnQgPyBzdGFydC0+dGFiSW5kZXgoKSA6IDAsIGV2ZW50KSkKKyAgICBp
ZiAoTm9kZSogd2lubmVyID0gbmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLT5hdHRh
Y2hlZE5vZGUoKSwgc3RhcnQgPyBzdGFydC0+dGFiSW5kZXgoKSA6IDAsIGV2ZW50KSkKICAgICAg
ICAgcmV0dXJuIHdpbm5lcjsKIAogICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyB3aXRoIGEgdGFi
aW5kZXggZ3JlYXRlciB0aGFuIHN0YXJ0J3MgdGFiaW5kZXgsCiAgICAgLy8gc28gZmluZCB0aGUg
Zmlyc3Qgbm9kZSB3aXRoIGEgdGFiaW5kZXggb2YgMC4KLSAgICByZXR1cm4gbmV4dE5vZGVXaXRo
RXhhY3RUYWJJbmRleChzY29wZSwgMCwgZXZlbnQpOworICAgIHJldHVybiBuZXh0Tm9kZVdpdGhF
eGFjdFRhYkluZGV4KHNjb3BlLT5hdHRhY2hlZE5vZGUoKSwgMCwgZXZlbnQpOwogfQogCiBOb2Rl
KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZShUcmVlU2NvcGUqIHNjb3Bl
LCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgTm9kZSogbGFzdDsK
LSAgICBmb3IgKGxhc3QgPSBzY29wZTsgbGFzdC0+bGFzdENoaWxkKCk7IGxhc3QgPSBsYXN0LT5s
YXN0Q2hpbGQoKSkgeyB9CisgICAgZm9yIChsYXN0ID0gc2NvcGUtPmF0dGFjaGVkTm9kZSgpOyBs
YXN0LT5sYXN0Q2hpbGQoKTsgbGFzdCA9IGxhc3QtPmxhc3RDaGlsZCgpKSB7IH0KIAogICAgIC8v
IEZpcnN0IHRyeSB0byBmaW5kIHRoZSBsYXN0IG5vZGUgaW4gdGhlIHNjb3BlIHRoYXQgY29tZXMg
YmVmb3JlIHN0YXJ0IGFuZCBoYXMgdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQuCiAgICAgLy8g
SWYgc3RhcnQgaXMgbnVsbCwgZmluZCB0aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB3aXRoIGEg
dGFiaW5kZXggb2YgMC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124879</attachid>
            <date>2012-01-31 21:31:49 -0800</date>
            <delta_ts>2012-01-31 22:57:23 -0800</delta_ts>
            <desc>Another iteration.</desc>
            <filename>bug-76693-20120201143148.patch</filename>
            <type>text/plain</type>
            <size>17577</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uZWQ3YTMyNzZlOGFmNWE1YWVjNmJlOTI5ZTk2ZjYw
YTM0ZmRhNzMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTMxICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyeWN5IHNvIHRoYXQgU2hhZG93Um9vdCBjYW4gaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNoYWRv
d1Jvb3QgaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY2xh
c3MgaGllcmFyY2h5IG9mIElETCBpbiB0aGUgc3BlYy4KKyAgICAgICAgVHJlZVNjb3BlIGJlY29t
ZXMgYSBzZXBhcmF0ZWQgY2xhc3MsIHdoaWNoIGlzIG5vdyBpbmhlcml0ZWQgYnkgRG9jdW1lbnQg
YW5kIFNoYWRvd1Jvb3QgdXNpbmcgbXVsdGlwbGUtaW5oZXJpdGFuY2UuCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcHJlLXJlcXVpcmVtZW50IGZvciBjb21pbmcgSURMIGNoYW5nZS4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXRhY2gpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6
OkRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6Cisg
ICAgICAgIChEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6flRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldElt
YWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZmluZEFuY2hvcik6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6Om5vZGUpOgorICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBk
b20vVHJlZVNjb3BlQWRvcHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9w
dGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6YXNGaWxlSW5wdXQpOgorICAgICAgICAqIHBhZ2UvRm9j
dXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om93bmVyT2ZUcmVlU2NvcGUpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlTm9kZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZSk6
CisKIDIwMTItMDEtMzEgIFBhYmxvIEZsb3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEuY29tPgogCiAg
ICAgICAgIEZpeCBjb21waWxhdGlvbiBlcnJvcnMgb24gYnVpbGQtd2Via2l0IC0tZGVidWcgLS1u
by13b3JrZXJzIG9uIG1hYy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDNhYmIzYWRhOWJj
YjUxZjAxZjAyNDc1YTgxOTE2NzNiZGVhOGExYTEuLjBmNDcxODg0MmQwNzJmNTQwN2NiYmM5MzE0
YmFkNmZlZjJhNGRjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMzczLDcgKzM3Myw4
IEBAIHByaXZhdGU6CiB1aW50NjRfdCBEb2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7
CiAKIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9v
bCBpc1hIVE1MLCBib29sIGlzSFRNTCkKLSAgICA6IFRyZWVTY29wZSgwKQorICAgIDogQ29udGFp
bmVyTm9kZSgwKQorICAgICwgVHJlZVNjb3BlKHRoaXMpCiAgICAgLCBtX2d1YXJkUmVmQ291bnQo
MCkKICAgICAsIG1fY29tcGF0aWJpbGl0eU1vZGUoTm9RdWlya3NNb2RlKQogICAgICwgbV9jb21w
YXRpYmlsaXR5TW9kZUxvY2tlZChmYWxzZSkKQEAgLTY0NCwxNCArNjQ1LDE3IEBAIEVsZW1lbnQq
IERvY3VtZW50OjpnZXRFbGVtZW50QnlBY2Nlc3NLZXkoY29uc3QgU3RyaW5nJiBrZXkpCiAKIHZv
aWQgRG9jdW1lbnQ6OmJ1aWxkQWNjZXNzS2V5TWFwKFRyZWVTY29wZSogcm9vdCkKIHsKLSAgICAg
Zm9yIChOb2RlKiBuID0gcm9vdDsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUocm9vdCkpIHsK
LSAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkpCisgICAgQVNTRVJUKHJvb3QpOworICAg
IE5vZGUqIHJvb3ROb2RlID0gcm9vdC0+bm9kZSgpOworICAgIGZvciAoTm9kZSogbm9kZSA9IHJv
b3ROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZShyb290Tm9kZSkpIHsK
KyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsK
KyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihub2RlKTsK
ICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhY2Nlc3NLZXkgPSBlbGVtZW50LT5nZXRBdHRy
aWJ1dGUoYWNjZXNza2V5QXR0cik7CiAgICAgICAgIGlmICghYWNjZXNzS2V5LmlzRW1wdHkoKSkK
ICAgICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQoYWNjZXNzS2V5LmltcGwoKSwg
ZWxlbWVudCk7Ci0gICAgICAgIGJ1aWxkQWNjZXNzS2V5TWFwKGVsZW1lbnQtPnNoYWRvd1Jvb3Qo
KSk7CisgICAgICAgIGlmIChlbGVtZW50LT5zaGFkb3dSb290KCkpCisgICAgICAgICAgICBidWls
ZEFjY2Vzc0tleU1hcChlbGVtZW50LT5zaGFkb3dSb290KCkpOwogICAgIH0KIH0KIApAQCAtNzIy
LDcgKzcyNiw3IEBAIERPTUltcGxlbWVudGF0aW9uKiBEb2N1bWVudDo6aW1wbGVtZW50YXRpb24o
KQogCiB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIs
IE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENvdW50RGVs
dGEpCiB7Ci0gICAgVHJlZVNjb3BlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBi
ZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOworICAgIENvbnRhaW5l
ck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0
ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgCiAgICAgRWxlbWVudCogbmV3RG9jdW1l
bnRFbGVtZW50ID0gZmlyc3RFbGVtZW50Q2hpbGQodGhpcyk7CiAgICAgaWYgKG5ld0RvY3VtZW50
RWxlbWVudCA9PSBtX2RvY3VtZW50RWxlbWVudCkKQEAgLTE4NDAsNyArMTg0NCw3IEBAIHZvaWQg
RG9jdW1lbnQ6OmF0dGFjaCgpCiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXIgPSByZW5kZXJlcigp
OwogICAgIHNldFJlbmRlcmVyKDApOwogCi0gICAgVHJlZVNjb3BlOjphdHRhY2goKTsKKyAgICBD
b250YWluZXJOb2RlOjphdHRhY2goKTsKIAogICAgIHNldFJlbmRlcmVyKHJlbmRlcik7CiB9CkBA
IC0xODk0LDcgKzE4OTgsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRhY2goKQogICAgIG1fZm9jdXNl
ZE5vZGUgPSAwOwogICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAKLSAgICBUcmVlU2NvcGU6OmRldGFj
aCgpOworICAgIENvbnRhaW5lck5vZGU6OmRldGFjaCgpOwogCiAgICAgdW5zY2hlZHVsZVN0eWxl
UmVjYWxjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmRiMzk4ODc1ZjUxNGRmZmM0Yzcw
Mzk3MjFiMWE3NTc0N2NiYjk3Yi4uMzk5ZjQzYzUyMjYyNzc3N2VlN2FkMmViMGMyMDNiZjYyMDM0
ZDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
aGVja2VkUmFkaW9CdXR0b25zLmgiCiAjaW5jbHVkZSAiQ29sbGVjdGlvblR5cGUuaCIKICNpbmNs
dWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJET01U
aW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVldWUuaCIKICNpbmNsdWRlICJE
b2N1bWVudFRpbWluZy5oIgpAQCAtMjEzLDcgKzIxNCw3IEBAIGVudW0gUGFnZXNob3dFdmVudFBl
cnNpc3RlbmNlIHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRlRmxhZyB7IFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUsIFJlY2FsY1N0eWxlSWZOZWVkZWQgfTsKIAot
Y2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCB7CitjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250YWluZXJOb2RlLCBwdWJsaWMg
VHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFtZSogZnJhbWUsIGNvbnN0IEtV
UkwmIHVybCkKICAgICB7CkBAIC0yMjcsOCArMjI4LDggQEAgcHVibGljOgogCiAgICAgTWVkaWFR
dWVyeU1hdGNoZXIqIG1lZGlhUXVlcnlNYXRjaGVyKCk7CiAKLSAgICB1c2luZyBUcmVlU2NvcGU6
OnJlZjsKLSAgICB1c2luZyBUcmVlU2NvcGU6OmRlcmVmOworICAgIHVzaW5nIENvbnRhaW5lck5v
ZGU6OnJlZjsKKyAgICB1c2luZyBDb250YWluZXJOb2RlOjpkZXJlZjsKIAogICAgIC8vIE5vZGVz
IGJlbG9uZ2luZyB0byB0aGlzIGRvY3VtZW50IGhvbGQgZ3VhcmQgcmVmZXJlbmNlcyAtCiAgICAg
Ly8gdGhlc2UgYXJlIGVub3VnaCB0byBrZWVwIHRoZSBkb2N1bWVudCBmcm9tIGJlaW5nIGRlc3Ry
b3llZCwgYnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5kZXggMjNk
OGMyMDQzZTM4YThkYjE4ZjJmY2RlY2RmNDAyZDM1YjFkYmM4Ni4uZjdjZmFkZmNjNzlmMzFkNTE2
NjNlYWFjMDQyYjM0NWRhNzM0YzE5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdt
ZW50LmNwcApAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLURvY3Vt
ZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQotICAgIDog
Q29udGFpbmVyTm9kZShkb2N1bWVudCkKK0RvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21l
bnQoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIGNvbnN0cnVjdGlvblR5cGUp
CisgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1Y3Rpb25UeXBlKQogewogICAg
IEFTU0VSVChkb2N1bWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApp
bmRleCA2YmY1MmYxYTc4NGExMjFjOWEzYmQwOGM4MDhjODIzNjJhMDRmZjMwLi4xZWE0ZGNiMzI2
NWZmMmE4NjY4YjQwZGY0ZmFmNzNkZjVlMGU0ZDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBj
YW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIAogcHJvdGVj
dGVkOgotICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsKKyAgICBEb2N1bWVudEZyYWdt
ZW50KERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CiAgICAg
dmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKaW5kZXggNDcyNjhjNDE4NDNjMWJjNmRhZmM3
YTgzY2E1NDg1Y2I3ZTcwYmRlNi4uNWY0MmI3ZTI0YWU5OGE5MWUzMWE3NDRmMjZhZTAzNGZhYmYy
MzZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKQEAgLTEw
OCw2ICsxMDgsNyBAQCB0ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMoQXRvbWljU3RyaW5nSW1wbCos
IEVsZW1lbnQqKT4KIGlubGluZSBFbGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldChBdG9t
aWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFRyZWVTY29wZSogc2NvcGUpIGNvbnN0CiB7CiAgICAg
QVNTRVJUKGtleSk7CisgICAgQVNTRVJUKHNjb3BlKTsKIAogICAgIG1fbWFwLmNoZWNrQ29uc2lz
dGVuY3koKTsKIApAQCAtMTE3LDcgKzExOCw3IEBAIGlubGluZSBFbGVtZW50KiBEb2N1bWVudE9y
ZGVyZWRNYXA6OmdldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFRyZWVTY29wZSoKIAog
ICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkpKSB7CiAgICAgICAgIC8vIFdl
IGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1hdGNoZXM7IGl0ZXJhdGUgdG8g
ZmluZCB0aGUgZmlyc3Qgb25lLgotICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+Zmly
c3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAg
ICAgIGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLT5ub2RlKCktPmZpcnN0Q2hpbGQoKTsgbm9kZTsg
bm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICAgICAgaWYgKCFub2Rl
LT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAg
ICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRv
d1Jvb3QuY3BwCmluZGV4IDQwMjJlOWFlYTE3Njg0ODE4MjI3MmIwNzg0MmMzOWM5NTQxMmY3OGIu
LjIxNDFkOTc5YTFhNTgyZjQ3ZTljOGQxYjZiNDk4YjcyYTk3MWY5Y2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5jcHAKQEAgLTM3LDcgKzM3LDggQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
U2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBUcmVlU2Nv
cGUoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAgOiBEb2N1bWVudEZyYWdtZW50KGRv
Y3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQorICAgICwgVHJlZVNjb3BlKHRoaXMpCiAgICAgLCBt
X2FwcGx5QXV0aG9yU2hlZXRzKGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CkBAIC0x
NjMsNyArMTY0LDcgQEAgdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogICAgIC8vIGVuc3VyZUlu
Y2x1c2lvbnMoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAgIC8vIGl0IGlzIGlu
IGNsZWFuIHN0YXRlLgogICAgIEFTU0VSVCghbV9pbmNsdXNpb25zIHx8ICFtX2luY2x1c2lvbnMt
Pmhhc0NhbmRpZGF0ZXMoKSk7Ci0gICAgVHJlZVNjb3BlOjphdHRhY2goKTsKKyAgICBEb2N1bWVu
dEZyYWdtZW50OjphdHRhY2goKTsKICAgICBpZiAobV9pbmNsdXNpb25zKQogICAgICAgICBtX2lu
Y2x1c2lvbnMtPmRpZFNlbGVjdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5kZXggODM2
ZTRhYWFjZDRmNmNlMTVmN2NhZWNiYjhiZmI3NjY0N2JmY2Q3YS4uZTQ4M2QwZjk2M2IwODc3NTNh
MWNmY2EyNGIzMmIzZmRkNDIwYjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1No
YWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBAIC0yNyw2
ICsyNyw3IEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RfaAogI2RlZmluZSBTaGFkb3dSb290X2gKIAor
I2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKQEAgLTM2LDcgKzM3LDcgQEAgY2xhc3MgQ29udGVu
dEluY2x1c2lvblNlbGVjdG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29udGVudEVs
ZW1lbnQ7CiAKLWNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKK2NsYXNzIFNo
YWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29wZSB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKERvY3VtZW50
Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKEVsZW1lbnQqLCBF
eGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDkxZjNjMjk1YmVh
YTIyMWZmMTc4OGQ4ZjljODQyNGJkODAwMDE1Y2QuLmM4MTdlYjgwYmQ1Y2JkOTNkNzczOTRmMjA0
ZDRkMDRhNDg3NDZkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0zMCwyNCArMzAs
MjcgQEAKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxNYXBF
bGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTm9kZVJhcmVEYXRh
LmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZUFkb3B0ZXIuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1l
czsKIAotVHJlZVNjb3BlOjpUcmVlU2NvcGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rp
b25UeXBlIGNvbnN0cnVjdGlvblR5cGUpCi0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBj
b25zdHJ1Y3Rpb25UeXBlKQorVHJlZVNjb3BlOjpUcmVlU2NvcGUoTm9kZSogbm9kZSkKKyAgICA6
IG1fbm9kZShub2RlKQogICAgICwgbV9wYXJlbnRUcmVlU2NvcGUoMCkKICAgICAsIG1fbnVtTm9k
ZUxpc3RDYWNoZXMoMCkKIHsKKyAgICBBU1NFUlQobm9kZSk7CiB9CiAKIFRyZWVTY29wZTo6flRy
ZWVTY29wZSgpCiB7Ci0gICAgaWYgKGhhc1JhcmVEYXRhKCkpCi0gICAgICAgIGNsZWFyUmFyZURh
dGEoKTsKKyAgICBpZiAobm9kZSgpLT5oYXNSYXJlRGF0YSgpKQorICAgICAgICBub2RlKCktPmNs
ZWFyUmFyZURhdGEoKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRh
KCkKQEAgLTU5LDcgKzYyLDcgQEAgdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVlU2NvcGVEYXRh
KCkKIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3BlKiBuZXdQYXJl
bnRTY29wZSkKIHsKICAgICAvLyBBIGRvY3VtZW50IG5vZGUgY2Fubm90IGJlIHJlLXBhcmVudGVk
LgotICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAgQVNTRVJUKCFub2RlKCktPmlz
RG9jdW1lbnROb2RlKCkpOwogICAgIC8vIEV2ZXJ5IHNjb3BlIG90aGVyIHRoYW4gZG9jdW1lbnQg
bmVlZHMgYSBwYXJlbnQgc2NvcGUuCiAgICAgQVNTRVJUKG5ld1BhcmVudFNjb3BlKTsKIApAQCAt
MTA1LDcgKzEwOCw3IEBAIEhUTUxNYXBFbGVtZW50KiBUcmVlU2NvcGU6OmdldEltYWdlTWFwKGNv
bnN0IFN0cmluZyYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gMDsKICAgICBzaXplX3QgaGFz
aFBvcyA9IHVybC5maW5kKCcjJyk7CiAgICAgU3RyaW5nIG5hbWUgPSAoaGFzaFBvcyA9PSBub3RG
b3VuZCA/IHVybCA6IHVybC5zdWJzdHJpbmcoaGFzaFBvcyArIDEpKS5pbXBsKCk7Ci0gICAgaWYg
KGRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpCisgICAgaWYgKG5vZGUoKS0+ZG9jdW1lbnQo
KS0+aXNIVE1MRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBF
bGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0RWxlbWVudEJ5TG93ZXJjYXNlZE1hcE5hbWUo
QXRvbWljU3RyaW5nKG5hbWUubG93ZXIoKSkuaW1wbCgpLCB0aGlzKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0RWxlbWVudEJ5
TWFwTmFtZShBdG9taWNTdHJpbmcobmFtZSkuaW1wbCgpLCB0aGlzKSk7CiB9CkBAIC0xMTYsMTAg
KzExOSwxMCBAQCBFbGVtZW50KiBUcmVlU2NvcGU6OmZpbmRBbmNob3IoY29uc3QgU3RyaW5nJiBu
YW1lKQogICAgICAgICByZXR1cm4gMDsKICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGdldEVs
ZW1lbnRCeUlkKG5hbWUpKQogICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICBmb3IgKE5vZGUq
IG5vZGUgPSB0aGlzOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0g
ICAgICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKGFUYWcpKSB7Ci0gICAgICAgICAgICBIVE1MQW5j
aG9yRWxlbWVudCogYW5jaG9yID0gc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihub2Rl
KTsKLSAgICAgICAgICAgIGlmIChkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgeworICAgIGZv
ciAoTm9kZSogbiA9IG5vZGUoKTsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5vZGUoKSkgeworICAg
ICAgICBpZiAobi0+aGFzVGFnTmFtZShhVGFnKSkgeworICAgICAgICAgICAgSFRNTEFuY2hvckVs
ZW1lbnQqIGFuY2hvciA9IHN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4obik7CisgICAg
ICAgICAgICBpZiAobm9kZSgpLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgewogICAgICAg
ICAgICAgICAgIC8vIFF1aXJrcyBtb2RlLCBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2Yg
bmFtZXMuCiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFuY2hvci0+bmFt
ZSgpLCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuY2hvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuaAppbmRleCBmZDZjM2NiOGRmOWVmNWE5MDFmMTYzYzJhNjRjNmJiMDQ5Y2QwMDFi
Li40NTE5N2QyMWFjMmE2M2Q3MjBjZWE3ODM1OTQyOTdjZmYwZmYyYjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5oCkBAIC0yNiwxNSArMjYsMTcgQEAKICNpZm5kZWYgVHJlZVNjb3BlX2gKICNkZWZp
bmUgVHJlZVNjb3BlX2gKIAotI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudE9yZGVyZWRNYXAuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2NsYXNzIE5vZGU7CiAKLWNsYXNzIFRy
ZWVTY29wZSA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKK2NsYXNzIFRyZWVTY29wZSB7CiAgICAg
ZnJpZW5kIGNsYXNzIERvY3VtZW50OwogCiBwdWJsaWM6CkBAIC02NywxMyArNjksMTYgQEAgcHVi
bGljOgogICAgIC8vIFVzZWQgYnkgdGhlIGJhc2ljIERPTSBtdXRhdGlvbiBtZXRob2RzIChlLmcu
LCBhcHBlbmRDaGlsZCgpKS4KICAgICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSopOwogCisgICAg
Tm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fbm9kZTsgfTsKKwogcHJvdGVjdGVkOgotICAg
IFRyZWVTY29wZShEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVDb250YWluZXIp
OworICAgIFRyZWVTY29wZShOb2RlKik7CiAgICAgdmlydHVhbCB+VHJlZVNjb3BlKCk7CiAKICAg
ICB2b2lkIGRlc3Ryb3lUcmVlU2NvcGVEYXRhKCk7CiAKIHByaXZhdGU6CisgICAgTm9kZSogbV9u
b2RlOwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVudE9y
ZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
VHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRl
ci5jcHAKaW5kZXggYWIxMTc5MjNlNzhkNDIxZWM0ZDAwMGY5MjM5YTkxNGUyNGNmYzg2Ni4uZWQ3
N2YzY2JmOTliZWVlZjk4NmI0ZjQ1ODBjZTdkMWFhYTM5MGE1OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDQsOCArNDQsOCBAQCB2b2lkIFRyZWVTY29wZUFk
b3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgIC8vIHRoYXQg
ZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBkYXRhIGFzIGNoYW5nZXMgbWFkZSB0byBpdCB3aWxs
IGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZlcnNpb24KICAgICAvLyBvZiB0aGUgZG9jdW1lbnQg
aXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFzaW5nIHRoZSBET01UcmVlVmVyc2lvbiBvZiB0aGUg
ZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQogICAgIC8vIHdlIGVuc3VyZSB0aGF0IHRoZSBjb2xsZWN0
aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0ZWQgYXMgbmVlZGVkIHdoZW4gdGhlIGVsZW1lbnQg
aXMgbW92ZWQgYmFjay4KLSAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBtX29sZFNjb3BlID8g
bV9vbGRTY29wZS0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0g
bV9uZXdTY29wZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBtX29s
ZFNjb3BlID8gbV9vbGRTY29wZS0+bm9kZSgpLT5kb2N1bWVudCgpIDogMDsKKyAgICBEb2N1bWVu
dCogbmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5ub2RlKCktPmRvY3VtZW50KCk7CiAgICAgYm9v
bCB3aWxsTW92ZVRvTmV3RG9jdW1lbnQgPSBvbGREb2N1bWVudCAhPSBuZXdEb2N1bWVudDsKICAg
ICBpZiAob2xkRG9jdW1lbnQgJiYgd2lsbE1vdmVUb05ld0RvY3VtZW50KQogICAgICAgICBvbGRE
b2N1bWVudC0+aW5jRE9NVHJlZVZlcnNpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAKaW5kZXggYmM0NWRiZTcxZGE3OTZjNzU4NzJmYWRkZDI5MjQ5NjliOWQ3NGU3YS4u
M2EzZjA1MTE0YzdhM2M3MDU5YjRiMTU0NzAwNGYyNjMxNjc3NWY5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTI3MCw4ICsyNzAsOCBAQCBzdGF0aWMgSFRNTElu
cHV0RWxlbWVudCogYXNGaWxlSW5wdXQoTm9kZSogbm9kZSkKICAgICBIVE1MSW5wdXRFbGVtZW50
KiBpbnB1dEVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxlbWVudCgpOwogCiAgICAgLy8gSWYgdGhp
cyBpcyBhIGJ1dHRvbiBpbnNpZGUgb2YgdGhlIGEgZmlsZSBpbnB1dCwgbW92ZSB1cCB0byB0aGUg
ZmlsZSBpbnB1dC4KLSAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNUZXh0
QnV0dG9uKCkgJiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+aXNTaGFkb3dSb290KCkpCi0g
ICAgICAgIGlucHV0RWxlbWVudCA9IGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnNoYWRvd0hv
c3QoKS0+dG9JbnB1dEVsZW1lbnQoKTsKKyAgICBpZiAoaW5wdXRFbGVtZW50ICYmIGlucHV0RWxl
bWVudC0+aXNUZXh0QnV0dG9uKCkgJiYgaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+bm9kZSgp
LT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgaW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50LT50
cmVlU2NvcGUoKS0+bm9kZSgpLT5zaGFkb3dIb3N0KCktPnRvSW5wdXRFbGVtZW50KCk7CiAKICAg
ICByZXR1cm4gaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNGaWxlVXBsb2FkKCkgPyBp
bnB1dEVsZW1lbnQgOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGIxOGQ0ZDE0ZDQwYmZlZDNlNTBmMmNjYzZhMDMzZGQ4ODIzNjEyNTUuLjgxNjUyZmUw
OTQyYjE2ZWZkZDVjZmY3N2FkMDIxNTAwM2VhNzA4YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTMxOSwxMCArMzE5LDEwIEBAIGJvb2wgRm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
LCBLZXliCiBzdGF0aWMgaW5saW5lIE5vZGUqIG93bmVyT2ZUcmVlU2NvcGUoVHJlZVNjb3BlKiBz
Y29wZSkKIHsKICAgICBBU1NFUlQoc2NvcGUpOwotICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290
KCkpCi0gICAgICAgIHJldHVybiBzY29wZS0+c2hhZG93SG9zdCgpOwotICAgIGlmIChzY29wZS0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHNjb3BlLT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5vd25lckVsZW1lbnQoKTsKKyAgICBpZiAoc2NvcGUtPm5vZGUoKS0+aXNTaGFkb3dS
b290KCkpCisgICAgICAgIHJldHVybiBzY29wZS0+bm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAg
aWYgKHNjb3BlLT5ub2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAgICAgIHJldHVybiBz
Y29wZS0+bm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5vd25lckVsZW1lbnQoKTsKICAgICBy
ZXR1cm4gMDsKIH0KIApAQCAtNDE5LDE4ICs0MTksMTggQEAgTm9kZSogRm9jdXNDb250cm9sbGVy
OjpuZXh0Rm9jdXNhYmxlTm9kZShUcmVlU2NvcGUqIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9h
cmQKICAgICAvLyBMb29rIGZvciB0aGUgZmlyc3Qgbm9kZSBpbiB0aGUgc2NvcGUgdGhhdDoKICAg
ICAvLyAxKSBoYXMgdGhlIGxvd2VzdCB0YWJpbmRleCB0aGF0IGlzIGhpZ2hlciB0aGFuIHN0YXJ0
J3MgdGFiaW5kZXggKG9yIDAsIGlmIHN0YXJ0IGlzIG51bGwpLCBhbmQKICAgICAvLyAyKSBjb21l
cyBmaXJzdCBpbiB0aGUgc2NvcGUsIGlmIHRoZXJlJ3MgYSB0aWUuCi0gICAgaWYgKE5vZGUqIHdp
bm5lciA9IG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJbmRleChzY29wZSwgc3RhcnQgPyBzdGFydC0+
dGFiSW5kZXgoKSA6IDAsIGV2ZW50KSkKKyAgICBpZiAoTm9kZSogd2lubmVyID0gbmV4dE5vZGVX
aXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLT5ub2RlKCksIHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4
KCkgOiAwLCBldmVudCkpCiAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAvLyBUaGVyZSBh
cmUgbm8gbm9kZXMgd2l0aCBhIHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4
LAogICAgIC8vIHNvIGZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCi0g
ICAgcmV0dXJuIG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUsIDAsIGV2ZW50KTsKKyAg
ICByZXR1cm4gbmV4dE5vZGVXaXRoRXhhY3RUYWJJbmRleChzY29wZS0+bm9kZSgpLCAwLCBldmVu
dCk7CiB9CiAKIE5vZGUqIEZvY3VzQ29udHJvbGxlcjo6cHJldmlvdXNGb2N1c2FibGVOb2RlKFRy
ZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsKICAg
ICBOb2RlKiBsYXN0OwotICAgIGZvciAobGFzdCA9IHNjb3BlOyBsYXN0LT5sYXN0Q2hpbGQoKTsg
bGFzdCA9IGxhc3QtPmxhc3RDaGlsZCgpKSB7IH0KKyAgICBmb3IgKGxhc3QgPSBzY29wZS0+bm9k
ZSgpOyBsYXN0LT5sYXN0Q2hpbGQoKTsgbGFzdCA9IGxhc3QtPmxhc3RDaGlsZCgpKSB7IH0KIAog
ICAgIC8vIEZpcnN0IHRyeSB0byBmaW5kIHRoZSBsYXN0IG5vZGUgaW4gdGhlIHNjb3BlIHRoYXQg
Y29tZXMgYmVmb3JlIHN0YXJ0IGFuZCBoYXMgdGhlIHNhbWUgdGFiaW5kZXggYXMgc3RhcnQuCiAg
ICAgLy8gSWYgc3RhcnQgaXMgbnVsbCwgZmluZCB0aGUgbGFzdCBub2RlIGluIHRoZSBzY29wZSB3
aXRoIGEgdGFiaW5kZXggb2YgMC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124887</attachid>
            <date>2012-01-31 22:57:30 -0800</date>
            <delta_ts>2012-02-01 01:14:54 -0800</delta_ts>
            <desc>Another iteration.</desc>
            <filename>bug-76693-20120201155729.patch</filename>
            <type>text/plain</type>
            <size>17738</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uNTdlODJkMjQzNjJmZWYwY2RmNzMyN2Q2MGRmMmIx
OWVmNGIwMGNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTAxLTMxICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyeWN5IHNvIHRoYXQgU2hhZG93Um9vdCBjYW4gaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNoYWRv
d1Jvb3QgaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY2xh
c3MgaGllcmFyY2h5IG9mIElETCBpbiB0aGUgc3BlYy4KKyAgICAgICAgVHJlZVNjb3BlIGJlY29t
ZXMgYSBzZXBhcmF0ZWQgY2xhc3MsIHdoaWNoIGlzIG5vdyBpbmhlcml0ZWQgYnkgRG9jdW1lbnQg
YW5kIFNoYWRvd1Jvb3QgdXNpbmcgbXVsdGlwbGUtaW5oZXJpdGFuY2UuCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcHJlLXJlcXVpcmVtZW50IGZvciBjb21pbmcgSURMIGNoYW5nZS4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXApOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YXR0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkZXRhY2gpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAoRG9jdW1lbnQpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50RnJhZ21lbnQ6
OkRvY3VtZW50RnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50Lmg6Cisg
ICAgICAgIChEb2N1bWVudEZyYWdtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnRPcmRlcmVk
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50T3JkZXJlZE1hcDo6Z2V0KToKKyAg
ICAgICAgKiBkb20vU2hhZG93Um9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSb290
OjpTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OmF0dGFjaCk6Cisg
ICAgICAgICogZG9tL1NoYWRvd1Jvb3QuaDoKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6VHJlZVNjb3BlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRyZWVTY29wZTo6flRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6
OnNldFBhcmVudFRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGU6OmdldElt
YWdlTWFwKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6ZmluZEFuY2hvcik6CisgICAg
ICAgICogZG9tL1RyZWVTY29wZS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmVlU2NvcGU6OnJvb3ROb2RlKToKKyAgICAgICAgKFRyZWVTY29wZSk6CisgICAgICAg
ICogZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
QWRvcHRlcjo6bW92ZVRyZWVUb05ld1Njb3BlKToKKyAgICAgICAgKiBwYWdlL0RyYWdDb250cm9s
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFzRmlsZUlucHV0KToKKyAgICAgICAgKiBwYWdl
L0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpvd25lck9mVHJlZVNjb3Bl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpwcmV2aW91c0ZvY3VzYWJsZU5v
ZGUpOgorCiAyMDEyLTAxLTMxICBQYWJsbyBGbG91cmV0ICA8cGFibG9mQG1vdG9yb2xhLmNvbT4K
IAogICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3JzIG9uIGJ1aWxkLXdlYmtpdCAtLWRlYnVn
IC0tbm8td29ya2VycyBvbiBtYWMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzYWJiM2Fk
YTliY2I1MWYwMWYwMjQ3NWE4MTkxNjczYmRlYThhMWExLi4wZDE5NzM1NGI5MGUwYWE4YWY4OTNk
MTQxNGUyYTRjMWQwNDQ0MzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTM3Myw3ICsz
NzMsOCBAQCBwcml2YXRlOgogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24g
PSAwOwogCiBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmws
IGJvb2wgaXNYSFRNTCwgYm9vbCBpc0hUTUwpCi0gICAgOiBUcmVlU2NvcGUoMCkKKyAgICA6IENv
bnRhaW5lck5vZGUoMCkKKyAgICAsIFRyZWVTY29wZSh0aGlzKQogICAgICwgbV9ndWFyZFJlZkNv
dW50KDApCiAgICAgLCBtX2NvbXBhdGliaWxpdHlNb2RlKE5vUXVpcmtzTW9kZSkKICAgICAsIG1f
Y29tcGF0aWJpbGl0eU1vZGVMb2NrZWQoZmFsc2UpCkBAIC02NDQsMTQgKzY0NSwxNyBAQCBFbGVt
ZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KQog
CiB2b2lkIERvY3VtZW50OjpidWlsZEFjY2Vzc0tleU1hcChUcmVlU2NvcGUqIHJvb3QpCiB7Ci0g
ICAgIGZvciAoTm9kZSogbiA9IHJvb3Q7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHJvb3Qp
KSB7Ci0gICAgICAgIGlmICghbi0+aXNFbGVtZW50Tm9kZSgpKQorICAgIEFTU0VSVChyb290KTsK
KyAgICBOb2RlKiByb290Tm9kZSA9IHJvb3QtPnJvb3ROb2RlKCk7CisgICAgZm9yIChOb2RlKiBu
b2RlID0gcm9vdE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3RO
b2RlKSkgeworICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG4pOworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+
KG5vZGUpOwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSA9IGVsZW1lbnQt
PmdldEF0dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsKICAgICAgICAgaWYgKCFhY2Nlc3NLZXkuaXNF
bXB0eSgpKQogICAgICAgICAgICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LnNldChhY2Nlc3NLZXku
aW1wbCgpLCBlbGVtZW50KTsKLSAgICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAoZWxlbWVudC0+c2hh
ZG93Um9vdCgpKTsKKyAgICAgICAgaWYgKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSkKKyAgICAgICAg
ICAgIGJ1aWxkQWNjZXNzS2V5TWFwKGVsZW1lbnQtPnNoYWRvd1Jvb3QoKSk7CiAgICAgfQogfQog
CkBAIC03MjIsNyArNzI2LDcgQEAgRE9NSW1wbGVtZW50YXRpb24qIERvY3VtZW50OjppbXBsZW1l
bnRhdGlvbigpCiAKIHZvaWQgRG9jdW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChib29sIGNoYW5nZWRC
eVBhcnNlciwgTm9kZSogYmVmb3JlQ2hhbmdlLCBOb2RlKiBhZnRlckNoYW5nZSwgaW50IGNoaWxk
Q291bnREZWx0YSkKIHsKLSAgICBUcmVlU2NvcGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQ
YXJzZXIsIGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CisgICAg
Q29udGFpbmVyTm9kZTo6Y2hpbGRyZW5DaGFuZ2VkKGNoYW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hh
bmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRhKTsKICAgICAKICAgICBFbGVtZW50KiBu
ZXdEb2N1bWVudEVsZW1lbnQgPSBmaXJzdEVsZW1lbnRDaGlsZCh0aGlzKTsKICAgICBpZiAobmV3
RG9jdW1lbnRFbGVtZW50ID09IG1fZG9jdW1lbnRFbGVtZW50KQpAQCAtMTg0MCw3ICsxODQ0LDcg
QEAgdm9pZCBEb2N1bWVudDo6YXR0YWNoKCkKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlciA9IHJl
bmRlcmVyKCk7CiAgICAgc2V0UmVuZGVyZXIoMCk7CiAKLSAgICBUcmVlU2NvcGU6OmF0dGFjaCgp
OworICAgIENvbnRhaW5lck5vZGU6OmF0dGFjaCgpOwogCiAgICAgc2V0UmVuZGVyZXIocmVuZGVy
KTsKIH0KQEAgLTE4OTQsNyArMTg5OCw3IEBAIHZvaWQgRG9jdW1lbnQ6OmRldGFjaCgpCiAgICAg
bV9mb2N1c2VkTm9kZSA9IDA7CiAgICAgbV9hY3RpdmVOb2RlID0gMDsKIAotICAgIFRyZWVTY29w
ZTo6ZGV0YWNoKCk7CisgICAgQ29udGFpbmVyTm9kZTo6ZGV0YWNoKCk7CiAKICAgICB1bnNjaGVk
dWxlU3R5bGVSZWNhbGMoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBmZGIzOTg4NzVmNTE0
ZGZmYzRjNzAzOTcyMWIxYTc1NzQ3Y2JiOTdiLi4zOTlmNDNjNTIyNjI3Nzc3ZWU3YWQyZWIwYzIw
M2JmNjIwMzRkN2I0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkNoZWNrZWRSYWRpb0J1dHRvbnMuaCIKICNpbmNsdWRlICJDb2xsZWN0aW9uVHlwZS5o
IgogI2luY2x1ZGUgIkNvbG9yLmgiCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1
ZGUgIkRPTVRpbWVTdGFtcC5oIgogI2luY2x1ZGUgIkRvY3VtZW50RXZlbnRRdWV1ZS5oIgogI2lu
Y2x1ZGUgIkRvY3VtZW50VGltaW5nLmgiCkBAIC0yMTMsNyArMjE0LDcgQEAgZW51bSBQYWdlc2hv
d0V2ZW50UGVyc2lzdGVuY2UgewogCiBlbnVtIFN0eWxlU2VsZWN0b3JVcGRhdGVGbGFnIHsgUmVj
YWxjU3R5bGVJbW1lZGlhdGVseSwgRGVmZXJSZWNhbGNTdHlsZSwgUmVjYWxjU3R5bGVJZk5lZWRl
ZCB9OwogCi1jbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRF
eGVjdXRpb25Db250ZXh0IHsKK2NsYXNzIERvY3VtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUs
IHB1YmxpYyBUcmVlU2NvcGUsIHB1YmxpYyBTY3JpcHRFeGVjdXRpb25Db250ZXh0IHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVudD4gY3JlYXRlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsKQogICAgIHsKQEAgLTIyNyw4ICsyMjgsOCBAQCBwdWJsaWM6CiAKICAg
ICBNZWRpYVF1ZXJ5TWF0Y2hlciogbWVkaWFRdWVyeU1hdGNoZXIoKTsKIAotICAgIHVzaW5nIFRy
ZWVTY29wZTo6cmVmOwotICAgIHVzaW5nIFRyZWVTY29wZTo6ZGVyZWY7CisgICAgdXNpbmcgQ29u
dGFpbmVyTm9kZTo6cmVmOworICAgIHVzaW5nIENvbnRhaW5lck5vZGU6OmRlcmVmOwogCiAgICAg
Ly8gTm9kZXMgYmVsb25naW5nIHRvIHRoaXMgZG9jdW1lbnQgaG9sZCBndWFyZCByZWZlcmVuY2Vz
IC0KICAgICAvLyB0aGVzZSBhcmUgZW5vdWdoIHRvIGtlZXAgdGhlIGRvY3VtZW50IGZyb20gYmVp
bmcgZGVzdHJveWVkLCBidXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApp
bmRleCAyM2Q4YzIwNDNlMzhhOGRiMThmMmZjZGVjZGY0MDJkMzViMWRiYzg2Li5mN2NmYWRmY2M3
OWYzMWQ1MTY2M2VhYWMwNDJiMzQ1ZGE3MzRjMTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50RnJhZ21lbnQuY3BwCkBAIC0zMiw4ICszMiw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQp
Ci0gICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50KQorRG9jdW1lbnRGcmFnbWVudDo6RG9jdW1l
bnRGcmFnbWVudChEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgY29uc3RydWN0
aW9uVHlwZSkKKyAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIGNvbnN0cnVjdGlvblR5cGUp
CiB7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5oCmluZGV4IDZiZjUyZjFhNzg0YTEyMWM5YTNiZDA4YzgwOGM4MjM2MmEwNGZmMzAuLjFl
YTRkY2IzMjY1ZmYyYTg2NjhiNDBkZjRmYWY3M2RmNWUwZTRkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGNhbkNvbnRhaW5SYW5nZUVuZFBvaW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCopOworICAgIERvY3Vt
ZW50RnJhZ21lbnQoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBlID0gQ3JlYXRlQ29udGFpbmVy
KTsKICAgICB2aXJ0dWFsIFN0cmluZyBub2RlTmFtZSgpIGNvbnN0OwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNwcAppbmRleCA0NzI2OGM0MTg0M2Mx
YmM2ZGFmYzdhODNjYTU0ODVjYjdlNzBiZGU2Li44ODZiOGJmMDg1M2EzNjU5YWFjZTcwYWNiYjNk
MDc3YTc0NmQ1MDIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRl
cmVkTWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNw
cApAQCAtMTA4LDYgKzEwOCw3IEBAIHRlbXBsYXRlPGJvb2wga2V5TWF0Y2hlcyhBdG9taWNTdHJp
bmdJbXBsKiwgRWxlbWVudCopPgogaW5saW5lIEVsZW1lbnQqIERvY3VtZW50T3JkZXJlZE1hcDo6
Z2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgY29uc3QgVHJlZVNjb3BlKiBzY29wZSkgY29uc3QK
IHsKICAgICBBU1NFUlQoa2V5KTsKKyAgICBBU1NFUlQoc2NvcGUpOwogCiAgICAgbV9tYXAuY2hl
Y2tDb25zaXN0ZW5jeSgpOwogCkBAIC0xMTcsNyArMTE4LDcgQEAgaW5saW5lIEVsZW1lbnQqIERv
Y3VtZW50T3JkZXJlZE1hcDo6Z2V0KEF0b21pY1N0cmluZ0ltcGwqIGtleSwgY29uc3QgVHJlZVNj
b3BlKgogCiAgICAgaWYgKG1fZHVwbGljYXRlQ291bnRzLmNvbnRhaW5zKGtleSkpIHsKICAgICAg
ICAgLy8gV2Uga25vdyB0aGVyZSdzIGF0IGxlYXN0IG9uZSBub2RlIHRoYXQgbWF0Y2hlczsgaXRl
cmF0ZSB0byBmaW5kIHRoZSBmaXJzdCBvbmUuCi0gICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHNj
b3BlLT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkp
IHsKKyAgICAgICAgZm9yIChOb2RlKiBub2RlID0gc2NvcGUtPnJvb3ROb2RlKCktPmZpcnN0Q2hp
bGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAgICAgICAg
ICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgICAgICBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuY3BwCmluZGV4IDQwMjJlOWFlYTE3Njg0ODE4MjI3MmIwNzg0MmMz
OWM5NTQxMmY3OGIuLjIxNDFkOTc5YTFhNTgyZjQ3ZTljOGQxYjZiNDk4YjcyYTk3MWY5Y2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKQEAgLTM3LDcgKzM3LDggQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU2hhZG93Um9vdDo6U2hhZG93Um9vdChEb2N1bWVudCogZG9jdW1lbnQpCi0g
ICAgOiBUcmVlU2NvcGUoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAgOiBEb2N1bWVu
dEZyYWdtZW50KGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQorICAgICwgVHJlZVNjb3BlKHRo
aXMpCiAgICAgLCBtX2FwcGx5QXV0aG9yU2hlZXRzKGZhbHNlKQogewogICAgIEFTU0VSVChkb2N1
bWVudCk7CkBAIC0xNjMsNyArMTY0LDcgQEAgdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogICAg
IC8vIGVuc3VyZUluY2x1c2lvbnMoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAg
IC8vIGl0IGlzIGluIGNsZWFuIHN0YXRlLgogICAgIEFTU0VSVCghbV9pbmNsdXNpb25zIHx8ICFt
X2luY2x1c2lvbnMtPmhhc0NhbmRpZGF0ZXMoKSk7Ci0gICAgVHJlZVNjb3BlOjphdHRhY2goKTsK
KyAgICBEb2N1bWVudEZyYWdtZW50OjphdHRhY2goKTsKICAgICBpZiAobV9pbmNsdXNpb25zKQog
ICAgICAgICBtX2luY2x1c2lvbnMtPmRpZFNlbGVjdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290
LmgKaW5kZXggODM2ZTRhYWFjZDRmNmNlMTVmN2NhZWNiYjhiZmI3NjY0N2JmY2Q3YS4uZTQ4M2Qw
Zjk2M2IwODc3NTNhMWNmY2EyNGIzMmIzZmRkNDIwYjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9v
dC5oCkBAIC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RfaAogI2RlZmluZSBTaGFk
b3dSb290X2gKIAorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKQEAgLTM2LDcgKzM3LDcgQEAg
Y2xhc3MgQ29udGVudEluY2x1c2lvblNlbGVjdG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBI
VE1MQ29udGVudEVsZW1lbnQ7CiAKLWNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3Bl
IHsKK2NsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRy
ZWVTY29wZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3Jl
YXRlKERvY3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRl
KEVsZW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4
IDkxZjNjMjk1YmVhYTIyMWZmMTc4OGQ4ZjljODQyNGJkODAwMDE1Y2QuLmRjMjBlMDE1Y2Q4MTI2
ZGU1MDFjMWIwOWVmMGQyODEzYjM5NmUyMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UcmVlU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBA
IC0yNiwyOCArMjYsMzIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUcmVlU2Nv
cGUuaCIKIAorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiSFRNTEFuY2hvckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWFwRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgotI2luY2x1ZGUgIk5vZGVSYXJlRGF0YS5oIgor
I2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJUcmVlU2NvcGVBZG9wdGVyLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAK
LVRyZWVTY29wZTo6VHJlZVNjb3BlKERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlw
ZSBjb25zdHJ1Y3Rpb25UeXBlKQotICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgY29uc3Ry
dWN0aW9uVHlwZSkKK1RyZWVTY29wZTo6VHJlZVNjb3BlKENvbnRhaW5lck5vZGUqIHJvb3ROb2Rl
KQorICAgIDogbV9yb290Tm9kZShyb290Tm9kZSkKICAgICAsIG1fcGFyZW50VHJlZVNjb3BlKDAp
CiAgICAgLCBtX251bU5vZGVMaXN0Q2FjaGVzKDApCiB7CisgICAgQVNTRVJUKHJvb3ROb2RlKTsK
IH0KIAogVHJlZVNjb3BlOjp+VHJlZVNjb3BlKCkKIHsKLSAgICBpZiAoaGFzUmFyZURhdGEoKSkK
LSAgICAgICAgY2xlYXJSYXJlRGF0YSgpOworICAgIGlmIChyb290Tm9kZSgpLT5oYXNSYXJlRGF0
YSgpKQorICAgICAgICByb290Tm9kZSgpLT5jbGVhclJhcmVEYXRhKCk7CiB9CiAKIHZvaWQgVHJl
ZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCkBAIC01OSw3ICs2Myw3IEBAIHZvaWQgVHJl
ZVNjb3BlOjpkZXN0cm95VHJlZVNjb3BlRGF0YSgpCiB2b2lkIFRyZWVTY29wZTo6c2V0UGFyZW50
VHJlZVNjb3BlKFRyZWVTY29wZSogbmV3UGFyZW50U2NvcGUpCiB7CiAgICAgLy8gQSBkb2N1bWVu
dCBub2RlIGNhbm5vdCBiZSByZS1wYXJlbnRlZC4KLSAgICBBU1NFUlQoIWlzRG9jdW1lbnROb2Rl
KCkpOworICAgIEFTU0VSVCghcm9vdE5vZGUoKS0+aXNEb2N1bWVudE5vZGUoKSk7CiAgICAgLy8g
RXZlcnkgc2NvcGUgb3RoZXIgdGhhbiBkb2N1bWVudCBuZWVkcyBhIHBhcmVudCBzY29wZS4KICAg
ICBBU1NFUlQobmV3UGFyZW50U2NvcGUpOwogCkBAIC0xMDUsNyArMTA5LDcgQEAgSFRNTE1hcEVs
ZW1lbnQqIFRyZWVTY29wZTo6Z2V0SW1hZ2VNYXAoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiAg
ICAgICAgIHJldHVybiAwOwogICAgIHNpemVfdCBoYXNoUG9zID0gdXJsLmZpbmQoJyMnKTsKICAg
ICBTdHJpbmcgbmFtZSA9IChoYXNoUG9zID09IG5vdEZvdW5kID8gdXJsIDogdXJsLnN1YnN0cmlu
ZyhoYXNoUG9zICsgMSkpLmltcGwoKTsKLSAgICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1l
bnQoKSkKKyAgICBpZiAocm9vdE5vZGUoKS0+ZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkK
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVtZW50Kj4obV9pbWFnZU1hcHNC
eU5hbWUuZ2V0RWxlbWVudEJ5TG93ZXJjYXNlZE1hcE5hbWUoQXRvbWljU3RyaW5nKG5hbWUubG93
ZXIoKSkuaW1wbCgpLCB0aGlzKSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxNYXBFbGVt
ZW50Kj4obV9pbWFnZU1hcHNCeU5hbWUuZ2V0RWxlbWVudEJ5TWFwTmFtZShBdG9taWNTdHJpbmco
bmFtZSkuaW1wbCgpLCB0aGlzKSk7CiB9CkBAIC0xMTYsMTAgKzEyMCwxMCBAQCBFbGVtZW50KiBU
cmVlU2NvcGU6OmZpbmRBbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICByZXR1cm4g
MDsKICAgICBpZiAoRWxlbWVudCogZWxlbWVudCA9IGdldEVsZW1lbnRCeUlkKG5hbWUpKQogICAg
ICAgICByZXR1cm4gZWxlbWVudDsKLSAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBub2RlID0g
cm9vdE5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewogICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShhVGFnKSkgewogICAgICAgICAgICAgSFRNTEFuY2hv
ckVsZW1lbnQqIGFuY2hvciA9IHN0YXRpY19jYXN0PEhUTUxBbmNob3JFbGVtZW50Kj4obm9kZSk7
Ci0gICAgICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChyb290Tm9kZSgpLT5kb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgewogICAgICAg
ICAgICAgICAgIC8vIFF1aXJrcyBtb2RlLCBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gb2Yg
bmFtZXMuCiAgICAgICAgICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKGFuY2hvci0+bmFt
ZSgpLCBuYW1lKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFuY2hvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuaAppbmRleCBmZDZjM2NiOGRmOWVmNWE5MDFmMTYzYzJhNjRjNmJiMDQ5Y2QwMDFi
Li4yYjI0MzQzMzk2YzNiOTNhNTViMzAxNTNjMzdkOTJmMDcyZGZhNWYwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Ry
ZWVTY29wZS5oCkBAIC0yNiwxNSArMjYsMTggQEAKICNpZm5kZWYgVHJlZVNjb3BlX2gKICNkZWZp
bmUgVHJlZVNjb3BlX2gKIAotI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKICNpbmNsdWRlICJE
b2N1bWVudE9yZGVyZWRNYXAuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNz
IENvbnRhaW5lck5vZGU7CiBjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTE1hcEVsZW1lbnQ7Citj
bGFzcyBOb2RlOwogCi1jbGFzcyBUcmVlU2NvcGUgOiBwdWJsaWMgQ29udGFpbmVyTm9kZSB7Citj
bGFzcyBUcmVlU2NvcGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVudDsKIAogcHVibGljOgpA
QCAtNjcsMTMgKzcwLDE2IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5IHRoZSBiYXNpYyBET00g
bXV0YXRpb24gbWV0aG9kcyAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCiAgICAgdm9pZCBhZG9wdElm
TmVlZGVkKE5vZGUqKTsKIAorICAgIENvbnRhaW5lck5vZGUqIHJvb3ROb2RlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yb290Tm9kZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgVHJlZVNjb3BlKERvY3VtZW50
KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7CisgICAgVHJlZVNjb3BlKENv
bnRhaW5lck5vZGUqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsKIAogICAgIHZvaWQgZGVz
dHJveVRyZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBDb250YWluZXJOb2RlKiBtX3Jv
b3ROb2RlOwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7CiAKICAgICBEb2N1bWVu
dE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRv
cHRlci5jcHAKaW5kZXggYWIxMTc5MjNlNzhkNDIxZWM0ZDAwMGY5MjM5YTkxNGUyNGNmYzg2Ni4u
NzI3ZGYyZjEyM2ViNDQ4NzM5ZWQwOTFiYmFhN2E0OTRlOWM1YTQ1OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDQsOCArNDQsOCBAQCB2b2lkIFRyZWVTY29w
ZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBjb25zdAogICAgIC8vIHRo
YXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBkYXRhIGFzIGNoYW5nZXMgbWFkZSB0byBpdCB3
aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZlcnNpb24KICAgICAvLyBvZiB0aGUgZG9jdW1l
bnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFzaW5nIHRoZSBET01UcmVlVmVyc2lvbiBvZiB0
aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQogICAgIC8vIHdlIGVuc3VyZSB0aGF0IHRoZSBjb2xs
ZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0ZWQgYXMgbmVlZGVkIHdoZW4gdGhlIGVsZW1l
bnQgaXMgbW92ZWQgYmFjay4KLSAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBtX29sZFNjb3Bl
ID8gbV9vbGRTY29wZS0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50
ID0gbV9uZXdTY29wZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogb2xkRG9jdW1lbnQgPSBt
X29sZFNjb3BlID8gbV9vbGRTY29wZS0+cm9vdE5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAg
RG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+cm9vdE5vZGUoKS0+ZG9jdW1lbnQo
KTsKICAgICBib29sIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCA9IG9sZERvY3VtZW50ICE9IG5ld0Rv
Y3VtZW50OwogICAgIGlmIChvbGREb2N1bWVudCAmJiB3aWxsTW92ZVRvTmV3RG9jdW1lbnQpCiAg
ICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBiYzQ1ZGJlNzFkYTc5NmM3NTg3MmZhZGRkMjkyNDk2
OWI5ZDc0ZTdhLi5hNDdiNmE0YmNhYzM0ZjE2MmEyOTg4NmNjNzUxYWVjZTkwMDAyOWRmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjcwLDggKzI3MCw4IEBAIHN0
YXRpYyBIVE1MSW5wdXRFbGVtZW50KiBhc0ZpbGVJbnB1dChOb2RlKiBub2RlKQogICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRFbGVtZW50KCk7CiAKICAg
ICAvLyBJZiB0aGlzIGlzIGEgYnV0dG9uIGluc2lkZSBvZiB0aGUgYSBmaWxlIGlucHV0LCBtb3Zl
IHVwIHRvIHRoZSBmaWxlIGlucHV0LgotICAgIGlmIChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVt
ZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5pc1NoYWRv
d1Jvb3QoKSkKLSAgICAgICAgaW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50LT50cmVlU2NvcGUo
KS0+c2hhZG93SG9zdCgpLT50b0lucHV0RWxlbWVudCgpOworICAgIGlmIChpbnB1dEVsZW1lbnQg
JiYgaW5wdXRFbGVtZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVTY29w
ZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgaW5wdXRFbGVtZW50ID0g
aW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+c2hhZG93SG9zdCgpLT50b0lu
cHV0RWxlbWVudCgpOwogCiAgICAgcmV0dXJuIGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQt
PmlzRmlsZVVwbG9hZCgpID8gaW5wdXRFbGVtZW50IDogMDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBiMThkNGQxNGQ0MGJmZWQzZTUwZjJjY2M2YTAzM2Rk
ODgyMzYxMjU1Li5iMGVmMjExMGY4YjBlYTdhZGZmMjZlNzJmNzRkZGU5MmI1NmMyMWE5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0zMTksMTAgKzMxOSwxMCBA
QCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKEZvY3Vz
RGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ygogc3RhdGljIGlubGluZSBOb2RlKiBvd25lck9mVHJl
ZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCiB7CiAgICAgQVNTRVJUKHNjb3BlKTsKLSAgICBpZiAo
c2NvcGUtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gc2NvcGUtPnNoYWRvd0hvc3Qo
KTsKLSAgICBpZiAoc2NvcGUtPmRvY3VtZW50KCktPmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBz
Y29wZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7CisgICAgaWYgKHNjb3Bl
LT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0dXJuIHNjb3BlLT5yb290
Tm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5kb2N1bWVu
dCgpLT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gc2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50
KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00MTks
MTggKzQxOSwxOCBAQCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6Om5leHRGb2N1c2FibGVOb2RlKFRy
ZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZAogICAgIC8vIExvb2sgZm9yIHRo
ZSBmaXJzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0OgogICAgIC8vIDEpIGhhcyB0aGUgbG93ZXN0
IHRhYmluZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4gc3RhcnQncyB0YWJpbmRleCAob3IgMCwgaWYg
c3RhcnQgaXMgbnVsbCksIGFuZAogICAgIC8vIDIpIGNvbWVzIGZpcnN0IGluIHRoZSBzY29wZSwg
aWYgdGhlcmUncyBhIHRpZS4KLSAgICBpZiAoTm9kZSogd2lubmVyID0gbmV4dE5vZGVXaXRoR3Jl
YXRlclRhYkluZGV4KHNjb3BlLCBzdGFydCA/IHN0YXJ0LT50YWJJbmRleCgpIDogMCwgZXZlbnQp
KQorICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgoc2Nv
cGUtPnJvb3ROb2RlKCksIHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkgOiAwLCBldmVudCkpCiAg
ICAgICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAvLyBUaGVyZSBhcmUgbm8gbm9kZXMgd2l0aCBh
IHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4LAogICAgIC8vIHNvIGZpbmQg
dGhlIGZpcnN0IG5vZGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCi0gICAgcmV0dXJuIG5leHROb2Rl
V2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUsIDAsIGV2ZW50KTsKKyAgICByZXR1cm4gbmV4dE5vZGVX
aXRoRXhhY3RUYWJJbmRleChzY29wZS0+cm9vdE5vZGUoKSwgMCwgZXZlbnQpOwogfQogCiBOb2Rl
KiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZShUcmVlU2NvcGUqIHNjb3Bl
LCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAgICAgTm9kZSogbGFzdDsK
LSAgICBmb3IgKGxhc3QgPSBzY29wZTsgbGFzdC0+bGFzdENoaWxkKCk7IGxhc3QgPSBsYXN0LT5s
YXN0Q2hpbGQoKSkgeyB9CisgICAgZm9yIChsYXN0ID0gc2NvcGUtPnJvb3ROb2RlKCk7IGxhc3Qt
Pmxhc3RDaGlsZCgpOyBsYXN0ID0gbGFzdC0+bGFzdENoaWxkKCkpIHsgfQogCiAgICAgLy8gRmly
c3QgdHJ5IHRvIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUgdGhhdCBjb21lcyBiZWZv
cmUgc3RhcnQgYW5kIGhhcyB0aGUgc2FtZSB0YWJpbmRleCBhcyBzdGFydC4KICAgICAvLyBJZiBz
dGFydCBpcyBudWxsLCBmaW5kIHRoZSBsYXN0IG5vZGUgaW4gdGhlIHNjb3BlIHdpdGggYSB0YWJp
bmRleCBvZiAwLgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124903</attachid>
            <date>2012-02-01 01:15:01 -0800</date>
            <delta_ts>2012-02-01 11:48:40 -0800</delta_ts>
            <desc>another iteration</desc>
            <filename>bug-76693-20120201181500.patch</filename>
            <type>text/plain</type>
            <size>18460</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uNWFiZjE0N2RhZTkzMGU4NDdhYzM4NzdlZGI0MWVi
YWMyZDAzYjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAyLTAxICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyeWN5IHNvIHRoYXQgU2hhZG93Um9vdCBjYW4gaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNoYWRv
d1Jvb3QgaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY2xh
c3MgaGllcmFyY2h5IG9mIElETCBpbiB0aGUgc3BlYy4KKyAgICAgICAgVHJlZVNjb3BlIGJlY29t
ZXMgYSBzZXBhcmF0ZWQgY2xhc3MsIHdoaWNoIGlzIG5vdyBpbmhlcml0ZWQgYnkgRG9jdW1lbnQg
YW5kIFNoYWRvd1Jvb3QgdXNpbmcgbXVsdGlwbGUtaW5oZXJpdGFuY2UuCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcHJlLXJlcXVpcmVtZW50IGZvciBjb21pbmcgSURMIGNoYW5nZS4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpidWlsZEFjY2Vzc0tleU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphdHRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRldGFjaCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRGcmFnbWVu
dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQpOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6flNoYWRvd1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgor
ICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjp+VHJlZVNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6Z2V0SW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjpmaW5kQW5jaG9yKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6cm9vdE5vZGUpOgor
ICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXNGaWxlSW5wdXQpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om93bmVyT2ZUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0Nv
bnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZSk6CisKIDIwMTItMDEtMzEgIFBhYmxvIEZs
b3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiBl
cnJvcnMgb24gYnVpbGQtd2Via2l0IC0tZGVidWcgLS1uby13b3JrZXJzIG9uIG1hYy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDNhYmIzYWRhOWJjYjUxZjAxZjAyNDc1YTgxOTE2NzNiZGVh
OGExYTEuLmMwNGQ5Nzk3M2NkNmI5ZDRlNDhhZTZmMjQwOTg2MzIyMDljYzJlNGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzczLDcgKzM3Myw4IEBAIHByaXZhdGU6CiB1aW50NjRfdCBE
b2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
LSAgICA6IFRyZWVTY29wZSgwKQorICAgIDogQ29udGFpbmVyTm9kZSgwKQorICAgICwgVHJlZVNj
b3BlKHRoaXMpCiAgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkKICAgICAsIG1fY29tcGF0aWJpbGl0
eU1vZGUoTm9RdWlya3NNb2RlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZChmYWxz
ZSkKQEAgLTU3MSw2ICs1NzIsOSBAQCBEb2N1bWVudDo6fkRvY3VtZW50KCkKIAogICAgIGlmICht
X21lZGlhUXVlcnlNYXRjaGVyKQogICAgICAgICBtX21lZGlhUXVlcnlNYXRjaGVyLT5kb2N1bWVu
dERlc3Ryb3llZCgpOworCisgICAgaWYgKGhhc1JhcmVEYXRhKCkpCisgICAgICAgIGNsZWFyUmFy
ZURhdGEoKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQpAQCAtNjQyLDE2
ICs2NDYsMTkgQEAgRWxlbWVudCogRG9jdW1lbnQ6OmdldEVsZW1lbnRCeUFjY2Vzc0tleShjb25z
dCBTdHJpbmcmIGtleSkKICAgICByZXR1cm4gbV9lbGVtZW50c0J5QWNjZXNzS2V5LmdldChrZXku
aW1wbCgpKTsKIH0KIAotdm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXAoVHJlZVNjb3Bl
KiByb290KQordm9pZCBEb2N1bWVudDo6YnVpbGRBY2Nlc3NLZXlNYXAoVHJlZVNjb3BlKiBzY29w
ZSkKIHsKLSAgICAgZm9yIChOb2RlKiBuID0gcm9vdDsgbjsgbiA9IG4tPnRyYXZlcnNlTmV4dE5v
ZGUocm9vdCkpIHsKLSAgICAgICAgaWYgKCFuLT5pc0VsZW1lbnROb2RlKCkpCisgICAgQVNTRVJU
KHNjb3BlKTsKKyAgICBOb2RlKiByb290Tm9kZSA9IHNjb3BlLT5yb290Tm9kZSgpOworICAgIGZv
ciAoTm9kZSogbm9kZSA9IHJvb3ROb2RlOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0
Tm9kZShyb290Tm9kZSkpIHsKKyAgICAgICAgaWYgKCFub2RlLT5pc0VsZW1lbnROb2RlKCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPihuKTsKKyAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0
PEVsZW1lbnQqPihub2RlKTsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBhY2Nlc3NLZXkg
PSBlbGVtZW50LT5nZXRBdHRyaWJ1dGUoYWNjZXNza2V5QXR0cik7CiAgICAgICAgIGlmICghYWNj
ZXNzS2V5LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1fZWxlbWVudHNCeUFjY2Vzc0tleS5zZXQo
YWNjZXNzS2V5LmltcGwoKSwgZWxlbWVudCk7Ci0gICAgICAgIGJ1aWxkQWNjZXNzS2V5TWFwKGVs
ZW1lbnQtPnNoYWRvd1Jvb3QoKSk7CisgICAgICAgIGlmIChlbGVtZW50LT5zaGFkb3dSb290KCkp
CisgICAgICAgICAgICBidWlsZEFjY2Vzc0tleU1hcChlbGVtZW50LT5zaGFkb3dSb290KCkpOwog
ICAgIH0KIH0KIApAQCAtNzIyLDcgKzcyOSw3IEBAIERPTUltcGxlbWVudGF0aW9uKiBEb2N1bWVu
dDo6aW1wbGVtZW50YXRpb24oKQogCiB2b2lkIERvY3VtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9v
bCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2Us
IGludCBjaGlsZENvdW50RGVsdGEpCiB7Ci0gICAgVHJlZVNjb3BlOjpjaGlsZHJlbkNoYW5nZWQo
Y2hhbmdlZEJ5UGFyc2VyLCBiZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVs
dGEpOworICAgIENvbnRhaW5lck5vZGU6OmNoaWxkcmVuQ2hhbmdlZChjaGFuZ2VkQnlQYXJzZXIs
IGJlZm9yZUNoYW5nZSwgYWZ0ZXJDaGFuZ2UsIGNoaWxkQ291bnREZWx0YSk7CiAgICAgCiAgICAg
RWxlbWVudCogbmV3RG9jdW1lbnRFbGVtZW50ID0gZmlyc3RFbGVtZW50Q2hpbGQodGhpcyk7CiAg
ICAgaWYgKG5ld0RvY3VtZW50RWxlbWVudCA9PSBtX2RvY3VtZW50RWxlbWVudCkKQEAgLTE4NDAs
NyArMTg0Nyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmF0dGFjaCgpCiAgICAgUmVuZGVyT2JqZWN0KiBy
ZW5kZXIgPSByZW5kZXJlcigpOwogICAgIHNldFJlbmRlcmVyKDApOwogCi0gICAgVHJlZVNjb3Bl
OjphdHRhY2goKTsKKyAgICBDb250YWluZXJOb2RlOjphdHRhY2goKTsKIAogICAgIHNldFJlbmRl
cmVyKHJlbmRlcik7CiB9CkBAIC0xODk0LDcgKzE5MDEsNyBAQCB2b2lkIERvY3VtZW50OjpkZXRh
Y2goKQogICAgIG1fZm9jdXNlZE5vZGUgPSAwOwogICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAKLSAg
ICBUcmVlU2NvcGU6OmRldGFjaCgpOworICAgIENvbnRhaW5lck5vZGU6OmRldGFjaCgpOwogCiAg
ICAgdW5zY2hlZHVsZVN0eWxlUmVjYWxjKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggZmRi
Mzk4ODc1ZjUxNGRmZmM0YzcwMzk3MjFiMWE3NTc0N2NiYjk3Yi4uMzk5ZjQzYzUyMjYyNzc3N2Vl
N2FkMmViMGMyMDNiZjYyMDM0ZDdiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpbmNsdWRlICJDaGVja2VkUmFkaW9CdXR0b25zLmgiCiAjaW5jbHVkZSAiQ29sbGVj
dGlvblR5cGUuaCIKICNpbmNsdWRlICJDb2xvci5oIgorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUu
aCIKICNpbmNsdWRlICJET01UaW1lU3RhbXAuaCIKICNpbmNsdWRlICJEb2N1bWVudEV2ZW50UXVl
dWUuaCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWluZy5oIgpAQCAtMjEzLDcgKzIxNCw3IEBAIGVu
dW0gUGFnZXNob3dFdmVudFBlcnNpc3RlbmNlIHsKIAogZW51bSBTdHlsZVNlbGVjdG9yVXBkYXRl
RmxhZyB7IFJlY2FsY1N0eWxlSW1tZWRpYXRlbHksIERlZmVyUmVjYWxjU3R5bGUsIFJlY2FsY1N0
eWxlSWZOZWVkZWQgfTsKIAotY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgVHJlZVNjb3BlLCBwdWJs
aWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCB7CitjbGFzcyBEb2N1bWVudCA6IHB1YmxpYyBDb250
YWluZXJOb2RlLCBwdWJsaWMgVHJlZVNjb3BlLCBwdWJsaWMgU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IGNyZWF0ZShGcmFt
ZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCkKICAgICB7CkBAIC0yMjcsOCArMjI4LDggQEAgcHVi
bGljOgogCiAgICAgTWVkaWFRdWVyeU1hdGNoZXIqIG1lZGlhUXVlcnlNYXRjaGVyKCk7CiAKLSAg
ICB1c2luZyBUcmVlU2NvcGU6OnJlZjsKLSAgICB1c2luZyBUcmVlU2NvcGU6OmRlcmVmOworICAg
IHVzaW5nIENvbnRhaW5lck5vZGU6OnJlZjsKKyAgICB1c2luZyBDb250YWluZXJOb2RlOjpkZXJl
ZjsKIAogICAgIC8vIE5vZGVzIGJlbG9uZ2luZyB0byB0aGlzIGRvY3VtZW50IGhvbGQgZ3VhcmQg
cmVmZXJlbmNlcyAtCiAgICAgLy8gdGhlc2UgYXJlIGVub3VnaCB0byBrZWVwIHRoZSBkb2N1bWVu
dCBmcm9tIGJlaW5nIGRlc3Ryb3llZCwgYnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFn
bWVudC5jcHAKaW5kZXggMjNkOGMyMDQzZTM4YThkYjE4ZjJmY2RlY2RmNDAyZDM1YjFkYmM4Ni4u
ZjdjZmFkZmNjNzlmMzFkNTE2NjNlYWFjMDQyYjM0NWRhNzM0YzE5YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtMzIsOCArMzIsOCBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKLURvY3VtZW50RnJhZ21lbnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQq
IGRvY3VtZW50KQotICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCkKK0RvY3VtZW50RnJhZ21l
bnQ6OkRvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBl
IGNvbnN0cnVjdGlvblR5cGUpCisgICAgOiBDb250YWluZXJOb2RlKGRvY3VtZW50LCBjb25zdHJ1
Y3Rpb25UeXBlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuaAppbmRleCA2YmY1MmYxYTc4NGExMjFjOWEzYmQwOGM4MDhjODIzNjJh
MDRmZjMwLi4xZWE0ZGNiMzI2NWZmMmE4NjY4YjQwZGY0ZmFmNzNkZjVlMGU0ZDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IHsgcmV0dXJu
IHRydWU7IH0KIAogcHJvdGVjdGVkOgotICAgIERvY3VtZW50RnJhZ21lbnQoRG9jdW1lbnQqKTsK
KyAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0
ZUNvbnRhaW5lcik7CiAgICAgdmlydHVhbCBTdHJpbmcgbm9kZU5hbWUoKSBjb25zdDsKIAogcHJp
dmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3JkZXJlZE1hcC5jcHAKaW5kZXggNDcy
NjhjNDE4NDNjMWJjNmRhZmM3YTgzY2E1NDg1Y2I3ZTcwYmRlNi4uODg2YjhiZjA4NTNhMzY1OWFh
Y2U3MGFjYmIzZDA3N2E3NDZkNTAyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50T3Jk
ZXJlZE1hcC5jcHAKQEAgLTEwOCw2ICsxMDgsNyBAQCB0ZW1wbGF0ZTxib29sIGtleU1hdGNoZXMo
QXRvbWljU3RyaW5nSW1wbCosIEVsZW1lbnQqKT4KIGlubGluZSBFbGVtZW50KiBEb2N1bWVudE9y
ZGVyZWRNYXA6OmdldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNvbnN0IFRyZWVTY29wZSogc2Nv
cGUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGtleSk7CisgICAgQVNTRVJUKHNjb3BlKTsKIAogICAg
IG1fbWFwLmNoZWNrQ29uc2lzdGVuY3koKTsKIApAQCAtMTE3LDcgKzExOCw3IEBAIGlubGluZSBF
bGVtZW50KiBEb2N1bWVudE9yZGVyZWRNYXA6OmdldChBdG9taWNTdHJpbmdJbXBsKiBrZXksIGNv
bnN0IFRyZWVTY29wZSoKIAogICAgIGlmIChtX2R1cGxpY2F0ZUNvdW50cy5jb250YWlucyhrZXkp
KSB7CiAgICAgICAgIC8vIFdlIGtub3cgdGhlcmUncyBhdCBsZWFzdCBvbmUgbm9kZSB0aGF0IG1h
dGNoZXM7IGl0ZXJhdGUgdG8gZmluZCB0aGUgZmlyc3Qgb25lLgotICAgICAgICBmb3IgKE5vZGUq
IG5vZGUgPSBzY29wZS0+Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZSgpKSB7CisgICAgICAgIGZvciAoTm9kZSogbm9kZSA9IHNjb3BlLT5yb290Tm9kZSgp
LT5maXJzdENoaWxkKCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsK
ICAgICAgICAgICAgIGlmICghbm9kZS0+aXNFbGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgZWxlbWVudCA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihu
b2RlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcAppbmRleCA0MDIyZTlhZWExNzY4NDgxODIy
NzJiMDc4NDJjMzljOTU0MTJmNzhiLi4xZTllOGJiNjExZjUwZWY2YmVlZGJjNWJhZGM2ZTE1NWVm
ZGRlZGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCkBAIC0zNyw3ICszNyw4IEBACiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QoRG9jdW1lbnQqIGRv
Y3VtZW50KQotICAgIDogVHJlZVNjb3BlKGRvY3VtZW50LCBDcmVhdGVTaGFkb3dSb290KQorICAg
IDogRG9jdW1lbnRGcmFnbWVudChkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKKyAgICAsIFRy
ZWVTY29wZSh0aGlzKQogICAgICwgbV9hcHBseUF1dGhvclNoZWV0cyhmYWxzZSkKIHsKICAgICBB
U1NFUlQoZG9jdW1lbnQpOwpAQCAtNTEsNiArNTIsOCBAQCBTaGFkb3dSb290OjpTaGFkb3dSb290
KERvY3VtZW50KiBkb2N1bWVudCkKIAogU2hhZG93Um9vdDo6flNoYWRvd1Jvb3QoKQogeworICAg
IGlmIChoYXNSYXJlRGF0YSgpKQorICAgICAgICBjbGVhclJhcmVEYXRhKCk7CiB9CiAKIFBhc3NS
ZWZQdHI8U2hhZG93Um9vdD4gU2hhZG93Um9vdDo6Y3JlYXRlKEVsZW1lbnQqIGVsZW1lbnQsIEV4
Y2VwdGlvbkNvZGUmIGVjKQpAQCAtMTYzLDcgKzE2Niw3IEBAIHZvaWQgU2hhZG93Um9vdDo6YXR0
YWNoKCkKICAgICAvLyBlbnN1cmVJbmNsdXNpb25zKCksIGFuZCBoZXJlIHdlIGp1c3QgZW5zdXJl
IHRoYXQKICAgICAvLyBpdCBpcyBpbiBjbGVhbiBzdGF0ZS4KICAgICBBU1NFUlQoIW1faW5jbHVz
aW9ucyB8fCAhbV9pbmNsdXNpb25zLT5oYXNDYW5kaWRhdGVzKCkpOwotICAgIFRyZWVTY29wZTo6
YXR0YWNoKCk7CisgICAgRG9jdW1lbnRGcmFnbWVudDo6YXR0YWNoKCk7CiAgICAgaWYgKG1faW5j
bHVzaW9ucykKICAgICAgICAgbV9pbmNsdXNpb25zLT5kaWRTZWxlY3QoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2hhZG93Um9vdC5oCmluZGV4IDgzNmU0YWFhY2Q0ZjZjZTE1ZjdjYWVjYmI4YmZiNzY2NDdiZmNk
N2EuLmU0ODNkMGY5NjNiMDg3NzUzYTFjZmNhMjRiMzJiM2ZkZDQyMGI0MTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L1NoYWRvd1Jvb3QuaApAQCAtMjcsNiArMjcsNyBAQAogI2lmbmRlZiBTaGFkb3dSb290X2gKICNk
ZWZpbmUgU2hhZG93Um9vdF9oCiAKKyNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIlRyZWVTY29wZS5oIgogCkBAIC0zNiw3
ICszNyw3IEBAIGNsYXNzIENvbnRlbnRJbmNsdXNpb25TZWxlY3RvcjsKIGNsYXNzIERvY3VtZW50
OwogY2xhc3MgSFRNTENvbnRlbnRFbGVtZW50OwogCi1jbGFzcyBTaGFkb3dSb290IDogcHVibGlj
IFRyZWVTY29wZSB7CitjbGFzcyBTaGFkb3dSb290IDogcHVibGljIERvY3VtZW50RnJhZ21lbnQs
IHB1YmxpYyBUcmVlU2NvcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRv
d1Jvb3Q+IGNyZWF0ZShEb2N1bWVudCopOwogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNoYWRvd1Jv
b3Q+IGNyZWF0ZShFbGVtZW50KiwgRXhjZXB0aW9uQ29kZSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1RyZWVTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmNwcAppbmRleCA5MWYzYzI5NWJlYWEyMjFmZjE3ODhkOGY5Yzg0MjRiZDgwMDAxNWNkLi44OTli
Y2NlOTg4MTJmOWVkNWE1MTMyZjNhYTc5YmZlZmE5ODkwMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVHJlZVNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNj
b3BlLmNwcApAQCAtMjYsMjggKzI2LDMwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiVHJlZVNjb3BlLmgiCiAKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCiAjaW5jbHVkZSAi
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxBbmNob3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE1hcEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKLSNpbmNsdWRlICJOb2RlUmFy
ZURhdGEuaCIKKyNpbmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5o
IgorI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRN
TE5hbWVzOwogCi1UcmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0
cnVjdGlvblR5cGUgY29uc3RydWN0aW9uVHlwZSkKLSAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1l
bnQsIGNvbnN0cnVjdGlvblR5cGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2Rl
KiByb290Tm9kZSkKKyAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAgICAgLCBtX3BhcmVudFRy
ZWVTY29wZSgwKQogICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogeworICAgIEFTU0VSVChy
b290Tm9kZSk7CiB9CiAKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7Ci0gICAgaWYgKGhhc1Jh
cmVEYXRhKCkpCi0gICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6
OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKQEAgLTU5LDcgKzYxLDcgQEAgdm9pZCBUcmVlU2NvcGU6
OmRlc3Ryb3lUcmVlU2NvcGVEYXRhKCkKIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2Nv
cGUoVHJlZVNjb3BlKiBuZXdQYXJlbnRTY29wZSkKIHsKICAgICAvLyBBIGRvY3VtZW50IG5vZGUg
Y2Fubm90IGJlIHJlLXBhcmVudGVkLgotICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7Cisg
ICAgQVNTRVJUKCFyb290Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKICAgICAvLyBFdmVyeSBz
Y29wZSBvdGhlciB0aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgogICAgIEFTU0VS
VChuZXdQYXJlbnRTY29wZSk7CiAKQEAgLTEwNSw3ICsxMDcsNyBAQCBIVE1MTWFwRWxlbWVudCog
VHJlZVNjb3BlOjpnZXRJbWFnZU1hcChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgc2l6ZV90IGhhc2hQb3MgPSB1cmwuZmluZCgnIycpOwogICAgIFN0cmlu
ZyBuYW1lID0gKGhhc2hQb3MgPT0gbm90Rm91bmQgPyB1cmwgOiB1cmwuc3Vic3RyaW5nKGhhc2hQ
b3MgKyAxKSkuaW1wbCgpOwotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQor
ICAgIGlmIChyb290Tm9kZSgpLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5n
ZXRFbGVtZW50QnlMb3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5p
bXBsKCksIHRoaXMpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPiht
X2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlNYXBOYW1lKEF0b21pY1N0cmluZyhuYW1lKS5p
bXBsKCksIHRoaXMpKTsKIH0KQEAgLTExNiwxMCArMTE4LDEwIEBAIEVsZW1lbnQqIFRyZWVTY29w
ZTo6ZmluZEFuY2hvcihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiAwOwogICAg
IGlmIChFbGVtZW50KiBlbGVtZW50ID0gZ2V0RWxlbWVudEJ5SWQobmFtZSkpCiAgICAgICAgIHJl
dHVybiBlbGVtZW50OwotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBu
b2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290Tm9k
ZSgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgIGlm
IChub2RlLT5oYXNUYWdOYW1lKGFUYWcpKSB7CiAgICAgICAgICAgICBIVE1MQW5jaG9yRWxlbWVu
dCogYW5jaG9yID0gc3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihub2RlKTsKLSAgICAg
ICAgICAgIGlmIChkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgeworICAgICAgICAgICAgaWYg
KHJvb3ROb2RlKCktPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gUXVpcmtzIG1vZGUsIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBuYW1lcy4K
ICAgICAgICAgICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYW5jaG9yLT5uYW1lKCksIG5h
bWUpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYW5jaG9yOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29w
ZS5oCmluZGV4IGZkNmMzY2I4ZGY5ZWY1YTkwMWYxNjNjMmE2NGM2YmIwNDljZDAwMWIuLmQxNzJh
ZDZlNzE3NjdlNDU5ZmYzYzI5MmVmNGRjYTNhYjEwYThjYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9UcmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3Bl
LmgKQEAgLTI2LDE1ICsyNiwyMCBAQAogI2lmbmRlZiBUcmVlU2NvcGVfaAogI2RlZmluZSBUcmVl
U2NvcGVfaAogCi0jaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50
T3JkZXJlZE1hcC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvQXRvbWljU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGFp
bmVyTm9kZTsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2NsYXNzIE5v
ZGU7CiAKLWNsYXNzIFRyZWVTY29wZSA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKKy8vIEEgY2xh
c3Mgd2hpY2ggaW5oZXJpdHMgYm90aCBOb2RlIGFuZCBUcmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFy
UmFyZURhdGEoKSBpbiBpdHMgZGVzdHJ1Y3Rvci4KKy8vIFNlZSBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC85MDM3OCBmb3IgdGhlIHJlYXNvbi4KK2NsYXNzIFRyZWVTY29wZSB7CiAg
ICAgZnJpZW5kIGNsYXNzIERvY3VtZW50OwogCiBwdWJsaWM6CkBAIC02NywxMyArNzIsMTYgQEAg
cHVibGljOgogICAgIC8vIFVzZWQgYnkgdGhlIGJhc2ljIERPTSBtdXRhdGlvbiBtZXRob2RzIChl
LmcuLCBhcHBlbmRDaGlsZCgpKS4KICAgICB2b2lkIGFkb3B0SWZOZWVkZWQoTm9kZSopOwogCisg
ICAgQ29udGFpbmVyTm9kZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlOyB9
CisKIHByb3RlY3RlZDoKLSAgICBUcmVlU2NvcGUoRG9jdW1lbnQqLCBDb25zdHJ1Y3Rpb25UeXBl
ID0gQ3JlYXRlQ29udGFpbmVyKTsKKyAgICBUcmVlU2NvcGUoQ29udGFpbmVyTm9kZSopOwogICAg
IHZpcnR1YWwgflRyZWVTY29wZSgpOwogCiAgICAgdm9pZCBkZXN0cm95VHJlZVNjb3BlRGF0YSgp
OwogCiBwcml2YXRlOgorICAgIENvbnRhaW5lck5vZGUqIG1fcm9vdE5vZGU7CiAgICAgVHJlZVNj
b3BlKiBtX3BhcmVudFRyZWVTY29wZTsKIAogICAgIERvY3VtZW50T3JkZXJlZE1hcCBtX2VsZW1l
bnRzQnlJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcAppbmRleCBhYjEx
NzkyM2U3OGQ0MjFlYzRkMDAwZjkyMzlhOTE0ZTI0Y2ZjODY2Li43MjdkZjJmMTIzZWI0NDg3Mzll
ZDA5MWJiYWE3YTQ5NGU5YzVhNDU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlQWRvcHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0
ZXIuY3BwCkBAIC00NCw4ICs0NCw4IEBAIHZvaWQgVHJlZVNjb3BlQWRvcHRlcjo6bW92ZVRyZWVU
b05ld1Njb3BlKE5vZGUqIHJvb3QpIGNvbnN0CiAgICAgLy8gdGhhdCBlbGVtZW50IG1heSBjb250
YWluIHN0YWxlIGRhdGEgYXMgY2hhbmdlcyBtYWRlIHRvIGl0IHdpbGwgaGF2ZSB1cGRhdGVkIHRo
ZSBET01UcmVlVmVyc2lvbgogICAgIC8vIG9mIHRoZSBkb2N1bWVudCBpdCB3YXMgbW92ZWQgdG8u
IEJ5IGluY3JlYXNpbmcgdGhlIERPTVRyZWVWZXJzaW9uIG9mIHRoZSBkb25hdGluZyBkb2N1bWVu
dCBoZXJlCiAgICAgLy8gd2UgZW5zdXJlIHRoYXQgdGhlIGNvbGxlY3Rpb24gY2FjaGUgd2lsbCBi
ZSBpbnZhbGlkYXRlZCBhcyBuZWVkZWQgd2hlbiB0aGUgZWxlbWVudCBpcyBtb3ZlZCBiYWNrLgot
ICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNjb3BlLT5kb2N1
bWVudCgpIDogMDsKLSAgICBEb2N1bWVudCogbmV3RG9jdW1lbnQgPSBtX25ld1Njb3BlLT5kb2N1
bWVudCgpOworICAgIERvY3VtZW50KiBvbGREb2N1bWVudCA9IG1fb2xkU2NvcGUgPyBtX29sZFNj
b3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpIDogMDsKKyAgICBEb2N1bWVudCogbmV3RG9jdW1l
bnQgPSBtX25ld1Njb3BlLT5yb290Tm9kZSgpLT5kb2N1bWVudCgpOwogICAgIGJvb2wgd2lsbE1v
dmVUb05ld0RvY3VtZW50ID0gb2xkRG9jdW1lbnQgIT0gbmV3RG9jdW1lbnQ7CiAgICAgaWYgKG9s
ZERvY3VtZW50ICYmIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCkKICAgICAgICAgb2xkRG9jdW1lbnQt
PmluY0RPTVRyZWVWZXJzaW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGJjNDVkYmU3MWRhNzk2Yzc1ODcyZmFkZGQyOTI0OTY5YjlkNzRlN2EuLmE0N2I2YTRi
Y2FjMzRmMTYyYTI5ODg2Y2M3NTFhZWNlOTAwMDI5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJh
Z0NvbnRyb2xsZXIuY3BwCkBAIC0yNzAsOCArMjcwLDggQEAgc3RhdGljIEhUTUxJbnB1dEVsZW1l
bnQqIGFzRmlsZUlucHV0KE5vZGUqIG5vZGUpCiAgICAgSFRNTElucHV0RWxlbWVudCogaW5wdXRF
bGVtZW50ID0gbm9kZS0+dG9JbnB1dEVsZW1lbnQoKTsKIAogICAgIC8vIElmIHRoaXMgaXMgYSBi
dXR0b24gaW5zaWRlIG9mIHRoZSBhIGZpbGUgaW5wdXQsIG1vdmUgdXAgdG8gdGhlIGZpbGUgaW5w
dXQuCi0gICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlzVGV4dEJ1dHRvbigp
ICYmIGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPmlzU2hhZG93Um9vdCgpKQotICAgICAgICBp
bnB1dEVsZW1lbnQgPSBpbnB1dEVsZW1lbnQtPnRyZWVTY29wZSgpLT5zaGFkb3dIb3N0KCktPnRv
SW5wdXRFbGVtZW50KCk7CisgICAgaWYgKGlucHV0RWxlbWVudCAmJiBpbnB1dEVsZW1lbnQtPmlz
VGV4dEJ1dHRvbigpICYmIGlucHV0RWxlbWVudC0+dHJlZVNjb3BlKCktPnJvb3ROb2RlKCktPmlz
U2hhZG93Um9vdCgpKQorICAgICAgICBpbnB1dEVsZW1lbnQgPSBpbnB1dEVsZW1lbnQtPnRyZWVT
Y29wZSgpLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCktPnRvSW5wdXRFbGVtZW50KCk7CiAKICAg
ICByZXR1cm4gaW5wdXRFbGVtZW50ICYmIGlucHV0RWxlbWVudC0+aXNGaWxlVXBsb2FkKCkgPyBp
bnB1dEVsZW1lbnQgOiAwOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CmluZGV4IGIxOGQ0ZDE0ZDQwYmZlZDNlNTBmMmNjYzZhMDMzZGQ4ODIzNjEyNTUuLmIwZWYyMTEw
ZjhiMGVhN2FkZmYyNmU3MmY3NGRkZTkyYjU2YzIxYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTMxOSwxMCArMzE5LDEwIEBAIGJvb2wgRm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9u
LCBLZXliCiBzdGF0aWMgaW5saW5lIE5vZGUqIG93bmVyT2ZUcmVlU2NvcGUoVHJlZVNjb3BlKiBz
Y29wZSkKIHsKICAgICBBU1NFUlQoc2NvcGUpOwotICAgIGlmIChzY29wZS0+aXNTaGFkb3dSb290
KCkpCi0gICAgICAgIHJldHVybiBzY29wZS0+c2hhZG93SG9zdCgpOwotICAgIGlmIChzY29wZS0+
ZG9jdW1lbnQoKS0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHNjb3BlLT5kb2N1bWVudCgpLT5m
cmFtZSgpLT5vd25lckVsZW1lbnQoKTsKKyAgICBpZiAoc2NvcGUtPnJvb3ROb2RlKCktPmlzU2hh
ZG93Um9vdCgpKQorICAgICAgICByZXR1cm4gc2NvcGUtPnJvb3ROb2RlKCktPnNoYWRvd0hvc3Qo
KTsKKyAgICBpZiAoc2NvcGUtPnJvb3ROb2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCkpCisgICAg
ICAgIHJldHVybiBzY29wZS0+cm9vdE5vZGUoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJF
bGVtZW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTQxOSwxOCArNDE5LDE4IEBAIE5vZGUq
IEZvY3VzQ29udHJvbGxlcjo6bmV4dEZvY3VzYWJsZU5vZGUoVHJlZVNjb3BlKiBzY29wZSwgTm9k
ZSogc3RhcnQsIEtleWJvYXJkCiAgICAgLy8gTG9vayBmb3IgdGhlIGZpcnN0IG5vZGUgaW4gdGhl
IHNjb3BlIHRoYXQ6CiAgICAgLy8gMSkgaGFzIHRoZSBsb3dlc3QgdGFiaW5kZXggdGhhdCBpcyBo
aWdoZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4IChvciAwLCBpZiBzdGFydCBpcyBudWxsKSwgYW5k
CiAgICAgLy8gMikgY29tZXMgZmlyc3QgaW4gdGhlIHNjb3BlLCBpZiB0aGVyZSdzIGEgdGllLgot
ICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdpdGhHcmVhdGVyVGFiSW5kZXgoc2NvcGUs
IHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkgOiAwLCBldmVudCkpCisgICAgaWYgKE5vZGUqIHdp
bm5lciA9IG5leHROb2RlV2l0aEdyZWF0ZXJUYWJJbmRleChzY29wZS0+cm9vdE5vZGUoKSwgc3Rh
cnQgPyBzdGFydC0+dGFiSW5kZXgoKSA6IDAsIGV2ZW50KSkKICAgICAgICAgcmV0dXJuIHdpbm5l
cjsKIAogICAgIC8vIFRoZXJlIGFyZSBubyBub2RlcyB3aXRoIGEgdGFiaW5kZXggZ3JlYXRlciB0
aGFuIHN0YXJ0J3MgdGFiaW5kZXgsCiAgICAgLy8gc28gZmluZCB0aGUgZmlyc3Qgbm9kZSB3aXRo
IGEgdGFiaW5kZXggb2YgMC4KLSAgICByZXR1cm4gbmV4dE5vZGVXaXRoRXhhY3RUYWJJbmRleChz
Y29wZSwgMCwgZXZlbnQpOworICAgIHJldHVybiBuZXh0Tm9kZVdpdGhFeGFjdFRhYkluZGV4KHNj
b3BlLT5yb290Tm9kZSgpLCAwLCBldmVudCk7CiB9CiAKIE5vZGUqIEZvY3VzQ29udHJvbGxlcjo6
cHJldmlvdXNGb2N1c2FibGVOb2RlKFRyZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXli
b2FyZEV2ZW50KiBldmVudCkKIHsKICAgICBOb2RlKiBsYXN0OwotICAgIGZvciAobGFzdCA9IHNj
b3BlOyBsYXN0LT5sYXN0Q2hpbGQoKTsgbGFzdCA9IGxhc3QtPmxhc3RDaGlsZCgpKSB7IH0KKyAg
ICBmb3IgKGxhc3QgPSBzY29wZS0+cm9vdE5vZGUoKTsgbGFzdC0+bGFzdENoaWxkKCk7IGxhc3Qg
PSBsYXN0LT5sYXN0Q2hpbGQoKSkgeyB9CiAKICAgICAvLyBGaXJzdCB0cnkgdG8gZmluZCB0aGUg
bGFzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0IGNvbWVzIGJlZm9yZSBzdGFydCBhbmQgaGFzIHRo
ZSBzYW1lIHRhYmluZGV4IGFzIHN0YXJ0LgogICAgIC8vIElmIHN0YXJ0IGlzIG51bGwsIGZpbmQg
dGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCg==
</data>
<flag name="review"
          id="126290"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125065</attachid>
            <date>2012-02-01 19:26:08 -0800</date>
            <delta_ts>2012-02-01 19:26:08 -0800</delta_ts>
            <desc>let me retry for mac-ews</desc>
            <filename>bug-76693-20120202122606.patch</filename>
            <type>text/plain</type>
            <size>18836</size>
            <attacher name="Hayato Ito">hayato</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2MzQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU5ODEzZTYzNjhlYmJk
YjVmMmIyZWY5NjNjYzVjYzI1NmNlNmYxZi4uNWFiZjE0N2RhZTkzMGU4NDdhYzM4NzdlZGI0MWVi
YWMyZDAzYjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU1IEBACisyMDEyLTAyLTAxICBIYXlh
dG8gSXRvICA8aGF5YXRvQGNocm9taXVtLm9yZz4KKworICAgICAgICBDaGFuZ2UgY2xhc3MgaGll
cmFyeWN5IHNvIHRoYXQgU2hhZG93Um9vdCBjYW4gaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50Lgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY2OTMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIFNoYWRv
d1Jvb3QgaW5oZXJpdCBEb2N1bWVudEZyYWdtZW50IHNvIHRoYXQgaXQgbWF0Y2hlcyB0aGUgY2xh
c3MgaGllcmFyY2h5IG9mIElETCBpbiB0aGUgc3BlYy4KKyAgICAgICAgVHJlZVNjb3BlIGJlY29t
ZXMgYSBzZXBhcmF0ZWQgY2xhc3MsIHdoaWNoIGlzIG5vdyBpbmhlcml0ZWQgYnkgRG9jdW1lbnQg
YW5kIFNoYWRvd1Jvb3QgdXNpbmcgbXVsdGlwbGUtaW5oZXJpdGFuY2UuCisgICAgICAgIFRoaXMg
cGF0Y2ggaXMgcHJlLXJlcXVpcmVtZW50IGZvciBjb21pbmcgSURMIGNoYW5nZS4KKworICAgICAg
ICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6fkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50OjpidWlsZEFjY2Vzc0tleU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphdHRhY2gpOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRldGFjaCk6CisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgIChEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6RG9jdW1lbnRGcmFnbWVu
dCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKERvY3VtZW50
RnJhZ21lbnQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQpOgorICAgICAgICAqIGRvbS9TaGFk
b3dSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U2hhZG93Um9vdDo6flNoYWRvd1Jvb3QpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93Um9vdDo6YXR0YWNoKToKKyAgICAgICAgKiBkb20vU2hhZG93Um9vdC5oOgor
ICAgICAgICAqIGRvbS9UcmVlU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3Bl
OjpUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJlZVNjb3BlOjp+VHJlZVNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6c2V0UGFyZW50VHJlZVNjb3BlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6Z2V0SW1hZ2VNYXApOgorICAgICAgICAoV2ViQ29yZTo6
VHJlZVNjb3BlOjpmaW5kQW5jaG9yKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlLmg6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyZWVTY29wZTo6cm9vdE5vZGUpOgor
ICAgICAgICAoVHJlZVNjb3BlKToKKyAgICAgICAgKiBkb20vVHJlZVNjb3BlQWRvcHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUcmVlU2NvcGVBZG9wdGVyOjptb3ZlVHJlZVRvTmV3U2NvcGUp
OgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
YXNGaWxlSW5wdXQpOgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om93bmVyT2ZUcmVlU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXND
b250cm9sbGVyOjpuZXh0Rm9jdXNhYmxlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0Nv
bnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZSk6CisKIDIwMTItMDEtMzEgIFBhYmxvIEZs
b3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEuY29tPgogCiAgICAgICAgIEZpeCBjb21waWxhdGlvbiBl
cnJvcnMgb24gYnVpbGQtd2Via2l0IC0tZGVidWcgLS1uby13b3JrZXJzIG9uIG1hYy4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDNhYmIzYWRhOWJjYjUxZjAxZjAyNDc1YTgxOTE2NzNiZGVh
OGExYTEuLmI5ZjFmOTgyNTU2NWJlZmJlNzVlY2MyZWU4NGZmMjk4NmYxMTMzNjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMzczLDcgKzM3Myw4IEBAIHByaXZhdGU6CiB1aW50NjRfdCBE
b2N1bWVudDo6c19nbG9iYWxUcmVlVmVyc2lvbiA9IDA7CiAKIERvY3VtZW50OjpEb2N1bWVudChG
cmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybCwgYm9vbCBpc1hIVE1MLCBib29sIGlzSFRNTCkK
LSAgICA6IFRyZWVTY29wZSgwKQorICAgIDogQ29udGFpbmVyTm9kZSgwKQorICAgICwgVHJlZVNj
b3BlKHRoaXMpCiAgICAgLCBtX2d1YXJkUmVmQ291bnQoMCkKICAgICAsIG1fY29tcGF0aWJpbGl0
eU1vZGUoTm9RdWlya3NNb2RlKQogICAgICwgbV9jb21wYXRpYmlsaXR5TW9kZUxvY2tlZChmYWxz
ZSkKQEAgLTU3MSw2ICs1NzIsMTEgQEAgRG9jdW1lbnQ6On5Eb2N1bWVudCgpCiAKICAgICBpZiAo
bV9tZWRpYVF1ZXJ5TWF0Y2hlcikKICAgICAgICAgbV9tZWRpYVF1ZXJ5TWF0Y2hlci0+ZG9jdW1l
bnREZXN0cm95ZWQoKTsKKworICAgIC8vIFdlIG11c3QgY2FsbCBjbGVhclJhcmVEYXRhKCkgaGVy
ZSBzaW5jZSBhIERvY3VtZW50IGNsYXNzIGluaGVyaXRzIFRyZWVTY29wZQorICAgIC8vIGFzIHdl
bGwgYXMgTm9kZS4gU2VlIGEgY29tbWVudCBvbiBUcmVlU2NvcGUuaCBmb3IgdGhlIHJlYXNvbi4K
KyAgICBpZiAoaGFzUmFyZURhdGEoKSkKKyAgICAgICAgY2xlYXJSYXJlRGF0YSgpOwogfQogCiB2
b2lkIERvY3VtZW50OjpyZW1vdmVkTGFzdFJlZigpCkBAIC02NDIsMTYgKzY0OCwxOSBAQCBFbGVt
ZW50KiBEb2N1bWVudDo6Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGNvbnN0IFN0cmluZyYga2V5KQog
ICAgIHJldHVybiBtX2VsZW1lbnRzQnlBY2Nlc3NLZXkuZ2V0KGtleS5pbXBsKCkpOwogfQogCi12
b2lkIERvY3VtZW50OjpidWlsZEFjY2Vzc0tleU1hcChUcmVlU2NvcGUqIHJvb3QpCit2b2lkIERv
Y3VtZW50OjpidWlsZEFjY2Vzc0tleU1hcChUcmVlU2NvcGUqIHNjb3BlKQogewotICAgICBmb3Ig
KE5vZGUqIG4gPSByb290OyBuOyBuID0gbi0+dHJhdmVyc2VOZXh0Tm9kZShyb290KSkgewotICAg
ICAgICBpZiAoIW4tPmlzRWxlbWVudE5vZGUoKSkKKyAgICBBU1NFUlQoc2NvcGUpOworICAgIE5v
ZGUqIHJvb3ROb2RlID0gc2NvcGUtPnJvb3ROb2RlKCk7CisgICAgZm9yIChOb2RlKiBub2RlID0g
cm9vdE5vZGU7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKHJvb3ROb2RlKSkg
eworICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwotICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4p
OworICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG5vZGUp
OwogICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGFjY2Vzc0tleSA9IGVsZW1lbnQtPmdldEF0
dHJpYnV0ZShhY2Nlc3NrZXlBdHRyKTsKICAgICAgICAgaWYgKCFhY2Nlc3NLZXkuaXNFbXB0eSgp
KQogICAgICAgICAgICAgbV9lbGVtZW50c0J5QWNjZXNzS2V5LnNldChhY2Nlc3NLZXkuaW1wbCgp
LCBlbGVtZW50KTsKLSAgICAgICAgYnVpbGRBY2Nlc3NLZXlNYXAoZWxlbWVudC0+c2hhZG93Um9v
dCgpKTsKKyAgICAgICAgaWYgKFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QgPSBlbGVtZW50LT5zaGFk
b3dSb290KCkpCisgICAgICAgICAgICBidWlsZEFjY2Vzc0tleU1hcChzaGFkb3dSb290KTsKICAg
ICB9CiB9CiAKQEAgLTcyMiw3ICs3MzEsNyBAQCBET01JbXBsZW1lbnRhdGlvbiogRG9jdW1lbnQ6
OmltcGxlbWVudGF0aW9uKCkKIAogdm9pZCBEb2N1bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wg
Y2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBp
bnQgY2hpbGRDb3VudERlbHRhKQogewotICAgIFRyZWVTY29wZTo6Y2hpbGRyZW5DaGFuZ2VkKGNo
YW5nZWRCeVBhcnNlciwgYmVmb3JlQ2hhbmdlLCBhZnRlckNoYW5nZSwgY2hpbGRDb3VudERlbHRh
KTsKKyAgICBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlZEJ5UGFyc2VyLCBi
ZWZvcmVDaGFuZ2UsIGFmdGVyQ2hhbmdlLCBjaGlsZENvdW50RGVsdGEpOwogICAgIAogICAgIEVs
ZW1lbnQqIG5ld0RvY3VtZW50RWxlbWVudCA9IGZpcnN0RWxlbWVudENoaWxkKHRoaXMpOwogICAg
IGlmIChuZXdEb2N1bWVudEVsZW1lbnQgPT0gbV9kb2N1bWVudEVsZW1lbnQpCkBAIC0xODQwLDcg
KzE4NDksNyBAQCB2b2lkIERvY3VtZW50OjphdHRhY2goKQogICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyID0gcmVuZGVyZXIoKTsKICAgICBzZXRSZW5kZXJlcigwKTsKIAotICAgIFRyZWVTY29wZTo6
YXR0YWNoKCk7CisgICAgQ29udGFpbmVyTm9kZTo6YXR0YWNoKCk7CiAKICAgICBzZXRSZW5kZXJl
cihyZW5kZXIpOwogfQpAQCAtMTg5NCw3ICsxOTAzLDcgQEAgdm9pZCBEb2N1bWVudDo6ZGV0YWNo
KCkKICAgICBtX2ZvY3VzZWROb2RlID0gMDsKICAgICBtX2FjdGl2ZU5vZGUgPSAwOwogCi0gICAg
VHJlZVNjb3BlOjpkZXRhY2goKTsKKyAgICBDb250YWluZXJOb2RlOjpkZXRhY2goKTsKIAogICAg
IHVuc2NoZWR1bGVTdHlsZVJlY2FsYygpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGZkYjM5
ODg3NWY1MTRkZmZjNGM3MDM5NzIxYjFhNzU3NDdjYmI5N2IuLjM5OWY0M2M1MjI2Mjc3NzdlZTdh
ZDJlYjBjMjAzYmY2MjAzNGQ3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiQ2hlY2tlZFJhZGlvQnV0dG9ucy5oIgogI2luY2x1ZGUgIkNvbGxlY3Rp
b25UeXBlLmgiCiAjaW5jbHVkZSAiQ29sb3IuaCIKKyNpbmNsdWRlICJDb250YWluZXJOb2RlLmgi
CiAjaW5jbHVkZSAiRE9NVGltZVN0YW1wLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRFdmVudFF1ZXVl
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUaW1pbmcuaCIKQEAgLTIxMyw3ICsyMTQsNyBAQCBlbnVt
IFBhZ2VzaG93RXZlbnRQZXJzaXN0ZW5jZSB7CiAKIGVudW0gU3R5bGVTZWxlY3RvclVwZGF0ZUZs
YWcgeyBSZWNhbGNTdHlsZUltbWVkaWF0ZWx5LCBEZWZlclJlY2FsY1N0eWxlLCBSZWNhbGNTdHls
ZUlmTmVlZGVkIH07CiAKLWNsYXNzIERvY3VtZW50IDogcHVibGljIFRyZWVTY29wZSwgcHVibGlj
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgeworY2xhc3MgRG9jdW1lbnQgOiBwdWJsaWMgQ29udGFp
bmVyTm9kZSwgcHVibGljIFRyZWVTY29wZSwgcHVibGljIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
ewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50PiBjcmVhdGUoRnJhbWUq
IGZyYW1lLCBjb25zdCBLVVJMJiB1cmwpCiAgICAgewpAQCAtMjI3LDggKzIyOCw4IEBAIHB1Ymxp
YzoKIAogICAgIE1lZGlhUXVlcnlNYXRjaGVyKiBtZWRpYVF1ZXJ5TWF0Y2hlcigpOwogCi0gICAg
dXNpbmcgVHJlZVNjb3BlOjpyZWY7Ci0gICAgdXNpbmcgVHJlZVNjb3BlOjpkZXJlZjsKKyAgICB1
c2luZyBDb250YWluZXJOb2RlOjpyZWY7CisgICAgdXNpbmcgQ29udGFpbmVyTm9kZTo6ZGVyZWY7
CiAKICAgICAvLyBOb2RlcyBiZWxvbmdpbmcgdG8gdGhpcyBkb2N1bWVudCBob2xkIGd1YXJkIHJl
ZmVyZW5jZXMgLQogICAgIC8vIHRoZXNlIGFyZSBlbm91Z2ggdG8ga2VlcCB0aGUgZG9jdW1lbnQg
ZnJvbSBiZWluZyBkZXN0cm95ZWQsIGJ1dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21l
bnQuY3BwCmluZGV4IDIzZDhjMjA0M2UzOGE4ZGIxOGYyZmNkZWNkZjQwMmQzNWIxZGJjODYuLmY3
Y2ZhZGZjYzc5ZjMxZDUxNjYzZWFhYzA0MmIzNDVkYTczNGMxOWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRGcmFnbWVudC5jcHAKQEAgLTMyLDggKzMyLDggQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1Eb2N1bWVudEZyYWdtZW50OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiBk
b2N1bWVudCkKLSAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQpCitEb2N1bWVudEZyYWdtZW50
OjpEb2N1bWVudEZyYWdtZW50KERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSBj
b25zdHJ1Y3Rpb25UeXBlKQorICAgIDogQ29udGFpbmVyTm9kZShkb2N1bWVudCwgY29uc3RydWN0
aW9uVHlwZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudEZyYWdtZW50LmgKaW5kZXggNmJmNTJmMWE3ODRhMTIxYzlhM2JkMDhjODA4YzgyMzYyYTA0
ZmYzMC4uMWVhNGRjYjMyNjVmZjJhODY2OGI0MGRmNGZhZjczZGY1ZTBlNGQ1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAKIHByb3RlY3RlZDoKLSAgICBEb2N1bWVudEZyYWdtZW50KERvY3VtZW50Kik7Cisg
ICAgRG9jdW1lbnRGcmFnbWVudChEb2N1bWVudCosIENvbnN0cnVjdGlvblR5cGUgPSBDcmVhdGVD
b250YWluZXIpOwogICAgIHZpcnR1YWwgU3RyaW5nIG5vZGVOYW1lKCkgY29uc3Q7CiAKIHByaXZh
dGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRPcmRlcmVkTWFwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVyZWRNYXAuY3BwCmluZGV4IDQ3MjY4
YzQxODQzYzFiYzZkYWZjN2E4M2NhNTQ4NWNiN2U3MGJkZTYuLjg4NmI4YmYwODUzYTM2NTlhYWNl
NzBhY2JiM2QwNzdhNzQ2ZDUwMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudE9yZGVyZWRNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9yZGVy
ZWRNYXAuY3BwCkBAIC0xMDgsNiArMTA4LDcgQEAgdGVtcGxhdGU8Ym9vbCBrZXlNYXRjaGVzKEF0
b21pY1N0cmluZ0ltcGwqLCBFbGVtZW50Kik+CiBpbmxpbmUgRWxlbWVudCogRG9jdW1lbnRPcmRl
cmVkTWFwOjpnZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBjb25zdCBUcmVlU2NvcGUqIHNjb3Bl
KSBjb25zdAogewogICAgIEFTU0VSVChrZXkpOworICAgIEFTU0VSVChzY29wZSk7CiAKICAgICBt
X21hcC5jaGVja0NvbnNpc3RlbmN5KCk7CiAKQEAgLTExNyw3ICsxMTgsNyBAQCBpbmxpbmUgRWxl
bWVudCogRG9jdW1lbnRPcmRlcmVkTWFwOjpnZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBjb25z
dCBUcmVlU2NvcGUqCiAKICAgICBpZiAobV9kdXBsaWNhdGVDb3VudHMuY29udGFpbnMoa2V5KSkg
ewogICAgICAgICAvLyBXZSBrbm93IHRoZXJlJ3MgYXQgbGVhc3Qgb25lIG5vZGUgdGhhdCBtYXRj
aGVzOyBpdGVyYXRlIHRvIGZpbmQgdGhlIGZpcnN0IG9uZS4KLSAgICAgICAgZm9yIChOb2RlKiBu
b2RlID0gc2NvcGUtPmZpcnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4
dE5vZGUoKSkgeworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSBzY29wZS0+cm9vdE5vZGUoKS0+
Zmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoIW5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAgICAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgICAgIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obm9k
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5jcHAKaW5kZXggNDAyMmU5YWVhMTc2ODQ4MTgyMjcy
YjA3ODQyYzM5Yzk1NDEyZjc4Yi4uMjI5NWNhMTVjMTM1YWNmMjVhMjQ0YWIwMDRhY2M4MzI4MWZj
NDFhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmNwcApAQCAtMzcsNyArMzcsOCBAQAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBTaGFkb3dSb290OjpTaGFkb3dSb290KERvY3VtZW50KiBkb2N1
bWVudCkKLSAgICA6IFRyZWVTY29wZShkb2N1bWVudCwgQ3JlYXRlU2hhZG93Um9vdCkKKyAgICA6
IERvY3VtZW50RnJhZ21lbnQoZG9jdW1lbnQsIENyZWF0ZVNoYWRvd1Jvb3QpCisgICAgLCBUcmVl
U2NvcGUodGhpcykKICAgICAsIG1fYXBwbHlBdXRob3JTaGVldHMoZmFsc2UpCiB7CiAgICAgQVNT
RVJUKGRvY3VtZW50KTsKQEAgLTUxLDYgKzUyLDEwIEBAIFNoYWRvd1Jvb3Q6OlNoYWRvd1Jvb3Qo
RG9jdW1lbnQqIGRvY3VtZW50KQogCiBTaGFkb3dSb290Ojp+U2hhZG93Um9vdCgpCiB7CisgICAg
Ly8gV2UgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEoKSBoZXJlIHNpbmNlIGEgU2hhZG93Um9vdCBj
bGFzcyBpbmhlcml0cyBUcmVlU2NvcGUKKyAgICAvLyBhcyB3ZWxsIGFzIE5vZGUuIFNlZSBhIGNv
bW1lbnQgb24gVHJlZVNjb3BlLmggZm9yIHRoZSByZWFzb24uCisgICAgaWYgKGhhc1JhcmVEYXRh
KCkpCisgICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIH0KIAogUGFzc1JlZlB0cjxTaGFkb3dSb290
PiBTaGFkb3dSb290OjpjcmVhdGUoRWxlbWVudCogZWxlbWVudCwgRXhjZXB0aW9uQ29kZSYgZWMp
CkBAIC0xNjMsNyArMTY4LDcgQEAgdm9pZCBTaGFkb3dSb290OjphdHRhY2goKQogICAgIC8vIGVu
c3VyZUluY2x1c2lvbnMoKSwgYW5kIGhlcmUgd2UganVzdCBlbnN1cmUgdGhhdAogICAgIC8vIGl0
IGlzIGluIGNsZWFuIHN0YXRlLgogICAgIEFTU0VSVCghbV9pbmNsdXNpb25zIHx8ICFtX2luY2x1
c2lvbnMtPmhhc0NhbmRpZGF0ZXMoKSk7Ci0gICAgVHJlZVNjb3BlOjphdHRhY2goKTsKKyAgICBE
b2N1bWVudEZyYWdtZW50OjphdHRhY2goKTsKICAgICBpZiAobV9pbmNsdXNpb25zKQogICAgICAg
ICBtX2luY2x1c2lvbnMtPmRpZFNlbGVjdCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL1NoYWRvd1Jvb3QuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmgKaW5k
ZXggODM2ZTRhYWFjZDRmNmNlMTVmN2NhZWNiYjhiZmI3NjY0N2JmY2Q3YS4uZTQ4M2QwZjk2M2Iw
ODc3NTNhMWNmY2EyNGIzMmIzZmRkNDIwYjQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL1NoYWRvd1Jvb3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oCkBA
IC0yNyw2ICsyNyw3IEBACiAjaWZuZGVmIFNoYWRvd1Jvb3RfaAogI2RlZmluZSBTaGFkb3dSb290
X2gKIAorI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25D
b2RlLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCiAKQEAgLTM2LDcgKzM3LDcgQEAgY2xhc3Mg
Q29udGVudEluY2x1c2lvblNlbGVjdG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQ29u
dGVudEVsZW1lbnQ7CiAKLWNsYXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgVHJlZVNjb3BlIHsKK2Ns
YXNzIFNoYWRvd1Jvb3QgOiBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudCwgcHVibGljIFRyZWVTY29w
ZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKERv
Y3VtZW50Kik7CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlKEVsZW1l
bnQqLCBFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHJl
ZVNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCmluZGV4IDkxZjNj
Mjk1YmVhYTIyMWZmMTc4OGQ4ZjljODQyNGJkODAwMDE1Y2QuLjcxMzg0NDYyZWFkNGQxZDYyNzVj
NmJmZTgwM2FkNGJhMTU4ZWVkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVl
U2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGUuY3BwCkBAIC0yNiwy
OCArMjYsMzAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJUcmVlU2NvcGUuaCIK
IAorI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQW5jaG9yRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxNYXBFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAi
Tm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiVHJlZVNjb3BlQWRvcHRlci5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1U
cmVlU2NvcGU6OlRyZWVTY29wZShEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUg
Y29uc3RydWN0aW9uVHlwZSkKLSAgICA6IENvbnRhaW5lck5vZGUoZG9jdW1lbnQsIGNvbnN0cnVj
dGlvblR5cGUpCitUcmVlU2NvcGU6OlRyZWVTY29wZShDb250YWluZXJOb2RlKiByb290Tm9kZSkK
KyAgICA6IG1fcm9vdE5vZGUocm9vdE5vZGUpCiAgICAgLCBtX3BhcmVudFRyZWVTY29wZSgwKQog
ICAgICwgbV9udW1Ob2RlTGlzdENhY2hlcygwKQogeworICAgIEFTU0VSVChyb290Tm9kZSk7CiB9
CiAKIFRyZWVTY29wZTo6flRyZWVTY29wZSgpCiB7Ci0gICAgaWYgKGhhc1JhcmVEYXRhKCkpCi0g
ICAgICAgIGNsZWFyUmFyZURhdGEoKTsKIH0KIAogdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVl
U2NvcGVEYXRhKCkKQEAgLTU5LDcgKzYxLDcgQEAgdm9pZCBUcmVlU2NvcGU6OmRlc3Ryb3lUcmVl
U2NvcGVEYXRhKCkKIHZvaWQgVHJlZVNjb3BlOjpzZXRQYXJlbnRUcmVlU2NvcGUoVHJlZVNjb3Bl
KiBuZXdQYXJlbnRTY29wZSkKIHsKICAgICAvLyBBIGRvY3VtZW50IG5vZGUgY2Fubm90IGJlIHJl
LXBhcmVudGVkLgotICAgIEFTU0VSVCghaXNEb2N1bWVudE5vZGUoKSk7CisgICAgQVNTRVJUKCFy
b290Tm9kZSgpLT5pc0RvY3VtZW50Tm9kZSgpKTsKICAgICAvLyBFdmVyeSBzY29wZSBvdGhlciB0
aGFuIGRvY3VtZW50IG5lZWRzIGEgcGFyZW50IHNjb3BlLgogICAgIEFTU0VSVChuZXdQYXJlbnRT
Y29wZSk7CiAKQEAgLTEwNSw3ICsxMDcsNyBAQCBIVE1MTWFwRWxlbWVudCogVHJlZVNjb3BlOjpn
ZXRJbWFnZU1hcChjb25zdCBTdHJpbmcmIHVybCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgc2l6ZV90IGhhc2hQb3MgPSB1cmwuZmluZCgnIycpOwogICAgIFN0cmluZyBuYW1lID0gKGhh
c2hQb3MgPT0gbm90Rm91bmQgPyB1cmwgOiB1cmwuc3Vic3RyaW5nKGhhc2hQb3MgKyAxKSkuaW1w
bCgpOwotICAgIGlmIChkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQorICAgIGlmIChyb290
Tm9kZSgpLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5TmFtZS5nZXRFbGVtZW50QnlM
b3dlcmNhc2VkTWFwTmFtZShBdG9taWNTdHJpbmcobmFtZS5sb3dlcigpKS5pbXBsKCksIHRoaXMp
KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTE1hcEVsZW1lbnQqPihtX2ltYWdlTWFwc0J5
TmFtZS5nZXRFbGVtZW50QnlNYXBOYW1lKEF0b21pY1N0cmluZyhuYW1lKS5pbXBsKCksIHRoaXMp
KTsKIH0KQEAgLTExNiwxMCArMTE4LDEwIEBAIEVsZW1lbnQqIFRyZWVTY29wZTo6ZmluZEFuY2hv
cihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIGlmIChFbGVtZW50
KiBlbGVtZW50ID0gZ2V0RWxlbWVudEJ5SWQobmFtZSkpCiAgICAgICAgIHJldHVybiBlbGVtZW50
OwotICAgIGZvciAoTm9kZSogbm9kZSA9IHRoaXM7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJz
ZU5leHROb2RlKCkpIHsKKyAgICBmb3IgKE5vZGUqIG5vZGUgPSByb290Tm9kZSgpOyBub2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7CiAgICAgICAgIGlmIChub2RlLT5oYXNU
YWdOYW1lKGFUYWcpKSB7CiAgICAgICAgICAgICBIVE1MQW5jaG9yRWxlbWVudCogYW5jaG9yID0g
c3RhdGljX2Nhc3Q8SFRNTEFuY2hvckVsZW1lbnQqPihub2RlKTsKLSAgICAgICAgICAgIGlmIChk
b2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkgeworICAgICAgICAgICAgaWYgKHJvb3ROb2RlKCkt
PmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gUXVpcmtz
IG1vZGUsIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBvZiBuYW1lcy4KICAgICAgICAgICAg
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2UoYW5jaG9yLT5uYW1lKCksIG5hbWUpKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYW5jaG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1RyZWVTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZS5oCmluZGV4IGZk
NmMzY2I4ZGY5ZWY1YTkwMWYxNjNjMmE2NGM2YmIwNDljZDAwMWIuLmI1OGJiZGM4M2EzMzM4ZGYw
MzBiYzg5MzY0ZTkwNDhjOWE2ZWY0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9U
cmVlU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlLmgKQEAgLTI2LDE1
ICsyNiwyMSBAQAogI2lmbmRlZiBUcmVlU2NvcGVfaAogI2RlZmluZSBUcmVlU2NvcGVfaAogCi0j
aW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50T3JkZXJlZE1hcC5o
IgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3Ry
aW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29udGFpbmVyTm9kZTsKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MTWFwRWxlbWVudDsKK2NsYXNzIE5vZGU7CiAKLWNsYXNz
IFRyZWVTY29wZSA6IHB1YmxpYyBDb250YWluZXJOb2RlIHsKKy8vIEEgY2xhc3Mgd2hpY2ggaW5o
ZXJpdHMgYm90aCBOb2RlIGFuZCBUcmVlU2NvcGUgbXVzdCBjYWxsIGNsZWFyUmFyZURhdGEoKSBp
biBpdHMgZGVzdHJ1Y3RvcgorLy8gc28gdGhhdCB0aGUgTm9kZSBkZXN0cnVjdG9yIG5vIGxvbmdl
ciBkb2VzIHByb2JsZW1hdGljIE5vZGVMaXN0IGNhY2hlIG1hbmlwdWxhdGlvbiBpbgorLy8gdGhl
IGRlc3RydWN0b3IuCitjbGFzcyBUcmVlU2NvcGUgewogICAgIGZyaWVuZCBjbGFzcyBEb2N1bWVu
dDsKIAogcHVibGljOgpAQCAtNjcsMTMgKzczLDE2IEBAIHB1YmxpYzoKICAgICAvLyBVc2VkIGJ5
IHRoZSBiYXNpYyBET00gbXV0YXRpb24gbWV0aG9kcyAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCiAg
ICAgdm9pZCBhZG9wdElmTmVlZGVkKE5vZGUqKTsKIAorICAgIENvbnRhaW5lck5vZGUqIHJvb3RO
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9yb290Tm9kZTsgfQorCiBwcm90ZWN0ZWQ6Ci0gICAgVHJl
ZVNjb3BlKERvY3VtZW50KiwgQ29uc3RydWN0aW9uVHlwZSA9IENyZWF0ZUNvbnRhaW5lcik7Cisg
ICAgVHJlZVNjb3BlKENvbnRhaW5lck5vZGUqKTsKICAgICB2aXJ0dWFsIH5UcmVlU2NvcGUoKTsK
IAogICAgIHZvaWQgZGVzdHJveVRyZWVTY29wZURhdGEoKTsKIAogcHJpdmF0ZToKKyAgICBDb250
YWluZXJOb2RlKiBtX3Jvb3ROb2RlOwogICAgIFRyZWVTY29wZSogbV9wYXJlbnRUcmVlU2NvcGU7
CiAKICAgICBEb2N1bWVudE9yZGVyZWRNYXAgbV9lbGVtZW50c0J5SWQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vVHJlZVNjb3BlQWRvcHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vVHJlZVNjb3BlQWRvcHRlci5jcHAKaW5kZXggYWIxMTc5MjNlNzhkNDIxZWM0ZDAwMGY5MjM5
YTkxNGUyNGNmYzg2Ni4uNzI3ZGYyZjEyM2ViNDQ4NzM5ZWQwOTFiYmFhN2E0OTRlOWM1YTQ1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RyZWVTY29wZUFkb3B0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9UcmVlU2NvcGVBZG9wdGVyLmNwcApAQCAtNDQsOCArNDQsOCBA
QCB2b2lkIFRyZWVTY29wZUFkb3B0ZXI6Om1vdmVUcmVlVG9OZXdTY29wZShOb2RlKiByb290KSBj
b25zdAogICAgIC8vIHRoYXQgZWxlbWVudCBtYXkgY29udGFpbiBzdGFsZSBkYXRhIGFzIGNoYW5n
ZXMgbWFkZSB0byBpdCB3aWxsIGhhdmUgdXBkYXRlZCB0aGUgRE9NVHJlZVZlcnNpb24KICAgICAv
LyBvZiB0aGUgZG9jdW1lbnQgaXQgd2FzIG1vdmVkIHRvLiBCeSBpbmNyZWFzaW5nIHRoZSBET01U
cmVlVmVyc2lvbiBvZiB0aGUgZG9uYXRpbmcgZG9jdW1lbnQgaGVyZQogICAgIC8vIHdlIGVuc3Vy
ZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGNhY2hlIHdpbGwgYmUgaW52YWxpZGF0ZWQgYXMgbmVlZGVk
IHdoZW4gdGhlIGVsZW1lbnQgaXMgbW92ZWQgYmFjay4KLSAgICBEb2N1bWVudCogb2xkRG9jdW1l
bnQgPSBtX29sZFNjb3BlID8gbV9vbGRTY29wZS0+ZG9jdW1lbnQoKSA6IDA7Ci0gICAgRG9jdW1l
bnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCog
b2xkRG9jdW1lbnQgPSBtX29sZFNjb3BlID8gbV9vbGRTY29wZS0+cm9vdE5vZGUoKS0+ZG9jdW1l
bnQoKSA6IDA7CisgICAgRG9jdW1lbnQqIG5ld0RvY3VtZW50ID0gbV9uZXdTY29wZS0+cm9vdE5v
ZGUoKS0+ZG9jdW1lbnQoKTsKICAgICBib29sIHdpbGxNb3ZlVG9OZXdEb2N1bWVudCA9IG9sZERv
Y3VtZW50ICE9IG5ld0RvY3VtZW50OwogICAgIGlmIChvbGREb2N1bWVudCAmJiB3aWxsTW92ZVRv
TmV3RG9jdW1lbnQpCiAgICAgICAgIG9sZERvY3VtZW50LT5pbmNET01UcmVlVmVyc2lvbigpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCBiYzQ1ZGJlNzFkYTc5NmM3
NTg3MmZhZGRkMjkyNDk2OWI5ZDc0ZTdhLi5hNDdiNmE0YmNhYzM0ZjE2MmEyOTg4NmNjNzUxYWVj
ZTkwMDAyOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtMjcw
LDggKzI3MCw4IEBAIHN0YXRpYyBIVE1MSW5wdXRFbGVtZW50KiBhc0ZpbGVJbnB1dChOb2RlKiBu
b2RlKQogICAgIEhUTUxJbnB1dEVsZW1lbnQqIGlucHV0RWxlbWVudCA9IG5vZGUtPnRvSW5wdXRF
bGVtZW50KCk7CiAKICAgICAvLyBJZiB0aGlzIGlzIGEgYnV0dG9uIGluc2lkZSBvZiB0aGUgYSBm
aWxlIGlucHV0LCBtb3ZlIHVwIHRvIHRoZSBmaWxlIGlucHV0LgotICAgIGlmIChpbnB1dEVsZW1l
bnQgJiYgaW5wdXRFbGVtZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVsZW1lbnQtPnRyZWVT
Y29wZSgpLT5pc1NoYWRvd1Jvb3QoKSkKLSAgICAgICAgaW5wdXRFbGVtZW50ID0gaW5wdXRFbGVt
ZW50LT50cmVlU2NvcGUoKS0+c2hhZG93SG9zdCgpLT50b0lucHV0RWxlbWVudCgpOworICAgIGlm
IChpbnB1dEVsZW1lbnQgJiYgaW5wdXRFbGVtZW50LT5pc1RleHRCdXR0b24oKSAmJiBpbnB1dEVs
ZW1lbnQtPnRyZWVTY29wZSgpLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAg
aW5wdXRFbGVtZW50ID0gaW5wdXRFbGVtZW50LT50cmVlU2NvcGUoKS0+cm9vdE5vZGUoKS0+c2hh
ZG93SG9zdCgpLT50b0lucHV0RWxlbWVudCgpOwogCiAgICAgcmV0dXJuIGlucHV0RWxlbWVudCAm
JiBpbnB1dEVsZW1lbnQtPmlzRmlsZVVwbG9hZCgpID8gaW5wdXRFbGVtZW50IDogMDsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBiMThkNGQxNGQ0MGJmZWQz
ZTUwZjJjY2M2YTAzM2RkODgyMzYxMjU1Li5iMGVmMjExMGY4YjBlYTdhZGZmMjZlNzJmNzRkZGU5
MmI1NmMyMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0z
MTksMTAgKzMxOSwxMCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzSW5Eb2N1
bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ygogc3RhdGljIGlubGluZSBO
b2RlKiBvd25lck9mVHJlZVNjb3BlKFRyZWVTY29wZSogc2NvcGUpCiB7CiAgICAgQVNTRVJUKHNj
b3BlKTsKLSAgICBpZiAoc2NvcGUtPmlzU2hhZG93Um9vdCgpKQotICAgICAgICByZXR1cm4gc2Nv
cGUtPnNoYWRvd0hvc3QoKTsKLSAgICBpZiAoc2NvcGUtPmRvY3VtZW50KCktPmZyYW1lKCkpCi0g
ICAgICAgIHJldHVybiBzY29wZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+b3duZXJFbGVtZW50KCk7
CisgICAgaWYgKHNjb3BlLT5yb290Tm9kZSgpLT5pc1NoYWRvd1Jvb3QoKSkKKyAgICAgICAgcmV0
dXJuIHNjb3BlLT5yb290Tm9kZSgpLT5zaGFkb3dIb3N0KCk7CisgICAgaWYgKHNjb3BlLT5yb290
Tm9kZSgpLT5kb2N1bWVudCgpLT5mcmFtZSgpKQorICAgICAgICByZXR1cm4gc2NvcGUtPnJvb3RO
b2RlKCktPmRvY3VtZW50KCktPmZyYW1lKCktPm93bmVyRWxlbWVudCgpOwogICAgIHJldHVybiAw
OwogfQogCkBAIC00MTksMTggKzQxOSwxOCBAQCBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6Om5leHRG
b2N1c2FibGVOb2RlKFRyZWVTY29wZSogc2NvcGUsIE5vZGUqIHN0YXJ0LCBLZXlib2FyZAogICAg
IC8vIExvb2sgZm9yIHRoZSBmaXJzdCBub2RlIGluIHRoZSBzY29wZSB0aGF0OgogICAgIC8vIDEp
IGhhcyB0aGUgbG93ZXN0IHRhYmluZGV4IHRoYXQgaXMgaGlnaGVyIHRoYW4gc3RhcnQncyB0YWJp
bmRleCAob3IgMCwgaWYgc3RhcnQgaXMgbnVsbCksIGFuZAogICAgIC8vIDIpIGNvbWVzIGZpcnN0
IGluIHRoZSBzY29wZSwgaWYgdGhlcmUncyBhIHRpZS4KLSAgICBpZiAoTm9kZSogd2lubmVyID0g
bmV4dE5vZGVXaXRoR3JlYXRlclRhYkluZGV4KHNjb3BlLCBzdGFydCA/IHN0YXJ0LT50YWJJbmRl
eCgpIDogMCwgZXZlbnQpKQorICAgIGlmIChOb2RlKiB3aW5uZXIgPSBuZXh0Tm9kZVdpdGhHcmVh
dGVyVGFiSW5kZXgoc2NvcGUtPnJvb3ROb2RlKCksIHN0YXJ0ID8gc3RhcnQtPnRhYkluZGV4KCkg
OiAwLCBldmVudCkpCiAgICAgICAgIHJldHVybiB3aW5uZXI7CiAKICAgICAvLyBUaGVyZSBhcmUg
bm8gbm9kZXMgd2l0aCBhIHRhYmluZGV4IGdyZWF0ZXIgdGhhbiBzdGFydCdzIHRhYmluZGV4LAog
ICAgIC8vIHNvIGZpbmQgdGhlIGZpcnN0IG5vZGUgd2l0aCBhIHRhYmluZGV4IG9mIDAuCi0gICAg
cmV0dXJuIG5leHROb2RlV2l0aEV4YWN0VGFiSW5kZXgoc2NvcGUsIDAsIGV2ZW50KTsKKyAgICBy
ZXR1cm4gbmV4dE5vZGVXaXRoRXhhY3RUYWJJbmRleChzY29wZS0+cm9vdE5vZGUoKSwgMCwgZXZl
bnQpOwogfQogCiBOb2RlKiBGb2N1c0NvbnRyb2xsZXI6OnByZXZpb3VzRm9jdXNhYmxlTm9kZShU
cmVlU2NvcGUqIHNjb3BlLCBOb2RlKiBzdGFydCwgS2V5Ym9hcmRFdmVudCogZXZlbnQpCiB7CiAg
ICAgTm9kZSogbGFzdDsKLSAgICBmb3IgKGxhc3QgPSBzY29wZTsgbGFzdC0+bGFzdENoaWxkKCk7
IGxhc3QgPSBsYXN0LT5sYXN0Q2hpbGQoKSkgeyB9CisgICAgZm9yIChsYXN0ID0gc2NvcGUtPnJv
b3ROb2RlKCk7IGxhc3QtPmxhc3RDaGlsZCgpOyBsYXN0ID0gbGFzdC0+bGFzdENoaWxkKCkpIHsg
fQogCiAgICAgLy8gRmlyc3QgdHJ5IHRvIGZpbmQgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgc2NvcGUg
dGhhdCBjb21lcyBiZWZvcmUgc3RhcnQgYW5kIGhhcyB0aGUgc2FtZSB0YWJpbmRleCBhcyBzdGFy
dC4KICAgICAvLyBJZiBzdGFydCBpcyBudWxsLCBmaW5kIHRoZSBsYXN0IG5vZGUgaW4gdGhlIHNj
b3BlIHdpdGggYSB0YWJpbmRleCBvZiAwLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>