<?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>135295</bug_id>
          
          <creation_ts>2014-07-25 11:03:56 -0700</creation_ts>
          <short_desc>Web Replay: dispatch timing information should be stored out-of-line in a replay segment</short_desc>
          <delta_ts>2014-08-06 14:53:42 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <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>kling</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1024856</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-25 11:03:56 -0700</bug_when>
    <thetext>We need to save a timestamp for each event loop input so that replay can simulate the original user and network delays. Currently that timestamp is stored on each event loop input instance.

I argue that it should be stored in a separate vector attached to the segment rather than as a member variable of some NondeterministicInput subclasses. This will make the event loop input class immutable, and make it easier to modify or add auxiliary debugging data in the future (such as how many DOM events we should expect per user action).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1024861</commentid>
    <comment_count>1</comment_count>
      <attachid>235528</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-07-25 11:21:06 -0700</bug_when>
    <thetext>Created attachment 235528
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027242</commentid>
    <comment_count>2</comment_count>
      <attachid>235528</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-06 11:38:10 -0700</bug_when>
    <thetext>Comment on attachment 235528
Patch

This patch is actually ready for review, don&apos;t know why I marked it WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027243</commentid>
    <comment_count>3</comment_count>
      <attachid>235528</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2014-08-06 11:41:12 -0700</bug_when>
    <thetext>Comment on attachment 235528
Patch

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

&gt; Source/WebCore/replay/CapturingInputCursor.cpp:47
&gt; +    UNUSED_PARAM(page);

I don&apos;t think this is needed since it was used when setting m_page.

&gt; Source/WebCore/replay/CapturingInputCursor.cpp:66
&gt; +        // FIXME: rewrite this (and related dispatch code) to use std::chrono.

Are we using std::chrono in other places now?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027245</commentid>
    <comment_count>4</comment_count>
      <attachid>235528</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-06 11:44:24 -0700</bug_when>
    <thetext>Comment on attachment 235528
Patch

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

&gt;&gt; Source/WebCore/replay/CapturingInputCursor.cpp:47
&gt;&gt; +    UNUSED_PARAM(page);
&gt; 
&gt; I don&apos;t think this is needed since it was used when setting m_page.

I think clang complains about m_page never being used. On my branch, I just removed the field and the various plumbing of it through constructors. (I guess that&apos;s why it was WIP? nothing else is different)

&gt;&gt; Source/WebCore/replay/CapturingInputCursor.cpp:66
&gt;&gt; +        // FIXME: rewrite this (and related dispatch code) to use std::chrono.
&gt; 
&gt; Are we using std::chrono in other places now?

It is andersca&apos;s New Favorite Thing. I haven&apos;t had time to figure it out, but it&apos;s supposedly good stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027246</commentid>
    <comment_count>5</comment_count>
      <attachid>236122</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2014-08-06 11:47:28 -0700</bug_when>
    <thetext>Created attachment 236122
Remove unused m_page member</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027309</commentid>
    <comment_count>6</comment_count>
      <attachid>236122</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-06 14:53:39 -0700</bug_when>
    <thetext>Comment on attachment 236122
Remove unused m_page member

Clearing flags on attachment: 236122

Committed r172180: &lt;http://trac.webkit.org/changeset/172180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1027310</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-06 14:53:42 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>235528</attachid>
            <date>2014-07-25 11:21:06 -0700</date>
            <delta_ts>2014-08-06 11:47:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135295-20140725112051.patch</filename>
            <type>text/plain</type>
            <size>26752</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcxMjQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjcwNjQ3ZWU0ODAyYWZj
MGVkMDViNTBmYWM4ZDI0ZGRlNWFlOWY3YS4uNmE3ZjFjZjk3NjdhNWFjMjMwZmViMjFlZjI5YmRi
M2I0YWU1YmRjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE0LTA3LTI1ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBkaXNwYXRjaCB0aW1pbmcgaW5mb3JtYXRpb24gc2hvdWxkIGJlIHN0b3JlZCBvdXQtb2YtbGlu
ZSBpbiBhIHJlcGxheSBzZWdtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzUyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBuZWVkIHRvIHNhdmUgYSB0aW1lc3RhbXAgZm9yIGVhY2ggZXZlbnQg
bG9vcCBpbnB1dCBzbyB0aGF0IHJlcGxheSBjYW4KKyAgICAgICAgc2ltdWxhdGUgdGhlIG9yaWdp
bmFsIHVzZXIgYW5kIG5ldHdvcmsgZGVsYXlzLiBDdXJyZW50bHkgdGhhdCB0aW1lc3RhbXAKKyAg
ICAgICAgaXMgc3RvcmVkIG9uIGVhY2ggRXZlbnRMb29wSW5wdXQgaW5zdGFuY2UuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzdG9yZXMgdGltZXN0YW1wIGRhdGEgaW4gYSBzZXBhcmF0ZSB2ZWN0b3Ig
YXR0YWNoZWQgdG8gdGhlIHNlZ21lbnQuCisgICAgICAgIFRoZSBldmVudCBsb29wIGlucHV0IGNs
YXNzIGlzIG5vdyBpbW11dGFibGUsIGFuZCBuZXcgYXV4aWxpYXJ5IGRhdGEgY2FuIGJlIGFkZGVk
CisgICAgICAgIHdpdGhvdXQgYWRkaW5nIG1lbWJlcnMgdG8gdGhlIEV2ZW50TG9vcElucHV0IGNs
YXNzLgorCisgICAgICAgIEFzIHBhcnQgb2YgdGhlIHJlZmFjdG9yaW5nLCBJbnB1dEN1cnNvcnMg
bm93IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHJlbGV2YW50CisgICAgICAgIHNlc3Npb24gc2Vn
bWVudCBpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlIHRvIHRoZWlyIGlucHV0IHN0b3JhZ2UuIElucHV0
Q3Vyc29ycyBjYW4KKyAgICAgICAgYmUgY3JlYXRlZCBkaXJlY3RseSwgaW5zdGVhZCBvZiB0aHJv
dWdoIFJlcGxheVNlc3Npb25TZWdtZW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVo
YXZpb3Igd2FzIGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JJbnB1
dCk6IERvbid0IHNlbmQgdGhlIHRpbWVzdGFtcCB3aXRoIHRoZSBpbnB1dC4KKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2VnbWVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL1JlcGxheS5qc29uOiBSZW1vdmUgb3B0aW9uYWwgdGltZXN0YW1wIGZpZWxk
IGZvciBSZXBsYXlJbnB1dC4KKyAgICAgICAgKiByZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OkNhcHR1cmluZ0lu
cHV0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmluZ0lucHV0Q3Vyc29yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OnN0b3JlSW5wdXQp
OiBTYXZlIGV2ZW50IGxvb3AgaW5wdXQgdGltaW5ncyBoZXJlLgorICAgICAgICAqIHJlcGxheS9D
YXB0dXJpbmdJbnB1dEN1cnNvci5oOgorICAgICAgICAqIHJlcGxheS9FdmVudExvb3BJbnB1dC5o
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXRCYXNlOjpFdmVudExvb3BJbnB1dEJh
c2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXRCYXNlOjp0aW1l
c3RhbXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXRCYXNlOjpz
ZXRUaW1lc3RhbXApOiBEZWxldGVkLgorICAgICAgICAqIHJlcGxheS9FdmVudExvb3BJbnB1dERp
c3BhdGNoZXIuY3BwOiBVc2UgYSBzdHJ1Y3QgZm9yIGRpc3BhdGNoIGluZm9ybWF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyOjpFdmVudExvb3BJbnB1dERp
c3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyOjpk
aXNwYXRjaElucHV0U29vbik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExvb3BJbnB1dERpc3Bh
dGNoZXI6OmRpc3BhdGNoSW5wdXQpOgorICAgICAgICAqIHJlcGxheS9FdmVudExvb3BJbnB1dERp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiByZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGdW5jdG9ySW5wdXRDdXJzb3I6OmZvckVhY2hJbnB1dEluUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVuY3RvcklucHV0Q3Vyc29yOjpGdW5jdG9ySW5wdXRDdXJzb3Ip
OgorICAgICAgICAqIHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxheUNvbnRyb2xsZXI6OmNyZWF0ZVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGF5Q29udHJvbGxlcjo6bG9hZFNlZ21lbnRBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlcGxheUNvbnRyb2xsZXI6OnVubG9hZFNlZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGF5Q29udHJvbGxlcjo6c3RhcnRQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAg
ICogcmVwbGF5L1JlcGxheVNlc3Npb25TZWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxheVNlc3Npb25TZWdtZW50OjpjcmVhdGVDYXB0dXJpbmdDdXJzb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGF5U2Vzc2lvblNlZ21lbnQ6OmNyZWF0ZVJlcGxheWluZ0N1cnNv
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudDo6Y3Jl
YXRlRnVuY3RvckN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogcmVwbGF5L1JlcGxheVNlc3Np
b25TZWdtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudDo6c3Rv
cmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudDo6ZXZlbnRMb29w
VGltaW5ncyk6CisgICAgICAgICogcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxheWluZ0lucHV0Q3Vyc29yOjpSZXBsYXlpbmdJbnB1dEN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlpbmdJbnB1dEN1cnNvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxheWluZ0lucHV0Q3Vyc29yOjp1bmNoZWNrZWRMb2FkSW5wdXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5aW5nSW5wdXRDdXJzb3I6OmxvYWRFdmVudExvb3BJ
bnB1dCk6IEFkZGVkLiBUaGlzIG1ldGhvZCBjb2xsYXRlcworICAgICAgICBhbmQgcmV0dXJucyB0
aGUgbmV4dCBldmVudCBsb29wIGlucHV0IHdpdGggaXRzIGFzc29jaWF0ZWQgZGlzcGF0Y2ggaW5m
b3JtYXRpb24uCisgICAgICAgICogcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmg6CisKIDIw
MTQtMDctMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgUmVwbGF5TWFuYWdlciB0byBhIHByb21pc2UtYmFz
ZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVw
bGF5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFn
ZW50LmNwcAppbmRleCA2Yzc4ZWE0ZTEzMTU1YTcwMzBmYjQ3OTYwMWFjZWU0Y2NmZmMwODc4Li4x
NTg2NDkzZDczZjA1NzA0MTU3MGMzNmNmMjlmZjFkYzJmOTYxMGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTcxLDkgKzcx
LDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQKICAgICAgICAgLnNldE9mZnNldChvZmZzZXQp
CiAgICAgICAgIC5zZXREYXRhKGVuY29kZWRJbnB1dC5hc09iamVjdCgpKTsKIAotICAgIGlmIChp
bnB1dC5xdWV1ZSgpID09IElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0KQotICAgICAgICBpbnB1
dE9iamVjdC0+c2V0VGltZXN0YW1wKHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50TG9vcElucHV0QmFz
ZSY+KGlucHV0KS50aW1lc3RhbXAoKSk7Ci0KICAgICByZXR1cm4gaW5wdXRPYmplY3QucmVsZWFz
ZSgpOwogfQogCkBAIC0xNDEsNyArMTM4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2UKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHNpemVfdD4oSW5wdXRRdWV1ZTo6
Q291bnQpOyBpKyspIHsKICAgICAgICAgU2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yIGNvbGxl
Y3RvcjsKICAgICAgICAgSW5wdXRRdWV1ZSBxdWV1ZSA9IHN0YXRpY19jYXN0PElucHV0UXVldWU+
KGkpOwotICAgICAgICBSZWZQdHI8RnVuY3RvcklucHV0Q3Vyc29yPiBmdW5jdG9yQ3Vyc29yID0g
c2VnbWVudC0+Y3JlYXRlRnVuY3RvckN1cnNvcigpOworICAgICAgICBSZWZQdHI8RnVuY3Rvcklu
cHV0Q3Vyc29yPiBmdW5jdG9yQ3Vyc29yID0gRnVuY3RvcklucHV0Q3Vyc29yOjpjcmVhdGUoc2Vn
bWVudCk7CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJl
cGxheTo6UmVwbGF5SW5wdXQ+PiBxdWV1ZUlucHV0cyA9IGZ1bmN0b3JDdXJzb3ItPmZvckVhY2hJ
bnB1dEluUXVldWUocXVldWUsIGNvbGxlY3Rvcik7CiAKICAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU+IHF1ZXVlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SZXBsYXkuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9SZXBsYXkuanNvbgppbmRleCA2NWJhMjg5NWU2N2U0Nzc4MTI1MGM1
OTJkYzNiNWMyZjc3Zjk2NmJiLi4xYzlhN2E1MThlMGYzYzNmMjdjYWQ2NjgxZTI1NzZhYzkwOWEy
NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVwbGF5
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1JlcGxheS5qc29u
CkBAIC0zNCw3ICszNCw2IEBACiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24i
OiAiSW5wdXQgdHlwZS4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvZmZzZXQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk9mZnNldCBvZiB0aGlzIGlucHV0IGlu
IGl0cyByZXNwZWN0aXZlIHF1ZXVlLiJ9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGlt
ZXN0YW1wIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSB0aW1lc3RhbXAgb2YgdGhpcyBpbnB1dC4iIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJkYXRhIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIlBlci1pbnB1
dCBwYXlsb2FkLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5jcHAKaW5kZXggZGFhMDZiY2M5ZWUzMDBh
OThjMzQzMjJhN2JjZGM3NmY1YjVkOTEyZi4uYmM2MWFhNmY2NzQ2MTFiOTI2MzdhZGIxYTRmNGU0
NTBlNzgwYTIyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lu
cHV0Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRD
dXJzb3IuY3BwCkBAIC0zMCwxNSArMzAsMjEgQEAKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQog
CisjaW5jbHVkZSAiRXZlbnRMb29wSW5wdXQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlcGxheVNlc3Npb25TZWdtZW50LmgiCiAjaW5jbHVk
ZSAiU2VnbWVudGVkSW5wdXRTdG9yYWdlLmgiCisjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OkNhcHR1cmlu
Z0lucHV0Q3Vyc29yKFNlZ21lbnRlZElucHV0U3RvcmFnZSYgc3RvcmFnZSkKLSAgICA6IG1fc3Rv
cmFnZShzdG9yYWdlKQorQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OkNhcHR1cmluZ0lucHV0Q3Vyc29y
KFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQsIFBhZ2UmIHBhZ2UpCisg
ICAgOiBtX3NlZ21lbnQoc2VnbWVudCkKKyAgICAsIG1fcGFnZShwYWdlKQogICAgICwgbV93aXRo
aW5FdmVudExvb3BJbnB1dEV4dGVudChmYWxzZSkKIHsKKyAgICBVTlVTRURfUEFSQU0ocGFnZSk7
CiAgICAgTE9HKFdlYlJlcGxheSwgIiUtMzBzQ3JlYXRlZCBjYXB0dXJlIGN1cnNvcj0lcC5cbiIs
ICJbUmVwbGF5Q29udHJvbGxlcl0iLCB0aGlzKTsKIH0KIApAQCAtNDcsMTUgKzUzLDIyIEBAIENh
cHR1cmluZ0lucHV0Q3Vyc29yOjp+Q2FwdHVyaW5nSW5wdXRDdXJzb3IoKQogICAgIExPRyhXZWJS
ZXBsYXksICIlLTMwc0Rlc3Ryb3llZCBjYXB0dXJlIGN1cnNvcj0lcC5cbiIsICJbUmVwbGF5Q29u
dHJvbGxlcl0iLCB0aGlzKTsKIH0KIAotUGFzc1JlZlB0cjxDYXB0dXJpbmdJbnB1dEN1cnNvcj4g
Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OmNyZWF0ZShTZWdtZW50ZWRJbnB1dFN0b3JhZ2UmIHN0b3Jh
Z2UpCitQYXNzUmVmUHRyPENhcHR1cmluZ0lucHV0Q3Vyc29yPiBDYXB0dXJpbmdJbnB1dEN1cnNv
cjo6Y3JlYXRlKFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQsIFBhZ2Um
IHBhZ2UpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYXB0dXJpbmdJbnB1dEN1cnNvcihz
dG9yYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDYXB0dXJpbmdJbnB1dEN1cnNvcihz
ZWdtZW50LCBwYWdlKSk7CiB9CiAKIHZvaWQgQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OnN0b3JlSW5w
dXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2U+IGlucHV0KQogewot
ICAgIEFTU0VSVChpbnB1dCk7Ci0gICAgbV9zdG9yYWdlLnN0b3JlKFdURjo6bW92ZShpbnB1dCkp
OworICAgIEFTU0VSVF9BUkcoaW5wdXQsIGlucHV0KTsKKworICAgIGlmIChpbnB1dC0+cXVldWUo
KSA9PSBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dCkgeworICAgICAgICAvLyBGSVhNRTogcmV3
cml0ZSB0aGlzIChhbmQgcmVsYXRlZCBkaXNwYXRjaCBjb2RlKSB0byB1c2Ugc3RkOjpjaHJvbm8u
CisgICAgICAgIGRvdWJsZSBub3cgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAg
ICAgICAgbV9zZWdtZW50LT5ldmVudExvb3BUaW1pbmdzKCkuYXBwZW5kKG5vdyk7CisgICAgfQor
CisgICAgbV9zZWdtZW50LT5zdG9yYWdlKCkuc3RvcmUoV1RGOjptb3ZlKGlucHV0KSk7CiB9CiAK
IE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIENhcHR1cmluZ0lucHV0Q3Vyc29yOjpsb2FkSW5w
dXQoSW5wdXRRdWV1ZSwgY29uc3QgQXRvbWljU3RyaW5nJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5oIGIvU291cmNlL1dlYkNvcmUvcmVw
bGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmgKaW5kZXggZmM3Mjg5YTkwZGI0MTc1ODM4NWVlYTAz
ZTYzODNmODllMTRhZTA2Mi4uOTljMzBjYzQ5MDk2YjZmODQ5NTY2OTFmY2UwNTdiYWE4YzFmMDgw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29y
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmgKQEAg
LTM2LDEyICszNiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudExvb3BJ
bnB1dEV4dGVudDsKLWNsYXNzIFNlZ21lbnRlZElucHV0U3RvcmFnZTsKK2NsYXNzIFBhZ2U7Citj
bGFzcyBSZXBsYXlTZXNzaW9uU2VnbWVudDsKIAogY2xhc3MgQ2FwdHVyaW5nSW5wdXRDdXJzb3Ig
ZmluYWwgOiBwdWJsaWMgSW5wdXRDdXJzb3IgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENh
cHR1cmluZ0lucHV0Q3Vyc29yKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDYXB0
dXJpbmdJbnB1dEN1cnNvcj4gY3JlYXRlKFNlZ21lbnRlZElucHV0U3RvcmFnZSYpOworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENhcHR1cmluZ0lucHV0Q3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxS
ZXBsYXlTZXNzaW9uU2VnbWVudD4sIFBhZ2UmKTsKICAgICB2aXJ0dWFsIH5DYXB0dXJpbmdJbnB1
dEN1cnNvcigpOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVyaW5nKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTAsMTUgKzUxLDE3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHNldFdpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50KGJvb2wpOwogICAgIGJvb2wgd2l0aGluRXZl
bnRMb29wSW5wdXRFeHRlbnQoKSBjb25zdCB7IHJldHVybiBtX3dpdGhpbkV2ZW50TG9vcElucHV0
RXh0ZW50OyB9CiAKLSAgICB2aXJ0dWFsIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hl
Y2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc3Rv
cmVJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pIG92ZXJy
aWRlOwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSog
bG9hZElucHV0KElucHV0UXVldWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkgb3ZlcnJpZGU7
CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgQ2FwdHVyaW5nSW5wdXRDdXJzb3IoU2VnbWVudGVk
SW5wdXRTdG9yYWdlJik7CisgICAgQ2FwdHVyaW5nSW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBs
YXlTZXNzaW9uU2VnbWVudD4sIFBhZ2UmKTsKKworICAgIHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0QmFzZSogdW5jaGVja2VkTG9hZElucHV0KElucHV0UXVldWUpIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBzdG9yZUlucHV0KHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1pbmlzdGlj
SW5wdXRCYXNlPikgb3ZlcnJpZGU7CiAKLSAgICBTZWdtZW50ZWRJbnB1dFN0b3JhZ2UmIG1fc3Rv
cmFnZTsKKyAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IG1fc2VnbWVudDsKKyAgICBQ
YWdlJiBtX3BhZ2U7CiAgICAgYm9vbCBtX3dpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0LmggYi9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXQuaAppbmRleCAwNzk1ZDUzMjQ1ZmQz
Y2Q4NmQzYjI0ZGI5NmU2MmNkYTZkYTlmZjhjLi4yNTBhM2RiMjUyMDU0Yzc2MzBlMzkyYWFlZWJj
NThhMDg2NDAwZWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29w
SW5wdXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXQuaApAQCAt
NTUsMjAgKzU1LDEwIEBAIHByaXZhdGU6CiAKIGNsYXNzIEV2ZW50TG9vcElucHV0QmFzZSA6IHB1
YmxpYyBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlIHsKIHB1YmxpYzoKLSAgICBFdmVudExvb3BJ
bnB1dEJhc2UoKQotICAgICAgICA6IG1fdGltZXN0YW1wKG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpKQotICAgIHsKLSAgICB9Ci0KICAgICB2aXJ0dWFsIH5FdmVudExvb3BJbnB1dEJhc2Uo
KSB7IH0KICAgICB2aXJ0dWFsIElucHV0UXVldWUgcXVldWUoKSBjb25zdCBvdmVycmlkZSBmaW5h
bCB7IHJldHVybiBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoKFJlcGxheUNvbnRyb2xsZXImKSA9IDA7Ci0KLSAgICBkb3VibGUgdGltZXN0
YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KLSAgICB2b2lkIHNldFRpbWVzdGFt
cChkb3VibGUgdGltZXN0YW1wKSB7IG1fdGltZXN0YW1wID0gdGltZXN0YW1wOyB9Ci1wcm90ZWN0
ZWQ6Ci0gICAgZG91YmxlIG1fdGltZXN0YW1wOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIElu
cHV0VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1
dERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0RGlz
cGF0Y2hlci5jcHAKaW5kZXggODUwMjE5NzQ1Njg1NjEzMzQyZjAxMGUyNzMzNmVkZTE1ZmU2ZDgx
MS4uN2YyM2ExNThlNmI5NjkwN2EyMWJhNzA4ZTIwNzRhMGUxZjJkMGQ3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTQ5
LDEzICs0OSwxNCBAQCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXI6OkV2ZW50TG9vcElucHV0RGlz
cGF0Y2hlcihQYWdlJiBwYWdlLCBSZXBsYXlpbmdJbnB1dEN1cgogICAgICwgbV9jbGllbnQoY2xp
ZW50KQogICAgICwgbV9jdXJzb3IoY3Vyc29yKQogICAgICwgbV90aW1lcih0aGlzLCAmRXZlbnRM
b29wSW5wdXREaXNwYXRjaGVyOjp0aW1lckZpcmVkKQotICAgICwgbV9ydW5uaW5nSW5wdXQobnVs
bHB0cikKICAgICAsIG1fZGlzcGF0Y2hpbmcoZmFsc2UpCiAgICAgLCBtX3J1bm5pbmcoZmFsc2Up
CiAgICAgLCBtX3NwZWVkKERpc3BhdGNoU3BlZWQ6OkZhc3RGb3J3YXJkKQogICAgICwgbV9wcmV2
aW91c0Rpc3BhdGNoU3RhcnRUaW1lKDAuMCkKICAgICAsIG1fcHJldmlvdXNJbnB1dFRpbWVzdGFt
cCgwLjApCiB7CisgICAgbV9jdXJyZW50V29yay5pbnB1dCA9IG51bGxwdHI7CisgICAgbV9jdXJy
ZW50V29yay50aW1lc3RhbXAgPSAwLjA7CiB9CiAKIHZvaWQgRXZlbnRMb29wSW5wdXREaXNwYXRj
aGVyOjpydW4oKQpAQCAtODgsOCArODksOCBAQCB2b2lkIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hl
cjo6ZGlzcGF0Y2hJbnB1dFNvb24oKQogICAgIEFTU0VSVChtX3J1bm5pbmcpOwogCiAgICAgLy8g
V2UgbWF5IGFscmVhZHkgaGF2ZSBhbiBpbnB1dCBpZiByZXBsYXkgd2FzIHBhdXNlZCBqdXN0IGJl
Zm9yZSBkaXNwYXRjaGluZy4KLSAgICBpZiAoIW1fcnVubmluZ0lucHV0KQotICAgICAgICBtX3J1
bm5pbmdJbnB1dCA9IHN0YXRpY19jYXN0PEV2ZW50TG9vcElucHV0QmFzZSo+KG1fY3Vyc29yLnVu
Y2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dCkpOworICAgIGlmICgh
bV9jdXJyZW50V29yay5pbnB1dCkKKyAgICAgICAgbV9jdXJyZW50V29yayA9IG1fY3Vyc29yLmxv
YWRFdmVudExvb3BJbnB1dCgpOwogCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAg
ICAgbV90aW1lci5zdG9wKCk7CkBAIC0xMDMsOSArMTA0LDkgQEAgdm9pZCBFdmVudExvb3BJbnB1
dERpc3BhdGNoZXI6OmRpc3BhdGNoSW5wdXRTb29uKCkKICAgICAgICAgLy8gb2JzZXJ2ZWQgZGVs
YXkgYmV0d2VlbiB0aGUgcHJldmlvdXMgYW5kIGN1cnJlbnQgaW5wdXQuCiAKICAgICAgICAgaWYg
KCFtX3ByZXZpb3VzSW5wdXRUaW1lc3RhbXApCi0gICAgICAgICAgICBtX3ByZXZpb3VzSW5wdXRU
aW1lc3RhbXAgPSBtX3J1bm5pbmdJbnB1dC0+dGltZXN0YW1wKCk7CisgICAgICAgICAgICBtX3By
ZXZpb3VzSW5wdXRUaW1lc3RhbXAgPSBtX2N1cnJlbnRXb3JrLnRpbWVzdGFtcDsKIAotICAgICAg
ICBkb3VibGUgdGFyZ2V0SW50ZXJ2YWwgPSBtX3J1bm5pbmdJbnB1dC0+dGltZXN0YW1wKCkgLSBt
X3ByZXZpb3VzSW5wdXRUaW1lc3RhbXA7CisgICAgICAgIGRvdWJsZSB0YXJnZXRJbnRlcnZhbCA9
IG1fY3VycmVudFdvcmsudGltZXN0YW1wIC0gbV9wcmV2aW91c0lucHV0VGltZXN0YW1wOwogICAg
ICAgICBkb3VibGUgZWxhcHNlZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9w
cmV2aW91c0Rpc3BhdGNoU3RhcnRUaW1lOwogICAgICAgICB3YWl0SW50ZXJ2YWwgPSB0YXJnZXRJ
bnRlcnZhbCAtIGVsYXBzZWQ7CiAgICAgfQpAQCAtMTI2LDM0ICsxMjcsMzQgQEAgdm9pZCBFdmVu
dExvb3BJbnB1dERpc3BhdGNoZXI6OmRpc3BhdGNoSW5wdXRTb29uKCkKIAogdm9pZCBFdmVudExv
b3BJbnB1dERpc3BhdGNoZXI6OmRpc3BhdGNoSW5wdXQoKQogewotICAgIEFTU0VSVChtX3J1bm5p
bmdJbnB1dCk7CisgICAgQVNTRVJUKG1fY3VycmVudFdvcmsuaW5wdXQpOwogICAgIEFTU0VSVCgh
bV9kaXNwYXRjaGluZyk7CiAKICAgICBpZiAobV9zcGVlZCA9PSBEaXNwYXRjaFNwZWVkOjpSZWFs
VGltZSkgewogICAgICAgICBtX3ByZXZpb3VzRGlzcGF0Y2hTdGFydFRpbWUgPSBtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKTsKLSAgICAgICAgbV9wcmV2aW91c0lucHV0VGltZXN0YW1wID0g
bV9ydW5uaW5nSW5wdXQtPnRpbWVzdGFtcCgpOworICAgICAgICBtX3ByZXZpb3VzSW5wdXRUaW1l
c3RhbXAgPSBtX2N1cnJlbnRXb3JrLnRpbWVzdGFtcDsKICAgICB9CiAKICNpZiAhTE9HX0RJU0FC
TEVECi0gICAgRW5jb2RlZFZhbHVlIGVuY29kZWRJbnB1dCA9IEVuY29kaW5nVHJhaXRzPE5vbmRl
dGVybWluaXN0aWNJbnB1dEJhc2U+OjplbmNvZGVWYWx1ZSgqbV9ydW5uaW5nSW5wdXQpOworICAg
IEVuY29kZWRWYWx1ZSBlbmNvZGVkSW5wdXQgPSBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlz
dGljSW5wdXRCYXNlPjo6ZW5jb2RlVmFsdWUoKm1fY3VycmVudFdvcmsuaW5wdXQpOwogICAgIFN0
cmluZyBqc29uU3RyaW5nID0gZW5jb2RlZElucHV0LmFzT2JqZWN0KCktPnRvSlNPTlN0cmluZygp
OwogCiAgICAgTE9HKFdlYlJlcGxheSwgIiUtMjBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0iLCAiUmVwbGF5RXZlbnRzIik7Ci0gICAgTE9HKFdlYlJlcGxh
eSwgIiUtMjBzID5ESVNQQVRDSDogJXMgJXNcbiIsICJSZXBsYXlFdmVudHMiLCBtX3J1bm5pbmdJ
bnB1dC0+dHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGpzb25TdHJpbmcudXRmOCgpLmRh
dGEoKSk7CisgICAgTE9HKFdlYlJlcGxheSwgIiUtMjBzID5ESVNQQVRDSDogJXMgJXNcbiIsICJS
ZXBsYXlFdmVudHMiLCBtX2N1cnJlbnRXb3JrLmlucHV0LT50eXBlKCkuc3RyaW5nKCkudXRmOCgp
LmRhdGEoKSwganNvblN0cmluZy51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCi0gICAgbV9jbGll
bnQtPndpbGxEaXNwYXRjaElucHV0KCptX3J1bm5pbmdJbnB1dCk7CisgICAgbV9jbGllbnQtPndp
bGxEaXNwYXRjaElucHV0KCptX2N1cnJlbnRXb3JrLmlucHV0KTsKICAgICAvLyBDbGllbnQgY291
bGQgc3RvcCByZXBsYXkgaW4gdGhlIHByZXZpb3VzIGNhbGxiYWNrLCBzbyBjaGVjayBhZ2Fpbi4K
ICAgICBpZiAoIW1fcnVubmluZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgewogICAgICAgICBU
ZW1wb3JhcnlDaGFuZ2U8Ym9vbD4gY2hhbmdlKG1fZGlzcGF0Y2hpbmcsIHRydWUpOwotICAgICAg
ICBtX3J1bm5pbmdJbnB1dC0+ZGlzcGF0Y2gobV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKSk7Cisg
ICAgICAgIG1fY3VycmVudFdvcmsuaW5wdXQtPmRpc3BhdGNoKG1fcGFnZS5yZXBsYXlDb250cm9s
bGVyKCkpOwogICAgIH0KIAotICAgIEV2ZW50TG9vcElucHV0QmFzZSogZGlzcGF0Y2hlZElucHV0
ID0gbV9ydW5uaW5nSW5wdXQ7Ci0gICAgbV9ydW5uaW5nSW5wdXQgPSBudWxscHRyOworICAgIEV2
ZW50TG9vcElucHV0QmFzZSogZGlzcGF0Y2hlZElucHV0ID0gbV9jdXJyZW50V29yay5pbnB1dDsK
KyAgICBtX2N1cnJlbnRXb3JrLmlucHV0ID0gbnVsbHB0cjsKIAogICAgIC8vIE5vdGlmeSBjbGll
bnRzIHRoYXQgdGhlIGV2ZW50IHdhcyBkaXNwYXRjaGVkLgogICAgIG1fY2xpZW50LT5kaWREaXNw
YXRjaElucHV0KCpkaXNwYXRjaGVkSW5wdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVwbGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5
L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5oCmluZGV4IGQ2NDEzNjFiYjQ4ZmQ5MzFiNDBlOGVj
Yjc4ZGM0MTIyZGM3ZDFiYWUuLmY0MzA2MmViNThiZDRmZTFkOTRiZTY1MWI4NjFiNjAzYmU0YmI3
ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1dERpc3Bh
dGNoZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXREaXNwYXRj
aGVyLmgKQEAgLTMxLDYgKzMxLDcgQEAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKIAogI2luY2x1
ZGUgIkV2ZW50TG9vcElucHV0LmgiCisjaW5jbHVkZSAiUmVwbGF5aW5nSW5wdXRDdXJzb3IuaCIK
ICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTM5LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogY2xhc3MgUGFnZTsKLWNsYXNzIFJlcGxheWluZ0lucHV0Q3Vyc29yOwogCiBlbnVtIGNsYXNz
IERpc3BhdGNoU3BlZWQgewogICAgIFJlYWxUaW1lLApAQCAtNzksOCArNzksOCBAQCBwcml2YXRl
OgogICAgIFJlcGxheWluZ0lucHV0Q3Vyc29yJiBtX2N1cnNvcjsKICAgICBUaW1lcjxFdmVudExv
b3BJbnB1dERpc3BhdGNoZXI+IG1fdGltZXI7CiAKLSAgICAvLyBUaGlzIHBvaW50ZXIgaXMgdmFs
aWQgd2hlbiBhbiBldmVudCBsb29wIGlucHV0IGlzIHByZXNlbnRseSBkaXNwYXRjaGluZy4KLSAg
ICBFdmVudExvb3BJbnB1dEJhc2UqIG1fcnVubmluZ0lucHV0OworICAgIC8vIFRoaXMgZGF0YSBp
cyB2YWxpZCB3aGVuIGFuIGV2ZW50IGxvb3AgaW5wdXQgaXMgcHJlc2VudGx5IGRpc3BhdGNoaW5n
LgorICAgIEV2ZW50TG9vcElucHV0RGF0YSBtX2N1cnJlbnRXb3JrOwogICAgIC8vIFdoZXRoZXIg
dGhlIGRpc3BhdGNoZXIgaXMgY3VycmVudGx5IGNhbGxpbmcgb3V0IHRvIGFuIGlucHV0cycgZGlz
cGF0Y2goKSBtZXRob2QuCiAgICAgYm9vbCBtX2Rpc3BhdGNoaW5nOwogICAgIC8vIFdoZXRoZXIg
dGhlIGRpc3BhdGNoZXIgaXMgd2FpdGluZyB0byBkaXNwYXRjaCBvciBhY3RpdmVseSBkaXNwYXRj
aGluZyBpbnB1dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRnVuY3Rvcklu
cHV0Q3Vyc29yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmgK
aW5kZXggZDA3ODIxZDJjZDdjZWE1Njc0N2NhNjg5M2EzZTZhOWQxYzE1MzdjMS4uYzhkZjkwMzFj
ZDlhN2U5YzA4NTNmMTk3ODg5ZTQ0ZDMzMzA2ZGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVwbGF5L0Z1bmN0b3JJbnB1dEN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9GdW5jdG9ySW5wdXRDdXJzb3IuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKFdF
Ql9SRVBMQVkpCiAKKyNpbmNsdWRlICJSZXBsYXlTZXNzaW9uU2VnbWVudC5oIgogI2luY2x1ZGUg
IlNlZ21lbnRlZElucHV0U3RvcmFnZS5oIgogI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5o
PgogI2luY2x1ZGUgPHJlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaD4KQEAgLTQyLDkgKzQz
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgRnVuY3RvcklucHV0Q3Vyc29yIGZpbmFs
IDogcHVibGljIElucHV0Q3Vyc29yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdW5jdG9y
SW5wdXRDdXJzb3IpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0b3JJbnB1
dEN1cnNvcj4gY3JlYXRlKFNlZ21lbnRlZElucHV0U3RvcmFnZSYgc3RvcmFnZSkKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxGdW5jdG9ySW5wdXRDdXJzb3I+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcGxh
eVNlc3Npb25TZWdtZW50PiBzZWdtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBGdW5jdG9ySW5wdXRDdXJzb3Ioc3RvcmFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEZ1bmN0b3JJbnB1dEN1cnNvcihzZWdtZW50KSk7CiAgICAgfQogCiAgICAgLy8gSW5w
dXRDdXJzb3IKQEAgLTU5LDIyICs2MCwyMiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29u
c3QgQXRvbWljU3RyaW5nJikgb3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIEZ1bmN0b3JJbnB1dEN1
cnNvcihTZWdtZW50ZWRJbnB1dFN0b3JhZ2UmKTsKKyAgICBGdW5jdG9ySW5wdXRDdXJzb3IoUGFz
c1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4pOwogCi0gICAgU2VnbWVudGVkSW5wdXRTdG9y
YWdlJiBtX3N0b3JhZ2U7CisgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBtX3NlZ21l
bnQ7CiB9OwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUKIHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgRnVuY3RvcklucHV0Q3Vyc29yOjpmb3JFYWNoSW5wdXRJblF1ZXVl
KElucHV0UXVldWUgcXVldWUsIEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3N0b3JhZ2UucXVldWVTaXplKHF1ZXVlKTsgaSsrKQotICAgICAgICBmdW5j
dG9yKGksIG1fc3RvcmFnZS5xdWV1ZShxdWV1ZSkuYXQoaSkuZ2V0KCkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9zZWdtZW50LT5zdG9yYWdlKCkucXVldWVTaXplKHF1ZXVlKTsgaSsr
KQorICAgICAgICBmdW5jdG9yKGksIG1fc2VnbWVudC0+c3RvcmFnZSgpLnF1ZXVlKHF1ZXVlKS5h
dChpKS5nZXQoKSk7CiAKICAgICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwogfQogCi1p
bmxpbmUgRnVuY3RvcklucHV0Q3Vyc29yOjpGdW5jdG9ySW5wdXRDdXJzb3IoU2VnbWVudGVkSW5w
dXRTdG9yYWdlJiBzdG9yYWdlKQotICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCitpbmxpbmUgRnVu
Y3RvcklucHV0Q3Vyc29yOjpGdW5jdG9ySW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBsYXlTZXNz
aW9uU2VnbWVudD4gc2VnbWVudCkKKyAgICA6IG1fc2VnbWVudChzZWdtZW50KQogewogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggOWNkY2UzMjYx
YmRhYzU3YTMxNDViZDc3YjM1ZjdlMjY4NmEzZjNjZC4uM2MzNjcwZTQ3YTZhMjM2MjQyOGUyZGM5
NTNiMDc2MTY2N2VmNTZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxh
eUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9s
bGVyLmNwcApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y3JlYXRl
U2VnbWVudCgpCiAgICAgTE9HKFdlYlJlcGxheSwgIiUtMjBzIENyZWF0ZWQgc2VnbWVudDogJXAu
XG4iLCAiUmVwbGF5Q29udHJvbGxlciIsIG1fbG9hZGVkU2VnbWVudC5nZXQoKSk7CiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50Q3JlYXRlZCgmbV9wYWdlLCBtX2xvYWRlZFNl
Z21lbnQpOwogCi0gICAgbV9hY3RpdmVDdXJzb3IgPSBtX2xvYWRlZFNlZ21lbnQtPmNyZWF0ZUNh
cHR1cmluZ0N1cnNvcihtX3BhZ2UpOworICAgIG1fYWN0aXZlQ3Vyc29yID0gQ2FwdHVyaW5nSW5w
dXRDdXJzb3I6OmNyZWF0ZShtX2xvYWRlZFNlZ21lbnQsIG1fcGFnZSk7CiAgICAgbV9hY3RpdmVD
dXJzb3ItPmFwcGVuZElucHV0PEJlZ2luU2VnbWVudFNlbnRpbmVsPigpOwogCiAgICAgLy8gRGlz
cGF0Y2hpbmcgdGhpcyBpbnB1dCBzYXZlcyBoaXN0b3J5LCBjbGVhcnMgYWxsIGJ1dCB0aGUgY3Vy
cmVudCBpdGVtLCBhcHBlbmRzIHNhdmVkCkBAIC0yNzgsNyArMjc4LDcgQEAgdm9pZCBSZXBsYXlD
b250cm9sbGVyOjpsb2FkU2VnbWVudEF0SW5kZXgoc2l6ZV90IHNlZ21lbnRJbmRleCkKICAgICBt
X2N1cnJlbnRQb3NpdGlvbi5zZWdtZW50T2Zmc2V0ID0gc2VnbWVudEluZGV4OwogICAgIG1fY3Vy
cmVudFBvc2l0aW9uLmlucHV0T2Zmc2V0ID0gMDsKIAotICAgIG1fYWN0aXZlQ3Vyc29yID0gbV9s
b2FkZWRTZWdtZW50LT5jcmVhdGVSZXBsYXlpbmdDdXJzb3IobV9wYWdlLCB0aGlzKTsKKyAgICBt
X2FjdGl2ZUN1cnNvciA9IFJlcGxheWluZ0lucHV0Q3Vyc29yOjpjcmVhdGUobV9sb2FkZWRTZWdt
ZW50LCBtX3BhZ2UsIHRoaXMpOwogCiAgICAgTE9HKFdlYlJlcGxheSwgIiUtMjBzTG9hZGluZyBz
ZWdtZW50OiAlcC5cbiIsICJSZXBsYXlDb250cm9sbGVyIiwgc2VnbWVudC5nZXQoKSk7CiAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpzZWdtZW50TG9hZGVkKCZtX3BhZ2UsIHNlZ21lbnQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheVNlc3Npb25TZWdtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlTZXNzaW9uU2VnbWVudC5jcHAKaW5k
ZXggYWIwZDQ3NzhkYjg1YjhkZDkwNDcxM2MxMzc3NGExZDNjZjFiOGVhYy4uYjkwZTg4ZmQ5YTFi
ZjMzY2FmNTc2ZWM5MmY3ZTM4ZjM4MDMzZjY1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVwbGF5L1JlcGxheVNlc3Npb25TZWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvUmVwbGF5U2Vzc2lvblNlZ21lbnQuY3BwCkBAIC0zNSw2ICszNSw4IEBACiAjaW5jbHVkZSAi
UmVwbGF5aW5nSW5wdXRDdXJzb3IuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRJbnB1dFN0b3JhZ2Uu
aCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC01NywyMyArNTksNiBAQCBSZXBsYXlTZXNzaW9uU2VnbWVudDo6flJlcGxheVNlc3Npb25TZWdt
ZW50KCkKIHsKIH0KIAotUGFzc1JlZlB0cjxDYXB0dXJpbmdJbnB1dEN1cnNvcj4gUmVwbGF5U2Vz
c2lvblNlZ21lbnQ6OmNyZWF0ZUNhcHR1cmluZ0N1cnNvcihQYWdlJikKLXsKLSAgICBBU1NFUlQo
bV9jYW5DYXB0dXJlKTsKLSAgICBtX2NhbkNhcHR1cmUgPSBmYWxzZTsKLSAgICByZXR1cm4gQ2Fw
dHVyaW5nSW5wdXRDdXJzb3I6OmNyZWF0ZSgqbV9zdG9yYWdlKTsKLX0KLQotUGFzc1JlZlB0cjxS
ZXBsYXlpbmdJbnB1dEN1cnNvcj4gUmVwbGF5U2Vzc2lvblNlZ21lbnQ6OmNyZWF0ZVJlcGxheWlu
Z0N1cnNvcihQYWdlJiBwYWdlLCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXJDbGllbnQqIGNsaWVu
dCkKLXsKLSAgICByZXR1cm4gUmVwbGF5aW5nSW5wdXRDdXJzb3I6OmNyZWF0ZSgqbV9zdG9yYWdl
LCBwYWdlLCBjbGllbnQpOwotfQotCi1QYXNzUmVmUHRyPEZ1bmN0b3JJbnB1dEN1cnNvcj4gUmVw
bGF5U2Vzc2lvblNlZ21lbnQ6OmNyZWF0ZUZ1bmN0b3JDdXJzb3IoKQotewotICAgIHJldHVybiBG
dW5jdG9ySW5wdXRDdXJzb3I6OmNyZWF0ZSgqbV9zdG9yYWdlKTsKLX0KLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQl9SRVBMQVkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5U2Vzc2lvblNlZ21lbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9SZXBsYXlTZXNzaW9uU2VnbWVudC5oCmluZGV4IDVkZTYwYTFiZGVjZWFiODk1
ODJiZmY2YzQzZGY5YzQ5NWFjMTRlYjAuLjVkNDUwNDE4N2Q4Y2M5ZmE5NTdmNDZkOTVjOTVmM2Rk
NzNjZjRjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlTZXNzaW9u
U2VnbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlTZXNzaW9uU2VnbWVu
dC5oCkBAIC0zMCw4ICszMCw5IEBACiAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKIAotI2luY2x1
ZGUgPHJlcGxheS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQzLDIwICs0NCwyNSBAQCBjbGFzcyBSZXBs
YXlpbmdJbnB1dEN1cnNvcjsKIGNsYXNzIFNlZ21lbnRlZElucHV0U3RvcmFnZTsKIAogY2xhc3Mg
UmVwbGF5U2Vzc2lvblNlZ21lbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxSZXBsYXlTZXNzaW9uU2Vn
bWVudD4geworZnJpZW5kIGNsYXNzIENhcHR1cmluZ0lucHV0Q3Vyc29yOworZnJpZW5kIGNsYXNz
IEZ1bmN0b3JJbnB1dEN1cnNvcjsKK2ZyaWVuZCBjbGFzcyBSZXBsYXlpbmdJbnB1dEN1cnNvcjsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gY3Jl
YXRlKCk7CiAgICAgflJlcGxheVNlc3Npb25TZWdtZW50KCk7CiAKICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAgICAgZG91YmxlIHRpbWVz
dGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9Citwcm90ZWN0ZWQ6CisgICAgU2Vn
bWVudGVkSW5wdXRTdG9yYWdlJiBzdG9yYWdlKCkgeyByZXR1cm4gKm1fc3RvcmFnZTsgfQorICAg
IFZlY3Rvcjxkb3VibGUsIDA+JiBldmVudExvb3BUaW1pbmdzKCkgeyByZXR1cm4gbV9ldmVudExv
b3BUaW1pbmdzOyB9CiAKLSAgICBQYXNzUmVmUHRyPENhcHR1cmluZ0lucHV0Q3Vyc29yPiBjcmVh
dGVDYXB0dXJpbmdDdXJzb3IoUGFnZSYpOwotICAgIFBhc3NSZWZQdHI8UmVwbGF5aW5nSW5wdXRD
dXJzb3I+IGNyZWF0ZVJlcGxheWluZ0N1cnNvcihQYWdlJiwgRXZlbnRMb29wSW5wdXREaXNwYXRj
aGVyQ2xpZW50Kik7Ci0gICAgUGFzc1JlZlB0cjxGdW5jdG9ySW5wdXRDdXJzb3I+IGNyZWF0ZUZ1
bmN0b3JDdXJzb3IoKTsKIHByaXZhdGU6CiAgICAgUmVwbGF5U2Vzc2lvblNlZ21lbnQoKTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxTZWdtZW50ZWRJbnB1dFN0b3JhZ2U+IG1fc3RvcmFnZTsKKyAg
ICBWZWN0b3I8ZG91YmxlLCAwPiBtX2V2ZW50TG9vcFRpbWluZ3M7CisKICAgICB1bnNpZ25lZCBt
X2lkZW50aWZpZXI7CiAgICAgYm9vbCBtX2NhbkNhcHR1cmU7CiAgICAgZG91YmxlIG1fdGltZXN0
YW1wOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vy
c29yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1cnNvci5jcHAK
aW5kZXggYTRmMmRiMzE3YjUzYTBkOGYxZTVjOWUxNjYzYmUwNzY4NTEzYTZhYi4uMWIxOGMwMjY5
NDIwMzQ1ZDFlYjQzYzZmZWM2OGI1YWQzMzQwNTcwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvUmVwbGF5aW5nSW5wdXRDdXJzb3IuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaWYgRU5B
QkxFKFdFQl9SRVBMQVkpCiAKICNpbmNsdWRlICJFdmVudExvb3BJbnB1dERpc3BhdGNoZXIuaCIK
KyNpbmNsdWRlICJSZXBsYXlTZXNzaW9uU2VnbWVudC5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZElu
cHV0U3RvcmFnZS5oIgogI2luY2x1ZGUgIlNlcmlhbGl6YXRpb25NZXRob2RzLmgiCiAjaW5jbHVk
ZSAiV2ViUmVwbGF5SW5wdXRzLmgiCkBAIC0zOCw4ICszOSw4IEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotUmVwbGF5aW5nSW5wdXRDdXJzb3I6OlJlcGxheWluZ0lucHV0Q3Vyc29yKFNlZ21l
bnRlZElucHV0U3RvcmFnZSYgc3RvcmFnZSwgUGFnZSYgcGFnZSwgRXZlbnRMb29wSW5wdXREaXNw
YXRjaGVyQ2xpZW50KiBjbGllbnQpCi0gICAgOiBtX3N0b3JhZ2Uoc3RvcmFnZSkKK1JlcGxheWlu
Z0lucHV0Q3Vyc29yOjpSZXBsYXlpbmdJbnB1dEN1cnNvcihQYXNzUmVmUHRyPFJlcGxheVNlc3Np
b25TZWdtZW50PiBzZWdtZW50LCBQYWdlJiBwYWdlLCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXJD
bGllbnQqIGNsaWVudCkKKyAgICA6IG1fc2VnbWVudChzZWdtZW50KQogICAgICwgbV9kaXNwYXRj
aGVyKHN0ZDo6bWFrZV91bmlxdWU8RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyPihwYWdlLCAqdGhp
cywgY2xpZW50KSkKIHsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oSW5wdXRRdWV1ZTo6Q291bnQpOyBpKyspCkBAIC01MCw5ICs1MSw5IEBAIFJlcGxheWlu
Z0lucHV0Q3Vyc29yOjp+UmVwbGF5aW5nSW5wdXRDdXJzb3IoKQogewogfQogCi1QYXNzUmVmUHRy
PFJlcGxheWluZ0lucHV0Q3Vyc29yPiBSZXBsYXlpbmdJbnB1dEN1cnNvcjo6Y3JlYXRlKFNlZ21l
bnRlZElucHV0U3RvcmFnZSYgc3RvcmFnZSwgUGFnZSYgcGFnZSwgRXZlbnRMb29wSW5wdXREaXNw
YXRjaGVyQ2xpZW50KiBjbGllbnQpCitQYXNzUmVmUHRyPFJlcGxheWluZ0lucHV0Q3Vyc29yPiBS
ZXBsYXlpbmdJbnB1dEN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21l
bnQ+IHNlZ21lbnQsIFBhZ2UmIHBhZ2UsIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlckNsaWVudCog
Y2xpZW50KQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVwbGF5aW5nSW5wdXRDdXJzb3Io
c3RvcmFnZSwgcGFnZSwgY2xpZW50KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZXBsYXlp
bmdJbnB1dEN1cnNvcihzZWdtZW50LCBwYWdlLCBjbGllbnQpKTsKIH0KIAogdm9pZCBSZXBsYXlp
bmdJbnB1dEN1cnNvcjo6c3RvcmVJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0QmFzZT4pCkBAIC03NSwxMyArNzYsMjYgQEAgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFz
ZSogUmVwbGF5aW5nSW5wdXRDdXJzb3I6OmxvYWRJbnB1dChJbnB1dFF1ZXVlIHF1ZXVlLCBjb24K
IAogTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSogUmVwbGF5aW5nSW5wdXRDdXJzb3I6OnVuY2hl
Y2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlIHF1ZXVlKQogewotICAgIGlmIChtX3Bvc2l0aW9uc1tz
dGF0aWNfY2FzdDxzaXplX3Q+KHF1ZXVlKV0gPj0gbV9zdG9yYWdlLnF1ZXVlU2l6ZShxdWV1ZSkp
IHsKKyAgICBpZiAobV9wb3NpdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihxdWV1ZSldID49IG1f
c2VnbWVudC0+c3RvcmFnZSgpLnF1ZXVlU2l6ZShxdWV1ZSkpIHsKICAgICAgICAgU3RyaW5nIHF1
ZXVlU3RyaW5nID0gRW5jb2RpbmdUcmFpdHM8SW5wdXRRdWV1ZT46OmVuY29kZVZhbHVlKHF1ZXVl
KS5jb252ZXJ0VG88U3RyaW5nPigpOwogICAgICAgICBMT0dfRVJST1IoIiUtMzBzIEVSUk9SIE5v
IG1vcmUgaW5wdXRzIHJlbWFpbiBmb3IgZGV0ZXJtaW5pc20gcXVldWUgJXMsIGJ1dCBvbmUgd2Fz
IHJlcXVlc3RlZC4iLCAiW1JlcGxheWluZ0lucHV0Q3Vyc29yXSIsIHF1ZXVlU3RyaW5nLmFzY2lp
KCkuZGF0YSgpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJu
IG1fc3RvcmFnZS5sb2FkKHF1ZXVlLCBtX3Bvc2l0aW9uc1tzdGF0aWNfY2FzdDxzaXplX3Q+KHF1
ZXVlKV0rKyk7CisgICAgcmV0dXJuIG1fc2VnbWVudC0+c3RvcmFnZSgpLmxvYWQocXVldWUsIG1f
cG9zaXRpb25zW3N0YXRpY19jYXN0PHNpemVfdD4ocXVldWUpXSsrKTsKK30KKworRXZlbnRMb29w
SW5wdXREYXRhIFJlcGxheWluZ0lucHV0Q3Vyc29yOjpsb2FkRXZlbnRMb29wSW5wdXQoKQorewor
ICAgIEFTU0VSVChtX3NlZ21lbnQpOworCisgICAgc2l6ZV90IG9mZnNldCA9IG1fcG9zaXRpb25z
LmF0KHN0YXRpY19jYXN0PHNpemVfdD4oSW5wdXRRdWV1ZTo6RXZlbnRMb29wSW5wdXQpKTsKKyAg
ICBBU1NFUlQob2Zmc2V0IDwgbV9zZWdtZW50LT5ldmVudExvb3BUaW1pbmdzKCkuc2l6ZSgpKTsK
KworICAgIEV2ZW50TG9vcElucHV0RGF0YSBkYXRhOworICAgIGRhdGEudGltZXN0YW1wID0gbV9z
ZWdtZW50LT5ldmVudExvb3BUaW1pbmdzKCkuYXQob2Zmc2V0KTsKKyAgICBkYXRhLmlucHV0ID0g
c3RhdGljX2Nhc3Q8RXZlbnRMb29wSW5wdXRCYXNlKj4odW5jaGVja2VkTG9hZElucHV0KElucHV0
UXVldWU6OkV2ZW50TG9vcElucHV0KSk7CisgICAgcmV0dXJuIGRhdGE7CiB9CiAKIH07IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5
aW5nSW5wdXRDdXJzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1
cnNvci5oCmluZGV4IDE0NzU3YmEzMTJlNDg4ZWQ3ZDY0MTYzNzA1YjIxMzJiNTMyZTE0MDUuLjlj
NzFmNDE1MjdkYzcyZTE3OTYyYzY3MmVjMDU5NTgxOWVhZWZlY2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1cnNvci5oCkBAIC0zNiwxNSArMzYsMjEgQEAKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBFdmVudExvb3BJbnB1dEJhc2U7CiBjbGFzcyBF
dmVudExvb3BJbnB1dERpc3BhdGNoZXI7CiBjbGFzcyBFdmVudExvb3BJbnB1dERpc3BhdGNoZXJD
bGllbnQ7CiBjbGFzcyBQYWdlOwotY2xhc3MgU2VnbWVudGVkSW5wdXRTdG9yYWdlOworY2xhc3Mg
UmVwbGF5U2Vzc2lvblNlZ21lbnQ7CisKK3N0cnVjdCBFdmVudExvb3BJbnB1dERhdGEgeworICAg
IEV2ZW50TG9vcElucHV0QmFzZSogaW5wdXQ7CisgICAgZG91YmxlIHRpbWVzdGFtcDsKK307CiAK
IGNsYXNzIFJlcGxheWluZ0lucHV0Q3Vyc29yIGZpbmFsIDogcHVibGljIElucHV0Q3Vyc29yIHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZXBsYXlpbmdJbnB1dEN1cnNvcik7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVwbGF5aW5nSW5wdXRDdXJzb3I+IGNyZWF0ZShTZWdt
ZW50ZWRJbnB1dFN0b3JhZ2UmLCBQYWdlJiwgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyQ2xpZW50
Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVwbGF5aW5nSW5wdXRDdXJzb3I+IGNyZWF0ZShQ
YXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiwgUGFnZSYsIEV2ZW50TG9vcElucHV0RGlz
cGF0Y2hlckNsaWVudCopOwogICAgIHZpcnR1YWwgflJlcGxheWluZ0lucHV0Q3Vyc29yKCk7CiAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQpAQCAtNTIsMTQgKzU4LDE2IEBAIHB1YmxpYzoKIAogICAgIEV2ZW50TG9vcElucHV0
RGlzcGF0Y2hlciYgZGlzcGF0Y2hlcigpIGNvbnN0IHsgcmV0dXJuICptX2Rpc3BhdGNoZXI7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBzdG9yZUlucHV0KHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1p
bmlzdGljSW5wdXRCYXNlPikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBOb25kZXRlcm1pbmlzdGlj
SW5wdXRCYXNlKiB1bmNoZWNrZWRMb2FkSW5wdXQoSW5wdXRRdWV1ZSkgb3ZlcnJpZGU7CisgICAg
RXZlbnRMb29wSW5wdXREYXRhIGxvYWRFdmVudExvb3BJbnB1dCgpOwogcHJvdGVjdGVkOgogICAg
IHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSogbG9hZElucHV0KElucHV0UXVldWUs
IGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIFJlcGxh
eWluZ0lucHV0Q3Vyc29yKFNlZ21lbnRlZElucHV0U3RvcmFnZSYsIFBhZ2UmLCBFdmVudExvb3BJ
bnB1dERpc3BhdGNoZXJDbGllbnQqKTsKKyAgICBSZXBsYXlpbmdJbnB1dEN1cnNvcihQYXNzUmVm
UHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiwgUGFnZSYsIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hl
ckNsaWVudCopOworCisgICAgdmlydHVhbCB2b2lkIHN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRy
PE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2U+KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIE5vbmRl
dGVybWluaXN0aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSBvdmVy
cmlkZTsKIAotICAgIFNlZ21lbnRlZElucHV0U3RvcmFnZSYgbV9zdG9yYWdlOworICAgIFJlZlB0
cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gbV9zZWdtZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxF
dmVudExvb3BJbnB1dERpc3BhdGNoZXI+IG1fZGlzcGF0Y2hlcjsKICAgICBWZWN0b3I8c2l6ZV90
PiBtX3Bvc2l0aW9uczsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236122</attachid>
            <date>2014-08-06 11:47:28 -0700</date>
            <delta_ts>2014-08-06 14:53:39 -0700</delta_ts>
            <desc>Remove unused m_page member</desc>
            <filename>bug-135295-20140806114723.patch</filename>
            <type>text/plain</type>
            <size>26612</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTcyMDQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjg1YTI1NDE5ZGYxYzI5
NjE0YjRkZmVmOGNkMTY2YWQxN2UzZTdkNC4uMTEyYjg1MTEzYjMyZjJkYjA4NzMyODQ5ZTY0NGEy
OGE2OTEwMjZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDE0LTA3LTI1ICBCcmlh
biBKLiBCdXJnICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgUmVwbGF5
OiBkaXNwYXRjaCB0aW1pbmcgaW5mb3JtYXRpb24gc2hvdWxkIGJlIHN0b3JlZCBvdXQtb2YtbGlu
ZSBpbiBhIHJlcGxheSBzZWdtZW50CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzUyOTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBXZSBuZWVkIHRvIHNhdmUgYSB0aW1lc3RhbXAgZm9yIGVhY2ggZXZlbnQg
bG9vcCBpbnB1dCBzbyB0aGF0IHJlcGxheSBjYW4KKyAgICAgICAgc2ltdWxhdGUgdGhlIG9yaWdp
bmFsIHVzZXIgYW5kIG5ldHdvcmsgZGVsYXlzLiBDdXJyZW50bHkgdGhhdCB0aW1lc3RhbXAKKyAg
ICAgICAgaXMgc3RvcmVkIG9uIGVhY2ggRXZlbnRMb29wSW5wdXQgaW5zdGFuY2UuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBzdG9yZXMgdGltZXN0YW1wIGRhdGEgaW4gYSBzZXBhcmF0ZSB2ZWN0b3Ig
YXR0YWNoZWQgdG8gdGhlIHNlZ21lbnQuCisgICAgICAgIFRoZSBldmVudCBsb29wIGlucHV0IGNs
YXNzIGlzIG5vdyBpbW11dGFibGUsIGFuZCBuZXcgYXV4aWxpYXJ5IGRhdGEgY2FuIGJlIGFkZGVk
CisgICAgICAgIHdpdGhvdXQgYWRkaW5nIG1lbWJlcnMgdG8gdGhlIEV2ZW50TG9vcElucHV0IGNs
YXNzLgorCisgICAgICAgIEFzIHBhcnQgb2YgdGhlIHJlZmFjdG9yaW5nLCBJbnB1dEN1cnNvcnMg
bm93IGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHJlbGV2YW50CisgICAgICAgIHNlc3Npb24gc2Vn
bWVudCBpbnN0ZWFkIG9mIGEgcmVmZXJlbmNlIHRvIHRoZWlyIGlucHV0IHN0b3JhZ2UuIElucHV0
Q3Vyc29ycyBjYW4KKyAgICAgICAgYmUgY3JlYXRlZCBkaXJlY3RseSwgaW5zdGVhZCBvZiB0aHJv
dWdoIFJlcGxheVNlc3Npb25TZWdtZW50LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVo
YXZpb3Igd2FzIGNoYW5nZWQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5
QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YnVpbGRJbnNwZWN0b3JPYmplY3RGb3JJbnB1
dCk6IERvbid0IHNlbmQgdGhlIHRpbWVzdGFtcCB3aXRoIHRoZSBpbnB1dC4KKyAgICAgICAgKFdl
YkNvcmU6OmJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2VnbWVudCk6CisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL1JlcGxheS5qc29uOiBSZW1vdmUgb3B0aW9uYWwgdGltZXN0YW1wIGZpZWxk
IGZvciBSZXBsYXlJbnB1dC4KKyAgICAgICAgKiByZXBsYXkvQ2FwdHVyaW5nSW5wdXRDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OkNhcHR1cmluZ0lu
cHV0Q3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkNhcHR1cmluZ0lucHV0Q3Vyc29yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FwdHVyaW5nSW5wdXRDdXJzb3I6OnN0b3JlSW5wdXQp
OiBTYXZlIGV2ZW50IGxvb3AgaW5wdXQgdGltaW5ncyBoZXJlLgorICAgICAgICAqIHJlcGxheS9D
YXB0dXJpbmdJbnB1dEN1cnNvci5oOgorICAgICAgICAqIHJlcGxheS9FdmVudExvb3BJbnB1dC5o
OgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXRCYXNlOjpFdmVudExvb3BJbnB1dEJh
c2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXRCYXNlOjp0aW1l
c3RhbXApOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXRCYXNlOjpz
ZXRUaW1lc3RhbXApOiBEZWxldGVkLgorICAgICAgICAqIHJlcGxheS9FdmVudExvb3BJbnB1dERp
c3BhdGNoZXIuY3BwOiBVc2UgYSBzdHJ1Y3QgZm9yIGRpc3BhdGNoIGluZm9ybWF0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyOjpFdmVudExvb3BJbnB1dERp
c3BhdGNoZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyOjpk
aXNwYXRjaElucHV0U29vbik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudExvb3BJbnB1dERpc3Bh
dGNoZXI6OmRpc3BhdGNoSW5wdXQpOgorICAgICAgICAqIHJlcGxheS9FdmVudExvb3BJbnB1dERp
c3BhdGNoZXIuaDoKKyAgICAgICAgKiByZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmg6CisgICAg
ICAgIChXZWJDb3JlOjpGdW5jdG9ySW5wdXRDdXJzb3I6OmZvckVhY2hJbnB1dEluUXVldWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RnVuY3RvcklucHV0Q3Vyc29yOjpGdW5jdG9ySW5wdXRDdXJzb3Ip
OgorICAgICAgICAqIHJlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlcGxheUNvbnRyb2xsZXI6OmNyZWF0ZVNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVwbGF5Q29udHJvbGxlcjo6bG9hZFNlZ21lbnRBdEluZGV4KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlcGxheUNvbnRyb2xsZXI6OnVubG9hZFNlZ21lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6UmVwbGF5Q29udHJvbGxlcjo6c3RhcnRQbGF5YmFjayk6IERlbGV0ZWQuCisgICAgICAg
ICogcmVwbGF5L1JlcGxheVNlc3Npb25TZWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
cGxheVNlc3Npb25TZWdtZW50OjpjcmVhdGVDYXB0dXJpbmdDdXJzb3IpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6UmVwbGF5U2Vzc2lvblNlZ21lbnQ6OmNyZWF0ZVJlcGxheWluZ0N1cnNv
cik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudDo6Y3Jl
YXRlRnVuY3RvckN1cnNvcik6IERlbGV0ZWQuCisgICAgICAgICogcmVwbGF5L1JlcGxheVNlc3Np
b25TZWdtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudDo6c3Rv
cmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlTZXNzaW9uU2VnbWVudDo6ZXZlbnRMb29w
VGltaW5ncyk6CisgICAgICAgICogcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxheWluZ0lucHV0Q3Vyc29yOjpSZXBsYXlpbmdJbnB1dEN1cnNv
cik6CisgICAgICAgIChXZWJDb3JlOjpSZXBsYXlpbmdJbnB1dEN1cnNvcjo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlcGxheWluZ0lucHV0Q3Vyc29yOjp1bmNoZWNrZWRMb2FkSW5wdXQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5aW5nSW5wdXRDdXJzb3I6OmxvYWRFdmVudExvb3BJ
bnB1dCk6IEFkZGVkLiBUaGlzIG1ldGhvZCBjb2xsYXRlcworICAgICAgICBhbmQgcmV0dXJucyB0
aGUgbmV4dCBldmVudCBsb29wIGlucHV0IHdpdGggaXRzIGFzc29jaWF0ZWQgZGlzcGF0Y2ggaW5m
b3JtYXRpb24uCisgICAgICAgICogcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmg6CisKIDIw
MTQtMDctMjQgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGNvbnZlcnQgUmVwbGF5TWFuYWdlciB0byBhIHByb21pc2UtYmFz
ZWQgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVw
bGF5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFn
ZW50LmNwcAppbmRleCA2Yzc4ZWE0ZTEzMTU1YTcwMzBmYjQ3OTYwMWFjZWU0Y2NmZmMwODc4Li4x
NTg2NDkzZDczZjA1NzA0MTU3MGMzNmNmMjlmZjFkYzJmOTYxMGExIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTcxLDkgKzcx
LDYgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxkZXI6OlJlcGxheTo6UmVwbGF5SW5wdXQ+
IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9ySW5wdXQKICAgICAgICAgLnNldE9mZnNldChvZmZzZXQp
CiAgICAgICAgIC5zZXREYXRhKGVuY29kZWRJbnB1dC5hc09iamVjdCgpKTsKIAotICAgIGlmIChp
bnB1dC5xdWV1ZSgpID09IElucHV0UXVldWU6OkV2ZW50TG9vcElucHV0KQotICAgICAgICBpbnB1
dE9iamVjdC0+c2V0VGltZXN0YW1wKHN0YXRpY19jYXN0PGNvbnN0IEV2ZW50TG9vcElucHV0QmFz
ZSY+KGlucHV0KS50aW1lc3RhbXAoKSk7Ci0KICAgICByZXR1cm4gaW5wdXRPYmplY3QucmVsZWFz
ZSgpOwogfQogCkBAIC0xNDEsNyArMTM4LDcgQEAgc3RhdGljIFBhc3NSZWZQdHI8VHlwZUJ1aWxk
ZXI6OlJlcGxheTo6U2Vzc2lvblNlZ21lbnQ+IGJ1aWxkSW5zcGVjdG9yT2JqZWN0Rm9yU2UKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0YXRpY19jYXN0PHNpemVfdD4oSW5wdXRRdWV1ZTo6
Q291bnQpOyBpKyspIHsKICAgICAgICAgU2VyaWFsaXplSW5wdXRUb0pTT05GdW5jdG9yIGNvbGxl
Y3RvcjsKICAgICAgICAgSW5wdXRRdWV1ZSBxdWV1ZSA9IHN0YXRpY19jYXN0PElucHV0UXVldWU+
KGkpOwotICAgICAgICBSZWZQdHI8RnVuY3RvcklucHV0Q3Vyc29yPiBmdW5jdG9yQ3Vyc29yID0g
c2VnbWVudC0+Y3JlYXRlRnVuY3RvckN1cnNvcigpOworICAgICAgICBSZWZQdHI8RnVuY3Rvcklu
cHV0Q3Vyc29yPiBmdW5jdG9yQ3Vyc29yID0gRnVuY3RvcklucHV0Q3Vyc29yOjpjcmVhdGUoc2Vn
bWVudCk7CiAgICAgICAgIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJl
cGxheTo6UmVwbGF5SW5wdXQ+PiBxdWV1ZUlucHV0cyA9IGZ1bmN0b3JDdXJzb3ItPmZvckVhY2hJ
bnB1dEluUXVldWUocXVldWUsIGNvbGxlY3Rvcik7CiAKICAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpSZXBsYXk6OlJlcGxheUlucHV0UXVldWU+IHF1ZXVlT2JqZWN0ID0gVHlwZUJ1aWxkZXI6
OlJlcGxheTo6UmVwbGF5SW5wdXRRdWV1ZTo6Y3JlYXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SZXBsYXkuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9wcm90b2NvbC9SZXBsYXkuanNvbgppbmRleCA2NWJhMjg5NWU2N2U0Nzc4MTI1MGM1
OTJkYzNiNWMyZjc3Zjk2NmJiLi4xYzlhN2E1MThlMGYzYzNmMjdjYWQ2NjgxZTI1NzZhYzkwOWEy
NTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVwbGF5
Lmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1JlcGxheS5qc29u
CkBAIC0zNCw3ICszNCw2IEBACiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogInR5cGUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24i
OiAiSW5wdXQgdHlwZS4iIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvZmZzZXQiLCAi
dHlwZSI6ICJpbnRlZ2VyIiwgImRlc2NyaXB0aW9uIjogIk9mZnNldCBvZiB0aGlzIGlucHV0IGlu
IGl0cyByZXNwZWN0aXZlIHF1ZXVlLiJ9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidGlt
ZXN0YW1wIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSB0aW1lc3RhbXAgb2YgdGhpcyBpbnB1dC4iIH0sCiAgICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJkYXRhIiwgInR5cGUiOiAib2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIlBlci1pbnB1
dCBwYXlsb2FkLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5jcHAKaW5kZXggZGFhMDZiY2M5ZWUzMDBh
OThjMzQzMjJhN2JjZGM3NmY1YjVkOTEyZi4uNDBkYjNiNmQyNTI1YWRiZmQ3ODRkNTMzMWQzMzZh
M2RhMTQyODgyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lu
cHV0Q3Vyc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvQ2FwdHVyaW5nSW5wdXRD
dXJzb3IuY3BwCkBAIC0zMCwxMyArMzAsMTYgQEAKIAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQog
CisjaW5jbHVkZSAiRXZlbnRMb29wSW5wdXQuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCisjaW5j
bHVkZSAiUmVwbGF5U2Vzc2lvblNlZ21lbnQuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRJbnB1dFN0
b3JhZ2UuaCIKKyNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1DYXB0dXJpbmdJbnB1dEN1cnNvcjo6Q2FwdHVyaW5nSW5wdXRDdXJzb3IoU2VnbWVu
dGVkSW5wdXRTdG9yYWdlJiBzdG9yYWdlKQotICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCitDYXB0
dXJpbmdJbnB1dEN1cnNvcjo6Q2FwdHVyaW5nSW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBsYXlT
ZXNzaW9uU2VnbWVudD4gc2VnbWVudCkKKyAgICA6IG1fc2VnbWVudChzZWdtZW50KQogICAgICwg
bV93aXRoaW5FdmVudExvb3BJbnB1dEV4dGVudChmYWxzZSkKIHsKICAgICBMT0coV2ViUmVwbGF5
LCAiJS0zMHNDcmVhdGVkIGNhcHR1cmUgY3Vyc29yPSVwLlxuIiwgIltSZXBsYXlDb250cm9sbGVy
XSIsIHRoaXMpOwpAQCAtNDcsMTUgKzUwLDIyIEBAIENhcHR1cmluZ0lucHV0Q3Vyc29yOjp+Q2Fw
dHVyaW5nSW5wdXRDdXJzb3IoKQogICAgIExPRyhXZWJSZXBsYXksICIlLTMwc0Rlc3Ryb3llZCBj
YXB0dXJlIGN1cnNvcj0lcC5cbiIsICJbUmVwbGF5Q29udHJvbGxlcl0iLCB0aGlzKTsKIH0KIAot
UGFzc1JlZlB0cjxDYXB0dXJpbmdJbnB1dEN1cnNvcj4gQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OmNy
ZWF0ZShTZWdtZW50ZWRJbnB1dFN0b3JhZ2UmIHN0b3JhZ2UpCitQYXNzUmVmUHRyPENhcHR1cmlu
Z0lucHV0Q3Vyc29yPiBDYXB0dXJpbmdJbnB1dEN1cnNvcjo6Y3JlYXRlKFBhc3NSZWZQdHI8UmVw
bGF5U2Vzc2lvblNlZ21lbnQ+IHNlZ21lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YXB0dXJpbmdJbnB1dEN1cnNvcihzdG9yYWdlKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBD
YXB0dXJpbmdJbnB1dEN1cnNvcihzZWdtZW50KSk7CiB9CiAKIHZvaWQgQ2FwdHVyaW5nSW5wdXRD
dXJzb3I6OnN0b3JlSW5wdXQoc3RkOjp1bmlxdWVfcHRyPE5vbmRldGVybWluaXN0aWNJbnB1dEJh
c2U+IGlucHV0KQogewotICAgIEFTU0VSVChpbnB1dCk7Ci0gICAgbV9zdG9yYWdlLnN0b3JlKFdU
Rjo6bW92ZShpbnB1dCkpOworICAgIEFTU0VSVF9BUkcoaW5wdXQsIGlucHV0KTsKKworICAgIGlm
IChpbnB1dC0+cXVldWUoKSA9PSBJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dCkgeworICAgICAg
ICAvLyBGSVhNRTogcmV3cml0ZSB0aGlzIChhbmQgcmVsYXRlZCBkaXNwYXRjaCBjb2RlKSB0byB1
c2Ugc3RkOjpjaHJvbm8uCisgICAgICAgIGRvdWJsZSBub3cgPSBtb25vdG9uaWNhbGx5SW5jcmVh
c2luZ1RpbWUoKTsKKyAgICAgICAgbV9zZWdtZW50LT5ldmVudExvb3BUaW1pbmdzKCkuYXBwZW5k
KG5vdyk7CisgICAgfQorCisgICAgbV9zZWdtZW50LT5zdG9yYWdlKCkuc3RvcmUoV1RGOjptb3Zl
KGlucHV0KSk7CiB9CiAKIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIENhcHR1cmluZ0lucHV0
Q3Vyc29yOjpsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgQXRvbWljU3RyaW5nJikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9DYXB0dXJpbmdJbnB1dEN1cnNvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lucHV0Q3Vyc29yLmgKaW5kZXggZmM3Mjg5YTkw
ZGI0MTc1ODM4NWVlYTAzZTYzODNmODllMTRhZTA2Mi4uNTllNmQ0Y2E4MDFhMjgwNjA1ODg3OTA4
NGRhMTg3NDBhYWMzZWJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1
cmluZ0lucHV0Q3Vyc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0NhcHR1cmluZ0lu
cHV0Q3Vyc29yLmgKQEAgLTM2LDEyICszNiwxMyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBFdmVudExvb3BJbnB1dEV4dGVudDsKLWNsYXNzIFNlZ21lbnRlZElucHV0U3RvcmFnZTsK
K2NsYXNzIFBhZ2U7CitjbGFzcyBSZXBsYXlTZXNzaW9uU2VnbWVudDsKIAogY2xhc3MgQ2FwdHVy
aW5nSW5wdXRDdXJzb3IgZmluYWwgOiBwdWJsaWMgSW5wdXRDdXJzb3IgewogICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENhcHR1cmluZ0lucHV0Q3Vyc29yKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDYXB0dXJpbmdJbnB1dEN1cnNvcj4gY3JlYXRlKFNlZ21lbnRlZElucHV0U3Rv
cmFnZSYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPENhcHR1cmluZ0lucHV0Q3Vyc29yPiBjcmVh
dGUoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4pOwogICAgIHZpcnR1YWwgfkNhcHR1
cmluZ0lucHV0Q3Vyc29yKCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNDYXB0dXJpbmcoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CkBAIC01MCwxNSArNTEsMTYgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0V2l0aGluRXZlbnRMb29wSW5wdXRFeHRlbnQoYm9vbCk7CiAgICAgYm9vbCB3
aXRoaW5FdmVudExvb3BJbnB1dEV4dGVudCgpIGNvbnN0IHsgcmV0dXJuIG1fd2l0aGluRXZlbnRM
b29wSW5wdXRFeHRlbnQ7IH0KIAotICAgIHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFz
ZSogdW5jaGVja2VkTG9hZElucHV0KElucHV0UXVldWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCBzdG9yZUlucHV0KHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNl
Pikgb3ZlcnJpZGU7CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBOb25kZXRlcm1pbmlzdGljSW5w
dXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKSBv
dmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBDYXB0dXJpbmdJbnB1dEN1cnNvcihT
ZWdtZW50ZWRJbnB1dFN0b3JhZ2UmKTsKKyAgICBDYXB0dXJpbmdJbnB1dEN1cnNvcihQYXNzUmVm
UHRyPFJlcGxheVNlc3Npb25TZWdtZW50Pik7CisKKyAgICB2aXJ0dWFsIE5vbmRldGVybWluaXN0
aWNJbnB1dEJhc2UqIHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgc3RvcmVJbnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0QmFzZT4pIG92ZXJyaWRlOwogCi0gICAgU2VnbWVudGVkSW5wdXRTdG9yYWdlJiBtX3N0
b3JhZ2U7CisgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBtX3NlZ21lbnQ7CiAgICAg
Ym9vbCBtX3dpdGhpbkV2ZW50TG9vcElucHV0RXh0ZW50OwogfTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvRXZlbnRMb29wSW5wdXQuaAppbmRleCAwNzk1ZDUzMjQ1ZmQzY2Q4NmQzYjI0ZGI5NmU2MmNk
YTZkYTlmZjhjLi4yNTBhM2RiMjUyMDU0Yzc2MzBlMzkyYWFlZWJjNThhMDg2NDAwZWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXQuaApAQCAtNTUsMjAgKzU1LDEwIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIEV2ZW50TG9vcElucHV0QmFzZSA6IHB1YmxpYyBOb25kZXRlcm1pbmlz
dGljSW5wdXRCYXNlIHsKIHB1YmxpYzoKLSAgICBFdmVudExvb3BJbnB1dEJhc2UoKQotICAgICAg
ICA6IG1fdGltZXN0YW1wKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpKQotICAgIHsKLSAg
ICB9Ci0KICAgICB2aXJ0dWFsIH5FdmVudExvb3BJbnB1dEJhc2UoKSB7IH0KICAgICB2aXJ0dWFs
IElucHV0UXVldWUgcXVldWUoKSBjb25zdCBvdmVycmlkZSBmaW5hbCB7IHJldHVybiBJbnB1dFF1
ZXVlOjpFdmVudExvb3BJbnB1dDsgfQogCiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoKFJlcGxh
eUNvbnRyb2xsZXImKSA9IDA7Ci0KLSAgICBkb3VibGUgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1
cm4gbV90aW1lc3RhbXA7IH0KLSAgICB2b2lkIHNldFRpbWVzdGFtcChkb3VibGUgdGltZXN0YW1w
KSB7IG1fdGltZXN0YW1wID0gdGltZXN0YW1wOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgZG91YmxlIG1f
dGltZXN0YW1wOwogfTsKIAogdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0VHlwZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1dERpc3BhdGNoZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5jcHAKaW5kZXgg
ODUwMjE5NzQ1Njg1NjEzMzQyZjAxMGUyNzMzNmVkZTE1ZmU2ZDgxMS4uN2YyM2ExNThlNmI5Njkw
N2EyMWJhNzA4ZTIwNzRhMGUxZjJkMGQ3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVw
bGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVw
bGF5L0V2ZW50TG9vcElucHV0RGlzcGF0Y2hlci5jcHAKQEAgLTQ5LDEzICs0OSwxNCBAQCBFdmVu
dExvb3BJbnB1dERpc3BhdGNoZXI6OkV2ZW50TG9vcElucHV0RGlzcGF0Y2hlcihQYWdlJiBwYWdl
LCBSZXBsYXlpbmdJbnB1dEN1cgogICAgICwgbV9jbGllbnQoY2xpZW50KQogICAgICwgbV9jdXJz
b3IoY3Vyc29yKQogICAgICwgbV90aW1lcih0aGlzLCAmRXZlbnRMb29wSW5wdXREaXNwYXRjaGVy
Ojp0aW1lckZpcmVkKQotICAgICwgbV9ydW5uaW5nSW5wdXQobnVsbHB0cikKICAgICAsIG1fZGlz
cGF0Y2hpbmcoZmFsc2UpCiAgICAgLCBtX3J1bm5pbmcoZmFsc2UpCiAgICAgLCBtX3NwZWVkKERp
c3BhdGNoU3BlZWQ6OkZhc3RGb3J3YXJkKQogICAgICwgbV9wcmV2aW91c0Rpc3BhdGNoU3RhcnRU
aW1lKDAuMCkKICAgICAsIG1fcHJldmlvdXNJbnB1dFRpbWVzdGFtcCgwLjApCiB7CisgICAgbV9j
dXJyZW50V29yay5pbnB1dCA9IG51bGxwdHI7CisgICAgbV9jdXJyZW50V29yay50aW1lc3RhbXAg
PSAwLjA7CiB9CiAKIHZvaWQgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyOjpydW4oKQpAQCAtODgs
OCArODksOCBAQCB2b2lkIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hJbnB1dFNv
b24oKQogICAgIEFTU0VSVChtX3J1bm5pbmcpOwogCiAgICAgLy8gV2UgbWF5IGFscmVhZHkgaGF2
ZSBhbiBpbnB1dCBpZiByZXBsYXkgd2FzIHBhdXNlZCBqdXN0IGJlZm9yZSBkaXNwYXRjaGluZy4K
LSAgICBpZiAoIW1fcnVubmluZ0lucHV0KQotICAgICAgICBtX3J1bm5pbmdJbnB1dCA9IHN0YXRp
Y19jYXN0PEV2ZW50TG9vcElucHV0QmFzZSo+KG1fY3Vyc29yLnVuY2hlY2tlZExvYWRJbnB1dChJ
bnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dCkpOworICAgIGlmICghbV9jdXJyZW50V29yay5pbnB1
dCkKKyAgICAgICAgbV9jdXJyZW50V29yayA9IG1fY3Vyc29yLmxvYWRFdmVudExvb3BJbnB1dCgp
OwogCiAgICAgaWYgKG1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5zdG9wKCk7
CkBAIC0xMDMsOSArMTA0LDkgQEAgdm9pZCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXI6OmRpc3Bh
dGNoSW5wdXRTb29uKCkKICAgICAgICAgLy8gb2JzZXJ2ZWQgZGVsYXkgYmV0d2VlbiB0aGUgcHJl
dmlvdXMgYW5kIGN1cnJlbnQgaW5wdXQuCiAKICAgICAgICAgaWYgKCFtX3ByZXZpb3VzSW5wdXRU
aW1lc3RhbXApCi0gICAgICAgICAgICBtX3ByZXZpb3VzSW5wdXRUaW1lc3RhbXAgPSBtX3J1bm5p
bmdJbnB1dC0+dGltZXN0YW1wKCk7CisgICAgICAgICAgICBtX3ByZXZpb3VzSW5wdXRUaW1lc3Rh
bXAgPSBtX2N1cnJlbnRXb3JrLnRpbWVzdGFtcDsKIAotICAgICAgICBkb3VibGUgdGFyZ2V0SW50
ZXJ2YWwgPSBtX3J1bm5pbmdJbnB1dC0+dGltZXN0YW1wKCkgLSBtX3ByZXZpb3VzSW5wdXRUaW1l
c3RhbXA7CisgICAgICAgIGRvdWJsZSB0YXJnZXRJbnRlcnZhbCA9IG1fY3VycmVudFdvcmsudGlt
ZXN0YW1wIC0gbV9wcmV2aW91c0lucHV0VGltZXN0YW1wOwogICAgICAgICBkb3VibGUgZWxhcHNl
ZCA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9wcmV2aW91c0Rpc3BhdGNoU3Rh
cnRUaW1lOwogICAgICAgICB3YWl0SW50ZXJ2YWwgPSB0YXJnZXRJbnRlcnZhbCAtIGVsYXBzZWQ7
CiAgICAgfQpAQCAtMTI2LDM0ICsxMjcsMzQgQEAgdm9pZCBFdmVudExvb3BJbnB1dERpc3BhdGNo
ZXI6OmRpc3BhdGNoSW5wdXRTb29uKCkKIAogdm9pZCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXI6
OmRpc3BhdGNoSW5wdXQoKQogewotICAgIEFTU0VSVChtX3J1bm5pbmdJbnB1dCk7CisgICAgQVNT
RVJUKG1fY3VycmVudFdvcmsuaW5wdXQpOwogICAgIEFTU0VSVCghbV9kaXNwYXRjaGluZyk7CiAK
ICAgICBpZiAobV9zcGVlZCA9PSBEaXNwYXRjaFNwZWVkOjpSZWFsVGltZSkgewogICAgICAgICBt
X3ByZXZpb3VzRGlzcGF0Y2hTdGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KTsKLSAgICAgICAgbV9wcmV2aW91c0lucHV0VGltZXN0YW1wID0gbV9ydW5uaW5nSW5wdXQtPnRp
bWVzdGFtcCgpOworICAgICAgICBtX3ByZXZpb3VzSW5wdXRUaW1lc3RhbXAgPSBtX2N1cnJlbnRX
b3JrLnRpbWVzdGFtcDsKICAgICB9CiAKICNpZiAhTE9HX0RJU0FCTEVECi0gICAgRW5jb2RlZFZh
bHVlIGVuY29kZWRJbnB1dCA9IEVuY29kaW5nVHJhaXRzPE5vbmRldGVybWluaXN0aWNJbnB1dEJh
c2U+OjplbmNvZGVWYWx1ZSgqbV9ydW5uaW5nSW5wdXQpOworICAgIEVuY29kZWRWYWx1ZSBlbmNv
ZGVkSW5wdXQgPSBFbmNvZGluZ1RyYWl0czxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlPjo6ZW5j
b2RlVmFsdWUoKm1fY3VycmVudFdvcmsuaW5wdXQpOwogICAgIFN0cmluZyBqc29uU3RyaW5nID0g
ZW5jb2RlZElucHV0LmFzT2JqZWN0KCktPnRvSlNPTlN0cmluZygpOwogCiAgICAgTE9HKFdlYlJl
cGxheSwgIiUtMjBzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0iLCAiUmVwbGF5RXZlbnRzIik7Ci0gICAgTE9HKFdlYlJlcGxheSwgIiUtMjBzID5ESVNQQVRD
SDogJXMgJXNcbiIsICJSZXBsYXlFdmVudHMiLCBtX3J1bm5pbmdJbnB1dC0+dHlwZSgpLnN0cmlu
ZygpLnV0ZjgoKS5kYXRhKCksIGpzb25TdHJpbmcudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKFdl
YlJlcGxheSwgIiUtMjBzID5ESVNQQVRDSDogJXMgJXNcbiIsICJSZXBsYXlFdmVudHMiLCBtX2N1
cnJlbnRXb3JrLmlucHV0LT50eXBlKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwganNvblN0cmlu
Zy51dGY4KCkuZGF0YSgpKTsKICNlbmRpZgogCi0gICAgbV9jbGllbnQtPndpbGxEaXNwYXRjaElu
cHV0KCptX3J1bm5pbmdJbnB1dCk7CisgICAgbV9jbGllbnQtPndpbGxEaXNwYXRjaElucHV0KCpt
X2N1cnJlbnRXb3JrLmlucHV0KTsKICAgICAvLyBDbGllbnQgY291bGQgc3RvcCByZXBsYXkgaW4g
dGhlIHByZXZpb3VzIGNhbGxiYWNrLCBzbyBjaGVjayBhZ2Fpbi4KICAgICBpZiAoIW1fcnVubmlu
ZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgewogICAgICAgICBUZW1wb3JhcnlDaGFuZ2U8Ym9v
bD4gY2hhbmdlKG1fZGlzcGF0Y2hpbmcsIHRydWUpOwotICAgICAgICBtX3J1bm5pbmdJbnB1dC0+
ZGlzcGF0Y2gobV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKSk7CisgICAgICAgIG1fY3VycmVudFdv
cmsuaW5wdXQtPmRpc3BhdGNoKG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkpOwogICAgIH0KIAot
ICAgIEV2ZW50TG9vcElucHV0QmFzZSogZGlzcGF0Y2hlZElucHV0ID0gbV9ydW5uaW5nSW5wdXQ7
Ci0gICAgbV9ydW5uaW5nSW5wdXQgPSBudWxscHRyOworICAgIEV2ZW50TG9vcElucHV0QmFzZSog
ZGlzcGF0Y2hlZElucHV0ID0gbV9jdXJyZW50V29yay5pbnB1dDsKKyAgICBtX2N1cnJlbnRXb3Jr
LmlucHV0ID0gbnVsbHB0cjsKIAogICAgIC8vIE5vdGlmeSBjbGllbnRzIHRoYXQgdGhlIGV2ZW50
IHdhcyBkaXNwYXRjaGVkLgogICAgIG1fY2xpZW50LT5kaWREaXNwYXRjaElucHV0KCpkaXNwYXRj
aGVkSW5wdXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElu
cHV0RGlzcGF0Y2hlci5oIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L0V2ZW50TG9vcElucHV0RGlz
cGF0Y2hlci5oCmluZGV4IGQ2NDEzNjFiYjQ4ZmQ5MzFiNDBlOGVjYjc4ZGM0MTIyZGM3ZDFiYWUu
LmY0MzA2MmViNThiZDRmZTFkOTRiZTY1MWI4NjFiNjAzYmU0YmI3ZmEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9FdmVudExvb3BJbnB1dERpc3BhdGNoZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyLmgKQEAgLTMxLDYgKzMx
LDcgQEAKICNpZiBFTkFCTEUoV0VCX1JFUExBWSkKIAogI2luY2x1ZGUgIkV2ZW50TG9vcElucHV0
LmgiCisjaW5jbHVkZSAiUmVwbGF5aW5nSW5wdXRDdXJzb3IuaCIKICNpbmNsdWRlICJUaW1lci5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
QEAgLTM5LDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUGFnZTsKLWNs
YXNzIFJlcGxheWluZ0lucHV0Q3Vyc29yOwogCiBlbnVtIGNsYXNzIERpc3BhdGNoU3BlZWQgewog
ICAgIFJlYWxUaW1lLApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgIFJlcGxheWluZ0lu
cHV0Q3Vyc29yJiBtX2N1cnNvcjsKICAgICBUaW1lcjxFdmVudExvb3BJbnB1dERpc3BhdGNoZXI+
IG1fdGltZXI7CiAKLSAgICAvLyBUaGlzIHBvaW50ZXIgaXMgdmFsaWQgd2hlbiBhbiBldmVudCBs
b29wIGlucHV0IGlzIHByZXNlbnRseSBkaXNwYXRjaGluZy4KLSAgICBFdmVudExvb3BJbnB1dEJh
c2UqIG1fcnVubmluZ0lucHV0OworICAgIC8vIFRoaXMgZGF0YSBpcyB2YWxpZCB3aGVuIGFuIGV2
ZW50IGxvb3AgaW5wdXQgaXMgcHJlc2VudGx5IGRpc3BhdGNoaW5nLgorICAgIEV2ZW50TG9vcElu
cHV0RGF0YSBtX2N1cnJlbnRXb3JrOwogICAgIC8vIFdoZXRoZXIgdGhlIGRpc3BhdGNoZXIgaXMg
Y3VycmVudGx5IGNhbGxpbmcgb3V0IHRvIGFuIGlucHV0cycgZGlzcGF0Y2goKSBtZXRob2QuCiAg
ICAgYm9vbCBtX2Rpc3BhdGNoaW5nOwogICAgIC8vIFdoZXRoZXIgdGhlIGRpc3BhdGNoZXIgaXMg
d2FpdGluZyB0byBkaXNwYXRjaCBvciBhY3RpdmVseSBkaXNwYXRjaGluZyBpbnB1dHMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvRnVuY3RvcklucHV0Q3Vyc29yLmgKaW5kZXggZDA3ODIxZDJjZDdj
ZWE1Njc0N2NhNjg5M2EzZTZhOWQxYzE1MzdjMS4uYzhkZjkwMzFjZDlhN2U5YzA4NTNmMTk3ODg5
ZTQ0ZDMzMzA2ZGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L0Z1bmN0b3JJ
bnB1dEN1cnNvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9GdW5jdG9ySW5wdXRDdXJz
b3IuaApAQCAtMzAsNiArMzAsNyBAQAogCiAjaWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAKKyNpbmNs
dWRlICJSZXBsYXlTZXNzaW9uU2VnbWVudC5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZElucHV0U3Rv
cmFnZS5oIgogI2luY2x1ZGUgPHJlcGxheS9JbnB1dEN1cnNvci5oPgogI2luY2x1ZGUgPHJlcGxh
eS9Ob25kZXRlcm1pbmlzdGljSW5wdXQuaD4KQEAgLTQyLDkgKzQzLDkgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogY2xhc3MgRnVuY3RvcklucHV0Q3Vyc29yIGZpbmFsIDogcHVibGljIElucHV0Q3Vy
c29yIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShGdW5jdG9ySW5wdXRDdXJzb3IpOwogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZ1bmN0b3JJbnB1dEN1cnNvcj4gY3JlYXRlKFNl
Z21lbnRlZElucHV0U3RvcmFnZSYgc3RvcmFnZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGdW5j
dG9ySW5wdXRDdXJzb3I+IGNyZWF0ZShQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBz
ZWdtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGdW5jdG9ySW5wdXRD
dXJzb3Ioc3RvcmFnZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZ1bmN0b3JJbnB1
dEN1cnNvcihzZWdtZW50KSk7CiAgICAgfQogCiAgICAgLy8gSW5wdXRDdXJzb3IKQEAgLTU5LDIy
ICs2MCwyMiBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBOb25kZXRlcm1pbmlz
dGljSW5wdXRCYXNlKiBsb2FkSW5wdXQoSW5wdXRRdWV1ZSwgY29uc3QgQXRvbWljU3RyaW5nJikg
b3ZlcnJpZGU7CiBwcml2YXRlOgotICAgIEZ1bmN0b3JJbnB1dEN1cnNvcihTZWdtZW50ZWRJbnB1
dFN0b3JhZ2UmKTsKKyAgICBGdW5jdG9ySW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBsYXlTZXNz
aW9uU2VnbWVudD4pOwogCi0gICAgU2VnbWVudGVkSW5wdXRTdG9yYWdlJiBtX3N0b3JhZ2U7Cisg
ICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBtX3NlZ21lbnQ7CiB9OwogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiBpbmxpbmUKIHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
RnVuY3RvcklucHV0Q3Vyc29yOjpmb3JFYWNoSW5wdXRJblF1ZXVlKElucHV0UXVldWUgcXVldWUs
IEZ1bmN0b3ImIGZ1bmN0b3IpCiB7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX3N0b3Jh
Z2UucXVldWVTaXplKHF1ZXVlKTsgaSsrKQotICAgICAgICBmdW5jdG9yKGksIG1fc3RvcmFnZS5x
dWV1ZShxdWV1ZSkuYXQoaSkuZ2V0KCkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9z
ZWdtZW50LT5zdG9yYWdlKCkucXVldWVTaXplKHF1ZXVlKTsgaSsrKQorICAgICAgICBmdW5jdG9y
KGksIG1fc2VnbWVudC0+c3RvcmFnZSgpLnF1ZXVlKHF1ZXVlKS5hdChpKS5nZXQoKSk7CiAKICAg
ICByZXR1cm4gZnVuY3Rvci5yZXR1cm5WYWx1ZSgpOwogfQogCi1pbmxpbmUgRnVuY3RvcklucHV0
Q3Vyc29yOjpGdW5jdG9ySW5wdXRDdXJzb3IoU2VnbWVudGVkSW5wdXRTdG9yYWdlJiBzdG9yYWdl
KQotICAgIDogbV9zdG9yYWdlKHN0b3JhZ2UpCitpbmxpbmUgRnVuY3RvcklucHV0Q3Vyc29yOjpG
dW5jdG9ySW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVu
dCkKKyAgICA6IG1fc2VnbWVudChzZWdtZW50KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggOWNkY2UzMjYxYmRhYzU3YTMxNDViZDc3YjM1
ZjdlMjY4NmEzZjNjZC4uMjllOWI1ZmI3ZTI2ZDZmZmE1NzFlOWRiNDdmZGY2YzJlMjhkMzI3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcApAQCAtMjI4LDcg
KzIyOCw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6Y3JlYXRlU2VnbWVudCgpCiAgICAgTE9H
KFdlYlJlcGxheSwgIiUtMjBzIENyZWF0ZWQgc2VnbWVudDogJXAuXG4iLCAiUmVwbGF5Q29udHJv
bGxlciIsIG1fbG9hZGVkU2VnbWVudC5nZXQoKSk7CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpzZWdtZW50Q3JlYXRlZCgmbV9wYWdlLCBtX2xvYWRlZFNlZ21lbnQpOwogCi0gICAgbV9h
Y3RpdmVDdXJzb3IgPSBtX2xvYWRlZFNlZ21lbnQtPmNyZWF0ZUNhcHR1cmluZ0N1cnNvcihtX3Bh
Z2UpOworICAgIG1fYWN0aXZlQ3Vyc29yID0gQ2FwdHVyaW5nSW5wdXRDdXJzb3I6OmNyZWF0ZSht
X2xvYWRlZFNlZ21lbnQpOwogICAgIG1fYWN0aXZlQ3Vyc29yLT5hcHBlbmRJbnB1dDxCZWdpblNl
Z21lbnRTZW50aW5lbD4oKTsKIAogICAgIC8vIERpc3BhdGNoaW5nIHRoaXMgaW5wdXQgc2F2ZXMg
aGlzdG9yeSwgY2xlYXJzIGFsbCBidXQgdGhlIGN1cnJlbnQgaXRlbSwgYXBwZW5kcyBzYXZlZApA
QCAtMjc4LDcgKzI3OCw3IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6bG9hZFNlZ21lbnRBdElu
ZGV4KHNpemVfdCBzZWdtZW50SW5kZXgpCiAgICAgbV9jdXJyZW50UG9zaXRpb24uc2VnbWVudE9m
ZnNldCA9IHNlZ21lbnRJbmRleDsKICAgICBtX2N1cnJlbnRQb3NpdGlvbi5pbnB1dE9mZnNldCA9
IDA7CiAKLSAgICBtX2FjdGl2ZUN1cnNvciA9IG1fbG9hZGVkU2VnbWVudC0+Y3JlYXRlUmVwbGF5
aW5nQ3Vyc29yKG1fcGFnZSwgdGhpcyk7CisgICAgbV9hY3RpdmVDdXJzb3IgPSBSZXBsYXlpbmdJ
bnB1dEN1cnNvcjo6Y3JlYXRlKG1fbG9hZGVkU2VnbWVudCwgbV9wYWdlLCB0aGlzKTsKIAogICAg
IExPRyhXZWJSZXBsYXksICIlLTIwc0xvYWRpbmcgc2VnbWVudDogJXAuXG4iLCAiUmVwbGF5Q29u
dHJvbGxlciIsIHNlZ21lbnQuZ2V0KCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
c2VnbWVudExvYWRlZCgmbV9wYWdlLCBzZWdtZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9SZXBsYXlTZXNzaW9uU2VnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZXBs
YXkvUmVwbGF5U2Vzc2lvblNlZ21lbnQuY3BwCmluZGV4IGFiMGQ0Nzc4ZGI4NWI4ZGQ5MDQ3MTNj
MTM3NzRhMWQzY2YxYjhlYWMuLmI5MGU4OGZkOWExYmYzM2NhZjU3NmVjOTJmN2UzOGYzODAzM2Y2
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlTZXNzaW9uU2VnbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheVNlc3Npb25TZWdtZW50LmNw
cApAQCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIlJlcGxheWluZ0lucHV0Q3Vyc29yLmgiCiAj
aW5jbHVkZSAiU2VnbWVudGVkSW5wdXRTdG9yYWdlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNTcsMjMgKzU5LDYgQEAgUmVwbGF5U2Vz
c2lvblNlZ21lbnQ6On5SZXBsYXlTZXNzaW9uU2VnbWVudCgpCiB7CiB9CiAKLVBhc3NSZWZQdHI8
Q2FwdHVyaW5nSW5wdXRDdXJzb3I+IFJlcGxheVNlc3Npb25TZWdtZW50OjpjcmVhdGVDYXB0dXJp
bmdDdXJzb3IoUGFnZSYpCi17Ci0gICAgQVNTRVJUKG1fY2FuQ2FwdHVyZSk7Ci0gICAgbV9jYW5D
YXB0dXJlID0gZmFsc2U7Ci0gICAgcmV0dXJuIENhcHR1cmluZ0lucHV0Q3Vyc29yOjpjcmVhdGUo
Km1fc3RvcmFnZSk7Ci19Ci0KLVBhc3NSZWZQdHI8UmVwbGF5aW5nSW5wdXRDdXJzb3I+IFJlcGxh
eVNlc3Npb25TZWdtZW50OjpjcmVhdGVSZXBsYXlpbmdDdXJzb3IoUGFnZSYgcGFnZSwgRXZlbnRM
b29wSW5wdXREaXNwYXRjaGVyQ2xpZW50KiBjbGllbnQpCi17Ci0gICAgcmV0dXJuIFJlcGxheWlu
Z0lucHV0Q3Vyc29yOjpjcmVhdGUoKm1fc3RvcmFnZSwgcGFnZSwgY2xpZW50KTsKLX0KLQotUGFz
c1JlZlB0cjxGdW5jdG9ySW5wdXRDdXJzb3I+IFJlcGxheVNlc3Npb25TZWdtZW50OjpjcmVhdGVG
dW5jdG9yQ3Vyc29yKCkKLXsKLSAgICByZXR1cm4gRnVuY3RvcklucHV0Q3Vyc29yOjpjcmVhdGUo
Km1fc3RvcmFnZSk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVO
QUJMRShXRUJfUkVQTEFZKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxh
eVNlc3Npb25TZWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5U2Vzc2lvblNl
Z21lbnQuaAppbmRleCA1ZGU2MGExYmRlY2VhYjg5NTgyYmZmNmM0M2RmOWM0OTVhYzE0ZWIwLi41
ZDQ1MDQxODdkOGNjOWZhOTU3ZjQ2ZDk1Yzk1ZjNkZDczY2Y0YzUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5U2Vzc2lvblNlZ21lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZXBsYXkvUmVwbGF5U2Vzc2lvblNlZ21lbnQuaApAQCAtMzAsOCArMzAsOSBAQAogCiAj
aWYgRU5BQkxFKFdFQl9SRVBMQVkpCiAKLSNpbmNsdWRlIDxyZXBsYXkvTm9uZGV0ZXJtaW5pc3Rp
Y0lucHV0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00MywyMCArNDQsMjUgQEAgY2xhc3MgUmVwbGF5aW5nSW5wdXRDdXJzb3I7CiBjbGFzcyBT
ZWdtZW50ZWRJbnB1dFN0b3JhZ2U7CiAKIGNsYXNzIFJlcGxheVNlc3Npb25TZWdtZW50IDogcHVi
bGljIFJlZkNvdW50ZWQ8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHsKK2ZyaWVuZCBjbGFzcyBDYXB0
dXJpbmdJbnB1dEN1cnNvcjsKK2ZyaWVuZCBjbGFzcyBGdW5jdG9ySW5wdXRDdXJzb3I7Citmcmll
bmQgY2xhc3MgUmVwbGF5aW5nSW5wdXRDdXJzb3I7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IGNyZWF0ZSgpOwogICAgIH5SZXBsYXlTZXNzaW9u
U2VnbWVudCgpOwogCiAgICAgdW5zaWduZWQgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQogICAgIGRvdWJsZSB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3Rp
bWVzdGFtcDsgfQorcHJvdGVjdGVkOgorICAgIFNlZ21lbnRlZElucHV0U3RvcmFnZSYgc3RvcmFn
ZSgpIHsgcmV0dXJuICptX3N0b3JhZ2U7IH0KKyAgICBWZWN0b3I8ZG91YmxlLCAwPiYgZXZlbnRM
b29wVGltaW5ncygpIHsgcmV0dXJuIG1fZXZlbnRMb29wVGltaW5nczsgfQogCi0gICAgUGFzc1Jl
ZlB0cjxDYXB0dXJpbmdJbnB1dEN1cnNvcj4gY3JlYXRlQ2FwdHVyaW5nQ3Vyc29yKFBhZ2UmKTsK
LSAgICBQYXNzUmVmUHRyPFJlcGxheWluZ0lucHV0Q3Vyc29yPiBjcmVhdGVSZXBsYXlpbmdDdXJz
b3IoUGFnZSYsIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlckNsaWVudCopOwotICAgIFBhc3NSZWZQ
dHI8RnVuY3RvcklucHV0Q3Vyc29yPiBjcmVhdGVGdW5jdG9yQ3Vyc29yKCk7CiBwcml2YXRlOgog
ICAgIFJlcGxheVNlc3Npb25TZWdtZW50KCk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8U2VnbWVu
dGVkSW5wdXRTdG9yYWdlPiBtX3N0b3JhZ2U7CisgICAgVmVjdG9yPGRvdWJsZSwgMD4gbV9ldmVu
dExvb3BUaW1pbmdzOworCiAgICAgdW5zaWduZWQgbV9pZGVudGlmaWVyOwogICAgIGJvb2wgbV9j
YW5DYXB0dXJlOwogICAgIGRvdWJsZSBtX3RpbWVzdGFtcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvUmVwbGF5aW5nSW5wdXRDdXJzb3IuY3BwCmluZGV4IGE0ZjJkYjMxN2I1M2EwZDhmMWU1
YzllMTY2M2JlMDc2ODUxM2E2YWIuLjFiMThjMDI2OTQyMDM0NWQxZWI0M2M2ZmVjNjhiNWFkMzM0
MDU3MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlpbmdJbnB1dEN1
cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29y
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2lmIEVOQUJMRShXRUJfUkVQTEFZKQogCiAjaW5jbHVk
ZSAiRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyLmgiCisjaW5jbHVkZSAiUmVwbGF5U2Vzc2lvblNl
Z21lbnQuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRJbnB1dFN0b3JhZ2UuaCIKICNpbmNsdWRlICJT
ZXJpYWxpemF0aW9uTWV0aG9kcy5oIgogI2luY2x1ZGUgIldlYlJlcGxheUlucHV0cy5oIgpAQCAt
MzgsOCArMzksOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlcGxheWluZ0lucHV0Q3Vy
c29yOjpSZXBsYXlpbmdJbnB1dEN1cnNvcihTZWdtZW50ZWRJbnB1dFN0b3JhZ2UmIHN0b3JhZ2Us
IFBhZ2UmIHBhZ2UsIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlckNsaWVudCogY2xpZW50KQotICAg
IDogbV9zdG9yYWdlKHN0b3JhZ2UpCitSZXBsYXlpbmdJbnB1dEN1cnNvcjo6UmVwbGF5aW5nSW5w
dXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4gc2VnbWVudCwgUGFnZSYg
cGFnZSwgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX3Nl
Z21lbnQoc2VnbWVudCkKICAgICAsIG1fZGlzcGF0Y2hlcihzdGQ6Om1ha2VfdW5pcXVlPEV2ZW50
TG9vcElucHV0RGlzcGF0Y2hlcj4ocGFnZSwgKnRoaXMsIGNsaWVudCkpCiB7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KElucHV0UXVldWU6OkNvdW50KTsg
aSsrKQpAQCAtNTAsOSArNTEsOSBAQCBSZXBsYXlpbmdJbnB1dEN1cnNvcjo6flJlcGxheWluZ0lu
cHV0Q3Vyc29yKCkKIHsKIH0KIAotUGFzc1JlZlB0cjxSZXBsYXlpbmdJbnB1dEN1cnNvcj4gUmVw
bGF5aW5nSW5wdXRDdXJzb3I6OmNyZWF0ZShTZWdtZW50ZWRJbnB1dFN0b3JhZ2UmIHN0b3JhZ2Us
IFBhZ2UmIHBhZ2UsIEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlckNsaWVudCogY2xpZW50KQorUGFz
c1JlZlB0cjxSZXBsYXlpbmdJbnB1dEN1cnNvcj4gUmVwbGF5aW5nSW5wdXRDdXJzb3I6OmNyZWF0
ZShQYXNzUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiBzZWdtZW50LCBQYWdlJiBwYWdlLCBF
dmVudExvb3BJbnB1dERpc3BhdGNoZXJDbGllbnQqIGNsaWVudCkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYobmV3IFJlcGxheWluZ0lucHV0Q3Vyc29yKHN0b3JhZ2UsIHBhZ2UsIGNsaWVudCkpOwor
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVwbGF5aW5nSW5wdXRDdXJzb3Ioc2VnbWVudCwgcGFn
ZSwgY2xpZW50KSk7CiB9CiAKIHZvaWQgUmVwbGF5aW5nSW5wdXRDdXJzb3I6OnN0b3JlSW5wdXQo
c3RkOjp1bmlxdWVfcHRyPE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2U+KQpAQCAtNzUsMTMgKzc2
LDI2IEBAIE5vbmRldGVybWluaXN0aWNJbnB1dEJhc2UqIFJlcGxheWluZ0lucHV0Q3Vyc29yOjps
b2FkSW5wdXQoSW5wdXRRdWV1ZSBxdWV1ZSwgY29uCiAKIE5vbmRldGVybWluaXN0aWNJbnB1dEJh
c2UqIFJlcGxheWluZ0lucHV0Q3Vyc29yOjp1bmNoZWNrZWRMb2FkSW5wdXQoSW5wdXRRdWV1ZSBx
dWV1ZSkKIHsKLSAgICBpZiAobV9wb3NpdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihxdWV1ZSld
ID49IG1fc3RvcmFnZS5xdWV1ZVNpemUocXVldWUpKSB7CisgICAgaWYgKG1fcG9zaXRpb25zW3N0
YXRpY19jYXN0PHNpemVfdD4ocXVldWUpXSA+PSBtX3NlZ21lbnQtPnN0b3JhZ2UoKS5xdWV1ZVNp
emUocXVldWUpKSB7CiAgICAgICAgIFN0cmluZyBxdWV1ZVN0cmluZyA9IEVuY29kaW5nVHJhaXRz
PElucHV0UXVldWU+OjplbmNvZGVWYWx1ZShxdWV1ZSkuY29udmVydFRvPFN0cmluZz4oKTsKICAg
ICAgICAgTE9HX0VSUk9SKCIlLTMwcyBFUlJPUiBObyBtb3JlIGlucHV0cyByZW1haW4gZm9yIGRl
dGVybWluaXNtIHF1ZXVlICVzLCBidXQgb25lIHdhcyByZXF1ZXN0ZWQuIiwgIltSZXBsYXlpbmdJ
bnB1dEN1cnNvcl0iLCBxdWV1ZVN0cmluZy5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIAotICAgIHJldHVybiBtX3N0b3JhZ2UubG9hZChxdWV1ZSwgbV9w
b3NpdGlvbnNbc3RhdGljX2Nhc3Q8c2l6ZV90PihxdWV1ZSldKyspOworICAgIHJldHVybiBtX3Nl
Z21lbnQtPnN0b3JhZ2UoKS5sb2FkKHF1ZXVlLCBtX3Bvc2l0aW9uc1tzdGF0aWNfY2FzdDxzaXpl
X3Q+KHF1ZXVlKV0rKyk7Cit9CisKK0V2ZW50TG9vcElucHV0RGF0YSBSZXBsYXlpbmdJbnB1dEN1
cnNvcjo6bG9hZEV2ZW50TG9vcElucHV0KCkKK3sKKyAgICBBU1NFUlQobV9zZWdtZW50KTsKKwor
ICAgIHNpemVfdCBvZmZzZXQgPSBtX3Bvc2l0aW9ucy5hdChzdGF0aWNfY2FzdDxzaXplX3Q+KElu
cHV0UXVldWU6OkV2ZW50TG9vcElucHV0KSk7CisgICAgQVNTRVJUKG9mZnNldCA8IG1fc2VnbWVu
dC0+ZXZlbnRMb29wVGltaW5ncygpLnNpemUoKSk7CisKKyAgICBFdmVudExvb3BJbnB1dERhdGEg
ZGF0YTsKKyAgICBkYXRhLnRpbWVzdGFtcCA9IG1fc2VnbWVudC0+ZXZlbnRMb29wVGltaW5ncygp
LmF0KG9mZnNldCk7CisgICAgZGF0YS5pbnB1dCA9IHN0YXRpY19jYXN0PEV2ZW50TG9vcElucHV0
QmFzZSo+KHVuY2hlY2tlZExvYWRJbnB1dChJbnB1dFF1ZXVlOjpFdmVudExvb3BJbnB1dCkpOwor
ICAgIHJldHVybiBkYXRhOwogfQogCiB9OyAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheWluZ0lucHV0Q3Vyc29yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5nSW5wdXRDdXJzb3IuaAppbmRleCAxNDc1N2JhMzEyZTQ4
OGVkN2Q2NDE2MzcwNWIyMTMyYjUzMmUxNDA1Li45YzcxZjQxNTI3ZGM3MmUxNzk2MmM2NzJlYzA1
OTU4MTllYWVmZWNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5n
SW5wdXRDdXJzb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5aW5nSW5wdXRD
dXJzb3IuaApAQCAtMzYsMTUgKzM2LDIxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgRXZlbnRMb29wSW5wdXRCYXNlOwogY2xhc3MgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyOwog
Y2xhc3MgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyQ2xpZW50OwogY2xhc3MgUGFnZTsKLWNsYXNz
IFNlZ21lbnRlZElucHV0U3RvcmFnZTsKK2NsYXNzIFJlcGxheVNlc3Npb25TZWdtZW50OworCitz
dHJ1Y3QgRXZlbnRMb29wSW5wdXREYXRhIHsKKyAgICBFdmVudExvb3BJbnB1dEJhc2UqIGlucHV0
OworICAgIGRvdWJsZSB0aW1lc3RhbXA7Cit9OwogCiBjbGFzcyBSZXBsYXlpbmdJbnB1dEN1cnNv
ciBmaW5hbCA6IHB1YmxpYyBJbnB1dEN1cnNvciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UmVwbGF5aW5nSW5wdXRDdXJzb3IpOwogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJl
cGxheWluZ0lucHV0Q3Vyc29yPiBjcmVhdGUoU2VnbWVudGVkSW5wdXRTdG9yYWdlJiwgUGFnZSYs
IEV2ZW50TG9vcElucHV0RGlzcGF0Y2hlckNsaWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFJlcGxheWluZ0lucHV0Q3Vyc29yPiBjcmVhdGUoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2Vn
bWVudD4sIFBhZ2UmLCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXJDbGllbnQqKTsKICAgICB2aXJ0
dWFsIH5SZXBsYXlpbmdJbnB1dEN1cnNvcigpOwogCiAgICAgdmlydHVhbCBib29sIGlzQ2FwdHVy
aW5nKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTUyLDE0ICs1OCwxNiBA
QCBwdWJsaWM6CiAKICAgICBFdmVudExvb3BJbnB1dERpc3BhdGNoZXImIGRpc3BhdGNoZXIoKSBj
b25zdCB7IHJldHVybiAqbV9kaXNwYXRjaGVyOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc3RvcmVJ
bnB1dChzdGQ6OnVuaXF1ZV9wdHI8Tm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZT4pIG92ZXJyaWRl
OwotICAgIHZpcnR1YWwgTm9uZGV0ZXJtaW5pc3RpY0lucHV0QmFzZSogdW5jaGVja2VkTG9hZElu
cHV0KElucHV0UXVldWUpIG92ZXJyaWRlOworICAgIEV2ZW50TG9vcElucHV0RGF0YSBsb2FkRXZl
bnRMb29wSW5wdXQoKTsKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIE5vbmRldGVybWluaXN0aWNJ
bnB1dEJhc2UqIGxvYWRJbnB1dChJbnB1dFF1ZXVlLCBjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUp
IG92ZXJyaWRlOwogcHJpdmF0ZToKLSAgICBSZXBsYXlpbmdJbnB1dEN1cnNvcihTZWdtZW50ZWRJ
bnB1dFN0b3JhZ2UmLCBQYWdlJiwgRXZlbnRMb29wSW5wdXREaXNwYXRjaGVyQ2xpZW50Kik7Cisg
ICAgUmVwbGF5aW5nSW5wdXRDdXJzb3IoUGFzc1JlZlB0cjxSZXBsYXlTZXNzaW9uU2VnbWVudD4s
IFBhZ2UmLCBFdmVudExvb3BJbnB1dERpc3BhdGNoZXJDbGllbnQqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBzdG9yZUlucHV0KHN0ZDo6dW5pcXVlX3B0cjxOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNl
Pikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBOb25kZXRlcm1pbmlzdGljSW5wdXRCYXNlKiB1bmNo
ZWNrZWRMb2FkSW5wdXQoSW5wdXRRdWV1ZSkgb3ZlcnJpZGU7CiAKLSAgICBTZWdtZW50ZWRJbnB1
dFN0b3JhZ2UmIG1fc3RvcmFnZTsKKyAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IG1f
c2VnbWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXZlbnRMb29wSW5wdXREaXNwYXRjaGVyPiBt
X2Rpc3BhdGNoZXI7CiAgICAgVmVjdG9yPHNpemVfdD4gbV9wb3NpdGlvbnM7CiB9Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>