<?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>56665</bug_id>
          
          <creation_ts>2011-03-18 12:07:01 -0700</creation_ts>
          <short_desc>REGRESSION (r79953): Can&apos;t type in MS Outlook 2011</short_desc>
          <delta_ts>2011-03-21 15:02:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.6</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P1</priority>
          <bug_severity>Critical</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Chang Shu">cshu</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>cshu</cc>
    
    <cc>eric</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>369777</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-18 12:07:01 -0700</bug_when>
    <thetext>Steps to reproduce:
1. Open a new mail message window.
2. Try to input text in the message body.

Results: you can&apos;t focus the message body.

Regression range is 79951-79959, this change is the only suspect.

&lt;rdar://problem/9140548&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369785</commentid>
    <comment_count>1</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-18 12:21:45 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/79953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369796</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-18 12:40:19 -0700</bug_when>
    <thetext>It seems like the only way this could happen was if Outlook was overriding EditorClient or WebView.  Or it calls setEditable before the main frame is created.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369813</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-18 13:13:16 -0700</bug_when>
    <thetext>Outlook does subclass WebView, but I don&apos;t see any indication of it touching sensitive parts.

When setEditable is called, a WebCore document already exists, and gets its designMode property set successfully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>369931</commentid>
    <comment_count>4</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-18 15:03:09 -0700</bug_when>
    <thetext>Per discussion on IRC with ap and rniwa, the root cause of the problem seems to be that r79953 removed the WebView level editablity which is persistent no matter whether underlying document itself is changed and editability gets lost. The resolution is to set this WebView editable value to WebCore. This avoids the callback from WebCore to WebKit which was the main goal in r79953 to improve performance.
I will work on a patch soon.
Thanks very much, guys and sorry for the regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370214</commentid>
    <comment_count>5</comment_count>
      <attachid>86283</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-20 08:49:51 -0700</bug_when>
    <thetext>Created attachment 86283
incomplete patch: need to fix WebCore.exp.in and test failed case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370226</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-20 12:44:46 -0700</bug_when>
    <thetext>It might be best to land a fix first, and work on a regression test separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370234</commentid>
    <comment_count>7</comment_count>
      <attachid>86283</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-20 13:38:41 -0700</bug_when>
    <thetext>Comment on attachment 86283
incomplete patch: need to fix WebCore.exp.in and test failed case

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

&gt; Source/WebCore/editing/SelectionController.cpp:1827
&gt;      bool caretBrowsing = m_frame-&gt;settings() &amp;&amp; m_frame-&gt;settings()-&gt;caretBrowsingEnabled();
&gt; -    if (!isNone() || !(document-&gt;inDesignMode() || caretBrowsing))
&gt; +    if (!isNone() || !(m_frame-&gt;isContentEditable() || caretBrowsing))

We can just call Document::isContentEditable here.

&gt; Source/WebCore/page/Frame.cpp:558
&gt; +bool Frame::isContentEditable() const
&gt; +{
&gt; +    return page()-&gt;isPageEditable() || m_doc-&gt;inDesignMode();
&gt; +}
&gt; +

I don&apos;t think there&apos;s a need to add isContentEditable to Frame.  We should just talk to the page inside Node::isContentEditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370254</commentid>
    <comment_count>8</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-20 18:38:56 -0700</bug_when>
    <thetext>&gt; I don&apos;t think there&apos;s a need to add isContentEditable to Frame.  We should just talk to the page inside Node::isContentEditable.

Good point. Thanks, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370255</commentid>
    <comment_count>9</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-20 18:40:26 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; It might be best to land a fix first, and work on a regression test separately.

I will provide a formal patch on Monday once I have access to my Mac. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370369</commentid>
    <comment_count>10</comment_count>
      <attachid>86318</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-21 07:30:27 -0700</bug_when>
    <thetext>Created attachment 86318
fix patch

Alexey, can you kindly check if this patch fixes the reported problem on MS Outlook 2011? Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370448</commentid>
    <comment_count>11</comment_count>
      <attachid>86318</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-21 10:22:31 -0700</bug_when>
    <thetext>Comment on attachment 86318
fix patch

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

Thank you for a quick fix! I verified that it addresses the problem for me.

The fix looks good to me. I had a few comments.

&gt; Source/WebCore/page/DragController.cpp:356
&gt; +    if (doc &amp;&amp; (m_didInitiateDrag || doc-&gt;isPluginDocument() || (doc-&gt;isContentEditable())))

Unneeded braces added here.

&gt; Source/WebCore/page/Page.h:296
&gt; +        void setPageEditable(bool isPageEditable) { m_isPageEditable = isPageEditable; }
&gt; +        bool isPageEditable() { return m_isPageEditable; }

&quot;Page&quot; sounds like a tautology to me in names of methods defined on Page. Do you think that it helps avoid confusion?

&gt; Source/WebCore/page/Page.h:403
&gt; +        bool m_isPageEditable;

Even more tautological as a member variable name.

&gt; Source/WebKit/mac/WebView/WebView.mm:5010
&gt; +        _private-&gt;page-&gt;setPageEditable(flag);
&gt;          if (!_private-&gt;tabKeyCyclesThroughElementsChanged &amp;&amp; _private-&gt;page)

There is a check for null page below the line you added. This can&apos;t be right - either the check is unnecessary (and then the check in isEditable is also unnecessary), or this can crash.

&gt; LayoutTests/ChangeLog:10
&gt; +        Restore the expected result before r79953.
&gt; +
&gt; +        * platform/mac/editing/selection/designmode-no-caret-expected.txt:

I don&apos;t understand why this result changes back and forth. How can this patch affect anything in layout tests, given that we don&apos;t call -[WebView setEditable:]?

This needs to be explained in ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370458</commentid>
    <comment_count>12</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-21 10:42:40 -0700</bug_when>
    <thetext>&gt; &quot;Page&quot; sounds like a tautology to me in names of methods defined on Page. Do you think that it helps avoid confusion?

Yeah, the reason I added &quot;page&quot; here is just for avoiding confusion. But I am not sure if it&apos;s necessary either. Any suggestions, like isEditable, isContentEditable?

&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:5010
&gt; &gt; +        _private-&gt;page-&gt;setPageEditable(flag);
&gt; &gt;          if (!_private-&gt;tabKeyCyclesThroughElementsChanged &amp;&amp; _private-&gt;page)
&gt; 
&gt; There is a check for null page below the line you added. This can&apos;t be right - either the check is unnecessary (and then the check in isEditable is also unnecessary), or this can crash.

Will fix.

&gt; I don&apos;t understand why this result changes back and forth. How can this patch affect anything in layout tests, given that we don&apos;t call -[WebView setEditable:]?
&gt; 
&gt; This needs to be explained in ChangeLog.

My previous patch indeed changed behavior slightly. Here were my findings in bug 54292.
&quot;Here are some findings for the regression:
In function finishedLoadingWithDataSource in file mac/WebView/WebHTMLRepresentation.mm,
    if ([webView isEditable])
        core(webFrame)-&gt;editor()-&gt;applyEditingStyleToBodyElement();

The if condition always returns false before my change because the local flag is false. In my patch, the local flag is removed and isEditable checks the designmode, which is true.&quot;

We are restoring the old behavior here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370460</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-03-21 10:46:58 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; &gt; &quot;Page&quot; sounds like a tautology to me in names of methods defined on Page. Do you think that it helps avoid confusion?
&gt; 
&gt; Yeah, the reason I added &quot;page&quot; here is just for avoiding confusion. But I am not sure if it&apos;s necessary either. Any suggestions, like isEditable, isContentEditable?

isEditable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370503</commentid>
    <comment_count>14</comment_count>
      <attachid>86343</attachid>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-21 11:41:06 -0700</bug_when>
    <thetext>Created attachment 86343
fix patch 2: addressed the reviews</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370504</commentid>
    <comment_count>15</comment_count>
      <attachid>86343</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-21 11:44:57 -0700</bug_when>
    <thetext>Comment on attachment 86343
fix patch 2: addressed the reviews

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

&gt; Source/WebKit/mac/WebView/WebView.mm:5008
&gt; +    if ([self isEditable] != flag &amp;&amp; _private-&gt;page) {

This looks rather suspicious.  -[WebView setEditable:] should always work, so failing when there is no page would be a bug. Is that even a possible situation?

&gt; LayoutTests/ChangeLog:11
&gt; +        Restore the expected result before r79953. r79953 changed behavior slightly in function
&gt; +        finishedLoadingWithDataSource in file mac/WebView/WebHTMLRepresentation.mm, where
&gt; +        core(webFrame)-&gt;editor()-&gt;applyEditingStyleToBodyElement() was called but not before r79953
&gt; +        or after this patch.

I&apos;m wondering if that code is correct. Not something to fix in this bug, obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370806</commentid>
    <comment_count>16</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-21 11:59:02 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/mac/WebView/WebView.mm:5008
&gt; &gt; +    if ([self isEditable] != flag &amp;&amp; _private-&gt;page) {
&gt; 
&gt; This looks rather suspicious.  -[WebView setEditable:] should always work, so failing when there is no page would be a bug. Is that even a possible situation?

I am not sure if there is such a case. My code change is just a rewrite of the original code.

&gt; 
&gt; &gt; LayoutTests/ChangeLog:11
&gt; &gt; +        Restore the expected result before r79953. r79953 changed behavior slightly in function
&gt; &gt; +        finishedLoadingWithDataSource in file mac/WebView/WebHTMLRepresentation.mm, where
&gt; &gt; +        core(webFrame)-&gt;editor()-&gt;applyEditingStyleToBodyElement() was called but not before r79953
&gt; &gt; +        or after this patch.
&gt; 
&gt; I&apos;m wondering if that code is correct. Not something to fix in this bug, obviously.

Yes, it&apos;s likely that r79953 was actually the right behavior. If we see some more significant impact than this test case, we should open a bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370834</commentid>
    <comment_count>17</comment_count>
      <attachid>86343</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 12:47:35 -0700</bug_when>
    <thetext>Comment on attachment 86343
fix patch 2: addressed the reviews

Clearing flags on attachment: 86343

Committed r81600: &lt;http://trac.webkit.org/changeset/81600&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370835</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-03-21 12:47:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370861</commentid>
    <comment_count>19</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2011-03-21 13:20:29 -0700</bug_when>
    <thetext>&gt; I am not sure if there is such a case. My code change is just a rewrite of the original code.

What I mean is that with original code, setEditable: was always successful, because it didn&apos;t need to check if page was null. It&apos;s not the case now.

Thanks again for fixing this so quickly!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370887</commentid>
    <comment_count>20</comment_count>
    <who name="Chang Shu">cshu</who>
    <bug_when>2011-03-21 14:15:18 -0700</bug_when>
    <thetext>&gt; What I mean is that with original code, setEditable: was always successful, because it didn&apos;t need to check if page was null. It&apos;s not the case now.

Actually, the original code checked page against null, too, implicitly. First in the first if statement, explicitly, then in [self _mainCoreFrame], if page is null, mainFrame will be null and nothing will execute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>370934</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-03-21 15:02:00 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/81600 might have broken GTK Linux 64-bit Debug
The following tests are not passing:
http/tests/inspector/network/network-size.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86283</attachid>
            <date>2011-03-20 08:49:51 -0700</date>
            <delta_ts>2011-03-21 07:30:27 -0700</delta_ts>
            <desc>incomplete patch: need to fix WebCore.exp.in and test failed case</desc>
            <filename>56665_1.patch</filename>
            <type>text/plain</type>
            <size>10290</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MTU0OSkKKysrIFNvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03ODksNyArNzg5LDYgQEAgX19a
TjdXZWJDb3JlN2Nvb2tpZXNFUEtOU184RG9jdW1lbnRFUktOUwogX19aTjdXZWJDb3JlN25zQ29s
b3JFUktOU181Q29sb3JFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9f
Wk43V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5b3V0RXYKLV9fWk43V2ViQ29yZThEb2N1bWVu
dDEzc2V0RGVzaWduTW9kZUVOUzBfMTNJbmhlcml0ZWRCb29sRQogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTNzdmdFeHRlbnNpb25zRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0c2V0Rm9jdXNlZE5v
ZGVFTjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2
aXNQYWdlQm94VmlzaWJsZUVpCkBAIC0xMjQwLDcgKzEyMzksNiBAQCBfX1pOSzdXZWJDb3JlN0lu
dFJlY3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dlYkNvcmU3SW50U2l6ZWN2N19OU1NpemVFdgogX19a
Tks3V2ViQ29yZThEb2N1bWVudDEwcmVuZGVyVmlld0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50
MTFjb21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMmlu
RGVzaWduTW9kZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKIF9f
Wk5LN1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYgogX19aTks3V2ViQ29y
ZThEb2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQpJbmRleDog
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA4MTU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY2NCw3ICs2NjQsOCBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVh
ZE9uCiAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+aW5EZXNp
Z25Nb2RlKCk7CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAg
ICAgICByZXR1cm4gIShmcmFtZSAmJiBmcmFtZS0+aXNDb250ZW50RWRpdGFibGUoKSk7CiAgICAg
fQogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSkgewpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmNwcAkocmV2aXNpb24gODE1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIE5vZGU6OmRlcHJlY2F0
ZWRQYXJzZXJBZGRDaGlsZChQYXNzCiAKIGJvb2wgTm9kZTo6aXNDb250ZW50RWRpdGFibGUoRWRp
dGFibGVMZXZlbCBlZGl0YWJsZUxldmVsKSBjb25zdAogewotICAgIGlmIChkb2N1bWVudCgpLT5p
bkRlc2lnbk1vZGUoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgp
LT5mcmFtZSgpLT5pc0NvbnRlbnRFZGl0YWJsZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAog
ICAgIC8vIElkZWFsbHkgd2UnZCBjYWxsIEFTU0VSVCghbmVlZHNTdHlsZVJlY2FsYygpKSBoZXJl
LCBidXQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9s
bGVyLmNwcAkocmV2aXNpb24gODE1NDkpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVj
dGlvbkNvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODI0LDcgKzE4MjQsNyBAQCB2
b2lkIFNlbGVjdGlvbkNvbnRyb2xsZXI6OnNldFNlbGVjdGlvbkZyCiAKICAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIGJvb2wgY2FyZXRCcm93c2luZyA9
IG1fZnJhbWUtPnNldHRpbmdzKCkgJiYgbV9mcmFtZS0+c2V0dGluZ3MoKS0+Y2FyZXRCcm93c2lu
Z0VuYWJsZWQoKTsKLSAgICBpZiAoIWlzTm9uZSgpIHx8ICEoZG9jdW1lbnQtPmluRGVzaWduTW9k
ZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQorICAgIGlmICghaXNOb25lKCkgfHwgIShtX2ZyYW1lLT5p
c0NvbnRlbnRFZGl0YWJsZSgpIHx8IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBOb2RlKiBub2RlID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxNTQ5KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1
Myw3ICszNTMsNyBAQCBEcmFnT3BlcmF0aW9uIERyYWdDb250cm9sbGVyOjpvcGVyYXRpb25GCiB7
CiAgICAgQVNTRVJUKGRyYWdEYXRhKTsKICAgICBEb2N1bWVudCogZG9jID0gbV9wYWdlLT5tYWlu
RnJhbWUoKS0+ZG9jdW1lbnRBdFBvaW50KGRyYWdEYXRhLT5jbGllbnRQb3NpdGlvbigpKTsKLSAg
ICBpZiAoZG9jICYmIChtX2RpZEluaXRpYXRlRHJhZyB8fCBkb2MtPmlzUGx1Z2luRG9jdW1lbnQo
KSB8fCBkb2MtPmluRGVzaWduTW9kZSgpKSkKKyAgICBpZiAoZG9jICYmIChtX2RpZEluaXRpYXRl
RHJhZyB8fCBkb2MtPmlzUGx1Z2luRG9jdW1lbnQoKSB8fCAoZG9jLT5mcmFtZSgpICYmIGRvYy0+
ZnJhbWUoKS0+aXNDb250ZW50RWRpdGFibGUoKSkpKQogICAgICAgICByZXR1cm4gRHJhZ09wZXJh
dGlvbk5vbmU7CiAgICAgcmV0dXJuIGRyYWdPcGVyYXRpb24oZHJhZ0RhdGEpOwogfQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDgxNTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1MSw2ICs1NTEsMTEgQEAgdm9pZCBGcmFt
ZTo6aW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChETwogICAgIH0KIH0KIAorYm9vbCBGcmFtZTo6
aXNDb250ZW50RWRpdGFibGUoKSBjb25zdAoreworICAgIHJldHVybiBwYWdlKCktPmlzUGFnZUVk
aXRhYmxlKCkgfHwgbV9kb2MtPmluRGVzaWduTW9kZSgpOworfQorCiAjaWZuZGVmIE5ERUJVRwog
c3RhdGljIEhhc2hTZXQ8RnJhbWUqPiYga2VlcEFsaXZlU2V0KCkKIHsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgJKHJldmlzaW9uIDgxNTQ5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBEcmFnSW1hZ2VSZWYgbm9kZUltYWdlKE5vZGUqKTsKICAgICAgICAgRHJhZ0ltYWdlUmVm
IGRyYWdJbWFnZUZvclNlbGVjdGlvbigpOwogCisgICAgICAgIGJvb2wgaXNDb250ZW50RWRpdGFi
bGUoKSBjb25zdDsgLy8gaWYgdHJ1ZSwgZXZlcnl0aGluZyBpbiBmcmFtZSBpcyBlZGl0YWJsZQor
CiAgICAgICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JQb2ludChjb25zdCBJ
bnRQb2ludCYgZnJhbWVQb2ludCk7CiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudEF0UG9pbnQo
Y29uc3QgSW50UG9pbnQmIHdpbmRvd1BvaW50KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCShy
ZXZpc2lvbiA4MTU0OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Miw2ICsxNjIsNyBAQCBQYWdlOjpQYWdlKGNvbnN0IFBhZ2VDbGllbnRzJiBw
YWdlQ2xpZW50CiAgICAgLCBtX2NhblN0YXJ0TWVkaWEodHJ1ZSkKICAgICAsIG1fdmlld01vZGUo
Vmlld01vZGVXaW5kb3dlZCkKICAgICAsIG1fbWluaW11bVRpbWVySW50ZXJ2YWwoU2V0dGluZ3M6
OmRlZmF1bHRNaW5ET01UaW1lckludGVydmFsKCkpCisgICAgLCBtX2lzUGFnZUVkaXRhYmxlKGZh
bHNlKQogewogICAgIGlmICghYWxsUGFnZXMpIHsKICAgICAgICAgYWxsUGFnZXMgPSBuZXcgSGFz
aFNldDxQYWdlKj47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gODE1NDkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSwxMCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIHJlY3Vyc2l2ZSBmcmFtZXNldCBwYWdl
cyBjYW4gcXVpY2tseSBicmluZyB0aGUgcHJvZ3JhbSB0byBpdHMga25lZXMKICAgICAgICAgLy8g
d2l0aCBleHBvbmVudGlhbCBncm93dGggaW4gdGhlIG51bWJlciBvZiBmcmFtZXMuCiAgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgbWF4TnVtYmVyT2ZGcmFtZXMgPSAxMDAwOworCisgICAgICAgIHZv
aWQgc2V0UGFnZUVkaXRhYmxlKGJvb2wgaXNQYWdlRWRpdGFibGUpIHsgbV9pc1BhZ2VFZGl0YWJs
ZSA9IGlzUGFnZUVkaXRhYmxlOyB9CisgICAgICAgIGJvb2wgaXNQYWdlRWRpdGFibGUoKSB7IHJl
dHVybiBtX2lzUGFnZUVkaXRhYmxlOyB9CisKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGlu
aXRHcm91cCgpOwogCkBAIC0zOTUsNiArMzk5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICBkb3VibGUgbV9taW5pbXVtVGltZXJJbnRlcnZhbDsKIAogICAgICAgICBPd25QdHI8U2Ny
b2xsYWJsZUFyZWFTZXQ+IG1fc2Nyb2xsYWJsZUFyZWFTZXQ7CisKKyAgICAgICAgYm9vbCBtX2lz
UGFnZUVkaXRhYmxlOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDgxNTQ5
KQorKysgU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00MzQ1LDggKzQzNDUsNyBAQCBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZ2V0
X2VkaXRhYmxlKFdlCiB7CiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9W
SUVXKHdlYlZpZXcpLCBGQUxTRSk7CiAKLSAgICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcp
LT5tYWluRnJhbWUoKTsKLSAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCktPmlu
RGVzaWduTW9kZSgpOworICAgIHJldHVybiBjb3JlKHdlYlZpZXcpLT5pc1BhZ2VFZGl0YWJsZSgp
OwogfQogCiAvKioKQEAgLTQzNzEsMTUgKzQzNzAsMTQgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
c2V0X2VkaXRhYmxlKFdlYktpdAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dF
Ql9WSUVXKHdlYlZpZXcpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1h
aW5GcmFtZSgpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwotCi0gICAgLy8gVE9ETzog
V2hhdCBoYXBwZW5zIHdoZW4gdGhlIGZyYW1lIGlzIHJlcGxhY2VkPwogICAgIGZsYWcgPSBmbGFn
ICE9IEZBTFNFOwogICAgIGlmIChmbGFnID09IHdlYmtpdF93ZWJfdmlld19nZXRfZWRpdGFibGUo
d2ViVmlldykpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRE
ZXNpZ25Nb2RlKGZsYWcgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVu
dDo6b2ZmKTsKKyAgICBjb3JlKHdlYlZpZXcpLT5zZXRQYWdlRWRpdGFibGUoZmxhZyk7CisKKyAg
ICBGcmFtZSogZnJhbWUgPSBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKTsKKyAgICBnX3JldHVy
bl9pZl9mYWlsKGZyYW1lKTsKIAogICAgIGlmIChmbGFnKSB7CiAgICAgICAgIGZyYW1lLT5lZGl0
b3IoKS0+YXBwbHlFZGl0aW5nU3R5bGVUb0JvZHlFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MTU0OSkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAwNiwxMSArNTAwNiwx
MSBAQCAtIChOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5CiAtICh2b2lkKXNl
dEVkaXRhYmxlOihCT09MKWZsYWcKIHsKICAgICBpZiAoW3NlbGYgaXNFZGl0YWJsZV0gIT0gZmxh
ZykgeworICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0UGFnZUVkaXRhYmxlKGZsYWcpOwogICAg
ICAgICBpZiAoIV9wcml2YXRlLT50YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDaGFuZ2VkICYm
IF9wcml2YXRlLT5wYWdlKQogICAgICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldFRhYktleUN5
Y2xlc1Rocm91Z2hFbGVtZW50cyghZmxhZyk7CiAgICAgICAgIEZyYW1lKiBtYWluRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgICAgIGlmIChtYWluRnJhbWUpIHsKLSAgICAgICAg
ICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShmbGFnID8gV2ViQ29yZTo6
RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9jdW1lbnQ6Om9mZik7CiAgICAgICAgICAgICBpZiAo
ZmxhZykgewogICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGlu
Z1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBXZWJWaWV3
IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBpdCB0byBz
b21ldGhpbmcuCkBAIC01MDIzLDEwICs1MDIzLDcgQEAgLSAodm9pZClzZXRFZGl0YWJsZTooQk9P
TClmbGFnCiAKIC0gKEJPT0wpaXNFZGl0YWJsZQogewotICAgIEZyYW1lKiBtYWluRnJhbWUgPSBb
c2VsZiBfbWFpbkNvcmVGcmFtZV07Ci0gICAgaWYgKG1haW5GcmFtZSkKLSAgICAgICAgcmV0dXJu
IG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7Ci0gICAgcmV0dXJuIGZhbHNl
OworICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZSAmJiBfcHJpdmF0ZS0+cGFnZS0+aXNQYWdlRWRp
dGFibGUoKTsKIH0KIAogLSAodm9pZClzZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNsYXJh
dGlvbiAqKXN0eWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lvbiA4
MTU0OSkKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzE3NSwxMCArMzE3NSwxMCBAQCBib29sIFFXZWJQYWdlOjpmb2N1c05leHRQcmV2Q2hp
bGQoYm9vbCBuCiB2b2lkIFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0YWJs
ZSkKIHsKICAgICBpZiAoaXNDb250ZW50RWRpdGFibGUoKSAhPSBlZGl0YWJsZSkgeworICAgICAg
ICBkLT5wYWdlLT5zZXRQYWdlRWRpdGFibGUoZWRpdGFibGUpOwogICAgICAgICBkLT5wYWdlLT5z
ZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoIWVkaXRhYmxlKTsKICAgICAgICAgaWYgKGQt
Pm1haW5GcmFtZSkgewogICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gZC0+bWFp
bkZyYW1lLT5kLT5mcmFtZTsKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXREZXNp
Z25Nb2RlKGVkaXRhYmxlID8gV2ViQ29yZTo6RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9jdW1l
bnQ6Om9mZik7CiAgICAgICAgICAgICBpZiAoZWRpdGFibGUpIHsKICAgICAgICAgICAgICAgICBm
cmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAg
ICAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9ydCBjYWxscyB0aGlzIGlmIHRoZXJlIGlzIG5vIHNl
bGVjdGVkRE9NUmFuZ2UKQEAgLTMxOTIsNyArMzE5Miw3IEBAIHZvaWQgUVdlYlBhZ2U6OnNldENv
bnRlbnRFZGl0YWJsZShib29sIGUKIAogYm9vbCBRV2ViUGFnZTo6aXNDb250ZW50RWRpdGFibGUo
KSBjb25zdAogewotICAgIHJldHVybiBkLT5tYWluRnJhbWUgJiYgZC0+bWFpbkZyYW1lLT5kLT5m
cmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7CisgICAgcmV0dXJuIGQtPnBhZ2UtPmlz
UGFnZUVkaXRhYmxlKCk7CiB9CiAKIC8qIQpJbmRleDogU291cmNlL1dlYktpdC93eC9XZWJGcmFt
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAJKHJldmlz
aW9uIDgxNTQ5KQorKysgU291cmNlL1dlYktpdC93eC9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwMiwxNCArNDAyLDE0IEBAIHZvaWQgd3hXZWJGcmFtZTo6UmVzZXRUZXh0U2l6ZSgp
CiAKIHZvaWQgd3hXZWJGcmFtZTo6TWFrZUVkaXRhYmxlKGJvb2wgZW5hYmxlKQogewotICAgIGlm
IChlbmFibGUgIT0gSXNFZGl0YWJsZSgpICYmIG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFt
ZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVz
aWduTW9kZShlbmFibGUgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJDb3JlOjpEb2N1bWVu
dDo6b2ZmKTsKKyAgICBpZiAoZW5hYmxlICE9IElzRWRpdGFibGUoKSAmJiBtX2ltcGwtPmZyYW1l
ICYmIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgbV9pbXBsLT5mcmFtZS0+cGFnZSgp
LT5zZXRQYWdlRWRpdGFibGUoZW5hYmxlKTsKIH0KIAogYm9vbCB3eFdlYkZyYW1lOjpJc0VkaXRh
YmxlKCkgY29uc3QKIHsKLSAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5k
b2N1bWVudCgpKQotICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKS0+aW5E
ZXNpZ25Nb2RlKCk7CisgICAgaWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+cGFn
ZSgpKQorICAgICAgICByZXR1cm4gbV9pbXBsLT5mcmFtZS0+cGFnZSgpLT5zZXRQYWdlRWRpdGFi
bGUoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86318</attachid>
            <date>2011-03-21 07:30:27 -0700</date>
            <delta_ts>2011-03-21 11:41:06 -0700</delta_ts>
            <desc>fix patch</desc>
            <filename>56665_1.patch</filename>
            <type>text/plain</type>
            <size>16431</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDMtMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSRUdSRVNTSU9OIChyNzk5NTMpOiBDYW4ndCB0eXBlIGluIE1TIE91dGxv
b2sgMjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTY2NjUKKworICAgICAgICByNzk5NTMgcmVtb3ZlZCB0aGUgV2ViVmlldyBsZXZlbCBlZGl0YWJs
aXR5IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0dGVyIHdoZXRoZXIKKyAgICAgICAgdW5kZXJs
eWluZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdlZCBhbmQgZWRpdGFiaWxpdHkgZ2V0cyBsb3N0
LiBUaGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAgICBzZXQgdGhpcyBXZWJWaWV3IGVkaXRhYmxl
IHZhbHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRzIHRoZSBjYWxsYmFjayBmcm9tIFdlYkNvcmUg
dG8KKyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0aGUgbWFpbiBnb2FsIGluIHI3OTk1MyB0byBp
bXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9ubHkpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzQ29udGVudEVkaXRh
YmxlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFBhZ2VFZGl0YWJsZSk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlOjppc1BhZ2VFZGl0YWJsZSk6CisKIDIwMTEtMDMtMjEgIEphZWh1biBMaW0gIDxs
amFlaHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxk
bWFuLgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDgxNTc2KQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTc4OSw3ICs3ODksNiBA
QCBfX1pON1dlYkNvcmU3Y29va2llc0VQS05TXzhEb2N1bWVudEVSS05TCiBfX1pON1dlYkNvcmU3
bnNDb2xvckVSS05TXzVDb2xvckUKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VF
dgogX19aTjdXZWJDb3JlOERvY3VtZW50MTJ1cGRhdGVMYXlvdXRFdgotX19aTjdXZWJDb3JlOERv
Y3VtZW50MTNzZXREZXNpZ25Nb2RlRU5TMF8xM0luaGVyaXRlZEJvb2xFCiBfX1pON1dlYkNvcmU4
RG9jdW1lbnQxM3N2Z0V4dGVuc2lvbnNFdgogX19aTjdXZWJDb3JlOERvY3VtZW50MTRzZXRGb2N1
c2VkTm9kZUVOM1dURjEwUGFzc1JlZlB0cklOU180Tm9kZUVFRQogX19aTjdXZWJDb3JlOERvY3Vt
ZW50MTZpc1BhZ2VCb3hWaXNpYmxlRWkKQEAgLTEyNDAsNyArMTIzOSw2IEBAIF9fWk5LN1dlYkNv
cmU3SW50UmVjdGN2N19OU1JlY3RFdgogX19aTks3V2ViQ29yZTdJbnRTaXplY3Y3X05TU2l6ZUV2
CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTByZW5kZXJWaWV3RXYKIF9fWk5LN1dlYkNvcmU4RG9j
dW1lbnQxMWNvbXBsZXRlVVJMRVJLTjNXVEY2U3RyaW5nRQotX19aTks3V2ViQ29yZThEb2N1bWVu
dDEyaW5EZXNpZ25Nb2RlRXYKIF9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxM2F4T2JqZWN0Q2FjaGVF
dgogX19aTks3V2ViQ29yZThEb2N1bWVudDEzbm9kZXNGcm9tUmVjdEVpaWpqampiCiBfX1pOSzdX
ZWJDb3JlOERvY3VtZW50MTRnZXRFbGVtZW50QnlJZEVSS04zV1RGMTJBdG9taWNTdHJpbmdFCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJldmlzaW9uIDgxNTc2KQorKysgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjY0LDcgKzY2NCw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6
aXNSZWFkT24KICAgICAgICAgaWYgKGJvZHkgJiYgYm9keS0+aXNDb250ZW50RWRpdGFibGUoKSkK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gIWRvY3VtZW50LT5p
bkRlc2lnbk1vZGUoKTsKKyAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+aXNDb250ZW50RWRpdGFi
bGUoKTsKICAgICB9CiAKICAgICBpZiAobV9yZW5kZXJlci0+aXNCb3hNb2RlbE9iamVjdCgpKSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCShyZXZpc2lvbiA4MTU3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzEzLDcgKzcxMyw3IEBAIHZvaWQgTm9k
ZTo6ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKFBhc3MKIAogYm9vbCBOb2RlOjppc0NvbnRlbnRF
ZGl0YWJsZShFZGl0YWJsZUxldmVsIGVkaXRhYmxlTGV2ZWwpIGNvbnN0CiB7Ci0gICAgaWYgKGRv
Y3VtZW50KCktPmluRGVzaWduTW9kZSgpKQorICAgIGlmIChkb2N1bWVudCgpLT5pbkRlc2lnbk1v
ZGUoKSB8fCAoZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBkb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdl
KCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpLT5pc1BhZ2VFZGl0YWJsZSgpKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAKICAgICAvLyBJZGVhbGx5IHdlJ2QgY2FsbCBBU1NFUlQoIW5l
ZWRzU3R5bGVSZWNhbGMoKSkgaGVyZSwgYnV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvU2VsZWN0aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxNTc2KQorKysgU291cmNl
L1dlYkNvcmUvZWRpdGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTgyNCw3ICsxODI0LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rp
b25GcgogCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICBib29sIGNhcmV0QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNl
dHRpbmdzKCktPmNhcmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKCFpc05vbmUoKSB8fCAh
KGRvY3VtZW50LT5pbkRlc2lnbk1vZGUoKSB8fCBjYXJldEJyb3dzaW5nKSkKKyAgICBpZiAoIWlz
Tm9uZSgpIHx8ICEoZG9jdW1lbnQtPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2lu
ZykpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1l
bnRFbGVtZW50KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAko
cmV2aXNpb24gODE1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0Nv
bnRyb2xsZXI6Om9wZXJhdGlvbkYKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEpOwogICAgIERvY3Vt
ZW50KiBkb2MgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEt
PmNsaWVudFBvc2l0aW9uKCkpOwotICAgIGlmIChkb2MgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8
IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8IGRvYy0+aW5EZXNpZ25Nb2RlKCkpKQorICAgIGlm
IChkb2MgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8
IChkb2MtPmlzQ29udGVudEVkaXRhYmxlKCkpKSkKICAgICAgICAgcmV0dXJuIERyYWdPcGVyYXRp
b25Ob25lOwogICAgIHJldHVybiBkcmFnT3BlcmF0aW9uKGRyYWdEYXRhKTsKIH0KSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmNwcAkocmV2aXNpb24gODE1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDcgQEAgUGFnZTo6UGFnZShjb25z
dCBQYWdlQ2xpZW50cyYgcGFnZUNsaWVudAogICAgICwgbV9jYW5TdGFydE1lZGlhKHRydWUpCiAg
ICAgLCBtX3ZpZXdNb2RlKFZpZXdNb2RlV2luZG93ZWQpCiAgICAgLCBtX21pbmltdW1UaW1lcklu
dGVydmFsKFNldHRpbmdzOjpkZWZhdWx0TWluRE9NVGltZXJJbnRlcnZhbCgpKQorICAgICwgbV9p
c1BhZ2VFZGl0YWJsZShmYWxzZSkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFs
bFBhZ2VzID0gbmV3IEhhc2hTZXQ8UGFnZSo+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9u
IDgxNTc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI5MSw2ICsyOTEsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyByZWN1cnNp
dmUgZnJhbWVzZXQgcGFnZXMgY2FuIHF1aWNrbHkgYnJpbmcgdGhlIHByb2dyYW0gdG8gaXRzIGtu
ZWVzCiAgICAgICAgIC8vIHdpdGggZXhwb25lbnRpYWwgZ3Jvd3RoIGluIHRoZSBudW1iZXIgb2Yg
ZnJhbWVzLgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IG1heE51bWJlck9mRnJhbWVzID0gMTAw
MDsKKworICAgICAgICB2b2lkIHNldFBhZ2VFZGl0YWJsZShib29sIGlzUGFnZUVkaXRhYmxlKSB7
IG1faXNQYWdlRWRpdGFibGUgPSBpc1BhZ2VFZGl0YWJsZTsgfQorICAgICAgICBib29sIGlzUGFn
ZUVkaXRhYmxlKCkgeyByZXR1cm4gbV9pc1BhZ2VFZGl0YWJsZTsgfQorCiAgICAgcHJpdmF0ZToK
ICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtMzk1LDYgKzM5OSw4IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVySW50ZXJ2YWw7CiAKICAg
ICAgICAgT3duUHRyPFNjcm9sbGFibGVBcmVhU2V0PiBtX3Njcm9sbGFibGVBcmVhU2V0OworCisg
ICAgICAgIGJvb2wgbV9pc1BhZ2VFZGl0YWJsZTsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTU3NykKKysrIFNvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEx
LTAzLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjc5OTUzKTogQ2FuJ3Qg
dHlwZSBpbiBNUyBPdXRsb29rIDIwMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTU2NjY1CisKKyAgICAgICAgcjc5OTUzIHJlbW92ZWQgdGhlIFdlYlZp
ZXcgbGV2ZWwgZWRpdGFibGl0eSB3aGljaCBpcyBwZXJzaXN0ZW50IG5vIG1hdHRlciB3aGV0aGVy
CisgICAgICAgIHVuZGVybHlpbmcgZG9jdW1lbnQgaXRzZWxmIGlzIGNoYW5nZWQgYW5kIGVkaXRh
YmlsaXR5IGdldHMgbG9zdC4gVGhlIHJlc29sdXRpb24gaXMgdG8KKyAgICAgICAgc2V0IHRoaXMg
V2ViVmlldyBlZGl0YWJsZSB2YWx1ZSB0byBXZWJDb3JlLiBUaGlzIGF2b2lkcyB0aGUgY2FsbGJh
Y2sgZnJvbSBXZWJDb3JlIHRvCisgICAgICAgIFdlYktpdCB3aGljaCB3YXMgdGhlIG1haW4gZ29h
bCBpbiByNzk5NTMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfZWRpdGFibGUp
OgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9lZGl0YWJsZSk6CisKIDIwMTEtMDMtMTgg
IERhdmlkIEtlaWpzZXIgIDxrZWlqc2VyQGdtYWlsLmNvbT4gYW5kIFhhbiBMb3BleiA8eGxvcGV6
QGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJvYmluc29uLgpJbmRl
eDogU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAkocmV2aXNpb24g
ODE1NzYpCisrKyBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQzNDUsOCArNDM0NSw3IEBAIGdib29sZWFuIHdlYmtpdF93ZWJfdmll
d19nZXRfZWRpdGFibGUoV2UKIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNf
V0VCX1ZJRVcod2ViVmlldyksIEZBTFNFKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpOwotICAgIHJldHVybiBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KS0+aW5EZXNpZ25Nb2RlKCk7CisgICAgcmV0dXJuIGNvcmUod2ViVmlldyktPmlzUGFnZUVkaXRh
YmxlKCk7CiB9CiAKIC8qKgpAQCAtNDM3MSwxNSArNDM3MCwxNCBAQCB2b2lkIHdlYmtpdF93ZWJf
dmlld19zZXRfZWRpdGFibGUoV2ViS2l0CiB7CiAgICAgZ19yZXR1cm5faWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldykpOwogCi0gICAgRnJhbWUqIGZyYW1lID0gY29yZSh3ZWJWaWV3
KS0+bWFpbkZyYW1lKCk7Ci0gICAgZ19yZXR1cm5faWZfZmFpbChmcmFtZSk7Ci0KLSAgICAvLyBU
T0RPOiBXaGF0IGhhcHBlbnMgd2hlbiB0aGUgZnJhbWUgaXMgcmVwbGFjZWQ/CiAgICAgZmxhZyA9
IGZsYWcgIT0gRkFMU0U7CiAgICAgaWYgKGZsYWcgPT0gd2Via2l0X3dlYl92aWV3X2dldF9lZGl0
YWJsZSh3ZWJWaWV3KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCkt
PnNldERlc2lnbk1vZGUoZmxhZyA/IFdlYkNvcmU6OkRvY3VtZW50OjpvbiA6IFdlYkNvcmU6OkRv
Y3VtZW50OjpvZmYpOworICAgIGNvcmUod2ViVmlldyktPnNldFBhZ2VFZGl0YWJsZShmbGFnKTsK
KworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwogCiAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgZnJhbWUt
PmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDgxNTc3KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjEgIENoYW5nIFNodSAg
PGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSRUdSRVNTSU9OIChyNzk5NTMpOiBDYW4ndCB0eXBlIGluIE1TIE91dGxvb2sg
MjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2
NjUKKworICAgICAgICByNzk5NTMgcmVtb3ZlZCB0aGUgV2ViVmlldyBsZXZlbCBlZGl0YWJsaXR5
IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0dGVyIHdoZXRoZXIKKyAgICAgICAgdW5kZXJseWlu
ZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdlZCBhbmQgZWRpdGFiaWxpdHkgZ2V0cyBsb3N0LiBU
aGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAgICBzZXQgdGhpcyBXZWJWaWV3IGVkaXRhYmxlIHZh
bHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRzIHRoZSBjYWxsYmFjayBmcm9tIFdlYkNvcmUgdG8K
KyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0aGUgbWFpbiBnb2FsIGluIHI3OTk1MyB0byBpbXBy
b3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAg
ICAoLVtXZWJWaWV3IHNldEVkaXRhYmxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzRWRpdGFi
bGVdKToKKwogMjAxMS0wMy0xOSAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MTU3NikKKysrIFNvdXJjZS9XZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAwNiwxMSArNTAw
NiwxMSBAQCAtIChOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5CiAtICh2b2lk
KXNldEVkaXRhYmxlOihCT09MKWZsYWcKIHsKICAgICBpZiAoW3NlbGYgaXNFZGl0YWJsZV0gIT0g
ZmxhZykgeworICAgICAgICBfcHJpdmF0ZS0+cGFnZS0+c2V0UGFnZUVkaXRhYmxlKGZsYWcpOwog
ICAgICAgICBpZiAoIV9wcml2YXRlLT50YWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHNDaGFuZ2Vk
ICYmIF9wcml2YXRlLT5wYWdlKQogICAgICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldFRhYktl
eUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZmxhZyk7CiAgICAgICAgIEZyYW1lKiBtYWluRnJhbWUg
PSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgICAgIGlmIChtYWluRnJhbWUpIHsKLSAgICAg
ICAgICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShmbGFnID8gV2ViQ29y
ZTo6RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9jdW1lbnQ6Om9mZik7CiAgICAgICAgICAgICBp
ZiAoZmxhZykgewogICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRp
dGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBXZWJW
aWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBpdCB0
byBzb21ldGhpbmcuCkBAIC01MDIzLDEwICs1MDIzLDcgQEAgLSAodm9pZClzZXRFZGl0YWJsZToo
Qk9PTClmbGFnCiAKIC0gKEJPT0wpaXNFZGl0YWJsZQogewotICAgIEZyYW1lKiBtYWluRnJhbWUg
PSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07Ci0gICAgaWYgKG1haW5GcmFtZSkKLSAgICAgICAgcmV0
dXJuIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZSAmJiBfcHJpdmF0ZS0+cGFnZS0+aXNQYWdl
RWRpdGFibGUoKTsKIH0KIAogLSAodm9pZClzZXRUeXBpbmdTdHlsZTooRE9NQ1NTU3R5bGVEZWNs
YXJhdGlvbiAqKXN0eWxlCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gODE1NzcpCisrKyBT
b3VyY2UvV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDExLTAzLTIxICBDaGFuZyBTaHUgIDxjc2h1QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUkVHUkVTU0lPTiAocjc5OTUzKTog
Q2FuJ3QgdHlwZSBpbiBNUyBPdXRsb29rIDIwMTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTU2NjY1CisKKyAgICAgICAgcjc5OTUzIHJlbW92ZWQgdGhl
IFdlYlZpZXcgbGV2ZWwgZWRpdGFibGl0eSB3aGljaCBpcyBwZXJzaXN0ZW50IG5vIG1hdHRlciB3
aGV0aGVyCisgICAgICAgIHVuZGVybHlpbmcgZG9jdW1lbnQgaXRzZWxmIGlzIGNoYW5nZWQgYW5k
IGVkaXRhYmlsaXR5IGdldHMgbG9zdC4gVGhlIHJlc29sdXRpb24gaXMgdG8KKyAgICAgICAgc2V0
IHRoaXMgV2ViVmlldyBlZGl0YWJsZSB2YWx1ZSB0byBXZWJDb3JlLiBUaGlzIGF2b2lkcyB0aGUg
Y2FsbGJhY2sgZnJvbSBXZWJDb3JlIHRvCisgICAgICAgIFdlYktpdCB3aGljaCB3YXMgdGhlIG1h
aW4gZ29hbCBpbiByNzk5NTMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKworICAgICAgICAqIEFw
aS9xd2VicGFnZS5jcHA6CisgICAgICAgIChRV2ViUGFnZTo6c2V0Q29udGVudEVkaXRhYmxlKToK
KyAgICAgICAgKFFXZWJQYWdlOjppc0NvbnRlbnRFZGl0YWJsZSk6CisKIDIwMTEtMDMtMTkgIEFu
ZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJl
bmphbWluIFBvdWxhaW4uCkluZGV4OiBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCShyZXZpc2lv
biA4MTU3NikKKysrIFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzE3MiwxMCArMzE3MiwxMCBAQCBib29sIFFXZWJQYWdlOjpmb2N1c05leHRQcmV2
Q2hpbGQoYm9vbCBuCiB2b2lkIFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUoYm9vbCBlZGl0
YWJsZSkKIHsKICAgICBpZiAoaXNDb250ZW50RWRpdGFibGUoKSAhPSBlZGl0YWJsZSkgeworICAg
ICAgICBkLT5wYWdlLT5zZXRQYWdlRWRpdGFibGUoZWRpdGFibGUpOwogICAgICAgICBkLT5wYWdl
LT5zZXRUYWJLZXlDeWNsZXNUaHJvdWdoRWxlbWVudHMoIWVkaXRhYmxlKTsKICAgICAgICAgaWYg
KGQtPm1haW5GcmFtZSkgewogICAgICAgICAgICAgV2ViQ29yZTo6RnJhbWUqIGZyYW1lID0gZC0+
bWFpbkZyYW1lLT5kLT5mcmFtZTsKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRE
ZXNpZ25Nb2RlKGVkaXRhYmxlID8gV2ViQ29yZTo6RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9j
dW1lbnQ6Om9mZik7CiAgICAgICAgICAgICBpZiAoZWRpdGFibGUpIHsKICAgICAgICAgICAgICAg
ICBmcmFtZS0+ZWRpdG9yKCktPmFwcGx5RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtYWMgcG9ydCBjYWxscyB0aGlzIGlmIHRoZXJlIGlzIG5v
IHNlbGVjdGVkRE9NUmFuZ2UKQEAgLTMxODksNyArMzE4OSw3IEBAIHZvaWQgUVdlYlBhZ2U6OnNl
dENvbnRlbnRFZGl0YWJsZShib29sIGUKIAogYm9vbCBRV2ViUGFnZTo6aXNDb250ZW50RWRpdGFi
bGUoKSBjb25zdAogewotICAgIHJldHVybiBkLT5tYWluRnJhbWUgJiYgZC0+bWFpbkZyYW1lLT5k
LT5mcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7CisgICAgcmV0dXJuIGQtPnBhZ2Ut
PmlzUGFnZUVkaXRhYmxlKCk7CiB9CiAKIC8qIQpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDgxNTc3KQorKysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxOSBAQAorMjAxMS0wMy0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJ
T04gKHI3OTk1Myk6IENhbid0IHR5cGUgaW4gTVMgT3V0bG9vayAyMDExCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjY2NQorCisgICAgICAgIHI3OTk1
MyByZW1vdmVkIHRoZSBXZWJWaWV3IGxldmVsIGVkaXRhYmxpdHkgd2hpY2ggaXMgcGVyc2lzdGVu
dCBubyBtYXR0ZXIgd2hldGhlcgorICAgICAgICB1bmRlcmx5aW5nIGRvY3VtZW50IGl0c2VsZiBp
cyBjaGFuZ2VkIGFuZCBlZGl0YWJpbGl0eSBnZXRzIGxvc3QuIFRoZSByZXNvbHV0aW9uIGlzIHRv
CisgICAgICAgIHNldCB0aGlzIFdlYlZpZXcgZWRpdGFibGUgdmFsdWUgdG8gV2ViQ29yZS4gVGhp
cyBhdm9pZHMgdGhlIGNhbGxiYWNrIGZyb20gV2ViQ29yZSB0bworICAgICAgICBXZWJLaXQgd2hp
Y2ggd2FzIHRoZSBtYWluIGdvYWwgaW4gcjc5OTUzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCisK
KyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpNYWtlRWRpdGFi
bGUpOgorICAgICAgICAod3hXZWJGcmFtZTo6SXNFZGl0YWJsZSk6CisKIDIwMTEtMDMtMTUgIEtl
dmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODE1
NzYpCisrKyBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NDAyLDE0ICs0MDIsMTQgQEAgdm9pZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkKIAogdm9p
ZCB3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgaWYgKGVuYWJs
ZSAhPSBJc0VkaXRhYmxlKCkgJiYgbV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5kb2N1
bWVudCgpKQotICAgICAgICBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpLT5zZXREZXNpZ25Nb2Rl
KGVuYWJsZSA/IFdlYkNvcmU6OkRvY3VtZW50OjpvbiA6IFdlYkNvcmU6OkRvY3VtZW50OjpvZmYp
OworICAgIGlmIChlbmFibGUgIT0gSXNFZGl0YWJsZSgpICYmIG1faW1wbC0+ZnJhbWUgJiYgbV9p
bXBsLT5mcmFtZS0+cGFnZSgpKQorICAgICAgICBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPnNldFBh
Z2VFZGl0YWJsZShlbmFibGUpOwogfQogCiBib29sIHd4V2ViRnJhbWU6OklzRWRpdGFibGUoKSBj
b25zdAogewotICAgIGlmIChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1v
ZGUoKTsKKyAgICBpZiAobV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5wYWdlKCkpCisg
ICAgICAgIHJldHVybiBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPnNldFBhZ2VFZGl0YWJsZSgpOwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODE1NzcpCisrKyBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0w
My0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI3OTk1Myk6IENhbid0IHR5
cGUgaW4gTVMgT3V0bG9vayAyMDExCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjY2NQorCisgICAgICAgIFJlc3RvcmUgdGhlIGV4cGVjdGVkIHJlc3Vs
dCBiZWZvcmUgcjc5OTUzLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0
aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQtZXhwZWN0ZWQudHh0OgorCiAyMDExLTAzLTIxICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
c2VsZWN0aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3NlbGVjdGlvbi9kZXNpZ25tb2RlLW5v
LWNhcmV0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODE1NzYpCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZGVzaWdubW9kZS1uby1jYXJldC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTksMTEgKzksOSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDU0
CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc4NHg1NAogICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1OTogIlRoaXMgdGVzdHMgdG8gc2VlIHRoYXQg
YSBjYXJldCBpcyBwbGFjZWQgaW5zaWRlIGFuIGVkaXRhYmxlIGRvY3VtZW50IHRoYXQgaXMgZW50
aXJlbHkgZWRpdGFibGUgZXZlbiB3aGVuIG5vIGNhcmV0IGlzIHJlcXVlc3RlZCIKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoNzU5LDApIHdpZHRoIDQ6ICIgIgogICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDE4KSB3aWR0aCAxMTg6ICJwcm9ncmFtbWF0aWNhbGx5LiAiCiAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDExOCwxOCkgd2lkdGggMTg3OiAiV2UgZG8gdGhpcyBhcyBhIGNvbnZlbmllbmNlLiAi
CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDMwNSwxOCkgd2lkdGggNDc5OiAiUmlnaHQgbm93LCB3
ZSBvbmx5IGRvIHRoaXMgY29udmVuaWVuY2Ugd2hlbiBhIGRvY3VtZW50J3MgZnJhbWUgYmVjb21l
cyIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzg0LDE4KSB3aWR0aCAwOiAiICIKICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggMzc4OiAiZmlyc3QgcmVzcG9uZGVyIG9yIHdoZW4g
YSBkb2N1bWVudCdzIHdpbmRvdyBiZWNvbWVzIGtleS4iCiAgICAgICBSZW5kZXJCbG9jayB7UFJF
fSBhdCAoMCw2Nykgc2l6ZSA3ODR4MTUKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgODh4MTUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86343</attachid>
            <date>2011-03-21 11:41:06 -0700</date>
            <delta_ts>2011-03-21 12:47:35 -0700</delta_ts>
            <desc>fix patch 2: addressed the reviews</desc>
            <filename>56665_2.patch</filename>
            <type>text/plain</type>
            <size>16737</size>
            <attacher name="Chang Shu">cshu</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTc3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDMtMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSRUdSRVNTSU9OIChyNzk5NTMpOiBDYW4ndCB0eXBlIGluIE1TIE91dGxv
b2sgMjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTY2NjUKKworICAgICAgICByNzk5NTMgcmVtb3ZlZCB0aGUgV2ViVmlldyBsZXZlbCBlZGl0YWJs
aXR5IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0dGVyIHdoZXRoZXIKKyAgICAgICAgdW5kZXJs
eWluZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdlZCBhbmQgZWRpdGFiaWxpdHkgZ2V0cyBsb3N0
LiBUaGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAgICBzZXQgdGhpcyBXZWJWaWV3IGVkaXRhYmxl
IHZhbHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRzIHRoZSBjYWxsYmFjayBmcm9tIFdlYkNvcmUg
dG8KKyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0aGUgbWFpbiBnb2FsIGluIHI3OTk1MyB0byBp
bXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9ubHkpOgorICAgICAg
ICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzQ29udGVudEVkaXRh
YmxlKToKKyAgICAgICAgKiBlZGl0aW5nL1NlbGVjdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0aW9uQ29udHJvbGxlcjo6c2V0U2VsZWN0aW9uRnJvbU5vbmUpOgor
ICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NvbnRyb2xsZXI6Om9wZXJhdGlvbkZvckxvYWQpOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpQYWdlKToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldEVkaXRhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2U6OmlzRWRpdGFibGUpOgorCiAyMDExLTAzLTIxICBKYWVodW4gTGltICA8bGphZWh1bi5s
aW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA4MTU3NikKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC03ODksNyArNzg5LDYgQEAgX19aTjdX
ZWJDb3JlN2Nvb2tpZXNFUEtOU184RG9jdW1lbnRFUktOUwogX19aTjdXZWJDb3JlN25zQ29sb3JF
UktOU181Q29sb3JFCiBfX1pON1dlYkNvcmU4RG9jdW1lbnQxMWNyZWF0ZVJhbmdlRXYKIF9fWk43
V2ViQ29yZThEb2N1bWVudDEydXBkYXRlTGF5b3V0RXYKLV9fWk43V2ViQ29yZThEb2N1bWVudDEz
c2V0RGVzaWduTW9kZUVOUzBfMTNJbmhlcml0ZWRCb29sRQogX19aTjdXZWJDb3JlOERvY3VtZW50
MTNzdmdFeHRlbnNpb25zRXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDE0c2V0Rm9jdXNlZE5vZGVF
TjNXVEYxMFBhc3NSZWZQdHJJTlNfNE5vZGVFRUUKIF9fWk43V2ViQ29yZThEb2N1bWVudDE2aXNQ
YWdlQm94VmlzaWJsZUVpCkBAIC0xMjQwLDcgKzEyMzksNiBAQCBfX1pOSzdXZWJDb3JlN0ludFJl
Y3RjdjdfTlNSZWN0RXYKIF9fWk5LN1dlYkNvcmU3SW50U2l6ZWN2N19OU1NpemVFdgogX19aTks3
V2ViQ29yZThEb2N1bWVudDEwcmVuZGVyVmlld0V2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTFj
b21wbGV0ZVVSTEVSS04zV1RGNlN0cmluZ0UKLV9fWk5LN1dlYkNvcmU4RG9jdW1lbnQxMmluRGVz
aWduTW9kZUV2CiBfX1pOSzdXZWJDb3JlOERvY3VtZW50MTNheE9iamVjdENhY2hlRXYKIF9fWk5L
N1dlYkNvcmU4RG9jdW1lbnQxM25vZGVzRnJvbVJlY3RFaWlqampqYgogX19aTks3V2ViQ29yZThE
b2N1bWVudDE0Z2V0RWxlbWVudEJ5SWRFUktOM1dURjEyQXRvbWljU3RyaW5nRQpJbmRleDogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiA4MTU3NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY2NCw3ICs2NjQsNyBAQCBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmlzUmVhZE9u
CiAgICAgICAgIGlmIChib2R5ICYmIGJvZHktPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuICFkb2N1bWVudC0+aW5EZXNpZ25N
b2RlKCk7CisgICAgICAgIHJldHVybiAhZG9jdW1lbnQtPmlzQ29udGVudEVkaXRhYmxlKCk7CiAg
ICAgfQogCiAgICAgaWYgKG1fcmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSkgewpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob2RlLmNwcAkocmV2aXNpb24gODE1NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcxMyw3ICs3MTMsNyBAQCB2b2lkIE5vZGU6OmRlcHJl
Y2F0ZWRQYXJzZXJBZGRDaGlsZChQYXNzCiAKIGJvb2wgTm9kZTo6aXNDb250ZW50RWRpdGFibGUo
RWRpdGFibGVMZXZlbCBlZGl0YWJsZUxldmVsKSBjb25zdAogewotICAgIGlmIChkb2N1bWVudCgp
LT5pbkRlc2lnbk1vZGUoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkgfHwg
KGRvY3VtZW50KCktPmZyYW1lKCkgJiYgZG9jdW1lbnQoKS0+ZnJhbWUoKS0+cGFnZSgpICYmIGRv
Y3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKS0+aXNFZGl0YWJsZSgpKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKICAgICAvLyBJZGVhbGx5IHdlJ2QgY2FsbCBBU1NFUlQoIW5lZWRzU3R5bGVSZWNh
bGMoKSkgaGVyZSwgYnV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NlbGVjdGlvbkNv
bnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU2VsZWN0
aW9uQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDgxNTc2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TZWxlY3Rpb25Db250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyNCw3ICsx
ODI0LDcgQEAgdm9pZCBTZWxlY3Rpb25Db250cm9sbGVyOjpzZXRTZWxlY3Rpb25GcgogCiAgICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBib29sIGNhcmV0
QnJvd3NpbmcgPSBtX2ZyYW1lLT5zZXR0aW5ncygpICYmIG1fZnJhbWUtPnNldHRpbmdzKCktPmNh
cmV0QnJvd3NpbmdFbmFibGVkKCk7Ci0gICAgaWYgKCFpc05vbmUoKSB8fCAhKGRvY3VtZW50LT5p
bkRlc2lnbk1vZGUoKSB8fCBjYXJldEJyb3dzaW5nKSkKKyAgICBpZiAoIWlzTm9uZSgpIHx8ICEo
ZG9jdW1lbnQtPmlzQ29udGVudEVkaXRhYmxlKCkgfHwgY2FyZXRCcm93c2luZykpCiAgICAgICAg
IHJldHVybjsKIAogICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkocmV2aXNpb24gODE1
NzYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUzLDcgKzM1Myw3IEBAIERyYWdPcGVyYXRpb24gRHJhZ0NvbnRyb2xsZXI6Om9w
ZXJhdGlvbkYKIHsKICAgICBBU1NFUlQoZHJhZ0RhdGEpOwogICAgIERvY3VtZW50KiBkb2MgPSBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudEF0UG9pbnQoZHJhZ0RhdGEtPmNsaWVudFBvc2l0
aW9uKCkpOwotICAgIGlmIChkb2MgJiYgKG1fZGlkSW5pdGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVn
aW5Eb2N1bWVudCgpIHx8IGRvYy0+aW5EZXNpZ25Nb2RlKCkpKQorICAgIGlmIChkb2MgJiYgKG1f
ZGlkSW5pdGlhdGVEcmFnIHx8IGRvYy0+aXNQbHVnaW5Eb2N1bWVudCgpIHx8IGRvYy0+aXNDb250
ZW50RWRpdGFibGUoKSkpCiAgICAgICAgIHJldHVybiBEcmFnT3BlcmF0aW9uTm9uZTsKICAgICBy
ZXR1cm4gZHJhZ09wZXJhdGlvbihkcmFnRGF0YSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAJ
KHJldmlzaW9uIDgxNTc2KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIFBhZ2U6OlBhZ2UoY29uc3QgUGFnZUNsaWVudHMm
IHBhZ2VDbGllbnQKICAgICAsIG1fY2FuU3RhcnRNZWRpYSh0cnVlKQogICAgICwgbV92aWV3TW9k
ZShWaWV3TW9kZVdpbmRvd2VkKQogICAgICwgbV9taW5pbXVtVGltZXJJbnRlcnZhbChTZXR0aW5n
czo6ZGVmYXVsdE1pbkRPTVRpbWVySW50ZXJ2YWwoKSkKKyAgICAsIG1faXNFZGl0YWJsZShmYWxz
ZSkKIHsKICAgICBpZiAoIWFsbFBhZ2VzKSB7CiAgICAgICAgIGFsbFBhZ2VzID0gbmV3IEhhc2hT
ZXQ8UGFnZSo+OwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmgJKHJldmlzaW9uIDgxNTc2KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsMTAgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAvLyByZWN1cnNpdmUgZnJhbWVzZXQgcGFnZXMg
Y2FuIHF1aWNrbHkgYnJpbmcgdGhlIHByb2dyYW0gdG8gaXRzIGtuZWVzCiAgICAgICAgIC8vIHdp
dGggZXhwb25lbnRpYWwgZ3Jvd3RoIGluIHRoZSBudW1iZXIgb2YgZnJhbWVzLgogICAgICAgICBz
dGF0aWMgY29uc3QgaW50IG1heE51bWJlck9mRnJhbWVzID0gMTAwMDsKKworICAgICAgICB2b2lk
IHNldEVkaXRhYmxlKGJvb2wgaXNFZGl0YWJsZSkgeyBtX2lzRWRpdGFibGUgPSBpc0VkaXRhYmxl
OyB9CisgICAgICAgIGJvb2wgaXNFZGl0YWJsZSgpIHsgcmV0dXJuIG1faXNFZGl0YWJsZTsgfQor
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCBpbml0R3JvdXAoKTsKIApAQCAtMzk1LDYgKzM5
OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZG91YmxlIG1fbWluaW11bVRpbWVy
SW50ZXJ2YWw7CiAKICAgICAgICAgT3duUHRyPFNjcm9sbGFibGVBcmVhU2V0PiBtX3Njcm9sbGFi
bGVBcmVhU2V0OworCisgICAgICAgIGJvb2wgbV9pc0VkaXRhYmxlOwogICAgIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTc3KQor
KysgU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTkgQEAKKzIwMTEtMDMtMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChyNzk5
NTMpOiBDYW4ndCB0eXBlIGluIE1TIE91dGxvb2sgMjAxMQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2NjUKKworICAgICAgICByNzk5NTMgcmVtb3Zl
ZCB0aGUgV2ViVmlldyBsZXZlbCBlZGl0YWJsaXR5IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0
dGVyIHdoZXRoZXIKKyAgICAgICAgdW5kZXJseWluZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdl
ZCBhbmQgZWRpdGFiaWxpdHkgZ2V0cyBsb3N0LiBUaGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAg
ICBzZXQgdGhpcyBXZWJWaWV3IGVkaXRhYmxlIHZhbHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRz
IHRoZSBjYWxsYmFjayBmcm9tIFdlYkNvcmUgdG8KKyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0
aGUgbWFpbiBnb2FsIGluIHI3OTk1MyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dl
dF9lZGl0YWJsZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKToKKwog
MjAxMS0wMy0xOCAgRGF2aWQgS2VpanNlciAgPGtlaWpzZXJAZ21haWwuY29tPiBhbmQgWGFuIExv
cGV6IDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJ0aW4gUm9i
aW5zb24uCkluZGV4OiBTb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CShyZXZpc2lvbiA4MTU3NikKKysrIFNvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM0NSw4ICs0MzQ1LDcgQEAgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2dldF9lZGl0YWJsZShXZQogewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWls
KFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgRkFMU0UpOwogCi0gICAgRnJhbWUqIGZyYW1l
ID0gY29yZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCk7Ci0gICAgcmV0dXJuIGZyYW1lICYmIGZyYW1l
LT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKTsKKyAgICByZXR1cm4gY29yZSh3ZWJWaWV3KS0+
aXNFZGl0YWJsZSgpOwogfQogCiAvKioKQEAgLTQzNzEsMTUgKzQzNzAsMTQgQEAgdm9pZCB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2VkaXRhYmxlKFdlYktpdAogewogICAgIGdfcmV0dXJuX2lmX2ZhaWwo
V0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKIAotICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUo
d2ViVmlldyktPm1haW5GcmFtZSgpOwotICAgIGdfcmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwotCi0g
ICAgLy8gVE9ETzogV2hhdCBoYXBwZW5zIHdoZW4gdGhlIGZyYW1lIGlzIHJlcGxhY2VkPwogICAg
IGZsYWcgPSBmbGFnICE9IEZBTFNFOwogICAgIGlmIChmbGFnID09IHdlYmtpdF93ZWJfdmlld19n
ZXRfZWRpdGFibGUod2ViVmlldykpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5zZXREZXNpZ25Nb2RlKGZsYWcgPyBXZWJDb3JlOjpEb2N1bWVudDo6b24gOiBXZWJD
b3JlOjpEb2N1bWVudDo6b2ZmKTsKKyAgICBjb3JlKHdlYlZpZXcpLT5zZXRFZGl0YWJsZShmbGFn
KTsKKworICAgIEZyYW1lKiBmcmFtZSA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpOworICAg
IGdfcmV0dXJuX2lmX2ZhaWwoZnJhbWUpOwogCiAgICAgaWYgKGZsYWcpIHsKICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTc3KQorKysgU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDMtMjEgIENoYW5nIFNo
dSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSRUdSRVNTSU9OIChyNzk5NTMpOiBDYW4ndCB0eXBlIGluIE1TIE91dGxv
b2sgMjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NTY2NjUKKworICAgICAgICByNzk5NTMgcmVtb3ZlZCB0aGUgV2ViVmlldyBsZXZlbCBlZGl0YWJs
aXR5IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0dGVyIHdoZXRoZXIKKyAgICAgICAgdW5kZXJs
eWluZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdlZCBhbmQgZWRpdGFiaWxpdHkgZ2V0cyBsb3N0
LiBUaGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAgICBzZXQgdGhpcyBXZWJWaWV3IGVkaXRhYmxl
IHZhbHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRzIHRoZSBjYWxsYmFjayBmcm9tIFdlYkNvcmUg
dG8KKyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0aGUgbWFpbiBnb2FsIGluIHI3OTk1MyB0byBp
bXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAg
ICAgICAoLVtXZWJWaWV3IHNldEVkaXRhYmxlOl0pOgorICAgICAgICAoLVtXZWJWaWV3IGlzRWRp
dGFibGVdKToKKwogMjAxMS0wMy0xOSAgQW50b24gRCdBdXJpYSAgPGFkYXVyaWFAYXBwbGUuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA4MTU3NikKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTAwNSwxMiAr
NTAwNSwxMiBAQCAtIChOU1NlbGVjdGlvbkFmZmluaXR5KXNlbGVjdGlvbkFmZmluaXR5CiAKIC0g
KHZvaWQpc2V0RWRpdGFibGU6KEJPT0wpZmxhZwogewotICAgIGlmIChbc2VsZiBpc0VkaXRhYmxl
XSAhPSBmbGFnKSB7Ci0gICAgICAgIGlmICghX3ByaXZhdGUtPnRhYktleUN5Y2xlc1Rocm91Z2hF
bGVtZW50c0NoYW5nZWQgJiYgX3ByaXZhdGUtPnBhZ2UpCisgICAgaWYgKFtzZWxmIGlzRWRpdGFi
bGVdICE9IGZsYWcgJiYgX3ByaXZhdGUtPnBhZ2UpIHsKKyAgICAgICAgX3ByaXZhdGUtPnBhZ2Ut
PnNldEVkaXRhYmxlKGZsYWcpOworICAgICAgICBpZiAoIV9wcml2YXRlLT50YWJLZXlDeWNsZXNU
aHJvdWdoRWxlbWVudHNDaGFuZ2VkKQogICAgICAgICAgICAgX3ByaXZhdGUtPnBhZ2UtPnNldFRh
YktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyghZmxhZyk7CiAgICAgICAgIEZyYW1lKiBtYWluRnJh
bWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07CiAgICAgICAgIGlmIChtYWluRnJhbWUpIHsKLSAg
ICAgICAgICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWduTW9kZShmbGFnID8gV2Vi
Q29yZTo6RG9jdW1lbnQ6Om9uIDogV2ViQ29yZTo6RG9jdW1lbnQ6Om9mZik7CiAgICAgICAgICAg
ICBpZiAoZmxhZykgewogICAgICAgICAgICAgICAgIG1haW5GcmFtZS0+ZWRpdG9yKCktPmFwcGx5
RWRpdGluZ1N0eWxlVG9Cb2R5RWxlbWVudCgpOwogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBX
ZWJWaWV3IGlzIG1hZGUgZWRpdGFibGUgYW5kIHRoZSBzZWxlY3Rpb24gaXMgZW1wdHksIHNldCBp
dCB0byBzb21ldGhpbmcuCkBAIC01MDIzLDEwICs1MDIzLDcgQEAgLSAodm9pZClzZXRFZGl0YWJs
ZTooQk9PTClmbGFnCiAKIC0gKEJPT0wpaXNFZGl0YWJsZQogewotICAgIEZyYW1lKiBtYWluRnJh
bWUgPSBbc2VsZiBfbWFpbkNvcmVGcmFtZV07Ci0gICAgaWYgKG1haW5GcmFtZSkKLSAgICAgICAg
cmV0dXJuIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCk7Ci0gICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiBfcHJpdmF0ZS0+cGFnZSAmJiBfcHJpdmF0ZS0+cGFnZS0+aXNF
ZGl0YWJsZSgpOwogfQogCiAtICh2b2lkKXNldFR5cGluZ1N0eWxlOihET01DU1NTdHlsZURlY2xh
cmF0aW9uICopc3R5bGUKSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA4MTU3NykKKysrIFNv
dXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTEtMDMtMjEgIENoYW5nIFNodSAgPGNzaHVAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChyNzk5NTMpOiBD
YW4ndCB0eXBlIGluIE1TIE91dGxvb2sgMjAxMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY2NjUKKworICAgICAgICByNzk5NTMgcmVtb3ZlZCB0aGUg
V2ViVmlldyBsZXZlbCBlZGl0YWJsaXR5IHdoaWNoIGlzIHBlcnNpc3RlbnQgbm8gbWF0dGVyIHdo
ZXRoZXIKKyAgICAgICAgdW5kZXJseWluZyBkb2N1bWVudCBpdHNlbGYgaXMgY2hhbmdlZCBhbmQg
ZWRpdGFiaWxpdHkgZ2V0cyBsb3N0LiBUaGUgcmVzb2x1dGlvbiBpcyB0bworICAgICAgICBzZXQg
dGhpcyBXZWJWaWV3IGVkaXRhYmxlIHZhbHVlIHRvIFdlYkNvcmUuIFRoaXMgYXZvaWRzIHRoZSBj
YWxsYmFjayBmcm9tIFdlYkNvcmUgdG8KKyAgICAgICAgV2ViS2l0IHdoaWNoIHdhcyB0aGUgbWFp
biBnb2FsIGluIHI3OTk1MyB0byBpbXByb3ZlIHBlcmZvcm1hbmNlLgorCisgICAgICAgICogQXBp
L3F3ZWJwYWdlLmNwcDoKKyAgICAgICAgKFFXZWJQYWdlOjpzZXRDb250ZW50RWRpdGFibGUpOgor
ICAgICAgICAoUVdlYlBhZ2U6OmlzQ29udGVudEVkaXRhYmxlKToKKwogMjAxMS0wMy0xOSAgQW5k
cmVhcyBLbGluZyAgPGtsaW5nQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQmVu
amFtaW4gUG91bGFpbi4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHJldmlzaW9u
IDgxNTc2KQorKysgU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYnBhZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMTcyLDEwICszMTcyLDEwIEBAIGJvb2wgUVdlYlBhZ2U6OmZvY3VzTmV4dFByZXZD
aGlsZChib29sIG4KIHZvaWQgUVdlYlBhZ2U6OnNldENvbnRlbnRFZGl0YWJsZShib29sIGVkaXRh
YmxlKQogewogICAgIGlmIChpc0NvbnRlbnRFZGl0YWJsZSgpICE9IGVkaXRhYmxlKSB7CisgICAg
ICAgIGQtPnBhZ2UtPnNldEVkaXRhYmxlKGVkaXRhYmxlKTsKICAgICAgICAgZC0+cGFnZS0+c2V0
VGFiS2V5Q3ljbGVzVGhyb3VnaEVsZW1lbnRzKCFlZGl0YWJsZSk7CiAgICAgICAgIGlmIChkLT5t
YWluRnJhbWUpIHsKICAgICAgICAgICAgIFdlYkNvcmU6OkZyYW1lKiBmcmFtZSA9IGQtPm1haW5G
cmFtZS0+ZC0+ZnJhbWU7Ci0gICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVzaWdu
TW9kZShlZGl0YWJsZSA/IFdlYkNvcmU6OkRvY3VtZW50OjpvbiA6IFdlYkNvcmU6OkRvY3VtZW50
OjpvZmYpOwogICAgICAgICAgICAgaWYgKGVkaXRhYmxlKSB7CiAgICAgICAgICAgICAgICAgZnJh
bWUtPmVkaXRvcigpLT5hcHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKTsKICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogbWFjIHBvcnQgY2FsbHMgdGhpcyBpZiB0aGVyZSBpcyBubyBzZWxl
Y3RlZERPTVJhbmdlCkBAIC0zMTg5LDcgKzMxODksNyBAQCB2b2lkIFFXZWJQYWdlOjpzZXRDb250
ZW50RWRpdGFibGUoYm9vbCBlCiAKIGJvb2wgUVdlYlBhZ2U6OmlzQ29udGVudEVkaXRhYmxlKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gZC0+bWFpbkZyYW1lICYmIGQtPm1haW5GcmFtZS0+ZC0+ZnJh
bWUtPmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpOworICAgIHJldHVybiBkLT5wYWdlLT5pc0Vk
aXRhYmxlKCk7CiB9CiAKIC8qIQpJbmRleDogU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHJldmlzaW9uIDgxNTc3KQor
KysgU291cmNlL1dlYktpdC93eC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OSBAQAorMjAxMS0wMy0yMSAgQ2hhbmcgU2h1ICA8Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI3OTk1
Myk6IENhbid0IHR5cGUgaW4gTVMgT3V0bG9vayAyMDExCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjY2NQorCisgICAgICAgIHI3OTk1MyByZW1vdmVk
IHRoZSBXZWJWaWV3IGxldmVsIGVkaXRhYmxpdHkgd2hpY2ggaXMgcGVyc2lzdGVudCBubyBtYXR0
ZXIgd2hldGhlcgorICAgICAgICB1bmRlcmx5aW5nIGRvY3VtZW50IGl0c2VsZiBpcyBjaGFuZ2Vk
IGFuZCBlZGl0YWJpbGl0eSBnZXRzIGxvc3QuIFRoZSByZXNvbHV0aW9uIGlzIHRvCisgICAgICAg
IHNldCB0aGlzIFdlYlZpZXcgZWRpdGFibGUgdmFsdWUgdG8gV2ViQ29yZS4gVGhpcyBhdm9pZHMg
dGhlIGNhbGxiYWNrIGZyb20gV2ViQ29yZSB0bworICAgICAgICBXZWJLaXQgd2hpY2ggd2FzIHRo
ZSBtYWluIGdvYWwgaW4gcjc5OTUzIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuCisKKyAgICAgICAg
KiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpNYWtlRWRpdGFibGUpOgorICAg
ICAgICAod3hXZWJGcmFtZTo6SXNFZGl0YWJsZSk6CisKIDIwMTEtMDMtMTUgIEtldmluIE9sbGl2
aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAkocmV2aXNpb24gODE1NzYpCisrKyBT
b3VyY2UvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAyLDE0ICs0
MDIsMTQgQEAgdm9pZCB3eFdlYkZyYW1lOjpSZXNldFRleHRTaXplKCkKIAogdm9pZCB3eFdlYkZy
YW1lOjpNYWtlRWRpdGFibGUoYm9vbCBlbmFibGUpCiB7Ci0gICAgaWYgKGVuYWJsZSAhPSBJc0Vk
aXRhYmxlKCkgJiYgbV9pbXBsLT5mcmFtZSAmJiBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICBtX2ltcGwtPmZyYW1lLT5kb2N1bWVudCgpLT5zZXREZXNpZ25Nb2RlKGVuYWJsZSA/
IFdlYkNvcmU6OkRvY3VtZW50OjpvbiA6IFdlYkNvcmU6OkRvY3VtZW50OjpvZmYpOworICAgIGlm
IChlbmFibGUgIT0gSXNFZGl0YWJsZSgpICYmIG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFt
ZS0+cGFnZSgpKQorICAgICAgICBtX2ltcGwtPmZyYW1lLT5wYWdlKCktPnNldEVkaXRhYmxlKGVu
YWJsZSk7CiB9CiAKIGJvb2wgd3hXZWJGcmFtZTo6SXNFZGl0YWJsZSgpIGNvbnN0CiB7Ci0gICAg
aWYgKG1faW1wbC0+ZnJhbWUgJiYgbV9pbXBsLT5mcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIG1faW1wbC0+ZnJhbWUtPmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgpOworICAgIGlm
IChtX2ltcGwtPmZyYW1lICYmIG1faW1wbC0+ZnJhbWUtPnBhZ2UoKSkKKyAgICAgICAgcmV0dXJu
IG1faW1wbC0+ZnJhbWUtPnBhZ2UoKS0+aXNFZGl0YWJsZSgpOwogICAgIHJldHVybiBmYWxzZTsK
IH0KIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODE1NzcpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMS0wMy0yMSAgQ2hhbmcgU2h1ICA8
Y3NodUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFJFR1JFU1NJT04gKHI3OTk1Myk6IENhbid0IHR5cGUgaW4gTVMgT3V0bG9vayAy
MDExCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NjY2
NQorCisgICAgICAgIFJlc3RvcmUgdGhlIGV4cGVjdGVkIHJlc3VsdCBiZWZvcmUgcjc5OTUzLiBy
Nzk5NTMgY2hhbmdlZCBiZWhhdmlvciBzbGlnaHRseSBpbiBmdW5jdGlvbgorICAgICAgICBmaW5p
c2hlZExvYWRpbmdXaXRoRGF0YVNvdXJjZSBpbiBmaWxlIG1hYy9XZWJWaWV3L1dlYkhUTUxSZXBy
ZXNlbnRhdGlvbi5tbSwgd2hlcmUKKyAgICAgICAgY29yZSh3ZWJGcmFtZSktPmVkaXRvcigpLT5h
cHBseUVkaXRpbmdTdHlsZVRvQm9keUVsZW1lbnQoKSB3YXMgY2FsbGVkIGJ1dCBub3QgYmVmb3Jl
IHI3OTk1MworICAgICAgICBvciBhZnRlciB0aGlzIHBhdGNoLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQtZXhwZWN0ZWQudHh0
OgorCiAyMDExLTAzLTIxICBKdWxpZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvc2VsZWN0aW9uL2Rlc2lnbm1vZGUtbm8tY2FyZXQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Nl
bGVjdGlvbi9kZXNpZ25tb2RlLW5vLWNhcmV0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODE1NzYp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9zZWxlY3Rpb24vZGVzaWdubW9k
ZS1uby1jYXJldC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksMTEgKzksOSBAQCBs
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICgwLDApIHNpemUgNzg0eDU0CiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDc4NHg1NAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc1OTogIlRo
aXMgdGVzdHMgdG8gc2VlIHRoYXQgYSBjYXJldCBpcyBwbGFjZWQgaW5zaWRlIGFuIGVkaXRhYmxl
IGRvY3VtZW50IHRoYXQgaXMgZW50aXJlbHkgZWRpdGFibGUgZXZlbiB3aGVuIG5vIGNhcmV0IGlz
IHJlcXVlc3RlZCIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzU5LDApIHdpZHRoIDQ6ICIgIgog
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAxMTg6ICJwcm9ncmFtbWF0aWNhbGx5
LiAiCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDExOCwxOCkgd2lkdGggMTg3OiAiV2UgZG8gdGhp
cyBhcyBhIGNvbnZlbmllbmNlLiAiCiAgICAgICAgICAgdGV4dCBydW4gYXQgKDMwNSwxOCkgd2lk
dGggNDc5OiAiUmlnaHQgbm93LCB3ZSBvbmx5IGRvIHRoaXMgY29udmVuaWVuY2Ugd2hlbiBhIGRv
Y3VtZW50J3MgZnJhbWUgYmVjb21lcyIKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNzg0LDE4KSB3
aWR0aCAwOiAiICIKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwzNikgd2lkdGggMzc4OiAiZmly
c3QgcmVzcG9uZGVyIG9yIHdoZW4gYSBkb2N1bWVudCdzIHdpbmRvdyBiZWNvbWVzIGtleS4iCiAg
ICAgICBSZW5kZXJCbG9jayB7UFJFfSBhdCAoMCw2Nykgc2l6ZSA3ODR4MTUKICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODh4MTUK
</data>

          </attachment>
      

    </bug>

</bugzilla>