<?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>136380</bug_id>
          
          <creation_ts>2014-08-29 12:10:35 -0700</creation_ts>
          <short_desc>LegacyProfiler: remove redundant ProfileNode members and other cleanup</short_desc>
          <delta_ts>2014-09-02 21:59:05 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>136462</dependson>
          <blocked>136352</blocked>
    
    <blocked>136381</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1032220</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-29 12:10:35 -0700</bug_when>
    <thetext>looks like dead code to me, since the frontend sums call data itself. This can be explicitly computed in debug logging code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032370</commentid>
    <comment_count>1</comment_count>
      <attachid>237418</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-30 16:42:34 -0700</bug_when>
    <thetext>Created attachment 237418
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032696</commentid>
    <comment_count>2</comment_count>
      <attachid>237418</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-02 10:59:53 -0700</bug_when>
    <thetext>Comment on attachment 237418
Patch

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

&gt; Source/JavaScriptCore/profiler/ProfileNode.h:145
&gt; -        Vector&lt;Call, 1&gt; m_calls;
&gt; +        Vector&lt;Call&gt; m_calls;

Why this change? There will always be a minimum of 1 call, so it seems best to have storage for it instead of another malloc right away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032699</commentid>
    <comment_count>3</comment_count>
      <attachid>237418</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-02 11:05:51 -0700</bug_when>
    <thetext>Comment on attachment 237418
Patch

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

&gt; Source/WebCore/inspector/ScriptProfile.idl:33
&gt; -    readonly attribute ScriptProfileNode head;
&gt; -    readonly attribute unrestricted double idleTime;
&gt; +    readonly attribute ScriptProfileNode rootNode;

Will we need to change LegacyJavaScriptProfileView.js which still makes use of &quot;profileNode.head&quot; which no longer exists?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032700</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-09-02 11:06:12 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 237418 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=237418&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/ScriptProfile.idl:33
&gt; &gt; -    readonly attribute ScriptProfileNode head;
&gt; &gt; -    readonly attribute unrestricted double idleTime;
&gt; &gt; +    readonly attribute ScriptProfileNode rootNode;
&gt; 
&gt; Will we need to change LegacyJavaScriptProfileView.js which still makes use of &quot;profileNode.head&quot; which no longer exists?

Maybe this was only used by tests?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032703</commentid>
    <comment_count>5</comment_count>
      <attachid>237418</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-02 11:09:51 -0700</bug_when>
    <thetext>Comment on attachment 237418
Patch

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

&gt;&gt; Source/JavaScriptCore/profiler/ProfileNode.h:145
&gt;&gt; +        Vector&lt;Call&gt; m_calls;
&gt; 
&gt; Why this change? There will always be a minimum of 1 call, so it seems best to have storage for it instead of another malloc right away.

For some reason, the compiler couldn&apos;t figure out how to pass a reference to m_calls if it had the default inline size. Maybe Vector was forward-declared instead of defined? I&apos;ll try again.

&gt;&gt;&gt; Source/WebCore/inspector/ScriptProfile.idl:33
&gt;&gt;&gt; +    readonly attribute ScriptProfileNode rootNode;
&gt;&gt; 
&gt;&gt; Will we need to change LegacyJavaScriptProfileView.js which still makes use of &quot;profileNode.head&quot; which no longer exists?
&gt; 
&gt; Maybe this was only used by tests?

The tests were changed to use rootNode too. My understanding is that the legacy profiler views are only used when the inspected page speaks a legacy protocol. But, I have no way of testing this. Tim?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032705</commentid>
    <comment_count>6</comment_count>
      <attachid>237418</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-02 11:13:08 -0700</bug_when>
    <thetext>Comment on attachment 237418
Patch

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

&gt; Source/JavaScriptCore/profiler/ProfileNode.h:99
&gt; -        Vector&lt;Call&gt; calls() const { return m_calls; }
&gt; +        const Vector&lt;Call&gt;&amp; calls() const { return m_calls; }

Oh, I see. This is what required the change of no default size. Hmm...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032716</commentid>
    <comment_count>7</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-09-02 11:52:03 -0700</bug_when>
    <thetext>LegacyJavaScriptProfile*.{js,css} can be removed. I punted on making it work after the profile migration to Timeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1032838</commentid>
    <comment_count>8</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-09-02 21:59:05 -0700</bug_when>
    <thetext>Committed r173199: &lt;http://trac.webkit.org/changeset/173199&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237418</attachid>
            <date>2014-08-30 16:42:34 -0700</date>
            <delta_ts>2014-09-02 11:13:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-136380-20140830164156.patch</filename>
            <type>text/plain</type>
            <size>40380</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NjhhZTkxY2Y4MWY3NDFiZDBlOTcxZTIzMTkxZjIyOGYwZGQzODVkLi5jNTdmZWZiNTgzNjg2NTcx
NTEyMGExOWZhMDE3NmRkNzY2YmRiY2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAxNC0wOC0zMCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgTGVnYWN5UHJvZmlsZXI6IHJlbW92ZSByZWR1bmRhbnQgUHJvZmls
ZU5vZGUgbWVtYmVycyBhbmQgb3RoZXIgY2xlYW51cAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM2MzgwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUHJvZmlsZU5vZGUncyBzZWxmVGltZSBhbmQgdG90YWxU
aW1lIG1lbWJlcnMgYXJlIHJlZHVuZGFudCBhbmQgb25seSB1c2VkCisgICAgICAgIGZvciBkdW1w
aW5nIHByb2ZpbGUgZGF0YSBmcm9tIGRlYnVnLW9ubHkgY29kZS4gUmVtb3ZlIHRoZSBtZW1iZXJz
IGFuZCBjb21wdXRlCisgICAgICAgIHRoZSBzYW1lIGRhdGEgb24tZGVtYW5kIHdoZW4gbmVjZXNz
YXJ5IHVzaW5nIGEgcG9zdG9yZGVyIHRyYXZlcnNhbCBmdW5jdG9yLgorCisgICAgICAgIFJlbW92
ZSBQcm9maWxlTm9kZS5oZWFkIHNpbmNlIGl0IGlzIG9ubHkgdXNlZCB0byBjYWxjdWxhdGUgcGVy
Y2VudGFnZXMgZm9yCisgICAgICAgIGR1bXBlZCBwcm9maWxlIGRhdGEuIFRoaXMgY2FuIGJlIGV4
cGxpY2l0bHkgcGFzc2VkIGFyb3VuZCB3aGVuIG5lZWRlZC4KKworICAgICAgICBSZW5hbWUgUHJv
ZmlsZS5oZWFkIHRvIFByb2ZpbGUucm9vdE5vZGUsIGFuZCBvdGhlciB2YXJpb3VzIHJlbmFtaW5n
cy4KKworICAgICAgICBSZWFycmFuZ2Ugc29tZSBoZWFkZXIgaW5jbHVkZXMgc28gdGhhdCB0b3Vj
aGluZyBMZWdhY3lQcm9maWxlci1yZWxhdGVkIGhlYWRlcnMKKyAgICAgICAgd2lsbCBubyBsb25n
ZXIgY2F1c2UgYSBmdWxsIHJlYnVpbGQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNDb25zb2xl
Q2xpZW50LmNwcDogQWRkIGhlYWRlciBpbmNsdWRlLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OmJ1aWxkUHJvZmlsZUluc3BlY3Rvck9iamVjdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL3Byb3RvY29sL1Byb2ZpbGVyLmpzb246IFJlbW92ZSB1bnVzZWQgUHJvZmls
ZS5pZGxlVGltZSBtZW1iZXIuCisgICAgICAgICogaml0L0pJVC5oOiBSZW1vdmUgaGVhZGVyIGlu
Y2x1ZGUuCisgICAgICAgICogaml0L0pJVENvZGUuaDogUmVtb3ZlIGhlYWRlciBpbmNsdWRlLgor
ICAgICAgICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDogU29ydCBhbmQgYWRkIGhlYWRlciBpbmNs
dWRlLgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDogU29ydCBhbmQgYWRkIGhl
YWRlciBpbmNsdWRlLgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGUuY3BwOiBSZW5hbWUgdGhl
IGRlYnVnIGR1bXBpbmcgZnVuY3Rpb25zLiBNb3ZlIHRoZSBub2RlCisgICAgICAgIHBvc3RvcmRl
ciB0cmF2ZXJzYWwgY29kZSB0byBQcm9maWxlTm9kZSBzbyB3ZSBjYW4gdHJhdmVyc2UgYW55IHN1
YnRyZWUuCisgICAgICAgIChKU0M6OlByb2ZpbGU6OlByb2ZpbGUpOgorICAgICAgICAoSlNDOjpQ
cm9maWxlOjpkZWJ1Z1ByaW50KToKKyAgICAgICAgKEpTQzo6UHJvZmlsZTo6ZGVidWdQcmludFNh
bXBsZVN0eWxlKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZTo6Zm9yRWFjaCk6IERlbGV0ZWQuCisg
ICAgICAgIChKU0M6OlByb2ZpbGU6OmRlYnVnUHJpbnREYXRhKTogRGVsZXRlZC4KKyAgICAgICAg
KEpTQzo6UHJvZmlsZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZSk6IERlbGV0ZWQuCisgICAg
ICAgICogcHJvZmlsZXIvUHJvZmlsZS5oOgorICAgICAgICAqIHByb2ZpbGVyL1Byb2ZpbGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpQcm9maWxlR2VuZXJh
dG9yKToKKyAgICAgICAgKEpTQzo6QWRkUGFyZW50Rm9yQ29uc29sZVN0YXJ0RnVuY3Rvcjo6QWRk
UGFyZW50Rm9yQ29uc29sZVN0YXJ0RnVuY3Rvcik6CisgICAgICAgIChKU0M6OkFkZFBhcmVudEZv
ckNvbnNvbGVTdGFydEZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpQcm9maWxl
R2VuZXJhdG9yOjphZGRQYXJlbnRGb3JDb25zb2xlU3RhcnQpOgorICAgICAgICAoSlNDOjpQcm9m
aWxlR2VuZXJhdG9yOjpkaWRFeGVjdXRlKToKKyAgICAgICAgKEpTQzo6U3RvcFByb2ZpbGluZ0Z1
bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpQcm9maWxlR2VuZXJhdG9yOjpzdG9w
UHJvZmlsaW5nKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6cmVtb3ZlUHJvZmls
ZVN0YXJ0KToKKyAgICAgICAgKEpTQzo6UHJvZmlsZUdlbmVyYXRvcjo6cmVtb3ZlUHJvZmlsZUVu
ZCk6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oOgorICAgICAgICAqIHBy
b2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcDoKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OlByb2Zp
bGVOb2RlKToKKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OndpbGxFeGVjdXRlKToKKyAgICAg
ICAgKEpTQzo6UHJvZmlsZU5vZGU6OnJlbW92ZUNoaWxkKToKKyAgICAgICAgKEpTQzo6UHJvZmls
ZU5vZGU6OnN0b3BQcm9maWxpbmcpOgorICAgICAgICAoSlNDOjpQcm9maWxlTm9kZTo6ZW5kQW5k
UmVjb3JkQ2FsbCk6CisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50KToKKyAg
ICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OmRlYnVnUHJpbnRTYW1wbGVTdHlsZSk6CisgICAgICAg
IChKU0M6OlByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50UmVjdXJzaXZlbHkpOgorICAgICAgICAoSlND
OjpQcm9maWxlTm9kZTo6ZGVidWdQcmludFNhbXBsZVN0eWxlUmVjdXJzaXZlbHkpOgorICAgICAg
ICAoSlNDOjpQcm9maWxlTm9kZTo6ZGVidWdQcmludERhdGEpOiBEZWxldGVkLgorICAgICAgICAo
SlNDOjpQcm9maWxlTm9kZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZSk6IERlbGV0ZWQuCisg
ICAgICAgICogcHJvZmlsZXIvUHJvZmlsZU5vZGUuaDogQ2FsY3VsYXRlIHBlci1ub2RlIHNlbGYg
YW5kIHRvdGFsIHRpbWVzIHVzaW5nIGEgcG9zdG9yZGVyIHRyYXZlcnNhbC4KKyAgICAgICAgVGhl
IGZvckVhY2hOb2RlUG9zdG9yZGVyIGZ1bmN0b3IgdHJhdmVyc2VzIHRoZSBzdWJ0cmVlIHJvb3Rl
ZCBhdCB8dGhpc3wuCisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpjcmVhdGUpOgorICAgICAg
ICAoSlNDOjpQcm9maWxlTm9kZTo6Y2FsbHMpOgorICAgICAgICAoSlNDOjpQcm9maWxlTm9kZTo6
Zm9yRWFjaE5vZGVQb3N0b3JkZXIpOgorICAgICAgICAoSlNDOjpDYWxjdWxhdGVQcm9maWxlU3Vi
dHJlZURhdGFGdW5jdG9yOjpyZXR1cm5WYWx1ZSk6CisgICAgICAgIChKU0M6OkNhbGN1bGF0ZVBy
b2ZpbGVTdWJ0cmVlRGF0YUZ1bmN0b3I6Om9wZXJhdG9yKCkpOgorICAgICAgICAoSlNDOjpQcm9m
aWxlTm9kZTo6aGVhZCk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpzZXRI
ZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJvZmlsZU5vZGU6OnRvdGFsVGltZSk6IERl
bGV0ZWQuCisgICAgICAgIChKU0M6OlByb2ZpbGVOb2RlOjpzZXRUb3RhbFRpbWUpOiBEZWxldGVk
LgorICAgICAgICAoSlNDOjpQcm9maWxlTm9kZTo6c2VsZlRpbWUpOiBEZWxldGVkLgorICAgICAg
ICAoSlNDOjpQcm9maWxlTm9kZTo6c2V0U2VsZlRpbWUpOiBEZWxldGVkLgorICAgICAgICAoSlND
OjpQcm9maWxlTm9kZTo6dG90YWxQZXJjZW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6UHJv
ZmlsZU5vZGU6OnNlbGZQZXJjZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvbnNv
bGVDbGllbnQuaDogUmVtb3ZlIGhlYWRlciBpbmNsdWRlLgorCiAyMDE0LTA4LTI5ICBBa29zIEtp
c3MgIDxha2lzc0BpbmYudS1zemVnZWQuaHU+CiAKICAgICAgICAgRW5zdXJlIHRoYXQgdGhlIGNh
bGwgZnJhbWUgcGFzc2VkIGZyb20gZG9WTUVudHJ5IHRvIHRoZSBjYWxsZWQgZnVuY3Rpb24gYWx3
YXlzIGNvbnRhaW5zIHRoZSB2YWxpZCBzY29wZSBjaGFpbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjMDE1YmE0
NDk2ZmQ0YzFkZjI4YjMxMmMxMGU5MzA3YmFiYjllZWY0Li5mNTllZWFhZWQyZDczZDE0OTUyNzZl
YzQwZTlhMjk5NmVhNzkxY2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDgt
MzAgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIExl
Z2FjeVByb2ZpbGVyOiByZW1vdmUgcmVkdW5kYW50IFByb2ZpbGVOb2RlIG1lbWJlcnMgYW5kIG90
aGVyIGNsZWFudXAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEzNjM4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFJlbW92ZSBQcm9maWxlLmlkbGVUaW1lLCByZW5hbWUgaGVhZCB0byByb290Tm9kZSwgYW5k
IHJlbW92ZSBQcm9maWxlTm9kZSBtZW1iZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0UHJvZmlsZS5pZGw6CisgICAg
ICAgICogaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbDoKKwogMjAxNC0wOC0zMCAgWXVz
dWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBDU1M6IFJlZmFj
dG9yIDp2aXNpdGVkIGhhbmRsaW5nIGluIFNlbGVjdG9yQ2hlY2tlcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFu
Z2VMb2cKaW5kZXggNDk2YzhlMjY5ODkxYTgzZDI3NzEyMTMyNTQyZTQyMDQyN2IzOTNjNC4uYTU3
YjUwN2RiYWY0ZjMzYWY5NTMxNmFmYmUyZjFiYWZmM2QzZjE5NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDgtMzAgIEJyaWFuIEouIEJ1cmcgIDxidXJn
QGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIExlZ2FjeVByb2ZpbGVyOiByZW1vdmUgcmVk
dW5kYW50IFByb2ZpbGVOb2RlIG1lbWJlcnMgYW5kIG90aGVyIGNsZWFudXAKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjM4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZSB1bnVzZWQgUHJvZmls
ZS5pZGxlVGltZSBtZW1iZXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Qcm9m
aWxlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGUucHJvdG90eXBlLmdldCBpZGxl
VGltZSk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGlt
ZWxpbmVSZWNvcmQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0VGltZWxpbmVSZWNv
cmQucHJvdG90eXBlLl9pbml0aWFsaXplUHJvZmlsZUZyb21QYXlsb2FkKToKKwogMjAxNC0wOC0y
OSAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBGaXggaG93IFBvcG92ZXIgYW5pbWF0ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSlNDb25zb2xlQ2xpZW50LmNwcAppbmRleCAwMTlkYmEwZjM0NWY0OGQy
ZTUwNzg1ZTMxOTM5MjIyZjQyNzkwZmFhLi5jY2MzY2I3MTMwMDQyNWQyMDNlNTBhZGQzYTJmZDIw
Mjg1NGIwNWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0NvbnNvbGVDbGllbnQuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlICJJbnNwZWN0
b3JDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQcm9maWxlckFnZW50LmgiCisj
aW5jbHVkZSAiUHJvZmlsZS5oIgogI2luY2x1ZGUgIlNjcmlwdEFyZ3VtZW50cy5oIgogI2luY2x1
ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3Rvcnku
aCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggYWE5M2MzNDQ0MGY3OGE2
ZDczNTJkNDhlNDFkYjE1NDkxYjkyNzIxOC4uMjBjNzAxM2Q4OTk1ZDkyMzVhYzZhOWQ4NmZkY2Y1
ZjczOWU3M2RiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE4MCwx
NSArMTgwLDEyIEBAIHN0YXRpYyBQYXNzUmVmUHRyPFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJv
ZmlsZU5vZGU+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0KGNvbnN0CiBQYXNzUmVmUHRyPFByb3RvY29s
OjpQcm9maWxlcjo6Q1BVUHJvZmlsZT4gSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6YnVpbGRQcm9m
aWxlSW5zcGVjdG9yT2JqZWN0KGNvbnN0IEpTQzo6UHJvZmlsZSogcHJvZmlsZSkKIHsKICAgICBS
ZWZQdHI8UHJvdG9jb2w6OkFycmF5PFByb3RvY29sOjpQcm9maWxlcjo6Q1BVUHJvZmlsZU5vZGU+
PiByb290Tm9kZXMgPSBQcm90b2NvbDo6QXJyYXk8UHJvdG9jb2w6OlByb2ZpbGVyOjpDUFVQcm9m
aWxlTm9kZT46OmNyZWF0ZSgpOwotICAgIGZvciAoUmVmUHRyPEpTQzo6UHJvZmlsZU5vZGU+IHBy
b2ZpbGVOb2RlIDogcHJvZmlsZS0+aGVhZCgpLT5jaGlsZHJlbigpKQorICAgIGZvciAoUmVmUHRy
PEpTQzo6UHJvZmlsZU5vZGU+IHByb2ZpbGVOb2RlIDogcHJvZmlsZS0+cm9vdE5vZGUoKS0+Y2hp
bGRyZW4oKSkKICAgICAgICAgcm9vdE5vZGVzLT5hZGRJdGVtKGJ1aWxkSW5zcGVjdG9yT2JqZWN0
KHByb2ZpbGVOb2RlLmdldCgpKSk7CiAKICAgICBSZWZQdHI8UHJvdG9jb2w6OlByb2ZpbGVyOjpD
UFVQcm9maWxlPiByZXN1bHQgPSBQcm90b2NvbDo6UHJvZmlsZXI6OkNQVVByb2ZpbGU6OmNyZWF0
ZSgpCiAgICAgICAgIC5zZXRSb290Tm9kZXMocm9vdE5vZGVzKTsKIAotICAgIGlmIChwcm9maWxl
LT5pZGxlVGltZSgpKQotICAgICAgICByZXN1bHQtPnNldElkbGVUaW1lKHByb2ZpbGUtPmlkbGVU
aW1lKCkpOwotCiAgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUHJvZmlsZXIuanNvbiBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUHJvZmlsZXIuanNvbgpp
bmRleCA3YTNiZjM1YmZlNTZkNGE1YzU2NTk4ZjgxODZlMmEwOTg3YzVmZTZiLi45YThmZGM1Nzk2
YzUwZmI1ZDU1N2U4NzdiMWEzMDY5MTVhNGRmOGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1Byb2ZpbGVyLmpzb24KKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9Qcm9maWxlci5qc29uCkBAIC0zOSw4ICsz
OSw3IEBACiAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIlByb2ZpbGUuIiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAicm9vdE5vZGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMi
OiB7ICIkcmVmIjogIkNQVVByb2ZpbGVOb2RlIiB9LCAiZGVzY3JpcHRpb24iOiAiVG9wIGxldmVs
IG5vZGVzIGluIHRoZSBzdGFjay4iIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpZGxl
VGltZSIsICJ0eXBlIjogIm51bWJlciIsICJvcHRpb25hbCI6IHRydWUgfQorICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicm9vdE5vZGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIk
cmVmIjogIkNQVVByb2ZpbGVOb2RlIiB9LCAiZGVzY3JpcHRpb24iOiAiVG9wIGxldmVsIG5vZGVz
IGluIHRoZSBzdGFjay4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfQogICAgIF0sCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuaAppbmRleCA2MjdhN2UxZjQ4OTVkYjRkMDAzOGM1MDVjNGMyYTFjMjhl
ODg4YTk5Li40NTEwY2YxYzgwMDY3NjRlYThiOTY0MWQyYmMzZDg5NGE2ZTI1ODFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmgKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJKSVREaXNhc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJKSVRJbmxpbmVDYWNoZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkpTSW50ZXJmYWNlSklULmgiCi0jaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNpbmNsdWRl
ICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZXN1bHRUeXBlLmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdU
b29sLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCmluZGV4IDAxMDM5MjM2OGNlNDUy
MDY0MTkzYjZhNmM0ZDg4NDE0NTQ2MDYyODYuLmQzNmQ4ZjBmYjFkN2I0ZDRlY2NmNDQxMzljNGY1
YjY0NTMyMTlmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCkBAIC0zMSw3ICsz
MSw2IEBACiAjaW5jbHVkZSAiRGlzYXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
ICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSAiTGVnYWN5UHJvZmlsZXIuaCIKICNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKICNpbmNsdWRlICJSZWdpc3RlclByZXNl
cnZhdGlvbk1vZGUuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9u
cy5jcHAKaW5kZXggNDlmYTM2YjFiMWQxNTY0OTQ1ZWNkODc5OWJkOWMwZmEwZGZiZDU3ZS4uNzhh
MjIzNzVhOTg5N2YyZDg0YjAzMWFlNzYyMjU4MTdjODBjNjIxZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC00MywxMyArNDMsMTQgQEAKICNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklUVG9ERkdEZWZlcnJlZENvbXBpbGF0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0NJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKICNpbmNsdWRlICJK
U05hbWVTY29wZS5oIgogI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lRW51bWVyYXRvci5oIgogI2lu
Y2x1ZGUgIkpTU3RhY2tJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSlNXaXRoU2NvcGUuaCIKKyNpbmNs
dWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCi0j
aW5jbHVkZSAiSlNDSW5saW5lcy5oIgogI2luY2x1ZGUgIlJlcGF0Y2guaCIKICNpbmNsdWRlICJS
ZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAppbmRleCA5NDlmNjFmNzZj
MTk3MGJkMjEyNDE1YWQxYjg3YjhmMjkzMThhODQwLi5hNDcxMTA2NDAyYWUyNjJmZjFiZjI5NzRj
ZmQ2OGQzMDRhYWVkMDY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAKQEAgLTI1LDYgKzI1LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIkxMSW50U2xvd1BhdGhzLmgiCisKICNpbmNsdWRlICJBcmd1bWVudHMuaCIKICNp
bmNsdWRlICJBcnJheUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCkBAIC0z
OCw2ICszOSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5o
IgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNp
bmNsdWRlICJKU0NKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aCIKICNpbmNsdWRlICJKU05hbWVTY29wZS5oIgpAQCAtNDYsOSArNDgsOSBAQAogI2luY2x1ZGUg
IkpTV2l0aFNjb3BlLmgiCiAjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKICNpbmNsdWRlICJMTElu
dEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMZWdhY3lQcm9maWxlci5oIgogI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2lu
Y2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1
ZGUgIlN0cnVjdHVyZVJhcmVEYXRhSW5saW5lcy5oIgogI2luY2x1ZGUgPHd0Zi9TdHJpbmdQcmlu
dFN0cmVhbS5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1By
b2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuY3BwCmlu
ZGV4IDc3YzgzN2YyMjk5NjcyZGNmNWQzZWI3ODNiMmMzZGJjZjg5MDUxZTkuLmM0MTlhZmVlYTg4
ZjU3ZTdkOWQ3ZmQ4OGIzNjFkZThjNWNiZDM0ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cHJvZmlsZXIvUHJvZmlsZS5jcHAKQEAgLTM5LDM4ICszOSwyNSBAQCBQYXNzUmVmUHRyPFByb2Zp
bGU+IFByb2ZpbGU6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCB1aWQpCiBQ
cm9maWxlOjpQcm9maWxlKGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmVkIHVpZCkKICAgICA6
IG1fdGl0bGUodGl0bGUpCiAgICAgLCBtX3VpZCh1aWQpCi0gICAgLCBtX2lkbGVUaW1lKDApCiB7
CiAgICAgLy8gRklYTUU6IFdoZW4gbXVsdGktdGhyZWFkaW5nIGlzIHN1cHBvcnRlZCB0aGlzIHdp
bGwgYmUgYSB2ZWN0b3IgYW5kIGNhbGxzCiAgICAgLy8gaW50byB0aGUgcHJvZmlsZXIgd2lsbCBu
ZWVkIHRvIGtub3cgd2hpY2ggdGhyZWFkIGl0IGlzIGV4ZWN1dGluZyBvbi4KLSAgICBtX2hlYWQg
PSBQcm9maWxlTm9kZTo6Y3JlYXRlKDAsIENhbGxJZGVudGlmaWVyKEFTQ0lJTGl0ZXJhbCgiVGhy
ZWFkXzEiKSwgU3RyaW5nKCksIDAsIDApLCAwLCAwKTsKKyAgICBtX3Jvb3ROb2RlID0gUHJvZmls
ZU5vZGU6OmNyZWF0ZShudWxscHRyLCBDYWxsSWRlbnRpZmllcihBU0NJSUxpdGVyYWwoIlRocmVh
ZF8xIiksIFN0cmluZygpLCAwLCAwKSwgbnVsbHB0cik7CiB9CiAKIFByb2ZpbGU6On5Qcm9maWxl
KCkKIHsKIH0KIAotdm9pZCBQcm9maWxlOjpmb3JFYWNoKHZvaWQgKFByb2ZpbGVOb2RlOjoqZnVu
Y3Rpb24pKCkpCi17Ci0gICAgUHJvZmlsZU5vZGUqIGN1cnJlbnROb2RlID0gbV9oZWFkLT5maXJz
dENoaWxkKCk7Ci0gICAgZm9yIChQcm9maWxlTm9kZSogbmV4dE5vZGUgPSBjdXJyZW50Tm9kZTsg
bmV4dE5vZGU7IG5leHROb2RlID0gbmV4dE5vZGUtPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgY3Vy
cmVudE5vZGUgPSBuZXh0Tm9kZTsKLQotICAgIGlmICghY3VycmVudE5vZGUpCi0gICAgICAgIGN1
cnJlbnROb2RlID0gbV9oZWFkLmdldCgpOwotCi0gICAgUHJvZmlsZU5vZGUqIGVuZE5vZGUgPSBt
X2hlYWQtPnRyYXZlcnNlTmV4dE5vZGVQb3N0T3JkZXIoKTsKLSAgICB3aGlsZSAoY3VycmVudE5v
ZGUgJiYgY3VycmVudE5vZGUgIT0gZW5kTm9kZSkgewotICAgICAgICAoY3VycmVudE5vZGUtPipm
dW5jdGlvbikoKTsKLSAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZVBvc3RPcmRlcigpOwotICAgIH0gCi19Ci0KICNpZm5kZWYgTkRFQlVHCi12b2lkIFBy
b2ZpbGU6OmRlYnVnUHJpbnREYXRhKCkgY29uc3QKK3ZvaWQgUHJvZmlsZTo6ZGVidWdQcmludCgp
CiB7CisgICAgQ2FsY3VsYXRlUHJvZmlsZVN1YnRyZWVEYXRhRnVuY3RvciBmdW5jdG9yOworICAg
IG1fcm9vdE5vZGUtPmZvckVhY2hOb2RlUG9zdG9yZGVyKGZ1bmN0b3IpOworICAgIFByb2ZpbGVO
b2RlOjpQcm9maWxlU3VidHJlZURhdGEgZGF0YSA9IGZ1bmN0b3IucmV0dXJuVmFsdWUoKTsKKwog
ICAgIGRhdGFMb2dGKCJDYWxsIGdyYXBoOlxuIik7Ci0gICAgbV9oZWFkLT5kZWJ1Z1ByaW50RGF0
YSgwKTsKKyAgICBtX3Jvb3ROb2RlLT5kZWJ1Z1ByaW50UmVjdXJzaXZlbHkoMCwgZGF0YSk7CiB9
CiAKIHR5cGVkZWYgV1RGOjpLZXlWYWx1ZVBhaXI8RnVuY3Rpb25DYWxsSGFzaENvdW50OjpWYWx1
ZVR5cGUsIHVuc2lnbmVkPiBOYW1lQ291bnRQYWlyOwpAQCAtODAsMTMgKzY3LDE3IEBAIHN0YXRp
YyBpbmxpbmUgYm9vbCBmdW5jdGlvbk5hbWVDb3VudFBhaXJDb21wYXJhdG9yKGNvbnN0IE5hbWVD
b3VudFBhaXImIGEsIGNvbnN0CiAgICAgcmV0dXJuIGEudmFsdWUgPiBiLnZhbHVlOwogfQogCi12
b2lkIFByb2ZpbGU6OmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoKSBjb25zdAordm9pZCBQcm9m
aWxlOjpkZWJ1Z1ByaW50U2FtcGxlU3R5bGUoKQogewogICAgIHR5cGVkZWYgVmVjdG9yPE5hbWVD
b3VudFBhaXI+IE5hbWVDb3VudFBhaXJWZWN0b3I7CiAKKyAgICBDYWxjdWxhdGVQcm9maWxlU3Vi
dHJlZURhdGFGdW5jdG9yIGZ1bmN0b3I7CisgICAgbV9yb290Tm9kZS0+Zm9yRWFjaE5vZGVQb3N0
b3JkZXIoZnVuY3Rvcik7CisgICAgUHJvZmlsZU5vZGU6OlByb2ZpbGVTdWJ0cmVlRGF0YSBkYXRh
ID0gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOworCiAgICAgRnVuY3Rpb25DYWxsSGFzaENvdW50IGNv
dW50ZWRGdW5jdGlvbnM7CiAgICAgZGF0YUxvZ0YoIkNhbGwgZ3JhcGg6XG4iKTsKLSAgICBtX2hl
YWQtPmRlYnVnUHJpbnREYXRhU2FtcGxlU3R5bGUoMCwgY291bnRlZEZ1bmN0aW9ucyk7CisgICAg
bV9yb290Tm9kZS0+ZGVidWdQcmludFNhbXBsZVN0eWxlUmVjdXJzaXZlbHkoMCwgY291bnRlZEZ1
bmN0aW9ucywgZGF0YSk7CiAKICAgICBkYXRhTG9nRigiXG5Ub3RhbCBudW1iZXIgaW4gc3RhY2s6
XG4iKTsKICAgICBOYW1lQ291bnRQYWlyVmVjdG9yIHNvcnRlZEZ1bmN0aW9ucyhjb3VudGVkRnVu
Y3Rpb25zLnNpemUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIvUHJvZmlsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGUuaApp
bmRleCA4OTg0ZWFmMmM1NGMxNmM5MTg3ZmNkNWM2YjljNmU4ZTdjYjM1MWVhLi5iNTBjNzliNjU0
ZjdjZWU5MzBlZDJiNWU4Y2Q1MjA5NjM0ZjQ1Y2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlLmgKQEAgLTQxLDE5ICs0MSwxMiBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KICAgICB1bnNpZ25lZCB1
aWQoKSBjb25zdCB7IHJldHVybiBtX3VpZDsgfQogCi0gICAgUHJvZmlsZU5vZGUqIGhlYWQoKSBj
b25zdCB7IHJldHVybiBtX2hlYWQuZ2V0KCk7IH0KLSAgICB2b2lkIHNldEhlYWQoUGFzc1JlZlB0
cjxQcm9maWxlTm9kZT4gaGVhZCkgeyBtX2hlYWQgPSBoZWFkOyB9Ci0KLSAgICBkb3VibGUgdG90
YWxUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkLT50b3RhbFRpbWUoKTsgfQotCi0gICAgZG91
YmxlIGlkbGVUaW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZGxlVGltZTsgfQotICAgIHZvaWQgc2V0
SWRsZVRpbWUoZG91YmxlIGlkbGVUaW1lKSB7IG1faWRsZVRpbWUgPSBpZGxlVGltZTsgfQotCi0g
ICAgdm9pZCBmb3JFYWNoKHZvaWQgKFByb2ZpbGVOb2RlOjoqKSgpKTsKKyAgICBQcm9maWxlTm9k
ZSogcm9vdE5vZGUoKSBjb25zdCB7IHJldHVybiBtX3Jvb3ROb2RlLmdldCgpOyB9CisgICAgdm9p
ZCBzZXRSb290Tm9kZShQYXNzUmVmUHRyPFByb2ZpbGVOb2RlPiByb290Tm9kZSkgeyBtX3Jvb3RO
b2RlID0gcm9vdE5vZGU7IH0KIAogI2lmbmRlZiBOREVCVUcKLSAgICB2b2lkIGRlYnVnUHJpbnRE
YXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxlKCkgY29uc3Q7
CisgICAgdm9pZCBkZWJ1Z1ByaW50KCk7CisgICAgdm9pZCBkZWJ1Z1ByaW50U2FtcGxlU3R5bGUo
KTsKICNlbmRpZgogCiBwcm90ZWN0ZWQ6CkBAIC02NCw5ICs1Nyw4IEBAIHByaXZhdGU6CiAgICAg
dm9pZCByZW1vdmVQcm9maWxlRW5kKCk7CiAKICAgICBTdHJpbmcgbV90aXRsZTsKLSAgICBSZWZQ
dHI8UHJvZmlsZU5vZGU+IG1faGVhZDsKKyAgICBSZWZQdHI8UHJvZmlsZU5vZGU+IG1fcm9vdE5v
ZGU7CiAgICAgdW5zaWduZWQgbV91aWQ7Ci0gICAgZG91YmxlIG1faWRsZVRpbWU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9m
aWxlci9Qcm9maWxlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlR2VuZXJhdG9yLmNwcAppbmRleCBkMzdiMzU2NmNjYWNjOGZlMmM4ZTVhZDFiMzcz
OTg2MWU0MTY5ZWFhLi5hNmExY2VmNWRhZGRmZGU5ZDI4ZmI0OTM3NmEwNDI1NmU4YTU2ZDFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0
b3IuY3BwCkBAIC01MCwxOCArNTAsMTggQEAgUHJvZmlsZUdlbmVyYXRvcjo6UHJvZmlsZUdlbmVy
YXRvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgdGl0bGUsIHVuc2lnbmUKICAgICAs
IG1fZm91bmRDb25zb2xlU3RhcnRQYXJlbnQoZmFsc2UpCiB7CiAgICAgbV9wcm9maWxlID0gUHJv
ZmlsZTo6Y3JlYXRlKHRpdGxlLCB1aWQpOwotICAgIG1fY3VycmVudE5vZGUgPSBtX2hlYWQgPSBt
X3Byb2ZpbGUtPmhlYWQoKTsKKyAgICBtX2N1cnJlbnROb2RlID0gbV9yb290Tm9kZSA9IG1fcHJv
ZmlsZS0+cm9vdE5vZGUoKTsKICAgICBpZiAoZXhlYykKICAgICAgICAgYWRkUGFyZW50Rm9yQ29u
c29sZVN0YXJ0KGV4ZWMpOwogfQogCiBjbGFzcyBBZGRQYXJlbnRGb3JDb25zb2xlU3RhcnRGdW5j
dG9yIHsKIHB1YmxpYzoKLSAgICBBZGRQYXJlbnRGb3JDb25zb2xlU3RhcnRGdW5jdG9yKEV4ZWNT
dGF0ZSogZXhlYywgUmVmUHRyPFByb2ZpbGVOb2RlPiYgaGVhZCwgUmVmUHRyPFByb2ZpbGVOb2Rl
PiYgY3VycmVudE5vZGUpCisgICAgQWRkUGFyZW50Rm9yQ29uc29sZVN0YXJ0RnVuY3RvcihFeGVj
U3RhdGUqIGV4ZWMsIFJlZlB0cjxQcm9maWxlTm9kZT4mIHJvb3ROb2RlLCBSZWZQdHI8UHJvZmls
ZU5vZGU+JiBjdXJyZW50Tm9kZSkKICAgICAgICAgOiBtX2V4ZWMoZXhlYykKICAgICAgICAgLCBt
X2hhc1NraXBwZWRGaXJzdEZyYW1lKGZhbHNlKQogICAgICAgICAsIG1fZm91bmRQYXJlbnQoZmFs
c2UpCi0gICAgICAgICwgbV9oZWFkKGhlYWQpCisgICAgICAgICwgbV9yb290Tm9kZShyb290Tm9k
ZSkKICAgICAgICAgLCBtX2N1cnJlbnROb2RlKGN1cnJlbnROb2RlKQogICAgIHsKICAgICB9CkBA
IC03OCw4ICs3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgdW5zaWduZWQgbGluZSA9IDA7CiAgICAg
ICAgIHVuc2lnbmVkIGNvbHVtbiA9IDA7CiAgICAgICAgIHZpc2l0b3ItPmNvbXB1dGVMaW5lQW5k
Q29sdW1uKGxpbmUsIGNvbHVtbik7Ci0gICAgICAgIG1fY3VycmVudE5vZGUgPSBQcm9maWxlTm9k
ZTo6Y3JlYXRlKG1fZXhlYywgTGVnYWN5UHJvZmlsZXI6OmNyZWF0ZUNhbGxJZGVudGlmaWVyKG1f
ZXhlYywgdmlzaXRvci0+Y2FsbGVlKCksIHZpc2l0b3ItPnNvdXJjZVVSTCgpLCBsaW5lLCBjb2x1
bW4pLCBtX2hlYWQuZ2V0KCksIG1faGVhZC5nZXQoKSk7Ci0gICAgICAgIG1faGVhZC0+aW5zZXJ0
Tm9kZShtX2N1cnJlbnROb2RlLmdldCgpKTsKKyAgICAgICAgbV9jdXJyZW50Tm9kZSA9IFByb2Zp
bGVOb2RlOjpjcmVhdGUobV9leGVjLCBMZWdhY3lQcm9maWxlcjo6Y3JlYXRlQ2FsbElkZW50aWZp
ZXIobV9leGVjLCB2aXNpdG9yLT5jYWxsZWUoKSwgdmlzaXRvci0+c291cmNlVVJMKCksIGxpbmUs
IGNvbHVtbiksIG1fcm9vdE5vZGUuZ2V0KCkpOworICAgICAgICBtX3Jvb3ROb2RlLT5pbnNlcnRO
b2RlKG1fY3VycmVudE5vZGUuZ2V0KCkpOwogCiAgICAgICAgIG1fZm91bmRQYXJlbnQgPSB0cnVl
OwogICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpEb25lOwpAQCAtODgsMTQgKzg4LDE0IEBA
IHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRXhlY1N0YXRlKiBtX2V4ZWM7CiAgICAgYm9vbCBtX2hh
c1NraXBwZWRGaXJzdEZyYW1lOwotICAgIGJvb2wgbV9mb3VuZFBhcmVudDsgCi0gICAgUmVmUHRy
PFByb2ZpbGVOb2RlPiYgbV9oZWFkOworICAgIGJvb2wgbV9mb3VuZFBhcmVudDsKKyAgICBSZWZQ
dHI8UHJvZmlsZU5vZGU+JiBtX3Jvb3ROb2RlOwogICAgIFJlZlB0cjxQcm9maWxlTm9kZT4mIG1f
Y3VycmVudE5vZGU7CiB9OwogCiB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OmFkZFBhcmVudEZvckNv
bnNvbGVTdGFydChFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgQWRkUGFyZW50Rm9yQ29uc29sZVN0
YXJ0RnVuY3RvciBmdW5jdG9yKGV4ZWMsIG1faGVhZCwgbV9jdXJyZW50Tm9kZSk7CisgICAgQWRk
UGFyZW50Rm9yQ29uc29sZVN0YXJ0RnVuY3RvciBmdW5jdG9yKGV4ZWMsIG1fcm9vdE5vZGUsIG1f
Y3VycmVudE5vZGUpOwogICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CiAKICAgICBtX2ZvdW5k
Q29uc29sZVN0YXJ0UGFyZW50ID0gZnVuY3Rvci5mb3VuZFBhcmVudCgpOwpAQCAtMTM0LDcgKzEz
NCw3IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6ZGlkRXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxl
ckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkZW50aWZpCiAKICAgICBBU1NFUlQobV9jdXJyZW50Tm9k
ZSk7CiAgICAgaWYgKG1fY3VycmVudE5vZGUtPmNhbGxJZGVudGlmaWVyKCkgIT0gY2FsbElkZW50
aWZpZXIpIHsKLSAgICAgICAgUmVmUHRyPFByb2ZpbGVOb2RlPiByZXR1cm5pbmdOb2RlID0gUHJv
ZmlsZU5vZGU6OmNyZWF0ZShjYWxsZXJDYWxsRnJhbWUsIGNhbGxJZGVudGlmaWVyLCBtX2hlYWQu
Z2V0KCksIG1fY3VycmVudE5vZGUuZ2V0KCkpOworICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+
IHJldHVybmluZ05vZGUgPSBQcm9maWxlTm9kZTo6Y3JlYXRlKGNhbGxlckNhbGxGcmFtZSwgY2Fs
bElkZW50aWZpZXIsIG1fY3VycmVudE5vZGUuZ2V0KCkpOwogICAgICAgICByZXR1cm5pbmdOb2Rl
LT5sYXN0Q2FsbCgpLnNldFN0YXJ0VGltZShtX2N1cnJlbnROb2RlLT5sYXN0Q2FsbCgpLnN0YXJ0
VGltZSgpKTsKICAgICAgICAgcmV0dXJuaW5nTm9kZS0+ZGlkRXhlY3V0ZSgpOwogICAgICAgICBt
X2N1cnJlbnROb2RlLT5pbnNlcnROb2RlKHJldHVybmluZ05vZGUucmVsZWFzZSgpKTsKQEAgLTE1
NSw5ICsxNTUsMTYgQEAgdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpleGNlcHRpb25VbndpbmQoRXhl
Y1N0YXRlKiBoYW5kbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWQKICAgICB9CiB9CiAKK3N0cnVj
dCBTdG9wUHJvZmlsaW5nRnVuY3RvciB7CisgICAgdm9pZCBvcGVyYXRvcigpKFByb2ZpbGVOb2Rl
KiBub2RlKSB7IG5vZGUtPnN0b3BQcm9maWxpbmcoKTsgfQorfTsKKwogdm9pZCBQcm9maWxlR2Vu
ZXJhdG9yOjpzdG9wUHJvZmlsaW5nKCkKIHsKLSAgICBtX3Byb2ZpbGUtPmZvckVhY2goJlByb2Zp
bGVOb2RlOjpzdG9wUHJvZmlsaW5nKTsKKyAgICAvLyBGSVhNRTogd2Ugc2hvdWxkbid0IG5lZWQg
YSBmdWxsIHRyYXZlcnNhbCBoZXJlLCBzaW5jZSBvbmx5IHRoZSBzcGluZSBmcm9tCisgICAgLy8g
bV9jdXJyZW50Tm9kZSB0byBtX3Jvb3ROb2RlIHNob3VsZCBoYXZlIGFueSBub2RlcyBjdXJyZW50
bHkgYWNjcnVpbmcgdGltZS4KKyAgICBTdG9wUHJvZmlsaW5nRnVuY3RvciBmdW5jdG9yOworICAg
IG1fcHJvZmlsZS0+cm9vdE5vZGUoKS0+Zm9yRWFjaE5vZGVQb3N0b3JkZXIoZnVuY3Rvcik7CiAK
ICAgICBpZiAobV9mb3VuZENvbnNvbGVTdGFydFBhcmVudCkgewogICAgICAgICByZW1vdmVQcm9m
aWxlU3RhcnQoKTsKQEAgLTE2OSwyNSArMTc2LDE4IEBAIHZvaWQgUHJvZmlsZUdlbmVyYXRvcjo6
c3RvcFByb2ZpbGluZygpCiAgICAgLy8gU2V0IHRoZSBjdXJyZW50IG5vZGUgdG8gdGhlIHBhcmVu
dCwgYmVjYXVzZSB3ZSBhcmUgaW4gYSBjYWxsIHRoYXQKICAgICAvLyB3aWxsIG5vdCBnZXQgZGlk
RXhlY3V0ZSBjYWxsLgogICAgIG1fY3VycmVudE5vZGUgPSBtX2N1cnJlbnROb2RlLT5wYXJlbnQo
KTsKLQotICAgIGlmIChkb3VibGUgaGVhZFNlbGZUaW1lID0gbV9oZWFkLT5zZWxmVGltZSgpKSB7
Ci0gICAgICAgIG1faGVhZC0+c2V0U2VsZlRpbWUoMC4wKTsKLSAgICAgICAgbV9wcm9maWxlLT5z
ZXRJZGxlVGltZShoZWFkU2VsZlRpbWUpOwotICAgIH0KIH0KIAogLy8gVGhlIGNvbnNvbGUucHJv
ZmlsZSB0aGF0IHN0YXJ0ZWQgdGhpcyBQcm9maWxlR2VuZXJhdG9yIHdpbGwgYmUgdGhlIGZpcnN0
IGNoaWxkLgogdm9pZCBQcm9maWxlR2VuZXJhdG9yOjpyZW1vdmVQcm9maWxlU3RhcnQoKQogewog
ICAgIFByb2ZpbGVOb2RlKiBjdXJyZW50Tm9kZSA9IDA7Ci0gICAgZm9yIChQcm9maWxlTm9kZSog
bmV4dCA9IG1faGVhZC5nZXQoKTsgbmV4dDsgbmV4dCA9IG5leHQtPmZpcnN0Q2hpbGQoKSkKKyAg
ICBmb3IgKFByb2ZpbGVOb2RlKiBuZXh0ID0gbV9yb290Tm9kZS5nZXQoKTsgbmV4dDsgbmV4dCA9
IG5leHQtPmZpcnN0Q2hpbGQoKSkKICAgICAgICAgY3VycmVudE5vZGUgPSBuZXh0OwogCiAgICAg
aWYgKGN1cnJlbnROb2RlLT5jYWxsSWRlbnRpZmllcigpLmZ1bmN0aW9uTmFtZSgpICE9ICJwcm9m
aWxlIikKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gQXR0cmlidXRlIHRoZSB0aW1lIG9mIHRo
ZSBub2RlIGFvYnV0IHRvIGJlIHJlbW92ZWQgdG8gdGhlIHNlbGYgdGltZSBvZiBpdHMgcGFyZW50
Ci0gICAgY3VycmVudE5vZGUtPnBhcmVudCgpLT5zZXRTZWxmVGltZShjdXJyZW50Tm9kZS0+cGFy
ZW50KCktPnNlbGZUaW1lKCkgKyBjdXJyZW50Tm9kZS0+dG90YWxUaW1lKCkpOwogICAgIGN1cnJl
bnROb2RlLT5wYXJlbnQoKS0+cmVtb3ZlQ2hpbGQoY3VycmVudE5vZGUpOwogfQogCkBAIC0xOTUs
MTUgKzE5NSwxMiBAQCB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OnJlbW92ZVByb2ZpbGVTdGFydCgp
CiB2b2lkIFByb2ZpbGVHZW5lcmF0b3I6OnJlbW92ZVByb2ZpbGVFbmQoKQogewogICAgIFByb2Zp
bGVOb2RlKiBjdXJyZW50Tm9kZSA9IDA7Ci0gICAgZm9yIChQcm9maWxlTm9kZSogbmV4dCA9IG1f
aGVhZC5nZXQoKTsgbmV4dDsgbmV4dCA9IG5leHQtPmxhc3RDaGlsZCgpKQorICAgIGZvciAoUHJv
ZmlsZU5vZGUqIG5leHQgPSBtX3Jvb3ROb2RlLmdldCgpOyBuZXh0OyBuZXh0ID0gbmV4dC0+bGFz
dENoaWxkKCkpCiAgICAgICAgIGN1cnJlbnROb2RlID0gbmV4dDsKIAogICAgIGlmIChjdXJyZW50
Tm9kZS0+Y2FsbElkZW50aWZpZXIoKS5mdW5jdGlvbk5hbWUoKSAhPSAicHJvZmlsZUVuZCIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEF0dHJpYnV0ZSB0aGUgdGltZSBvZiB0aGUgbm9kZSBh
b2J1dCB0byBiZSByZW1vdmVkIHRvIHRoZSBzZWxmIHRpbWUgb2YgaXRzIHBhcmVudAotICAgIGN1
cnJlbnROb2RlLT5wYXJlbnQoKS0+c2V0U2VsZlRpbWUoY3VycmVudE5vZGUtPnBhcmVudCgpLT5z
ZWxmVGltZSgpICsgY3VycmVudE5vZGUtPnRvdGFsVGltZSgpKTsKLQogICAgIEFTU0VSVChjdXJy
ZW50Tm9kZS0+Y2FsbElkZW50aWZpZXIoKSA9PSAoY3VycmVudE5vZGUtPnBhcmVudCgpLT5jaGls
ZHJlbigpW2N1cnJlbnROb2RlLT5wYXJlbnQoKS0+Y2hpbGRyZW4oKS5zaXplKCkgLSAxXSktPmNh
bGxJZGVudGlmaWVyKCkpOwogICAgIGN1cnJlbnROb2RlLT5wYXJlbnQoKS0+cmVtb3ZlQ2hpbGQo
Y3VycmVudE5vZGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVHZW5lcmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Q
cm9maWxlR2VuZXJhdG9yLmgKaW5kZXggMDNkZTA2OTljYzZhMTkwZWU2ZDg3NWM5YjcwNDU5MDFi
ZDJiZmE1ZS4uNDU0M2RlZjJjYzE5NGE1ZTE3YzAwOWZmYjExOWEwZjY4MWEyMTU2OSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVHZW5lcmF0b3IuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZUdlbmVyYXRvci5oCkBA
IC0yMiw3ICsyMiw3IEBACiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KLSAK
KwogI2lmbmRlZiBQcm9maWxlR2VuZXJhdG9yX2gKICNkZWZpbmUgUHJvZmlsZUdlbmVyYXRvcl9o
CiAKQEAgLTM3LDcgKzM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CiAgICAgY2xhc3MgUHJvZmlsZTsKICAgICBjbGFzcyBQcm9maWxlTm9kZTsKLSAgICBz
dHJ1Y3QgQ2FsbElkZW50aWZpZXI7ICAgIAorICAgIHN0cnVjdCBDYWxsSWRlbnRpZmllcjsKIAog
ICAgIGNsYXNzIFByb2ZpbGVHZW5lcmF0b3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQcm9maWxlR2Vu
ZXJhdG9yPiAgewogICAgIHB1YmxpYzoKQEAgLTcwLDcgKzcwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZlB0cjxQcm9maWxlPiBtX3Byb2ZpbGU7CiAgICAgICAgIEpTR2xvYmFsT2Jq
ZWN0KiBtX29yaWdpbjsKICAgICAgICAgdW5zaWduZWQgbV9wcm9maWxlR3JvdXA7Ci0gICAgICAg
IFJlZlB0cjxQcm9maWxlTm9kZT4gbV9oZWFkOworICAgICAgICBSZWZQdHI8UHJvZmlsZU5vZGU+
IG1fcm9vdE5vZGU7CiAgICAgICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbV9jdXJyZW50Tm9kZTsK
ICAgICAgICAgYm9vbCBtX2ZvdW5kQ29uc29sZVN0YXJ0UGFyZW50OwogICAgIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVOb2RlLmNwcAppbmRleCBjYjg2Nzg3
MjRhY2RkZTg2NzRjYjYyNjFlZTI2MzkzMzEyMTk3MjhkLi5iNjExNTAwYWQ4Mzc0OWE1NmY3OGFh
MGI0YjI5MzQ5YTdlM2FkNmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJv
ZmlsZXIvUHJvZmlsZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ci9Qcm9maWxlTm9kZS5jcHAKQEAgLTM4LDI2ICszOCwyMCBAQCB1c2luZyBuYW1lc3BhY2UgV1RG
OwogCiBuYW1lc3BhY2UgSlNDIHsKIAotUHJvZmlsZU5vZGU6OlByb2ZpbGVOb2RlKEV4ZWNTdGF0
ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50aWZpZXIs
IFByb2ZpbGVOb2RlKiBoZWFkTm9kZSwgUHJvZmlsZU5vZGUqIHBhcmVudE5vZGUpCitQcm9maWxl
Tm9kZTo6UHJvZmlsZU5vZGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNvbnN0IENhbGxJ
ZGVudGlmaWVyJiBjYWxsSWRlbnRpZmllciwgUHJvZmlsZU5vZGUqIHBhcmVudE5vZGUpCiAgICAg
OiBtX2NhbGxlckNhbGxGcmFtZShjYWxsZXJDYWxsRnJhbWUpCiAgICAgLCBtX2NhbGxJZGVudGlm
aWVyKGNhbGxJZGVudGlmaWVyKQotICAgICwgbV9oZWFkKGhlYWROb2RlKQogICAgICwgbV9wYXJl
bnQocGFyZW50Tm9kZSkKICAgICAsIG1fbmV4dFNpYmxpbmcobnVsbHB0cikKLSAgICAsIG1fdG90
YWxUaW1lKDApCi0gICAgLCBtX3NlbGZUaW1lKDApCiB7CiAgICAgc3RhcnRUaW1lcigpOwogfQog
Ci1Qcm9maWxlTm9kZTo6UHJvZmlsZU5vZGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIFBy
b2ZpbGVOb2RlKiBoZWFkTm9kZSwgUHJvZmlsZU5vZGUqIG5vZGVUb0NvcHkpCitQcm9maWxlTm9k
ZTo6UHJvZmlsZU5vZGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIFByb2ZpbGVOb2RlKiBu
b2RlVG9Db3B5KQogICAgIDogbV9jYWxsZXJDYWxsRnJhbWUoY2FsbGVyQ2FsbEZyYW1lKQogICAg
ICwgbV9jYWxsSWRlbnRpZmllcihub2RlVG9Db3B5LT5jYWxsSWRlbnRpZmllcigpKQotICAgICwg
bV9oZWFkKGhlYWROb2RlKQogICAgICwgbV9wYXJlbnQobm9kZVRvQ29weS0+cGFyZW50KCkpCi0g
ICAgLCBtX25leHRTaWJsaW5nKDApCi0gICAgLCBtX3RvdGFsVGltZShub2RlVG9Db3B5LT50b3Rh
bFRpbWUoKSkKLSAgICAsIG1fc2VsZlRpbWUobm9kZVRvQ29weS0+c2VsZlRpbWUoKSkKKyAgICAs
IG1fbmV4dFNpYmxpbmcobnVsbHB0cikKICAgICAsIG1fY2FsbHMobm9kZVRvQ29weS0+Y2FsbHMo
KSkKIHsKIH0KQEAgLTcxLDcgKzY1LDcgQEAgUHJvZmlsZU5vZGUqIFByb2ZpbGVOb2RlOjp3aWxs
RXhlY3V0ZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgY29uc3QgQ2FsbElkZW4KICAgICAg
ICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbmV3Q2hpbGQgPSBQcm9maWxl
Tm9kZTo6Y3JlYXRlKGNhbGxlckNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIsIG1faGVhZCA/IG1f
aGVhZCA6IHRoaXMsIHRoaXMpOyAvLyBJZiB0aGlzIFByb2ZpbGVOb2RlIGhhcyBubyBoZWFkIGl0
IGlzIHRoZSBoZWFkLgorICAgIFJlZlB0cjxQcm9maWxlTm9kZT4gbmV3Q2hpbGQgPSBQcm9maWxl
Tm9kZTo6Y3JlYXRlKGNhbGxlckNhbGxGcmFtZSwgY2FsbElkZW50aWZpZXIsIHRoaXMpOwogICAg
IGlmIChtX2NoaWxkcmVuLnNpemUoKSkKICAgICAgICAgbV9jaGlsZHJlbi5sYXN0KCktPnNldE5l
eHRTaWJsaW5nKG5ld0NoaWxkLmdldCgpKTsKICAgICBtX2NoaWxkcmVuLmFwcGVuZChuZXdDaGls
ZC5yZWxlYXNlKCkpOwpAQCAtMTA0LDcgKzk4LDcgQEAgdm9pZCBQcm9maWxlTm9kZTo6cmVtb3Zl
Q2hpbGQoUHJvZmlsZU5vZGUqIG5vZGUpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgIH0KLSAgICAKKwogICAgIHJlc2V0Q2hpbGRyZW5zU2libGluZ3MoKTsKIH0KIApAQCAtMTI1
LDEzICsxMTksNiBAQCB2b2lkIFByb2ZpbGVOb2RlOjpzdG9wUHJvZmlsaW5nKCkKIAogICAgIGlm
IChpc25hbihtX2NhbGxzLmxhc3QoKS50b3RhbFRpbWUoKSkpCiAgICAgICAgIGVuZEFuZFJlY29y
ZENhbGwoKTsKLQotICAgIC8vIEJlY2F1c2Ugd2UgaXRlcmF0ZSBpbiBwb3N0IG9yZGVyIGFsbCBv
ZiBvdXIgY2hpbGRyZW4gaGF2ZSBiZWVuIHN0b3BwZWQgYmVmb3JlIHVzLgotICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2NoaWxkcmVuLnNpemUoKTsgKytpKQotICAgICAgICBtX3NlbGZU
aW1lICs9IG1fY2hpbGRyZW5baV0tPnRvdGFsVGltZSgpOwotCi0gICAgQVNTRVJUKG1fc2VsZlRp
bWUgPD0gbV90b3RhbFRpbWUpOwotICAgIG1fc2VsZlRpbWUgPSBtX3RvdGFsVGltZSAtIG1fc2Vs
ZlRpbWU7CiB9CiAKIFByb2ZpbGVOb2RlKiBQcm9maWxlTm9kZTo6dHJhdmVyc2VOZXh0Tm9kZVBv
c3RPcmRlcigpIGNvbnN0CkBAIC0xNTAsOCArMTM3LDYgQEAgdm9pZCBQcm9maWxlTm9kZTo6ZW5k
QW5kUmVjb3JkQ2FsbCgpCiAgICAgQVNTRVJUKGlzbmFuKGxhc3QudG90YWxUaW1lKCkpKTsKIAog
ICAgIGxhc3Quc2V0VG90YWxUaW1lKGN1cnJlbnRUaW1lKCkgLSBsYXN0LnN0YXJ0VGltZSgpKTsK
LQotICAgIG1fdG90YWxUaW1lICs9IGxhc3QudG90YWxUaW1lKCk7CiB9CiAKIHZvaWQgUHJvZmls
ZU5vZGU6OnN0YXJ0VGltZXIoKQpAQCAtMTY3LDMyICsxNTIsNjMgQEAgdm9pZCBQcm9maWxlTm9k
ZTo6cmVzZXRDaGlsZHJlbnNTaWJsaW5ncygpCiB9CiAKICNpZm5kZWYgTkRFQlVHCi12b2lkIFBy
b2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YShpbnQgaW5kZW50TGV2ZWwpIGNvbnN0Cit2b2lkIFBy
b2ZpbGVOb2RlOjpkZWJ1Z1ByaW50KCkKK3sKKyAgICBDYWxjdWxhdGVQcm9maWxlU3VidHJlZURh
dGFGdW5jdG9yIGZ1bmN0b3I7CisgICAgZm9yRWFjaE5vZGVQb3N0b3JkZXIoZnVuY3Rvcik7Cisg
ICAgUHJvZmlsZU5vZGU6OlByb2ZpbGVTdWJ0cmVlRGF0YSBkYXRhID0gZnVuY3Rvci5yZXR1cm5W
YWx1ZSgpOworCisgICAgZGVidWdQcmludFJlY3Vyc2l2ZWx5KDAsIGRhdGEpOworfQorCit2b2lk
IFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50U2FtcGxlU3R5bGUoKQoreworICAgIEZ1bmN0aW9uQ2Fs
bEhhc2hDb3VudCBjb3VudGVkRnVuY3Rpb25zOworCisgICAgQ2FsY3VsYXRlUHJvZmlsZVN1YnRy
ZWVEYXRhRnVuY3RvciBmdW5jdG9yOworICAgIGZvckVhY2hOb2RlUG9zdG9yZGVyKGZ1bmN0b3Ip
OworICAgIFByb2ZpbGVOb2RlOjpQcm9maWxlU3VidHJlZURhdGEgZGF0YSA9IGZ1bmN0b3IucmV0
dXJuVmFsdWUoKTsKKworICAgIGRlYnVnUHJpbnRTYW1wbGVTdHlsZVJlY3Vyc2l2ZWx5KDAsIGNv
dW50ZWRGdW5jdGlvbnMsIGRhdGEpOworfQorCit2b2lkIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50
UmVjdXJzaXZlbHkoaW50IGluZGVudExldmVsLCBjb25zdCBQcm9maWxlU3VidHJlZURhdGEmIGRh
dGEpCiB7CiAgICAgLy8gUHJpbnQgZnVuY3Rpb24gbmFtZXMKICAgICBmb3IgKGludCBpID0gMDsg
aSA8IGluZGVudExldmVsOyArK2kpCiAgICAgICAgIGRhdGFMb2dGKCIgICIpOwogCisgICAgYXV0
byBpdCA9IGRhdGEuc2VsZkFuZFRvdGFsVGltZXMuZmluZCh0aGlzKTsKKyAgICBBU1NFUlQoaXQg
IT0gZGF0YS5zZWxmQW5kVG90YWxUaW1lcy5lbmQoKSk7CisKKyAgICBkb3VibGUgbm9kZVNlbGZU
aW1lID0gaXQtPnZhbHVlLmZpcnN0OworICAgIGRvdWJsZSBub2RlVG90YWxUaW1lID0gaXQtPnZh
bHVlLnNlY29uZDsKKyAgICBkb3VibGUgcm9vdFRvdGFsVGltZSA9IGRhdGEucm9vdFRvdGFsVGlt
ZTsKKwogICAgIGRhdGFMb2dGKCJGdW5jdGlvbiBOYW1lICVzICV6dSBTZWxmVGltZSAlLjNmbXMv
JS4zZiUlIFRvdGFsVGltZSAlLjNmbXMvJS4zZiUlIE5leHQgU2libGluZyAlc1xuIiwKICAgICAg
ICAgZnVuY3Rpb25OYW1lKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbnVtYmVyT2ZDYWxscygp
LCBtX3NlbGZUaW1lLCBzZWxmUGVyY2VudCgpLCBtX3RvdGFsVGltZSwgdG90YWxQZXJjZW50KCks
CisgICAgICAgIG51bWJlck9mQ2FsbHMoKSwgbm9kZVNlbGZUaW1lLCBub2RlU2VsZlRpbWUgLyBy
b290VG90YWxUaW1lICogMTAwLjAsIG5vZGVUb3RhbFRpbWUsIG5vZGVUb3RhbFRpbWUgLyByb290
VG90YWxUaW1lICogMTAwLjAsCiAgICAgICAgIG1fbmV4dFNpYmxpbmcgPyBtX25leHRTaWJsaW5n
LT5mdW5jdGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpIDogIiIpOwogCiAgICAgKytpbmRlbnRMZXZl
bDsKIAogICAgIC8vIFByaW50IGNoaWxkcmVuJ3MgbmFtZXMgYW5kIGluZm9ybWF0aW9uCiAgICAg
Zm9yIChTdGFja0l0ZXJhdG9yIGN1cnJlbnRDaGlsZCA9IG1fY2hpbGRyZW4uYmVnaW4oKTsgY3Vy
cmVudENoaWxkICE9IG1fY2hpbGRyZW4uZW5kKCk7ICsrY3VycmVudENoaWxkKQotICAgICAgICAo
KmN1cnJlbnRDaGlsZCktPmRlYnVnUHJpbnREYXRhKGluZGVudExldmVsKTsKKyAgICAgICAgKCpj
dXJyZW50Q2hpbGQpLT5kZWJ1Z1ByaW50UmVjdXJzaXZlbHkoaW5kZW50TGV2ZWwsIGRhdGEpOwog
fQogCiAvLyBwcmludCB0aGUgcHJvZmlsZWQgZGF0YSBpbiBhIGZvcm1hdCB0aGF0IG1hdGNoZXMg
dGhlIHRvb2wgc2FtcGxlJ3Mgb3V0cHV0LgotZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50
RGF0YVNhbXBsZVN0eWxlKGludCBpbmRlbnRMZXZlbCwgRnVuY3Rpb25DYWxsSGFzaENvdW50JiBj
b3VudGVkRnVuY3Rpb25zKSBjb25zdAorZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50U2Ft
cGxlU3R5bGVSZWN1cnNpdmVseShpbnQgaW5kZW50TGV2ZWwsIEZ1bmN0aW9uQ2FsbEhhc2hDb3Vu
dCYgY291bnRlZEZ1bmN0aW9ucywgY29uc3QgUHJvZmlsZVN1YnRyZWVEYXRhJiBkYXRhKQogewog
ICAgIGRhdGFMb2dGKCIgICAgIik7CiAKKyAgICBhdXRvIGl0ID0gZGF0YS5zZWxmQW5kVG90YWxU
aW1lcy5maW5kKHRoaXMpOworICAgIEFTU0VSVChpdCAhPSBkYXRhLnNlbGZBbmRUb3RhbFRpbWVz
LmVuZCgpKTsKKyAgICBkb3VibGUgbm9kZVRvdGFsVGltZSA9IGl0LT52YWx1ZS5zZWNvbmQ7CisK
ICAgICAvLyBQcmludCBmdW5jdGlvbiBuYW1lcwogICAgIGNvbnN0IGNoYXIqIG5hbWUgPSBmdW5j
dGlvbk5hbWUoKS51dGY4KCkuZGF0YSgpOwotICAgIGRvdWJsZSBzYW1wbGVDb3VudCA9IG1fdG90
YWxUaW1lICogMTAwMDsKKyAgICBkb3VibGUgc2FtcGxlQ291bnQgPSBub2RlVG90YWxUaW1lICog
MTAwMDsKICAgICBpZiAoaW5kZW50TGV2ZWwpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBpbmRlbnRMZXZlbDsgKytpKQogICAgICAgICAgICAgZGF0YUxvZ0YoIiAgIik7CkBAIC0yMDgs
NyArMjI0LDcgQEAgZG91YmxlIFByb2ZpbGVOb2RlOjpkZWJ1Z1ByaW50RGF0YVNhbXBsZVN0eWxl
KGludCBpbmRlbnRMZXZlbCwgRnVuY3Rpb25DYWxsSGFzaEMKICAgICAvLyBQcmludCBjaGlsZHJl
bidzIG5hbWVzIGFuZCBpbmZvcm1hdGlvbgogICAgIGRvdWJsZSBzdW1PZkNoaWxkcmVuc0NvdW50
ID0gMC4wOwogICAgIGZvciAoU3RhY2tJdGVyYXRvciBjdXJyZW50Q2hpbGQgPSBtX2NoaWxkcmVu
LmJlZ2luKCk7IGN1cnJlbnRDaGlsZCAhPSBtX2NoaWxkcmVuLmVuZCgpOyArK2N1cnJlbnRDaGls
ZCkKLSAgICAgICAgc3VtT2ZDaGlsZHJlbnNDb3VudCArPSAoKmN1cnJlbnRDaGlsZCktPmRlYnVn
UHJpbnREYXRhU2FtcGxlU3R5bGUoaW5kZW50TGV2ZWwsIGNvdW50ZWRGdW5jdGlvbnMpOworICAg
ICAgICBzdW1PZkNoaWxkcmVuc0NvdW50ICs9ICgqY3VycmVudENoaWxkKS0+ZGVidWdQcmludFNh
bXBsZVN0eWxlUmVjdXJzaXZlbHkoaW5kZW50TGV2ZWwsIGNvdW50ZWRGdW5jdGlvbnMsIGRhdGEp
OwogCiAgICAgc3VtT2ZDaGlsZHJlbnNDb3VudCAqPSAxMDAwOyAgICAvLwogICAgIC8vIFByaW50
IHJlbWFpbmRlciBvZiBzYW1wbGVzIHRvIG1hdGNoIHNhbXBsZSdzIG91dHB1dApAQCAtMjIwLDcg
KzIzNiw3IEBAIGRvdWJsZSBQcm9maWxlTm9kZTo6ZGVidWdQcmludERhdGFTYW1wbGVTdHlsZShp
bnQgaW5kZW50TGV2ZWwsIEZ1bmN0aW9uQ2FsbEhhc2hDCiAgICAgICAgIGRhdGFMb2dGKCIlLjBm
ICVzXG4iLCBzYW1wbGVDb3VudCAtIHN1bU9mQ2hpbGRyZW5zQ291bnQsIGZ1bmN0aW9uTmFtZSgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAotICAgIHJldHVybiBtX3RvdGFsVGltZTsKKyAgICBy
ZXR1cm4gbm9kZVRvdGFsVGltZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZU5vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCmluZGV4IDJiYjM0MDZjMDQ5MmM4YjhiZTVkZmE0YTMx
NjJkYTcyYTI1ZmViNTEuLjIzODVjZTE3ZGI1MDYzNmU0MzlkOTgyOWM5ODY1YTFhZjMzZTQ4MDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlTm9kZS5oCkBAIC00
NCwxNCArNDQsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBQcm9maWxlTm9kZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFByb2ZpbGVOb2RlPiB7CiAgICAgcHVibGljOgotICAgICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQcm9maWxlTm9kZT4gY3JlYXRlKEV4ZWNTdGF0ZSogY2FsbGVyQ2Fs
bEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYgY2FsbElkZW50aWZpZXIsIFByb2ZpbGVOb2Rl
KiBoZWFkTm9kZSwgUHJvZmlsZU5vZGUqIHBhcmVudE5vZGUpCisgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFByb2ZpbGVOb2RlPiBjcmVhdGUoRXhlY1N0YXRlKiBjYWxsZXJDYWxsRnJhbWUsIGNv
bnN0IENhbGxJZGVudGlmaWVyJiBjYWxsSWRlbnRpZmllciwgUHJvZmlsZU5vZGUqIHBhcmVudE5v
ZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvZmlsZU5v
ZGUoY2FsbGVyQ2FsbEZyYW1lLCBjYWxsSWRlbnRpZmllciwgaGVhZE5vZGUsIHBhcmVudE5vZGUp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgUHJvZmlsZU5vZGUoY2FsbGVyQ2Fs
bEZyYW1lLCBjYWxsSWRlbnRpZmllciwgcGFyZW50Tm9kZSkpOwogICAgICAgICB9CiAKLSAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZU5vZGU+IGNyZWF0ZShFeGVjU3RhdGUqIGNhbGxl
ckNhbGxGcmFtZSwgUHJvZmlsZU5vZGUqIGhlYWROb2RlLCBQcm9maWxlTm9kZSogbm9kZSkKKyAg
ICAgICAgc3RhdGljIFBhc3NSZWZQdHI8UHJvZmlsZU5vZGU+IGNyZWF0ZShFeGVjU3RhdGUqIGNh
bGxlckNhbGxGcmFtZSwgUHJvZmlsZU5vZGUqIG5vZGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgUHJvZmlsZU5vZGUoY2FsbGVyQ2FsbEZyYW1lLCBoZWFkTm9k
ZSwgbm9kZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQcm9maWxlTm9kZShj
YWxsZXJDYWxsRnJhbWUsIG5vZGUpKTsKICAgICAgICAgfQogCiAgICAgICAgIHN0cnVjdCBDYWxs
IHsKQEAgLTkwLDI2ICs5MCwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdW5zaWduZWQg
Y29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsSWRlbnRpZmllci5jb2x1bW5OdW1i
ZXIoKTsgfQogCiAgICAgICAgIC8vIFJlbGF0aW9uc2hpcHMKLSAgICAgICAgUHJvZmlsZU5vZGUq
IGhlYWQoKSBjb25zdCB7IHJldHVybiBtX2hlYWQ7IH0KLSAgICAgICAgdm9pZCBzZXRIZWFkKFBy
b2ZpbGVOb2RlKiBoZWFkKSB7IG1faGVhZCA9IGhlYWQ7IH0KLQogICAgICAgICBQcm9maWxlTm9k
ZSogcGFyZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYXJlbnQ7IH0KICAgICAgICAgdm9pZCBzZXRQ
YXJlbnQoUHJvZmlsZU5vZGUqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQogCiAgICAg
ICAgIFByb2ZpbGVOb2RlKiBuZXh0U2libGluZygpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dFNpYmxp
bmc7IH0KICAgICAgICAgdm9pZCBzZXROZXh0U2libGluZyhQcm9maWxlTm9kZSogbmV4dFNpYmxp
bmcpIHsgbV9uZXh0U2libGluZyA9IG5leHRTaWJsaW5nOyB9CiAKLSAgICAgICAgLy8gVGltZSBt
ZW1iZXJzCi0gICAgICAgIGRvdWJsZSB0b3RhbFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RvdGFs
VGltZTsgfQotICAgICAgICB2b2lkIHNldFRvdGFsVGltZShkb3VibGUgdGltZSkgeyBtX3RvdGFs
VGltZSA9IHRpbWU7IH0KLQotICAgICAgICBkb3VibGUgc2VsZlRpbWUoKSBjb25zdCB7IHJldHVy
biBtX3NlbGZUaW1lOyB9Ci0gICAgICAgIHZvaWQgc2V0U2VsZlRpbWUoZG91YmxlIHRpbWUpIHsg
bV9zZWxmVGltZSA9IHRpbWU7IH0KLQotICAgICAgICBkb3VibGUgdG90YWxQZXJjZW50KCkgY29u
c3QgeyByZXR1cm4gKG1fdG90YWxUaW1lIC8gKG1faGVhZCA/IG1faGVhZC0+dG90YWxUaW1lKCkg
OiB0b3RhbFRpbWUoKSkpICogMTAwLjA7IH0KLSAgICAgICAgZG91YmxlIHNlbGZQZXJjZW50KCkg
Y29uc3QgeyByZXR1cm4gKG1fc2VsZlRpbWUgLyAobV9oZWFkID8gbV9oZWFkLT50b3RhbFRpbWUo
KSA6IHRvdGFsVGltZSgpKSkgKiAxMDAuMDsgfQotCi0gICAgICAgIFZlY3RvcjxDYWxsPiBjYWxs
cygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbHM7IH0KKyAgICAgICAgY29uc3QgVmVjdG9yPENhbGw+
JiBjYWxscygpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbHM7IH0KICAgICAgICAgQ2FsbCYgbGFzdENh
bGwoKSB7IEFTU0VSVCghbV9jYWxscy5pc0VtcHR5KCkpOyByZXR1cm4gbV9jYWxscy5sYXN0KCk7
IH0KICAgICAgICAgc2l6ZV90IG51bWJlck9mQ2FsbHMoKSBjb25zdCB7IHJldHVybiBtX2NhbGxz
LnNpemUoKTsgfQogCkBAIC0xMjEsMzcgKzEwOCw4NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBhZGRDaGlsZChQYXNzUmVmUHRyPFByb2ZpbGVOb2RlPiBwcnBDaGlsZCk7CiAgICAg
ICAgIHZvaWQgaW5zZXJ0Tm9kZShQYXNzUmVmUHRyPFByb2ZpbGVOb2RlPiBwcnBOb2RlKTsKIAot
ICAgICAgICBQcm9maWxlTm9kZSogdHJhdmVyc2VOZXh0Tm9kZVBvc3RPcmRlcigpIGNvbnN0Owor
ICAgICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gdm9pZCBmb3JFYWNoTm9kZVBvc3Rv
cmRlcihGdW5jdG9yJik7CiAKICNpZm5kZWYgTkRFQlVHCisgICAgICAgIHN0cnVjdCBQcm9maWxl
U3VidHJlZURhdGEgeworICAgICAgICAgICAgSGFzaE1hcDxQcm9maWxlTm9kZSosIHN0ZDo6cGFp
cjxkb3VibGUsIGRvdWJsZT4+IHNlbGZBbmRUb3RhbFRpbWVzOworICAgICAgICAgICAgZG91Ymxl
IHJvb3RUb3RhbFRpbWU7CisgICAgICAgIH07CisKICAgICAgICAgY29uc3QgY2hhciogY19zdHIo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxJZGVudGlmaWVyOyB9Ci0gICAgICAgIHZvaWQgZGVidWdQ
cmludERhdGEoaW50IGluZGVudExldmVsKSBjb25zdDsKLSAgICAgICAgZG91YmxlIGRlYnVnUHJp
bnREYXRhU2FtcGxlU3R5bGUoaW50IGluZGVudExldmVsLCBGdW5jdGlvbkNhbGxIYXNoQ291bnQm
KSBjb25zdDsKKyAgICAgICAgLy8gVXNlIHRoZXNlIGZ1bmN0aW9ucyB0byBkdW1wIHRoZSBzdWJ0
cmVlIHJvb3RlZCBhdCB0aGlzIG5vZGUuCisgICAgICAgIHZvaWQgZGVidWdQcmludCgpOworICAg
ICAgICB2b2lkIGRlYnVnUHJpbnRTYW1wbGVTdHlsZSgpOworCisgICAgICAgIC8vIFRoZXNlIGFy
ZSB1c2VkIHRvIHJlY3Vyc2l2ZWx5IHByaW50IGVudGlyZSBzdWJ0cmVlcyB1c2luZyBwcmVjb21w
dXRlZCBzZWxmIGFuZCB0b3RhbCB0aW1lcy4KKyAgICAgICAgdm9pZCBkZWJ1Z1ByaW50UmVjdXJz
aXZlbHkoaW50IGluZGVudExldmVsLCBjb25zdCBQcm9maWxlU3VidHJlZURhdGEmKTsKKyAgICAg
ICAgZG91YmxlIGRlYnVnUHJpbnRTYW1wbGVTdHlsZVJlY3Vyc2l2ZWx5KGludCBpbmRlbnRMZXZl
bCwgRnVuY3Rpb25DYWxsSGFzaENvdW50JiwgY29uc3QgUHJvZmlsZVN1YnRyZWVEYXRhJik7CiAj
ZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxQcm9m
aWxlTm9kZT4+Ojpjb25zdF9pdGVyYXRvciBTdGFja0l0ZXJhdG9yOwogCi0gICAgICAgIFByb2Zp
bGVOb2RlKEV4ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYs
IFByb2ZpbGVOb2RlKiBoZWFkTm9kZSwgUHJvZmlsZU5vZGUqIHBhcmVudE5vZGUpOwotICAgICAg
ICBQcm9maWxlTm9kZShFeGVjU3RhdGUqIGNhbGxlckNhbGxGcmFtZSwgUHJvZmlsZU5vZGUqIGhl
YWROb2RlLCBQcm9maWxlTm9kZSogbm9kZVRvQ29weSk7CisgICAgICAgIFByb2ZpbGVOb2RlKEV4
ZWNTdGF0ZSogY2FsbGVyQ2FsbEZyYW1lLCBjb25zdCBDYWxsSWRlbnRpZmllciYsIFByb2ZpbGVO
b2RlKiBwYXJlbnROb2RlKTsKKyAgICAgICAgUHJvZmlsZU5vZGUoRXhlY1N0YXRlKiBjYWxsZXJD
YWxsRnJhbWUsIFByb2ZpbGVOb2RlKiBub2RlVG9Db3B5KTsKIAogICAgICAgICB2b2lkIHN0YXJ0
VGltZXIoKTsKICAgICAgICAgdm9pZCByZXNldENoaWxkcmVuc1NpYmxpbmdzKCk7CiAgICAgICAg
IHZvaWQgZW5kQW5kUmVjb3JkQ2FsbCgpOworICAgICAgICBQcm9maWxlTm9kZSogdHJhdmVyc2VO
ZXh0Tm9kZVBvc3RPcmRlcigpIGNvbnN0OwogCiAgICAgICAgIEV4ZWNTdGF0ZSogbV9jYWxsZXJD
YWxsRnJhbWU7CiAgICAgICAgIENhbGxJZGVudGlmaWVyIG1fY2FsbElkZW50aWZpZXI7Ci0gICAg
ICAgIFByb2ZpbGVOb2RlKiBtX2hlYWQ7CiAgICAgICAgIFByb2ZpbGVOb2RlKiBtX3BhcmVudDsK
ICAgICAgICAgUHJvZmlsZU5vZGUqIG1fbmV4dFNpYmxpbmc7CiAKLSAgICAgICAgZG91YmxlIG1f
dG90YWxUaW1lOwotICAgICAgICBkb3VibGUgbV9zZWxmVGltZTsKLQotICAgICAgICBWZWN0b3I8
Q2FsbCwgMT4gbV9jYWxsczsKKyAgICAgICAgVmVjdG9yPENhbGw+IG1fY2FsbHM7CiAgICAgICAg
IFZlY3RvcjxSZWZQdHI8UHJvZmlsZU5vZGU+PiBtX2NoaWxkcmVuOwogICAgIH07CiAKKyAgICB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHZvaWQgUHJvZmlsZU5vZGU6OmZvckVh
Y2hOb2RlUG9zdG9yZGVyKEZ1bmN0b3ImIGZ1bmN0b3IpCisgICAgeworICAgICAgICBQcm9maWxl
Tm9kZSogY3VycmVudE5vZGUgPSB0aGlzOworICAgICAgICAvLyBHbyBkb3duIHRvIHRoZSBmaXJz
dCBub2RlIG9mIHRoZSB0cmF2ZXJzYWwsIGFuZCBzbG93bHkgd2FsayBiYWNrIHVwLgorICAgICAg
ICBmb3IgKFByb2ZpbGVOb2RlKiBuZXh0Tm9kZSA9IGN1cnJlbnROb2RlOyBuZXh0Tm9kZTsgbmV4
dE5vZGUgPSBuZXh0Tm9kZS0+Zmlyc3RDaGlsZCgpKQorICAgICAgICAgICAgY3VycmVudE5vZGUg
PSBuZXh0Tm9kZTsKKworICAgICAgICBQcm9maWxlTm9kZSogZW5kTm9kZSA9IHRoaXM7CisgICAg
ICAgIHdoaWxlIChjdXJyZW50Tm9kZSAmJiBjdXJyZW50Tm9kZSAhPSBlbmROb2RlKSB7CisgICAg
ICAgICAgICBmdW5jdG9yKGN1cnJlbnROb2RlKTsKKyAgICAgICAgICAgIGN1cnJlbnROb2RlID0g
Y3VycmVudE5vZGUtPnRyYXZlcnNlTmV4dE5vZGVQb3N0T3JkZXIoKTsKKyAgICAgICAgfQorCisg
ICAgICAgIGZ1bmN0b3IoZW5kTm9kZSk7CisgICAgfQorCisjaWZuZGVmIE5ERUJVRworICAgIHN0
cnVjdCBDYWxjdWxhdGVQcm9maWxlU3VidHJlZURhdGFGdW5jdG9yIHsKKyAgICAgICAgdm9pZCBv
cGVyYXRvcigpKFByb2ZpbGVOb2RlKiBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICBkb3Vi
bGUgc2VsZlRpbWUgPSAwLjA7CisgICAgICAgICAgICBmb3IgKGNvbnN0IFByb2ZpbGVOb2RlOjpD
YWxsJiBjYWxsIDogbm9kZS0+Y2FsbHMoKSkKKyAgICAgICAgICAgICAgICBzZWxmVGltZSArPSBj
YWxsLnRvdGFsVGltZSgpOworCisgICAgICAgICAgICBkb3VibGUgdG90YWxUaW1lID0gc2VsZlRp
bWU7CisgICAgICAgICAgICBmb3IgKFJlZlB0cjxQcm9maWxlTm9kZT4gY2hpbGQgOiBub2RlLT5j
aGlsZHJlbigpKSB7CisgICAgICAgICAgICAgICAgYXV0byBpdCA9IG1fZGF0YS5zZWxmQW5kVG90
YWxUaW1lcy5maW5kKGNoaWxkLmdldCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXQgIT0gbV9k
YXRhLnNlbGZBbmRUb3RhbFRpbWVzLmVuZCgpKQorICAgICAgICAgICAgICAgICAgICB0b3RhbFRp
bWUgKz0gaXQtPnZhbHVlLnNlY29uZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQVNT
RVJUKG5vZGUpOworICAgICAgICAgICAgbV9kYXRhLnNlbGZBbmRUb3RhbFRpbWVzLnNldChub2Rl
LCBzdGQ6Om1ha2VfcGFpcihzZWxmVGltZSwgdG90YWxUaW1lKSk7CisgICAgICAgIH0KKworICAg
ICAgICBQcm9maWxlTm9kZTo6UHJvZmlsZVN1YnRyZWVEYXRhIHJldHVyblZhbHVlKCkgeyByZXR1
cm4gV1RGOjptb3ZlKG1fZGF0YSk7IH0KKworICAgICAgICBQcm9maWxlTm9kZTo6UHJvZmlsZVN1
YnRyZWVEYXRhIG1fZGF0YTsKKyAgICB9OworI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIEpTQwog
CiAjZW5kaWYgLy8gUHJvZmlsZU5vZGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29uc29sZUNsaWVudC5oCmluZGV4IGE1ZjllMjAwNWFkMjVhOTJlMzY4ODMzM2RlMTU4MjMw
NTZmMmViNjEuLjhmNGYxOTNlN2JjZjdlN2JmNjUwODg1YjczNzA2Njk0NGE2ZGEwZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmgKQEAgLTI3LDcg
KzI3LDYgQEAKICNkZWZpbmUgQ29uc29sZUNsaWVudF9oCiAKICNpbmNsdWRlICJDb25zb2xlVHlw
ZXMuaCIKLSNpbmNsdWRlICJQcm9maWxlLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvU2NyaXB0UHJvZmlsZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJv
ZmlsZS5pZGwKaW5kZXggM2JiZTY2Mjk1ZWRhODZjMjQzY2ExY2MwZDFlMzA4OTY2NTkzNzZlMy4u
MzkzYzhiYTI1ZDYxODVkOGMxMGU3M2M3NDdmMjljZDZmMWE4NDM2YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9TY3JpcHRQcm9maWxlLmlkbApAQCAtMzAsNyArMzAsNiBAQAogXSBpbnRl
cmZhY2UgU2NyaXB0UHJvZmlsZSB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0
aXRsZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB1aWQ7Ci0gICAgcmVh
ZG9ubHkgYXR0cmlidXRlIFNjcmlwdFByb2ZpbGVOb2RlIGhlYWQ7Ci0gICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUgaWRsZVRpbWU7CisgICAgcmVhZG9ubHkgYXR0cmli
dXRlIFNjcmlwdFByb2ZpbGVOb2RlIHJvb3ROb2RlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2ZpbGVOb2RlLmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9TY3JpcHRQcm9maWxlTm9kZS5pZGwKaW5kZXggMGI2ZDQ3ZWNlMzk0ZWY0YjZj
MTZiMjUxYjQ4MzUzYjQ5NjE5NmI4ZS4uZTgxN2EwMDdkYjM5MjNmMGVlOTdmZDhjZmJmMTk3ZjIw
Y2QxMmE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1NjcmlwdFByb2Zp
bGVOb2RlLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0UHJvZmlsZU5v
ZGUuaWRsCkBAIC0zNiw5ICszNiw2IEBACiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVk
IGxvbmcgbGluZU51bWJlcjsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBj
b2x1bW5OdW1iZXI7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5yZXN0cmljdGVkIGRvdWJs
ZSB0b3RhbFRpbWU7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVucmVzdHJpY3RlZCBkb3VibGUg
c2VsZlRpbWU7Ci0KICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBudW1iZXJP
ZkNhbGxzOwogCiAgICAgc2VxdWVuY2U8U2NyaXB0UHJvZmlsZU5vZGU+IGNoaWxkcmVuKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
ZmlsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9m
aWxlLmpzCmluZGV4IDhjZmIwYTk1YjliNDA4OWQ2ZDg3YTI3ZTJiMDk1ZjRjN2ZmYWM0YjcuLjc3
ZWQ4MDgyYTZkNDc1ZGY0ODA0YjhjYzE3M2FlY2RjMThiN2E3ODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9maWxlLmpzCkBAIC0y
Myw3ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAot
V2ViSW5zcGVjdG9yLlByb2ZpbGUgPSBmdW5jdGlvbih0b3BEb3duUm9vdE5vZGVzLCBpZGxlVGlt
ZSkKK1dlYkluc3BlY3Rvci5Qcm9maWxlID0gZnVuY3Rpb24odG9wRG93blJvb3ROb2RlcykKIHsK
ICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CiAKQEAgLTMzLDcgKzMzLDYgQEAg
V2ViSW5zcGVjdG9yLlByb2ZpbGUgPSBmdW5jdGlvbih0b3BEb3duUm9vdE5vZGVzLCBpZGxlVGlt
ZSkKICAgICBjb25zb2xlLmFzc2VydCh0b3BEb3duUm9vdE5vZGVzLnJlZHVjZShmdW5jdGlvbihw
cmV2aW91c1ZhbHVlLCBub2RlKSB7IHJldHVybiBwcmV2aW91c1ZhbHVlICYmIG5vZGUgaW5zdGFu
Y2VvZiBXZWJJbnNwZWN0b3IuUHJvZmlsZU5vZGU7IH0sIHRydWUpKTsKIAogICAgIHRoaXMuX3Rv
cERvd25Sb290Tm9kZXMgPSB0b3BEb3duUm9vdE5vZGVzOwotICAgIHRoaXMuX2lkbGVUaW1lID0g
aWRsZVRpbWUgfHwgMDsKIH07CiAKIFdlYkluc3BlY3Rvci5Qcm9maWxlLnByb3RvdHlwZSA9IHsK
QEAgLTQyLDExICs0MSw2IEBAIFdlYkluc3BlY3Rvci5Qcm9maWxlLnByb3RvdHlwZSA9IHsKIAog
ICAgIC8vIFB1YmxpYwogCi0gICAgZ2V0IGlkbGVUaW1lKCkKLSAgICB7Ci0gICAgICAgIHJldHVy
biB0aGlzLl9pZGxlVGltZTsKLSAgICB9LAotCiAgICAgZ2V0IHRvcERvd25Sb290Tm9kZXMoKQog
ICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3RvcERvd25Sb290Tm9kZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0VGltZWxp
bmVSZWNvcmQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
U2NyaXB0VGltZWxpbmVSZWNvcmQuanMKaW5kZXggODRlYmQxNzk1ZDBhZDE1ZDkzMDZmMDE4N2U4
NTJkYmMwMmE4NGZjNi4uNGRjM2M3ZDlkYzc0MjA5ZjcxODdhMGQzOTE1MTNiNmY4Zjc2MmE0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Nj
cmlwdFRpbWVsaW5lUmVjb3JkLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9TY3JpcHRUaW1lbGluZVJlY29yZC5qcwpAQCAtMzQ2LDcgKzM0Niw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRUaW1lbGluZVJlY29yZC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICB0aGlzLl9wcm9maWxlID0gbmV3IFdlYkluc3Bl
Y3Rvci5Qcm9maWxlKHJvb3ROb2RlcywgcGF5bG9hZC5pZGxlVGltZSk7CisgICAgICAgIHRoaXMu
X3Byb2ZpbGUgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2ZpbGUocm9vdE5vZGVzKTsKICAgICB9CiB9
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggODM5MTE2NmJmZDJhNmQ2MDcwY2RmMGM0NDgxMzkwMTQzNmQ2MjA2Ni4uOWY1
ZWI1ZDkyMmJjYzhkMjI2OWRkNzNmMTk2OTk1MTg2MGNhMjlhMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDE0LTA4LTMwICBCcmlhbiBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4K
KworICAgICAgICBMZWdhY3lQcm9maWxlcjogcmVtb3ZlIHJlZHVuZGFudCBQcm9maWxlTm9kZSBt
ZW1iZXJzIGFuZCBvdGhlciBjbGVhbnVwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzYzODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSZW5hbWVkIFByb2ZpbGUuaGVhZCB0byBQcm9maWxlLnJvb3ROb2Rl
LgorCisgICAgICAgICogZmFzdC9wcm9maWxlci9yZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1y
ZXNvdXJjZXMuanM6CisgICAgICAgIChwcmludEhlYXZ5UHJvZmlsZXNEYXRhV2l0aG91dFRpbWUp
OgorICAgICAgICAocHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGltZSk6CisKIDIwMTQtMDgtMzAg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkIEVGTCBnYXJkZW5pbmcuIE1hcmsgc29tZSBjb21wb3NpdGluZyB0ZXN0cyBhcyAiZmFp
bHVyZSIgc2luY2UgcjE3Mjk5OQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxl
ci9yZXNvdXJjZXMvcHJvZmlsZXItdGVzdC1KUy1yZXNvdXJjZXMuanMgYi9MYXlvdXRUZXN0cy9m
YXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcwppbmRl
eCBkNjdkNGJhOGQ3YWZjMWVhOGQ3OTUzZjVjY2NlM2E2ZTcxNmU0MGY4Li43NjM1NDJmNTFmMzIz
YjYwMmEyNGRkMDEwMWEwOWYxYzY0ZTVjOGI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5qcworKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL3Jlc291cmNlcy9wcm9maWxlci10ZXN0LUpTLXJlc291
cmNlcy5qcwpAQCAtNTIsNyArNTIsNyBAQCBmdW5jdGlvbiBwcmludEhlYXZ5UHJvZmlsZXNEYXRh
V2l0aG91dFRpbWUoKQogICAgIHZhciBwcm9maWxlcyA9IGludGVybmFscy5jb25zb2xlUHJvZmls
ZXM7CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9maWxlcy5sZW5ndGg7ICsraSkgewogICAg
ICAgICBwcmVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJQcm9m
aWxlIHRpdGxlOiAiICsgcHJvZmlsZXNbaV0udGl0bGUgKyAiXG4iKSk7Ci0gICAgICAgIHByaW50
UHJvZmlsZU5vZGVXaXRob3V0VGltZShwcmVFbGVtZW50LCBwcm9maWxlc1tpXS5oZWF2eVByb2Zp
bGUuaGVhZCwgMCk7CisgICAgICAgIHByaW50UHJvZmlsZU5vZGVXaXRob3V0VGltZShwcmVFbGVt
ZW50LCBwcm9maWxlc1tpXS5oZWF2eVByb2ZpbGUucm9vdE5vZGUsIDApOwogICAgICAgICBwcmVF
bGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJcbiIpKTsKICAgICB9
CiAKQEAgLTY3LDcgKzY3LDcgQEAgZnVuY3Rpb24gcHJpbnRQcm9maWxlc0RhdGFXaXRob3V0VGlt
ZSgpCiAgICAgdmFyIHByb2ZpbGVzID0gaW50ZXJuYWxzLmNvbnNvbGVQcm9maWxlczsKICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIHByZUVs
ZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIlByb2ZpbGUgdGl0bGU6
ICIgKyBwcm9maWxlc1tpXS50aXRsZSArICJcbiIpKTsKLSAgICAgICAgcHJpbnRQcm9maWxlTm9k
ZVdpdGhvdXRUaW1lKHByZUVsZW1lbnQsIHByb2ZpbGVzW2ldLmhlYWQsIDApOworICAgICAgICBw
cmludFByb2ZpbGVOb2RlV2l0aG91dFRpbWUocHJlRWxlbWVudCwgcHJvZmlsZXNbaV0ucm9vdE5v
ZGUsIDApOwogICAgICAgICBwcmVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKCJcbiIpKTsKICAgICB9CiAK
</data>
<flag name="review"
          id="262144"
          type_id="1"
          status="+"
          setter="timothy"
    />
          </attachment>
      

    </bug>

</bugzilla>