<?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>108595</bug_id>
          
          <creation_ts>2013-02-01 00:46:13 -0800</creation_ts>
          <short_desc>[Refactoring] Make m_selectorChecker in StyleResolver an on-stack object.</short_desc>
          <delta_ts>2013-02-12 09:19: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>CSS</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>
          
          <blocked>89879</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Sakamoto">tasak</reporter>
          <assigned_to name="Takashi Sakamoto">tasak</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webcomponents-bugzilla</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>822446</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-02-01 00:46:13 -0800</bug_when>
    <thetext>StyleResolver uses m_selectorChecker.mode() as a part of StyleResolver&apos;s state while resolving styles.
It would be better to move the state from SelectorChecker to StyleResolver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822478</commentid>
    <comment_count>1</comment_count>
      <attachid>185974</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-02-01 01:22:07 -0800</bug_when>
    <thetext>Created attachment 185974
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822481</commentid>
    <comment_count>2</comment_count>
      <attachid>185974</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-01 01:30:48 -0800</bug_when>
    <thetext>Comment on attachment 185974
Patch

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

This seems reasonable.  I&apos;m too tired to do a real review, but I can look again tomorrow if antti doesn&apos;t beat me to it. :)

&gt; Source/WebCore/css/SelectorChecker.cpp:72
&gt; +inline bool commonPseudoClassSelectorMatches(const Element* element, const CSSSelector* selector, SelectorChecker::VisitedMatchType visitedMatchType)

I&apos;m confused why these are moving to inlines?  Also, do you need to mark these static to avoid the compiler creating exportable symbols for them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822838</commentid>
    <comment_count>3</comment_count>
      <attachid>185974</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-01 09:05:22 -0800</bug_when>
    <thetext>Comment on attachment 185974
Patch

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

This is glorious. Antti, you like?

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:72
&gt;&gt; +inline bool commonPseudoClassSelectorMatches(const Element* element, const CSSSelector* selector, SelectorChecker::VisitedMatchType visitedMatchType)
&gt; 
&gt; I&apos;m confused why these are moving to inlines?  Also, do you need to mark these static to avoid the compiler creating exportable symbols for them?

There&apos;s some unnecessary moves here in this patch, and the diff is all getting confused.

&gt; Source/WebCore/css/SelectorChecker.cpp:-1060
&gt; -    return element-&gt;document()-&gt;frame() &amp;&amp; element-&gt;document()-&gt;frame()-&gt;selection()-&gt;isFocusedAndActive();

This should really be on Element or Document.

&gt; Source/WebCore/css/StyleResolver.cpp:1364
&gt; +    if (document()-&gt;inQuirksMode())

I am curious why we put the flags into m_selectorChecker originally? Is this like a performance optimization? Doesn&apos;t seem like it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827042</commentid>
    <comment_count>4</comment_count>
      <attachid>186988</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-02-06 21:10:41 -0800</bug_when>
    <thetext>Created attachment 186988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827043</commentid>
    <comment_count>5</comment_count>
      <attachid>185974</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-02-06 21:19:26 -0800</bug_when>
    <thetext>Comment on attachment 185974
Patch

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

Thank you for reviewing.

&gt;&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:72
&gt;&gt;&gt; +inline bool commonPseudoClassSelectorMatches(const Element* element, const CSSSelector* selector, SelectorChecker::VisitedMatchType visitedMatchType)
&gt;&gt; 
&gt;&gt; I&apos;m confused why these are moving to inlines?  Also, do you need to mark these static to avoid the compiler creating exportable symbols for them?
&gt; 
&gt; There&apos;s some unnecessary moves here in this patch, and the diff is all getting confused.

Yeah. The diff looks very dirty. I reverted &quot;inline&quot; changes and made some methods &quot;static&quot;, instead.

&gt;&gt; Source/WebCore/css/SelectorChecker.cpp:-1060
&gt;&gt; -    return element-&gt;document()-&gt;frame() &amp;&amp; element-&gt;document()-&gt;frame()-&gt;selection()-&gt;isFocusedAndActive();
&gt; 
&gt; This should really be on Element or Document.

I see. I can do this in this patch? Or is it better to do in another patch?

&gt;&gt; Source/WebCore/css/StyleResolver.cpp:1364
&gt;&gt; +    if (document()-&gt;inQuirksMode())
&gt; 
&gt; I am curious why we put the flags into m_selectorChecker originally? Is this like a performance optimization? Doesn&apos;t seem like it.

I heard that inQuirksMode was very slow method. So it was probably bad to use document()-&gt;inQuirksMode(). However I&apos;m not sure whether this is true or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827568</commentid>
    <comment_count>6</comment_count>
      <attachid>186988</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2013-02-07 08:47:23 -0800</bug_when>
    <thetext>Comment on attachment 186988
Patch

I am big fan of this patch. Antti, what do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827575</commentid>
    <comment_count>7</comment_count>
      <attachid>186988</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-07 08:52:14 -0800</bug_when>
    <thetext>Comment on attachment 186988
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830539</commentid>
    <comment_count>8</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-02-11 21:34:49 -0800</bug_when>
    <thetext>I would like to land this patch if no objection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830540</commentid>
    <comment_count>9</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2013-02-11 21:35:07 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; I would like to land this patch if no objection.

in a few days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830618</commentid>
    <comment_count>10</comment_count>
      <attachid>186988</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-12 00:02:26 -0800</bug_when>
    <thetext>Comment on attachment 186988
Patch

It&apos;s been 4 days (yes 2 of them were a weekend).  I think you&apos;re good to go.  We can always roll it out, or amend if someone feels strongly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830630</commentid>
    <comment_count>11</comment_count>
      <attachid>186988</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 00:09:33 -0800</bug_when>
    <thetext>Comment on attachment 186988
Patch

Clearing flags on attachment: 186988

Committed r142591: &lt;http://trac.webkit.org/changeset/142591&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830631</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-12 00:09:38 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>831005</commentid>
    <comment_count>13</comment_count>
      <attachid>186988</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2013-02-12 09:19:57 -0800</bug_when>
    <thetext>Comment on attachment 186988
Patch

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

Yeah, looked fine.

&gt; Source/WebCore/css/StyleResolver.cpp:2134
&gt; +    SelectorChecker selectorChecker(document());
&gt; +    selectorChecker.setMode(state.mode);

Mode could be a constructor parameter and setMode() removed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185974</attachid>
            <date>2013-02-01 01:22:07 -0800</date>
            <delta_ts>2013-02-06 21:19:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108595-20130201181849.patch</filename>
            <type>text/plain</type>
            <size>17310</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNTU0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzAyYmNjZGZiNjY2YjA3
YzI1MjE0MmIyNzc2ZWY5OTQ4Y2FlNGQ0My4uZjUyODE2MGU0ZDk5MmY2MDZhYTFiMWM3YmQxMTU5
MmFjZGU5ZjJmYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDEzLTAyLTAxICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbUmVmYWN0b3Jpbmdd
IE1ha2UgbV9zZWxlY3RvckNoZWNrZXIgaW4gU3R5bGVSZXNvbHZlciBhbiBvbi1zdGFjayBvYmpl
Y3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg1
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHls
ZVJlc29sdmVyIHVzZXMgU2VsZWN0b3JDaGVja2VyJ3MgbW9kZSB0byBjaGFuZ2UgaXRzIHJlc29s
dmluZyBtb2RlLgorICAgICAgICBIb3dldmVyIGl0IGlzIGEgc3RhdGUgb2YgU3R5bGVSZXNvbHZl
ci4gU3R5bGVSZXNvbHZlciBzaG91bGQgaGF2ZSB0aGUKKyAgICAgICAgbW9kZSBhbmQgbWFrZSBT
ZWxlY3RvckNoZWNrZXIgaW5zdGFuY2Ugb24gYSBzdGFjayB3aGlsZSByZXF1aXJlZC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1vblBzZXVkb0NsYXNzU2Vs
ZWN0b3JNYXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6ZmFz
dENoZWNrUmlnaHRtb3N0U2VsZWN0b3IpOgorICAgICAgICBDaGFuZ2VkIHRvIGFuIGlubGluZSBm
dW5jdGlvbi4gVGhlc2UgbWV0aG9kcyBkb2Vzbid0IHVzZSAidGhpcyIgYW5kCisgICAgICAgIG5l
ZWRlZCB0byBhY2Nlc3MgZnJvbSBzdGF0aWMgbWV0aG9kOiBmYXN0Q2hlY2suCisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6Om1hdGNoZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2spOgorICAgICAgICBDaGFuZ2VkIHRvIGEgc3RhdGljIG1l
dGhvZCwgYmVjYXVzZSBmYXN0Q2hlY2sgZG9lc24ndCB1c2UgInRoaXMiLgorICAgICAgICAqIGNz
cy9TZWxlY3RvckNoZWNrZXIuaDoKKyAgICAgICAgKFNlbGVjdG9yQ2hlY2tlcik6CisgICAgICAg
IChXZWJDb3JlOjppc0ZyYW1lRm9jdXNlZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKToKKyAgICAgICAgTWFkZSBub3QtU2Vs
ZWN0b3JDaGVja2VyJ3MgbWV0aG9kLCBqdXN0IGlubGluZSBmdW5jdGlvbnMuCisgICAgICAgICog
Y3NzL1N0eWxlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
U3R5bGVSZXNvbHZlcik6CisgICAgICAgIFJlbW92ZWQgbV9zZWxldG9yQ2hlY2tlciBhbmQgYWRk
ZWQgbV9tb2RlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1hdGNo
aW5nUnVsZXMpOgorICAgICAgICBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyBpcyBub3QgYSBtZXRo
b2Qgb2YgU2VsZWN0b3JDaGVja2VyLCBzbworICAgICAgICBqdXN0IHJlbW92ZWQgIm1fc2VsZWN0
b3JDaGVja2VyLiIuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzb3J0QW5kVHJh
bnNmZXJNYXRjaGVkUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29s
bGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2
ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxlU2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlUmVzb2x2ZXI6Om1hdGNoVUFSdWxlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZVJlc29sdmVyOjphZGp1c3RSZW5kZXJTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJl
c29sdmVyOjpwc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudCk6CisgICAgICAgIFVzZSBtX21vZGUg
aW5zdGVhZCBvZiBtX3NlbGVjdG9yQ2hlY2tlci5tb2RlKCkuCisgICAgICAgIEFsc28gdXNlIGRv
Y3VtZW50KCktPmluUXVpcmtzTW9kZSgpIGluc3RlYWQgb2YKKyAgICAgICAgbV9zZWxlY3RvQ2hl
Y2tlci5zdHJpY3RQYXJzaW5nKCkuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpy
dWxlTWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lv
blNlbGVjdG9yKToKKyAgICAgICAgQ3JlYXRlZCBhbiBvbi1zdGFjayBTZWxlY3RvckNoZWNrZXIg
b2JqZWN0IGFuZCB1c2VkIGl0IHRvIGNoZWNrCisgICAgICAgIHNlbGVjdG9ycy4KKyAgICAgICAg
KiBjc3MvU3R5bGVSZXNvbHZlci5oOgorICAgICAgICAoU3R5bGVSZXNvbHZlcik6CisgICAgICAg
IFJlbW92ZWQgbV9zZWxlY3RvckNoZWNrZXIgYW5kIGFkZGVkIG1fbW9kZS4KKwogMjAxMy0wMi0w
MSAgRGFuIEFsY2FudGFyYSAgPGRmYWxjYW50YXJhQGNocm9taXVtLm9yZz4KIAogICAgICAgICBU
b3VjaCBkaXNhbWJpZ3VhdGlvbiBibGFja2xpc3QgaXMgbm90IGJlaW5nIHF1ZXJpZWQgcHJvcGVy
bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKaW5kZXggZmFiNzA0OTM2NTQy
MzE2YzNlMGJhODc2ZTdhODhjNjBkZjc3ZGVjYi4uNmI5M2VlNjg0N2FkODk3MGVmNDAyODVkOGUw
MzA0N2E1NWMyMTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAKQEAg
LTY5LDE2ICs2OSwyMSBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tlcihEb2N1bWVu
dCogZG9jdW1lbnQpCiB7CiB9CiAKLWJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzKGNvbnN0
IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBpc0Zhc3RDaGVj
a2FibGVTZWxlY3RvcikgY29uc3QKK2lubGluZSBib29sIGNvbW1vblBzZXVkb0NsYXNzU2VsZWN0
b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgU2VsZWN0b3JDaGVja2VyOjpWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUp
CiB7Ci0gICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYmICFlbGVtZW50LT5pc1NWR0Vs
ZW1lbnQoKSkgewotICAgICAgICBpZiAoIWZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKHNlbGVj
dG9yLCBlbGVtZW50LCBWaXNpdGVkTWF0Y2hEaXNhYmxlZCkpCi0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIHJldHVybiBmYXN0Q2hlY2soc2VsZWN0b3IsIGVsZW1lbnQpOworICAg
IEFTU0VSVChTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxl
Y3RvcikpOworICAgIHN3aXRjaCAoc2VsZWN0b3ItPnBzZXVkb1R5cGUoKSkgeworICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0xpbms6CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQW55
TGluazoKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQtPmlzTGluaygpOworICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1Zpc2l0ZWQ6CisgICAgICAgIHJldHVybiBlbGVtZW50LT5pc0xpbmsoKSAm
JiB2aXNpdGVkTWF0Y2hUeXBlID09IFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRW5hYmxl
ZDsKKyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKKyAgICAgICAgcmV0dXJuIG1h
dGNoZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQpOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLQotICAgIFBzZXVkb0lkIGlnbm9yZUR5bmFtaWNQ
c2V1ZG8gPSBOT1BTRVVETzsKLSAgICByZXR1cm4gbWF0Y2goU2VsZWN0b3JDaGVja2luZ0NvbnRl
eHQoc2VsZWN0b3IsIGVsZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRGlzYWJs
ZWQpLCBpZ25vcmVEeW5hbWljUHNldWRvLCBET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3koKSkg
PT0gU2VsZWN0b3JNYXRjaGVzOworICAgIHJldHVybiB0cnVlOwogfQogCiBuYW1lc3BhY2UgewpA
QCAtMTM5LDkgKzE0NCw5IEBAIGlubGluZSBib29sIGNoZWNrVGFnVmFsdWUoY29uc3QgRWxlbWVu
dCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yKQogCiB9CiAKLWlubGluZSBi
b29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3IoY29uc3QgQ1NT
U2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50LCBWaXNpdGVkTWF0Y2hU
eXBlIHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0CitpbmxpbmUgYm9vbCBmYXN0Q2hlY2tSaWdodG1v
c3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVs
ZW1lbnQsIFNlbGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoVHlwZSB2aXNpdGVkTWF0Y2hUeXBl
KQogewotICAgIEFTU0VSVChpc0Zhc3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpOworICAg
IEFTU0VSVChTZWxlY3RvckNoZWNrZXI6OmlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKHNlbGVjdG9y
KSk7CiAKICAgICBzd2l0Y2ggKHNlbGVjdG9yLT5tX21hdGNoKSB7CiAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6VGFnOgpAQCAtMTYxLDcgKzE2NiwxOSBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNr
ZXI6OmZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlYwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVjayhj
b25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0
Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6bWF0Y2hlcyhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0
b3IsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgaXNGYXN0Q2hlY2thYmxlU2VsZWN0b3IpIGNvbnN0
Cit7CisgICAgaWYgKGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yICYmICFlbGVtZW50LT5pc1NWR0Vs
ZW1lbnQoKSkgeworICAgICAgICBpZiAoIWZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9yKHNlbGVj
dG9yLCBlbGVtZW50LCBWaXNpdGVkTWF0Y2hEaXNhYmxlZCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgIHJldHVybiBmYXN0Q2hlY2soc2VsZWN0b3IsIGVsZW1lbnQpOworICAg
IH0KKworICAgIFBzZXVkb0lkIGlnbm9yZUR5bmFtaWNQc2V1ZG8gPSBOT1BTRVVETzsKKyAgICBy
ZXR1cm4gbWF0Y2goU2VsZWN0b3JDaGVja2luZ0NvbnRleHQoc2VsZWN0b3IsIGVsZW1lbnQsIFNl
bGVjdG9yQ2hlY2tlcjo6VmlzaXRlZE1hdGNoRGlzYWJsZWQpLCBpZ25vcmVEeW5hbWljUHNldWRv
LCBET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3koKSkgPT0gU2VsZWN0b3JNYXRjaGVzOworfQor
Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxl
Y3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBBU1NFUlQoZmFzdENoZWNrUmln
aHRtb3N0U2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1lbnQsIFZpc2l0ZWRNYXRjaEVuYWJsZWQpKTsK
IApAQCAtOTkzLDIzICsxMDEwLDYgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2Nyb2xs
YmFyUHNldWRvQ2xhc3MoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBDU1NTZWwKICAgICB9CiB9
CiAKLWJvb2wgU2VsZWN0b3JDaGVja2VyOjpjb21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hl
cyhjb25zdCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIFZp
c2l0ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkgY29uc3QKLXsKLSAgICBBU1NFUlQoaXND
b21tb25Qc2V1ZG9DbGFzc1NlbGVjdG9yKHNlbGVjdG9yKSk7Ci0gICAgc3dpdGNoIChzZWxlY3Rv
ci0+cHNldWRvVHlwZSgpKSB7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGluazoKLSAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BbnlMaW5rOgotICAgICAgICByZXR1cm4gZWxlbWVu
dC0+aXNMaW5rKCk7Ci0gICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVmlzaXRlZDoKLSAgICAg
ICAgcmV0dXJuIGVsZW1lbnQtPmlzTGluaygpICYmIHZpc2l0ZWRNYXRjaFR5cGUgPT0gVmlzaXRl
ZE1hdGNoRW5hYmxlZDsKLSAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czoKLSAgICAg
ICAgcmV0dXJuIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGVsZW1lbnQpOwotICAgIGRlZmF1bHQ6
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAgICByZXR1cm4gdHJ1ZTsK
LX0KLQogdW5zaWduZWQgU2VsZWN0b3JDaGVja2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKGNv
bnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikKIHsKICAgICB1bnNpZ25lZCBsaW5rTWF0Y2hUeXBl
ID0gTWF0Y2hBbGw7CkBAIC0xMDU1LDExICsxMDU1LDYgQEAgdW5zaWduZWQgU2VsZWN0b3JDaGVj
a2VyOjpkZXRlcm1pbmVMaW5rTWF0Y2hUeXBlKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvcikK
ICAgICByZXR1cm4gbGlua01hdGNoVHlwZTsKIH0KIAotYm9vbCBTZWxlY3RvckNoZWNrZXI6Omlz
RnJhbWVGb2N1c2VkKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCi17Ci0gICAgcmV0dXJuIGVsZW1l
bnQtPmRvY3VtZW50KCktPmZyYW1lKCkgJiYgZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+
c2VsZWN0aW9uKCktPmlzRm9jdXNlZEFuZEFjdGl2ZSgpOwotfQotCiB0ZW1wbGF0ZQogU2VsZWN0
b3JDaGVja2VyOjpNYXRjaCBTZWxlY3RvckNoZWNrZXI6Om1hdGNoKGNvbnN0IFNlbGVjdG9yQ2hl
Y2tpbmdDb250ZXh0JiwgUHNldWRvSWQmLCBjb25zdCBET01TaWJsaW5nVHJhdmVyc2FsU3RyYXRl
Z3kmKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hl
Y2tlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCmluZGV4IDM5Mzli
YzM1NGU0YTNjZDcyMzQ3N2YzOGVmNjJhZmRjNGQ2ZmVlZmIuLjZkNjI5NTNhODgyZmM2YjZmMmQ2
NDk1Y2JhNzU0ZGJjMDA4YmIxNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxl
Y3RvckNoZWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmgK
QEAgLTgyLDcgKzgyLDcgQEAgcHVibGljOgogICAgIGJvb2wgY2hlY2tPbmUoY29uc3QgU2VsZWN0
b3JDaGVja2luZ0NvbnRleHQmLCBjb25zdCBTaWJsaW5nVHJhdmVyc2FsU3RyYXRlZ3kmKSBjb25z
dDsKIAogICAgIHN0YXRpYyBib29sIGlzRmFzdENoZWNrYWJsZVNlbGVjdG9yKGNvbnN0IENTU1Nl
bGVjdG9yKik7Ci0gICAgYm9vbCBmYXN0Q2hlY2soY29uc3QgQ1NTU2VsZWN0b3IqLCBjb25zdCBF
bGVtZW50KikgY29uc3Q7CisgICAgc3RhdGljIGJvb2wgZmFzdENoZWNrKGNvbnN0IENTU1NlbGVj
dG9yKiwgY29uc3QgRWxlbWVudCopOwogCiAgICAgYm9vbCBzdHJpY3RQYXJzaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpY3RQYXJzaW5nOyB9CiAKQEAgLTkxLDcgKzkxLDYgQEAgcHVibGljOgog
CiAgICAgc3RhdGljIGJvb2wgdGFnTWF0Y2hlcyhjb25zdCBFbGVtZW50KiwgY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwogICAgIHN0YXRpYyBib29sIGlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihj
b25zdCBDU1NTZWxlY3RvciopOwotICAgIGJvb2wgbWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MoY29u
c3QgRWxlbWVudCopIGNvbnN0OwogICAgIHN0YXRpYyBib29sIGZhc3RDaGVja1JpZ2h0bW9zdEF0
dHJpYnV0ZVNlbGVjdG9yKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopOwogICAg
IHN0YXRpYyBib29sIGNoZWNrRXhhY3RBdHRyaWJ1dGUoY29uc3QgRWxlbWVudCosIGNvbnN0IFF1
YWxpZmllZE5hbWUmIHNlbGVjdG9yQXR0cmlidXRlTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nSW1w
bCogdmFsdWUpOwogCkBAIC0xMDAsMTAgKzk5LDYgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAg
IGJvb2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhEb2N1bWVudCosIGNvbnN0IENTU1NlbGVj
dG9yKikgY29uc3Q7Ci0gICAgc3RhdGljIGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVu
dCopOwotCi0gICAgYm9vbCBmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxl
Y3RvciosIGNvbnN0IEVsZW1lbnQqLCBWaXNpdGVkTWF0Y2hUeXBlKSBjb25zdDsKLSAgICBib29s
IGNvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBD
U1NTZWxlY3RvciosIFZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OwogCiAgICAgYm9vbCBtX3N0cmlj
dFBhcnNpbmc7CiAgICAgYm9vbCBtX2RvY3VtZW50SXNIVE1MOwpAQCAtMTIxLDcgKzExNiwxMiBA
QCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rv
cihjb25zdCBDU1NTZWxlY3Rvciogc2VsZQogICAgICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9Gb2N1czsKIH0KIAotaW5saW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpt
YXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBFbGVtZW50KiBlbGVtZW50KSBjb25zdAoraW5s
aW5lIGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBy
ZXR1cm4gZWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBlbGVtZW50LT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCk7Cit9CisKK2lubGlu
ZSBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCiB7
CiAgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShjb25z
dF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXgg
YWRjNmVhMzM5YzE5ZDY2MTRmZWQ0OGMxOGRhMDc3ZmZhMGM3ZTY0MC4uYjljY2E1ZTI2MGQzMTE5
NzVjOTYzYmQ1Zjk4ZmI1YjA0OGU0MTAxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIoRG9j
dW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICAgICAsIG1f
bWF0Y2hlZFByb3BlcnRpZXNDYWNoZUFkZGl0aW9uc1NpbmNlTGFzdFN3ZWVwKDApCiAgICAgLCBt
X21hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVTd2VlcFRpbWVyKHRoaXMsICZTdHlsZVJlc29sdmVyOjpz
d2VlcE1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUpCiAgICAgLCBtX2RvY3VtZW50KGRvY3VtZW50KQot
ICAgICwgbV9zZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQpCisgICAgLCBtX21vZGUoU2VsZWN0b3JD
aGVja2VyOjpSZXNvbHZpbmdTdHlsZSkKICAgICAsIG1fcGFyZW50U3R5bGUoMCkKICAgICAsIG1f
cm9vdEVsZW1lbnRTdHlsZSgwKQogICAgICwgbV9lbGVtZW50KDApCkBAIC02OTAsNyArNjkwLDcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0TWF0Y2hpbmdSdWxlcyhjb25zdCBNYXRjaFJl
cXVlc3QmIG1hdGNoUmVxdWVzdCwgUnVsZVIKIAogICAgIGlmIChtX2VsZW1lbnQtPmlzTGluaygp
KQogICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3QobWF0Y2hSZXF1ZXN0LnJ1bGVT
ZXQtPmxpbmtQc2V1ZG9DbGFzc1J1bGVzKCksIG1hdGNoUmVxdWVzdCwgcnVsZVJhbmdlKTsKLSAg
ICBpZiAobV9zZWxlY3RvckNoZWNrZXIubWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50
KSkKKyAgICBpZiAobWF0Y2hlc0ZvY3VzUHNldWRvQ2xhc3MobV9lbGVtZW50KSkKICAgICAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1c1Bz
ZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGNvbGxlY3RN
YXRjaGluZ1J1bGVzRm9yTGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dGFnUnVsZXMobV9lbGVt
ZW50LT5sb2NhbE5hbWUoKS5pbXBsKCkpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CiAgICAg
Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT51bml2ZXJz
YWxSdWxlcygpLCBtYXRjaFJlcXVlc3QsIHJ1bGVSYW5nZSk7CkBAIC03MTksNyArNzE5LDcgQEAg
dm9pZCBTdHlsZVJlc29sdmVyOjpzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCkKIAogICAgIHNvcnRNYXRjaGVkUnVsZXMoKTsKIAotICAgIGlmIChtX3NlbGVj
dG9yQ2hlY2tlci5tb2RlKCkgPT0gU2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpIHsK
KyAgICBpZiAobV9tb2RlID09IFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKSB7CiAg
ICAgICAgIGlmICghbV9ydWxlTGlzdCkKICAgICAgICAgICAgIG1fcnVsZUxpc3QgPSBTdGF0aWND
U1NSdWxlTGlzdDo6Y3JlYXRlKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
X21hdGNoZWRSdWxlcy5zaXplKCk7ICsraSkKQEAgLTg4NSw3ICs4ODUsNyBAQCB2b2lkIFN0eWxl
UmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURh
dGE+KiBydWxlcywgYwogICAgICAgICAgICAgLy8gSWYgd2UncmUgbWF0Y2hpbmcgbm9ybWFsIHJ1
bGVzLCBzZXQgYSBwc2V1ZG8gYml0IGlmCiAgICAgICAgICAgICAvLyB3ZSByZWFsbHkganVzdCBt
YXRjaGVkIGEgcHNldWRvLWVsZW1lbnQuCiAgICAgICAgICAgICBpZiAobV9keW5hbWljUHNldWRv
ICE9IE5PUFNFVURPICYmIG1fcHNldWRvU3R5bGUgPT0gTk9QU0VVRE8pIHsKLSAgICAgICAgICAg
ICAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIubW9kZSgpID09IFNlbGVjdG9yQ2hlY2tlcjo6Q29s
bGVjdGluZ1J1bGVzKSB7CisgICAgICAgICAgICAgICAgaWYgKG1fbW9kZSA9PSBTZWxlY3RvckNo
ZWNrZXI6OkNvbGxlY3RpbmdSdWxlcykgewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZE1hdGNoUnVsZShjb29raWUsIGZhbHNlKTsKICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTA4MCwxMSArMTA4MCwx
MSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNSdWxl
U2V0KFJ1bGVTZXQqIHJ1bGVTZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX21hdGNo
ZWRSdWxlcy5jbGVhcigpOwogCi0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxlY3Rv
ckNoZWNrZXI6OlNoYXJpbmdSdWxlcyk7CisgICAgbV9tb2RlID0gU2VsZWN0b3JDaGVja2VyOjpT
aGFyaW5nUnVsZXM7CiAgICAgaW50IGZpcnN0UnVsZUluZGV4ID0gLTEsIGxhc3RSdWxlSW5kZXgg
PSAtMTsKICAgICBSdWxlUmFuZ2UgcnVsZVJhbmdlKGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUlu
ZGV4KTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVlc3QocnVsZVNldCksIHJ1
bGVSYW5nZSk7Ci0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShTZWxlY3RvckNoZWNrZXI6
OlJlc29sdmluZ1N0eWxlKTsKKyAgICBtX21vZGUgPSBTZWxlY3RvckNoZWNrZXI6OlJlc29sdmlu
Z1N0eWxlOwogICAgIGlmIChtX21hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtMTM2MSw3ICsxMzYxLDcg
QEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkK
ICAgICBtYXRjaFVBUnVsZXMocmVzdWx0LCB1c2VyQWdlbnRTdHlsZVNoZWV0KTsKIAogICAgIC8v
IEluIHF1aXJrcyBtb2RlLCB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBxdWlya3MgdXNlciBhZ2Vu
dCBzaGVldC4KLSAgICBpZiAoIW1fc2VsZWN0b3JDaGVja2VyLnN0cmljdFBhcnNpbmcoKSkKKyAg
ICBpZiAoZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpCiAgICAgICAgIG1hdGNoVUFSdWxlcyhy
ZXN1bHQsIGRlZmF1bHRRdWlya3NTdHlsZSk7CiAKICAgICAvLyBJZiBkb2N1bWVudCB1c2VzIHZp
ZXcgc291cmNlIHN0eWxlcyAoaW4gdmlldyBzb3VyY2UgbW9kZSBvciBpbiB4bWwgdmlld2VyIG1v
ZGUpLCB0aGVuIHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHZpZXcgc291cmNlIHN0eWxlIHNoZWV0
LgpAQCAtMTk0Niw3ICsxOTQ2LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1c3RSZW5kZXJT
dHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHkKICAgICAgICAg
Ly8gcHJvcGVydHkuCiAgICAgICAgIC8vIFNpdGVzIGFsc28gY29tbW9ubHkgdXNlIGRpc3BsYXk6
aW5saW5lL2Jsb2NrIG9uIDx0ZD5zIGFuZCA8dGFibGU+cy4gSW4gcXVpcmtzIG1vZGUgd2UgZm9y
Y2UKICAgICAgICAgLy8gdGhlc2UgdGFncyB0byByZXRhaW4gdGhlaXIgZGlzcGxheSB0eXBlcy4K
LSAgICAgICAgaWYgKCFtX3NlbGVjdG9yQ2hlY2tlci5zdHJpY3RQYXJzaW5nKCkgJiYgZSkgewor
ICAgICAgICBpZiAoZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkgJiYgZSkgewogICAgICAgICAg
ICAgaWYgKGUtPmhhc1RhZ05hbWUodGRUYWcpKSB7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNl
dERpc3BsYXkoVEFCTEVfQ0VMTCk7CiAgICAgICAgICAgICAgICAgc3R5bGUtPnNldEZsb2F0aW5n
KE5vRmxvYXQpOwpAQCAtMTk5Myw3ICsxOTkzLDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphZGp1
c3RSZW5kZXJTdHlsZShSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiBwYXJlbnRTdHkK
IAogICAgICAgICAvLyBBYnNvbHV0ZS9maXhlZCBwb3NpdGlvbmVkIGVsZW1lbnRzLCBmbG9hdGlu
ZyBlbGVtZW50cyBhbmQgdGhlIGRvY3VtZW50IGVsZW1lbnQgbmVlZCBibG9jay1saWtlIG91dHNp
ZGUgZGlzcGxheS4KICAgICAgICAgaWYgKHN0eWxlLT5oYXNPdXRPZkZsb3dQb3NpdGlvbigpIHx8
IHN0eWxlLT5pc0Zsb2F0aW5nKCkgfHwgKGUgJiYgZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCkgPT0gZSkpCi0gICAgICAgICAgICBzdHlsZS0+c2V0RGlzcGxheShlcXVpdmFsZW50Qmxv
Y2tEaXNwbGF5KHN0eWxlLT5kaXNwbGF5KCksIHN0eWxlLT5pc0Zsb2F0aW5nKCksIG1fc2VsZWN0
b3JDaGVja2VyLnN0cmljdFBhcnNpbmcoKSkpOworICAgICAgICAgICAgc3R5bGUtPnNldERpc3Bs
YXkoZXF1aXZhbGVudEJsb2NrRGlzcGxheShzdHlsZS0+ZGlzcGxheSgpLCBzdHlsZS0+aXNGbG9h
dGluZygpLCAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKIAogICAgICAgICAvLyBGSVhN
RTogRG9uJ3Qgc3VwcG9ydCB0aGlzIG11dGF0aW9uIGZvciBwc2V1ZG8gc3R5bGVzIGxpa2UgZmly
c3QtbGV0dGVyIG9yIGZpcnN0LWxpbmUsIHNpbmNlIGl0J3Mgbm90IGNvbXBsZXRlbHkKICAgICAg
ICAgLy8gY2xlYXIgaG93IHRoYXQgc2hvdWxkIHdvcmsuCkBAIC0yMDIzLDcgKzIwMjMsNyBAQCB2
b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwg
UmVuZGVyU3R5bGUqIHBhcmVudFN0eQogCiAgICAgICAgIGlmIChpc0Rpc3BsYXlGbGV4aWJsZUJv
eChwYXJlbnRTdHlsZS0+ZGlzcGxheSgpKSkgewogICAgICAgICAgICAgc3R5bGUtPnNldEZsb2F0
aW5nKE5vRmxvYXQpOwotICAgICAgICAgICAgc3R5bGUtPnNldERpc3BsYXkoZXF1aXZhbGVudEJs
b2NrRGlzcGxheShzdHlsZS0+ZGlzcGxheSgpLCBzdHlsZS0+aXNGbG9hdGluZygpLCBtX3NlbGVj
dG9yQ2hlY2tlci5zdHJpY3RQYXJzaW5nKCkpKTsKKyAgICAgICAgICAgIHN0eWxlLT5zZXREaXNw
bGF5KGVxdWl2YWxlbnRCbG9ja0Rpc3BsYXkoc3R5bGUtPmRpc3BsYXkoKSwgc3R5bGUtPmlzRmxv
YXRpbmcoKSwgIWRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpKSk7CiAgICAgICAgIH0KIAogI2lm
IEVOQUJMRShESUFMT0dfRUxFTUVOVCkKQEAgLTIyNDEsNyArMjI0MSw3IEBAIFBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IFN0eWxlUmVzb2x2ZXI6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVs
ZW1lbnQqIGUsIFBzCiAgICAgaWYgKCFlIHx8ICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVl
dHNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBtX3NlbGVjdG9yQ2hlY2tlci5z
ZXRNb2RlKFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKTsKKyAgICBtX21vZGUgPSBT
ZWxlY3RvckNoZWNrZXI6OkNvbGxlY3RpbmdSdWxlczsKIAogICAgIGluaXRFbGVtZW50KGUpOwog
ICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgMCwgcHNldWRvSWQpOwpAQCAtMjI2NSw3ICsyMjY1
LDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVS
dWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZSwgUHMKICAgICAgICAgbV9zYW1lT3JpZ2luT25seSA9
IGZhbHNlOwogICAgIH0KIAotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNldE1vZGUoU2VsZWN0b3JD
aGVja2VyOjpSZXNvbHZpbmdTdHlsZSk7CisgICAgbV9tb2RlID0gU2VsZWN0b3JDaGVja2VyOjpS
ZXNvbHZpbmdTdHlsZTsKIAogICAgIHJldHVybiBtX3J1bGVMaXN0LnJlbGVhc2UoKTsKIH0KQEAg
LTIyODgsMTUgKzIyODgsMTcgQEAgaW5saW5lIGJvb2wgU3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNo
ZXMoY29uc3QgUnVsZURhdGEmIHJ1bGVEYXRhLCBjb25zdCBDb250YWluZXIKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKCFTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1Jp
Z2h0bW9zdEF0dHJpYnV0ZVNlbGVjdG9yKG1fZWxlbWVudCwgcnVsZURhdGEuc2VsZWN0b3IoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHJldHVybiBtX3NlbGVjdG9yQ2hl
Y2tlci5mYXN0Q2hlY2socnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50KTsKKyAgICAgICAg
cmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrKHJ1bGVEYXRhLnNlbGVjdG9yKCksIG1f
ZWxlbWVudCk7CiAgICAgfQogCiAgICAgLy8gU2xvdyBwYXRoLgorICAgIFNlbGVjdG9yQ2hlY2tl
ciBzZWxlY3RvckNoZWNrZXIoZG9jdW1lbnQoKSk7CisgICAgc2VsZWN0b3JDaGVja2VyLnNldE1v
ZGUobV9tb2RlKTsKICAgICBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yQ2hlY2tpbmdDb250ZXh0
IGNvbnRleHQocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6
OlZpc2l0ZWRNYXRjaEVuYWJsZWQpOwogICAgIGNvbnRleHQuZWxlbWVudFN0eWxlID0gc3R5bGUo
KTsKICAgICBjb250ZXh0LnNjb3BlID0gc2NvcGU7CiAgICAgY29udGV4dC5wc2V1ZG9TdHlsZSA9
IG1fcHNldWRvU3R5bGU7Ci0gICAgU2VsZWN0b3JDaGVja2VyOjpNYXRjaCBtYXRjaCA9IG1fc2Vs
ZWN0b3JDaGVja2VyLm1hdGNoKGNvbnRleHQsIG1fZHluYW1pY1BzZXVkbywgRE9NU2libGluZ1Ry
YXZlcnNhbFN0cmF0ZWd5KCkpOworICAgIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2ggbWF0Y2ggPSBz
ZWxlY3RvckNoZWNrZXIubWF0Y2goY29udGV4dCwgbV9keW5hbWljUHNldWRvLCBET01TaWJsaW5n
VHJhdmVyc2FsU3RyYXRlZ3koKSk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yQ2hlY2tlcjo6
U2VsZWN0b3JNYXRjaGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fcHNldWRv
U3R5bGUgIT0gTk9QU0VVRE8gJiYgbV9wc2V1ZG9TdHlsZSAhPSBtX2R5bmFtaWNQc2V1ZG8pCkBA
IC0yMzEwLDkgKzIzMTIsOSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OmNoZWNrUmVnaW9uU2VsZWN0
b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHJlZ2lvblNlbGVjdG9yLCBFbGVtZQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBtX3BzZXVkb1N0eWxlID0gTk9QU0VVRE87Ci0KKyAgICBTZWxlY3Rv
ckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGRvY3VtZW50KCkpOwogICAgIGZvciAoY29uc3QgQ1NT
U2VsZWN0b3IqIHMgPSByZWdpb25TZWxlY3RvcjsgczsgcyA9IENTU1NlbGVjdG9yTGlzdDo6bmV4
dChzKSkKLSAgICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyLm1hdGNoZXMocywgcmVnaW9uRWxl
bWVudCkpCisgICAgICAgIGlmIChzZWxlY3RvckNoZWNrZXIubWF0Y2hlcyhzLCByZWdpb25FbGVt
ZW50KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJuIGZhbHNlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggYTNhZjU0NDhiOTA5OGUzYzMyOGE2NTIwZTgw
OTFiMjE1MzVmNTQ2ZS4uM2ZiY2E4NDA0YzE1MjZiZDA3OThkOGQ3OTFhYjJlYzIxNmUyOWQyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC01MjcsNyArNTI3LDcgQEAgcHJpdmF0
ZToKICAgICBQc2V1ZG9JZCBtX3BzZXVkb1N0eWxlOwogCiAgICAgRG9jdW1lbnQqIG1fZG9jdW1l
bnQ7Ci0gICAgU2VsZWN0b3JDaGVja2VyIG1fc2VsZWN0b3JDaGVja2VyOworICAgIFNlbGVjdG9y
Q2hlY2tlcjo6TW9kZSBtX21vZGU7CiAgICAgU2VsZWN0b3JGaWx0ZXIgbV9zZWxlY3RvckZpbHRl
cjsKIAogICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4gbV9zdHlsZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186988</attachid>
            <date>2013-02-06 21:10:41 -0800</date>
            <delta_ts>2013-02-12 09:19:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108595-20130207140717.patch</filename>
            <type>text/plain</type>
            <size>16271</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMDYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTljOGRlNmQ0ZDJiMzRj
OWQ3MzE3Mzg3N2JiYjA1NjE3MGFhOTAxNS4uMzIyZjg3ZDQ2Mzk4YWQxYWEyYjA5YzVlMDA2MGFh
MTgyNTc1MGNkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAyLTA2ICBUYWth
c2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbUmVmYWN0b3Jpbmdd
IE1ha2UgbV9zZWxlY3RvckNoZWNrZXIgaW4gU3R5bGVSZXNvbHZlciBhbiBvbi1zdGFjayBvYmpl
Y3QuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg1
OTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTdHls
ZVJlc29sdmVyIHVzZXMgU2VsZWN0b3JDaGVja2VyJ3MgbW9kZSB0byBjaGFuZ2UgaXRzIHJlc29s
dmluZyBtb2RlLgorICAgICAgICBIb3dldmVyIGl0IGlzIGEgc3RhdGUgb2YgU3R5bGVSZXNvbHZl
ci4gU3R5bGVSZXNvbHZlciBzaG91bGQgaGF2ZSB0aGUKKyAgICAgICAgbW9kZSBhbmQgbWFrZSBT
ZWxlY3RvckNoZWNrZXIgaW5zdGFuY2Ugb24gYSBzdGFjayB3aGlsZSByZXF1aXJlZC4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIGp1c3QgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBjc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6ZmFz
dENoZWNrUmlnaHRtb3N0U2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVj
a2VyOjpmYXN0Q2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDaGVja2VyOjpjb21t
b25Qc2V1ZG9DbGFzc1NlbGVjdG9yTWF0Y2hlcyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKToKKyAgICAgICAgQ2hhbmdlZCB0byBz
dGF0aWMgY2xhc3MgZnVuY3Rpb24sIGJlY2F1c2UgdGhlc2UgbWV0aG9kcyBuZXZlciB1c2UKKyAg
ICAgICAgInRoaXMiLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogY3NzL1NlbGVjdG9y
Q2hlY2tlci5oOgorICAgICAgICAoU2VsZWN0b3JDaGVja2VyKToKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJl
c29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGlu
Z1J1bGVzKToKKyAgICAgICAgTm93LCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyBpcyBub3QgYSBz
dGF0aWMgbWV0aG9kIG9mCisgICAgICAgIFNlbGVjdG9yQ2hlY2tlciwgc28gcmVwbGFjZWQgIm1f
c2VsZWN0b3JDaGVja2VyLiIgd2l0aAorICAgICAgICAiU2VsZWN0b3JDaGVja2VyOjoiLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6c29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpzdHlsZVNoYXJpbmdD
YW5kaWRhdGVNYXRjaGVzUnVsZVNldCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVy
OjptYXRjaFVBUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YWRqdXN0
UmVuZGVyU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5
bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICBVc2UgbV9tb2RlIGluc3RlYWQgb2YgbV9zZWxl
Y3RvckNoZWNrZXIubW9kZSgpLgorICAgICAgICBBbHNvIHVzZSBkb2N1bWVudCgpLT5pblF1aXJr
c01vZGUoKSBpbnN0ZWFkIG9mCisgICAgICAgIG1fc2VsZWN0b0NoZWNrZXIuc3RyaWN0UGFyc2lu
ZygpLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6cnVsZU1hdGNoZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y2hlY2tSZWdpb25TZWxlY3Rvcik6CisgICAg
ICAgIENyZWF0ZWQgYW4gb24tc3RhY2sgU2VsZWN0b3JDaGVja2VyIG9iamVjdCBhbmQgdXNlZCBp
dCB0byBjaGVjaworICAgICAgICBzZWxlY3RvcnMuCisgICAgICAgICogY3NzL1N0eWxlUmVzb2x2
ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0YXRlOjpTdGF0ZSk6Cisg
ICAgICAgIEFkZGVkIG1fbW9kZSwgdGhpcyBrZWVwcyBtX3NlbGVjdG9yQ2hlY2tlcidzIG1vZGUu
CisgICAgICAgIChTdGF0ZSk6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgUmVt
b3ZlZCBtX3NlbGVjdG9yQ2hlY2tlci4KKwogMjAxMy0wMi0wNiAgVG9tIFNlcGV6ICA8dHNlcGV6
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBkb2N1bWVudC5yZWZlcnJlciBsZWFrYWdlIHdpdGgg
WFNTIEF1ZGl0b3IgcGFnZSBibG9jawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNw
cAppbmRleCAzMGZjNDlhZGJmZjMzM2UzYWZjOWY0ZDBkOGFjMWNlNTdjODM0MmE5Li44MjkwNTU1
M2Y0Y2MzY2UxN2ZhN2UxNDlmYzk1YWE5YzVmNTJlOGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2Vs
ZWN0b3JDaGVja2VyLmNwcApAQCAtMTM5LDkgKzEzOSw5IEBAIGlubGluZSBib29sIGNoZWNrVGFn
VmFsdWUoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
KQogCiB9CiAKLWlubGluZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0
U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVt
ZW50LCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0Citib29sIFNlbGVj
dG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3Iq
IHNlbGVjdG9yLCBjb25zdCBFbGVtZW50KiBlbGVtZW50LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0
ZWRNYXRjaFR5cGUgdmlzaXRlZE1hdGNoVHlwZSkKIHsKLSAgICBBU1NFUlQoaXNGYXN0Q2hlY2th
YmxlU2VsZWN0b3Ioc2VsZWN0b3IpKTsKKyAgICBBU1NFUlQoU2VsZWN0b3JDaGVja2VyOjppc0Zh
c3RDaGVja2FibGVTZWxlY3RvcihzZWxlY3RvcikpOwogCiAgICAgc3dpdGNoIChzZWxlY3Rvci0+
bV9tYXRjaCkgewogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlRhZzoKQEAgLTE2MSw3ICsxNjEsNyBA
QCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVja1JpZ2h0bW9zdFNlbGVjdG9y
KGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlYwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBT
ZWxlY3RvckNoZWNrZXI6OmZhc3RDaGVjayhjb25zdCBDU1NTZWxlY3Rvciogc2VsZWN0b3IsIGNv
bnN0IEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENo
ZWNrKGNvbnN0IENTU1NlbGVjdG9yKiBzZWxlY3RvciwgY29uc3QgRWxlbWVudCogZWxlbWVudCkK
IHsKICAgICBBU1NFUlQoZmFzdENoZWNrUmlnaHRtb3N0U2VsZWN0b3Ioc2VsZWN0b3IsIGVsZW1l
bnQsIFZpc2l0ZWRNYXRjaEVuYWJsZWQpKTsKIApAQCAtOTk5LDcgKzk5OSw3IEBAIGJvb2wgU2Vs
ZWN0b3JDaGVja2VyOjpjaGVja1Njcm9sbGJhclBzZXVkb0NsYXNzKERvY3VtZW50KiBkb2N1bWVu
dCwgY29uc3QgQ1NTU2VsCiAgICAgfQogfQogCi1ib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y29tbW9u
UHNldWRvQ2xhc3NTZWxlY3Rvck1hdGNoZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3Qg
Q1NTU2VsZWN0b3IqIHNlbGVjdG9yLCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUp
IGNvbnN0Citib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvck1h
dGNoZXMoY29uc3QgRWxlbWVudCogZWxlbWVudCwgY29uc3QgQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
LCBWaXNpdGVkTWF0Y2hUeXBlIHZpc2l0ZWRNYXRjaFR5cGUpCiB7CiAgICAgQVNTRVJUKGlzQ29t
bW9uUHNldWRvQ2xhc3NTZWxlY3RvcihzZWxlY3RvcikpOwogICAgIHN3aXRjaCAoc2VsZWN0b3It
PnBzZXVkb1R5cGUoKSkgewpAQCAtMTA2Niw2ICsxMDY2LDEzIEBAIGJvb2wgU2VsZWN0b3JDaGVj
a2VyOjppc0ZyYW1lRm9jdXNlZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQogICAgIHJldHVybiBl
bGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGVsZW1lbnQtPmRvY3VtZW50KCktPmZyYW1l
KCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKTsKIH0KIAorYm9vbCBTZWxlY3Rv
ckNoZWNrZXI6Om1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgaWYgKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShj
b25zdF9jYXN0PEVsZW1lbnQqPihlbGVtZW50KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIGVsZW1lbnQtPmZvY3VzZWQoKSAmJiBp
c0ZyYW1lRm9jdXNlZChlbGVtZW50KTsKK30KKwogdGVtcGxhdGUKIFNlbGVjdG9yQ2hlY2tlcjo6
TWF0Y2ggU2VsZWN0b3JDaGVja2VyOjptYXRjaChjb25zdCBTZWxlY3RvckNoZWNraW5nQ29udGV4
dCYsIFBzZXVkb0lkJiwgY29uc3QgRE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5JikgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaCBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TZWxlY3RvckNoZWNrZXIuaAppbmRleCAzOTM5YmMzNTRlNGEzY2Q3
MjM0NzdmMzhlZjYyYWZkYzRkNmZlZWZiLi43YjA1OWY4MjVjOTY5NGQ5NDQzMTJiN2Q2ODIzZDRi
Mjc1MGRjMGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5oCkBAIC04Miw3ICs4
Miw3IEBAIHB1YmxpYzoKICAgICBib29sIGNoZWNrT25lKGNvbnN0IFNlbGVjdG9yQ2hlY2tpbmdD
b250ZXh0JiwgY29uc3QgU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5JikgY29uc3Q7CiAKICAgICBz
dGF0aWMgYm9vbCBpc0Zhc3RDaGVja2FibGVTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3RvciopOwot
ICAgIGJvb2wgZmFzdENoZWNrKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopIGNv
bnN0OworICAgIHN0YXRpYyBib29sIGZhc3RDaGVjayhjb25zdCBDU1NTZWxlY3RvciosIGNvbnN0
IEVsZW1lbnQqKTsKIAogICAgIGJvb2wgc3RyaWN0UGFyc2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaWN0UGFyc2luZzsgfQogCkBAIC05MSw3ICs5MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBib29sIHRhZ01hdGNoZXMoY29uc3QgRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsK
ICAgICBzdGF0aWMgYm9vbCBpc0NvbW1vblBzZXVkb0NsYXNzU2VsZWN0b3IoY29uc3QgQ1NTU2Vs
ZWN0b3IqKTsKLSAgICBib29sIG1hdGNoZXNGb2N1c1BzZXVkb0NsYXNzKGNvbnN0IEVsZW1lbnQq
KSBjb25zdDsKKyAgICBzdGF0aWMgYm9vbCBtYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBF
bGVtZW50Kik7CiAgICAgc3RhdGljIGJvb2wgZmFzdENoZWNrUmlnaHRtb3N0QXR0cmlidXRlU2Vs
ZWN0b3IoY29uc3QgRWxlbWVudCosIGNvbnN0IENTU1NlbGVjdG9yKik7CiAgICAgc3RhdGljIGJv
b2wgY2hlY2tFeGFjdEF0dHJpYnV0ZShjb25zdCBFbGVtZW50KiwgY29uc3QgUXVhbGlmaWVkTmFt
ZSYgc2VsZWN0b3JBdHRyaWJ1dGVOYW1lLCBjb25zdCBBdG9taWNTdHJpbmdJbXBsKiB2YWx1ZSk7
CiAKQEAgLTEwMCwxMCArMTAwLDExIEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBib29sIGNo
ZWNrU2Nyb2xsYmFyUHNldWRvQ2xhc3MoRG9jdW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciopIGNv
bnN0OworCiAgICAgc3RhdGljIGJvb2wgaXNGcmFtZUZvY3VzZWQoY29uc3QgRWxlbWVudCopOwog
Ci0gICAgYm9vbCBmYXN0Q2hlY2tSaWdodG1vc3RTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvcios
IGNvbnN0IEVsZW1lbnQqLCBWaXNpdGVkTWF0Y2hUeXBlKSBjb25zdDsKLSAgICBib29sIGNvbW1v
blBzZXVkb0NsYXNzU2VsZWN0b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxl
Y3RvciosIFZpc2l0ZWRNYXRjaFR5cGUpIGNvbnN0OworICAgIHN0YXRpYyBib29sIGZhc3RDaGVj
a1JpZ2h0bW9zdFNlbGVjdG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCosIFZp
c2l0ZWRNYXRjaFR5cGUpOworICAgIHN0YXRpYyBib29sIGNvbW1vblBzZXVkb0NsYXNzU2VsZWN0
b3JNYXRjaGVzKGNvbnN0IEVsZW1lbnQqLCBjb25zdCBDU1NTZWxlY3RvciosIFZpc2l0ZWRNYXRj
aFR5cGUpOwogCiAgICAgYm9vbCBtX3N0cmljdFBhcnNpbmc7CiAgICAgYm9vbCBtX2RvY3VtZW50
SXNIVE1MOwpAQCAtMTIxLDEzICsxMjIsNiBAQCBpbmxpbmUgYm9vbCBTZWxlY3RvckNoZWNrZXI6
OmlzQ29tbW9uUHNldWRvQ2xhc3NTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsZQogICAg
ICAgICB8fCBwc2V1ZG9UeXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Gb2N1czsKIH0KIAotaW5s
aW5lIGJvb2wgU2VsZWN0b3JDaGVja2VyOjptYXRjaGVzRm9jdXNQc2V1ZG9DbGFzcyhjb25zdCBF
bGVtZW50KiBlbGVtZW50KSBjb25zdAotewotICAgIGlmIChJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmZvcmNlUHNldWRvU3RhdGUoY29uc3RfY2FzdDxFbGVtZW50Kj4oZWxlbWVudCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9Gb2N1cykpCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBl
bGVtZW50LT5mb2N1c2VkKCkgJiYgaXNGcmFtZUZvY3VzZWQoZWxlbWVudCk7Ci19Ci0KIGlubGlu
ZSBib29sIFNlbGVjdG9yQ2hlY2tlcjo6dGFnTWF0Y2hlcyhjb25zdCBFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdRTmFtZSkKIHsKICAgICBpZiAodGFnUU5hbWUgPT0g
YW55UU5hbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcAppbmRleCAxODI5MGYz
ODU2NDg5NTM3NmU1ODk2YWNhMjQwYTgwMDc3MjYyNzNjLi5mODk2NDM0OTNmZjBiMDNhZTJlZTc2
NmI1NjVkMjBlMjhlNmY2OTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCkBA
IC0yMjgsNyArMjI4LDYgQEAgU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlcihEb2N1bWVudCog
ZG9jdW1lbnQsIGJvb2wgbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzKQogICAgIDogbV9tYXRjaGVk
UHJvcGVydGllc0NhY2hlQWRkaXRpb25zU2luY2VMYXN0U3dlZXAoMCkKICAgICAsIG1fbWF0Y2hl
ZFByb3BlcnRpZXNDYWNoZVN3ZWVwVGltZXIodGhpcywgJlN0eWxlUmVzb2x2ZXI6OnN3ZWVwTWF0
Y2hlZFByb3BlcnRpZXNDYWNoZSkKICAgICAsIG1fZG9jdW1lbnQoZG9jdW1lbnQpCi0gICAgLCBt
X3NlbGVjdG9yQ2hlY2tlcihkb2N1bWVudCkKICAgICAsIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5
bGVzKG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykKICAgICAsIG1fZm9udFNlbGVjdG9yKENTU0Zv
bnRTZWxlY3Rvcjo6Y3JlYXRlKGRvY3VtZW50KSkKICNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQ
VEFUSU9OKQpAQCAtNTExLDcgKzUxMCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6Y29sbGVjdE1h
dGNoaW5nUnVsZXMoY29uc3QgTWF0Y2hSZXF1ZXN0JiBtYXRjaFJlcXVlc3QsIFJ1bGVSCiAKICAg
ICBpZiAoZWxlbWVudC0+aXNMaW5rKCkpCiAgICAgICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+bGlua1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0Y2hS
ZXF1ZXN0LCBydWxlUmFuZ2UpOwotICAgIGlmIChtX3NlbGVjdG9yQ2hlY2tlci5tYXRjaGVzRm9j
dXNQc2V1ZG9DbGFzcyhlbGVtZW50KSkKKyAgICBpZiAoU2VsZWN0b3JDaGVja2VyOjptYXRjaGVz
Rm9jdXNQc2V1ZG9DbGFzcyhlbGVtZW50KSkKICAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNG
b3JMaXN0KG1hdGNoUmVxdWVzdC5ydWxlU2V0LT5mb2N1c1BzZXVkb0NsYXNzUnVsZXMoKSwgbWF0
Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9yTGlzdCht
YXRjaFJlcXVlc3QucnVsZVNldC0+dGFnUnVsZXMoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgp
KSwgbWF0Y2hSZXF1ZXN0LCBydWxlUmFuZ2UpOwogICAgIGNvbGxlY3RNYXRjaGluZ1J1bGVzRm9y
TGlzdChtYXRjaFJlcXVlc3QucnVsZVNldC0+dW5pdmVyc2FsUnVsZXMoKSwgbWF0Y2hSZXF1ZXN0
LCBydWxlUmFuZ2UpOwpAQCAtNTQxLDcgKzU0MCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6c29y
dEFuZFRyYW5zZmVyTWF0Y2hlZFJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQpCiAKICAgICBzb3J0
TWF0Y2hlZFJ1bGVzKCk7CiAKLSAgICBpZiAobV9zZWxlY3RvckNoZWNrZXIubW9kZSgpID09IFNl
bGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKSB7CisgICAgaWYgKHN0YXRlLm1vZGUgPT0g
U2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpIHsKICAgICAgICAgaWYgKCFzdGF0ZS5y
dWxlTGlzdCkKICAgICAgICAgICAgIHN0YXRlLnJ1bGVMaXN0ID0gU3RhdGljQ1NTUnVsZUxpc3Q6
OmNyZWF0ZSgpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RhdGUubWF0Y2hl
ZFJ1bGVzLnNpemUoKTsgKytpKQpAQCAtNzA4LDcgKzcwNyw3IEBAIHZvaWQgU3R5bGVSZXNvbHZl
cjo6Y29sbGVjdE1hdGNoaW5nUnVsZXNGb3JMaXN0KGNvbnN0IFZlY3RvcjxSdWxlRGF0YT4qIHJ1
bGVzLCBjCiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBtYXRjaGluZyBub3JtYWwgcnVsZXMsIHNl
dCBhIHBzZXVkbyBiaXQgaWYKICAgICAgICAgICAgIC8vIHdlIHJlYWxseSBqdXN0IG1hdGNoZWQg
YSBwc2V1ZG8tZWxlbWVudC4KICAgICAgICAgICAgIGlmIChzdGF0ZS5keW5hbWljUHNldWRvICE9
IE5PUFNFVURPICYmIHN0YXRlLnBzZXVkb1N0eWxlID09IE5PUFNFVURPKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKG1fc2VsZWN0b3JDaGVja2VyLm1vZGUoKSA9PSBTZWxlY3RvckNoZWNrZXI6OkNv
bGxlY3RpbmdSdWxlcykgeworICAgICAgICAgICAgICAgIGlmIChzdGF0ZS5tb2RlID09IFNlbGVj
dG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTWF0Y2hSdWxlKGNvb2tpZSwgZmFsc2UpOwogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CkBAIC05MDQsMTEgKzkw
MywxMSBAQCBib29sIFN0eWxlUmVzb2x2ZXI6OnN0eWxlU2hhcmluZ0NhbmRpZGF0ZU1hdGNoZXNS
dWxlU2V0KFJ1bGVTZXQqIHJ1bGVTZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3N0
YXRlLm1hdGNoZWRSdWxlcy5jbGVhcigpOwogCi0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9k
ZShTZWxlY3RvckNoZWNrZXI6OlNoYXJpbmdSdWxlcyk7CisgICAgbV9zdGF0ZS5tb2RlID0gU2Vs
ZWN0b3JDaGVja2VyOjpTaGFyaW5nUnVsZXM7CiAgICAgaW50IGZpcnN0UnVsZUluZGV4ID0gLTEs
IGxhc3RSdWxlSW5kZXggPSAtMTsKICAgICBSdWxlUmFuZ2UgcnVsZVJhbmdlKGZpcnN0UnVsZUlu
ZGV4LCBsYXN0UnVsZUluZGV4KTsKICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlcyhNYXRjaFJlcXVl
c3QocnVsZVNldCksIHJ1bGVSYW5nZSk7Ci0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9kZShT
ZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKTsKKyAgICBtX3N0YXRlLm1vZGUgPSBTZWxl
Y3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlOwogICAgIGlmIChtX3N0YXRlLm1hdGNoZWRSdWxl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBtX3N0YXRlLm1hdGNoZWRS
dWxlcy5jbGVhcigpOwpAQCAtMTE5MCw3ICsxMTg5LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjpt
YXRjaFVBUnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCkKICAgICBtYXRjaFVBUnVsZXMocmVzdWx0
LCB1c2VyQWdlbnRTdHlsZVNoZWV0KTsKIAogICAgIC8vIEluIHF1aXJrcyBtb2RlLCB3ZSBtYXRj
aCBydWxlcyBmcm9tIHRoZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4KLSAgICBpZiAoIW1fc2Vs
ZWN0b3JDaGVja2VyLnN0cmljdFBhcnNpbmcoKSkKKyAgICBpZiAoZG9jdW1lbnQoKS0+aW5RdWly
a3NNb2RlKCkpCiAgICAgICAgIG1hdGNoVUFSdWxlcyhyZXN1bHQsIENTU0RlZmF1bHRTdHlsZVNo
ZWV0czo6ZGVmYXVsdFF1aXJrc1N0eWxlKTsKIAogICAgIC8vIElmIGRvY3VtZW50IHVzZXMgdmll
dyBzb3VyY2Ugc3R5bGVzIChpbiB2aWV3IHNvdXJjZSBtb2RlIG9yIGluIHhtbCB2aWV3ZXIgbW9k
ZSksIHRoZW4gd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdmlldyBzb3VyY2Ugc3R5bGUgc2hlZXQu
CkBAIC0xNzgyLDcgKzE3ODEsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVzdFJlbmRlclN0
eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eQogICAgICAgICAv
LyBwcm9wZXJ0eS4KICAgICAgICAgLy8gU2l0ZXMgYWxzbyBjb21tb25seSB1c2UgZGlzcGxheTpp
bmxpbmUvYmxvY2sgb24gPHRkPnMgYW5kIDx0YWJsZT5zLiBJbiBxdWlya3MgbW9kZSB3ZSBmb3Jj
ZQogICAgICAgICAvLyB0aGVzZSB0YWdzIHRvIHJldGFpbiB0aGVpciBkaXNwbGF5IHR5cGVzLgot
ICAgICAgICBpZiAoIW1fc2VsZWN0b3JDaGVja2VyLnN0cmljdFBhcnNpbmcoKSAmJiBlKSB7Cisg
ICAgICAgIGlmIChkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSAmJiBlKSB7CiAgICAgICAgICAg
ICBpZiAoZS0+aGFzVGFnTmFtZSh0ZFRhZykpIHsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0
RGlzcGxheShUQUJMRV9DRUxMKTsKICAgICAgICAgICAgICAgICBzdHlsZS0+c2V0RmxvYXRpbmco
Tm9GbG9hdCk7CkBAIC0xODI5LDcgKzE4MjgsNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFkanVz
dFJlbmRlclN0eWxlKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eQog
CiAgICAgICAgIC8vIEFic29sdXRlL2ZpeGVkIHBvc2l0aW9uZWQgZWxlbWVudHMsIGZsb2F0aW5n
IGVsZW1lbnRzIGFuZCB0aGUgZG9jdW1lbnQgZWxlbWVudCBuZWVkIGJsb2NrLWxpa2Ugb3V0c2lk
ZSBkaXNwbGF5LgogICAgICAgICBpZiAoc3R5bGUtPmhhc091dE9mRmxvd1Bvc2l0aW9uKCkgfHwg
c3R5bGUtPmlzRmxvYXRpbmcoKSB8fCAoZSAmJiBlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKSA9PSBlKSkKLSAgICAgICAgICAgIHN0eWxlLT5zZXREaXNwbGF5KGVxdWl2YWxlbnRCbG9j
a0Rpc3BsYXkoc3R5bGUtPmRpc3BsYXkoKSwgc3R5bGUtPmlzRmxvYXRpbmcoKSwgbV9zZWxlY3Rv
ckNoZWNrZXIuc3RyaWN0UGFyc2luZygpKSk7CisgICAgICAgICAgICBzdHlsZS0+c2V0RGlzcGxh
eShlcXVpdmFsZW50QmxvY2tEaXNwbGF5KHN0eWxlLT5kaXNwbGF5KCksIHN0eWxlLT5pc0Zsb2F0
aW5nKCksICFkb2N1bWVudCgpLT5pblF1aXJrc01vZGUoKSkpOwogCiAgICAgICAgIC8vIEZJWE1F
OiBEb24ndCBzdXBwb3J0IHRoaXMgbXV0YXRpb24gZm9yIHBzZXVkbyBzdHlsZXMgbGlrZSBmaXJz
dC1sZXR0ZXIgb3IgZmlyc3QtbGluZSwgc2luY2UgaXQncyBub3QgY29tcGxldGVseQogICAgICAg
ICAvLyBjbGVhciBob3cgdGhhdCBzaG91bGQgd29yay4KQEAgLTE4NTksNyArMTg1OCw3IEBAIHZv
aWQgU3R5bGVSZXNvbHZlcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBS
ZW5kZXJTdHlsZSogcGFyZW50U3R5CiAKICAgICAgICAgaWYgKGlzRGlzcGxheUZsZXhpYmxlQm94
KHBhcmVudFN0eWxlLT5kaXNwbGF5KCkpKSB7CiAgICAgICAgICAgICBzdHlsZS0+c2V0RmxvYXRp
bmcoTm9GbG9hdCk7Ci0gICAgICAgICAgICBzdHlsZS0+c2V0RGlzcGxheShlcXVpdmFsZW50Qmxv
Y2tEaXNwbGF5KHN0eWxlLT5kaXNwbGF5KCksIHN0eWxlLT5pc0Zsb2F0aW5nKCksIG1fc2VsZWN0
b3JDaGVja2VyLnN0cmljdFBhcnNpbmcoKSkpOworICAgICAgICAgICAgc3R5bGUtPnNldERpc3Bs
YXkoZXF1aXZhbGVudEJsb2NrRGlzcGxheShzdHlsZS0+ZGlzcGxheSgpLCBzdHlsZS0+aXNGbG9h
dGluZygpLCAhZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCkpKTsKICAgICAgICAgfQogCiAjaWYg
RU5BQkxFKERJQUxPR19FTEVNRU5UKQpAQCAtMjA3OCw3ICsyMDc3LDcgQEAgUGFzc1JlZlB0cjxD
U1NSdWxlTGlzdD4gU3R5bGVSZXNvbHZlcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxl
bWVudCogZSwgUHMKICAgICBpZiAoIWUgfHwgIWUtPmRvY3VtZW50KCktPmhhdmVTdHlsZXNoZWV0
c0xvYWRlZCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1fc2VsZWN0b3JDaGVja2VyLnNl
dE1vZGUoU2VsZWN0b3JDaGVja2VyOjpDb2xsZWN0aW5nUnVsZXMpOworICAgIG1fc3RhdGUubW9k
ZSA9IFNlbGVjdG9yQ2hlY2tlcjo6Q29sbGVjdGluZ1J1bGVzOwogCiAgICAgaW5pdEVsZW1lbnQo
ZSk7CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCAwLCBwc2V1ZG9JZCk7CkBAIC0yMTAyLDcg
KzIxMDEsNyBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBTdHlsZVJlc29sdmVyOjpwc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQcwogICAgICAgICBtX3N0YXRlLnNhbWVP
cmlnaW5Pbmx5ID0gZmFsc2U7CiAgICAgfQogCi0gICAgbV9zZWxlY3RvckNoZWNrZXIuc2V0TW9k
ZShTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKTsKKyAgICBtX3N0YXRlLm1vZGUgPSBT
ZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlOwogCiAgICAgcmV0dXJuIG1fc3RhdGUucnVs
ZUxpc3QucmVsZWFzZSgpOwogfQpAQCAtMjEyNywxNSArMjEyNiwxNyBAQCBpbmxpbmUgYm9vbCBT
dHlsZVJlc29sdmVyOjpydWxlTWF0Y2hlcyhjb25zdCBSdWxlRGF0YSYgcnVsZURhdGEsIGNvbnN0
IENvbnRhaW5lcgogICAgICAgICBpZiAoIVNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrUmlnaHRt
b3N0QXR0cmlidXRlU2VsZWN0b3Ioc3RhdGUuZWxlbWVudCwgcnVsZURhdGEuc2VsZWN0b3IoKSkp
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgcmV0dXJuIG1fc2VsZWN0b3JD
aGVja2VyLmZhc3RDaGVjayhydWxlRGF0YS5zZWxlY3RvcigpLCBzdGF0ZS5lbGVtZW50KTsKKyAg
ICAgICAgcmV0dXJuIFNlbGVjdG9yQ2hlY2tlcjo6ZmFzdENoZWNrKHJ1bGVEYXRhLnNlbGVjdG9y
KCksIHN0YXRlLmVsZW1lbnQpOwogICAgIH0KIAogICAgIC8vIFNsb3cgcGF0aC4KKyAgICBTZWxl
Y3RvckNoZWNrZXIgc2VsZWN0b3JDaGVja2VyKGRvY3VtZW50KCkpOworICAgIHNlbGVjdG9yQ2hl
Y2tlci5zZXRNb2RlKHN0YXRlLm1vZGUpOwogICAgIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JD
aGVja2luZ0NvbnRleHQgY29udGV4dChydWxlRGF0YS5zZWxlY3RvcigpLCBzdGF0ZS5lbGVtZW50
LCBTZWxlY3RvckNoZWNrZXI6OlZpc2l0ZWRNYXRjaEVuYWJsZWQpOwogICAgIGNvbnRleHQuZWxl
bWVudFN0eWxlID0gc3RhdGUuc3R5bGUuZ2V0KCk7CiAgICAgY29udGV4dC5zY29wZSA9IHNjb3Bl
OwogICAgIGNvbnRleHQucHNldWRvU3R5bGUgPSBzdGF0ZS5wc2V1ZG9TdHlsZTsKLSAgICBTZWxl
Y3RvckNoZWNrZXI6Ok1hdGNoIG1hdGNoID0gbV9zZWxlY3RvckNoZWNrZXIubWF0Y2goY29udGV4
dCwgc3RhdGUuZHluYW1pY1BzZXVkbywgRE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5KCkpOwor
ICAgIFNlbGVjdG9yQ2hlY2tlcjo6TWF0Y2ggbWF0Y2ggPSBzZWxlY3RvckNoZWNrZXIubWF0Y2go
Y29udGV4dCwgc3RhdGUuZHluYW1pY1BzZXVkbywgRE9NU2libGluZ1RyYXZlcnNhbFN0cmF0ZWd5
KCkpOwogICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2hlcykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChzdGF0ZS5wc2V1ZG9TdHlsZSAhPSBOT1BT
RVVETyAmJiBzdGF0ZS5wc2V1ZG9TdHlsZSAhPSBzdGF0ZS5keW5hbWljUHNldWRvKQpAQCAtMjE1
MCw4ICsyMTUxLDkgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjaGVja1JlZ2lvblNlbGVjdG9yKGNv
bnN0IENTU1NlbGVjdG9yKiByZWdpb25TZWxlY3RvciwgRWxlbWUKIAogICAgIG1fc3RhdGUucHNl
dWRvU3R5bGUgPSBOT1BTRVVETzsKIAorICAgIFNlbGVjdG9yQ2hlY2tlciBzZWxlY3RvckNoZWNr
ZXIoZG9jdW1lbnQoKSk7CiAgICAgZm9yIChjb25zdCBDU1NTZWxlY3RvciogcyA9IHJlZ2lvblNl
bGVjdG9yOyBzOyBzID0gQ1NTU2VsZWN0b3JMaXN0OjpuZXh0KHMpKQotICAgICAgICBpZiAobV9z
ZWxlY3RvckNoZWNrZXIubWF0Y2hlcyhzLCByZWdpb25FbGVtZW50KSkKKyAgICAgICAgaWYgKHNl
bGVjdG9yQ2hlY2tlci5tYXRjaGVzKHMsIHJlZ2lvbkVsZW1lbnQpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
aAppbmRleCA4NGMzY2QxZmMwMzdkYWIwZGZkNzVhOGZmZDdkOGI5YTVjNDk3M2Y4Li5kMDA5ZGIw
OGVkYzIxOGI3NDFmNTViYWVlNTE3ZTQzYjQyYjE5MjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmgKQEAgLTQ0Myw2ICs0NDMsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgZWxlbWVudExp
bmtTdGF0ZShOb3RJbnNpZGVMaW5rKQogICAgICAgICAsIGRpc3RyaWJ1dGVkVG9JbnNlcnRpb25Q
b2ludChmYWxzZSkKICAgICAgICAgLCBlbGVtZW50QWZmZWN0ZWRCeUNsYXNzUnVsZXMoZmFsc2Up
CisgICAgICAgICwgbW9kZShTZWxlY3RvckNoZWNrZXI6OlJlc29sdmluZ1N0eWxlKQogICAgICAg
ICAsIGFwcGx5UHJvcGVydHlUb1JlZ3VsYXJTdHlsZSh0cnVlKQogICAgICAgICAsIGFwcGx5UHJv
cGVydHlUb1Zpc2l0ZWRMaW5rU3R5bGUoZmFsc2UpCiAjaWYgRU5BQkxFKENTU19TSEFERVJTKQpA
QCAtNDc2LDYgKzQ3Nyw4IEBAIHB1YmxpYzoKIAogICAgICAgICBQc2V1ZG9JZCBkeW5hbWljUHNl
dWRvOwogCisgICAgICAgIFNlbGVjdG9yQ2hlY2tlcjo6TW9kZSBtb2RlOworCiAgICAgICAgIC8v
IEEgYnVmZmVyIHVzZWQgdG8gaG9sZCB0aGUgc2V0IG9mIG1hdGNoZWQgcnVsZXMgZm9yIGFuIGVs
ZW1lbnQsCiAgICAgICAgIC8vIGFuZCBhIHRlbXBvcmFyeSBidWZmZXIgdXNlZCBmb3IgbWVyZ2Ug
c29ydGluZy4KICAgICAgICAgVmVjdG9yPGNvbnN0IFJ1bGVEYXRhKiwgMzI+IG1hdGNoZWRSdWxl
czsKQEAgLTU2OSwxMSArNTcyLDYgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8UmVuZGVyU3R5bGU+
IG1fcm9vdERlZmF1bHRTdHlsZTsKIAogICAgIERvY3VtZW50KiBtX2RvY3VtZW50OwotICAgIC8v
IEZJWE1FOiBNYWtlIFNlbGVjdG9yQ2hlY2tlciBhbiBvbi1zdGFjayBvYmplY3QgYW5kCi0gICAg
Ly8gbW92ZSBzZWxlY3RvckNoZWNrZXIubW9kZSgpIHRvIFN0YXRlLgotICAgIC8vIHNlbGVjdG9y
Q2hlY2tlci5zdHJpbmdQYXJzaW5nKCkgY2FuIGJlIHJlcGxhY2VkIHdpdGgKLSAgICAvLyAhZG9j
dW1lbnQuaW5RdWlya3NNb2RlKCkuCi0gICAgU2VsZWN0b3JDaGVja2VyIG1fc2VsZWN0b3JDaGVj
a2VyOwogICAgIFNlbGVjdG9yRmlsdGVyIG1fc2VsZWN0b3JGaWx0ZXI7CiAKICAgICBib29sIG1f
bWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>