<?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>75378</bug_id>
          
          <creation_ts>2011-12-29 22:26:48 -0800</creation_ts>
          <short_desc>Web Inspector: introduce &quot;source&quot; column in the CSS profiler.</short_desc>
          <delta_ts>2012-01-11 07:15:08 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>me</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>528076</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-29 22:26:48 -0800</bug_when>
    <thetext>Otherwise, I can&apos;t jump to the rule definition and fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528079</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-29 22:47:12 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Otherwise, I can&apos;t jump to the rule definition and fix it.

Good idea. As per the ChangeLog comment, multiple rules with the same selectorText are merged into one entry, so there&apos;s no good universal way to bind them to a source location. Suggestions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528081</commentid>
    <comment_count>2</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-29 22:49:29 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; (In reply to comment #0)
&gt; &gt; Otherwise, I can&apos;t jump to the rule definition and fix it.
&gt; 
&gt; Good idea. As per the ChangeLog comment, multiple rules with the same selectorText are merged into one entry, so there&apos;s no good universal way to bind them to a source location. Suggestions?

I would stack them and make the row a bit taller:

selector      source
------------------
.foo,         foo.css:15
.bar          bar.css:25
------------------
.baz          baz.css:11
------------------
...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528082</commentid>
    <comment_count>3</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-29 22:50:15 -0800</bug_when>
    <thetext>Scratch that...

&gt; selector      source
&gt; ------------------
&gt; .foo           foo.css:15
&gt;                  bar.css:25
&gt; ------------------
&gt; .baz          baz.css:11
&gt; ------------------
&gt; ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528128</commentid>
    <comment_count>4</comment_count>
      <attachid>120795</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-30 06:06:57 -0800</bug_when>
    <thetext>Created attachment 120795
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528130</commentid>
    <comment_count>5</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-30 06:13:33 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Created an attachment (id=120795) [details]
&gt; Patch

EWS Mac builder currently not available</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528132</commentid>
    <comment_count>6</comment_count>
      <attachid>120797</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-12-30 06:25:14 -0800</bug_when>
    <thetext>Created attachment 120797
[PATCH] Enable ellipsis for long source links, fix leftmost statusBarItems position (heapshot button removed recently)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530107</commentid>
    <comment_count>7</comment_count>
      <attachid>120797</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-05 01:52:04 -0800</bug_when>
    <thetext>Comment on attachment 120797
[PATCH] Enable ellipsis for long source links, fix leftmost statusBarItems position (heapshot button removed recently)

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

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:103
&gt; +    typedef std::pair&lt;String, unsigned&gt; SelectorLocation;

Is it time for SelectorProfile to move into its own file.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:152
&gt; +inline bool SelectorProfile::isRegularRule(const CSSStyleRule* rule)

You should not need to inline heavy methods.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:154
&gt; +    CSSStyleSheet* parentStyleSheet = rule-&gt;parentStyleSheet();

This logic looks familiar. InspectorCSSAgent::detectOrigin ?

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:165
&gt; +inline String SelectorProfile::sourceURL(const CSSStyleRule* rule)

ditto: no need to inline, looks like the logic could be reused.

&gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:189
&gt; +    RuleMatchingStatsMap::iterator statsByLocationIt = m_ruleMatchingStats.find(m_currentMatchData.selector);

Why did this change? It looks like a lot of boilerplate code. Could it be that you&apos;ve chosen a wrong model for storing the data here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530108</commentid>
    <comment_count>8</comment_count>
      <attachid>120797</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-05 01:53:23 -0800</bug_when>
    <thetext>Comment on attachment 120797
[PATCH] Enable ellipsis for long source links, fix leftmost statusBarItems position (heapshot button removed recently)

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

&gt; Source/WebCore/inspector/front-end/profilesPanel.css:191
&gt; +    color: white;

color: white should apply to all columns, why only &gt; a?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530158</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-05 03:38:37 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 120797 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120797&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/front-end/profilesPanel.css:191
&gt; &gt; +    color: white;
&gt; 
&gt; color: white should apply to all columns, why only &gt; a?

Selected TD color is set up in dataGrid.css but A does not inherit this as it has the a:-webkit-any-link rule in the user agent stylesheet (blue), so it is roughly the same color as the selected row background.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530165</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-05 03:49:44 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 120797 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=120797&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:103
&gt; &gt; +    typedef std::pair&lt;String, unsigned&gt; SelectorLocation;
&gt; 
&gt; Is it time for SelectorProfile to move into its own file.

This is not going to grow due to the following comments.

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:152
&gt; &gt; +inline bool SelectorProfile::isRegularRule(const CSSStyleRule* rule)
&gt; 
&gt; You should not need to inline heavy methods.

It is no longer used, thanks to the fact that I made use of InspectorDOMAgent::documentURLString(). sourceURL() can be inlined (it only has one call site.)

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:154
&gt; &gt; +    CSSStyleSheet* parentStyleSheet = rule-&gt;parentStyleSheet();
&gt; 
&gt; This logic looks familiar. InspectorCSSAgent::detectOrigin ?

Yeah, it&apos;s that the algo requires the document which is retrieved from the agent instance, which does not help in this case.

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:165
&gt; &gt; +inline String SelectorProfile::sourceURL(const CSSStyleRule* rule)
&gt; 
&gt; ditto: no need to inline, looks like the logic could be reused.

Yes, will reuse.

&gt; &gt; Source/WebCore/inspector/InspectorCSSAgent.cpp:189
&gt; &gt; +    RuleMatchingStatsMap::iterator statsByLocationIt = m_ruleMatchingStats.find(m_currentMatchData.selector);
&gt; 
&gt; Why did this change? It looks like a lot of boilerplate code. Could it be that you&apos;ve chosen a wrong model for storing the data here?

We used to coalesce rule stats by selector in the backend (yet we&apos;ve always had enough data to collect all the stats rule-wise.) Now we split the selector-wise statistics by location (sourceURL + sourceLine) to avoid linear location lookup among the entries for a particular selector. Since we don&apos;t need this two-layer mapping in the protocol (and in the frontend to represent the data,) we flatten the second-level map down. Is this wrong?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532981</commentid>
    <comment_count>11</comment_count>
      <attachid>121829</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-10 05:10:43 -0800</bug_when>
    <thetext>Created attachment 121829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533862</commentid>
    <comment_count>12</comment_count>
      <attachid>121829</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-01-11 06:54:48 -0800</bug_when>
    <thetext>Comment on attachment 121829
Patch

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

&gt; Source/WebCore/inspector/Inspector.json:1632
&gt; +                    { &quot;name&quot;: &quot;sourceURL&quot;, &quot;type&quot;: &quot;string&quot;, &quot;description&quot;: &quot;URL of the resource containing the corresponding rule.&quot; },

url

&gt; Source/WebCore/inspector/Inspector.json:1633
&gt; +                    { &quot;name&quot;: &quot;sourceLine&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;Selector line number in the resource for the corresponding rule.&quot; },

lineNumber</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533874</commentid>
    <comment_count>13</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-01-11 07:15:08 -0800</bug_when>
    <thetext>Committed r104710: &lt;http://trac.webkit.org/changeset/104710&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120795</attachid>
            <date>2011-12-30 06:06:57 -0800</date>
            <delta_ts>2011-12-30 06:24:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75378-20111230180654.patch</filename>
            <type>text/plain</type>
            <size>20167</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRkMDQ3ZTZjODdmMjBh
YTFhYjQxY2JjZTc3ZDFhNjQ5MjkxN2U0ZS4uMzkyYzExM2E3MGY5MWZkYjAwYjIzMjNjZjE1Mjdk
YTQ0MjRkMGZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDExLTEyLTMwICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogaW50cm9kdWNlICJzb3VyY2UiIGNvbHVtbiBpbiB0aGUgQ1NTIHByb2ZpbGVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzNzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSdWxlcyBhcmUgbm8g
bG9uZ2VyIG1lcmdlZCBieSB0aGVpciBzZWxlY3RvcnMgYnV0IGFyZSBzaG93biBvbmUgcGVyIHBy
b2ZpbGUgZW50cnksIHdpdGggYSBsaW5rIHRvCisgICAgICAgIHRoZWlyIHNlbGVjdG9yIGluIHRo
ZSBzb3VyY2Ugd2hlbmV2ZXIgdGhlIGxhdHRlciBpcyBhdmFpbGFibGUuCisKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OnNvdXJj
ZUxpbmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JQcm9maWxlOjppc1JlZ3VsYXJSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJv
ZmlsZTo6c291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6c3Rh
cnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0
b3JUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRjaFJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxQcm9jZXNzUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1
bGVMaXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5j
cmVhdGVDZWxsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlw
ZS5fY3JlYXRlUHJvZmlsZU5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUuc291cmNlQ29tcGFyYXRvcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3Nv
cnRQcm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL3Byb2ZpbGVzUGFuZWwu
Y3NzOgorICAgICAgICAoLmRhdGEtZ3JpZDpmb2N1cyB0ci5zZWxlY3RlZCAuc291cmNlLWNvbHVt
biA+IGEpOgorCiAyMDExLTEyLTI5ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBlbmFibGUgZG9jay10by1yaWdodCB2aWV3IChz
dGlsbCBuZWVkIGVtYmVkZGVycyB0byBzdXBwb3J0IGl0KS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1
bGUuaAppbmRleCAyMmFkZDQ3YzQ3ODNjNjUyMGRmZTRmNTlmYTU3ZWI2NmUxNmM0MGI1Li43M2My
NmRlMmJhZmExMjU1OGEzZTQ1NTFiYTM2ODJiMWNkOTllNmVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlUnVsZS5oCkBAIC01NSw3ICs1NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgYWRkU3VicmVz
b3VyY2VTdHlsZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mIHVybHMpOwogCi0gICAgaW50IHNvdXJj
ZUxpbmUoKSB7IHJldHVybiBtX3NvdXJjZUxpbmU7IH0KKyAgICBpbnQgc291cmNlTGluZSgpIGNv
bnN0IHsgcmV0dXJuIG1fc291cmNlTGluZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgQ1NTU3R5bGVS
dWxlKENTU1N0eWxlU2hlZXQqIHBhcmVudCwgaW50IHNvdXJjZUxpbmUsIENTU1J1bGU6OlR5cGUg
PSBDU1NSdWxlOjpTVFlMRV9SVUxFKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgppbmRleCAxODE3ZDZiYjY2NGY3OTYzN2M5NGUwNGJiMTJiYjUzOTgyNTMzOGZlLi5iYzJm
MzAyYWFhNjEyOGRjNTk5ZDZjMjRmZjVjOGIxMTc0MjlmYzgxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNjI1LDEzICsxNjI1LDIzIEBACiAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkNTUyBtZWRpYSBxdWVyeSBkZXNjcmlwdG9yLiIKICAgICAg
ICAgICAgIH0sCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgImlkIjogIlNlbGVjdG9y
UHJvZmlsZUVudHJ5IiwKKyAgICAgICAgICAgICAgICAiaWQiOiAiU2VsZWN0b3JQcm9maWxlRW50
cnlNYXAiLAogICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCiAgICAgICAgICAgICAg
ICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VsZWN0
b3IiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yLiIgfSwK
LSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ0aW1lIiwgInR5cGUiOiAibnVtYmVyIiwg
ImRlc2NyaXB0aW9uIjogIlRvdGFsIHRpbWUgdGhpcyBzZWxlY3RvciBoYW5kbGluZyBjb250cmli
dXRlZCB0byB0aGUgYnJvd3NlciBydW5uaW5nIHRpbWUgZHVyaW5nIHByb2ZpbGluZyAoaW4gbWls
bGlzZWNvbmRzLikiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiaGl0Q291bnQi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiB0aW1lcyB0aGlz
IHNlbGVjdG9yIHdhcyBjb25zaWRlcmVkIGEgY2FuZGlkYXRlIGZvciBtYXRjaGluZyBhZ2FpbnN0
IERPTSBlbGVtZW50cy4iIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWF0Y2hD
b3VudCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHRpbWVz
IHRoaXMgc2VsZWN0b3IgYWN0dWFsbHkgbWF0Y2hlZCBhIERPTSBlbGVtZW50LiIgfQorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImRhdGEiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6
IHsgIiRyZWYiOiAiU2VsZWN0b3JQcm9maWxlUnVsZUVudHJ5IiB9LCAiZGVzY3JpcHRpb24iOiAi
UnVsZSBlbnRyaWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBzZWxlY3Rvci4iIH0KKyAgICAgICAg
ICAgICAgICBdLAorICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDU1Mgc2VsZWN0b3Ig
cHJvZmlsZSBlbnRyeSBtYXAgaG9sZGluZyBwcm9maWxlIGRhdGEgY29ycmVzcG9uZGluZyB0byB0
aGUgc2FtZSBzZWxlY3Rvci4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICJpZCI6ICJTZWxlY3RvclByb2ZpbGVSdWxlRW50cnkiLAorICAgICAgICAgICAg
ICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVVJMIiwgInR5cGUiOiAic3RyaW5n
IiwgImRlc2NyaXB0aW9uIjogIlVSTCBvZiB0aGUgZmlsZSBob2xkaW5nIHRoZSBjb3JyZXNwb25k
aW5nIHJ1bGUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNvdXJjZUxpbmUi
LCAidHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIlNlbGVjdG9yIGxpbmUgbnVtYmVy
IGluIHRoZSBmaWxlIGZvciB0aGUgY29ycmVzcG9uZGluZyBydWxlLiIgfSwKKyAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJ0aW1lIiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0aW9u
IjogIlRvdGFsIHRpbWUgdGhpcyBydWxlIGhhbmRsaW5nIGNvbnRyaWJ1dGVkIHRvIHRoZSBicm93
c2VyIHJ1bm5pbmcgdGltZSBkdXJpbmcgcHJvZmlsaW5nIChpbiBtaWxsaXNlY29uZHMuKSIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoaXRDb3VudCIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHRpbWVzIHRoaXMgcnVsZSB3YXMgY29uc2lk
ZXJlZCBhIGNhbmRpZGF0ZSBmb3IgbWF0Y2hpbmcgYWdhaW5zdCBET00gZWxlbWVudHMuIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1hdGNoQ291bnQiLCAidHlwZSI6ICJpbnRl
Z2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiB0aW1lcyB0aGlzIHJ1bGUgYWN0dWFsbHkg
bWF0Y2hlZCBhIERPTSBlbGVtZW50LiIgfQogICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkNTUyBzZWxlY3RvciBwcm9maWxlIGVudHJ5LiIKICAgICAg
ICAgICAgIH0sCkBAIC0xNjQwLDcgKzE2NTAsNyBAQAogICAgICAgICAgICAgICAgICJ0eXBlIjog
Im9iamVjdCIsCiAgICAgICAgICAgICAgICAgInByb3BlcnRpZXMiOiBbCiAgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAidG90YWxUaW1lIiwgInR5cGUiOiAibnVtYmVyIiwgImRlc2NyaXB0
aW9uIjogIlRvdGFsIHByb2Nlc3NpbmcgdGltZSBmb3IgYWxsIHNlbGVjdG9ycyBpbiB0aGUgcHJv
ZmlsZSAoaW4gbWlsbGlzZWNvbmRzLikiIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZGF0YSIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJTZWxlY3RvclBy
b2ZpbGVFbnRyeSIgfSwgImRlc2NyaXB0aW9uIjogIkNTUyBzZWxlY3RvciBwcm9maWxlIGVudHJp
ZXMuIiB9CisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogImFy
cmF5IiwgIml0ZW1zIjogeyAiJHJlZiI6ICJTZWxlY3RvclByb2ZpbGVFbnRyeU1hcCIgfSwgImRl
c2NyaXB0aW9uIjogIkNTUyBzZWxlY3RvciBwcm9maWxlIGVudHJpZXMuIiB9CiAgICAgICAgICAg
ICAgICAgXQogICAgICAgICAgICAgfQogICAgICAgICBdLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggODc1NGExYjMyZGUyZTkyNzIxZDAy
N2VhN2Q4NmRjYzNlYmEyZjBmZS4uNzRlODYwMGVmZTA2MDEzMzkyNmRmNzJmYTc0YjhlN2FjZjVk
ZjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC05NCwxOCArOTQsMjUgQEAgcHVibGljOgogCiAgICAgZG91YmxlIHRvdGFsTWF0Y2hp
bmdUaW1lTXMoKSBjb25zdCB7IHJldHVybiBtX3RvdGFsTWF0Y2hpbmdUaW1lTXM7IH0KIAotICAg
IHZvaWQgc3RhcnRTZWxlY3Rvcihjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHN0YXJ0U2VsZWN0
b3IoY29uc3QgQ1NTU3R5bGVSdWxlKik7CiAgICAgdm9pZCBjb21taXRTZWxlY3Rvcihib29sKTsK
ICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yVGltZSgpOwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiB0b0luc3BlY3Rvck9iamVjdCgpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFJ1bGVNYXRjaGluZ1N0YXRzPiBSdWxlTWF0Y2hpbmdTdGF0c01h
cDsKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxTdHJpbmcsIHVuc2lnbmVkPiBTZWxlY3RvckxvY2F0
aW9uOworICAgIHR5cGVkZWYgSGFzaE1hcDxTZWxlY3RvckxvY2F0aW9uLCBSdWxlTWF0Y2hpbmdT
dGF0cz4gUnVsZU1hdGNoaW5nU3RhdHNCeUxvY2F0aW9uOworICAgIHR5cGVkZWYgSGFzaE1hcDxT
dHJpbmcsIFJ1bGVNYXRjaGluZ1N0YXRzQnlMb2NhdGlvbj4gUnVsZU1hdGNoaW5nU3RhdHNNYXA7
CiAgICAgc3RydWN0IFJ1bGVNYXRjaERhdGEgewogICAgICAgICBTdHJpbmcgc2VsZWN0b3I7Cisg
ICAgICAgIFN0cmluZyB1cmw7CisgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CiAgICAgICAg
IGRvdWJsZSBzdGFydFRpbWU7CiAgICAgfTsKIAorICAgIHN0YXRpYyBib29sIGlzUmVndWxhclJ1
bGUoY29uc3QgQ1NTU3R5bGVSdWxlKik7CisgICAgc3RhdGljIFN0cmluZyBzb3VyY2VVUkwoY29u
c3QgQ1NTU3R5bGVSdWxlKik7CisKICAgICBkb3VibGUgbV90b3RhbE1hdGNoaW5nVGltZU1zOwog
ICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFwIG1fcnVsZU1hdGNoaW5nU3RhdHM7CiAgICAgUnVsZU1h
dGNoRGF0YSBtX2N1cnJlbnRNYXRjaERhdGE7CkBAIC0xNDEsOSArMTQ4LDM2IEBAIHN0YXRpYyB1
bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKEluc3BlY3RvckFycmF5KiBwc2V1ZG9DbGFz
c0FycmF5KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIFNlbGVjdG9yUHJv
ZmlsZTo6c3RhcnRTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkKKy8vIHN0YXRp
YworaW5saW5lIGJvb2wgU2VsZWN0b3JQcm9maWxlOjppc1JlZ3VsYXJSdWxlKGNvbnN0IENTU1N0
eWxlUnVsZSogcnVsZSkKK3sKKyAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0ID0g
cnVsZS0+cGFyZW50U3R5bGVTaGVldCgpOworICAgIGlmICghcGFyZW50U3R5bGVTaGVldCkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghcGFyZW50U3R5bGVTaGVldC0+b3duZXJOb2Rl
KCkgJiYgcGFyZW50U3R5bGVTaGVldC0+aHJlZigpLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmIChwYXJlbnRTdHlsZVNoZWV0LT5vd25lck5vZGUoKSAmJiBwYXJlbnRT
dHlsZVNoZWV0LT5vd25lck5vZGUoKS0+bm9kZU5hbWUoKSA9PSAiI2RvY3VtZW50IikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCisvLyBzdGF0aWMKK2lubGlu
ZSBTdHJpbmcgU2VsZWN0b3JQcm9maWxlOjpzb3VyY2VVUkwoY29uc3QgQ1NTU3R5bGVSdWxlKiBy
dWxlKQoreworICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBydWxlLT5wYXJlbnRTdHls
ZVNoZWV0KCk7CisgICAgaWYgKHN0eWxlU2hlZXQpIHsKKyAgICAgICAgaWYgKCFzdHlsZVNoZWV0
LT5maW5hbFVSTCgpLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiBzdHlsZVNoZWV0LT5m
aW5hbFVSTCgpLnN0cmluZygpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yRE9NQWdlbnQ6OmRv
Y3VtZW50VVJMU3RyaW5nKHN0eWxlU2hlZXQtPmZpbmREb2N1bWVudCgpKTsKKyAgICB9CisgICAg
cmV0dXJuIGVtcHR5U3RyaW5nKCk7Cit9CisKK2lubGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6
c3RhcnRTZWxlY3Rvcihjb25zdCBDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7Ci0gICAgbV9jdXJyZW50
TWF0Y2hEYXRhLnNlbGVjdG9yID0gc2VsZWN0b3JUZXh0OworICAgIG1fY3VycmVudE1hdGNoRGF0
YS5zZWxlY3RvciA9IHJ1bGUtPnNlbGVjdG9yVGV4dCgpOworICAgIG1fY3VycmVudE1hdGNoRGF0
YS51cmwgPSBzb3VyY2VVUkwocnVsZSk7CisgICAgbV9jdXJyZW50TWF0Y2hEYXRhLmxpbmVOdW1i
ZXIgPSBydWxlLT5zb3VyY2VMaW5lKCk7CiAgICAgbV9jdXJyZW50TWF0Y2hEYXRhLnN0YXJ0VGlt
ZSA9IFdURjo6Y3VycmVudFRpbWVNUygpOwogfQogCkBAIC0xNTEsNyArMTg1LDExIEBAIGlubGlu
ZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3IoYm9vbCBtYXRjaGVkKQogewog
ICAgIGRvdWJsZSBtYXRjaFRpbWVNcyA9IFdURjo6Y3VycmVudFRpbWVNUygpIC0gbV9jdXJyZW50
TWF0Y2hEYXRhLnN0YXJ0VGltZTsKICAgICBtX3RvdGFsTWF0Y2hpbmdUaW1lTXMgKz0gbWF0Y2hU
aW1lTXM7Ci0gICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IsIGJvb2w+IHJl
c3VsdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYWRkKG1fY3VycmVudE1hdGNoRGF0YS5zZWxlY3Rv
ciwgUnVsZU1hdGNoaW5nU3RhdHMobWF0Y2hUaW1lTXMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOwor
CisgICAgUnVsZU1hdGNoaW5nU3RhdHNNYXA6Oml0ZXJhdG9yIHN0YXRzQnlMb2NhdGlvbkl0ID0g
bV9ydWxlTWF0Y2hpbmdTdGF0cy5maW5kKG1fY3VycmVudE1hdGNoRGF0YS5zZWxlY3Rvcik7Cisg
ICAgaWYgKHN0YXRzQnlMb2NhdGlvbkl0ID09IG1fcnVsZU1hdGNoaW5nU3RhdHMuZW5kKCkpCisg
ICAgICAgIHN0YXRzQnlMb2NhdGlvbkl0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5hZGQobV9jdXJy
ZW50TWF0Y2hEYXRhLnNlbGVjdG9yLCBSdWxlTWF0Y2hpbmdTdGF0c0J5TG9jYXRpb24oKSkuZmly
c3Q7CisgICAgcGFpcjxSdWxlTWF0Y2hpbmdTdGF0c0J5TG9jYXRpb246Oml0ZXJhdG9yLCBib29s
PiByZXN1bHQgPSBzdGF0c0J5TG9jYXRpb25JdC0+c2Vjb25kLmFkZChTZWxlY3RvckxvY2F0aW9u
KG1fY3VycmVudE1hdGNoRGF0YS51cmwsIG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVtYmVyKSwg
UnVsZU1hdGNoaW5nU3RhdHMobWF0Y2hUaW1lTXMsIDEsIG1hdGNoZWQgPyAxIDogMCkpOwogICAg
IGlmICghcmVzdWx0LnNlY29uZCkgewogICAgICAgICByZXN1bHQuZmlyc3QtPnNlY29uZC50b3Rh
bFRpbWUgKz0gbWF0Y2hUaW1lTXM7CiAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLmhpdHMg
Kz0gMTsKQEAgLTE2NCw4ICsyMDIsMTMgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9maWxlOjpj
b21taXRTZWxlY3RvclRpbWUoKQogewogICAgIGRvdWJsZSBwcm9jZXNzaW5nVGltZU1zID0gV1RG
OjpjdXJyZW50VGltZU1TKCkgLSBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1lOwogICAgIG1f
dG90YWxNYXRjaGluZ1RpbWVNcyArPSBwcm9jZXNzaW5nVGltZU1zOwotICAgIFJ1bGVNYXRjaGlu
Z1N0YXRzTWFwOjppdGVyYXRvciBpdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuZmluZChtX2N1cnJl
bnRNYXRjaERhdGEuc2VsZWN0b3IpOwotICAgIGlmIChpdCA9PSBtX3J1bGVNYXRjaGluZ1N0YXRz
LmVuZCgpKQorCisgICAgUnVsZU1hdGNoaW5nU3RhdHNNYXA6Oml0ZXJhdG9yIHN0YXRzQnlMb2Nh
dGlvbkl0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5maW5kKG1fY3VycmVudE1hdGNoRGF0YS5zZWxl
Y3Rvcik7CisgICAgaWYgKHN0YXRzQnlMb2NhdGlvbkl0ID09IG1fcnVsZU1hdGNoaW5nU3RhdHMu
ZW5kKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFJ1bGVNYXRjaGluZ1N0YXRzQnlMb2NhdGlv
bjo6aXRlcmF0b3IgaXQgPSBzdGF0c0J5TG9jYXRpb25JdC0+c2Vjb25kLmZpbmQoU2VsZWN0b3JM
b2NhdGlvbihtX2N1cnJlbnRNYXRjaERhdGEudXJsLCBtX2N1cnJlbnRNYXRjaERhdGEubGluZU51
bWJlcikpOworICAgIGlmIChpdCA9PSBzdGF0c0J5TG9jYXRpb25JdC0+c2Vjb25kLmVuZCgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpdC0+c2Vjb25kLnRvdGFsVGltZSArPSBXVEY6OmN1cnJl
bnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWU7CkBAIC0xNzMsMzIgKzIx
NiwzMyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNlbGVjdG9yVGltZSgp
CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBTZWxlY3RvclByb2ZpbGU6OnRvSW5zcGVj
dG9yT2JqZWN0KCkgY29uc3QKIHsKLSAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IGRhdGEgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7Ci0gICAgZm9yIChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1f
cnVsZU1hdGNoaW5nU3RhdHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5PiBzdGF0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6
U2VsZWN0b3JQcm9maWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0U2VsZWN0b3Io
aXQtPmZpcnN0KQotICAgICAgICAgICAgLnNldFRpbWUoaXQtPnNlY29uZC50b3RhbFRpbWUpCi0g
ICAgICAgICAgICAuc2V0SGl0Q291bnQoaXQtPnNlY29uZC5oaXRzKQotICAgICAgICAgICAgLnNl
dE1hdGNoQ291bnQoaXQtPnNlY29uZC5tYXRjaGVzKTsKLSAgICAgICAgZGF0YS0+cHVzaE9iamVj
dChzdGF0LnJlbGVhc2UoKSk7CisgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzZWxlY3RvclBy
b2ZpbGVEYXRhID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgIGZvciAoUnVsZU1hdGNo
aW5nU3RhdHNNYXA6OmNvbnN0X2l0ZXJhdG9yIHJ1bGVNYXRjaGluZ1N0YXRzSXQgPSBtX3J1bGVN
YXRjaGluZ1N0YXRzLmJlZ2luKCk7IHJ1bGVNYXRjaGluZ1N0YXRzSXQgIT0gbV9ydWxlTWF0Y2hp
bmdTdGF0cy5lbmQoKTsgKytydWxlTWF0Y2hpbmdTdGF0c0l0KSB7CisgICAgICAgIGNvbnN0IFN0
cmluZyYgc2VsZWN0b3IgPSBydWxlTWF0Y2hpbmdTdGF0c0l0LT5maXJzdDsKKyAgICAgICAgY29u
c3QgUnVsZU1hdGNoaW5nU3RhdHNCeUxvY2F0aW9uJiBzdGF0c0J5TG9jYXRpb24gPSBydWxlTWF0
Y2hpbmdTdGF0c0l0LT5zZWNvbmQ7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gc2Vs
ZWN0b3JQcm9maWxlUnVsZUVudHJpZXMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAg
ICAgIGZvciAoUnVsZU1hdGNoaW5nU3RhdHNCeUxvY2F0aW9uOjpjb25zdF9pdGVyYXRvciBzdGF0
c0J5TG9jYXRpb25JdCA9IHN0YXRzQnlMb2NhdGlvbi5iZWdpbigpOyBzdGF0c0J5TG9jYXRpb25J
dCAhPSBzdGF0c0J5TG9jYXRpb24uZW5kKCk7ICsrc3RhdHNCeUxvY2F0aW9uSXQpIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVSdWxlRW50cnk+
IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlUnVsZUVudHJ5OjpjcmVh
dGUoKQorICAgICAgICAgICAgICAgIC5zZXRTb3VyY2VVUkwoc3RhdHNCeUxvY2F0aW9uSXQtPmZp
cnN0LmZpcnN0KQorICAgICAgICAgICAgICAgIC5zZXRTb3VyY2VMaW5lKHN0YXRzQnlMb2NhdGlv
bkl0LT5maXJzdC5zZWNvbmQpCisgICAgICAgICAgICAgICAgLnNldFRpbWUoc3RhdHNCeUxvY2F0
aW9uSXQtPnNlY29uZC50b3RhbFRpbWUpCisgICAgICAgICAgICAgICAgLnNldEhpdENvdW50KHN0
YXRzQnlMb2NhdGlvbkl0LT5zZWNvbmQuaGl0cykKKyAgICAgICAgICAgICAgICAuc2V0TWF0Y2hD
b3VudChzdGF0c0J5TG9jYXRpb25JdC0+c2Vjb25kLm1hdGNoZXMpOworICAgICAgICAgICAgc2Vs
ZWN0b3JQcm9maWxlUnVsZUVudHJpZXMtPnB1c2hPYmplY3QoZW50cnkucmVsZWFzZSgpKTsKKyAg
ICAgICAgfQorICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxl
RW50cnlNYXA+IGVudHJ5TWFwID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50
cnlNYXA6OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0U2VsZWN0b3Ioc2VsZWN0b3IpCisgICAg
ICAgICAgICAuc2V0RGF0YShzZWxlY3RvclByb2ZpbGVSdWxlRW50cmllcyk7CisgICAgICAgIHNl
bGVjdG9yUHJvZmlsZURhdGEtPnB1c2hPYmplY3QoZW50cnlNYXAucmVsZWFzZSgpKTsKICAgICB9
CiAKICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlPiByZXN1bHQg
PSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU6OmNyZWF0ZSgpCiAgICAgICAgIC5z
ZXRUb3RhbFRpbWUodG90YWxNYXRjaGluZ1RpbWVNcygpKQotICAgICAgICAuc2V0RGF0YShkYXRh
KTsKKyAgICAgICAgLnNldERhdGEoc2VsZWN0b3JQcm9maWxlRGF0YSk7CiAgICAgcmV0dXJuIHJl
c3VsdC5yZWxlYXNlKCk7CiB9CiAKIC8vIHN0YXRpYwotQ1NTU3R5bGVTaGVldCogSW5zcGVjdG9y
Q1NTQWdlbnQ6OnBhcmVudFN0eWxlU2hlZXQoQ1NTUnVsZSogcnVsZSkKLXsKLSAgICBpZiAoIXJ1
bGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgcmV0dXJuIHJ1bGUtPnBhcmVudFN0eWxlU2hl
ZXQoKTsKLX0KLQotLy8gc3RhdGljCiBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojph
c0NTU1N0eWxlUnVsZShDU1NSdWxlKiBydWxlKQogewogICAgIGlmICghcnVsZS0+aXNTdHlsZVJ1
bGUoKSkKQEAgLTUyNyw3ICs1NzEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzdG9wU2Vs
ZWN0b3JQcm9maWxlckltcGwoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yTwogCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50Ojp3aWxsTWF0Y2hSdWxlKGNvbnN0IENTU1N0eWxlUnVsZSogcnVs
ZSkKIHsKLSAgICBtX2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPnN0YXJ0U2VsZWN0b3IocnVsZS0+
c2VsZWN0b3JUZXh0KCkpOworICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxl
Y3RvcihydWxlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkTWF0Y2hSdWxlKGJv
b2wgbWF0Y2hlZCkKQEAgLTUzNyw3ICs1ODEsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojpk
aWRNYXRjaFJ1bGUoYm9vbCBtYXRjaGVkKQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp3aWxs
UHJvY2Vzc1J1bGUoY29uc3QgQ1NTU3R5bGVSdWxlKiBydWxlKQogewotICAgIG1fY3VycmVudFNl
bGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3RvcihydWxlLT5zZWxlY3RvclRleHQoKSk7CisgICAg
bV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHJ1bGUpOwogfQogCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaWRQcm9jZXNzUnVsZSgpCkBAIC02ODUsNyArNzI5LDcgQEAg
UGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5zcGVjdG9yQ1NTQWdlbnQ6OmJ1aWxkQXJyYXlG
b3JSdWxlTGlzdChDU1NSdWxlTGlzdCoKICAgICAgICAgaWYgKCFydWxlKQogICAgICAgICAgICAg
Y29udGludWU7CiAKLSAgICAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IGJp
bmRTdHlsZVNoZWV0KHBhcmVudFN0eWxlU2hlZXQocnVsZSkpOworICAgICAgICBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gYmluZFN0eWxlU2hlZXQocnVsZS0+cGFyZW50U3R5bGVT
aGVldCgpKTsKICAgICAgICAgaWYgKHN0eWxlU2hlZXQpCiAgICAgICAgICAgICByZXN1bHQtPnB1
c2hPYmplY3Qoc3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKHJ1bGUpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDg2M2Vm
YzBkNzBjYjVlMTYyNDM0MzZhMGRiMmUwMjlhNTVjNWMyMzAuLjcwYjJkZDkwYTQzNzRlYjBjODJk
NzY3OWY3ODlhYmEyZGNiOWI1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCkBAIC01Nyw3ICs1Nyw2IEBAIGNsYXNzIFNlbGVjdG9yUHJvZmlsZTsK
IGNsYXNzIEluc3BlY3RvckNTU0FnZW50IDogcHVibGljIEluc3BlY3RvckJhc2VBZ2VudDxJbnNw
ZWN0b3JDU1NBZ2VudD4sIHB1YmxpYyBJbnNwZWN0b3JET01BZ2VudDo6RE9NTGlzdGVuZXIgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckNTU0FnZW50KTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgQ1NTU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldChDU1NSdWxlKik7CiAgICAg
c3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1bGUoQ1NTUnVsZSopOwogCiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8SW5zcGVjdG9yQ1NTQWdlbnQ+IGNyZWF0ZShJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3Rv
ckRPTUFnZW50KiBkb21BZ2VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAzYmJmM2EwZTNjNGRkYTQ3NDlhZmJiY2Q0YmU0NDQ4
Y2VmODQ2YWU4Li43YjI1NDgxNmU1ZDhjMWRiNjY1M2EwMDc0ZmFlOGMxYTllNWM5ZDY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBA
IC03MDQsNyArNzA0LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRSdWxlU2VsZWN0
b3IoY29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkLCBjb25zdCBTdHJpbmcKICAgICBDU1NTdHlsZVJ1
bGUqIHJ1bGUgPSBydWxlRm9ySWQoaWQpOwogICAgIGlmICghcnVsZSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBJbnNwZWN0b3JDU1NBZ2Vu
dDo6cGFyZW50U3R5bGVTaGVldChydWxlKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0
ID0gcnVsZS0+cGFyZW50U3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCB8fCAhZW5z
dXJlUGFyc2VkRGF0YVJlYWR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVW
aWV3LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclBy
b2ZpbGVWaWV3LmpzCmluZGV4IGIwODBkOWYxZWQ1Zjc4MTM1ODk4MzM4MGI0NmEzMWY4Y2Y4NDJi
NDYuLmE1MTdkYzI1YTYwYWUyZjQyNTRkZGU5NTZlNGM2NThjYjQ5NzIzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmll
dy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9y
UHJvZmlsZVZpZXcuanMKQEAgLTUyLDYgKzUyLDI1IEBAIFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
ckRhdGFHcmlkTm9kZS5wcm90b3R5cGUgPSB7CiAgICAgZ2V0IHJhd0RhdGEoKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7CisgICAgfSwKKworICAgIGNyZWF0ZUNlbGw6IGZ1bmN0
aW9uKGNvbHVtbklkZW50aWZpZXIpCisgICAgeworICAgICAgICB2YXIgY2VsbCA9IFdlYkluc3Bl
Y3Rvci5EYXRhR3JpZE5vZGUucHJvdG90eXBlLmNyZWF0ZUNlbGwuY2FsbCh0aGlzLCBjb2x1bW5J
ZGVudGlmaWVyKTsKKyAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgPT09ICJzZWxlY3RvciIg
JiYgY2VsbC5maXJzdENoaWxkKSB7CisgICAgICAgICAgICBjZWxsLmZpcnN0Q2hpbGQudGl0bGUg
PSB0aGlzLnJhd0RhdGEuc2VsZWN0b3I7CisgICAgICAgICAgICByZXR1cm4gY2VsbDsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChjb2x1bW5JZGVudGlmaWVyICE9PSAic291cmNlIikKKyAgICAg
ICAgICAgIHJldHVybiBjZWxsOworCisgICAgICAgIGNlbGwucmVtb3ZlQ2hpbGRyZW4oKTsKKwor
ICAgICAgICBpZiAodGhpcy5yYXdEYXRhLnNvdXJjZVVSTCkKKyAgICAgICAgICAgIGNlbGwuYXBw
ZW5kQ2hpbGQoV2ViSW5zcGVjdG9yLmxpbmtpZnlSZXNvdXJjZUFzTm9kZSh0aGlzLnJhd0RhdGEu
c291cmNlVVJMLCB0aGlzLnJhd0RhdGEuc291cmNlTGluZSkpOworCisgICAgICAgIHJldHVybiBj
ZWxsOwogICAgIH0KIH0KIApAQCAtNzAsMTEgKzg5LDEzIEBAIFdlYkluc3BlY3Rvci5DU1NTZWxl
Y3RvclByb2ZpbGVWaWV3ID0gZnVuY3Rpb24ocHJvZmlsZSkKIAogICAgIHRoaXMuc2hvd1RpbWVB
c1BlcmNlbnQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygic2VsZWN0b3JQ
cm9maWxlclNob3dUaW1lQXNQZXJjZW50IiwgdHJ1ZSk7CiAKLSAgICB2YXIgY29sdW1ucyA9IHsg
InNlbGVjdG9yIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RvciIpLCB3
aWR0aDogIjY1MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICB2YXIgY29sdW1ucyA9IHsgInNl
bGVjdG9yIjogeyB0aXRsZTogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RvciIpLCB3aWR0
aDogIjU1MHB4Iiwgc29ydGFibGU6IHRydWUgfSwKKyAgICAgICAgICAgICAgICAgICAgInNvdXJj
ZSI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU291cmNlIiksIHdpZHRoOiAiMTAw
cHgiLCBzb3J0YWJsZTogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICAidGltZSI6IHsgdGl0
bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVG90YWwiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydDog
ImRlc2NlbmRpbmciLCBzb3J0YWJsZTogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICAibWF0
Y2hlcyI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWF0Y2hlcyIpLCB3aWR0aDog
IjcycHgiLCBzb3J0YWJsZTogdHJ1ZSB9IH07CiAKICAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdl
Ykluc3BlY3Rvci5EYXRhR3JpZChjb2x1bW5zKTsKKyAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQu
YWRkU3R5bGVDbGFzcygic2VsZWN0b3ItcHJvZmlsZS12aWV3Iik7CiAgICAgdGhpcy5kYXRhR3Jp
ZC5hZGRFdmVudExpc3RlbmVyKCJzb3J0aW5nIGNoYW5nZWQiLCB0aGlzLl9zb3J0UHJvZmlsZSwg
dGhpcyk7CiAgICAgdGhpcy5kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
ZG93biIsIHRoaXMuX21vdXNlRG93bkluRGF0YUdyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAg
dGhpcy5kYXRhR3JpZC5zaG93KHRoaXMuZWxlbWVudCk7CkBAIC0xMTUsOSArMTM2LDE2IEBAIFdl
Ykluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4gPSBbXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBkYXRhLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBkYXRhW2ldLnRpbWVQZXJjZW50ID0g
ZGF0YVtpXS50aW1lICogMTAwIC8gdGhpcy5wcm9maWxlLnRvdGFsVGltZTsKLSAgICAgICAgICAg
IHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZSh0aGlz
LCBkYXRhW2ldKTsKLSAgICAgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbi5wdXNoKG5vZGUp
OworICAgICAgICAgICAgdmFyIHJ1bGVFbnRyaWVzID0gZGF0YVtpXS5kYXRhOworICAgICAgICAg
ICAgdmFyIHRvdGFsU2VsZWN0b3JUaW1lID0gMDsKKyAgICAgICAgICAgIHZhciB0b3RhbE1hdGNo
ZXMgPSAwOworICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gZGF0YVtpXS5zZWxlY3RvcjsKKyAg
ICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcnVsZUVudHJpZXMubGVuZ3RoOyArK2opIHsK
KyAgICAgICAgICAgICAgICBydWxlRW50cmllc1tqXS5zZWxlY3RvciA9IHNlbGVjdG9yOworICAg
ICAgICAgICAgICAgIHJ1bGVFbnRyaWVzW2pdLnRpbWVQZXJjZW50ID0gcnVsZUVudHJpZXNbal0u
dGltZSAqIDEwMCAvIHRoaXMucHJvZmlsZS50b3RhbFRpbWU7CisgICAgICAgICAgICAgICAgdmFy
IG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlKHRoaXMsIHJ1
bGVFbnRyaWVzW2pdKTsKKyAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4ucHVz
aChub2RlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCiAKQEAgLTE3NSw2ICsy
MDMsMTYgQEAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJvdG90eXBlID0g
ewogICAgICAgICAgICAgcmV0dXJuIHNvcnRBc2NlbmRpbmcgPyAtcmVzdWx0IDogcmVzdWx0Owog
ICAgICAgICB9CiAKKyAgICAgICAgZnVuY3Rpb24gc291cmNlQ29tcGFyYXRvcihhLCBiKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgYVJhd0RhdGEgPSBhLnJhd0RhdGE7CisgICAgICAgICAg
ICB2YXIgYlJhd0RhdGEgPSBiLnJhd0RhdGE7CisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYlJh
d0RhdGEuc291cmNlVVJMLmxvY2FsZUNvbXBhcmUoYVJhd0RhdGEuc291cmNlVVJMKTsKKyAgICAg
ICAgICAgIGlmICghcmVzdWx0KQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGJSYXdEYXRhLnNv
dXJjZUxpbmUgLSBhUmF3RGF0YS5zb3VyY2VMaW5lOworICAgICAgICAgICAgcmV0dXJuIHNvcnRB
c2NlbmRpbmcgPyAtcmVzdWx0IDogcmVzdWx0OworICAgICAgICB9CisKICAgICAgICAgZnVuY3Rp
b24gdGltZUNvbXBhcmF0b3IoYSwgYikKICAgICAgICAgewogICAgICAgICAgICAgY29uc3QgcmVz
dWx0ID0gYi5yYXdEYXRhLnRpbWUgLSBhLnJhd0RhdGEudGltZTsKQEAgLTE5OCw2ICsyMzYsOSBA
QCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIGNhc2UgInNlbGVjdG9yIjoKICAgICAgICAgICAgIGNvbXBhcmF0b3IgPSBzZWxlY3RvckNv
bXBhcmF0b3I7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAic291cmNlIjoKKyAg
ICAgICAgICAgIGNvbXBhcmF0b3IgPSBzb3VyY2VDb21wYXJhdG9yOworICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLnByb2ZpbGUuY2hpbGRyZW4uc29ydChjb21w
YXJhdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
cHJvZmlsZXNQYW5lbC5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3By
b2ZpbGVzUGFuZWwuY3NzCmluZGV4IDEwZjZiNDlmZWRmMzdiNWQ3NTg1ZWE5ZmZhM2NhZTgxYzdh
MjNiZGQuLmE5N2E3MDg3NWYwMDBjZDliMjU4MzQ4OWYwZTE0N2E1M2E4NGVlZGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcHJvZmlsZXNQYW5lbC5jc3MK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9wcm9maWxlc1BhbmVsLmNz
cwpAQCAtMTg2LDMgKzE4Niw3IEBACiBib2R5LmluYWN0aXZlIC5wcm9maWxlLWxhdW5jaGVyLXZp
ZXctY29udGVudCBidXR0b24ucnVubmluZzpub3QoLnN0YXR1cy1iYXItaXRlbSkgewogICAgIGNv
bG9yOiByZ2IoMjIwLCAxMzAsIDEzMCk7CiB9CisKKy5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2VsZWN0
ZWQgLnNvdXJjZS1jb2x1bW4gPiBhIHsKKyAgICBjb2xvcjogd2hpdGU7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120797</attachid>
            <date>2011-12-30 06:25:14 -0800</date>
            <delta_ts>2012-01-10 05:10:34 -0800</delta_ts>
            <desc>[PATCH] Enable ellipsis for long source links, fix leftmost statusBarItems position (heapshot button removed recently)</desc>
            <filename>bug-75378-20111230182512.patch</filename>
            <type>text/plain</type>
            <size>21106</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzODM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDRkMDQ3ZTZjODdmMjBh
YTFhYjQxY2JjZTc3ZDFhNjQ5MjkxN2U0ZS4uNjBjNWFhNjg1ZmZlMjMwNDY2MzExODBkZmE3ODdk
YzAyNmFlOGUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDExLTEyLTMwICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogaW50cm9kdWNlICJzb3VyY2UiIGNvbHVtbiBpbiB0aGUgQ1NTIHByb2ZpbGVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzNzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSdWxlcyBhcmUgbm8g
bG9uZ2VyIG1lcmdlZCBieSB0aGVpciBzZWxlY3RvcnMgYnV0IGFyZSBzaG93biBvbmUgcGVyIHBy
b2ZpbGUgZW50cnksIHdpdGggYSBsaW5rIHRvCisgICAgICAgIHRoZWlyIHNlbGVjdG9yIGluIHRo
ZSBzb3VyY2Ugd2hlbmV2ZXIgdGhlIGxhdHRlciBpcyBhdmFpbGFibGUuCisKKyAgICAgICAgKiBj
c3MvQ1NTU3R5bGVSdWxlLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVJ1bGU6OnNvdXJj
ZUxpbmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0
b3JQcm9maWxlOjppc1JlZ3VsYXJSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJv
ZmlsZTo6c291cmNlVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6c3Rh
cnRTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2ZpbGU6OmNvbW1pdFNl
bGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0
b3JUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JP
YmplY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRjaFJ1
bGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxQcm9jZXNzUnVs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1
bGVMaXN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5j
cmVhdGVDZWxsKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlw
ZS5fY3JlYXRlUHJvZmlsZU5vZGVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3Rv
clByb2ZpbGVWaWV3LnByb3RvdHlwZS5fc29ydFByb2ZpbGUuc291cmNlQ29tcGFyYXRvcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3Nv
cnRQcm9maWxlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuc2lkZWJh
clJlc2l6ZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvcHJvZmlsZXNQYW5lbC5j
c3M6CisgICAgICAgICguZGF0YS1ncmlkOmZvY3VzIHRyLnNlbGVjdGVkIC5zb3VyY2UtY29sdW1u
ID4gYSk6CisKIDIwMTEtMTItMjkgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGVuYWJsZSBkb2NrLXRvLXJpZ2h0IHZpZXcgKHN0
aWxsIG5lZWQgZW1iZWRkZXJzIHRvIHN1cHBvcnQgaXQpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVs
ZS5oCmluZGV4IDIyYWRkNDdjNDc4M2M2NTIwZGZlNGY1OWZhNTdlYjY2ZTE2YzQwYjUuLjczYzI2
ZGUyYmFmYTEyNTU4YTNlNDU1MWJhMzY4MmIxY2Q5OWU2ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVSdWxlLmgKQEAgLTU1LDcgKzU1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBhZGRTdWJyZXNv
dXJjZVN0eWxlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYgdXJscyk7CiAKLSAgICBpbnQgc291cmNl
TGluZSgpIHsgcmV0dXJuIG1fc291cmNlTGluZTsgfQorICAgIGludCBzb3VyY2VMaW5lKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VMaW5lOyB9CiAKIHByb3RlY3RlZDoKICAgICBDU1NTdHlsZVJ1
bGUoQ1NTU3R5bGVTaGVldCogcGFyZW50LCBpbnQgc291cmNlTGluZSwgQ1NTUnVsZTo6VHlwZSA9
IENTU1J1bGU6OlNUWUxFX1JVTEUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCmluZGV4IDE4MTdkNmJiNjY0Zjc5NjM3Yzk0ZTA0YmIxMmJiNTM5ODI1MzM4ZmUuLmJjMmYz
MDJhYWE2MTI4ZGM1OTlkNmMyNGZmNWM4YjExNzQyOWZjODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTE2MjUsMTMgKzE2MjUsMjMgQEAKICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIG1lZGlhIHF1ZXJ5IGRlc2NyaXB0b3IuIgogICAgICAg
ICAgICAgfSwKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAiaWQiOiAiU2VsZWN0b3JQ
cm9maWxlRW50cnkiLAorICAgICAgICAgICAgICAgICJpZCI6ICJTZWxlY3RvclByb2ZpbGVFbnRy
eU1hcCIsCiAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAg
ICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzZWxlY3Rv
ciIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJDU1Mgc2VsZWN0b3IuIiB9LAot
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAi
ZGVzY3JpcHRpb24iOiAiVG90YWwgdGltZSB0aGlzIHNlbGVjdG9yIGhhbmRsaW5nIGNvbnRyaWJ1
dGVkIHRvIHRoZSBicm93c2VyIHJ1bm5pbmcgdGltZSBkdXJpbmcgcHJvZmlsaW5nIChpbiBtaWxs
aXNlY29uZHMuKSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJoaXRDb3VudCIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHRpbWVzIHRoaXMg
c2VsZWN0b3Igd2FzIGNvbnNpZGVyZWQgYSBjYW5kaWRhdGUgZm9yIG1hdGNoaW5nIGFnYWluc3Qg
RE9NIGVsZW1lbnRzLiIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJtYXRjaENv
dW50IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgdGltZXMg
dGhpcyBzZWxlY3RvciBhY3R1YWxseSBtYXRjaGVkIGEgRE9NIGVsZW1lbnQuIiB9CisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YSIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjog
eyAiJHJlZiI6ICJTZWxlY3RvclByb2ZpbGVSdWxlRW50cnkiIH0sICJkZXNjcmlwdGlvbiI6ICJS
dWxlIGVudHJpZXMgY29ycmVzcG9uZGluZyB0byB0aGlzIHNlbGVjdG9yLiIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIkNTUyBzZWxlY3RvciBw
cm9maWxlIGVudHJ5IG1hcCBob2xkaW5nIHByb2ZpbGUgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRo
ZSBzYW1lIHNlbGVjdG9yLiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgImlkIjogIlNlbGVjdG9yUHJvZmlsZVJ1bGVFbnRyeSIsCisgICAgICAgICAgICAg
ICAgInR5cGUiOiAib2JqZWN0IiwKKyAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VVUkwiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiVVJMIG9mIHRoZSBmaWxlIGhvbGRpbmcgdGhlIGNvcnJlc3BvbmRp
bmcgcnVsZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlTGluZSIs
ICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiU2VsZWN0b3IgbGluZSBudW1iZXIg
aW4gdGhlIGZpbGUgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHJ1bGUuIiB9LAorICAgICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRpb24i
OiAiVG90YWwgdGltZSB0aGlzIHJ1bGUgaGFuZGxpbmcgY29udHJpYnV0ZWQgdG8gdGhlIGJyb3dz
ZXIgcnVubmluZyB0aW1lIGR1cmluZyBwcm9maWxpbmcgKGluIG1pbGxpc2Vjb25kcy4pIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhpdENvdW50IiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgdGltZXMgdGhpcyBydWxlIHdhcyBjb25zaWRl
cmVkIGEgY2FuZGlkYXRlIGZvciBtYXRjaGluZyBhZ2FpbnN0IERPTSBlbGVtZW50cy4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWF0Y2hDb3VudCIsICJ0eXBlIjogImludGVn
ZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHRpbWVzIHRoaXMgcnVsZSBhY3R1YWxseSBt
YXRjaGVkIGEgRE9NIGVsZW1lbnQuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAg
ICAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yIHByb2ZpbGUgZW50cnkuIgogICAgICAg
ICAgICAgfSwKQEAgLTE2NDAsNyArMTY1MCw3IEBACiAgICAgICAgICAgICAgICAgInR5cGUiOiAi
b2JqZWN0IiwKICAgICAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJ0b3RhbFRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3JpcHRp
b24iOiAiVG90YWwgcHJvY2Vzc2luZyB0aW1lIGZvciBhbGwgc2VsZWN0b3JzIGluIHRoZSBwcm9m
aWxlIChpbiBtaWxsaXNlY29uZHMuKSIgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6
ICJkYXRhIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlNlbGVjdG9yUHJv
ZmlsZUVudHJ5IiB9LCAiZGVzY3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yIHByb2ZpbGUgZW50cmll
cy4iIH0KKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJkYXRhIiwgInR5cGUiOiAiYXJy
YXkiLCAiaXRlbXMiOiB7ICIkcmVmIjogIlNlbGVjdG9yUHJvZmlsZUVudHJ5TWFwIiB9LCAiZGVz
Y3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yIHByb2ZpbGUgZW50cmllcy4iIH0KICAgICAgICAgICAg
ICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA4NzU0YTFiMzJkZTJlOTI3MjFkMDI3
ZWE3ZDg2ZGNjM2ViYTJmMGZlLi43NGU4NjAwZWZlMDYwMTMzOTI2ZGY3MmZhNzRiOGU3YWNmNWRm
NDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTk0LDE4ICs5NCwyNSBAQCBwdWJsaWM6CiAKICAgICBkb3VibGUgdG90YWxNYXRjaGlu
Z1RpbWVNcygpIGNvbnN0IHsgcmV0dXJuIG1fdG90YWxNYXRjaGluZ1RpbWVNczsgfQogCi0gICAg
dm9pZCBzdGFydFNlbGVjdG9yKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc3RhcnRTZWxlY3Rv
cihjb25zdCBDU1NTdHlsZVJ1bGUqKTsKICAgICB2b2lkIGNvbW1pdFNlbGVjdG9yKGJvb2wpOwog
ICAgIHZvaWQgY29tbWl0U2VsZWN0b3JUaW1lKCk7CiAgICAgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHRvSW5zcGVjdG9yT2JqZWN0KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRl
ZiBIYXNoTWFwPFN0cmluZywgUnVsZU1hdGNoaW5nU3RhdHM+IFJ1bGVNYXRjaGluZ1N0YXRzTWFw
OworICAgIHR5cGVkZWYgc3RkOjpwYWlyPFN0cmluZywgdW5zaWduZWQ+IFNlbGVjdG9yTG9jYXRp
b247CisgICAgdHlwZWRlZiBIYXNoTWFwPFNlbGVjdG9yTG9jYXRpb24sIFJ1bGVNYXRjaGluZ1N0
YXRzPiBSdWxlTWF0Y2hpbmdTdGF0c0J5TG9jYXRpb247CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgUnVsZU1hdGNoaW5nU3RhdHNCeUxvY2F0aW9uPiBSdWxlTWF0Y2hpbmdTdGF0c01hcDsK
ICAgICBzdHJ1Y3QgUnVsZU1hdGNoRGF0YSB7CiAgICAgICAgIFN0cmluZyBzZWxlY3RvcjsKKyAg
ICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgdW5zaWduZWQgbGluZU51bWJlcjsKICAgICAgICAg
ZG91YmxlIHN0YXJ0VGltZTsKICAgICB9OwogCisgICAgc3RhdGljIGJvb2wgaXNSZWd1bGFyUnVs
ZShjb25zdCBDU1NTdHlsZVJ1bGUqKTsKKyAgICBzdGF0aWMgU3RyaW5nIHNvdXJjZVVSTChjb25z
dCBDU1NTdHlsZVJ1bGUqKTsKKwogICAgIGRvdWJsZSBtX3RvdGFsTWF0Y2hpbmdUaW1lTXM7CiAg
ICAgUnVsZU1hdGNoaW5nU3RhdHNNYXAgbV9ydWxlTWF0Y2hpbmdTdGF0czsKICAgICBSdWxlTWF0
Y2hEYXRhIG1fY3VycmVudE1hdGNoRGF0YTsKQEAgLTE0MSw5ICsxNDgsMzYgQEAgc3RhdGljIHVu
c2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJyYXkqIHBzZXVkb0NsYXNz
QXJyYXkpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9m
aWxlOjpzdGFydFNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3JUZXh0KQorLy8gc3RhdGlj
CitpbmxpbmUgYm9vbCBTZWxlY3RvclByb2ZpbGU6OmlzUmVndWxhclJ1bGUoY29uc3QgQ1NTU3R5
bGVSdWxlKiBydWxlKQoreworICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQgPSBy
dWxlLT5wYXJlbnRTdHlsZVNoZWV0KCk7CisgICAgaWYgKCFwYXJlbnRTdHlsZVNoZWV0KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKCFwYXJlbnRTdHlsZVNoZWV0LT5vd25lck5vZGUo
KSAmJiBwYXJlbnRTdHlsZVNoZWV0LT5ocmVmKCkuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgaWYgKHBhcmVudFN0eWxlU2hlZXQtPm93bmVyTm9kZSgpICYmIHBhcmVudFN0
eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5ub2RlTmFtZSgpID09ICIjZG9jdW1lbnQiKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vIHN0YXRpYworaW5saW5l
IFN0cmluZyBTZWxlY3RvclByb2ZpbGU6OnNvdXJjZVVSTChjb25zdCBDU1NTdHlsZVJ1bGUqIHJ1
bGUpCit7CisgICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IHJ1bGUtPnBhcmVudFN0eWxl
U2hlZXQoKTsKKyAgICBpZiAoc3R5bGVTaGVldCkgeworICAgICAgICBpZiAoIXN0eWxlU2hlZXQt
PmZpbmFsVVJMKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIHN0eWxlU2hlZXQtPmZp
bmFsVVJMKCkuc3RyaW5nKCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3JET01BZ2VudDo6ZG9j
dW1lbnRVUkxTdHJpbmcoc3R5bGVTaGVldC0+ZmluZERvY3VtZW50KCkpOworICAgIH0KKyAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKworaW5saW5lIHZvaWQgU2VsZWN0b3JQcm9maWxlOjpz
dGFydFNlbGVjdG9yKGNvbnN0IENTU1N0eWxlUnVsZSogcnVsZSkKIHsKLSAgICBtX2N1cnJlbnRN
YXRjaERhdGEuc2VsZWN0b3IgPSBzZWxlY3RvclRleHQ7CisgICAgbV9jdXJyZW50TWF0Y2hEYXRh
LnNlbGVjdG9yID0gcnVsZS0+c2VsZWN0b3JUZXh0KCk7CisgICAgbV9jdXJyZW50TWF0Y2hEYXRh
LnVybCA9IHNvdXJjZVVSTChydWxlKTsKKyAgICBtX2N1cnJlbnRNYXRjaERhdGEubGluZU51bWJl
ciA9IHJ1bGUtPnNvdXJjZUxpbmUoKTsKICAgICBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1l
ID0gV1RGOjpjdXJyZW50VGltZU1TKCk7CiB9CiAKQEAgLTE1MSw3ICsxODUsMTEgQEAgaW5saW5l
IHZvaWQgU2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3Rvcihib29sIG1hdGNoZWQpCiB7CiAg
ICAgZG91YmxlIG1hdGNoVGltZU1zID0gV1RGOjpjdXJyZW50VGltZU1TKCkgLSBtX2N1cnJlbnRN
YXRjaERhdGEuc3RhcnRUaW1lOwogICAgIG1fdG90YWxNYXRjaGluZ1RpbWVNcyArPSBtYXRjaFRp
bWVNczsKLSAgICBwYWlyPFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjppdGVyYXRvciwgYm9vbD4gcmVz
dWx0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5hZGQobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9y
LCBSdWxlTWF0Y2hpbmdTdGF0cyhtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7CisK
KyAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3Igc3RhdHNCeUxvY2F0aW9uSXQgPSBt
X3J1bGVNYXRjaGluZ1N0YXRzLmZpbmQobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yKTsKKyAg
ICBpZiAoc3RhdHNCeUxvY2F0aW9uSXQgPT0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5lbmQoKSkKKyAg
ICAgICAgc3RhdHNCeUxvY2F0aW9uSXQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmFkZChtX2N1cnJl
bnRNYXRjaERhdGEuc2VsZWN0b3IsIFJ1bGVNYXRjaGluZ1N0YXRzQnlMb2NhdGlvbigpKS5maXJz
dDsKKyAgICBwYWlyPFJ1bGVNYXRjaGluZ1N0YXRzQnlMb2NhdGlvbjo6aXRlcmF0b3IsIGJvb2w+
IHJlc3VsdCA9IHN0YXRzQnlMb2NhdGlvbkl0LT5zZWNvbmQuYWRkKFNlbGVjdG9yTG9jYXRpb24o
bV9jdXJyZW50TWF0Y2hEYXRhLnVybCwgbV9jdXJyZW50TWF0Y2hEYXRhLmxpbmVOdW1iZXIpLCBS
dWxlTWF0Y2hpbmdTdGF0cyhtYXRjaFRpbWVNcywgMSwgbWF0Y2hlZCA/IDEgOiAwKSk7CiAgICAg
aWYgKCFyZXN1bHQuc2Vjb25kKSB7CiAgICAgICAgIHJlc3VsdC5maXJzdC0+c2Vjb25kLnRvdGFs
VGltZSArPSBtYXRjaFRpbWVNczsKICAgICAgICAgcmVzdWx0LmZpcnN0LT5zZWNvbmQuaGl0cyAr
PSAxOwpAQCAtMTY0LDggKzIwMiwxMyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNv
bW1pdFNlbGVjdG9yVGltZSgpCiB7CiAgICAgZG91YmxlIHByb2Nlc3NpbmdUaW1lTXMgPSBXVEY6
OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWU7CiAgICAgbV90
b3RhbE1hdGNoaW5nVGltZU1zICs9IHByb2Nlc3NpbmdUaW1lTXM7Ci0gICAgUnVsZU1hdGNoaW5n
U3RhdHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5maW5kKG1fY3VycmVu
dE1hdGNoRGF0YS5zZWxlY3Rvcik7Ci0gICAgaWYgKGl0ID09IG1fcnVsZU1hdGNoaW5nU3RhdHMu
ZW5kKCkpCisKKyAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3Igc3RhdHNCeUxvY2F0
aW9uSXQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmZpbmQobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVj
dG9yKTsKKyAgICBpZiAoc3RhdHNCeUxvY2F0aW9uSXQgPT0gbV9ydWxlTWF0Y2hpbmdTdGF0cy5l
bmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUnVsZU1hdGNoaW5nU3RhdHNCeUxvY2F0aW9u
OjppdGVyYXRvciBpdCA9IHN0YXRzQnlMb2NhdGlvbkl0LT5zZWNvbmQuZmluZChTZWxlY3Rvckxv
Y2F0aW9uKG1fY3VycmVudE1hdGNoRGF0YS51cmwsIG1fY3VycmVudE1hdGNoRGF0YS5saW5lTnVt
YmVyKSk7CisgICAgaWYgKGl0ID09IHN0YXRzQnlMb2NhdGlvbkl0LT5zZWNvbmQuZW5kKCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGl0LT5zZWNvbmQudG90YWxUaW1lICs9IFdURjo6Y3VycmVu
dFRpbWVNUygpIC0gbV9jdXJyZW50TWF0Y2hEYXRhLnN0YXJ0VGltZTsKQEAgLTE3MywzMiArMjE2
LDMzIEBAIGlubGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3JUaW1lKCkK
IAogUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0
b3JPYmplY3QoKSBjb25zdAogewotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSA9IElu
c3BlY3RvckFycmF5OjpjcmVhdGUoKTsKLSAgICBmb3IgKFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjpj
b25zdF9pdGVyYXRvciBpdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMuYmVnaW4oKTsgaXQgIT0gbV9y
dWxlTWF0Y2hpbmdTdGF0cy5lbmQoKTsgKytpdCkgewotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxk
ZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk+IHN0YXQgPSBUeXBlQnVpbGRlcjo6Q1NTOjpT
ZWxlY3RvclByb2ZpbGVFbnRyeTo6Y3JlYXRlKCkKLSAgICAgICAgICAgIC5zZXRTZWxlY3Rvcihp
dC0+Zmlyc3QpCi0gICAgICAgICAgICAuc2V0VGltZShpdC0+c2Vjb25kLnRvdGFsVGltZSkKLSAg
ICAgICAgICAgIC5zZXRIaXRDb3VudChpdC0+c2Vjb25kLmhpdHMpCi0gICAgICAgICAgICAuc2V0
TWF0Y2hDb3VudChpdC0+c2Vjb25kLm1hdGNoZXMpOwotICAgICAgICBkYXRhLT5wdXNoT2JqZWN0
KHN0YXQucmVsZWFzZSgpKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHNlbGVjdG9yUHJv
ZmlsZURhdGEgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CisgICAgZm9yIChSdWxlTWF0Y2hp
bmdTdGF0c01hcDo6Y29uc3RfaXRlcmF0b3IgcnVsZU1hdGNoaW5nU3RhdHNJdCA9IG1fcnVsZU1h
dGNoaW5nU3RhdHMuYmVnaW4oKTsgcnVsZU1hdGNoaW5nU3RhdHNJdCAhPSBtX3J1bGVNYXRjaGlu
Z1N0YXRzLmVuZCgpOyArK3J1bGVNYXRjaGluZ1N0YXRzSXQpIHsKKyAgICAgICAgY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciA9IHJ1bGVNYXRjaGluZ1N0YXRzSXQtPmZpcnN0OworICAgICAgICBjb25z
dCBSdWxlTWF0Y2hpbmdTdGF0c0J5TG9jYXRpb24mIHN0YXRzQnlMb2NhdGlvbiA9IHJ1bGVNYXRj
aGluZ1N0YXRzSXQtPnNlY29uZDsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBzZWxl
Y3RvclByb2ZpbGVSdWxlRW50cmllcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKyAgICAg
ICAgZm9yIChSdWxlTWF0Y2hpbmdTdGF0c0J5TG9jYXRpb246OmNvbnN0X2l0ZXJhdG9yIHN0YXRz
QnlMb2NhdGlvbkl0ID0gc3RhdHNCeUxvY2F0aW9uLmJlZ2luKCk7IHN0YXRzQnlMb2NhdGlvbkl0
ICE9IHN0YXRzQnlMb2NhdGlvbi5lbmQoKTsgKytzdGF0c0J5TG9jYXRpb25JdCkgeworICAgICAg
ICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZVJ1bGVFbnRyeT4g
ZW50cnkgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVSdWxlRW50cnk6OmNyZWF0
ZSgpCisgICAgICAgICAgICAgICAgLnNldFNvdXJjZVVSTChzdGF0c0J5TG9jYXRpb25JdC0+Zmly
c3QuZmlyc3QpCisgICAgICAgICAgICAgICAgLnNldFNvdXJjZUxpbmUoc3RhdHNCeUxvY2F0aW9u
SXQtPmZpcnN0LnNlY29uZCkKKyAgICAgICAgICAgICAgICAuc2V0VGltZShzdGF0c0J5TG9jYXRp
b25JdC0+c2Vjb25kLnRvdGFsVGltZSkKKyAgICAgICAgICAgICAgICAuc2V0SGl0Q291bnQoc3Rh
dHNCeUxvY2F0aW9uSXQtPnNlY29uZC5oaXRzKQorICAgICAgICAgICAgICAgIC5zZXRNYXRjaENv
dW50KHN0YXRzQnlMb2NhdGlvbkl0LT5zZWNvbmQubWF0Y2hlcyk7CisgICAgICAgICAgICBzZWxl
Y3RvclByb2ZpbGVSdWxlRW50cmllcy0+cHVzaE9iamVjdChlbnRyeS5yZWxlYXNlKCkpOworICAg
ICAgICB9CisgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVF
bnRyeU1hcD4gZW50cnlNYXAgPSBUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGVFbnRy
eU1hcDo6Y3JlYXRlKCkKKyAgICAgICAgICAgIC5zZXRTZWxlY3RvcihzZWxlY3RvcikKKyAgICAg
ICAgICAgIC5zZXREYXRhKHNlbGVjdG9yUHJvZmlsZVJ1bGVFbnRyaWVzKTsKKyAgICAgICAgc2Vs
ZWN0b3JQcm9maWxlRGF0YS0+cHVzaE9iamVjdChlbnRyeU1hcC5yZWxlYXNlKCkpOwogICAgIH0K
IAogICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3VsdCA9
IFR5cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNl
dFRvdGFsVGltZSh0b3RhbE1hdGNoaW5nVGltZU1zKCkpCi0gICAgICAgIC5zZXREYXRhKGRhdGEp
OworICAgICAgICAuc2V0RGF0YShzZWxlY3RvclByb2ZpbGVEYXRhKTsKICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2UoKTsKIH0KIAogLy8gc3RhdGljCi1DU1NTdHlsZVNoZWV0KiBJbnNwZWN0b3JD
U1NBZ2VudDo6cGFyZW50U3R5bGVTaGVldChDU1NSdWxlKiBydWxlKQotewotICAgIGlmICghcnVs
ZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcnVsZS0+cGFyZW50U3R5bGVTaGVl
dCgpOwotfQotCi0vLyBzdGF0aWMKIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFz
Q1NTU3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUpCiB7CiAgICAgaWYgKCFydWxlLT5pc1N0eWxlUnVs
ZSgpKQpAQCAtNTI3LDcgKzU3MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxl
Y3RvclByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPCiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRjaFJ1bGUoY29uc3QgQ1NTU3R5bGVSdWxlKiBydWxl
KQogewotICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3RvcihydWxlLT5z
ZWxlY3RvclRleHQoKSk7CisgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVj
dG9yKHJ1bGUpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNYXRjaFJ1bGUoYm9v
bCBtYXRjaGVkKQpAQCAtNTM3LDcgKzU4MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZE1hdGNoUnVsZShib29sIG1hdGNoZWQpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxQ
cm9jZXNzUnVsZShjb25zdCBDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7Ci0gICAgbV9jdXJyZW50U2Vs
ZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHJ1bGUtPnNlbGVjdG9yVGV4dCgpKTsKKyAgICBt
X2N1cnJlbnRTZWxlY3RvclByb2ZpbGUtPnN0YXJ0U2VsZWN0b3IocnVsZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFByb2Nlc3NSdWxlKCkKQEAgLTY4NSw3ICs3MjksNyBAQCBQ
YXNzUmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZv
clJ1bGVMaXN0KENTU1J1bGVMaXN0KgogICAgICAgICBpZiAoIXJ1bGUpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gYmlu
ZFN0eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldChydWxlKSk7CisgICAgICAgIEluc3BlY3RvclN0
eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChydWxlLT5wYXJlbnRTdHlsZVNo
ZWV0KCkpOwogICAgICAgICBpZiAoc3R5bGVTaGVldCkKICAgICAgICAgICAgIHJlc3VsdC0+cHVz
aE9iamVjdChzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggODYzZWZj
MGQ3MGNiNWUxNjI0MzQzNmEwZGIyZTAyOWE1NWM1YzIzMC4uNzBiMmRkOTBhNDM3NGViMGM4MmQ3
Njc5Zjc4OWFiYTJkY2I5YjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgU2VsZWN0b3JQcm9maWxlOwog
Y2xhc3MgSW5zcGVjdG9yQ1NTQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3Bl
Y3RvckNTU0FnZW50PiwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciB7CiAg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwogcHVibGljOgotICAg
IHN0YXRpYyBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KENTU1J1bGUqKTsKICAgICBz
dGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlKik7CiAKICAgICBzdGF0
aWMgUGFzc093blB0cjxJbnNwZWN0b3JDU1NBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9y
RE9NQWdlbnQqIGRvbUFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IDNiYmYzYTBlM2M0ZGRhNDc0OWFmYmJjZDRiZTQ0NDhj
ZWY4NDZhZTguLjdiMjU0ODE2ZTVkOGMxZGI2NjUzYTAwNzRmYWU4YzFhOWU1YzlkNjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAg
LTcwNCw3ICs3MDQsNyBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OnNldFJ1bGVTZWxlY3Rv
cihjb25zdCBJbnNwZWN0b3JDU1NJZCYgaWQsIGNvbnN0IFN0cmluZwogICAgIENTU1N0eWxlUnVs
ZSogcnVsZSA9IHJ1bGVGb3JJZChpZCk7CiAgICAgaWYgKCFydWxlKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCA9IEluc3BlY3RvckNTU0FnZW50
OjpwYXJlbnRTdHlsZVNoZWV0KHJ1bGUpOworICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQg
PSBydWxlLT5wYXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKCFzdHlsZVNoZWV0IHx8ICFlbnN1
cmVQYXJzZWREYXRhUmVhZHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJvZmlsZVZp
ZXcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcuanMKaW5kZXggYjA4MGQ5ZjFlZDVmNzgxMzU4OTgzMzgwYjQ2YTMxZjhjZjg0MmI0
Ni4uNTg3MzRlZTU5MDkxN2RlYmMzZmU5YjBhNjE5Y2ZhNWRkMGZiZTlhYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2VsZWN0b3JQ
cm9maWxlVmlldy5qcwpAQCAtNTIsNiArNTIsMjcgQEAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKICAgICBnZXQgcmF3RGF0YSgpCiAgICAgewogICAg
ICAgICByZXR1cm4gdGhpcy5fZGF0YTsKKyAgICB9LAorCisgICAgY3JlYXRlQ2VsbDogZnVuY3Rp
b24oY29sdW1uSWRlbnRpZmllcikKKyAgICB7CisgICAgICAgIHZhciBjZWxsID0gV2ViSW5zcGVj
dG9yLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbC5jYWxsKHRoaXMsIGNvbHVtbklk
ZW50aWZpZXIpOworICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PT0gInNlbGVjdG9yIiAm
JiBjZWxsLmZpcnN0Q2hpbGQpIHsKKyAgICAgICAgICAgIGNlbGwuZmlyc3RDaGlsZC50aXRsZSA9
IHRoaXMucmF3RGF0YS5zZWxlY3RvcjsKKyAgICAgICAgICAgIHJldHVybiBjZWxsOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgIT09ICJzb3VyY2UiKQorICAgICAg
ICAgICAgcmV0dXJuIGNlbGw7CisKKyAgICAgICAgY2VsbC5yZW1vdmVDaGlsZHJlbigpOworCisg
ICAgICAgIGlmICh0aGlzLnJhd0RhdGEuc291cmNlVVJMKSB7CisgICAgICAgICAgICB2YXIgd3Jh
cHBlckRpdiA9IGNlbGwuY3JlYXRlQ2hpbGQoImRpdiIpOworICAgICAgICAgICAgd3JhcHBlckRp
di5hcHBlbmRDaGlsZChXZWJJbnNwZWN0b3IubGlua2lmeVJlc291cmNlQXNOb2RlKHRoaXMucmF3
RGF0YS5zb3VyY2VVUkwsIHRoaXMucmF3RGF0YS5zb3VyY2VMaW5lKSk7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gY2VsbDsKICAgICB9CiB9CiAKQEAgLTcwLDExICs5MSwxMyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldyA9IGZ1bmN0aW9uKHByb2ZpbGUpCiAKICAg
ICB0aGlzLnNob3dUaW1lQXNQZXJjZW50ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNyZWF0ZVNl
dHRpbmcoInNlbGVjdG9yUHJvZmlsZXJTaG93VGltZUFzUGVyY2VudCIsIHRydWUpOwogCi0gICAg
dmFyIGNvbHVtbnMgPSB7ICJzZWxlY3RvciI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmlu
ZygiU2VsZWN0b3IiKSwgd2lkdGg6ICI2NTBweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgdmFy
IGNvbHVtbnMgPSB7ICJzZWxlY3RvciI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
U2VsZWN0b3IiKSwgd2lkdGg6ICI1NTBweCIsIHNvcnRhYmxlOiB0cnVlIH0sCisgICAgICAgICAg
ICAgICAgICAgICJzb3VyY2UiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNvdXJj
ZSIpLCB3aWR0aDogIjEwMHB4Iiwgc29ydGFibGU6IHRydWUgfSwKICAgICAgICAgICAgICAgICAg
ICAgInRpbWUiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRvdGFsIiksIHdpZHRo
OiAiNzJweCIsIHNvcnQ6ICJkZXNjZW5kaW5nIiwgc29ydGFibGU6IHRydWUgfSwKICAgICAgICAg
ICAgICAgICAgICAgIm1hdGNoZXMiOiB7IHRpdGxlOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIk1h
dGNoZXMiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydGFibGU6IHRydWUgfSB9OwogCiAgICAgdGhpcy5k
YXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRGF0YUdyaWQoY29sdW1ucyk7CisgICAgdGhpcy5k
YXRhR3JpZC5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNlbGVjdG9yLXByb2ZpbGUtdmlldyIpOwog
ICAgIHRoaXMuZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcigic29ydGluZyBjaGFuZ2VkIiwgdGhp
cy5fc29ydFByb2ZpbGUsIHRoaXMpOwogICAgIHRoaXMuZGF0YUdyaWQuZWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9tb3VzZURvd25JbkRhdGFHcmlkLmJpbmQodGhp
cyksIHRydWUpOwogICAgIHRoaXMuZGF0YUdyaWQuc2hvdyh0aGlzLmVsZW1lbnQpOwpAQCAtMTE1
LDkgKzEzOCwxNiBAQCBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgdGhpcy5wcm9maWxlLmNoaWxkcmVuID0gW107CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgZGF0YVtp
XS50aW1lUGVyY2VudCA9IGRhdGFbaV0udGltZSAqIDEwMCAvIHRoaXMucHJvZmlsZS50b3RhbFRp
bWU7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXZWJJbnNwZWN0b3IuQ1NTU2VsZWN0b3JE
YXRhR3JpZE5vZGUodGhpcywgZGF0YVtpXSk7Ci0gICAgICAgICAgICB0aGlzLnByb2ZpbGUuY2hp
bGRyZW4ucHVzaChub2RlKTsKKyAgICAgICAgICAgIHZhciBydWxlRW50cmllcyA9IGRhdGFbaV0u
ZGF0YTsKKyAgICAgICAgICAgIHZhciB0b3RhbFNlbGVjdG9yVGltZSA9IDA7CisgICAgICAgICAg
ICB2YXIgdG90YWxNYXRjaGVzID0gMDsKKyAgICAgICAgICAgIHZhciBzZWxlY3RvciA9IGRhdGFb
aV0uc2VsZWN0b3I7CisgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHJ1bGVFbnRyaWVz
Lmxlbmd0aDsgKytqKSB7CisgICAgICAgICAgICAgICAgcnVsZUVudHJpZXNbal0uc2VsZWN0b3Ig
PSBzZWxlY3RvcjsKKyAgICAgICAgICAgICAgICBydWxlRW50cmllc1tqXS50aW1lUGVyY2VudCA9
IHJ1bGVFbnRyaWVzW2pdLnRpbWUgKiAxMDAgLyB0aGlzLnByb2ZpbGUudG90YWxUaW1lOworICAg
ICAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFH
cmlkTm9kZSh0aGlzLCBydWxlRW50cmllc1tqXSk7CisgICAgICAgICAgICAgICAgdGhpcy5wcm9m
aWxlLmNoaWxkcmVuLnB1c2gobm9kZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
LAogCkBAIC0xNzUsNiArMjA1LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVW
aWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJl
c3VsdCA6IHJlc3VsdDsKICAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9uIHNvdXJjZUNvbXBh
cmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGFSYXdEYXRhID0gYS5yYXdE
YXRhOworICAgICAgICAgICAgdmFyIGJSYXdEYXRhID0gYi5yYXdEYXRhOworICAgICAgICAgICAg
dmFyIHJlc3VsdCA9IGJSYXdEYXRhLnNvdXJjZVVSTC5sb2NhbGVDb21wYXJlKGFSYXdEYXRhLnNv
dXJjZVVSTCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBiUmF3RGF0YS5zb3VyY2VMaW5lIC0gYVJhd0RhdGEuc291cmNlTGluZTsKKyAgICAgICAg
ICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKKyAgICAgICAgfQor
CiAgICAgICAgIGZ1bmN0aW9uIHRpbWVDb21wYXJhdG9yKGEsIGIpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIGNvbnN0IHJlc3VsdCA9IGIucmF3RGF0YS50aW1lIC0gYS5yYXdEYXRhLnRpbWU7CkBA
IC0xOTgsNiArMjM4LDkgQEAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJvZmlsZVZpZXcucHJv
dG90eXBlID0gewogICAgICAgICBjYXNlICJzZWxlY3RvciI6CiAgICAgICAgICAgICBjb21wYXJh
dG9yID0gc2VsZWN0b3JDb21wYXJhdG9yOwogICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgInNvdXJjZSI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gc291cmNlQ29tcGFyYXRvcjsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5wcm9maWxlLmNo
aWxkcmVuLnNvcnQoY29tcGFyYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggYzYyZGNjMTUxOTUxOTM1MTdlZjY3
MmI3MGU1MDUwY2FjODU1NmQyYS4uMzcyNWU1ZGYwMTcyNjYzYTViYmFlM2NlMDg1NzBiNWY0ODIz
NTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUHJv
ZmlsZXNQYW5lbC5qcwpAQCAtODE0LDcgKzgxNCw3IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB3aWR0aCA9IGV2ZW50LmRhdGE7
CiAgICAgICAgIC8vIE1pbiB3aWR0aCA9IDxudW1iZXIgb2YgYnV0dG9ucyBvbiB0aGUgbGVmdD4g
KiAzMQotICAgICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVzQmFySXRlbXNDb250YWluZXIuc3R5
bGUubGVmdCA9IE1hdGgubWF4KDYgKiAzMSwgd2lkdGgpICsgInB4IjsKKyAgICAgICAgdGhpcy5w
cm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnN0eWxlLmxlZnQgPSBNYXRoLm1heCg1
ICogMzEsIHdpZHRoKSArICJweCI7CiAgICAgfSwKIAogICAgIHNldFJlY29yZGluZ1Byb2ZpbGU6
IGZ1bmN0aW9uKHByb2ZpbGVUeXBlLCBpc1Byb2ZpbGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvcHJvZmlsZXNQYW5lbC5jc3MgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL3Byb2ZpbGVzUGFuZWwuY3NzCmluZGV4IDEwZjZiNDlm
ZWRmMzdiNWQ3NTg1ZWE5ZmZhM2NhZTgxYzdhMjNiZGQuLmE5N2E3MDg3NWYwMDBjZDliMjU4MzQ4
OWYwZTE0N2E1M2E4NGVlZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvcHJvZmlsZXNQYW5lbC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9wcm9maWxlc1BhbmVsLmNzcwpAQCAtMTg2LDMgKzE4Niw3IEBACiBib2R5Lmlu
YWN0aXZlIC5wcm9maWxlLWxhdW5jaGVyLXZpZXctY29udGVudCBidXR0b24ucnVubmluZzpub3Qo
LnN0YXR1cy1iYXItaXRlbSkgewogICAgIGNvbG9yOiByZ2IoMjIwLCAxMzAsIDEzMCk7CiB9CisK
Ky5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2VsZWN0ZWQgLnNvdXJjZS1jb2x1bW4gPiBhIHsKKyAgICBj
b2xvcjogd2hpdGU7Cit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121829</attachid>
            <date>2012-01-10 05:10:43 -0800</date>
            <delta_ts>2012-01-11 06:54:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75378-20120110171041.patch</filename>
            <type>text/plain</type>
            <size>19817</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA0NTUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlNjQ4Zjk0NGU5ZTcz
MDcwMWM1ZDQ2OTQxMWQ2ZWI2ODBiNzQ2OC4uNzkyZTdiNjk2YzA0NmMwZGUzZmFlODhjMTJmNGZh
NDlhYTVkMmNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTAxLTEwICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogaW50cm9kdWNlICJzb3VyY2UiIGNvbHVtbiBpbiB0aGUgQ1NTIHByb2ZpbGVyLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzNzgKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSdWxlcyBhcmUgbm8g
bG9uZ2VyIG1lcmdlZCBieSB0aGVpciBzZWxlY3RvcnMgYnV0IGFyZSBzaG93biBvbmUgcGVyIHBy
b2ZpbGUgZW50cnksIHdpdGggYSBsaW5rIHRvCisgICAgICAgIHRoZWlyIHNlbGVjdG9yIGluIHRo
ZSBzb3VyY2Ugd2hlbmV2ZXIgdGhlIGxhdHRlciBpcyBhdmFpbGFibGUuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yLmpzb246CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJ1bGVNYXRjaGluZ1N0YXRzOjpSdWxlTWF0
Y2hpbmdTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvclByb2ZpbGU6Om1ha2VLZXkp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpzdGFydFNlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjpjb21taXRTZWxlY3RvclRpbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JQcm9maWxlOjp0b0luc3BlY3Rvck9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbE1hdGNoUnVsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFByb2Nlc3NSdWxlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpidWlsZEFycmF5Rm9yUnVsZUxpc3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3R5bGVTaGVldDo6ZmluYWxVUkwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yU3R5bGVTaGVldDo6c2V0UnVsZVNlbGVjdG9yKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NTU2Vs
ZWN0b3JQcm9maWxlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRh
dGFHcmlkTm9kZS5wcm90b3R5cGUuZ2V0IHJhd0RhdGEpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkNTU1NlbGVjdG9yRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxsKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZS5fY3JlYXRlUHJvZmlsZU5vZGVz
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3LnByb3RvdHlw
ZS5fc29ydFByb2ZpbGUuc291cmNlQ29tcGFyYXRvcik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5wcm90b3R5cGUuX3NvcnRQcm9maWxlKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuc2lkZWJhclJlc2l6ZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvZGF0YUdyaWQuY3NzOgorICAgICAgICAoLmRhdGEtZ3JpZDpm
b2N1cyB0ci5zZWxlY3RlZCBhKToKKwogMjAxMi0wMS0xMCAgQW5kcmVhcyBLbGluZyAgPGF3ZXNv
bWVrbGluZ0BhcHBsZS5jb20+CiAKICAgICAgICAgTWF0Y2hlZCBkZWNsYXJhdGlvbiBjYWNoZSBz
aG91bGQgc3VwcG9ydCBtYXBwZWQgYXR0cmlidXRlIGRlY2xhcmF0aW9ucy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCAxODE3ZDZiYjY2NGY3OTYzN2M5NGUwNGJi
MTJiYjUzOTgyNTMzOGZlLi5kOTRjY2UxNzQzZWUyNjQ0YjFlNzZjY2JlN2JiMWVkZjQ3YTYwMzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC0xNjI4LDEwICsx
NjI4LDEyIEBACiAgICAgICAgICAgICAgICAgImlkIjogIlNlbGVjdG9yUHJvZmlsZUVudHJ5IiwK
ICAgICAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgICAgICJwcm9w
ZXJ0aWVzIjogWwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNlbGVjdG9yIiwgInR5
cGUiOiAic3RyaW5nIiwgImRlc2NyaXB0aW9uIjogIkNTUyBzZWxlY3Rvci4iIH0sCi0gICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAidGltZSIsICJ0eXBlIjogIm51bWJlciIsICJkZXNjcmlw
dGlvbiI6ICJUb3RhbCB0aW1lIHRoaXMgc2VsZWN0b3IgaGFuZGxpbmcgY29udHJpYnV0ZWQgdG8g
dGhlIGJyb3dzZXIgcnVubmluZyB0aW1lIGR1cmluZyBwcm9maWxpbmcgKGluIG1pbGxpc2Vjb25k
cy4pIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhpdENvdW50IiwgInR5cGUi
OiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgdGltZXMgdGhpcyBzZWxlY3Rv
ciB3YXMgY29uc2lkZXJlZCBhIGNhbmRpZGF0ZSBmb3IgbWF0Y2hpbmcgYWdhaW5zdCBET00gZWxl
bWVudHMuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1hdGNoQ291bnQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk51bWJlciBvZiB0aW1lcyB0aGlzIHNl
bGVjdG9yIGFjdHVhbGx5IG1hdGNoZWQgYSBET00gZWxlbWVudC4iIH0KKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJzZWxlY3RvciIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlv
biI6ICJDU1Mgc2VsZWN0b3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgcnVsZS4iIH0sCisgICAgICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAic291cmNlVVJMIiwgInR5cGUiOiAic3RyaW5nIiwgImRl
c2NyaXB0aW9uIjogIlVSTCBvZiB0aGUgcmVzb3VyY2UgY29udGFpbmluZyB0aGUgY29ycmVzcG9u
ZGluZyBydWxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJzb3VyY2VMaW5l
IiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJTZWxlY3RvciBsaW5lIG51bWJl
ciBpbiB0aGUgcmVzb3VyY2UgZm9yIHRoZSBjb3JyZXNwb25kaW5nIHJ1bGUuIiB9LAorICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInRpbWUiLCAidHlwZSI6ICJudW1iZXIiLCAiZGVzY3Jp
cHRpb24iOiAiVG90YWwgdGltZSB0aGlzIHJ1bGUgaGFuZGxpbmcgY29udHJpYnV0ZWQgdG8gdGhl
IGJyb3dzZXIgcnVubmluZyB0aW1lIGR1cmluZyBwcm9maWxpbmcgKGluIG1pbGxpc2Vjb25kcy4p
IiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImhpdENvdW50IiwgInR5cGUiOiAi
aW50ZWdlciIsICJkZXNjcmlwdGlvbiI6ICJOdW1iZXIgb2YgdGltZXMgdGhpcyBydWxlIHdhcyBj
b25zaWRlcmVkIGEgY2FuZGlkYXRlIGZvciBtYXRjaGluZyBhZ2FpbnN0IERPTSBlbGVtZW50cy4i
IH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibWF0Y2hDb3VudCIsICJ0eXBlIjog
ImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiTnVtYmVyIG9mIHRpbWVzIHRoaXMgcnVsZSBhY3R1
YWxseSBtYXRjaGVkIGEgRE9NIGVsZW1lbnQuIiB9CiAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ1NTIHNlbGVjdG9yIHByb2ZpbGUgZW50cnkuIgog
ICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuY3BwCmluZGV4IDg3NTRhMWIzMmRlMmU5MjcyMWQwMjdlYTdkODZkY2MzZWJhMmYwZmUu
LmY4OGJiZDUzMmMyZDcyZjRjYzI5ZjhkZjg3YWNkMGEzZDQxNjgyNTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtNTEsNiArNTEsNyBA
QAogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25j
YXRlbmF0ZS5oPgogCiBuYW1lc3BhY2UgQ1NTQWdlbnRTdGF0ZSB7CiBzdGF0aWMgY29uc3QgY2hh
ciBjc3NBZ2VudEVuYWJsZWRbXSA9ICJjc3NBZ2VudEVuYWJsZWQiOwpAQCAtNjcsMTUgKzY4LDI2
IEBAIGVudW0gRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHsKICAgICBQc2V1ZG9WaXNpdGVkID0gMSA8
PCAzCiB9OwogCitzdHJ1Y3QgUnVsZU1hdGNoRGF0YSB7CisgICAgU3RyaW5nIHNlbGVjdG9yOwor
ICAgIFN0cmluZyB1cmw7CisgICAgdW5zaWduZWQgbGluZU51bWJlcjsKKyAgICBkb3VibGUgc3Rh
cnRUaW1lOworfTsKKwogc3RydWN0IFJ1bGVNYXRjaGluZ1N0YXRzIHsKICAgICBSdWxlTWF0Y2hp
bmdTdGF0cygpCi0gICAgICAgIDogdG90YWxUaW1lKDAuMCksIGhpdHMoMCksIG1hdGNoZXMoMCkK
KyAgICAgICAgOiBsaW5lTnVtYmVyKDApLCB0b3RhbFRpbWUoMC4wKSwgaGl0cygwKSwgbWF0Y2hl
cygwKQogICAgIHsKICAgICB9Ci0gICAgUnVsZU1hdGNoaW5nU3RhdHMoZG91YmxlIHRvdGFsVGlt
ZSwgdW5zaWduZWQgaGl0cywgdW5zaWduZWQgbWF0Y2hlcykKLSAgICAgICAgOiB0b3RhbFRpbWUo
dG90YWxUaW1lKSwgaGl0cyhoaXRzKSwgbWF0Y2hlcyhtYXRjaGVzKQorICAgIFJ1bGVNYXRjaGlu
Z1N0YXRzKGNvbnN0IFJ1bGVNYXRjaERhdGEmIGRhdGEsIGRvdWJsZSB0b3RhbFRpbWUsIHVuc2ln
bmVkIGhpdHMsIHVuc2lnbmVkIG1hdGNoZXMpCisgICAgICAgIDogc2VsZWN0b3IoZGF0YS5zZWxl
Y3RvciksIHVybChkYXRhLnVybCksIGxpbmVOdW1iZXIoZGF0YS5saW5lTnVtYmVyKSwgdG90YWxU
aW1lKHRvdGFsVGltZSksIGhpdHMoaGl0cyksIG1hdGNoZXMobWF0Y2hlcykKICAgICB7CiAgICAg
fQorCisgICAgU3RyaW5nIHNlbGVjdG9yOworICAgIFN0cmluZyB1cmw7CisgICAgdW5zaWduZWQg
bGluZU51bWJlcjsKICAgICBkb3VibGUgdG90YWxUaW1lOwogICAgIHVuc2lnbmVkIGhpdHM7CiAg
ICAgdW5zaWduZWQgbWF0Y2hlczsKQEAgLTgzLDcgKzk1LDYgQEAgc3RydWN0IFJ1bGVNYXRjaGlu
Z1N0YXRzIHsKIAogY2xhc3MgU2VsZWN0b3JQcm9maWxlIHsKIHB1YmxpYzoKLSAgICAvLyBGSVhN
RTogaGFuZGxlIGRpZmZlcmVudCBydWxlcyB3aXRoIHRoZSBzYW1lIHNlbGVjdG9yIGRpZmZlcmVu
dGx5PwogICAgIFNlbGVjdG9yUHJvZmlsZSgpCiAgICAgICAgIDogbV90b3RhbE1hdGNoaW5nVGlt
ZU1zKDAuMCkKICAgICB7CkBAIC05NCwxNyArMTA1LDE2IEBAIHB1YmxpYzoKIAogICAgIGRvdWJs
ZSB0b3RhbE1hdGNoaW5nVGltZU1zKCkgY29uc3QgeyByZXR1cm4gbV90b3RhbE1hdGNoaW5nVGlt
ZU1zOyB9CiAKLSAgICB2b2lkIHN0YXJ0U2VsZWN0b3IoY29uc3QgU3RyaW5nJik7CisgICAgU3Ry
aW5nIG1ha2VLZXkoKTsKKyAgICB2b2lkIHN0YXJ0U2VsZWN0b3IoY29uc3QgQ1NTU3R5bGVSdWxl
Kik7CiAgICAgdm9pZCBjb21taXRTZWxlY3Rvcihib29sKTsKICAgICB2b2lkIGNvbW1pdFNlbGVj
dG9yVGltZSgpOwogICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiB0b0luc3BlY3Rvck9i
amVjdCgpIGNvbnN0OwogCiBwcml2YXRlOgorCisgICAgLy8gS2V5IGlzICJzZWxlY3Rvcj91cmw6
bGluZSIuCiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywgUnVsZU1hdGNoaW5nU3RhdHM+IFJ1
bGVNYXRjaGluZ1N0YXRzTWFwOwotICAgIHN0cnVjdCBSdWxlTWF0Y2hEYXRhIHsKLSAgICAgICAg
U3RyaW5nIHNlbGVjdG9yOwotICAgICAgICBkb3VibGUgc3RhcnRUaW1lOwotICAgIH07CiAKICAg
ICBkb3VibGUgbV90b3RhbE1hdGNoaW5nVGltZU1zOwogICAgIFJ1bGVNYXRjaGluZ1N0YXRzTWFw
IG1fcnVsZU1hdGNoaW5nU3RhdHM7CkBAIC0xNDEsOSArMTUxLDIzIEBAIHN0YXRpYyB1bnNpZ25l
ZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKEluc3BlY3RvckFycmF5KiBwc2V1ZG9DbGFzc0FycmF5
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6
c3RhcnRTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVjdG9yVGV4dCkKK2lubGluZSBTdHJpbmcg
U2VsZWN0b3JQcm9maWxlOjptYWtlS2V5KCkKIHsKLSAgICBtX2N1cnJlbnRNYXRjaERhdGEuc2Vs
ZWN0b3IgPSBzZWxlY3RvclRleHQ7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcobV9jdXJyZW50TWF0
Y2hEYXRhLnNlbGVjdG9yLCAiPyIsIG1fY3VycmVudE1hdGNoRGF0YS51cmwsICI6IiwgU3RyaW5n
OjpudW1iZXIobV9jdXJyZW50TWF0Y2hEYXRhLmxpbmVOdW1iZXIpKTsKK30KKworaW5saW5lIHZv
aWQgU2VsZWN0b3JQcm9maWxlOjpzdGFydFNlbGVjdG9yKGNvbnN0IENTU1N0eWxlUnVsZSogcnVs
ZSkKK3sKKyAgICBtX2N1cnJlbnRNYXRjaERhdGEuc2VsZWN0b3IgPSBydWxlLT5zZWxlY3RvclRl
eHQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gcnVsZS0+cGFyZW50U3R5bGVT
aGVldCgpOworICAgIFN0cmluZyB1cmwgPSBlbXB0eVN0cmluZygpOworICAgIGlmIChzdHlsZVNo
ZWV0KSB7CisgICAgICAgIHVybCA9IEluc3BlY3RvclN0eWxlU2hlZXQ6OnN0eWxlU2hlZXRVUkwo
c3R5bGVTaGVldCk7CisgICAgICAgIGlmICh1cmwuaXNFbXB0eSgpKQorICAgICAgICAgICAgdXJs
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OmRvY3VtZW50VVJMU3RyaW5nKHN0eWxlU2hlZXQtPmZpbmRE
b2N1bWVudCgpKTsKKyAgICB9CisgICAgbV9jdXJyZW50TWF0Y2hEYXRhLnVybCA9IHVybDsKKyAg
ICBtX2N1cnJlbnRNYXRjaERhdGEubGluZU51bWJlciA9IHJ1bGUtPnNvdXJjZUxpbmUoKTsKICAg
ICBtX2N1cnJlbnRNYXRjaERhdGEuc3RhcnRUaW1lID0gV1RGOjpjdXJyZW50VGltZU1TKCk7CiB9
CiAKQEAgLTE1MSw3ICsxNzUsOCBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvclByb2ZpbGU6OmNvbW1p
dFNlbGVjdG9yKGJvb2wgbWF0Y2hlZCkKIHsKICAgICBkb3VibGUgbWF0Y2hUaW1lTXMgPSBXVEY6
OmN1cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWU7CiAgICAgbV90
b3RhbE1hdGNoaW5nVGltZU1zICs9IG1hdGNoVGltZU1zOwotICAgIHBhaXI8UnVsZU1hdGNoaW5n
U3RhdHNNYXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmFk
ZChtX2N1cnJlbnRNYXRjaERhdGEuc2VsZWN0b3IsIFJ1bGVNYXRjaGluZ1N0YXRzKG1hdGNoVGlt
ZU1zLCAxLCBtYXRjaGVkID8gMSA6IDApKTsKKworICAgIHBhaXI8UnVsZU1hdGNoaW5nU3RhdHNN
YXA6Oml0ZXJhdG9yLCBib29sPiByZXN1bHQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmFkZChtYWtl
S2V5KCksIFJ1bGVNYXRjaGluZ1N0YXRzKG1fY3VycmVudE1hdGNoRGF0YSwgbWF0Y2hUaW1lTXMs
IDEsIG1hdGNoZWQgPyAxIDogMCkpOwogICAgIGlmICghcmVzdWx0LnNlY29uZCkgewogICAgICAg
ICByZXN1bHQuZmlyc3QtPnNlY29uZC50b3RhbFRpbWUgKz0gbWF0Y2hUaW1lTXM7CiAgICAgICAg
IHJlc3VsdC5maXJzdC0+c2Vjb25kLmhpdHMgKz0gMTsKQEAgLTE2NCw0MSArMTg5LDM1IEBAIGlu
bGluZSB2b2lkIFNlbGVjdG9yUHJvZmlsZTo6Y29tbWl0U2VsZWN0b3JUaW1lKCkKIHsKICAgICBk
b3VibGUgcHJvY2Vzc2luZ1RpbWVNcyA9IFdURjo6Y3VycmVudFRpbWVNUygpIC0gbV9jdXJyZW50
TWF0Y2hEYXRhLnN0YXJ0VGltZTsKICAgICBtX3RvdGFsTWF0Y2hpbmdUaW1lTXMgKz0gcHJvY2Vz
c2luZ1RpbWVNczsKLSAgICBSdWxlTWF0Y2hpbmdTdGF0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3J1
bGVNYXRjaGluZ1N0YXRzLmZpbmQobV9jdXJyZW50TWF0Y2hEYXRhLnNlbGVjdG9yKTsKKworICAg
IFJ1bGVNYXRjaGluZ1N0YXRzTWFwOjppdGVyYXRvciBpdCA9IG1fcnVsZU1hdGNoaW5nU3RhdHMu
ZmluZChtYWtlS2V5KCkpOwogICAgIGlmIChpdCA9PSBtX3J1bGVNYXRjaGluZ1N0YXRzLmVuZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpdC0+c2Vjb25kLnRvdGFsVGltZSArPSBXVEY6OmN1
cnJlbnRUaW1lTVMoKSAtIG1fY3VycmVudE1hdGNoRGF0YS5zdGFydFRpbWU7CisgICAgaXQtPnNl
Y29uZC50b3RhbFRpbWUgKz0gcHJvY2Vzc2luZ1RpbWVNczsKIH0KIAogUGFzc1JlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IFNlbGVjdG9yUHJvZmlsZTo6dG9JbnNwZWN0b3JPYmplY3QoKSBjb25zdAog
ewotICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gZGF0YSA9IEluc3BlY3RvckFycmF5OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHNlbGVjdG9yUHJvZmlsZURhdGEgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgZm9yIChSdWxlTWF0Y2hpbmdTdGF0c01hcDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3J1bGVNYXRjaGluZ1N0YXRzLmJlZ2luKCk7IGl0ICE9IG1f
cnVsZU1hdGNoaW5nU3RhdHMuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZUVudHJ5PiBzdGF0ID0gVHlwZUJ1aWxkZXI6OkNTUzo6
U2VsZWN0b3JQcm9maWxlRW50cnk6OmNyZWF0ZSgpCi0gICAgICAgICAgICAuc2V0U2VsZWN0b3Io
aXQtPmZpcnN0KQorICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9m
aWxlRW50cnk+IGVudHJ5ID0gVHlwZUJ1aWxkZXI6OkNTUzo6U2VsZWN0b3JQcm9maWxlRW50cnk6
OmNyZWF0ZSgpCisgICAgICAgICAgICAuc2V0U2VsZWN0b3IoaXQtPnNlY29uZC5zZWxlY3RvcikK
KyAgICAgICAgICAgIC5zZXRTb3VyY2VVUkwoaXQtPnNlY29uZC51cmwpCisgICAgICAgICAgICAu
c2V0U291cmNlTGluZShpdC0+c2Vjb25kLmxpbmVOdW1iZXIpCiAgICAgICAgICAgICAuc2V0VGlt
ZShpdC0+c2Vjb25kLnRvdGFsVGltZSkKICAgICAgICAgICAgIC5zZXRIaXRDb3VudChpdC0+c2Vj
b25kLmhpdHMpCiAgICAgICAgICAgICAuc2V0TWF0Y2hDb3VudChpdC0+c2Vjb25kLm1hdGNoZXMp
OwotICAgICAgICBkYXRhLT5wdXNoT2JqZWN0KHN0YXQucmVsZWFzZSgpKTsKKyAgICAgICAgc2Vs
ZWN0b3JQcm9maWxlRGF0YS0+cHVzaE9iamVjdChlbnRyeS5yZWxlYXNlKCkpOwogICAgIH0KIAog
ICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6Q1NTOjpTZWxlY3RvclByb2ZpbGU+IHJlc3VsdCA9IFR5
cGVCdWlsZGVyOjpDU1M6OlNlbGVjdG9yUHJvZmlsZTo6Y3JlYXRlKCkKICAgICAgICAgLnNldFRv
dGFsVGltZSh0b3RhbE1hdGNoaW5nVGltZU1zKCkpCi0gICAgICAgIC5zZXREYXRhKGRhdGEpOwor
ICAgICAgICAuc2V0RGF0YShzZWxlY3RvclByb2ZpbGVEYXRhKTsKICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2UoKTsKIH0KIAogLy8gc3RhdGljCi1DU1NTdHlsZVNoZWV0KiBJbnNwZWN0b3JDU1NB
Z2VudDo6cGFyZW50U3R5bGVTaGVldChDU1NSdWxlKiBydWxlKQotewotICAgIGlmICghcnVsZSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gcnVsZS0+cGFyZW50U3R5bGVTaGVldCgp
OwotfQotCi0vLyBzdGF0aWMKIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFzQ1NT
U3R5bGVSdWxlKENTU1J1bGUqIHJ1bGUpCiB7CiAgICAgaWYgKCFydWxlLT5pc1N0eWxlUnVsZSgp
KQpAQCAtNTI3LDcgKzU0Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnN0b3BTZWxlY3Rv
clByb2ZpbGVySW1wbChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JPCiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OndpbGxNYXRjaFJ1bGUoY29uc3QgQ1NTU3R5bGVSdWxlKiBydWxlKQog
ewotICAgIG1fY3VycmVudFNlbGVjdG9yUHJvZmlsZS0+c3RhcnRTZWxlY3RvcihydWxlLT5zZWxl
Y3RvclRleHQoKSk7CisgICAgbV9jdXJyZW50U2VsZWN0b3JQcm9maWxlLT5zdGFydFNlbGVjdG9y
KHJ1bGUpOwogfQogCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRNYXRjaFJ1bGUoYm9vbCBt
YXRjaGVkKQpAQCAtNTM3LDcgKzU1Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZE1h
dGNoUnVsZShib29sIG1hdGNoZWQpCiAKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OndpbGxQcm9j
ZXNzUnVsZShjb25zdCBDU1NTdHlsZVJ1bGUqIHJ1bGUpCiB7Ci0gICAgbV9jdXJyZW50U2VsZWN0
b3JQcm9maWxlLT5zdGFydFNlbGVjdG9yKHJ1bGUtPnNlbGVjdG9yVGV4dCgpKTsKKyAgICBtX2N1
cnJlbnRTZWxlY3RvclByb2ZpbGUtPnN0YXJ0U2VsZWN0b3IocnVsZSk7CiB9CiAKIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmRpZFByb2Nlc3NSdWxlKCkKQEAgLTY4NSw3ICs3MDQsNyBAQCBQYXNz
UmVmUHRyPEluc3BlY3RvckFycmF5PiBJbnNwZWN0b3JDU1NBZ2VudDo6YnVpbGRBcnJheUZvclJ1
bGVMaXN0KENTU1J1bGVMaXN0KgogICAgICAgICBpZiAoIXJ1bGUpCiAgICAgICAgICAgICBjb250
aW51ZTsKIAotICAgICAgICBJbnNwZWN0b3JTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0gYmluZFN0
eWxlU2hlZXQocGFyZW50U3R5bGVTaGVldChydWxlKSk7CisgICAgICAgIEluc3BlY3RvclN0eWxl
U2hlZXQqIHN0eWxlU2hlZXQgPSBiaW5kU3R5bGVTaGVldChydWxlLT5wYXJlbnRTdHlsZVNoZWV0
KCkpOwogICAgICAgICBpZiAoc3R5bGVTaGVldCkKICAgICAgICAgICAgIHJlc3VsdC0+cHVzaE9i
amVjdChzdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUocnVsZSkpOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggODYzZWZjMGQ3
MGNiNWUxNjI0MzQzNmEwZGIyZTAyOWE1NWM1YzIzMC4uNzBiMmRkOTBhNDM3NGViMGM4MmQ3Njc5
Zjc4OWFiYTJkY2I5YjVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmgKQEAgLTU3LDcgKzU3LDYgQEAgY2xhc3MgU2VsZWN0b3JQcm9maWxlOwogY2xh
c3MgSW5zcGVjdG9yQ1NTQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQmFzZUFnZW50PEluc3BlY3Rv
ckNTU0FnZW50PiwgcHVibGljIEluc3BlY3RvckRPTUFnZW50OjpET01MaXN0ZW5lciB7CiAgICAg
V1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yQ1NTQWdlbnQpOwogcHVibGljOgotICAgIHN0
YXRpYyBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KENTU1J1bGUqKTsKICAgICBzdGF0
aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShDU1NSdWxlKik7CiAKICAgICBzdGF0aWMg
UGFzc093blB0cjxJbnNwZWN0b3JDU1NBZ2VudD4gY3JlYXRlKEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluc3BlY3RvclN0YXRlKiBzdGF0ZSwgSW5zcGVjdG9yRE9N
QWdlbnQqIGRvbUFnZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0eWxlU2hlZXQuY3BwCmluZGV4IDliMDBkNDk0NzE3M2YyZWNlNzYyNmZhMTM2NTc2MjU5YzFh
NzYxZDQuLjk0Y2ZmOTFjMTNmNjI1Nzk0ODA2ZjJkNWYwYmM3M2JiMDdhMWQ4YTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTY1
Nyw2ICs2NTcsMTQgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZVNoZWV0PiBJbnNwZWN0b3JT
dHlsZVNoZWV0OjpjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgUGEKICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEluc3BlY3RvclN0eWxlU2hlZXQoaWQsIHBhZ2VTdHlsZVNoZWV0LCBvcmlnaW4sIGRv
Y3VtZW50VVJMKSk7CiB9CiAKKy8vIHN0YXRpYworU3RyaW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6
OnN0eWxlU2hlZXRVUkwoQ1NTU3R5bGVTaGVldCogcGFnZVN0eWxlU2hlZXQpCit7CisgICAgaWYg
KHBhZ2VTdHlsZVNoZWV0ICYmICFwYWdlU3R5bGVTaGVldC0+ZmluYWxVUkwoKS5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybiBwYWdlU3R5bGVTaGVldC0+ZmluYWxVUkwoKS5zdHJpbmcoKTsKKyAg
ICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKK30KKwogSW5zcGVjdG9yU3R5bGVTaGVldDo6SW5zcGVj
dG9yU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIGlkLCBQYXNzUmVmUHRyPENTU1N0eWxlU2hlZXQ+
IHBhZ2VTdHlsZVNoZWV0LCBjb25zdCBTdHJpbmcmIG9yaWdpbiwgY29uc3QgU3RyaW5nJiBkb2N1
bWVudFVSTCkKICAgICA6IG1faWQoaWQpCiAgICAgLCBtX3BhZ2VTdHlsZVNoZWV0KHBhZ2VTdHls
ZVNoZWV0KQpAQCAtNjc0LDkgKzY4Miw4IEBAIEluc3BlY3RvclN0eWxlU2hlZXQ6On5JbnNwZWN0
b3JTdHlsZVNoZWV0KCkKIAogU3RyaW5nIEluc3BlY3RvclN0eWxlU2hlZXQ6OmZpbmFsVVJMKCkg
Y29uc3QKIHsKLSAgICBpZiAobV9wYWdlU3R5bGVTaGVldCAmJiAhbV9wYWdlU3R5bGVTaGVldC0+
ZmluYWxVUkwoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBtX3BhZ2VTdHlsZVNoZWV0LT5m
aW5hbFVSTCgpLnN0cmluZygpOwotICAgIHJldHVybiBtX2RvY3VtZW50VVJMOworICAgIFN0cmlu
ZyB1cmwgPSBzdHlsZVNoZWV0VVJMKG1fcGFnZVN0eWxlU2hlZXQuZ2V0KCkpOworICAgIHJldHVy
biB1cmwuaXNFbXB0eSgpID8gbV9kb2N1bWVudFVSTCA6IHVybDsKIH0KIAogdm9pZCBJbnNwZWN0
b3JTdHlsZVNoZWV0OjpyZXBhcnNlU3R5bGVTaGVldChjb25zdCBTdHJpbmcmIHRleHQpCkBAIC03
MDQsNyArNzExLDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0OjpzZXRSdWxlU2VsZWN0b3Io
Y29uc3QgSW5zcGVjdG9yQ1NTSWQmIGlkLCBjb25zdCBTdHJpbmcKICAgICBDU1NTdHlsZVJ1bGUq
IHJ1bGUgPSBydWxlRm9ySWQoaWQpOwogICAgIGlmICghcnVsZSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQgPSBJbnNwZWN0b3JDU1NBZ2VudDo6
cGFyZW50U3R5bGVTaGVldChydWxlKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0ID0g
cnVsZS0+cGFyZW50U3R5bGVTaGVldCgpOwogICAgIGlmICghc3R5bGVTaGVldCB8fCAhZW5zdXJl
UGFyc2VkRGF0YVJlYWR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggYWY5NmM5MzJiYmQ1
MjJmYzAyYzlmYjZkNmEwN2ZkMTllNDg5NGU4ZC4uZjMxOTVlODg5ZTdjMjBiYzJhODc3OTQxZmRj
ODdkNTUzYmQzYmQyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oCkBAIC0xNTgsNiArMTU4LDcgQEAgY2xhc3MgSW5zcGVjdG9yU3R5bGVTaGVl
dCA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvclN0eWxlU2hlZXQ+IHsKIHB1YmxpYzoKICAg
ICB0eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVEZWNsYXJhdGlvbiosIFJlZlB0cjxJbnNwZWN0b3JT
dHlsZT4gPiBJbnNwZWN0b3JTdHlsZU1hcDsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JTdHlsZVNoZWV0PiBjcmVhdGUoY29uc3QgU3RyaW5nJiBpZCwgUGFzc1JlZlB0cjxDU1NTdHls
ZVNoZWV0PiBwYWdlU3R5bGVTaGVldCwgY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZG9jdW1lbnRVUkwpOworICAgIHN0YXRpYyBTdHJpbmcgc3R5bGVTaGVldFVSTChDU1NTdHls
ZVNoZWV0KiBwYWdlU3R5bGVTaGVldCk7CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JTdHlsZVNo
ZWV0KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvQ1NTU2VsZWN0b3JQcm9maWxlVmlldy5qcwppbmRleCBiMDgwZDlmMWVkNWY3ODEzNTg5
ODMzODBiNDZhMzFmOGNmODQyYjQ2Li43MzliODRkN2JhOGI5OWM4ODgwODk2OTMyOTcxOGQ3YzIz
MjdhZDFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NT
U1NlbGVjdG9yUHJvZmlsZVZpZXcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9DU1NTZWxlY3RvclByb2ZpbGVWaWV3LmpzCkBAIC01Miw2ICs1MiwyNyBAQCBXZWJJ
bnNwZWN0b3IuQ1NTU2VsZWN0b3JEYXRhR3JpZE5vZGUucHJvdG90eXBlID0gewogICAgIGdldCBy
YXdEYXRhKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kYXRhOworICAgIH0sCisKKyAg
ICBjcmVhdGVDZWxsOiBmdW5jdGlvbihjb2x1bW5JZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAg
dmFyIGNlbGwgPSBXZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5jcmVhdGVDZWxs
LmNhbGwodGhpcywgY29sdW1uSWRlbnRpZmllcik7CisgICAgICAgIGlmIChjb2x1bW5JZGVudGlm
aWVyID09PSAic2VsZWN0b3IiICYmIGNlbGwuZmlyc3RDaGlsZCkgeworICAgICAgICAgICAgY2Vs
bC5maXJzdENoaWxkLnRpdGxlID0gdGhpcy5yYXdEYXRhLnNlbGVjdG9yOworICAgICAgICAgICAg
cmV0dXJuIGNlbGw7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciAh
PT0gInNvdXJjZSIpCisgICAgICAgICAgICByZXR1cm4gY2VsbDsKKworICAgICAgICBjZWxsLnJl
bW92ZUNoaWxkcmVuKCk7CisKKyAgICAgICAgaWYgKHRoaXMucmF3RGF0YS5zb3VyY2VVUkwpIHsK
KyAgICAgICAgICAgIHZhciB3cmFwcGVyRGl2ID0gY2VsbC5jcmVhdGVDaGlsZCgiZGl2Iik7Cisg
ICAgICAgICAgICB3cmFwcGVyRGl2LmFwcGVuZENoaWxkKFdlYkluc3BlY3Rvci5saW5raWZ5UmVz
b3VyY2VBc05vZGUodGhpcy5yYXdEYXRhLnNvdXJjZVVSTCwgdGhpcy5yYXdEYXRhLnNvdXJjZUxp
bmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjZWxsOwogICAgIH0KIH0KIApAQCAt
NzAsMTEgKzkxLDEzIEBAIFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvclByb2ZpbGVWaWV3ID0gZnVu
Y3Rpb24ocHJvZmlsZSkKIAogICAgIHRoaXMuc2hvd1RpbWVBc1BlcmNlbnQgPSBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygic2VsZWN0b3JQcm9maWxlclNob3dUaW1lQXNQZXJj
ZW50IiwgdHJ1ZSk7CiAKLSAgICB2YXIgY29sdW1ucyA9IHsgInNlbGVjdG9yIjogeyB0aXRsZTog
V2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RvciIpLCB3aWR0aDogIjY1MHB4Iiwgc29ydGFi
bGU6IHRydWUgfSwKKyAgICB2YXIgY29sdW1ucyA9IHsgInNlbGVjdG9yIjogeyB0aXRsZTogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RvciIpLCB3aWR0aDogIjU1MHB4Iiwgc29ydGFibGU6
IHRydWUgfSwKKyAgICAgICAgICAgICAgICAgICAgInNvdXJjZSI6IHsgdGl0bGU6IFdlYkluc3Bl
Y3Rvci5VSVN0cmluZygiU291cmNlIiksIHdpZHRoOiAiMTAwcHgiLCBzb3J0YWJsZTogdHJ1ZSB9
LAogICAgICAgICAgICAgICAgICAgICAidGltZSI6IHsgdGl0bGU6IFdlYkluc3BlY3Rvci5VSVN0
cmluZygiVG90YWwiKSwgd2lkdGg6ICI3MnB4Iiwgc29ydDogImRlc2NlbmRpbmciLCBzb3J0YWJs
ZTogdHJ1ZSB9LAogICAgICAgICAgICAgICAgICAgICAibWF0Y2hlcyI6IHsgdGl0bGU6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiTWF0Y2hlcyIpLCB3aWR0aDogIjcycHgiLCBzb3J0YWJsZTogdHJ1
ZSB9IH07CiAKICAgICB0aGlzLmRhdGFHcmlkID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZChj
b2x1bW5zKTsKKyAgICB0aGlzLmRhdGFHcmlkLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygic2VsZWN0
b3ItcHJvZmlsZS12aWV3Iik7CiAgICAgdGhpcy5kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKCJz
b3J0aW5nIGNoYW5nZWQiLCB0aGlzLl9zb3J0UHJvZmlsZSwgdGhpcyk7CiAgICAgdGhpcy5kYXRh
R3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX21vdXNlRG93
bkluRGF0YUdyaWQuYmluZCh0aGlzKSwgdHJ1ZSk7CiAgICAgdGhpcy5kYXRhR3JpZC5zaG93KHRo
aXMuZWxlbWVudCk7CkBAIC0xMTUsNyArMTM4LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9y
UHJvZmlsZVZpZXcucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJl
biA9IFtdOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIGRhdGFbaV0udGltZVBlcmNlbnQgPSBkYXRhW2ldLnRpbWUgKiAxMDAgLyB0
aGlzLnByb2ZpbGUudG90YWxUaW1lOworICAgICAgICAgICAgZGF0YVtpXS50aW1lUGVyY2VudCA9
IHJ1bGVFbnRyeS50aW1lICogMTAwIC8gdGhpcy5wcm9maWxlLnRvdGFsVGltZTsKICAgICAgICAg
ICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5DU1NTZWxlY3RvckRhdGFHcmlkTm9kZSh0
aGlzLCBkYXRhW2ldKTsKICAgICAgICAgICAgIHRoaXMucHJvZmlsZS5jaGlsZHJlbi5wdXNoKG5v
ZGUpOwogICAgICAgICB9CkBAIC0xNzUsNiArMTk4LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NTZWxl
Y3RvclByb2ZpbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVybiBzb3J0QXNj
ZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsKICAgICAgICAgfQogCisgICAgICAgIGZ1bmN0aW9u
IHNvdXJjZUNvbXBhcmF0b3IoYSwgYikKKyAgICAgICAgeworICAgICAgICAgICAgdmFyIGFSYXdE
YXRhID0gYS5yYXdEYXRhOworICAgICAgICAgICAgdmFyIGJSYXdEYXRhID0gYi5yYXdEYXRhOwor
ICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJSYXdEYXRhLnNvdXJjZVVSTC5sb2NhbGVDb21wYXJl
KGFSYXdEYXRhLnNvdXJjZVVSTCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAg
ICAgICAgICByZXN1bHQgPSBiUmF3RGF0YS5zb3VyY2VMaW5lIC0gYVJhd0RhdGEuc291cmNlTGlu
ZTsKKyAgICAgICAgICAgIHJldHVybiBzb3J0QXNjZW5kaW5nID8gLXJlc3VsdCA6IHJlc3VsdDsK
KyAgICAgICAgfQorCiAgICAgICAgIGZ1bmN0aW9uIHRpbWVDb21wYXJhdG9yKGEsIGIpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGIucmF3RGF0YS50aW1lIC0gYS5yYXdE
YXRhLnRpbWU7CkBAIC0xOTgsNiArMjMxLDkgQEAgV2ViSW5zcGVjdG9yLkNTU1NlbGVjdG9yUHJv
ZmlsZVZpZXcucHJvdG90eXBlID0gewogICAgICAgICBjYXNlICJzZWxlY3RvciI6CiAgICAgICAg
ICAgICBjb21wYXJhdG9yID0gc2VsZWN0b3JDb21wYXJhdG9yOwogICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgInNvdXJjZSI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gc291cmNl
Q29tcGFyYXRvcjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5wcm9maWxlLmNoaWxkcmVuLnNvcnQoY29tcGFyYXRvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggYzYyZGNjMTUx
OTUxOTM1MTdlZjY3MmI3MGU1MDUwY2FjODU1NmQyYS4uMzcyNWU1ZGYwMTcyNjYzYTViYmFlM2Nl
MDg1NzBiNWY0ODIzNTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9Qcm9maWxlc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUHJvZmlsZXNQYW5lbC5qcwpAQCAtODE0LDcgKzgxNCw3IEBAIFdlYkluc3BlY3Rv
ci5Qcm9maWxlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB3aWR0aCA9
IGV2ZW50LmRhdGE7CiAgICAgICAgIC8vIE1pbiB3aWR0aCA9IDxudW1iZXIgb2YgYnV0dG9ucyBv
biB0aGUgbGVmdD4gKiAzMQotICAgICAgICB0aGlzLnByb2ZpbGVWaWV3U3RhdHVzQmFySXRlbXND
b250YWluZXIuc3R5bGUubGVmdCA9IE1hdGgubWF4KDYgKiAzMSwgd2lkdGgpICsgInB4IjsKKyAg
ICAgICAgdGhpcy5wcm9maWxlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLnN0eWxlLmxlZnQg
PSBNYXRoLm1heCg1ICogMzEsIHdpZHRoKSArICJweCI7CiAgICAgfSwKIAogICAgIHNldFJlY29y
ZGluZ1Byb2ZpbGU6IGZ1bmN0aW9uKHByb2ZpbGVUeXBlLCBpc1Byb2ZpbGluZykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZGF0YUdyaWQuY3NzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9kYXRhR3JpZC5jc3MKaW5kZXggMzhkZDg2
NmNlMTVkNjJhOWFiMjA3NzYyYmRlNTY5YjE2ODI0YzEzZC4uOTBiZDQ0NTY0MGRhYjk1MjhjNWJh
MDhkMDMxMmE1OTFhY2EzZmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9kYXRhR3JpZC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9kYXRhR3JpZC5jc3MKQEAgLTE5MSw2ICsxOTEsMTAgQEAgYm9keS5pbmFjdGl2ZSAu
ZGF0YS1ncmlkIHRoLnNvcnQtYXNjZW5kaW5nLCBib2R5LmluYWN0aXZlIC5kYXRhLWdyaWQgdGgu
c29ydC1kZXMKICAgICBjb2xvcjogd2hpdGU7CiB9CiAKKy5kYXRhLWdyaWQ6Zm9jdXMgdHIuc2Vs
ZWN0ZWQgYSB7CisgICAgY29sb3I6IHdoaXRlOworfQorCiAuZGF0YS1ncmlkOmZvY3VzIHRyLnBh
cmVudC5zZWxlY3RlZCB0ZC5kaXNjbG9zdXJlOjpiZWZvcmUgewogICAgIGNvbnRlbnQ6IHVybChJ
bWFnZXMvdHJlZVJpZ2h0VHJpYW5nbGVXaGl0ZS5wbmcpOwogfQo=
</data>
<flag name="review"
          id="122448"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>