<?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>166974</bug_id>
          
          <creation_ts>2017-01-12 09:27:52 -0800</creation_ts>
          <short_desc>[MediaStream, Mac] Add mock audio source</short_desc>
          <delta_ts>2017-01-13 13:28:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dino</cc>
    
    <cc>jer.noble</cc>
    
    <cc>thiago.lacerda</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1266170</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-12 09:27:52 -0800</bug_when>
    <thetext>Add mock auto source for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266204</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-01-12 10:44:33 -0800</bug_when>
    <thetext>&lt;rdar://problem/29993915&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266216</commentid>
    <comment_count>2</comment_count>
      <attachid>298699</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-12 11:25:12 -0800</bug_when>
    <thetext>Created attachment 298699
Proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266361</commentid>
    <comment_count>3</comment_count>
      <attachid>298730</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-12 16:14:45 -0800</bug_when>
    <thetext>Created attachment 298730
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266367</commentid>
    <comment_count>4</comment_count>
      <attachid>298732</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-12 16:34:15 -0800</bug_when>
    <thetext>Created attachment 298732
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266403</commentid>
    <comment_count>5</comment_count>
      <attachid>298746</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2017-01-12 18:46:56 -0800</bug_when>
    <thetext>Created attachment 298746
Updated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266569</commentid>
    <comment_count>6</comment_count>
      <attachid>298746</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-13 13:28:36 -0800</bug_when>
    <thetext>Comment on attachment 298746
Updated patch.

Clearing flags on attachment: 298746

Committed r210742: &lt;http://trac.webkit.org/changeset/210742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1266570</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-01-13 13:28:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298699</attachid>
            <date>2017-01-12 11:25:12 -0800</date>
            <delta_ts>2017-01-12 16:14:45 -0800</delta_ts>
            <desc>Proposed patch.</desc>
            <filename>mock_audio_source_patch_8.txt</filename>
            <type>text/plain</type>
            <size>48310</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDY2MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAxLTEyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSwg
TWFjXSBBZGQgbW9jayBhdWRpbyBzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Njk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgbW9jayBhdWRpbyBzb3VyY2UgZm9yIHRl
c3RpbmcgbWVkaWEgc3RyZWFtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgd2Vi
YXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbC4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVBdWRpb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlcjo6fk9ic2VydmVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphZGRPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVtb3Zl
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpl
bWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByb3ZpZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnN0b3BQcm9kdWNpbmdEYXRhKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjplbGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGljayk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpyZW5kZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6fk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKTogRGVsZXRlZC4KKwogMjAx
Ny0wMS0xMiAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxhd2FAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtpT1NdW1dLMV0gRml4IGluaXRpYWxpemF0aW9uIG9mIENBRGlzcGxheUxpbms6OnBy
ZWZlcnJlZEZyYW1lc1BlclNlY29uZApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEwNjMxKQorKysgU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDYsNiArMTQ2LDcgQEAKIAkJMDczQkUzNDExN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2
aWdhdG9yVXNlck1lZGlhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzNC
RTM0RTE3RDE4MEIyMDAyQkQ0MzEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJB
QjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDU2Vzc2lvbkRlc2NyaXB0aW9uRGVzY3JpcHRvci5jcHAg
Ki87IH07CiAJCTA3M0JFMzRGMTdEMTgxODMwMDJCRDQzMSAvKiBSVENJY2VDYW5kaWRhdGVEZXNj
cmlwdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDA3MjIxQkE2MTdDRjBBRDQwMDg0OEU1MSAvKiBSVENJY2VDYW5kaWRhdGVEZXNjcmlwdG9yLmNw
cCAqLzsgfTsKKwkJMDc0NEVDRUQxRTBDNEUzMDAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMDc0NEVDRUMxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tICovOyB9OwogCQkwNzRFODJCQTE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFu
Z2VzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3
NEU4MkI4MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuY3BwICovOyB9Owog
CQkwNzRFODJCQjE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFODJCOTE4QTY5RjBF
MDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc1Mzg2MDIxNDQ4OUU5ODAwQjc4NDUyIC8qIENh
Y2hlZFRleHRUcmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzUzODYwMDE0NDg5RTk4MDBCNzg0NTIgLyogQ2FjaGVkVGV4dFRyYWNrLmNwcCAq
LzsgfTsKQEAgLTE1NSw2ICsxNTYsNyBAQAogCQkwNzY5NzA4NjE0NjNBRDg3MDBGNTAyQ0YgLyog
VGV4dFRyYWNrTGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwNzY5NzA4NDE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5jcHAgKi87
IH07CiAJCTA3Njk3MDg3MTQ2M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzY5NzA4NTE0NjNBRDg3
MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oICovOyB9OwogCQkwNzZGMEQwRTEyQjgxOTI3MDBD
MjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzZGMEQwQTEyQjgxOTI3MDBDMjZBQTQg
LyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmggKi87IH07CisJCTA3NzA3Q0IwMUUy
MDVFRTMwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3MDdDQUYxRTIwNUVDNDAwMDA1QkY3
IC8qIEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmggKi87IH07CiAJCTA3NzY2NEZDMTgzRTZCNUMw
MDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzY2NEZBMTgzRTZCNUMwMDEzM0I5
MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcCAqLzsgfTsKIAkJMDc3NjY0RkQx
ODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzY2NEZCMTgzRTZCNUMw
MDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi87IH07CiAJCTA3NzlC
RjBEMTg0NTMxNjgwMDBCNkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3OUJGMEExODQ1
MzE2ODAwMEI2QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgKi87IH07CkBA
IC03MTYzLDYgKzcxNjUsOCBAQAogCQkwNzM5NEVDOTFCQUIyQ0Q3MDBCRTk5Q0QgLyogTWVkaWFE
ZXZpY2VzUmVxdWVzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYURl
dmljZXNSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNFMTdE
MTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hdmlnYXRvclVzZXJNZWRpYS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3M0JFMzNGMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmln
YXRvclVzZXJNZWRpYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU05hdmln
YXRvclVzZXJNZWRpYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzQ0RUNFQjFF
MEM0QUU1MDAwRDA5NDQgLyogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0NEVDRUMxRTBDNEFFNTAwMEQwOTQ0IC8qIE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTA3NEU4MkI4MThBNjlGMEUwMDdFRjU0QyAvKiBQbGF0Zm9ybVRpbWVS
YW5nZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1U
aW1lUmFuZ2VzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc0RTgyQjkxOEE2
OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVRpbWVSYW5nZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWNoZWRUZXh0VHJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzE3Myw2ICs3MTc3LDggQEAKIAkJMDc2
OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGV4dFRyYWNrTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzZGMEQwOTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZG
b3VuZGF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5k
YXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFQbGF5ZXJQcml2
YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3NzA3Q0FG
MUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwNzcwN0NCMTFFMjA2NDlDMDAwMDVCRjcgLyogQXVkaW9D
YXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1F1
aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNRdWlja1RpbWVQbHVnaW5S
ZXBsYWNlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzc5QkYwQTE4NDUz
MTY4MDAwQjZBRTcgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTIzMyw2ICsxNTIzOSwxMCBAQAog
CQkwNzI5QjE0RDE3Q0ZDQ0EwMDA0RjFENjAgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwNzcwN0NCMTFFMjA2NDlDMDAwMDVCRjcgLyogQXVk
aW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmggKi8sCisJCQkJMDc3MDdDQUYxRTIwNUVDNDAw
MDA1QkY3IC8qIEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmggKi8sCisJCQkJMDc0NEVDRUIxRTBD
NEFFNTAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmggKi8sCisJCQkJMDc0
NEVDRUMxRTBDNEFFNTAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tICov
LAogCQkJCTA3MDM2M0Q4MTgxQTFDREMwMEMwNzRBNSAvKiBBVkF1ZGlvQ2FwdHVyZVNvdXJjZS5o
ICovLAogCQkJCTA3MDM2M0Q5MTgxQTFDREMwMEMwNzRBNSAvKiBBVkF1ZGlvQ2FwdHVyZVNvdXJj
ZS5tbSAqLywKIAkJCQkwNzAzNjNEQTE4MUExQ0RDMDBDMDc0QTUgLyogQVZDYXB0dXJlRGV2aWNl
TWFuYWdlci5oICovLApAQCAtMjU5NTIsNiArMjU5NjIsNyBAQAogCQkJCTUxODVGQ0FEMUJCNEM0
RTgwMDEyODk4RiAvKiBJREJUcmFuc2FjdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE5OEY3
QUQxQkJERDNFQjAwRTJDQzVGIC8qIElEQlRyYW5zYWN0aW9uSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODM4RUY1MzgxREMxNDlFMjAwOEYwQzM5IC8qIElEQlRyYW5zYWN0aW9uTW9kZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMDc3MDdDQjAxRTIwNUVFMzAwMDA1QkY3IC8qIEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTYxMDNBRjFDQURCQTc3MDAxNkI0
QzcgLyogSURCVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxODVGQ0IwMUJCNEM0RTgwMDEy
ODk4RiAvKiBJREJWZXJzaW9uQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0QTgx
NEUwMUM3MzM4RUIwMEJGODVBQyAvKiBJZENoYW5nZUludmFsaWRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMDM3Niw2ICszMDM4Nyw3IEBACiAJCQkJQjJGQTNEQzgwQUI3NUE2RjAwMEU1QUM0
IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQjJGQTNEQ0EwQUI3NUE2RjAwMEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0
aWNTbW9vdGhBYnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQ0MwQUI3NUE2RjAwMEU1
QUM0IC8qIEpTU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWwuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMDc0NEVDRUQxRTBDNEUzMDAwMEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlv
U291cmNlTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJDOTZEOEQwQjNBRjJCNzAwNUU4MEVD
IC8qIEpTU1ZHUGF0aFNlZ0N1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkZBM0RDRTBB
Qjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGluZXRvQWJzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIyRkEzREQwMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdMaW5ldG9Ib3Jp
em9udGFsQWJzLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJl
YW1BVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQkocmV2aXNpb24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iagogICAgIGlmICh0aW1lbGluZU9mZnNldCA9PSBNZWRpYVRp
bWU6OmludmFsaWRUaW1lKCkpIHsKICAgICAgICAgdGltZWxpbmVPZmZzZXQgPSBjYWxjdWxhdGVU
aW1lbGluZU9mZnNldChzYW1wbGUsIHJlbmRlcmVyTGF0ZW5jeSk7CiAgICAgICAgIGF1ZGlvVHJh
Y2stPnNldFRpbWVsaW5lT2Zmc2V0KHRpbWVsaW5lT2Zmc2V0KTsKLSAgICAgICAgTE9HKE1lZGlh
Q2FwdHVyZVNhbXBsZXMsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVu
cXVldWVBdWRpb1NhbXBsZTogdGltZWxpbmUgb2Zmc2V0IGZvciB0cmFjayAlcyBzZXQgdG8gKCVs
bGQvJWQpIiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0aW1lbGluZU9mZnNldC50aW1lVmFs
dWUoKSwgdGltZWxpbmVPZmZzZXQudGltZVNjYWxlKCkpOworICAgICAgICBMT0coTWVkaWFDYXB0
dXJlU2FtcGxlcywgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZUF1ZGlvU2FtcGxlOiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVzIHNldCB0byAlcyIsIHRy
YWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdG9TdHJpbmcodGltZWxpbmVPZmZzZXQpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIH0KIAogICAgIHVwZGF0ZVNhbXBsZVRpbWVzKHNhbXBsZSwgdGltZWxpbmVP
ZmZzZXQsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRp
b1NhbXBsZSIpOwpAQCAtMzUzLDcgKzM1Myw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmoKICAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKSB7CiAgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVP
ZmZzZXQoc2FtcGxlLCByZW5kZXJlckxhdGVuY3kpOwogICAgICAgICB2aWRlb1RyYWNrLT5zZXRU
aW1lbGluZU9mZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVT
YW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlVmlk
ZW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVmIiwgdHJhY2su
aWQoKS51dGY4KCkuZGF0YSgpLCB0aW1lbGluZU9mZnNldC50b0RvdWJsZSgpKTsKKyAgICAgICAg
TE9HKE1lZGlhQ2FwdHVyZVNhbXBsZXMsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFW
Rk9iakM6OmVucXVldWVWaWRlb1NhbXBsZTogdGltZWxpbmUgb2Zmc2V0IGZvciB0cmFjayAlcyBz
ZXQgdG8gJXMiLCB0cmFjay5pZCgpLnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWVsaW5lT2Zm
c2V0KS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICB1cGRhdGVTYW1wbGVUaW1lcyhzYW1w
bGUsIHRpbWVsaW5lT2Zmc2V0LCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpD
OjplbnF1ZXVlVmlkZW9TYW1wbGUiKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21l
ZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5o
CShyZXZpc2lvbiAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCiAKICNp
bmNsdWRlICJBVk1lZGlhQ2FwdHVyZVNvdXJjZS5oIgorI2luY2x1ZGUgIkF1ZGlvQ2FwdHVyZVNv
dXJjZVByb3ZpZGVyT2JqQy5oIgogI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAKIHR5cGVkZWYgc3Ry
dWN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b247CkBAIC0zOCwyNiArMzksMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzsKIAotY2xhc3MgQVZBdWRpb0NhcHR1cmVTb3VyY2Ug
OiBwdWJsaWMgQVZNZWRpYUNhcHR1cmVTb3VyY2UgeworY2xhc3MgQVZBdWRpb0NhcHR1cmVTb3Vy
Y2UgOiBwdWJsaWMgQVZNZWRpYUNhcHR1cmVTb3VyY2UsIHB1YmxpYyBBdWRpb0NhcHR1cmVTb3Vy
Y2VQcm92aWRlck9iakMgewogcHVibGljOgogCi0gICAgY2xhc3MgT2JzZXJ2ZXIgewotICAgIHB1
YmxpYzoKLSAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIHByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICopID0gMDsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIHVucHJlcGFyZSgpID0gMDsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHByb2Nlc3MoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwgQ01TYW1wbGVCdWZmZXJSZWYpID0gMDsK
LSAgICB9OwotCiAgICAgc3RhdGljIFJlZlB0cjxBVk1lZGlhQ2FwdHVyZVNvdXJjZT4gY3JlYXRl
KEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMqLCBTdHJpbmcmKTsKIAotICAgIHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXIqKTsKLSAg
ICB2b2lkIHJlbW92ZU9ic2VydmVyKE9ic2VydmVyKik7Ci0KIHByaXZhdGU6CiAgICAgQVZBdWRp
b0NhcHR1cmVTb3VyY2UoQVZDYXB0dXJlRGV2aWNlKiwgY29uc3QgQXRvbWljU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB+QVZBdWRpb0NhcHR1cmVTb3VyY2UoKTsKICAgICAKKyAgICAvLyBBdWRpb0Nh
cHR1cmVTb3VyY2VQcm92aWRlck9iakMKKyAgICB2b2lkIGFkZE9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihBdWRpb1NvdXJj
ZU9ic2VydmVyT2JqQyYpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoKSBmaW5hbDsKKwogICAgIHZv
aWQgaW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVh
bHRpbWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CiAKQEAgLTcy
LDcgKzY3LDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24+IG1faW5wdXREZXNjcmlwdGlvbjsKLSAgICBWZWN0b3I8
T2JzZXJ2ZXIqPiBtX29ic2VydmVyczsKKyAgICBWZWN0b3I8QXVkaW9Tb3VyY2VPYnNlcnZlck9i
akMqPiBtX29ic2VydmVyczsKICAgICBMb2NrIG1fbG9jazsKIH07CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZB
dWRpb0NhcHR1cmVTb3VyY2UubW0JKHJldmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2FwdHVyZVNvdXJjZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkgJiYg
VVNFKEFWRk9VTkRBVElPTikKIAorI2ltcG9ydCAiQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCIK
ICNpbXBvcnQgIkxvZ2dpbmcuaCIKICNpbXBvcnQgIk1lZGlhQ29uc3RyYWludHMuaCIKICNpbXBv
cnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgpAQCAtMTE1LDIwICsxMTYsMjMgQEAgdm9pZCBBVkF1
ZGlvQ2FwdHVyZVNvdXJjZTo6dXBkYXRlU2V0dGluZwogICAgIHNldHRpbmdzLnNldERldmljZUlk
KGlkKCkpOwogfQogCi12b2lkIEFWQXVkaW9DYXB0dXJlU291cmNlOjphZGRPYnNlcnZlcihBVkF1
ZGlvQ2FwdHVyZVNvdXJjZTo6T2JzZXJ2ZXIqIG9ic2VydmVyKQordm9pZCBBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMmIG9ic2VydmVyKQog
ewogICAgIExvY2tIb2xkZXIgbG9jayhtX2xvY2spOwotICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZChv
YnNlcnZlcik7CisgICAgbV9vYnNlcnZlcnMuYXBwZW5kKCZvYnNlcnZlcik7CiAgICAgaWYgKG1f
aW5wdXREZXNjcmlwdGlvbi0+bVNhbXBsZVJhdGUpCi0gICAgICAgIG9ic2VydmVyLT5wcmVwYXJl
KG1faW5wdXREZXNjcmlwdGlvbi5nZXQoKSk7CisgICAgICAgIG9ic2VydmVyLnByZXBhcmUobV9p
bnB1dERlc2NyaXB0aW9uLmdldCgpKTsKIH0KIAotdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6
cmVtb3ZlT2JzZXJ2ZXIoQVZBdWRpb0NhcHR1cmVTb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikK
K3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNlT2Jz
ZXJ2ZXJPYmpDJiBvYnNlcnZlcikKIHsKICAgICBMb2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKLSAg
ICBzaXplX3QgcG9zID0gbV9vYnNlcnZlcnMuZmluZChvYnNlcnZlcik7Ci0gICAgaWYgKHBvcyAh
PSBub3RGb3VuZCkKLSAgICAgICAgbV9vYnNlcnZlcnMucmVtb3ZlKHBvcyk7CisgICAgbV9vYnNl
cnZlcnMucmVtb3ZlRmlyc3QoJm9ic2VydmVyKTsKK30KKwordm9pZCBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZTo6c3RhcnQoKQoreworICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwogfQogCiB2b2lkIEFW
QXVkaW9DYXB0dXJlU291cmNlOjpzZXR1cENhcHR1cmVTZXNzaW9uKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21h
Yy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICBkaXN0cmlidXRpb24u
CisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEVyaWNzc29uIG5vciB0aGUgbmFtZXMgb2YgaXRz
IGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKworI2luY2x1ZGUgIkF1ZGlvQ2FwdHVyZVNvdXJjZVBy
b3ZpZGVyT2JqQy5oIgorI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCisjaW5jbHVkZSAiTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2UuaCIKKyNpbmNsdWRlIDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMu
aD4KKworT0JKQ19DTEFTUyBBVkF1ZGlvUENNQnVmZmVyOwordHlwZWRlZiBzdHJ1Y3QgQXVkaW9C
dWZmZXJMaXN0IEF1ZGlvQnVmZmVyTGlzdDsKK3R5cGVkZWYgc3RydWN0IE9wYXF1ZUNNQ2xvY2sq
IENNQ2xvY2tSZWY7Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0
aW9uKiBDTUZvcm1hdERlc2NyaXB0aW9uUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOworCitjbGFzcyBNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYyBmaW5hbCA6IHB1YmxpYyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSwgcHVi
bGljIEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQyB7CitwdWJsaWM6CisKKyAgICAvLyBB
dWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMKKyAgICB2b2lkIGFkZE9ic2VydmVyKEF1ZGlv
U291cmNlT2JzZXJ2ZXJPYmpDJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQyYpIGZpbmFsOworICAgIHZvaWQgc3RhcnQoKSBmaW5hbDsKKwor
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U7CisgICAg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMoY29uc3QgU3RyaW5nJik7CisKKyAgICBib29sIGFw
cGx5U2FtcGxlUmF0ZShpbnQpIGZpbmFsOworICAgIGJvb2wgYXBwbHlTYW1wbGVTaXplKGludCkg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIFJldGFpblB0cjxDTVNhbXBsZUJ1ZmZlclJl
Zj4gQ01TYW1wbGVCdWZmZXJGcm9tUGl4ZWxCdWZmZXIoQ1ZQaXhlbEJ1ZmZlclJlZik7CisgICAg
UmV0YWluUHRyPENWUGl4ZWxCdWZmZXJSZWY+IHBpeGVsQnVmZmVyRnJvbUNHSW1hZ2UoQ0dJbWFn
ZVJlZikgY29uc3Q7CisKKyAgICB2b2lkIGVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90KTsKKyAg
ICB2b2lkIHJlbmRlcihkb3VibGUpIGZpbmFsOworICAgIHZvaWQgcmVjb25maWd1cmUoKTsKKwor
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXIqIGF1ZGlvU291cmNlUHJvdmlkZXIoKSBmaW5hbDsKKwor
ICAgIHNpemVfdCBtX2F1ZGlvQnVmZmVyTGlzdEJ1ZmZlclNpemUgeyAwIH07CisgICAgc3RkOjp1
bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4gbV9hdWRpb0J1ZmZlckxpc3Q7CisKKyAgICB1aW50
MzJfdCBtX21heGltaXVtRnJhbWVDb3VudDsKKyAgICB1aW50MzJfdCBtX3NhbXBsZVJhdGUgeyA0
NDEwMCB9OworICAgIGRvdWJsZSBtX2J5dGVzUGVyRnJhbWUgeyBzaXplb2YoRmxvYXQzMikgfTsK
KworICAgIFJldGFpblB0cjxDTUZvcm1hdERlc2NyaXB0aW9uUmVmPiBtX2Zvcm1hdERlc2NyaXB0
aW9uOworICAgIEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBtX3N0cmVhbUZvcm1hdDsKKyAg
ICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IG1fYXVkaW9Tb3VyY2VQcm92
aWRlcjsKKyAgICBWZWN0b3I8QXVkaW9Tb3VyY2VPYnNlcnZlck9iakMqPiBtX29ic2VydmVyczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9T
VFJFQU0pCisKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0J
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFj
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
MjM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
ICAgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogICAgZGlzdHJpYnV0aW9uLgorICogMy4gTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKKyAqICAgIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwor
ICogICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisg
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIk1vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjLmgiCisKKyNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQorI2ltcG9ydCAiTWVk
aWFDb25zdHJhaW50cy5oIgorI2ltcG9ydCAiTWVkaWFTYW1wbGVBVkZPYmpDLmgiCisjaW1wb3J0
ICJOb3RJbXBsZW1lbnRlZC5oIgorI2ltcG9ydCAiUmVhbHRpbWVNZWRpYVNvdXJjZVNldHRpbmdz
LmgiCisjaW1wb3J0ICJXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oIgorI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWQXVkaW9CdWZmZXIuaD4KKyNpbXBvcnQgPEF1ZGlvVG9vbGJveC9BdWRp
b0NvbnZlcnRlci5oPgorI2ltcG9ydCA8Q29yZUF1ZGlvL0NvcmVBdWRpb1R5cGVzLmg+CisKKyNp
bXBvcnQgIkNvcmVNZWRpYVNvZnRMaW5rLmgiCisKK1NPRlRfTElOS19GUkFNRVdPUksoQXVkaW9U
b29sYm94KQorCitTT0ZUX0xJTksoQXVkaW9Ub29sYm94LCBBdWRpb0NvbnZlcnRlck5ldywgT1NT
dGF0dXMsIChjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluU291cmNlRm9ybWF0
LCBjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24qIGluRGVzdGluYXRpb25Gb3JtYXQs
IEF1ZGlvQ29udmVydGVyUmVmKiBvdXRBdWRpb0NvbnZlcnRlciksIChpblNvdXJjZUZvcm1hdCwg
aW5EZXN0aW5hdGlvbkZvcm1hdCwgb3V0QXVkaW9Db252ZXJ0ZXIpKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK1JlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE1lZGlhQ29uc3RyYWlu
dHMqIGNvbnN0cmFpbnRzKQoreworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjKG5hbWUpKTsKKyAgICBpZiAoY29uc3RyYWludHMgJiYgc291
cmNlLT5hcHBseUNvbnN0cmFpbnRzKCpjb25zdHJhaW50cykpCisgICAgICAgIHNvdXJjZSA9IG51
bGxwdHI7CisKKyAgICByZXR1cm4gc291cmNlOworfQorCitNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZU1hYzo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMoY29uc3QgU3RyaW5nJiBuYW1lKQorICAg
IDogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UobmFtZSkKK3sKK30KKworUmVmUHRyPE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6Y3JlYXRlTXV0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKKyAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0cnVlOwor
ICAgIHJldHVybiBzb3VyY2U7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OmFkZE9ic2VydmVyKEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNlcnZlcikKK3sKKyAgICBt
X29ic2VydmVycy5hcHBlbmQoJm9ic2VydmVyKTsKKyAgICBpZiAobV9zdHJlYW1Gb3JtYXQubVNh
bXBsZVJhdGUpCisgICAgICAgIG9ic2VydmVyLnByZXBhcmUoJm1fc3RyZWFtRm9ybWF0KTsKK30K
Kwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVtb3ZlT2JzZXJ2ZXIoQXVkaW9T
b3VyY2VPYnNlcnZlck9iakMmIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZUZp
cnN0KCZvYnNlcnZlcik7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnN0
YXJ0KCkKK3sKKyAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKK30KKworCit2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjplbWl0U2FtcGxlQnVmZmVycyh1aW50MzJfdCBmcmFtZUNvdW50
KQoreworICAgIEFTU0VSVChtX2Zvcm1hdERlc2NyaXB0aW9uKTsKKworICAgIENNVGltZSBzdGFy
dFRpbWUgPSBDTVRpbWVNYWtlKGVsYXBzZWRUaW1lKCkgKiBtX3NhbXBsZVJhdGUsIG1fc2FtcGxl
UmF0ZSk7CisgICAgQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlQnVmZmVyOworICAgIE9TU3RhdHVz
IHJlc3VsdCA9IENNQXVkaW9TYW1wbGVCdWZmZXJDcmVhdGVXaXRoUGFja2V0RGVzY3JpcHRpb25z
KG51bGxwdHIsIG51bGxwdHIsIHRydWUsIG51bGxwdHIsIG51bGxwdHIsIG1fZm9ybWF0RGVzY3Jp
cHRpb24uZ2V0KCksIGZyYW1lQ291bnQsIHN0YXJ0VGltZSwgbnVsbHB0ciwgJnNhbXBsZUJ1ZmZl
cik7CisgICAgQVNTRVJUKHNhbXBsZUJ1ZmZlcik7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisg
ICAgaWYgKCFzYW1wbGVCdWZmZXIpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYnVmZmVy
ID0gYWRvcHRDRihzYW1wbGVCdWZmZXIpOworICAgIHJlc3VsdCA9IENNU2FtcGxlQnVmZmVyU2V0
RGF0YUJ1ZmZlckZyb21BdWRpb0J1ZmZlckxpc3Qoc2FtcGxlQnVmZmVyLCBrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCBrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSk7
CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAgcmVzdWx0ID0gQ01TYW1wbGVCdWZmZXJTZXRE
YXRhUmVhZHkoc2FtcGxlQnVmZmVyKTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICBtZWRp
YURhdGFVcGRhdGVkKE1lZGlhU2FtcGxlQVZGT2JqQzo6Y3JlYXRlKHNhbXBsZUJ1ZmZlcikpOwor
CisgICAgZm9yIChhdXRvJiBvYnNlcnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZl
ci0+cHJvY2VzcyhtX2Zvcm1hdERlc2NyaXB0aW9uLmdldCgpLCBzYW1wbGVCdWZmZXIpOworfQor
Cit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZWNvbmZpZ3VyZSgpCit7CisgICAg
bV9tYXhpbWl1bUZyYW1lQ291bnQgPSBXVEY6OnJvdW5kVXBUb1Bvd2VyT2ZUd28ocmVuZGVySW50
ZXJ2YWwoKSAvIDEwMDAuICogbV9zYW1wbGVSYXRlICogMik7CisgICAgQVNTRVJUKG1fbWF4aW1p
dW1GcmFtZUNvdW50KTsKKworICAgIC8vIEF1ZGlvQnVmZmVyTGlzdCBpcyBhIHZhcmlhYmxlLWxl
bmd0aCBzdHJ1Y3QsIHNvIGNyZWF0ZSBvbiB0aGUgaGVhcCB3aXRoIGEgZ2VuZXJpYyBuZXcoKSBv
cGVyYXRvcgorICAgIC8vIHdpdGggYSBjdXN0b20gc2l6ZSwgYW5kIGluaXRpYWxpemUgdGhlIHN0
cnVjdCBtYW51YWxseS4KKyAgICB1aW50MzJfdCBidWZmZXJEYXRhU2l6ZSA9IG1fYnl0ZXNQZXJG
cmFtZSAqIG1fbWF4aW1pdW1GcmFtZUNvdW50OworICAgIHVpbnQzMl90IGJhc2VTaXplID0gb2Zm
c2V0b2YoQXVkaW9CdWZmZXJMaXN0LCBtQnVmZmVycykgKyBzaXplb2YoQXVkaW9CdWZmZXIpOwor
ICAgIHVpbnQ2NF90IGJ1ZmZlckxpc3RTaXplID0gYmFzZVNpemUgKyBidWZmZXJEYXRhU2l6ZTsK
KyAgICBBU1NFUlQoYnVmZmVyTGlzdFNpemUgPD0gU0laRV9NQVgpOworICAgIGlmIChidWZmZXJM
aXN0U2l6ZSA+IFNJWkVfTUFYKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2F1ZGlvQnVmZmVy
TGlzdEJ1ZmZlclNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ1ZmZlckxpc3RTaXplKTsKKyAg
ICBtX2F1ZGlvQnVmZmVyTGlzdCA9IHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+KHN0
YXRpY19jYXN0PEF1ZGlvQnVmZmVyTGlzdCo+KDo6b3BlcmF0b3IgbmV3IChtX2F1ZGlvQnVmZmVy
TGlzdEJ1ZmZlclNpemUpKSk7CisgICAgbWVtc2V0KG1fYXVkaW9CdWZmZXJMaXN0LmdldCgpLCAw
LCBidWZmZXJMaXN0U2l6ZSk7CisKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+bU51bWJlckJ1ZmZl
cnMgPSAxOworICAgIGF1dG8mIGJ1ZmZlciA9IG1fYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVyc1sw
XTsKKyAgICBidWZmZXIubU51bWJlckNoYW5uZWxzID0gMTsKKyAgICBidWZmZXIubURhdGFCeXRl
U2l6ZSA9IGJ1ZmZlckRhdGFTaXplOworICAgIGJ1ZmZlci5tRGF0YSA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KG1fYXVkaW9CdWZmZXJMaXN0LmdldCgpKSArIGJhc2VTaXplOworCisgICAg
Y29uc3QgaW50IGJ5dGVzUGVyRmxvYXQgPSBzaXplb2YoRmxvYXQzMik7CisgICAgY29uc3QgaW50
IGJpdHNQZXJCeXRlID0gODsKKyAgICBtX3N0cmVhbUZvcm1hdCA9IHsgfTsKKyAgICBtX3N0cmVh
bUZvcm1hdC5tU2FtcGxlUmF0ZSA9IG1fc2FtcGxlUmF0ZTsKKyAgICBtX3N0cmVhbUZvcm1hdC5t
Rm9ybWF0SUQgPSBrQXVkaW9Gb3JtYXRMaW5lYXJQQ007CisgICAgbV9zdHJlYW1Gb3JtYXQubUZv
cm1hdEZsYWdzID0ga0F1ZGlvRm9ybWF0RmxhZ3NOYXRpdmVGbG9hdFBhY2tlZCB8IGtBdWRpb0Zv
cm1hdEZsYWdJc05vbkludGVybGVhdmVkOworICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlclBh
Y2tldCA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgbV9zdHJlYW1Gb3JtYXQubUZyYW1lc1BlclBhY2tl
dCA9IDE7CisgICAgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyRnJhbWUgPSBieXRlc1BlckZsb2F0
OworICAgIG1fc3RyZWFtRm9ybWF0Lm1DaGFubmVsc1BlckZyYW1lID0gMTsKKyAgICBtX3N0cmVh
bUZvcm1hdC5tQml0c1BlckNoYW5uZWwgPSBiaXRzUGVyQnl0ZSAqIGJ5dGVzUGVyRmxvYXQ7CisK
KyAgICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdERlc2NyaXB0aW9uOworICAgIENNQXVk
aW9Gb3JtYXREZXNjcmlwdGlvbkNyZWF0ZShOVUxMLCAmbV9zdHJlYW1Gb3JtYXQsIDAsIE5VTEws
IDAsIE5VTEwsIE5VTEwsICZmb3JtYXREZXNjcmlwdGlvbik7CisgICAgbV9mb3JtYXREZXNjcmlw
dGlvbiA9IGFkb3B0Q0YoZm9ybWF0RGVzY3JpcHRpb24pOworCisgICAgZm9yIChhdXRvJiBvYnNl
cnZlciA6IG1fb2JzZXJ2ZXJzKQorICAgICAgICBvYnNlcnZlci0+cHJlcGFyZSgmbV9zdHJlYW1G
b3JtYXQpOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW5kZXIoZG91
YmxlIGRlbHRhKQoreworICAgIHN0YXRpYyBkb3VibGUgdGhldGE7CisgICAgc3RhdGljIGNvbnN0
IGRvdWJsZSBmcmVxdWVuY2llc1tdID0geyAxNTAwLiwgNTAwLiB9OworCisgICAgaWYgKCFtX2F1
ZGlvQnVmZmVyTGlzdCkKKyAgICAgICAgcmVjb25maWd1cmUoKTsKKworICAgIHVpbnQzMl90IHRv
dGFsRnJhbWVDb3VudCA9IGRlbHRhICogbV9zYW1wbGVSYXRlOworICAgIHVpbnQzMl90IGZyYW1l
Q291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsK
KyAgICBkb3VibGUgZWxhcHNlZCA9IGVsYXBzZWRUaW1lKCk7CisgICAgd2hpbGUgKGZyYW1lQ291
bnQpIHsKKyAgICAgICAgZmxvYXQgKmJ1ZmZlciA9IHN0YXRpY19jYXN0PGZsb2F0ICo+KG1fYXVk
aW9CdWZmZXJMaXN0LT5tQnVmZmVyc1swXS5tRGF0YSk7CisgICAgICAgIGZvciAodWludDMyX3Qg
ZnJhbWUgPSAwOyBmcmFtZSA8IGZyYW1lQ291bnQ7ICsrZnJhbWUpIHsKKyAgICAgICAgICAgIGlu
dCBwaGFzZSA9IGZtb2QoZWxhcHNlZCwgMikgKiAxNTsKKyAgICAgICAgICAgIGRvdWJsZSBpbmNy
ZW1lbnQgPSAwOworICAgICAgICAgICAgYm9vbCBzaWxlbnQgPSB0cnVlOworCisgICAgICAgICAg
ICBzd2l0Y2ggKHBoYXNlKSB7CisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICBjYXNl
IDE0OiB7CisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gZm1vZChlbGFwc2VkLCAxKSAqIDI7
CisgICAgICAgICAgICAgICAgaW5jcmVtZW50ID0gMi4wICogTV9QSSAqIGZyZXF1ZW5jaWVzW2lu
ZGV4XSAvIG1fc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgICAgICBzaWxlbnQgPSBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
IChzaWxlbnQpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJbZnJhbWVdID0gMDsKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyW2Zy
YW1lXSA9IHNpbih0aGV0YSkgKiAwLjI1OworICAgICAgICAgICAgdGhldGEgKz0gaW5jcmVtZW50
OworICAgICAgICAgICAgaWYgKHRoZXRhID4gMi4wICogTV9QSSkKKyAgICAgICAgICAgICAgICB0
aGV0YSAtPSAyLjAgKiBNX1BJOworICAgICAgICAgICAgZWxhcHNlZCArPSAxIC8gbV9zYW1wbGVS
YXRlOworICAgICAgICB9CisKKyAgICAgICAgbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBd
Lm1EYXRhQnl0ZVNpemUgPSBmcmFtZUNvdW50ICogc2l6ZW9mKGZsb2F0KTsKKyAgICAgICAgZW1p
dFNhbXBsZUJ1ZmZlcnMoZnJhbWVDb3VudCk7CisgICAgICAgIHRvdGFsRnJhbWVDb3VudCAtPSBm
cmFtZUNvdW50OworICAgICAgICBmcmFtZUNvdW50ID0gc3RkOjptaW4odG90YWxGcmFtZUNvdW50
LCBtX21heGltaXVtRnJhbWVDb3VudCk7CisgICAgfQorfQorCitib29sIE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlTWFjOjphcHBseVNhbXBsZVJhdGUoaW50IHNhbXBsZVJhdGUpCit7CisgICAgaWYg
KHNhbXBsZVJhdGUgPCA0NDEwMCB8fCBzYW1wbGVSYXRlID4gNDgwMDApCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIGlmIChzdGF0aWNfY2FzdDx1aW50MzJfdD4oc2FtcGxlUmF0ZSkgPT0g
bV9zYW1wbGVSYXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIG1fc2FtcGxlUmF0ZSA9
IHNhbXBsZVJhdGU7CisgICAgbV9mb3JtYXREZXNjcmlwdGlvbiA9IG51bGxwdHI7CisgICAgbV9h
dWRpb0J1ZmZlckxpc3QgPSBudWxscHRyOworICAgIG1fYXVkaW9CdWZmZXJMaXN0QnVmZmVyU2l6
ZSA9IDA7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQXVkaW9Tb3VyY2VQcm92aWRlciogTW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmF1ZGlvU291cmNlUHJvdmlkZXIoKQoreworICAgIGlm
ICghbV9hdWRpb1NvdXJjZVByb3ZpZGVyKQorICAgICAgICBtX2F1ZGlvU291cmNlUHJvdmlkZXIg
PSBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6Y3JlYXRlKCp0aGlzKTsKKworICAgIHJl
dHVybiBtX2F1ZGlvU291cmNlUHJvdmlkZXIuZ2V0KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9i
akMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaAkocmV2aXNpb24gMjEwNjMxKQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDkgKzI4LDkgQEAKIAogI2lmIEVO
QUJMRShXRUJfQVVESU8pICYmIEVOQUJMRShNRURJQV9TVFJFQU0pCiAKLSNpbmNsdWRlICJBVkF1
ZGlvQ2FwdHVyZVNvdXJjZS5oIgorI2luY2x1ZGUgIkF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVy
T2JqQy5oIgorI2luY2x1ZGUgIkF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmgiCiAjaW5jbHVkZSAi
QXVkaW9Tb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKQEAgLTQyLDI4ICs0
MiwyNCBAQCB0eXBlZGVmIHN0cnVjdCBvcGFxdWVDTVNhbXBsZUJ1ZmZlciAqQ01TCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQVZBdWRpb0NhcHR1cmVTb3VyY2U7CiBjbGFzcyBDQVJp
bmdCdWZmZXI7CiAKLWNsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDIDogcHVibGlj
IFJlZkNvdW50ZWQ8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+LCBwdWJsaWMgQXVkaW9T
b3VyY2VQcm92aWRlciwgcHVibGljIEFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlciB7Citj
bGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyA6IHB1YmxpYyBSZWZDb3VudGVkPFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiwgcHVibGljIEF1ZGlvU291cmNlUHJvdmlkZXIs
IHB1YmxpYyBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQyB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJl
ZjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gY3JlYXRlKEFWQXVkaW9DYXB0dXJlU291
cmNlJik7CisgICAgc3RhdGljIFJlZjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gY3Jl
YXRlKEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQyYpOwogICAgIHZpcnR1YWwgfldlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKCk7CiAKIHByaXZhdGU6Ci0gICAgV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMoQVZBdWRpb0NhcHR1cmVTb3VyY2UmKTsKLQotICAgIHZvaWQgc3Rh
cnRQcm9kdWNpbmdEYXRhKCk7Ci0gICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpOworICAgIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2Jq
QyYpOwogCiAgICAgLy8gQXVkaW9Tb3VyY2VQcm92aWRlcgogICAgIHZvaWQgcHJvdmlkZUlucHV0
KEF1ZGlvQnVzKiwgc2l6ZV90KSBvdmVycmlkZTsKICAgICB2b2lkIHNldENsaWVudChBdWRpb1Nv
dXJjZVByb3ZpZGVyQ2xpZW50Kikgb3ZlcnJpZGU7CiAKLSAgICAvLyBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZTo6T2JzZXJ2ZXIKLSAgICB2b2lkIHByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rl
c2NyaXB0aW9uICopIG92ZXJyaWRlOwotICAgIHZvaWQgdW5wcmVwYXJlKCkgb3ZlcnJpZGU7Ci0g
ICAgdm9pZCBwcm9jZXNzKENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVm
KSBvdmVycmlkZTsKKyAgICAvLyBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQworICAgIHZvaWQgcHJl
cGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gKikgZmluYWw7CisgICAgdm9p
ZCB1bnByZXBhcmUoKSBmaW5hbDsKKyAgICB2b2lkIHByb2Nlc3MoQ01Gb3JtYXREZXNjcmlwdGlv
blJlZiwgQ01TYW1wbGVCdWZmZXJSZWYpIGZpbmFsOwogCiAgICAgc2l6ZV90IG1fbGlzdEJ1ZmZl
clNpemUgeyAwIH07CiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4gbV9saXN0
OwpAQCAtNzYsNyArNzIsNyBAQCBwcml2YXRlOgogICAgIHVpbnQ2NF90IG1fd3JpdGVDb3VudCB7
IDAgfTsKICAgICB1aW50NjRfdCBtX3JlYWRDb3VudCB7IDAgfTsKICAgICBBdWRpb1NvdXJjZVBy
b3ZpZGVyQ2xpZW50KiBtX2NsaWVudCB7IG51bGxwdHIgfTsKLSAgICBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZSogbV9jYXB0dXJlU291cmNlIHsgbnVsbHB0ciB9OworICAgIEF1ZGlvQ2FwdHVyZVNvdXJj
ZVByb3ZpZGVyT2JqQyogbV9jYXB0dXJlU291cmNlIHsgbnVsbHB0ciB9OwogICAgIGJvb2wgbV9j
b25uZWN0ZWQgeyBmYWxzZSB9OwogfTsKICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0JKHJldmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTMsMTIgKzUzLDEyIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogc3RhdGljIGNvbnN0IGRvdWJsZSBrUmluZ0J1ZmZlckR1cmF0aW9uID0gMTsKIAot
UmVmPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6Y3JlYXRlKEFWQXVkaW9DYXB0dXJlU291cmNlJiBzb3VyY2UpCitSZWY8V2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpj
cmVhdGUoQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDJiBzb3VyY2UpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoc291cmNlKSk7
CiB9CiAKLVdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQyhBVkF1ZGlvQ2FwdHVyZVNvdXJjZSYgc291cmNlKQorV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKEF1ZGlvQ2FwdHVy
ZVNvdXJjZVByb3ZpZGVyT2JqQyYgc291cmNlKQogICAgIDogbV9jYXB0dXJlU291cmNlKCZzb3Vy
Y2UpCiB7CiB9CkBAIC03MSwxNyArNzEsNyBAQCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6fldlYkF1ZGlvCiAgICAgICAgIG1fY29udmVydGVyID0gbnVsbHB0cjsKICAgICB9CiAgICAg
aWYgKG1fY29ubmVjdGVkKQotICAgICAgICBtX2NhcHR1cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVy
KHRoaXMpOwotfQotCi12b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzdGFydFBy
b2R1Y2luZ0RhdGEoKQotewotICAgIG1fY2FwdHVyZVNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRh
KCk7Ci19Ci0KLXZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnN0b3BQcm9kdWNp
bmdEYXRhKCkKLXsKLSAgICBtX2NhcHR1cmVTb3VyY2UtPnN0b3BQcm9kdWNpbmdEYXRhKCk7Cisg
ICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogfQogCiB2b2lk
IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm92aWRlSW5wdXQoQXVkaW9CdXMqIGJ1
cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKQEAgLTEwNyw2ICs5NywxMCBAQCB2b2lkIFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpwcm92CiAgICAgfQogCiAgICAgQVNTRVJUKGJ1cy0+
bnVtYmVyT2ZDaGFubmVscygpID09IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkpOworICAg
IGlmIChidXMtPm51bWJlck9mQ2hhbm5lbHMoKSAhPSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3Vu
dCgpKSB7CisgICAgICAgIGJ1cy0+emVybygpOworICAgICAgICByZXR1cm47CisgICAgfQogCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGlzdC0+bU51bWJlckJ1ZmZlcnM7ICsraSkg
ewogICAgICAgICBBdWRpb0NoYW5uZWwmIGNoYW5uZWwgPSAqYnVzLT5jaGFubmVsKGkpOwpAQCAt
MTMyLDEwICsxMjYsMTAgQEAgdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6c2V0
QwogCiAgICAgaWYgKG1fY2xpZW50ICYmICFtX2Nvbm5lY3RlZCkgewogICAgICAgICBtX2Nvbm5l
Y3RlZCA9IHRydWU7Ci0gICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+YWRkT2JzZXJ2ZXIodGhpcyk7
Ci0gICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisgICAgICAg
IG1fY2FwdHVyZVNvdXJjZS0+YWRkT2JzZXJ2ZXIoKnRoaXMpOworICAgICAgICBtX2NhcHR1cmVT
b3VyY2UtPnN0YXJ0KCk7CiAgICAgfSBlbHNlIGlmICghbV9jbGllbnQgJiYgbV9jb25uZWN0ZWQp
IHsKLSAgICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcih0aGlzKTsKKyAgICAg
ICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiAgICAgICAgIG1fY29u
bmVjdGVkID0gZmFsc2U7CiAgICAgfQogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHJldmlzaW9u
IDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAorI2lmICFQTEFURk9STShNQUMpICYmICFQTEFURk9STShJT1MpCiBSZWZQ
dHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVh
dGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiBjb25zdHJhaW50
cykKIHsKICAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZShuYW1lKSk7CkBAIC01NSw5ICs1NiwxMSBAQCBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U+IE1vY2tSZWFsCiAgICAgc291cmNlLT5tX211dGVkID0gdHJ1ZTsKICAgICByZXR1cm4g
c291cmNlOwogfQotCisjZW5kaWYKKyAgICAKIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgOiBNb2NrUmVhbHRp
bWVNZWRpYVNvdXJjZShjcmVhdGVDYW5vbmljYWxVVUlEU3RyaW5nKCksIFJlYWx0aW1lTWVkaWFT
b3VyY2U6OkF1ZGlvLCBuYW1lKQorICAgICwgbV90aW1lcihSdW5Mb29wOjpjdXJyZW50KCksIHRo
aXMsICZNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGljaykKIHsKIH0KIApAQCAtODIsNiArODUs
NDEgQEAgdm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6aW5pdGlhbGl6ZQogICAgIHN1cHBv
cnRlZENvbnN0cmFpbnRzLnNldFN1cHBvcnRzU2FtcGxlUmF0ZSh0cnVlKTsKIH0KIAordm9pZCBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCkKK3sKKyAgICBNb2Nr
UmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RhcnRQcm9kdWNpbmdEYXRhKCk7CisKKyAgICBtX3N0YXJ0
VGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIG1fdGltZXIuc3RhcnRS
ZXBlYXRpbmcoc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyhyZW5kZXJJbnRlcnZhbCgpKSk7Cit9
CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCkKK3sK
KyAgICBNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICBt
X3RpbWVyLnN0b3AoKTsKKyAgICBtX2VsYXBzZWRUaW1lICs9IG1vbm90b25pY2FsbHlJbmNyZWFz
aW5nVGltZSgpIC0gbV9zdGFydFRpbWU7CisgICAgbV9zdGFydFRpbWUgPSBOQU47Cit9CisKK2Rv
dWJsZSBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6ZWxhcHNlZFRpbWUoKQoreworICAgIGlmIChz
dGQ6OmlzbmFuKG1fc3RhcnRUaW1lKSkKKyAgICAgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWU7CisK
KyAgICByZXR1cm4gbV9lbGFwc2VkVGltZSArIChtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUo
KSAtIG1fc3RhcnRUaW1lKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGlj
aygpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9sYXN0UmVuZGVyVGltZSkpCisgICAgICAgIG1f
bGFzdFJlbmRlclRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKworICAgIGRv
dWJsZSBub3cgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBkb3VibGUgZGVs
dGEgPSBub3cgLSBtX2xhc3RSZW5kZXJUaW1lOworICAgIG1fbGFzdFJlbmRlclRpbWUgPSBub3c7
CisgICAgcmVuZGVyKGRlbHRhKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgJKHJldmlzaW9uIDIx
MDYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDE1LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCkBAIC0yOCwxNCArMjgsMTQgQEAKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAg
Ki8KIAotI2lmbmRlZiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZV9oCi0jZGVmaW5lIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlX2gKKyNwcmFnbWEgb25jZQogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVB
TSkKIAogI2luY2x1ZGUgIkZvbnRDYXNjYWRlLmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJNb2NrUmVhbHRpbWVNZWRpYVNvdXJjZS5oIgorI2luY2x1ZGUgPHd0Zi9SdW5M
b29wLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDUsMTEgKzQ1LDE5IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBjcmVhdGUoY29u
c3QgU3RyaW5nJiwgY29uc3QgTWVkaWFDb25zdHJhaW50cyopOwogICAgIHN0YXRpYyBSZWZQdHI8
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZU11dGVkKGNvbnN0IFN0cmluZyYgbmFtZSk7
CiAKLSAgICB2aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpIHsgfQorICAgIHZpcnR1
YWwgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkgPSBkZWZhdWx0OwogCiBwcm90ZWN0ZWQ6CiAg
ICAgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoY29uc3QgU3RyaW5nJiBuYW1lID0gQVNDSUlMaXRl
cmFsKCJNb2NrIGF1ZGlvIGRldmljZSIpKTsKIAorICAgIHZvaWQgc3RhcnRQcm9kdWNpbmdEYXRh
KCkgZmluYWw7CisgICAgdm9pZCBzdG9wUHJvZHVjaW5nRGF0YSgpIGZpbmFsOworCisgICAgdmly
dHVhbCB2b2lkIHJlbmRlcihkb3VibGUpIHsgfQorCisgICAgZG91YmxlIGVsYXBzZWRUaW1lKCk7
CisgICAgc3RhdGljIGludCByZW5kZXJJbnRlcnZhbCgpIHsgcmV0dXJuIDIwOyB9CisKIHByaXZh
dGU6CiAKICAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQpAQCAtNjAsMTAgKzY4LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTZXR0aW5n
cyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGluaXRp
YWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOworCisgICAgdm9pZCB0aWNr
KCk7CisKKyAgICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gbV90aW1l
cjsKKyAgICBkb3VibGUgbV9zdGFydFRpbWUgeyBOQU4gfTsKKyAgICBkb3VibGUgbV9sYXN0UmVu
ZGVyVGltZSB7IE5BTiB9OworICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lIHsgMCB9OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
LQotI2VuZGlmIC8vIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlX2gKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDIxMDYzMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEzIEBACisyMDE3LTAxLTEyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSwgTWFjXSBBZGQgbW9jayBhdWRpbyBzb3VyY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njk3NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVk
aW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdl
YmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWw6CisKIDIwMTctMDEtMTIgIEd5
dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFNl
Y29uZCB1cGRhdGUgVGVzdEV4cGVjdGF0aW9uIGZpbGUgZm9yIFVidW50dSAxNi4wNC4KSW5kZXg6
IExheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlv
c291cmNlbm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIxMDYzMSkKKysrIExheW91dFRlc3Rz
L3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMywxNCArMywxNSBAQCBCYXNpYyB0ZXN0cyBmb3IgTWVkaWFTdHJlYW1BdWRp
b1NvdXJjZU5vCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1Mge2F1ZGlvOnRydWV9
IGdlbmVyYXRlZCBzdHJlYW0KLVBBU1Mgcy5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1Q
QVNTIHMuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgMAogUEFTUyBTb3VyY2UgQXVkaW9Ob2RlIGhhcyBubyBpbnB1dHMuCiBQQVNTIFNvdXJjZSBB
dWRpb05vZGUgaGFzIG9uZSBvdXRwdXQuCi1QQVNTIGNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3du
IGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4KLVBBU1MgY29ubmVjdCgpIGV4Y2Vw
dGlvbiB0aHJvd24gZm9yIGlsbGVnYWwgb3V0cHV0IGluZGV4LgotUEFTUyBjb25uZWN0KCkgZXhj
ZXB0aW9uIHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleC4KK1BBU1MgY29ubmVjdCgpIGV4
Y2VwdGlvbiB7IlR5cGVFcnJvciIsICJBcmd1bWVudCAxICgnZGVzdGluYXRpb24nKSB0byBBdWRp
b05vZGUuY29ubmVjdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEF1ZGlvTm9kZSJ9IHRocm93biBm
b3IgaWxsZWdhbCBkZXN0aW5hdGlvbiBBdWRpb05vZGUKK1BBU1MgY29ubmVjdCgpIGV4Y2VwdGlv
biB7IkluZGV4U2l6ZUVycm9yIiwgIlRoZSBpbmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFu
Z2UuIn0gdGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleAorUEFTUyBjb25uZWN0KCkgZXhj
ZXB0aW9uIHsiSW5kZXhTaXplRXJyb3IiLCAiVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dl
ZCByYW5nZS4ifSB0aHJvd24gZm9yIGlsbGVnYWwgaW5wdXQgaW5kZXgKIFBBU1MgbWVkaWFTdHJl
YW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBzdWNjZWVkZWQuCitQQVNTIG9u
YXVkaW9wcm9jZXNzIHdhcyBjYWxsZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1h
dWRpb3NvdXJjZW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9t
ZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCShyZXZpc2lvbiAyMTA2MzEpCisrKyBMYXlv
dXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDk2ICsxLDExNCBAQAogPCFET0NUWVBFIGh0bWw+Ci0KIDxodG1sPgotPGhl
YWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci08L2hl
YWQ+Ci0KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29u
c29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiQmFzaWMgdGVzdHMgZm9yIE1l
ZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIEFQSS4iKTsKLQotdmFyIGNvbnRleHQgPSAwOwotCi1m
dW5jdGlvbiBlcnJvcigpIHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWls
ZWQuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFVzZXJNZWRpYShk
aWN0aW9uYXJ5LCBjYWxsYmFjaykgewotICAgIHRyeSB7Ci0gICAgICAgIG5hdmlnYXRvci53ZWJr
aXRHZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKLSAgICB9IGNhdGNo
IChlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNl
cHRpb24gOicgKyBlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5j
dGlvbiBnb3RTdHJlYW0oc3RyZWFtKSB7Ci0gICAgcyA9IHN0cmVhbTsKLSAgICB0ZXN0UGFzc2Vk
KCd7YXVkaW86dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbScpOwotICAgIHNob3VsZEJlKCdzLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgncy5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCcsICcwJyk7Ci0KLSAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4
dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIEF1ZGlvTm9kZSBmcm9tIHRoZSBzdHJlYW0uCi0gICAg
dmFyIG1lZGlhU3RyZWFtU291cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShz
dHJlYW0pOwotCi0gICAgLy8gQ2hlY2sgbnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cy4KLSAg
ICBpZiAobWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZJbnB1dHMgPT0gMCkKLSAgICAgICAgdGVz
dFBhc3NlZCgiU291cmNlIEF1ZGlvTm9kZSBoYXMgbm8gaW5wdXRzLiIpOwotICAgIGVsc2UKLSAg
ICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgbm90IGhhdmUgaW5wdXRz
LiIpOwotCi0gICAgaWYgKG1lZGlhU3RyZWFtU291cmNlLm51bWJlck9mT3V0cHV0cyA9PSAxKQot
ICAgICAgICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2RlIGhhcyBvbmUgb3V0cHV0LiIpOwot
ICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgaGF2
ZSBvbmUgb3V0cHV0LiIpOwotCi0gICAgLy8gVHJ5IGNhbGxpbmcgY29ubmVjdCgpIG1ldGhvZCB3
aXRoIGlsbGVnYWwgdmFsdWVzLgotCi0gICAgdHJ5IHsKLSAgICAgICAgbWVkaWFTdHJlYW1Tb3Vy
Y2UuY29ubmVjdCgwLCAwLCAwKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiY29ubmVjdCgpIGV4Y2Vw
dGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4i
KTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiY29ubmVjdCgpIGV4Y2Vw
dGlvbiB0aHJvd24gZm9yIGlsbGVnYWwgZGVzdGluYXRpb24gQXVkaW9Ob2RlLiIpOwotICAgIH0K
LQotICAgIHRyeSB7Ci0gICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5k
ZXN0aW5hdGlvbiwgNSwgMCk7Ci0gICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRp
b24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBvdXRwdXQgaW5kZXguIik7Ci0gICAgfSBj
YXRjaChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3du
IGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleC4iKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAg
ICBtZWRpYVN0cmVhbVNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24sIDAsIDUpOwot
ICAgICAgICB0ZXN0RmFpbGVkKCJjb25uZWN0KCkgZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24g
Zm9yIGlsbGVnYWwgaW5wdXQgaW5kZXguIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRl
c3RQYXNzZWQoImNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxlZ2FsIGlucHV0IGlu
ZGV4LiIpOwotICAgIH0KLQotICAgIC8vIFRyeSBjYWxsaW5nIGNvbm5lY3QoKSB3aXRoIHByb3Bl
ciB2YWx1ZXMuCi0gICAgdHJ5IHsKLSAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChj
b250ZXh0LmRlc3RpbmF0aW9uLCAwLCAwKTsKLSAgICAgICAgdGVzdFBhc3NlZCgibWVkaWFTdHJl
YW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBzdWNjZWVkZWQuIik7Ci0gICAg
fSBjYXRjaChlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIm1lZGlhU3RyZWFtU291cmNlLmNvbm5l
Y3QoY29udGV4dC5kZXN0aW5hdGlvbikgZmFpbGVkLiIpOwotICAgIH0KLQotICAgIGZpbmlzaEpT
VGVzdCgpOwotfQotCi1nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBnb3RTdHJlYW0pOwotd2lu
ZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRy
dWU7Ci0KLTwvc2NyaXB0PgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9k
eT4KKyAgICAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgICAgICA8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3Jp
cHRpb24oIkJhc2ljIHRlc3RzIGZvciBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBBUEkuIik7
CisKKyAgICAgICAgICAgIGxldCBjb250ZXh0OworICAgICAgICAgICAgbGV0IHN0cmVhbTsKKyAg
ICAgICAgICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlOworICAgICAgICAgICAgY29uc3QgbnVtYmVy
T2ZPdXRwdXRDaGFubmVscyA9IDI7CisgICAgICAgICAgICBjb25zdCBudW1iZXJPZklucHV0Q2hh
bm5lbHMgPSAyOworICAgICAgICAgICAgY29uc3QgYnVmZmVyU2l6ZSA9IDUxMjsKKworICAgICAg
ICAgICAgZnVuY3Rpb24gcHJvY2Vzc0F1ZGlvRGF0YShldmVudCkgCisgICAgICAgICAgICB7Cisg
ICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRCdWZmZXIubnVtYmVyT2ZDaGFubmVs
cyAhPSBudW1iZXJPZklucHV0Q2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWls
ZWQoYG51bWJlck9mSW5wdXRDaGFubmVscyBkb2Vzbid0IG1hdGNoOiBoYXZlICR7ZXZlbnQuaW5w
dXRCdWZmZXIubnVtYmVyT2ZDaGFubmVsc30sIGV4cGVjdCAke251bWJlck9mSW5wdXRDaGFubmVs
c30hYCk7CisKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQub3V0cHV0QnVmZmVyLm51bWJlck9m
Q2hhbm5lbHMgIT0gbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZChgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyBkb2Vzbid0IG1hdGNoOiBoYXZlICR7
ZXZlbnQub3V0cHV0QnVmZmVyLm51bWJlck9mQ2hhbm5lbHN9LCBleHBlY3QgJHtudW1iZXJPZk91
dHB1dENoYW5uZWxzfSFgKTsKKworICAgICAgICAgICAgICAgIHN0cmVhbS5nZXRBdWRpb1RyYWNr
cygpWzBdLnN0b3AoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJvbmF1ZGlvcHJvY2Vz
cyB3YXMgY2FsbGVkIik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAg
ICAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBm
dW5jdGlvbiBnb3RTdHJlYW0ocykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdHJl
YW0gPSBzOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ3thdWRpbzp0cnVlfSBnZW5lcmF0
ZWQgc3RyZWFtJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CisKKyAgICAgICAgICAgICAgICBjb250ZXh0
ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworCisgICAgICAgICAgICAgICAgLy8gQ3JlYXRl
IGFuIEF1ZGlvTm9kZSBmcm9tIHRoZSBzdHJlYW0uCisgICAgICAgICAgICAgICAgbGV0IG1lZGlh
U3RyZWFtU291cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShzdHJlYW0pOwor
CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgbnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cy4K
KyAgICAgICAgICAgICAgICBpZiAobWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZJbnB1dHMgPT0g
MCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU291cmNlIEF1ZGlvTm9kZSBoYXMg
bm8gaW5wdXRzLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgbm90IGhhdmUgaW5wdXRzLiIpOwor
CisgICAgICAgICAgICAgICAgaWYgKG1lZGlhU3RyZWFtU291cmNlLm51bWJlck9mT3V0cHV0cyA9
PSAxKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2RlIGhh
cyBvbmUgb3V0cHV0LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgaGF2ZSBvbmUgb3V0cHV0LiIp
OworCisgICAgICAgICAgICAgICAgLy8gVHJ5IGNhbGxpbmcgY29ubmVjdCgpIG1ldGhvZCB3aXRo
IGlsbGVnYWwgdmFsdWVzLgorICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAg
ICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoMCwgMCwgMCk7CisgICAgICAgICAgICAgICAg
ICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3Ig
aWxsZWdhbCBkZXN0aW5hdGlvbiBBdWRpb05vZGUuIik7CisgICAgICAgICAgICAgICAgfSBjYXRj
aChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChgY29ubmVjdCgpIGV4Y2Vw
dGlvbiB7IiR7ZXJyLm5hbWV9IiwgIiR7ZXJyLm1lc3NhZ2V9In0gdGhyb3duIGZvciBpbGxlZ2Fs
IGRlc3RpbmF0aW9uIEF1ZGlvTm9kZWApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5l
Y3QoY29udGV4dC5kZXN0aW5hdGlvbiwgNSwgMCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RG
YWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBv
dXRwdXQgaW5kZXguIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChlcnIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdFBhc3NlZChgY29ubmVjdCgpIGV4Y2VwdGlvbiB7IiR7ZXJyLm5hbWV9
IiwgIiR7ZXJyLm1lc3NhZ2V9In0gdGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleGApOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAg
ICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiwgMCwg
NSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24g
c2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleC4iKTsKKyAgICAgICAgICAg
ICAgICB9IGNhdGNoKGVycikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGBjb25u
ZWN0KCkgZXhjZXB0aW9uIHsiJHtlcnIubmFtZX0iLCAiJHtlcnIubWVzc2FnZX0ifSB0aHJvd24g
Zm9yIGlsbGVnYWwgaW5wdXQgaW5kZXhgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAvLyBUcnkgY2FsbGluZyBjb25uZWN0KCkgd2l0aCBsZWdhbCB2YWx1ZXMuCisgICAg
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2Uu
Y29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdFBhc3NlZCgibWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9u
KSBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChlcnIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgdGVzdEZhaWxlZChgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0
LmRlc3RpbmF0aW9uKSBmYWlsZWQgd2l0aCAiJHtlcnIubmFtZX0iOiAiJHtlcnIubWVzc2FnZX0i
YCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGV0IHNjcmlwdFByb2Nl
c3Nvck5vZGUgPSBjb250ZXh0LmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihidWZmZXJTaXplLCBudW1i
ZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgICAgICAgICAg
ICAgIHNjcmlwdFByb2Nlc3Nvck5vZGUub25hdWRpb3Byb2Nlc3MgPSBwcm9jZXNzQXVkaW9EYXRh
OworCisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChzY3JpcHRQcm9j
ZXNzb3JOb2RlKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3Qo
Y29udGV4dC5kZXN0aW5hdGlvbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3
aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRp
YVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMu
Z2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkKKyAgICAgICAgICAgICAgICAudGhlbihzdHJlYW0g
PT4gZ290U3RyZWFtKHN0cmVhbSkpCisgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVy
cikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKCkgZmFpbGVkIHdpdGggIiR7ZXJyLm5hbWV9IjogIiR7ZXJyLm1lc3NhZ2V9ImApOwor
ICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAg
d2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KKyAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298730</attachid>
            <date>2017-01-12 16:14:45 -0800</date>
            <delta_ts>2017-01-12 16:34:15 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>mock_audio_source_patch_10.txt</filename>
            <type>text/plain</type>
            <size>52978</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAxLTEyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSwg
TWFjXSBBZGQgbW9jayBhdWRpbyBzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Njk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgbW9jayBhdWRpbyBzb3VyY2UgZm9yIHRl
c3RpbmcgbWVkaWEgc3RyZWFtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgd2Vi
YXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbC4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVBdWRpb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlcjo6fk9ic2VydmVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphZGRPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVtb3Zl
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpl
bWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByb3ZpZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnN0b3BQcm9kdWNpbmdEYXRhKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjplbGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGljayk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpyZW5kZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6fk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKTogRGVsZXRlZC4KKwogMjAx
Ny0wMS0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjIwOTk3Nyk6IENyYXNoIGluIFVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4
dERhdGFiYXNlVGFzay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2
LDYgKzE0Niw3IEBACiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNEUxN0Qx
ODBCMjAwMkJENDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCQUIxN0NGMEFE
NDAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwICovOyB9Owog
CQkwNzNCRTM0RjE3RDE4MTgzMDAyQkQ0MzEgLyogUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJB
NjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgKi87IH07
CisJCTA3NDRFQ0VEMUUwQzRFMzAwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDRF
Q0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLzsg
fTsKIAkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFODJCODE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLzsgfTsKIAkJMDc0RTgy
QkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRD
IC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CkBA
IC0xNTUsNiArMTU2LDcgQEAKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkw
NzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNG
IC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OworCQkwNzcwN0NCMDFFMjA1RUUzMDAw
MDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQy5oICovOyB9OwogCQkwNzc2NjRGQzE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCTA3NzY2NEZEMTgzRTZCNUMw
MDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovOyB9OwogCQkwNzc5QkYwRDE4NDUz
MTY4MDAwQjZBRTcgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzlCRjBBMTg0NTMxNjgwMDBC
NkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwICovOyB9OwpAQCAtNzE2Myw2
ICs3MTY1LDggQEAKIAkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1Jl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VzUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzNCRTMzRTE3RDE3RTAxMDAy
QkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0NEVDRUIxRTBDNEFFNTAw
MEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtVGltZVJhbmdl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NEU4MkI5MThBNjlGMEUwMDdF
RjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNzMsNiArNzE3Nyw4IEBACiAJCTA3Njk3MDg1MTQ2
M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZG
MEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzcwN0NBRjFFMjA1RUM0
MDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVyZVNv
dXJjZVByb3ZpZGVyT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRp
b0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NzY2
NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3OUJGMEExODQ1MzE2ODAwMEI2
QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMzMsNiArMTUyMzksMTAgQEAKIAkJMDcyOUIx
NEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVy
ZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAorCQkJCTA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAv
KiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAorCQkJCTA3NDRFQ0VCMUUwQzRBRTUwMDBE
MDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oICovLAorCQkJCTA3NDRFQ0VDMUUw
QzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLywKIAkJCQkw
NzAzNjNEODE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJ
CQkwNzAzNjNEOTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8s
CiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKQEAgLTI1OTUyLDYgKzI1OTYyLDcgQEAKIAkJCQk1MTg1RkNBRDFCQjRDNEU4MDAxMjg5
OEYgLyogSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0FEMUJCREQz
RUIwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OEVGNTM4MURDMTQ5RTIwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3NzA3Q0IwMUUyMDVFRTMwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVy
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElE
QlZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RkNCMDFCQjRDNEU4MDAxMjg5OEYgLyog
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEE4MTRFMDFDNzMz
OEVCMDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MzAzNzYsNiArMzAzODcsNyBAQAogCQkJCUIyRkEzREM4MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEz
RENBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
QWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRENDMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3NDRFQ0VEMUUwQzRFMzAwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQ0UwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0xpbmV0b0Ficy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkZBM0REMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFi
cy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJl
dmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmoKICAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKSB7CiAgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVP
ZmZzZXQoc2FtcGxlLCByZW5kZXJlckxhdGVuY3kpOwogICAgICAgICBhdWRpb1RyYWNrLT5zZXRU
aW1lbGluZU9mZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVT
YW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVk
aW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICglbGxkLyVkKSIs
IHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudGltZVZhbHVlKCksIHRp
bWVsaW5lT2Zmc2V0LnRpbWVTY2FsZSgpKTsKKyAgICAgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBs
ZXMsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1Nh
bXBsZTogdGltZWxpbmUgb2Zmc2V0IGZvciB0cmFjayAlcyBzZXQgdG8gJXMiLCB0cmFjay5pZCgp
LnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWVsaW5lT2Zmc2V0KS51dGY4KCkuZGF0YSgpKTsK
ICAgICB9CiAKICAgICB1cGRhdGVTYW1wbGVUaW1lcyhzYW1wbGUsIHRpbWVsaW5lT2Zmc2V0LCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGUi
KTsKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqCiAgICAgaWYgKHRpbWVsaW5lT2Zmc2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUo
KSkgewogICAgICAgICB0aW1lbGluZU9mZnNldCA9IGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KHNh
bXBsZSwgcmVuZGVyZXJMYXRlbmN5KTsKICAgICAgICAgdmlkZW9UcmFjay0+c2V0VGltZWxpbmVP
ZmZzZXQodGltZWxpbmVPZmZzZXQpOwotICAgICAgICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywg
Ik1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxl
OiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVzIHNldCB0byAlZiIsIHRyYWNrLmlkKCkudXRm
OCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudG9Eb3VibGUoKSk7CisgICAgICAgIExPRyhNZWRp
YUNhcHR1cmVTYW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpl
bnF1ZXVlVmlkZW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVz
IiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1lbGluZU9mZnNldCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1l
bGluZU9mZnNldCwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNp
b24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5jbHVkZSAi
QVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJBdWRpb0NhcHR1cmVTb3VyY2VQcm92
aWRlck9iakMuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiB0eXBlZGVmIHN0cnVjdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uOwpAQCAt
MzgsMjYgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM7CiAKLWNsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVibGlj
IEFWTWVkaWFDYXB0dXJlU291cmNlIHsKK2NsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVi
bGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlk
ZXJPYmpDIHsKIHB1YmxpYzoKIAotICAgIGNsYXNzIE9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1bnByZXBhcmUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVmKSA9IDA7Ci0gICAgfTsK
LQogICAgIHN0YXRpYyBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IGNyZWF0ZShBVkNhcHR1
cmVEZXZpY2UqLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwg
U3RyaW5nJik7CiAKLSAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7Ci0gICAgdm9pZCBy
ZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwotCiBwcml2YXRlOgogICAgIEFWQXVkaW9DYXB0dXJl
U291cmNlKEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZpcnR1
YWwgfkFWQXVkaW9DYXB0dXJlU291cmNlKCk7CiAgICAgCisgICAgLy8gQXVkaW9DYXB0dXJlU291
cmNlUHJvdmlkZXJPYmpDCisgICAgdm9pZCBhZGRPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVy
T2JqQyYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMmKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KCkgZmluYWw7CisKICAgICB2b2lkIGluaXRp
YWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCkBAIC03Miw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+
IG1fYXVkaW9Tb3VyY2VQcm92aWRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247Ci0gICAgVmVjdG9yPE9ic2VydmVy
Kj4gbV9vYnNlcnZlcnM7CisgICAgVmVjdG9yPEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDKj4gbV9v
YnNlcnZlcnM7CiAgICAgTG9jayBtX2xvY2s7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0
dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZP
VU5EQVRJT04pCiAKKyNpbXBvcnQgIkF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKQEAgLTExNSwyMCArMTE2LDIzIEBAIHZvaWQgQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsK
IH0KIAotdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQVZBdWRpb0NhcHR1
cmVTb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6
OmFkZE9ic2VydmVyKEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNlcnZlcikKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKLSAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIp
OworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwogICAgIGlmIChtX2lucHV0RGVz
Y3JpcHRpb24tPm1TYW1wbGVSYXRlKQotICAgICAgICBvYnNlcnZlci0+cHJlcGFyZShtX2lucHV0
RGVzY3JpcHRpb24uZ2V0KCkpOworICAgICAgICBvYnNlcnZlci5wcmVwYXJlKG1faW5wdXREZXNj
cmlwdGlvbi5nZXQoKSk7CiB9CiAKLXZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZU9i
c2VydmVyKEFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEFW
QXVkaW9DYXB0dXJlU291cmNlOjpyZW1vdmVPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVyT2Jq
QyYgb2JzZXJ2ZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7Ci0gICAgc2l6ZV90
IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOwotICAgIGlmIChwb3MgIT0gbm90Rm91
bmQpCi0gICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3MpOworICAgIG1fb2JzZXJ2ZXJzLnJl
bW92ZUZpcnN0KCZvYnNlcnZlcik7Cit9CisKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KCkKK3sKKyAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogdm9pZCBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRl
ck9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCit0eXBlZGVmIHN0cnVjdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNj
cmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBs
ZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1NvdXJjZU9i
c2VydmVyT2JqQzsKKworY2xhc3MgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMoKSA9IGRl
ZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Nv
dXJjZU9ic2VydmVyT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1NvdXJjZU9i
c2VydmVyT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKK3R5cGVkZWYgc3RydWN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb247
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1h
dERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU291
cmNlT2JzZXJ2ZXJPYmpDIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1NvdXJjZU9ic2Vy
dmVyT2JqQygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlKGNvbnN0IEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5wcmVw
YXJlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYsIENNU2FtcGxlQnVmZmVyUmVmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJP
YmpDLmgiCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorCitP
QkpDX0NMQVNTIEFWQXVkaW9QQ01CdWZmZXI7Cit0eXBlZGVmIHN0cnVjdCBBdWRpb0J1ZmZlckxp
c3QgQXVkaW9CdWZmZXJMaXN0OwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01DbG9jayogQ01DbG9j
a1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjIGZpbmFsIDogcHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLCBwdWJsaWMgQXVk
aW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKK3B1YmxpYzoKKworICAgIC8vIEF1ZGlvQ2Fw
dHVyZVNvdXJjZVByb3ZpZGVyT2JqQworICAgIHZvaWQgYWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VP
YnNlcnZlck9iakMmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgZmluYWw7CisgICAgdm9pZCBzdGFydCgpIGZpbmFsOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTsKKyAgICBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYyhjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgYXBwbHlTYW1w
bGVSYXRlKGludCkgZmluYWw7CisgICAgYm9vbCBhcHBseVNhbXBsZVNpemUoaW50KSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgUmV0YWluUHRyPENNU2FtcGxlQnVmZmVyUmVmPiBDTVNh
bXBsZUJ1ZmZlckZyb21QaXhlbEJ1ZmZlcihDVlBpeGVsQnVmZmVyUmVmKTsKKyAgICBSZXRhaW5Q
dHI8Q1ZQaXhlbEJ1ZmZlclJlZj4gcGl4ZWxCdWZmZXJGcm9tQ0dJbWFnZShDR0ltYWdlUmVmKSBj
b25zdDsKKworICAgIHZvaWQgZW1pdFNhbXBsZUJ1ZmZlcnModWludDMyX3QpOworICAgIHZvaWQg
cmVuZGVyKGRvdWJsZSkgZmluYWw7CisgICAgdm9pZCByZWNvbmZpZ3VyZSgpOworCisgICAgQXVk
aW9Tb3VyY2VQcm92aWRlciogYXVkaW9Tb3VyY2VQcm92aWRlcigpIGZpbmFsOworCisgICAgc2l6
ZV90IG1fYXVkaW9CdWZmZXJMaXN0QnVmZmVyU2l6ZSB7IDAgfTsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8QXVkaW9CdWZmZXJMaXN0PiBtX2F1ZGlvQnVmZmVyTGlzdDsKKworICAgIHVpbnQzMl90IG1f
bWF4aW1pdW1GcmFtZUNvdW50OworICAgIHVpbnQzMl90IG1fc2FtcGxlUmF0ZSB7IDQ0MTAwIH07
CisgICAgZG91YmxlIG1fYnl0ZXNQZXJGcmFtZSB7IHNpemVvZihGbG9hdDMyKSB9OworCisgICAg
UmV0YWluUHRyPENNRm9ybWF0RGVzY3JpcHRpb25SZWY+IG1fZm9ybWF0RGVzY3JpcHRpb247Cisg
ICAgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uIG1fc3RyZWFtRm9ybWF0OworICAgIFJlZlB0
cjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyOwor
ICAgIFZlY3RvcjxBdWRpb1NvdXJjZU9ic2VydmVyT2JqQyo+IG1fb2JzZXJ2ZXJzOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
KwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvTW9ja1Jl
YWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwyMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiAgICBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
CisgKiAgICBkaXN0cmlidXRpb24uCisgKiAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycworICogICAgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCisgKiAgICBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWMuaCIKKworI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCisjaW1wb3J0ICJNZWRpYUNvbnN0
cmFpbnRzLmgiCisjaW1wb3J0ICJNZWRpYVNhbXBsZUFWRk9iakMuaCIKKyNpbXBvcnQgIk5vdElt
cGxlbWVudGVkLmgiCisjaW1wb3J0ICJSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MuaCIKKyNp
bXBvcnQgIldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgiCisjaW1wb3J0IDxBVkZvdW5k
YXRpb24vQVZBdWRpb0J1ZmZlci5oPgorI2ltcG9ydCA8QXVkaW9Ub29sYm94L0F1ZGlvQ29udmVy
dGVyLmg+CisjaW1wb3J0IDxDb3JlQXVkaW8vQ29yZUF1ZGlvVHlwZXMuaD4KKworI2ltcG9ydCAi
Q29yZU1lZGlhU29mdExpbmsuaCIKKworU09GVF9MSU5LX0ZSQU1FV09SSyhBdWRpb1Rvb2xib3gp
CisKK1NPRlRfTElOSyhBdWRpb1Rvb2xib3gsIEF1ZGlvQ29udmVydGVyTmV3LCBPU1N0YXR1cywg
KGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5Tb3VyY2VGb3JtYXQsIGNvbnN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiogaW5EZXN0aW5hdGlvbkZvcm1hdCwgQXVkaW9D
b252ZXJ0ZXJSZWYqIG91dEF1ZGlvQ29udmVydGVyKSwgKGluU291cmNlRm9ybWF0LCBpbkRlc3Rp
bmF0aW9uRm9ybWF0LCBvdXRBdWRpb0NvbnZlcnRlcikpCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworUmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29u
c3RyYWludHMpCit7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2VNYWMobmFtZSkpOworICAgIGlmIChjb25zdHJhaW50cyAmJiBzb3VyY2UtPmFw
cGx5Q29uc3RyYWludHMoKmNvbnN0cmFpbnRzKSkKKyAgICAgICAgc291cmNlID0gbnVsbHB0cjsK
KworICAgIHJldHVybiBzb3VyY2U7Cit9CisKK01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYyhjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZShuYW1lKQoreworfQorCitSZWZQdHI8TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2U+IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpjcmVhdGVNdXRlZChjb25zdCBTdHJp
bmcmIG5hbWUpCit7CisgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2UobmFtZSkpOworICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CisgICAgcmV0
dXJuIHNvdXJjZTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6YWRkT2Jz
ZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMmIG9ic2VydmVyKQoreworICAgIG1fb2JzZXJ2
ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOworICAgIGlmIChtX3N0cmVhbUZvcm1hdC5tU2FtcGxlUmF0
ZSkKKyAgICAgICAgb2JzZXJ2ZXIucHJlcGFyZSgmbV9zdHJlYW1Gb3JtYXQpOworfQorCit2b2lk
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpyZW1vdmVPYnNlcnZlcihBdWRpb1NvdXJjZU9i
c2VydmVyT2JqQyYgb2JzZXJ2ZXIpCit7CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlRmlyc3QoJm9i
c2VydmVyKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6c3RhcnQoKQor
eworICAgIHN0YXJ0UHJvZHVjaW5nRGF0YSgpOworfQorCisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OmVtaXRTYW1wbGVCdWZmZXJzKHVpbnQzMl90IGZyYW1lQ291bnQpCit7Cisg
ICAgQVNTRVJUKG1fZm9ybWF0RGVzY3JpcHRpb24pOworCisgICAgQ01UaW1lIHN0YXJ0VGltZSA9
IENNVGltZU1ha2UoZWxhcHNlZFRpbWUoKSAqIG1fc2FtcGxlUmF0ZSwgbV9zYW1wbGVSYXRlKTsK
KyAgICBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVCdWZmZXI7CisgICAgT1NTdGF0dXMgcmVzdWx0
ID0gQ01BdWRpb1NhbXBsZUJ1ZmZlckNyZWF0ZVdpdGhQYWNrZXREZXNjcmlwdGlvbnMobnVsbHB0
ciwgbnVsbHB0ciwgdHJ1ZSwgbnVsbHB0ciwgbnVsbHB0ciwgbV9mb3JtYXREZXNjcmlwdGlvbi5n
ZXQoKSwgZnJhbWVDb3VudCwgc3RhcnRUaW1lLCBudWxscHRyLCAmc2FtcGxlQnVmZmVyKTsKKyAg
ICBBU1NFUlQoc2FtcGxlQnVmZmVyKTsKKyAgICBBU1NFUlQoIXJlc3VsdCk7CisKKyAgICBpZiAo
IXNhbXBsZUJ1ZmZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBidWZmZXIgPSBhZG9w
dENGKHNhbXBsZUJ1ZmZlcik7CisgICAgcmVzdWx0ID0gQ01TYW1wbGVCdWZmZXJTZXREYXRhQnVm
ZmVyRnJvbUF1ZGlvQnVmZmVyTGlzdChzYW1wbGVCdWZmZXIsIGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRkFsbG9jYXRvckRlZmF1bHQsIDAsIG1fYXVkaW9CdWZmZXJMaXN0LmdldCgpKTsKKyAgICBB
U1NFUlQoIXJlc3VsdCk7CisKKyAgICByZXN1bHQgPSBDTVNhbXBsZUJ1ZmZlclNldERhdGFSZWFk
eShzYW1wbGVCdWZmZXIpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIG1lZGlhRGF0YVVw
ZGF0ZWQoTWVkaWFTYW1wbGVBVkZPYmpDOjpjcmVhdGUoc2FtcGxlQnVmZmVyKSk7CisKKyAgICBm
b3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT5wcm9j
ZXNzKG1fZm9ybWF0RGVzY3JpcHRpb24uZ2V0KCksIHNhbXBsZUJ1ZmZlcik7Cit9CisKK3ZvaWQg
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlY29uZmlndXJlKCkKK3sKKyAgICBtX21heGlt
aXVtRnJhbWVDb3VudCA9IFdURjo6cm91bmRVcFRvUG93ZXJPZlR3byhyZW5kZXJJbnRlcnZhbCgp
IC8gMTAwMC4gKiBtX3NhbXBsZVJhdGUgKiAyKTsKKyAgICBBU1NFUlQobV9tYXhpbWl1bUZyYW1l
Q291bnQpOworCisgICAgLy8gQXVkaW9CdWZmZXJMaXN0IGlzIGEgdmFyaWFibGUtbGVuZ3RoIHN0
cnVjdCwgc28gY3JlYXRlIG9uIHRoZSBoZWFwIHdpdGggYSBnZW5lcmljIG5ldygpIG9wZXJhdG9y
CisgICAgLy8gd2l0aCBhIGN1c3RvbSBzaXplLCBhbmQgaW5pdGlhbGl6ZSB0aGUgc3RydWN0IG1h
bnVhbGx5LgorICAgIHVpbnQzMl90IGJ1ZmZlckRhdGFTaXplID0gbV9ieXRlc1BlckZyYW1lICog
bV9tYXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDMyX3QgYmFzZVNpemUgPSBvZmZzZXRvZihB
dWRpb0J1ZmZlckxpc3QsIG1CdWZmZXJzKSArIHNpemVvZihBdWRpb0J1ZmZlcik7CisgICAgdWlu
dDY0X3QgYnVmZmVyTGlzdFNpemUgPSBiYXNlU2l6ZSArIGJ1ZmZlckRhdGFTaXplOworICAgIEFT
U0VSVChidWZmZXJMaXN0U2l6ZSA8PSBTSVpFX01BWCk7CisgICAgaWYgKGJ1ZmZlckxpc3RTaXpl
ID4gU0laRV9NQVgpCisgICAgICAgIHJldHVybjsKKworICAgIG1fYXVkaW9CdWZmZXJMaXN0QnVm
ZmVyU2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oYnVmZmVyTGlzdFNpemUpOworICAgIG1fYXVk
aW9CdWZmZXJMaXN0ID0gc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVmZmVyTGlzdD4oc3RhdGljX2Nh
c3Q8QXVkaW9CdWZmZXJMaXN0Kj4oOjpvcGVyYXRvciBuZXcgKG1fYXVkaW9CdWZmZXJMaXN0QnVm
ZmVyU2l6ZSkpKTsKKyAgICBtZW1zZXQobV9hdWRpb0J1ZmZlckxpc3QuZ2V0KCksIDAsIGJ1ZmZl
ckxpc3RTaXplKTsKKworICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5tTnVtYmVyQnVmZmVycyA9IDE7
CisgICAgYXV0byYgYnVmZmVyID0gbV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdOworICAg
IGJ1ZmZlci5tTnVtYmVyQ2hhbm5lbHMgPSAxOworICAgIGJ1ZmZlci5tRGF0YUJ5dGVTaXplID0g
YnVmZmVyRGF0YVNpemU7CisgICAgYnVmZmVyLm1EYXRhID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4obV9hdWRpb0J1ZmZlckxpc3QuZ2V0KCkpICsgYmFzZVNpemU7CisKKyAgICBjb25zdCBp
bnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9hdDMyKTsKKyAgICBjb25zdCBpbnQgYml0c1Bl
ckJ5dGUgPSA4OworICAgIG1fc3RyZWFtRm9ybWF0ID0geyB9OworICAgIG1fc3RyZWFtRm9ybWF0
Lm1TYW1wbGVSYXRlID0gbV9zYW1wbGVSYXRlOworICAgIG1fc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJ
RCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBtX3N0cmVhbUZvcm1hdC5tRm9ybWF0Rmxh
Z3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0UGFja2VkIHwga0F1ZGlvRm9ybWF0Rmxh
Z0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgbV9zdHJlYW1Gb3JtYXQubUJ5dGVzUGVyUGFja2V0ID0g
Ynl0ZXNQZXJGbG9hdDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tRnJhbWVzUGVyUGFja2V0ID0gMTsK
KyAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFtZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAg
bV9zdHJlYW1Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUgPSAxOworICAgIG1fc3RyZWFtRm9ybWF0
Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICogYnl0ZXNQZXJGbG9hdDsKKworICAgIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3JpcHRpb247CisgICAgQ01BdWRpb0Zvcm1h
dERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVhbUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVM
TCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKKyAgICBtX2Zvcm1hdERlc2NyaXB0aW9uID0g
YWRvcHRDRihmb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBmb3IgKGF1dG8mIG9ic2VydmVyIDog
bV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT5wcmVwYXJlKCZtX3N0cmVhbUZvcm1hdCk7
Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbmRlcihkb3VibGUgZGVs
dGEpCit7CisgICAgc3RhdGljIGRvdWJsZSB0aGV0YTsKKyAgICBzdGF0aWMgY29uc3QgZG91Ymxl
IGZyZXF1ZW5jaWVzW10gPSB7IDE1MDAuLCA1MDAuIH07CisKKyAgICBpZiAoIW1fYXVkaW9CdWZm
ZXJMaXN0KQorICAgICAgICByZWNvbmZpZ3VyZSgpOworCisgICAgdWludDMyX3QgdG90YWxGcmFt
ZUNvdW50ID0gZGVsdGEgKiBtX3NhbXBsZVJhdGU7CisgICAgdWludDMyX3QgZnJhbWVDb3VudCA9
IHN0ZDo6bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhpbWl1bUZyYW1lQ291bnQpOworICAgIGRv
dWJsZSBlbGFwc2VkID0gZWxhcHNlZFRpbWUoKTsKKyAgICB3aGlsZSAoZnJhbWVDb3VudCkgewor
ICAgICAgICBmbG9hdCAqYnVmZmVyID0gc3RhdGljX2Nhc3Q8ZmxvYXQgKj4obV9hdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICAgICAgZm9yICh1aW50MzJfdCBmcmFtZSA9
IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgKytmcmFtZSkgeworICAgICAgICAgICAgaW50IHBoYXNl
ID0gZm1vZChlbGFwc2VkLCAyKSAqIDE1OworICAgICAgICAgICAgZG91YmxlIGluY3JlbWVudCA9
IDA7CisgICAgICAgICAgICBib29sIHNpbGVudCA9IHRydWU7CisKKyAgICAgICAgICAgIHN3aXRj
aCAocGhhc2UpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgIGNhc2UgMTQ6IHsK
KyAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBmbW9kKGVsYXBzZWQsIDEpICogMjsKKyAgICAg
ICAgICAgICAgICBpbmNyZW1lbnQgPSAyLjAgKiBNX1BJICogZnJlcXVlbmNpZXNbaW5kZXhdIC8g
bV9zYW1wbGVSYXRlOworICAgICAgICAgICAgICAgIHNpbGVudCA9IGZhbHNlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNpbGVu
dCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcltmcmFtZV0gPSAwOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBidWZmZXJbZnJhbWVdID0g
c2luKHRoZXRhKSAqIDAuMjU7CisgICAgICAgICAgICB0aGV0YSArPSBpbmNyZW1lbnQ7CisgICAg
ICAgICAgICBpZiAodGhldGEgPiAyLjAgKiBNX1BJKQorICAgICAgICAgICAgICAgIHRoZXRhIC09
IDIuMCAqIE1fUEk7CisgICAgICAgICAgICBlbGFwc2VkICs9IDEgLyBtX3NhbXBsZVJhdGU7Cisg
ICAgICAgIH0KKworICAgICAgICBtX2F1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFC
eXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBzaXplb2YoZmxvYXQpOworICAgICAgICBlbWl0U2FtcGxl
QnVmZmVycyhmcmFtZUNvdW50KTsKKyAgICAgICAgdG90YWxGcmFtZUNvdW50IC09IGZyYW1lQ291
bnQ7CisgICAgICAgIGZyYW1lQ291bnQgPSBzdGQ6Om1pbih0b3RhbEZyYW1lQ291bnQsIG1fbWF4
aW1pdW1GcmFtZUNvdW50KTsKKyAgICB9Cit9CisKK2Jvb2wgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWM6OmFwcGx5U2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSkKK3sKKyAgICBpZiAoc2FtcGxl
UmF0ZSA8IDQ0MTAwIHx8IHNhbXBsZVJhdGUgPiA0ODAwMCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90PihzYW1wbGVSYXRlKSA9PSBtX3NhbXBs
ZVJhdGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgbV9zYW1wbGVSYXRlID0gc2FtcGxl
UmF0ZTsKKyAgICBtX2Zvcm1hdERlc2NyaXB0aW9uID0gbnVsbHB0cjsKKyAgICBtX2F1ZGlvQnVm
ZmVyTGlzdCA9IG51bGxwdHI7CisgICAgbV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplID0gMDsK
KworICAgIHJldHVybiB0cnVlOworfQorCitBdWRpb1NvdXJjZVByb3ZpZGVyKiBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYzo6YXVkaW9Tb3VyY2VQcm92aWRlcigpCit7CisgICAgaWYgKCFtX2F1
ZGlvU291cmNlUHJvdmlkZXIpCisgICAgICAgIG1fYXVkaW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUoKnRoaXMpOworCisgICAgcmV0dXJuIG1f
YXVkaW9Tb3VyY2VQcm92aWRlci5nZXQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJB
dWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oCShyZXZpc2lvbiAyMTA2MzEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSArMjgsOSBAQAogCiAjaWYgRU5BQkxFKFdF
Ql9BVURJTykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkKIAotI2luY2x1ZGUgIkFWQXVkaW9DYXB0
dXJlU291cmNlLmgiCisjaW5jbHVkZSAiQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgi
CisjaW5jbHVkZSAiQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCIKICNpbmNsdWRlICJBdWRpb1Nv
dXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8d3RmL0xvY2suaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNDIsMjggKzQyLDI0IEBA
IHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVMKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTsKIGNsYXNzIENBUmluZ0J1ZmZl
cjsKIAotY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMgOiBwdWJsaWMgUmVmQ291
bnRlZDxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4sIHB1YmxpYyBBdWRpb1NvdXJjZVBy
b3ZpZGVyLCBwdWJsaWMgQVZBdWRpb0NhcHR1cmVTb3VyY2U6Ok9ic2VydmVyIHsKK2NsYXNzIFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakM+LCBwdWJsaWMgQXVkaW9Tb3VyY2VQcm92aWRlciwgcHVibGlj
IEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBjcmVhdGUoQVZBdWRpb0NhcHR1cmVTb3VyY2UmKTsK
KyAgICBzdGF0aWMgUmVmPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBjcmVhdGUoQXVk
aW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDJik7CiAgICAgdmlydHVhbCB+V2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakMoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJBdWRpb1NvdXJjZVByb3Zp
ZGVyQVZGT2JqQyhBVkF1ZGlvQ2FwdHVyZVNvdXJjZSYpOwotCi0gICAgdm9pZCBzdGFydFByb2R1
Y2luZ0RhdGEoKTsKLSAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCk7CisgICAgV2ViQXVkaW9T
b3VyY2VQcm92aWRlckFWRk9iakMoQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDJik7CiAK
ICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyCiAgICAgdm9pZCBwcm92aWRlSW5wdXQoQXVkaW9C
dXMqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q2xpZW50KEF1ZGlvU291cmNlUHJv
dmlkZXJDbGllbnQqKSBvdmVycmlkZTsKIAotICAgIC8vIEFWQXVkaW9DYXB0dXJlU291cmNlOjpP
YnNlcnZlcgotICAgIHZvaWQgcHJlcGFyZShjb25zdCBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRp
b24gKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnByZXBhcmUoKSBvdmVycmlkZTsKLSAgICB2b2lk
IHByb2Nlc3MoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwgQ01TYW1wbGVCdWZmZXJSZWYpIG92ZXJy
aWRlOworICAgIC8vIEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDCisgICAgdm9pZCBwcmVwYXJlKGNv
bnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqKSBmaW5hbDsKKyAgICB2b2lkIHVucHJl
cGFyZSgpIGZpbmFsOworICAgIHZvaWQgcHJvY2VzcyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmLCBD
TVNhbXBsZUJ1ZmZlclJlZikgZmluYWw7CiAKICAgICBzaXplX3QgbV9saXN0QnVmZmVyU2l6ZSB7
IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0PiBtX2xpc3Q7CkBAIC03
Niw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0X3QgbV93cml0ZUNvdW50IHsgMCB9Owog
ICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9OwogICAgIEF1ZGlvU291cmNlUHJvdmlkZXJD
bGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwotICAgIEFWQXVkaW9DYXB0dXJlU291cmNlKiBt
X2NhcHR1cmVTb3VyY2UgeyBudWxscHRyIH07CisgICAgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlk
ZXJPYmpDKiBtX2NhcHR1cmVTb3VyY2UgeyBudWxscHRyIH07CiAgICAgYm9vbCBtX2Nvbm5lY3Rl
ZCB7IGZhbHNlIH07CiB9OwogICAgIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVk
aWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC01MywxMiArNTMsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBzdGF0aWMgY29uc3QgZG91YmxlIGtSaW5nQnVmZmVyRHVyYXRpb24gPSAxOwogCi1SZWY8V2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpD
OjpjcmVhdGUoQVZBdWRpb0NhcHR1cmVTb3VyY2UmIHNvdXJjZSkKK1JlZjxXZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQz4gV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZShB
dWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMmIHNvdXJjZSkKIHsKICAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyhzb3VyY2UpKTsKIH0KIAot
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDKEFWQXVkaW9DYXB0dXJlU291cmNlJiBzb3VyY2UpCitXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoQXVkaW9DYXB0dXJlU291cmNl
UHJvdmlkZXJPYmpDJiBzb3VyY2UpCiAgICAgOiBtX2NhcHR1cmVTb3VyY2UoJnNvdXJjZSkKIHsK
IH0KQEAgLTcxLDE3ICs3MSw3IEBAIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2Vi
QXVkaW8KICAgICAgICAgbV9jb252ZXJ0ZXIgPSBudWxscHRyOwogICAgIH0KICAgICBpZiAobV9j
b25uZWN0ZWQpCi0gICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7
Ci19Ci0KLXZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnN0YXJ0UHJvZHVjaW5n
RGF0YSgpCi17Ci0gICAgbV9jYXB0dXJlU291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKLX0K
LQotdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6c3RvcFByb2R1Y2luZ0RhdGEo
KQotewotICAgIG1fY2FwdHVyZVNvdXJjZS0+c3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAg
bV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigqdGhpcyk7CiB9CiAKIHZvaWQgV2ViQXVk
aW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByb3ZpZGVJbnB1dChBdWRpb0J1cyogYnVzLCBzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKQpAQCAtMTA3LDYgKzk3LDEwIEBAIHZvaWQgV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM6OnByb3YKICAgICB9CiAKICAgICBBU1NFUlQoYnVzLT5udW1iZXJP
ZkNoYW5uZWxzKCkgPT0gbV9yaW5nQnVmZmVyLT5jaGFubmVsQ291bnQoKSk7CisgICAgaWYgKGJ1
cy0+bnVtYmVyT2ZDaGFubmVscygpICE9IG1fcmluZ0J1ZmZlci0+Y2hhbm5lbENvdW50KCkpIHsK
KyAgICAgICAgYnVzLT56ZXJvKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9saXN0LT5tTnVtYmVyQnVmZmVyczsgKytpKSB7CiAgICAg
ICAgIEF1ZGlvQ2hhbm5lbCYgY2hhbm5lbCA9ICpidXMtPmNoYW5uZWwoaSk7CkBAIC0xMzIsMTAg
KzEyNiwxMCBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzZXRDCiAKICAg
ICBpZiAobV9jbGllbnQgJiYgIW1fY29ubmVjdGVkKSB7CiAgICAgICAgIG1fY29ubmVjdGVkID0g
dHJ1ZTsKLSAgICAgICAgbV9jYXB0dXJlU291cmNlLT5hZGRPYnNlcnZlcih0aGlzKTsKLSAgICAg
ICAgbV9jYXB0dXJlU291cmNlLT5zdGFydFByb2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgbV9jYXB0
dXJlU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7CisgICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+
c3RhcnQoKTsKICAgICB9IGVsc2UgaWYgKCFtX2NsaWVudCAmJiBtX2Nvbm5lY3RlZCkgewotICAg
ICAgICBtX2NhcHR1cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVyKHRoaXMpOworICAgICAgICBtX2Nh
cHR1cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKICAgICAgICAgbV9jb25uZWN0ZWQg
PSBmYWxzZTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01v
Y2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAkocmV2aXNpb24gMjEwNjMx
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJj
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBMQVRGT1JNKElPUykKIFJlZlB0cjxNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqIGNvbnN0cmFpbnRzKQogewog
ICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5h
bWUpKTsKQEAgLTU1LDkgKzU2LDExIEBAIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4g
TW9ja1JlYWwKICAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0cnVlOwogICAgIHJldHVybiBzb3VyY2U7
CiB9Ci0KKyNlbmRpZgorICAgIAogTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICA6IE1vY2tSZWFsdGltZU1lZGlh
U291cmNlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmcoKSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6
QXVkaW8sIG5hbWUpCisgICAgLCBtX3RpbWVyKFJ1bkxvb3A6OmN1cnJlbnQoKSwgdGhpcywgJk1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjp0aWNrKQogewogfQogCkBAIC04Miw2ICs4NSw0MSBAQCB2
b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0aWFsaXplCiAgICAgc3VwcG9ydGVkQ29u
c3RyYWludHMuc2V0U3VwcG9ydHNTYW1wbGVSYXRlKHRydWUpOwogfQogCit2b2lkIE1vY2tSZWFs
dGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKQoreworICAgIE1vY2tSZWFsdGlt
ZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEoKTsKKworICAgIG1fc3RhcnRUaW1lID0g
bW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgbV90aW1lci5zdGFydFJlcGVhdGlu
ZyhzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKHJlbmRlckludGVydmFsKCkpKTsKK30KKwordm9p
ZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RvcFByb2R1Y2luZ0RhdGEoKQoreworICAgIE1v
Y2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgpOworICAgIG1fdGltZXIu
c3RvcCgpOworICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1l
KCkgLSBtX3N0YXJ0VGltZTsKKyAgICBtX3N0YXJ0VGltZSA9IE5BTjsKK30KKworZG91YmxlIE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjplbGFwc2VkVGltZSgpCit7CisgICAgaWYgKHN0ZDo6aXNu
YW4obV9zdGFydFRpbWUpKQorICAgICAgICByZXR1cm4gbV9lbGFwc2VkVGltZTsKKworICAgIHJl
dHVybiBtX2VsYXBzZWRUaW1lICsgKG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpIC0gbV9z
dGFydFRpbWUpOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp0aWNrKCkKK3sK
KyAgICBpZiAoc3RkOjppc25hbihtX2xhc3RSZW5kZXJUaW1lKSkKKyAgICAgICAgbV9sYXN0UmVu
ZGVyVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworCisgICAgZG91YmxlIG5v
dyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgpOworICAgIGRvdWJsZSBkZWx0YSA9IG5v
dyAtIG1fbGFzdFJlbmRlclRpbWU7CisgICAgbV9sYXN0UmVuZGVyVGltZSA9IG5vdzsKKyAgICBy
ZW5kZXIoZGVsdGEpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuaAkocmV2aXNpb24gMjEwNjMxKQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAx
NSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUt
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTI4LDE0ICsyOCwxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0j
aWZuZGVmIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlX2gKLSNkZWZpbmUgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCiAj
aW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1
ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlLmgiCisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSwxMSArNDUsMTkgQEAgcHVibGljOgogICAg
IHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IGNyZWF0ZShjb25zdCBTdHJp
bmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CiAgICAgc3RhdGljIFJlZlB0cjxNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29uc3QgU3RyaW5nJiBuYW1lKTsKIAotICAg
IHZpcnR1YWwgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKCkgeyB9CisgICAgdmlydHVhbCB+TW9j
a1JlYWx0aW1lQXVkaW9Tb3VyY2UoKSA9IGRlZmF1bHQ7CiAKIHByb3RlY3RlZDoKICAgICBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcmIG5hbWUgPSBBU0NJSUxpdGVyYWwoIk1v
Y2sgYXVkaW8gZGV2aWNlIikpOwogCisgICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKSBmaW5h
bDsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkgZmluYWw7CisKKyAgICB2aXJ0dWFsIHZv
aWQgcmVuZGVyKGRvdWJsZSkgeyB9CisKKyAgICBkb3VibGUgZWxhcHNlZFRpbWUoKTsKKyAgICBz
dGF0aWMgaW50IHJlbmRlckludGVydmFsKCkgeyByZXR1cm4gMTI1OyB9CisKIHByaXZhdGU6CiAK
ICAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtNjAsMTAgKzY4LDE1IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFs
dGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlkZTsKICAgICB2b2lkIGluaXRpYWxpemVD
YXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJyaWRlOwog
ICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3Vy
Y2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOworCisgICAgdm9pZCB0aWNrKCk7CisK
KyAgICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gbV90aW1lcjsKKyAg
ICBkb3VibGUgbV9zdGFydFRpbWUgeyBOQU4gfTsKKyAgICBkb3VibGUgbV9sYXN0UmVuZGVyVGlt
ZSB7IE5BTiB9OworICAgIGRvdWJsZSBtX2VsYXBzZWRUaW1lIHsgMCB9OwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2Vu
ZGlmIC8vIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDYz
MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
IEBACisyMDE3LTAxLTEyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgor
CisgICAgICAgIFtNZWRpYVN0cmVhbSwgTWFjXSBBZGQgbW9jayBhdWRpbyBzb3VyY2UKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2Njk3NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd2ViYXVkaW8vbWVk
aWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYmF1ZGlv
L21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWw6CisKIDIwMTctMDEtMTIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtFRkxdIFNlY29uZCB1
cGRhdGUgVGVzdEV4cGVjdGF0aW9uIGZpbGUgZm9yIFVidW50dSAxNi4wNC4KSW5kZXg6IExheW91
dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNl
bm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIxMDYzMSkKKysrIExheW91dFRlc3RzL3dlYmF1
ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMywxNCArMywxNSBAQCBCYXNpYyB0ZXN0cyBmb3IgTWVkaWFTdHJlYW1BdWRpb1NvdXJj
ZU5vCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1Mge2F1ZGlvOnRydWV9IGdlbmVy
YXRlZCBzdHJlYW0KLVBBU1Mgcy5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCi1QQVNTIHMu
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAog
UEFTUyBTb3VyY2UgQXVkaW9Ob2RlIGhhcyBubyBpbnB1dHMuCiBQQVNTIFNvdXJjZSBBdWRpb05v
ZGUgaGFzIG9uZSBvdXRwdXQuCi1QQVNTIGNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBp
bGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4KLVBBU1MgY29ubmVjdCgpIGV4Y2VwdGlvbiB0
aHJvd24gZm9yIGlsbGVnYWwgb3V0cHV0IGluZGV4LgotUEFTUyBjb25uZWN0KCkgZXhjZXB0aW9u
IHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleC4KK1BBU1MgY29ubmVjdCgpIGV4Y2VwdGlv
biB7IlR5cGVFcnJvciIsICJBcmd1bWVudCAxICgnZGVzdGluYXRpb24nKSB0byBBdWRpb05vZGUu
Y29ubmVjdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEF1ZGlvTm9kZSJ9IHRocm93biBmb3IgaWxs
ZWdhbCBkZXN0aW5hdGlvbiBBdWRpb05vZGUKK1BBU1MgY29ubmVjdCgpIGV4Y2VwdGlvbiB7Iklu
ZGV4U2l6ZUVycm9yIiwgIlRoZSBpbmRleCBpcyBub3QgaW4gdGhlIGFsbG93ZWQgcmFuZ2UuIn0g
dGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleAorUEFTUyBjb25uZWN0KCkgZXhjZXB0aW9u
IHsiSW5kZXhTaXplRXJyb3IiLCAiVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dlZCByYW5n
ZS4ifSB0aHJvd24gZm9yIGlsbGVnYWwgaW5wdXQgaW5kZXgKIFBBU1MgbWVkaWFTdHJlYW1Tb3Vy
Y2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBzdWNjZWVkZWQuCitQQVNTIG9uYXVkaW9w
cm9jZXNzIHdhcyBjYWxsZWQKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3Nv
dXJjZW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0
cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCShyZXZpc2lvbiAyMTA2MzEpCisrKyBMYXlvdXRUZXN0
cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDk2ICsxLDExNCBAQAogPCFET0NUWVBFIGh0bWw+Ci0KIDxodG1sPgotPGhlYWQ+Ci08
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci0K
LTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigiQmFzaWMgdGVzdHMgZm9yIE1lZGlhU3Ry
ZWFtQXVkaW9Tb3VyY2VOb2RlIEFQSS4iKTsKLQotdmFyIGNvbnRleHQgPSAwOwotCi1mdW5jdGlv
biBlcnJvcigpIHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJlYW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7
Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9u
YXJ5LCBjYWxsYmFjaykgewotICAgIHRyeSB7Ci0gICAgICAgIG5hdmlnYXRvci53ZWJraXRHZXRV
c2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVycm9yKTsKLSAgICB9IGNhdGNoIChlKSB7
Ci0gICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVzZXJNZWRpYSB0aHJldyBleGNlcHRpb24g
OicgKyBlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBn
b3RTdHJlYW0oc3RyZWFtKSB7Ci0gICAgcyA9IHN0cmVhbTsKLSAgICB0ZXN0UGFzc2VkKCd7YXVk
aW86dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbScpOwotICAgIHNob3VsZEJlKCdzLmdldEF1ZGlvVHJh
Y2tzKCkubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgncy5nZXRWaWRlb1RyYWNrcygpLmxl
bmd0aCcsICcwJyk7Ci0KLSAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOwot
Ci0gICAgLy8gQ3JlYXRlIGFuIEF1ZGlvTm9kZSBmcm9tIHRoZSBzdHJlYW0uCi0gICAgdmFyIG1l
ZGlhU3RyZWFtU291cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShzdHJlYW0p
OwotCi0gICAgLy8gQ2hlY2sgbnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cy4KLSAgICBpZiAo
bWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZJbnB1dHMgPT0gMCkKLSAgICAgICAgdGVzdFBhc3Nl
ZCgiU291cmNlIEF1ZGlvTm9kZSBoYXMgbm8gaW5wdXRzLiIpOwotICAgIGVsc2UKLSAgICAgICAg
dGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgbm90IGhhdmUgaW5wdXRzLiIpOwot
Ci0gICAgaWYgKG1lZGlhU3RyZWFtU291cmNlLm51bWJlck9mT3V0cHV0cyA9PSAxKQotICAgICAg
ICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2RlIGhhcyBvbmUgb3V0cHV0LiIpOwotICAgIGVs
c2UKLSAgICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgaGF2ZSBvbmUg
b3V0cHV0LiIpOwotCi0gICAgLy8gVHJ5IGNhbGxpbmcgY29ubmVjdCgpIG1ldGhvZCB3aXRoIGls
bGVnYWwgdmFsdWVzLgotCi0gICAgdHJ5IHsKLSAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29u
bmVjdCgwLCAwLCAwKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiBz
aG91bGQgYmUgdGhyb3duIGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4iKTsKLSAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiB0
aHJvd24gZm9yIGlsbGVnYWwgZGVzdGluYXRpb24gQXVkaW9Ob2RlLiIpOwotICAgIH0KLQotICAg
IHRyeSB7Ci0gICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5h
dGlvbiwgNSwgMCk7Ci0gICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hv
dWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBvdXRwdXQgaW5kZXguIik7Ci0gICAgfSBjYXRjaChl
KSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBp
bGxlZ2FsIG91dHB1dCBpbmRleC4iKTsKLSAgICB9Ci0KLSAgICB0cnkgewotICAgICAgICBtZWRp
YVN0cmVhbVNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24sIDAsIDUpOwotICAgICAg
ICB0ZXN0RmFpbGVkKCJjb25uZWN0KCkgZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIGls
bGVnYWwgaW5wdXQgaW5kZXguIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRlc3RQYXNz
ZWQoImNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxlZ2FsIGlucHV0IGluZGV4LiIp
OwotICAgIH0KLQotICAgIC8vIFRyeSBjYWxsaW5nIGNvbm5lY3QoKSB3aXRoIHByb3BlciB2YWx1
ZXMuCi0gICAgdHJ5IHsKLSAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0
LmRlc3RpbmF0aW9uLCAwLCAwKTsKLSAgICAgICAgdGVzdFBhc3NlZCgibWVkaWFTdHJlYW1Tb3Vy
Y2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBzdWNjZWVkZWQuIik7Ci0gICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIm1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29u
dGV4dC5kZXN0aW5hdGlvbikgZmFpbGVkLiIpOwotICAgIH0KLQotICAgIGZpbmlzaEpTVGVzdCgp
OwotfQotCi1nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9LCBnb3RTdHJlYW0pOwotd2luZG93Lmpz
VGVzdElzQXN5bmMgPSB0cnVlOwotd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7Ci0K
LTwvc2NyaXB0PgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisKKyAgICA8Ym9keT4KKyAg
ICAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2PgorICAgICAgICA8ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKworICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZGVzY3JpcHRpb24o
IkJhc2ljIHRlc3RzIGZvciBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZSBBUEkuIik7CisKKyAg
ICAgICAgICAgIGxldCBjb250ZXh0OworICAgICAgICAgICAgbGV0IHN0cmVhbTsKKyAgICAgICAg
ICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlOworICAgICAgICAgICAgY29uc3QgbnVtYmVyT2ZPdXRw
dXRDaGFubmVscyA9IDI7CisgICAgICAgICAgICBjb25zdCBudW1iZXJPZklucHV0Q2hhbm5lbHMg
PSAyOworICAgICAgICAgICAgY29uc3QgYnVmZmVyU2l6ZSA9IDUxMjsKKworICAgICAgICAgICAg
ZnVuY3Rpb24gcHJvY2Vzc0F1ZGlvRGF0YShldmVudCkgCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgaWYgKGZpbmlzaGVkKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRCdWZmZXIubnVtYmVyT2ZDaGFubmVscyAhPSBu
dW1iZXJPZklucHV0Q2hhbm5lbHMpCisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYG51
bWJlck9mSW5wdXRDaGFubmVscyBkb2Vzbid0IG1hdGNoOiBoYXZlICR7ZXZlbnQuaW5wdXRCdWZm
ZXIubnVtYmVyT2ZDaGFubmVsc30sIGV4cGVjdCAke251bWJlck9mSW5wdXRDaGFubmVsc30hYCk7
CisKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQub3V0cHV0QnVmZmVyLm51bWJlck9mQ2hhbm5l
bHMgIT0gbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZChgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyBkb2Vzbid0IG1hdGNoOiBoYXZlICR7ZXZlbnQu
b3V0cHV0QnVmZmVyLm51bWJlck9mQ2hhbm5lbHN9LCBleHBlY3QgJHtudW1iZXJPZk91dHB1dENo
YW5uZWxzfSFgKTsKKworICAgICAgICAgICAgICAgIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBd
LnN0b3AoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJvbmF1ZGlvcHJvY2VzcyB3YXMg
Y2FsbGVkIik7CisgICAgICAgICAgICAgICAgZmluaXNoSlNUZXN0KCk7CisgICAgICAgICAgICAg
ICAgZmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlv
biBnb3RTdHJlYW0ocykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzdHJlYW0gPSBz
OworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ3thdWRpbzp0cnVlfSBnZW5lcmF0ZWQgc3Ry
ZWFtJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygp
Lmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CisKKyAgICAgICAgICAgICAgICBjb250ZXh0ID0gbmV3
IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworCisgICAgICAgICAgICAgICAgLy8gQ3JlYXRlIGFuIEF1
ZGlvTm9kZSBmcm9tIHRoZSBzdHJlYW0uCisgICAgICAgICAgICAgICAgbGV0IG1lZGlhU3RyZWFt
U291cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShzdHJlYW0pOworCisgICAg
ICAgICAgICAgICAgLy8gQ2hlY2sgbnVtYmVyIG9mIGlucHV0cyBhbmQgb3V0cHV0cy4KKyAgICAg
ICAgICAgICAgICBpZiAobWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZJbnB1dHMgPT0gMCkKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU291cmNlIEF1ZGlvTm9kZSBoYXMgbm8gaW5w
dXRzLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZh
aWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgbm90IGhhdmUgaW5wdXRzLiIpOworCisgICAg
ICAgICAgICAgICAgaWYgKG1lZGlhU3RyZWFtU291cmNlLm51bWJlck9mT3V0cHV0cyA9PSAxKQor
ICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2RlIGhhcyBvbmUg
b3V0cHV0LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgaGF2ZSBvbmUgb3V0cHV0LiIpOworCisg
ICAgICAgICAgICAgICAgLy8gVHJ5IGNhbGxpbmcgY29ubmVjdCgpIG1ldGhvZCB3aXRoIGlsbGVn
YWwgdmFsdWVzLgorICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1l
ZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHRl
c3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdh
bCBkZXN0aW5hdGlvbiBBdWRpb05vZGUuIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChlcnIp
IHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChgY29ubmVjdCgpIGV4Y2VwdGlvbiB7
IiR7ZXJyLm5hbWV9IiwgIiR7ZXJyLm1lc3NhZ2V9In0gdGhyb3duIGZvciBpbGxlZ2FsIGRlc3Rp
bmF0aW9uIEF1ZGlvTm9kZWApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29u
dGV4dC5kZXN0aW5hdGlvbiwgNSwgMCk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQo
ImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBvdXRwdXQg
aW5kZXguIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChlcnIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdFBhc3NlZChgY29ubmVjdCgpIGV4Y2VwdGlvbiB7IiR7ZXJyLm5hbWV9IiwgIiR7
ZXJyLm1lc3NhZ2V9In0gdGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleGApOworICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAg
IG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiwgMCwgNSk7Cisg
ICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxk
IGJlIHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleC4iKTsKKyAgICAgICAgICAgICAgICB9
IGNhdGNoKGVycikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGBjb25uZWN0KCkg
ZXhjZXB0aW9uIHsiJHtlcnIubmFtZX0iLCAiJHtlcnIubWVzc2FnZX0ifSB0aHJvd24gZm9yIGls
bGVnYWwgaW5wdXQgaW5kZXhgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAvLyBUcnkgY2FsbGluZyBjb25uZWN0KCkgd2l0aCBsZWdhbCB2YWx1ZXMuCisgICAgICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVj
dChjb250ZXh0LmRlc3RpbmF0aW9uLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBh
c3NlZCgibWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBzdWNj
ZWVkZWQuIik7CisgICAgICAgICAgICAgICAgfSBjYXRjaChlcnIpIHsKKyAgICAgICAgICAgICAg
ICAgICAgdGVzdEZhaWxlZChgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3Rp
bmF0aW9uKSBmYWlsZWQgd2l0aCAiJHtlcnIubmFtZX0iOiAiJHtlcnIubWVzc2FnZX0iYCk7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbGV0IHNjcmlwdFByb2Nlc3Nvck5v
ZGUgPSBjb250ZXh0LmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihidWZmZXJTaXplLCBudW1iZXJPZklu
cHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOworICAgICAgICAgICAgICAgIHNj
cmlwdFByb2Nlc3Nvck5vZGUub25hdWRpb3Byb2Nlc3MgPSBwcm9jZXNzQXVkaW9EYXRhOworCisg
ICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChzY3JpcHRQcm9jZXNzb3JO
b2RlKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRQcm9jZXNzb3JOb2RlLmNvbm5lY3QoY29udGV4
dC5kZXN0aW5hdGlvbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0UnVubmVyLnNldFVzZXJNZWRpYVBlcm1p
c3Npb24odHJ1ZSk7CisKKyAgICAgICAgICAgIG5hdmlnYXRvci5tZWRpYURldmljZXMuZ2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlfSkKKyAgICAgICAgICAgICAgICAudGhlbihzdHJlYW0gPT4gZ290
U3RyZWFtKHN0cmVhbSkpCisgICAgICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikgewor
ICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBtZWRpYURldmljZXMuZ2V0VXNlck1lZGlh
KCkgZmFpbGVkIHdpdGggIiR7ZXJyLm5hbWV9IjogIiR7ZXJyLm1lc3NhZ2V9ImApOworICAgICAg
ICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAg
ICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOworICAgICAgICAgICAgd2luZG93
LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiAKLTxz
Y3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9k
eT4KKyAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298732</attachid>
            <date>2017-01-12 16:34:15 -0800</date>
            <delta_ts>2017-01-12 18:46:56 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>mock_audio_source_patch_11.txt</filename>
            <type>text/plain</type>
            <size>52818</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAxLTEyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSwg
TWFjXSBBZGQgbW9jayBhdWRpbyBzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Njk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgbW9jayBhdWRpbyBzb3VyY2UgZm9yIHRl
c3RpbmcgbWVkaWEgc3RyZWFtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgd2Vi
YXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbC4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVBdWRpb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlcjo6fk9ic2VydmVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphZGRPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVtb3Zl
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpl
bWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByb3ZpZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnN0b3BQcm9kdWNpbmdEYXRhKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjplbGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGljayk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpyZW5kZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6fk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKTogRGVsZXRlZC4KKwogMjAx
Ny0wMS0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjIwOTk3Nyk6IENyYXNoIGluIFVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4
dERhdGFiYXNlVGFzay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2
LDYgKzE0Niw3IEBACiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNEUxN0Qx
ODBCMjAwMkJENDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCQUIxN0NGMEFE
NDAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwICovOyB9Owog
CQkwNzNCRTM0RjE3RDE4MTgzMDAyQkQ0MzEgLyogUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJB
NjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgKi87IH07
CisJCTA3NDRFQ0VEMUUwQzRFMzAwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDRF
Q0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLzsg
fTsKIAkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFODJCODE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLzsgfTsKIAkJMDc0RTgy
QkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRD
IC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CkBA
IC0xNTUsNiArMTU2LDcgQEAKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkw
NzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNG
IC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OworCQkwNzcwN0NCMDFFMjA1RUUzMDAw
MDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQy5oICovOyB9OwogCQkwNzc2NjRGQzE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCTA3NzY2NEZEMTgzRTZCNUMw
MDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovOyB9OwogCQkwNzc5QkYwRDE4NDUz
MTY4MDAwQjZBRTcgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzlCRjBBMTg0NTMxNjgwMDBC
NkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwICovOyB9OwpAQCAtNzE2Myw2
ICs3MTY1LDggQEAKIAkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1Jl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VzUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzNCRTMzRTE3RDE3RTAxMDAy
QkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0NEVDRUIxRTBDNEFFNTAw
MEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtVGltZVJhbmdl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NEU4MkI5MThBNjlGMEUwMDdF
RjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNzMsNiArNzE3Nyw4IEBACiAJCTA3Njk3MDg1MTQ2
M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZG
MEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzcwN0NBRjFFMjA1RUM0
MDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVyZVNv
dXJjZVByb3ZpZGVyT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRp
b0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NzY2
NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3OUJGMEExODQ1MzE2ODAwMEI2
QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMzMsNiArMTUyMzksMTAgQEAKIAkJMDcyOUIx
NEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVy
ZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAorCQkJCTA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAv
KiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAorCQkJCTA3NDRFQ0VCMUUwQzRBRTUwMDBE
MDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oICovLAorCQkJCTA3NDRFQ0VDMUUw
QzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLywKIAkJCQkw
NzAzNjNEODE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJ
CQkwNzAzNjNEOTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8s
CiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKQEAgLTI1OTUyLDYgKzI1OTYyLDcgQEAKIAkJCQk1MTg1RkNBRDFCQjRDNEU4MDAxMjg5
OEYgLyogSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0FEMUJCREQz
RUIwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OEVGNTM4MURDMTQ5RTIwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3NzA3Q0IwMUUyMDVFRTMwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVy
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElE
QlZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RkNCMDFCQjRDNEU4MDAxMjg5OEYgLyog
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEE4MTRFMDFDNzMz
OEVCMDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MzAzNzYsNiArMzAzODcsNyBAQAogCQkJCUIyRkEzREM4MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEz
RENBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
QWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRENDMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3NDRFQ0VEMUUwQzRFMzAwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQ0UwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0xpbmV0b0Ficy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkZBM0REMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFi
cy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJl
dmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmoKICAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKSB7CiAgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVP
ZmZzZXQoc2FtcGxlLCByZW5kZXJlckxhdGVuY3kpOwogICAgICAgICBhdWRpb1RyYWNrLT5zZXRU
aW1lbGluZU9mZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVT
YW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVk
aW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICglbGxkLyVkKSIs
IHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudGltZVZhbHVlKCksIHRp
bWVsaW5lT2Zmc2V0LnRpbWVTY2FsZSgpKTsKKyAgICAgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBs
ZXMsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1Nh
bXBsZTogdGltZWxpbmUgb2Zmc2V0IGZvciB0cmFjayAlcyBzZXQgdG8gJXMiLCB0cmFjay5pZCgp
LnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWVsaW5lT2Zmc2V0KS51dGY4KCkuZGF0YSgpKTsK
ICAgICB9CiAKICAgICB1cGRhdGVTYW1wbGVUaW1lcyhzYW1wbGUsIHRpbWVsaW5lT2Zmc2V0LCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGUi
KTsKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqCiAgICAgaWYgKHRpbWVsaW5lT2Zmc2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUo
KSkgewogICAgICAgICB0aW1lbGluZU9mZnNldCA9IGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KHNh
bXBsZSwgcmVuZGVyZXJMYXRlbmN5KTsKICAgICAgICAgdmlkZW9UcmFjay0+c2V0VGltZWxpbmVP
ZmZzZXQodGltZWxpbmVPZmZzZXQpOwotICAgICAgICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywg
Ik1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxl
OiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVzIHNldCB0byAlZiIsIHRyYWNrLmlkKCkudXRm
OCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudG9Eb3VibGUoKSk7CisgICAgICAgIExPRyhNZWRp
YUNhcHR1cmVTYW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpl
bnF1ZXVlVmlkZW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVz
IiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1lbGluZU9mZnNldCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1l
bGluZU9mZnNldCwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNp
b24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5jbHVkZSAi
QVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJBdWRpb0NhcHR1cmVTb3VyY2VQcm92
aWRlck9iakMuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiB0eXBlZGVmIHN0cnVjdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uOwpAQCAt
MzgsMjYgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM7CiAKLWNsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVibGlj
IEFWTWVkaWFDYXB0dXJlU291cmNlIHsKK2NsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVi
bGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlk
ZXJPYmpDIHsKIHB1YmxpYzoKIAotICAgIGNsYXNzIE9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1bnByZXBhcmUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVmKSA9IDA7Ci0gICAgfTsK
LQogICAgIHN0YXRpYyBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IGNyZWF0ZShBVkNhcHR1
cmVEZXZpY2UqLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwg
U3RyaW5nJik7CiAKLSAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7Ci0gICAgdm9pZCBy
ZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwotCiBwcml2YXRlOgogICAgIEFWQXVkaW9DYXB0dXJl
U291cmNlKEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZpcnR1
YWwgfkFWQXVkaW9DYXB0dXJlU291cmNlKCk7CiAgICAgCisgICAgLy8gQXVkaW9DYXB0dXJlU291
cmNlUHJvdmlkZXJPYmpDCisgICAgdm9pZCBhZGRPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVy
T2JqQyYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMmKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KCkgZmluYWw7CisKICAgICB2b2lkIGluaXRp
YWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCkBAIC03Miw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+
IG1fYXVkaW9Tb3VyY2VQcm92aWRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247Ci0gICAgVmVjdG9yPE9ic2VydmVy
Kj4gbV9vYnNlcnZlcnM7CisgICAgVmVjdG9yPEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDKj4gbV9v
YnNlcnZlcnM7CiAgICAgTG9jayBtX2xvY2s7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0
dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZP
VU5EQVRJT04pCiAKKyNpbXBvcnQgIkF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKQEAgLTExNSwyMCArMTE2LDIzIEBAIHZvaWQgQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsK
IH0KIAotdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQVZBdWRpb0NhcHR1
cmVTb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6
OmFkZE9ic2VydmVyKEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNlcnZlcikKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKLSAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIp
OworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwogICAgIGlmIChtX2lucHV0RGVz
Y3JpcHRpb24tPm1TYW1wbGVSYXRlKQotICAgICAgICBvYnNlcnZlci0+cHJlcGFyZShtX2lucHV0
RGVzY3JpcHRpb24uZ2V0KCkpOworICAgICAgICBvYnNlcnZlci5wcmVwYXJlKG1faW5wdXREZXNj
cmlwdGlvbi5nZXQoKSk7CiB9CiAKLXZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZU9i
c2VydmVyKEFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEFW
QXVkaW9DYXB0dXJlU291cmNlOjpyZW1vdmVPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVyT2Jq
QyYgb2JzZXJ2ZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7Ci0gICAgc2l6ZV90
IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOwotICAgIGlmIChwb3MgIT0gbm90Rm91
bmQpCi0gICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3MpOworICAgIG1fb2JzZXJ2ZXJzLnJl
bW92ZUZpcnN0KCZvYnNlcnZlcik7Cit9CisKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KCkKK3sKKyAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogdm9pZCBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRl
ck9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCit0eXBlZGVmIHN0cnVjdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNj
cmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBs
ZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1NvdXJjZU9i
c2VydmVyT2JqQzsKKworY2xhc3MgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMoKSA9IGRl
ZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Nv
dXJjZU9ic2VydmVyT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1NvdXJjZU9i
c2VydmVyT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKK3R5cGVkZWYgc3RydWN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb247
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1h
dERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU291
cmNlT2JzZXJ2ZXJPYmpDIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1NvdXJjZU9ic2Vy
dmVyT2JqQygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlKGNvbnN0IEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5wcmVw
YXJlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYsIENNU2FtcGxlQnVmZmVyUmVmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJP
YmpDLmgiCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorCitP
QkpDX0NMQVNTIEFWQXVkaW9QQ01CdWZmZXI7Cit0eXBlZGVmIHN0cnVjdCBBdWRpb0J1ZmZlckxp
c3QgQXVkaW9CdWZmZXJMaXN0OwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01DbG9jayogQ01DbG9j
a1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjIGZpbmFsIDogcHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLCBwdWJsaWMgQXVk
aW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKK3B1YmxpYzoKKworICAgIC8vIEF1ZGlvQ2Fw
dHVyZVNvdXJjZVByb3ZpZGVyT2JqQworICAgIHZvaWQgYWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VP
YnNlcnZlck9iakMmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgZmluYWw7CisgICAgdm9pZCBzdGFydCgpIGZpbmFsOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTsKKyAgICBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYyhjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgYXBwbHlTYW1w
bGVSYXRlKGludCkgZmluYWw7CisgICAgYm9vbCBhcHBseVNhbXBsZVNpemUoaW50KSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9pZCBlbWl0U2FtcGxlQnVmZmVycyh1aW50MzJfdCk7
CisgICAgdm9pZCByZW5kZXIoZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29uZmlndXJlKCk7
CisKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7
CisKKyAgICBzaXplX3QgbV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplIHsgMCB9OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworCisgICAg
dWludDMyX3QgbV9tYXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDMyX3QgbV9zYW1wbGVSYXRl
IHsgNDQxMDAgfTsKKyAgICBkb3VibGUgbV9ieXRlc1BlckZyYW1lIHsgc2l6ZW9mKEZsb2F0MzIp
IH07CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9mb3JtYXREZXNj
cmlwdGlvbjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9zdHJlYW1Gb3JtYXQ7
CisgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNl
UHJvdmlkZXI7CisgICAgVmVjdG9yPEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDKj4gbV9vYnNlcnZl
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbXBvcnQg
Ik1lZGlhQ29uc3RyYWludHMuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2lt
cG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oIgorI2ltcG9ydCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvQnVmZmVyLmg+CisjaW1wb3J0IDxBdWRpb1Rvb2xib3gv
QXVkaW9Db252ZXJ0ZXIuaD4KKyNpbXBvcnQgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgor
CisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKEF1
ZGlvVG9vbGJveCkKKworU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcs
IE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZv
cm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9y
bWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3Jt
YXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYyhuYW1lKSk7CisgICAgaWYgKGNvbnN0cmFpbnRzICYm
IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQorICAgICAgICBzb3VyY2Ug
PSBudWxscHRyOworCisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWM6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgbmFtZSkK
KyAgICA6IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpCit7Cit9CisKK1JlZlB0cjxNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1
ZTsKKyAgICByZXR1cm4gc291cmNlOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
TWFjOjphZGRPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVyT2JqQyYgb2JzZXJ2ZXIpCit7Cisg
ICAgbV9vYnNlcnZlcnMuYXBwZW5kKCZvYnNlcnZlcik7CisgICAgaWYgKG1fc3RyZWFtRm9ybWF0
Lm1TYW1wbGVSYXRlKQorICAgICAgICBvYnNlcnZlci5wcmVwYXJlKCZtX3N0cmVhbUZvcm1hdCk7
Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbW92ZU9ic2VydmVyKEF1
ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNlcnZlcikKK3sKKyAgICBtX29ic2VydmVycy5yZW1v
dmVGaXJzdCgmb2JzZXJ2ZXIpOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
OjpzdGFydCgpCit7CisgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7Cit9CisKKwordm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1ZmZlcnModWludDMyX3QgZnJhbWVD
b3VudCkKK3sKKyAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBDTVRpbWUg
c3RhcnRUaW1lID0gQ01UaW1lTWFrZShlbGFwc2VkVGltZSgpICogbV9zYW1wbGVSYXRlLCBtX3Nh
bXBsZVJhdGUpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBPU1N0
YXR1cyByZXN1bHQgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0
aW9ucyhudWxscHRyLCBudWxscHRyLCB0cnVlLCBudWxscHRyLCBudWxscHRyLCBtX2Zvcm1hdERl
c2NyaXB0aW9uLmdldCgpLCBmcmFtZUNvdW50LCBzdGFydFRpbWUsIG51bGxwdHIsICZzYW1wbGVC
dWZmZXIpOworICAgIEFTU0VSVChzYW1wbGVCdWZmZXIpOworICAgIEFTU0VSVCghcmVzdWx0KTsK
KworICAgIGlmICghc2FtcGxlQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKKyAgICByZXN1bHQgPSBDTVNhbXBsZUJ1ZmZl
clNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlciwga0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgbV9hdWRpb0J1ZmZlckxpc3QuZ2V0
KCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIHJlc3VsdCA9IENNU2FtcGxlQnVmZmVy
U2V0RGF0YVJlYWR5KHNhbXBsZUJ1ZmZlcik7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
bWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIp
KTsKKworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2Jz
ZXJ2ZXItPnByb2Nlc3MobV9mb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgc2FtcGxlQnVmZmVyKTsK
K30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQorewor
ICAgIG1fbWF4aW1pdW1GcmFtZUNvdW50ID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKHJlbmRl
ckludGVydmFsKCkgLyAxMDAwLiAqIG1fc2FtcGxlUmF0ZSAqIDIpOworICAgIEFTU0VSVChtX21h
eGltaXVtRnJhbWVDb3VudCk7CisKKyAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJs
ZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3
KCkgb3BlcmF0b3IKKyAgICAvLyB3aXRoIGEgY3VzdG9tIHNpemUsIGFuZCBpbml0aWFsaXplIHRo
ZSBzdHJ1Y3QgbWFudWFsbHkuCisgICAgdWludDMyX3QgYnVmZmVyRGF0YVNpemUgPSBtX2J5dGVz
UGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudDsKKyAgICB1aW50MzJfdCBiYXNlU2l6ZSA9
IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgc2l6ZW9mKEF1ZGlvQnVmZmVy
KTsKKyAgICB1aW50NjRfdCBidWZmZXJMaXN0U2l6ZSA9IGJhc2VTaXplICsgYnVmZmVyRGF0YVNp
emU7CisgICAgQVNTRVJUKGJ1ZmZlckxpc3RTaXplIDw9IFNJWkVfTUFYKTsKKyAgICBpZiAoYnVm
ZmVyTGlzdFNpemUgPiBTSVpFX01BWCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdWRpb0J1
ZmZlckxpc3RCdWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJMaXN0U2l6ZSk7
CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0
PihzdGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9hdWRpb0J1
ZmZlckxpc3RCdWZmZXJTaXplKSkpOworICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyTGlzdC5nZXQo
KSwgMCwgYnVmZmVyTGlzdFNpemUpOworCisgICAgbV9hdWRpb0J1ZmZlckxpc3QtPm1OdW1iZXJC
dWZmZXJzID0gMTsKKyAgICBhdXRvJiBidWZmZXIgPSBtX2F1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZl
cnNbMF07CisgICAgYnVmZmVyLm1OdW1iZXJDaGFubmVscyA9IDE7CisgICAgYnVmZmVyLm1EYXRh
Qnl0ZVNpemUgPSBidWZmZXJEYXRhU2l6ZTsKKyAgICBidWZmZXIubURhdGEgPSByZWludGVycHJl
dF9jYXN0PHVpbnQ4X3QqPihtX2F1ZGlvQnVmZmVyTGlzdC5nZXQoKSkgKyBiYXNlU2l6ZTsKKwor
ICAgIGNvbnN0IGludCBieXRlc1BlckZsb2F0ID0gc2l6ZW9mKEZsb2F0MzIpOworICAgIGNvbnN0
IGludCBiaXRzUGVyQnl0ZSA9IDg7CisgICAgbV9zdHJlYW1Gb3JtYXQgPSB7IH07CisgICAgbV9z
dHJlYW1Gb3JtYXQubVNhbXBsZVJhdGUgPSBtX3NhbXBsZVJhdGU7CisgICAgbV9zdHJlYW1Gb3Jt
YXQubUZvcm1hdElEID0ga0F1ZGlvRm9ybWF0TGluZWFyUENNOworICAgIG1fc3RyZWFtRm9ybWF0
Lm1Gb3JtYXRGbGFncyA9IGtBdWRpb0Zvcm1hdEZsYWdzTmF0aXZlRmxvYXRQYWNrZWQgfCBrQXVk
aW9Gb3JtYXRGbGFnSXNOb25JbnRlcmxlYXZlZDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQ
ZXJQYWNrZXQgPSBieXRlc1BlckZsb2F0OworICAgIG1fc3RyZWFtRm9ybWF0Lm1GcmFtZXNQZXJQ
YWNrZXQgPSAxOworICAgIG1fc3RyZWFtRm9ybWF0Lm1CeXRlc1BlckZyYW1lID0gYnl0ZXNQZXJG
bG9hdDsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQ2hhbm5lbHNQZXJGcmFtZSA9IDE7CisgICAgbV9z
dHJlYW1Gb3JtYXQubUJpdHNQZXJDaGFubmVsID0gYml0c1BlckJ5dGUgKiBieXRlc1BlckZsb2F0
OworCisgICAgQ01Gb3JtYXREZXNjcmlwdGlvblJlZiBmb3JtYXREZXNjcmlwdGlvbjsKKyAgICBD
TUF1ZGlvRm9ybWF0RGVzY3JpcHRpb25DcmVhdGUoTlVMTCwgJm1fc3RyZWFtRm9ybWF0LCAwLCBO
VUxMLCAwLCBOVUxMLCBOVUxMLCAmZm9ybWF0RGVzY3JpcHRpb24pOworICAgIG1fZm9ybWF0RGVz
Y3JpcHRpb24gPSBhZG9wdENGKGZvcm1hdERlc2NyaXB0aW9uKTsKKworICAgIGZvciAoYXV0byYg
b2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2JzZXJ2ZXItPnByZXBhcmUoJm1fc3Ry
ZWFtRm9ybWF0KTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVuZGVy
KGRvdWJsZSBkZWx0YSkKK3sKKyAgICBzdGF0aWMgZG91YmxlIHRoZXRhOworICAgIHN0YXRpYyBj
b25zdCBkb3VibGUgZnJlcXVlbmNpZXNbXSA9IHsgMTUwMC4sIDUwMC4gfTsKKworICAgIGlmICgh
bV9hdWRpb0J1ZmZlckxpc3QpCisgICAgICAgIHJlY29uZmlndXJlKCk7CisKKyAgICB1aW50MzJf
dCB0b3RhbEZyYW1lQ291bnQgPSBkZWx0YSAqIG1fc2FtcGxlUmF0ZTsKKyAgICB1aW50MzJfdCBm
cmFtZUNvdW50ID0gc3RkOjptaW4odG90YWxGcmFtZUNvdW50LCBtX21heGltaXVtRnJhbWVDb3Vu
dCk7CisgICAgZG91YmxlIGVsYXBzZWQgPSBlbGFwc2VkVGltZSgpOworICAgIHdoaWxlIChmcmFt
ZUNvdW50KSB7CisgICAgICAgIGZsb2F0ICpidWZmZXIgPSBzdGF0aWNfY2FzdDxmbG9hdCAqPiht
X2F1ZGlvQnVmZmVyTGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGEpOworICAgICAgICBmb3IgKHVpbnQz
Ml90IGZyYW1lID0gMDsgZnJhbWUgPCBmcmFtZUNvdW50OyArK2ZyYW1lKSB7CisgICAgICAgICAg
ICBpbnQgcGhhc2UgPSBmbW9kKGVsYXBzZWQsIDIpICogMTU7CisgICAgICAgICAgICBkb3VibGUg
aW5jcmVtZW50ID0gMDsKKyAgICAgICAgICAgIGJvb2wgc2lsZW50ID0gdHJ1ZTsKKworICAgICAg
ICAgICAgc3dpdGNoIChwaGFzZSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAg
Y2FzZSAxNDogeworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGZtb2QoZWxhcHNlZCwgMSkg
KiAyOworICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IDIuMCAqIE1fUEkgKiBmcmVxdWVuY2ll
c1tpbmRleF0gLyBtX3NhbXBsZVJhdGU7CisgICAgICAgICAgICAgICAgc2lsZW50ID0gZmFsc2U7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBpZiAoc2lsZW50KSB7CisgICAgICAgICAgICAgICAgYnVmZmVyW2ZyYW1lXSA9IDA7CisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZl
cltmcmFtZV0gPSBzaW4odGhldGEpICogMC4yNTsKKyAgICAgICAgICAgIHRoZXRhICs9IGluY3Jl
bWVudDsKKyAgICAgICAgICAgIGlmICh0aGV0YSA+IDIuMCAqIE1fUEkpCisgICAgICAgICAgICAg
ICAgdGhldGEgLT0gMi4wICogTV9QSTsKKyAgICAgICAgICAgIGVsYXBzZWQgKz0gMSAvIG1fc2Ft
cGxlUmF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIG1fYXVkaW9CdWZmZXJMaXN0LT5tQnVmZmVy
c1swXS5tRGF0YUJ5dGVTaXplID0gZnJhbWVDb3VudCAqIHNpemVvZihmbG9hdCk7CisgICAgICAg
IGVtaXRTYW1wbGVCdWZmZXJzKGZyYW1lQ291bnQpOworICAgICAgICB0b3RhbEZyYW1lQ291bnQg
LT0gZnJhbWVDb3VudDsKKyAgICAgICAgZnJhbWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVD
b3VudCwgbV9tYXhpbWl1bUZyYW1lQ291bnQpOworICAgIH0KK30KKworYm9vbCBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKGludCBzYW1wbGVSYXRlKQoreworICAg
IGlmIChzYW1wbGVSYXRlIDwgNDQxMDAgfHwgc2FtcGxlUmF0ZSA+IDQ4MDAwKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHNhbXBsZVJhdGUp
ID09IG1fc2FtcGxlUmF0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBtX3NhbXBsZVJh
dGUgPSBzYW1wbGVSYXRlOworICAgIG1fZm9ybWF0RGVzY3JpcHRpb24gPSBudWxscHRyOworICAg
IG1fYXVkaW9CdWZmZXJMaXN0ID0gbnVsbHB0cjsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdEJ1ZmZl
clNpemUgPSAwOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK0F1ZGlvU291cmNlUHJvdmlkZXIq
IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphdWRpb1NvdXJjZVByb3ZpZGVyKCkKK3sKKyAg
ICBpZiAoIW1fYXVkaW9Tb3VyY2VQcm92aWRlcikKKyAgICAgICAgbV9hdWRpb1NvdXJjZVByb3Zp
ZGVyID0gV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OmNyZWF0ZSgqdGhpcyk7CisKKyAg
ICByZXR1cm4gbV9hdWRpb1NvdXJjZVByb3ZpZGVyLmdldCgpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJB
VkZPYmpDLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJl
YW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLmgJKHJldmlzaW9uIDIxMDYzMSkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJj
ZVByb3ZpZGVyQVZGT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw5ICsyOCw5IEBACiAKICNp
ZiBFTkFCTEUoV0VCX0FVRElPKSAmJiBFTkFCTEUoTUVESUFfU1RSRUFNKQogCi0jaW5jbHVkZSAi
QVZBdWRpb0NhcHR1cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJBdWRpb0NhcHR1cmVTb3VyY2VQcm92
aWRlck9iakMuaCIKKyNpbmNsdWRlICJBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oIgogI2luY2x1
ZGUgIkF1ZGlvU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTG9jay5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC00Miwy
OCArNDIsMjQgQEAgdHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNNUwogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlOwogY2xhc3Mg
Q0FSaW5nQnVmZmVyOwogCi1jbGFzcyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyA6IHB1
YmxpYyBSZWZDb3VudGVkPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiwgcHVibGljIEF1
ZGlvU291cmNlUHJvdmlkZXIsIHB1YmxpYyBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6T2JzZXJ2ZXIg
eworY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMgOiBwdWJsaWMgUmVmQ291bnRl
ZDxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4sIHB1YmxpYyBBdWRpb1NvdXJjZVByb3Zp
ZGVyLCBwdWJsaWMgQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMgewogcHVibGljOgotICAgIHN0YXRp
YyBSZWY8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IGNyZWF0ZShBVkF1ZGlvQ2FwdHVy
ZVNvdXJjZSYpOworICAgIHN0YXRpYyBSZWY8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+
IGNyZWF0ZShBdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMmKTsKICAgICB2aXJ0dWFsIH5X
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQygpOwogCiBwcml2YXRlOgotICAgIFdlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDKEFWQXVkaW9DYXB0dXJlU291cmNlJik7Ci0KLSAgICB2b2lk
IHN0YXJ0UHJvZHVjaW5nRGF0YSgpOwotICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKTsKKyAg
ICBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyhBdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRl
ck9iakMmKTsKIAogICAgIC8vIEF1ZGlvU291cmNlUHJvdmlkZXIKICAgICB2b2lkIHByb3ZpZGVJ
bnB1dChBdWRpb0J1cyosIHNpemVfdCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDbGllbnQoQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudCopIG92ZXJyaWRlOwogCi0gICAgLy8gQVZBdWRpb0NhcHR1
cmVTb3VyY2U6Ok9ic2VydmVyCi0gICAgdm9pZCBwcmVwYXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFz
aWNEZXNjcmlwdGlvbiAqKSBvdmVycmlkZTsKLSAgICB2b2lkIHVucHJlcGFyZSgpIG92ZXJyaWRl
OwotICAgIHZvaWQgcHJvY2VzcyhDTUZvcm1hdERlc2NyaXB0aW9uUmVmLCBDTVNhbXBsZUJ1ZmZl
clJlZikgb3ZlcnJpZGU7CisgICAgLy8gQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMKKyAgICB2b2lk
IHByZXBhcmUoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uICopIGZpbmFsOworICAg
IHZvaWQgdW5wcmVwYXJlKCkgZmluYWw7CisgICAgdm9pZCBwcm9jZXNzKENNRm9ybWF0RGVzY3Jp
cHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVmKSBmaW5hbDsKIAogICAgIHNpemVfdCBtX2xpc3RC
dWZmZXJTaXplIHsgMCB9OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1f
bGlzdDsKQEAgLTc2LDcgKzcyLDcgQEAgcHJpdmF0ZToKICAgICB1aW50NjRfdCBtX3dyaXRlQ291
bnQgeyAwIH07CiAgICAgdWludDY0X3QgbV9yZWFkQ291bnQgeyAwIH07CiAgICAgQXVkaW9Tb3Vy
Y2VQcm92aWRlckNsaWVudCogbV9jbGllbnQgeyBudWxscHRyIH07Ci0gICAgQVZBdWRpb0NhcHR1
cmVTb3VyY2UqIG1fY2FwdHVyZVNvdXJjZSB7IG51bGxwdHIgfTsKKyAgICBBdWRpb0NhcHR1cmVT
b3VyY2VQcm92aWRlck9iakMqIG1fY2FwdHVyZVNvdXJjZSB7IG51bGxwdHIgfTsKICAgICBib29s
IG1fY29ubmVjdGVkIHsgZmFsc2UgfTsKIH07CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCShyZXZpc2lvbiAyMTA2MzEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUzLDEyICs1MywxMiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUga1JpbmdCdWZmZXJEdXJhdGlvbiA9IDE7
CiAKLVJlZjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gV2ViQXVkaW9Tb3VyY2VQcm92
aWRlckFWRk9iakM6OmNyZWF0ZShBVkF1ZGlvQ2FwdHVyZVNvdXJjZSYgc291cmNlKQorUmVmPFdl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qzo6Y3JlYXRlKEF1ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQyYgc291cmNlKQogewogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKHNvdXJj
ZSkpOwogfQogCi1XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6V2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakMoQVZBdWRpb0NhcHR1cmVTb3VyY2UmIHNvdXJjZSkKK1dlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyhBdWRpb0Nh
cHR1cmVTb3VyY2VQcm92aWRlck9iakMmIHNvdXJjZSkKICAgICA6IG1fY2FwdHVyZVNvdXJjZSgm
c291cmNlKQogewogfQpAQCAtNzEsMTcgKzcxLDcgQEAgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6On5XZWJBdWRpbwogICAgICAgICBtX2NvbnZlcnRlciA9IG51bGxwdHI7CiAgICAgfQog
ICAgIGlmIChtX2Nvbm5lY3RlZCkKLSAgICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNl
cnZlcih0aGlzKTsKLX0KLQotdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6c3Rh
cnRQcm9kdWNpbmdEYXRhKCkKLXsKLSAgICBtX2NhcHR1cmVTb3VyY2UtPnN0YXJ0UHJvZHVjaW5n
RGF0YSgpOwotfQotCi12b2lkIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpzdG9wUHJv
ZHVjaW5nRGF0YSgpCi17Ci0gICAgbV9jYXB0dXJlU291cmNlLT5zdG9wUHJvZHVjaW5nRGF0YSgp
OworICAgICAgICBtX2NhcHR1cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlzKTsKIH0KIAog
dm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdmlkZUlucHV0KEF1ZGlvQnVz
KiBidXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCkBAIC0xMDcsNiArOTcsMTAgQEAgdm9pZCBX
ZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6cHJvdgogICAgIH0KIAogICAgIEFTU0VSVChi
dXMtPm51bWJlck9mQ2hhbm5lbHMoKSA9PSBtX3JpbmdCdWZmZXItPmNoYW5uZWxDb3VudCgpKTsK
KyAgICBpZiAoYnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgIT0gbV9yaW5nQnVmZmVyLT5jaGFubmVs
Q291bnQoKSkgeworICAgICAgICBidXMtPnplcm8oKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
IAogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xpc3QtPm1OdW1iZXJCdWZmZXJzOyAr
K2kpIHsKICAgICAgICAgQXVkaW9DaGFubmVsJiBjaGFubmVsID0gKmJ1cy0+Y2hhbm5lbChpKTsK
QEAgLTEzMiwxMCArMTI2LDEwIEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnNldEMKIAogICAgIGlmIChtX2NsaWVudCAmJiAhbV9jb25uZWN0ZWQpIHsKICAgICAgICAgbV9j
b25uZWN0ZWQgPSB0cnVlOwotICAgICAgICBtX2NhcHR1cmVTb3VyY2UtPmFkZE9ic2VydmVyKHRo
aXMpOwotICAgICAgICBtX2NhcHR1cmVTb3VyY2UtPnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworICAg
ICAgICBtX2NhcHR1cmVTb3VyY2UtPmFkZE9ic2VydmVyKCp0aGlzKTsKKyAgICAgICAgbV9jYXB0
dXJlU291cmNlLT5zdGFydCgpOwogICAgIH0gZWxzZSBpZiAoIW1fY2xpZW50ICYmIG1fY29ubmVj
dGVkKSB7Ci0gICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7Cisg
ICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMpOwogICAgICAgICBt
X2Nvbm5lY3RlZCA9IGZhbHNlOwogICAgIH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UuY3BwCShyZXZp
c2lvbiAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKKyNpZiAhUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSU9TKQog
UmVmUHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
Y3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgTWVkaWFDb25zdHJhaW50cyogY29uc3Ry
YWludHMpCiB7CiAgICAgYXV0byBzb3VyY2UgPSBhZG9wdFJlZihuZXcgTW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2UobmFtZSkpOwpAQCAtNTUsOSArNTYsMTEgQEAgUmVmUHRyPE1vY2tSZWFsdGltZUF1
ZGlvU291cmNlPiBNb2NrUmVhbAogICAgIHNvdXJjZS0+bV9tdXRlZCA9IHRydWU7CiAgICAgcmV0
dXJuIHNvdXJjZTsKIH0KLQorI2VuZGlmCisgICAgCiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6
TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIDogTW9ja1Jl
YWx0aW1lTWVkaWFTb3VyY2UoY3JlYXRlQ2Fub25pY2FsVVVJRFN0cmluZygpLCBSZWFsdGltZU1l
ZGlhU291cmNlOjpBdWRpbywgbmFtZSkKKyAgICAsIG1fdGltZXIoUnVuTG9vcDo6Y3VycmVudCgp
LCB0aGlzLCAmTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnRpY2spCiB7CiB9CiAKQEAgLTgyLDYg
Kzg1LDQxIEBAIHZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmluaXRpYWxpemUKICAgICBz
dXBwb3J0ZWRDb25zdHJhaW50cy5zZXRTdXBwb3J0c1NhbXBsZVJhdGUodHJ1ZSk7CiB9CiAKK3Zv
aWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCit7CisgICAg
TW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpOworCisgICAgbV9z
dGFydFRpbWUgPSBtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKTsKKyAgICBtX3RpbWVyLnN0
YXJ0UmVwZWF0aW5nKHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMocmVuZGVySW50ZXJ2YWwoKSkp
OworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdG9wUHJvZHVjaW5nRGF0YSgp
Cit7CisgICAgTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKCk7Cisg
ICAgbV90aW1lci5zdG9wKCk7CisgICAgbV9lbGFwc2VkVGltZSArPSBtb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSAtIG1fc3RhcnRUaW1lOworICAgIG1fc3RhcnRUaW1lID0gTkFOOworfQor
Citkb3VibGUgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmVsYXBzZWRUaW1lKCkKK3sKKyAgICBp
ZiAoc3RkOjppc25hbihtX3N0YXJ0VGltZSkpCisgICAgICAgIHJldHVybiBtX2VsYXBzZWRUaW1l
OworCisgICAgcmV0dXJuIG1fZWxhcHNlZFRpbWUgKyAobW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkgLSBtX3N0YXJ0VGltZSk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6
OnRpY2soKQoreworICAgIGlmIChzdGQ6OmlzbmFuKG1fbGFzdFJlbmRlclRpbWUpKQorICAgICAg
ICBtX2xhc3RSZW5kZXJUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisKKyAg
ICBkb3VibGUgbm93ID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7CisgICAgZG91Ymxl
IGRlbHRhID0gbm93IC0gbV9sYXN0UmVuZGVyVGltZTsKKyAgICBtX2xhc3RSZW5kZXJUaW1lID0g
bm93OworICAgIHJlbmRlcihkZWx0YSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCShyZXZpc2lv
biAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1
ZGlvU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAxNS0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjgsMTQgKzI4LDE0IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaAotI2RlZmluZSBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZV9oCisjcHJhZ21hIG9uY2UKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCiAKICNpbmNsdWRlICJGb250Q2FzY2FkZS5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVy
LmgiCiAjaW5jbHVkZSAiTW9ja1JlYWx0aW1lTWVkaWFTb3VyY2UuaCIKKyNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ1LDExICs0NSwxOSBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRl
KGNvbnN0IFN0cmluZyYsIGNvbnN0IE1lZGlhQ29uc3RyYWludHMqKTsKICAgICBzdGF0aWMgUmVm
UHRyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBjcmVhdGVNdXRlZChjb25zdCBTdHJpbmcmIG5h
bWUpOwogCi0gICAgdmlydHVhbCB+TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKSB7IH0KKyAgICB2
aXJ0dWFsIH5Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZSgpID0gZGVmYXVsdDsKIAogcHJvdGVjdGVk
OgogICAgIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSA9IEFTQ0lJ
TGl0ZXJhbCgiTW9jayBhdWRpbyBkZXZpY2UiKSk7CiAKKyAgICB2b2lkIHN0YXJ0UHJvZHVjaW5n
RGF0YSgpIGZpbmFsOworICAgIHZvaWQgc3RvcFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKworICAg
IHZpcnR1YWwgdm9pZCByZW5kZXIoZG91YmxlKSB7IH0KKworICAgIGRvdWJsZSBlbGFwc2VkVGlt
ZSgpOworICAgIHN0YXRpYyBpbnQgcmVuZGVySW50ZXJ2YWwoKSB7IHJldHVybiAxMjU7IH0KKwog
cHJpdmF0ZToKIAogICAgIGJvb2wgYXBwbHlWb2x1bWUoZG91YmxlKSBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CkBAIC02MCwxMCArNjgsMTUgQEAgcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVNl
dHRpbmdzKFJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0aW5ncyYpIG92ZXJyaWRlOwogICAgIHZvaWQg
aW5pdGlhbGl6ZUNhcGFiaWxpdGllcyhSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVzJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBpbml0aWFsaXplU3VwcG9ydGVkQ29uc3RyYWludHMoUmVhbHRp
bWVNZWRpYVNvdXJjZVN1cHBvcnRlZENvbnN0cmFpbnRzJikgb3ZlcnJpZGU7CisKKyAgICB2b2lk
IHRpY2soKTsKKworICAgIFJ1bkxvb3A6OlRpbWVyPE1vY2tSZWFsdGltZUF1ZGlvU291cmNlPiBt
X3RpbWVyOworICAgIGRvdWJsZSBtX3N0YXJ0VGltZSB7IE5BTiB9OworICAgIGRvdWJsZSBtX2xh
c3RSZW5kZXJUaW1lIHsgTkFOIH07CisgICAgZG91YmxlIG1fZWxhcHNlZFRpbWUgeyAwIH07CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RS
RUFNKQotCi0jZW5kaWYgLy8gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaApJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjEwNjMxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMTctMDEtMTIgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgW01lZGlhU3RyZWFtLCBNYWNdIEFkZCBtb2NrIGF1ZGlvIHNv
dXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2
OTc0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3
ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbDoKKwogMjAxNy0wMS0x
MiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0VG
TF0gU2Vjb25kIHVwZGF0ZSBUZXN0RXhwZWN0YXRpb24gZmlsZSBmb3IgVWJ1bnR1IDE2LjA0LgpJ
bmRleDogTGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFt
YXVkaW9zb3VyY2Vub2RlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjEwNjMxKQorKysgTGF5b3V0
VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0zLDE0ICszLDE1IEBAIEJhc2ljIHRlc3RzIGZvciBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm8KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogUEFTUyB7YXVkaW86
dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbQotUEFTUyBzLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlz
IDEKLVBBU1Mgcy5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAwCitQQVNTIHN0cmVhbS5nZXRB
dWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxl
bmd0aCBpcyAwCiBQQVNTIFNvdXJjZSBBdWRpb05vZGUgaGFzIG5vIGlucHV0cy4KIFBBU1MgU291
cmNlIEF1ZGlvTm9kZSBoYXMgb25lIG91dHB1dC4KLVBBU1MgY29ubmVjdCgpIGV4Y2VwdGlvbiB0
aHJvd24gZm9yIGlsbGVnYWwgZGVzdGluYXRpb24gQXVkaW9Ob2RlLgotUEFTUyBjb25uZWN0KCkg
ZXhjZXB0aW9uIHRocm93biBmb3IgaWxsZWdhbCBvdXRwdXQgaW5kZXguCi1QQVNTIGNvbm5lY3Qo
KSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxlZ2FsIGlucHV0IGluZGV4LgorUEFTUyBjb25uZWN0
KCkgZXhjZXB0aW9uIHsiVHlwZUVycm9yIiwgIkFyZ3VtZW50IDEgKCdkZXN0aW5hdGlvbicpIHRv
IEF1ZGlvTm9kZS5jb25uZWN0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgQXVkaW9Ob2RlIn0gdGhy
b3duIGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZQorUEFTUyBjb25uZWN0KCkgZXhj
ZXB0aW9uIHsiSW5kZXhTaXplRXJyb3IiLCAiVGhlIGluZGV4IGlzIG5vdCBpbiB0aGUgYWxsb3dl
ZCByYW5nZS4ifSB0aHJvd24gZm9yIGlsbGVnYWwgb3V0cHV0IGluZGV4CitQQVNTIGNvbm5lY3Qo
KSBleGNlcHRpb24geyJJbmRleFNpemVFcnJvciIsICJUaGUgaW5kZXggaXMgbm90IGluIHRoZSBh
bGxvd2VkIHJhbmdlLiJ9IHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleAogUEFTUyBtZWRp
YVN0cmVhbVNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pIHN1Y2NlZWRlZC4KK1BB
U1Mgb25hdWRpb3Byb2Nlc3Mgd2FzIGNhbGxlZAogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCkluZGV4OiBMYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0
cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3dlYmF1
ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWwJKHJldmlzaW9uIDIxMDYzMSkKKysr
IExheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWwJKHdv
cmtpbmcgY29weSkKQEAgLTEsOTYgKzEsMTE0IEBACiA8IURPQ1RZUEUgaHRtbD4KLQogPGh0bWw+
Ci08aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgotPHNjcmlwdCBzcmM9InJlc291cmNlcy9hdWRpby10ZXN0aW5nLmpzIj48L3NjcmlwdD4K
LTwvaGVhZD4KLQotPGJvZHk+Ci08ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+Ci08ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KLQotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJCYXNpYyB0ZXN0cyBm
b3IgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUgQVBJLiIpOwotCi12YXIgY29udGV4dCA9IDA7
Ci0KLWZ1bmN0aW9uIGVycm9yKCkgewotICAgIHRlc3RGYWlsZWQoJ1N0cmVhbSBnZW5lcmF0aW9u
IGZhaWxlZC4nKTsKLSAgICBmaW5pc2hKU1Rlc3QoKTsKLX0KLQotZnVuY3Rpb24gZ2V0VXNlck1l
ZGlhKGRpY3Rpb25hcnksIGNhbGxiYWNrKSB7Ci0gICAgdHJ5IHsKLSAgICAgICAgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaywgZXJyb3IpOwotICAgIH0g
Y2F0Y2ggKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgnd2Via2l0R2V0VXNlck1lZGlhIHRocmV3
IGV4Y2VwdGlvbiA6JyArIGUpOwotICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKLSAgICB9Ci19Ci0K
LWZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pIHsKLSAgICBzID0gc3RyZWFtOwotICAgIHRlc3RQ
YXNzZWQoJ3thdWRpbzp0cnVlfSBnZW5lcmF0ZWQgc3RyZWFtJyk7Ci0gICAgc2hvdWxkQmUoJ3Mu
Z2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwotICAgIHNob3VsZEJlKCdzLmdldFZpZGVv
VHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKLQotICAgIGNvbnRleHQgPSBuZXcgd2Via2l0QXVkaW9D
b250ZXh0KCk7Ci0KLSAgICAvLyBDcmVhdGUgYW4gQXVkaW9Ob2RlIGZyb20gdGhlIHN0cmVhbS4K
LSAgICB2YXIgbWVkaWFTdHJlYW1Tb3VyY2UgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291
cmNlKHN0cmVhbSk7Ci0KLSAgICAvLyBDaGVjayBudW1iZXIgb2YgaW5wdXRzIGFuZCBvdXRwdXRz
LgotICAgIGlmIChtZWRpYVN0cmVhbVNvdXJjZS5udW1iZXJPZklucHV0cyA9PSAwKQotICAgICAg
ICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2RlIGhhcyBubyBpbnB1dHMuIik7Ci0gICAgZWxz
ZQotICAgICAgICB0ZXN0RmFpbGVkKCJTb3VyY2UgQXVkaW9Ob2RlIHNob3VsZCBub3QgaGF2ZSBp
bnB1dHMuIik7Ci0KLSAgICBpZiAobWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZPdXRwdXRzID09
IDEpCi0gICAgICAgIHRlc3RQYXNzZWQoIlNvdXJjZSBBdWRpb05vZGUgaGFzIG9uZSBvdXRwdXQu
Iik7Ci0gICAgZWxzZQotICAgICAgICB0ZXN0RmFpbGVkKCJTb3VyY2UgQXVkaW9Ob2RlIHNob3Vs
ZCBoYXZlIG9uZSBvdXRwdXQuIik7Ci0KLSAgICAvLyBUcnkgY2FsbGluZyBjb25uZWN0KCkgbWV0
aG9kIHdpdGggaWxsZWdhbCB2YWx1ZXMuCi0KLSAgICB0cnkgewotICAgICAgICBtZWRpYVN0cmVh
bVNvdXJjZS5jb25uZWN0KDAsIDAsIDApOwotICAgICAgICB0ZXN0RmFpbGVkKCJjb25uZWN0KCkg
ZXhjZXB0aW9uIHNob3VsZCBiZSB0aHJvd24gZm9yIGlsbGVnYWwgZGVzdGluYXRpb24gQXVkaW9O
b2RlLiIpOwotICAgIH0gY2F0Y2goZSkgewotICAgICAgICB0ZXN0UGFzc2VkKCJjb25uZWN0KCkg
ZXhjZXB0aW9uIHRocm93biBmb3IgaWxsZWdhbCBkZXN0aW5hdGlvbiBBdWRpb05vZGUuIik7Ci0g
ICAgfQotCi0gICAgdHJ5IHsKLSAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250
ZXh0LmRlc3RpbmF0aW9uLCA1LCAwKTsKLSAgICAgICAgdGVzdEZhaWxlZCgiY29ubmVjdCgpIGV4
Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleC4iKTsKLSAg
ICB9IGNhdGNoKGUpIHsKLSAgICAgICAgdGVzdFBhc3NlZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiB0
aHJvd24gZm9yIGlsbGVnYWwgb3V0cHV0IGluZGV4LiIpOwotICAgIH0KLQotICAgIHRyeSB7Ci0g
ICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiwgMCwg
NSk7Ci0gICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRo
cm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleC4iKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAg
ICAgdGVzdFBhc3NlZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiB0aHJvd24gZm9yIGlsbGVnYWwgaW5w
dXQgaW5kZXguIik7Ci0gICAgfQotCi0gICAgLy8gVHJ5IGNhbGxpbmcgY29ubmVjdCgpIHdpdGgg
cHJvcGVyIHZhbHVlcy4KLSAgICB0cnkgewotICAgICAgICBtZWRpYVN0cmVhbVNvdXJjZS5jb25u
ZWN0KGNvbnRleHQuZGVzdGluYXRpb24sIDAsIDApOwotICAgICAgICB0ZXN0UGFzc2VkKCJtZWRp
YVN0cmVhbVNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24pIHN1Y2NlZWRlZC4iKTsK
LSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgdGVzdEZhaWxlZCgibWVkaWFTdHJlYW1Tb3VyY2Uu
Y29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBmYWlsZWQuIik7Ci0gICAgfQotCi0gICAgZmlu
aXNoSlNUZXN0KCk7Ci19Ci0KLWdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdvdFN0cmVhbSk7
Ci13aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7Ci13aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2Vk
ID0gdHJ1ZTsKLQotPC9zY3JpcHQ+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorICAgIDwvaGVhZD4KKworICAg
IDxib2R5PgorICAgICAgICA8ZGl2IGlkPSJkZXNjcmlwdGlvbiI+PC9kaXY+CisgICAgICAgIDxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorCisgICAgICAgIDxzY3JpcHQ+CisgICAgICAgICAgICBk
ZXNjcmlwdGlvbigiQmFzaWMgdGVzdHMgZm9yIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIEFQ
SS4iKTsKKworICAgICAgICAgICAgbGV0IGNvbnRleHQ7CisgICAgICAgICAgICBsZXQgc3RyZWFt
OworICAgICAgICAgICAgbGV0IGZpbmlzaGVkID0gZmFsc2U7CisgICAgICAgICAgICBjb25zdCBu
dW1iZXJPZk91dHB1dENoYW5uZWxzID0gMjsKKyAgICAgICAgICAgIGNvbnN0IG51bWJlck9mSW5w
dXRDaGFubmVscyA9IDI7CisgICAgICAgICAgICBjb25zdCBidWZmZXJTaXplID0gNTEyOworCisg
ICAgICAgICAgICBmdW5jdGlvbiBwcm9jZXNzQXVkaW9EYXRhKGV2ZW50KSAKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBpZiAoZmluaXNoZWQpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAgICAgICAgIGlmIChldmVudC5pbnB1dEJ1ZmZlci5udW1iZXJPZkNo
YW5uZWxzICE9IG51bWJlck9mSW5wdXRDaGFubmVscykKKyAgICAgICAgICAgICAgICAgICAgdGVz
dEZhaWxlZChgbnVtYmVyT2ZJbnB1dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2g6IGhhdmUgJHtldmVu
dC5pbnB1dEJ1ZmZlci5udW1iZXJPZkNoYW5uZWxzfSwgZXhwZWN0ICR7bnVtYmVyT2ZJbnB1dENo
YW5uZWxzfSFgKTsKKworICAgICAgICAgICAgICAgIGlmIChldmVudC5vdXRwdXRCdWZmZXIubnVt
YmVyT2ZDaGFubmVscyAhPSBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKGBudW1iZXJPZk91dHB1dENoYW5uZWxzIGRvZXNuJ3QgbWF0Y2g6IGhh
dmUgJHtldmVudC5vdXRwdXRCdWZmZXIubnVtYmVyT2ZDaGFubmVsc30sIGV4cGVjdCAke251bWJl
ck9mT3V0cHV0Q2hhbm5lbHN9IWApOworCisgICAgICAgICAgICAgICAgc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKClbMF0uc3RvcCgpOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIm9uYXVkaW9w
cm9jZXNzIHdhcyBjYWxsZWQiKTsKKyAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIGdvdFN0cmVhbShzKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHN0cmVhbSA9IHM7CisgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgne2F1ZGlvOnRydWV9IGdl
bmVyYXRlZCBzdHJlYW0nKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1
ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICAgICAgICAgICAgICBzaG91bGRCZSgnc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKKworICAgICAgICAgICAgICAgIGNv
bnRleHQgPSBuZXcgd2Via2l0QXVkaW9Db250ZXh0KCk7CisKKyAgICAgICAgICAgICAgICAvLyBD
cmVhdGUgYW4gQXVkaW9Ob2RlIGZyb20gdGhlIHN0cmVhbS4KKyAgICAgICAgICAgICAgICBsZXQg
bWVkaWFTdHJlYW1Tb3VyY2UgPSBjb250ZXh0LmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKHN0cmVh
bSk7CisKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBudW1iZXIgb2YgaW5wdXRzIGFuZCBvdXRw
dXRzLgorICAgICAgICAgICAgICAgIGlmIChtZWRpYVN0cmVhbVNvdXJjZS5udW1iZXJPZklucHV0
cyA9PSAwKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2Rl
IGhhcyBubyBpbnB1dHMuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICB0ZXN0RmFpbGVkKCJTb3VyY2UgQXVkaW9Ob2RlIHNob3VsZCBub3QgaGF2ZSBpbnB1dHMu
Iik7CisKKyAgICAgICAgICAgICAgICBpZiAobWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZPdXRw
dXRzID09IDEpCisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoIlNvdXJjZSBBdWRpb05v
ZGUgaGFzIG9uZSBvdXRwdXQuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICB0ZXN0RmFpbGVkKCJTb3VyY2UgQXVkaW9Ob2RlIHNob3VsZCBoYXZlIG9uZSBvdXRw
dXQuIik7CisKKyAgICAgICAgICAgICAgICAvLyBUcnkgY2FsbGluZyBjb25uZWN0KCkgbWV0aG9k
IHdpdGggaWxsZWdhbCB2YWx1ZXMuCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
ICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdCgwLCAwLCAwKTsKKyAgICAgICAgICAg
ICAgICAgICAgdGVzdEZhaWxlZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3du
IGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4iKTsKKyAgICAgICAgICAgICAgICB9
IGNhdGNoKGVycikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGBjb25uZWN0KCkg
ZXhjZXB0aW9uIHsiJHtlcnIubmFtZX0iLCAiJHtlcnIubWVzc2FnZX0ifSB0aHJvd24gZm9yIGls
bGVnYWwgZGVzdGluYXRpb24gQXVkaW9Ob2RlYCk7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2Uu
Y29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uLCA1LCAwKTsKKyAgICAgICAgICAgICAgICAgICAg
dGVzdEZhaWxlZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBpbGxl
Z2FsIG91dHB1dCBpbmRleC4iKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoKGVycikgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKGBjb25uZWN0KCkgZXhjZXB0aW9uIHsiJHtlcnIu
bmFtZX0iLCAiJHtlcnIubWVzc2FnZX0ifSB0aHJvd24gZm9yIGlsbGVnYWwgb3V0cHV0IGluZGV4
YCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9u
LCAwLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiY29ubmVjdCgpIGV4Y2Vw
dGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBpbGxlZ2FsIGlucHV0IGluZGV4LiIpOworICAgICAg
ICAgICAgICAgIH0gY2F0Y2goZXJyKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQo
YGNvbm5lY3QoKSBleGNlcHRpb24geyIke2Vyci5uYW1lfSIsICIke2Vyci5tZXNzYWdlfSJ9IHRo
cm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleGApOworICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIC8vIFRyeSBjYWxsaW5nIGNvbm5lY3QoKSB3aXRoIGxlZ2FsIHZhbHVlcy4K
KyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbVNv
dXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGluYXRpb24sIDAsIDApOworICAgICAgICAgICAgICAg
ICAgICB0ZXN0UGFzc2VkKCJtZWRpYVN0cmVhbVNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVzdGlu
YXRpb24pIHN1Y2NlZWRlZC4iKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoKGVycikgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBtZWRpYVN0cmVhbVNvdXJjZS5jb25uZWN0KGNv
bnRleHQuZGVzdGluYXRpb24pIGZhaWxlZCB3aXRoICIke2Vyci5uYW1lfSI6ICIke2Vyci5tZXNz
YWdlfSJgKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBsZXQgc2NyaXB0
UHJvY2Vzc29yTm9kZSA9IGNvbnRleHQuY3JlYXRlU2NyaXB0UHJvY2Vzc29yKGJ1ZmZlclNpemUs
IG51bWJlck9mSW5wdXRDaGFubmVscywgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyk7CisgICAgICAg
ICAgICAgICAgc2NyaXB0UHJvY2Vzc29yTm9kZS5vbmF1ZGlvcHJvY2VzcyA9IHByb2Nlc3NBdWRp
b0RhdGE7CisKKyAgICAgICAgICAgICAgICBtZWRpYVN0cmVhbVNvdXJjZS5jb25uZWN0KHNjcmlw
dFByb2Nlc3Nvck5vZGUpOworICAgICAgICAgICAgICAgIHNjcmlwdFByb2Nlc3Nvck5vZGUuY29u
bmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuc2V0VXNl
ck1lZGlhUGVybWlzc2lvbih0cnVlKTsKKworICAgICAgICAgICAgbmF2aWdhdG9yLm1lZGlhRGV2
aWNlcy5nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9KQorICAgICAgICAgICAgICAgIC50aGVuKHN0
cmVhbSA9PiBnb3RTdHJlYW0oc3RyZWFtKSkKKyAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rp
b24oZXJyKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoYG1lZGlhRGV2aWNlcy5n
ZXRVc2VyTWVkaWEoKSBmYWlsZWQgd2l0aCAiJHtlcnIubmFtZX0iOiAiJHtlcnIubWVzc2FnZX0i
YCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEpTVGVzdCgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICB3aW5kb3cuanNUZXN0SXNBc3luYyA9IHRydWU7CisgICAgICAg
ICAgICB3aW5kb3cuc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKyAgICAgICAgPC9zY3JpcHQ+
CisgICAgICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIAotPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgotPC9ib2R5PgorICAgIDwvYm9keT4KIDwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>298746</attachid>
            <date>2017-01-12 18:46:56 -0800</date>
            <delta_ts>2017-01-13 13:28:36 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>mock_audio_source_patch_12.txt</filename>
            <type>text/plain</type>
            <size>52831</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMDY4NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYzIEBACisyMDE3LTAxLTEyICBFcmljIENh
cmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSwg
TWFjXSBBZGQgbW9jayBhdWRpbyBzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2Njk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgQWRkIGEgbW9jayBhdWRpbyBzb3VyY2UgZm9yIHRl
c3RpbmcgbWVkaWEgc3RyZWFtcy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIHVwZGF0ZWQgd2Vi
YXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbC4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMu
bW06CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9i
akM6OmVucXVldWVBdWRpb1NhbXBsZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclBy
aXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVWaWRlb1NhbXBsZSk6CisKKyAgICAgICAg
KiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlcjo6fk9ic2VydmVyKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BVkF1ZGlvQ2Fw
dHVyZVNvdXJjZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkFWQXVkaW9DYXB0dXJlU291cmNlOjph
ZGRPYnNlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6cmVt
b3ZlT2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6QVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KToKKworICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9Nb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW06IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMpOgor
ICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVkKToK
KyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjphZGRPYnNlcnZl
cik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVtb3Zl
T2JzZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6
OnN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjOjpl
bWl0U2FtcGxlQnVmZmVycyk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRpb1Nv
dXJjZU1hYzo6cmVjb25maWd1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVk
aW9Tb3VyY2VNYWM6OnJlbmRlcik6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRpbWVBdWRp
b1NvdXJjZU1hYzo6YXBwbHlTYW1wbGVSYXRlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFs
dGltZUF1ZGlvU291cmNlTWFjOjphdWRpb1NvdXJjZVByb3ZpZGVyKToKKworICAgICAgICAqIHBs
YXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oOgor
ICAgICAgICAqIHBsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZP
YmpDOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakM6OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKToKKyAgICAgICAgKFdlYkNvcmU6
OldlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6
OnByb3ZpZGVJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQzo6c2V0Q2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzdGFydFByb2R1Y2luZ0RhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnN0b3BQcm9kdWNpbmdEYXRhKTog
RGVsZXRlZC4KKworICAgICAgICAqIHBsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6Ok1vY2tS
ZWFsdGltZUF1ZGlvU291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1ZGlv
U291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6TW9ja1JlYWx0
aW1lQXVkaW9Tb3VyY2U6OnN0b3BQcm9kdWNpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Ok1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlOjplbGFwc2VkVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6dGljayk6CisKKyAgICAgICAgKiBwbGF0Zm9ybS9tb2Nr
L01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6cmVuZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok1vY2tSZWFsdGltZUF1
ZGlvU291cmNlOjpyZW5kZXJJbnRlcnZhbCk6CisgICAgICAgIChXZWJDb3JlOjpNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZTo6fk1vY2tSZWFsdGltZUF1ZGlvU291cmNlKTogRGVsZXRlZC4KKwogMjAx
Ny0wMS0xMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVH
UkVTU0lPTiAocjIwOTk3Nyk6IENyYXNoIGluIFVuaXF1ZUlEQkRhdGFiYXNlOjpleGVjdXRlTmV4
dERhdGFiYXNlVGFzay4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTQ2
LDYgKzE0Niw3IEBACiAJCTA3M0JFMzQxMTdEMTdFMDEwMDJCRDQzMSAvKiBKU05hdmlnYXRvclVz
ZXJNZWRpYS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDczQkUzM0YxN0QxN0UwMTAwMkJENDMxIC8qIEpTTmF2aWdhdG9yVXNlck1lZGlhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDczQkUzNEUxN0Qx
ODBCMjAwMkJENDMxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDcyMjFCQUIxN0NGMEFE
NDAwODQ4RTUxIC8qIFJUQ1Nlc3Npb25EZXNjcmlwdGlvbkRlc2NyaXB0b3IuY3BwICovOyB9Owog
CQkwNzNCRTM0RjE3RDE4MTgzMDAyQkQ0MzEgLyogUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzIyMUJB
NjE3Q0YwQUQ0MDA4NDhFNTEgLyogUlRDSWNlQ2FuZGlkYXRlRGVzY3JpcHRvci5jcHAgKi87IH07
CisJCTA3NDRFQ0VEMUUwQzRFMzAwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NDRF
Q0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLzsg
fTsKIAkJMDc0RTgyQkExOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzRFODJCODE4
QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNwcCAqLzsgfTsKIAkJMDc0RTgy
QkIxOEE2OUYwRTAwN0VGNTRDIC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc0RTgyQjkxOEE2OUYwRTAwN0VGNTRD
IC8qIFBsYXRmb3JtVGltZVJhbmdlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTA3NTM4NjAyMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0
VHJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc1Mzg2MDAxNDQ4OUU5ODAwQjc4NDUyIC8qIENhY2hlZFRleHRUcmFjay5jcHAgKi87IH07CkBA
IC0xNTUsNiArMTU2LDcgQEAKIAkJMDc2OTcwODYxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFj
a0xpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2OTcwODQxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuY3BwICovOyB9OwogCQkw
NzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNG
IC8qIFRleHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8q
IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OworCQkwNzcwN0NCMDFFMjA1RUUzMDAw
MDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAvKiBBdWRp
b1NvdXJjZU9ic2VydmVyT2JqQy5oICovOyB9OwogCQkwNzc2NjRGQzE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQTE4M0U2QjVDMDAxMzNCOTIgLyogSlNR
dWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5jcHAgKi87IH07CiAJCTA3NzY2NEZEMTgzRTZCNUMw
MDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oICovOyB9OwogCQkwNzc5QkYwRDE4NDUz
MTY4MDAwQjZBRTcgLyogSFRNTE1lZGlhRWxlbWVudE1lZGlhU3RyZWFtLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzlCRjBBMTg0NTMxNjgwMDBC
NkFFNyAvKiBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwICovOyB9OwpAQCAtNzE2Myw2
ICs3MTY1LDggQEAKIAkJMDczOTRFQzkxQkFCMkNENzAwQkU5OUNEIC8qIE1lZGlhRGV2aWNlc1Jl
cXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFEZXZpY2VzUmVx
dWVzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzNCRTMzRTE3RDE3RTAxMDAy
QkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2VyTWVkaWEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwNzNCRTMzRjE3RDE3RTAxMDAyQkQ0MzEgLyogSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOYXZpZ2F0b3JVc2Vy
TWVkaWEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc0NEVDRUIxRTBDNEFFNTAw
MEQwOTQ0IC8qIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTA3NDRFQ0VDMUUwQzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwNzRFODJCODE4QTY5RjBFMDA3RUY1NEMgLyogUGxhdGZvcm1UaW1lUmFuZ2VzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBsYXRmb3JtVGltZVJhbmdl
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NEU4MkI5MThBNjlGMEUwMDdF
RjU0QyAvKiBQbGF0Zm9ybVRpbWVSYW5nZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1UaW1lUmFuZ2VzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTA3NTM4NjAwMTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2FjaGVkVGV4dFRyYWNrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTcxNzMsNiArNzE3Nyw4IEBACiAJCTA3Njk3MDg1MTQ2
M0FEODcwMEY1MDJDRiAvKiBUZXh0VHJhY2tMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRleHRUcmFja0xpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MDc2RjBEMDkxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzZG
MEQwQTEyQjgxOTI3MDBDMjZBQTQgLyogTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzcwN0NBRjFFMjA1RUM0
MDAwMDVCRjcgLyogQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQXVkaW9Tb3VyY2VPYnNlcnZlck9iakMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVyZVNv
dXJjZVByb3ZpZGVyT2JqQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBdWRp
b0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1RpbWVQ
bHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NzY2
NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3OUJGMEExODQ1MzE2ODAwMEI2
QUU3IC8qIEhUTUxNZWRpYUVsZW1lbnRNZWRpYVN0cmVhbS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTWVkaWFFbGVtZW50TWVkaWFTdHJlYW0uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUyMzMsNiArMTUyMzksMTAgQEAKIAkJMDcyOUIx
NEQxN0NGQ0NBMDAwNEYxRDYwIC8qIG1hYyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMDc3MDdDQjExRTIwNjQ5QzAwMDA1QkY3IC8qIEF1ZGlvQ2FwdHVy
ZVNvdXJjZVByb3ZpZGVyT2JqQy5oICovLAorCQkJCTA3NzA3Q0FGMUUyMDVFQzQwMDAwNUJGNyAv
KiBBdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oICovLAorCQkJCTA3NDRFQ0VCMUUwQzRBRTUwMDBE
MDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5oICovLAorCQkJCTA3NDRFQ0VDMUUw
QzRBRTUwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbSAqLywKIAkJCQkw
NzAzNjNEODE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UuaCAqLywKIAkJ
CQkwNzAzNjNEOTE4MUExQ0RDMDBDMDc0QTUgLyogQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0gKi8s
CiAJCQkJMDcwMzYzREExODFBMUNEQzAwQzA3NEE1IC8qIEFWQ2FwdHVyZURldmljZU1hbmFnZXIu
aCAqLywKQEAgLTI1OTUyLDYgKzI1OTYyLDcgQEAKIAkJCQk1MTg1RkNBRDFCQjRDNEU4MDAxMjg5
OEYgLyogSURCVHJhbnNhY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTUxOThGN0FEMUJCREQz
RUIwMEUyQ0M1RiAvKiBJREJUcmFuc2FjdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTgz
OEVGNTM4MURDMTQ5RTIwMDhGMEMzOSAvKiBJREJUcmFuc2FjdGlvbk1vZGUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTA3NzA3Q0IwMUUyMDVFRTMwMDAwNUJGNyAvKiBBdWRpb1NvdXJjZU9ic2VydmVy
T2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE2MTAzQUYxQ0FEQkE3NzAwMTZCNEM3IC8qIElE
QlZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTg1RkNCMDFCQjRDNEU4MDAxMjg5OEYgLyog
SURCVmVyc2lvbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNEE4MTRFMDFDNzMz
OEVCMDBCRjg1QUMgLyogSWRDaGFuZ2VJbnZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLApAQCAt
MzAzNzYsNiArMzAzODcsNyBAQAogCQkJCUIyRkEzREM4MEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NW
R1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljUmVsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEz
RENBMEFCNzVBNkYwMDBFNUFDNCAvKiBKU1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3Ro
QWJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyRkEzRENDMEFCNzVBNkYwMDBFNUFDNCAvKiBK
U1NWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoUmVsLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTA3NDRFQ0VEMUUwQzRFMzAwMDBEMDk0NCAvKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1h
Yy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUIyQzk2RDhEMEIzQUYyQjcwMDVFODBFQyAvKiBKU1NW
R1BhdGhTZWdDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjJGQTNEQ0UwQUI3NUE2RjAw
MEU1QUM0IC8qIEpTU1ZHUGF0aFNlZ0xpbmV0b0Ficy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
MkZBM0REMDBBQjc1QTZGMDAwRTVBQzQgLyogSlNTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbEFi
cy5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2Jq
Qy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakMubW0JKHJl
dmlzaW9uIDIxMDYzMSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91
bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQy5tbQkod29y
a2luZyBjb3B5KQpAQCAtMzIwLDcgKzMyMCw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlTWVk
aWFTdHJlYW1BVkZPYmoKICAgICBpZiAodGltZWxpbmVPZmZzZXQgPT0gTWVkaWFUaW1lOjppbnZh
bGlkVGltZSgpKSB7CiAgICAgICAgIHRpbWVsaW5lT2Zmc2V0ID0gY2FsY3VsYXRlVGltZWxpbmVP
ZmZzZXQoc2FtcGxlLCByZW5kZXJlckxhdGVuY3kpOwogICAgICAgICBhdWRpb1RyYWNrLT5zZXRU
aW1lbGluZU9mZnNldCh0aW1lbGluZU9mZnNldCk7Ci0gICAgICAgIExPRyhNZWRpYUNhcHR1cmVT
YW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVk
aW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICglbGxkLyVkKSIs
IHRyYWNrLmlkKCkudXRmOCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudGltZVZhbHVlKCksIHRp
bWVsaW5lT2Zmc2V0LnRpbWVTY2FsZSgpKTsKKyAgICAgICAgTE9HKE1lZGlhQ2FwdHVyZVNhbXBs
ZXMsICJNZWRpYVBsYXllclByaXZhdGVNZWRpYVN0cmVhbUFWRk9iakM6OmVucXVldWVBdWRpb1Nh
bXBsZTogdGltZWxpbmUgb2Zmc2V0IGZvciB0cmFjayAlcyBzZXQgdG8gJXMiLCB0cmFjay5pZCgp
LnV0ZjgoKS5kYXRhKCksIHRvU3RyaW5nKHRpbWVsaW5lT2Zmc2V0KS51dGY4KCkuZGF0YSgpKTsK
ICAgICB9CiAKICAgICB1cGRhdGVTYW1wbGVUaW1lcyhzYW1wbGUsIHRpbWVsaW5lT2Zmc2V0LCAi
TWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjplbnF1ZXVlQXVkaW9TYW1wbGUi
KTsKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFt
QVZGT2JqCiAgICAgaWYgKHRpbWVsaW5lT2Zmc2V0ID09IE1lZGlhVGltZTo6aW52YWxpZFRpbWUo
KSkgewogICAgICAgICB0aW1lbGluZU9mZnNldCA9IGNhbGN1bGF0ZVRpbWVsaW5lT2Zmc2V0KHNh
bXBsZSwgcmVuZGVyZXJMYXRlbmN5KTsKICAgICAgICAgdmlkZW9UcmFjay0+c2V0VGltZWxpbmVP
ZmZzZXQodGltZWxpbmVPZmZzZXQpOwotICAgICAgICBMT0coTWVkaWFDYXB0dXJlU2FtcGxlcywg
Ik1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1ZVZpZGVvU2FtcGxl
OiB0aW1lbGluZSBvZmZzZXQgZm9yIHRyYWNrICVzIHNldCB0byAlZiIsIHRyYWNrLmlkKCkudXRm
OCgpLmRhdGEoKSwgdGltZWxpbmVPZmZzZXQudG9Eb3VibGUoKSk7CisgICAgICAgIExPRyhNZWRp
YUNhcHR1cmVTYW1wbGVzLCAiTWVkaWFQbGF5ZXJQcml2YXRlTWVkaWFTdHJlYW1BVkZPYmpDOjpl
bnF1ZXVlVmlkZW9TYW1wbGU6IHRpbWVsaW5lIG9mZnNldCBmb3IgdHJhY2sgJXMgc2V0IHRvICVz
IiwgdHJhY2suaWQoKS51dGY4KCkuZGF0YSgpLCB0b1N0cmluZyh0aW1lbGluZU9mZnNldCkudXRm
OCgpLmRhdGEoKSk7CiAgICAgfQogCiAgICAgdXBkYXRlU2FtcGxlVGltZXMoc2FtcGxlLCB0aW1l
bGluZU9mZnNldCwgIk1lZGlhUGxheWVyUHJpdmF0ZU1lZGlhU3RyZWFtQVZGT2JqQzo6ZW5xdWV1
ZVZpZGVvU2FtcGxlIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVh
bS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UuaAkocmV2aXNp
b24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FW
QXVkaW9DYXB0dXJlU291cmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
ZiBFTkFCTEUoTUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQogCiAjaW5jbHVkZSAi
QVZNZWRpYUNhcHR1cmVTb3VyY2UuaCIKKyNpbmNsdWRlICJBdWRpb0NhcHR1cmVTb3VyY2VQcm92
aWRlck9iakMuaCIKICNpbmNsdWRlIDx3dGYvTG9jay5oPgogCiB0eXBlZGVmIHN0cnVjdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uOwpAQCAt
MzgsMjYgKzM5LDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViQXVkaW9Tb3Vy
Y2VQcm92aWRlckFWRk9iakM7CiAKLWNsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVibGlj
IEFWTWVkaWFDYXB0dXJlU291cmNlIHsKK2NsYXNzIEFWQXVkaW9DYXB0dXJlU291cmNlIDogcHVi
bGljIEFWTWVkaWFDYXB0dXJlU291cmNlLCBwdWJsaWMgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlk
ZXJPYmpDIHsKIHB1YmxpYzoKIAotICAgIGNsYXNzIE9ic2VydmVyIHsKLSAgICBwdWJsaWM6Ci0g
ICAgICAgIHZpcnR1YWwgfk9ic2VydmVyKCkgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcmVw
YXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAqKSA9IDA7Ci0gICAgICAgIHZp
cnR1YWwgdm9pZCB1bnByZXBhcmUoKSA9IDA7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNz
KENNRm9ybWF0RGVzY3JpcHRpb25SZWYsIENNU2FtcGxlQnVmZmVyUmVmKSA9IDA7Ci0gICAgfTsK
LQogICAgIHN0YXRpYyBSZWZQdHI8QVZNZWRpYUNhcHR1cmVTb3VyY2U+IGNyZWF0ZShBVkNhcHR1
cmVEZXZpY2UqLCBjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKiwg
U3RyaW5nJik7CiAKLSAgICB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyKik7Ci0gICAgdm9pZCBy
ZW1vdmVPYnNlcnZlcihPYnNlcnZlciopOwotCiBwcml2YXRlOgogICAgIEFWQXVkaW9DYXB0dXJl
U291cmNlKEFWQ2FwdHVyZURldmljZSosIGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIHZpcnR1
YWwgfkFWQXVkaW9DYXB0dXJlU291cmNlKCk7CiAgICAgCisgICAgLy8gQXVkaW9DYXB0dXJlU291
cmNlUHJvdmlkZXJPYmpDCisgICAgdm9pZCBhZGRPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVy
T2JqQyYpIGZpbmFsOworICAgIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMmKSBmaW5hbDsKKyAgICB2b2lkIHN0YXJ0KCkgZmluYWw7CisKICAgICB2b2lkIGluaXRp
YWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNhcGFiaWxpdGllcyYpIG92ZXJy
aWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0cmFpbnRzKFJlYWx0aW1lTWVk
aWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRlOwogCkBAIC03Miw3ICs2Nyw3
IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+
IG1fYXVkaW9Tb3VyY2VQcm92aWRlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9TdHJlYW1C
YXNpY0Rlc2NyaXB0aW9uPiBtX2lucHV0RGVzY3JpcHRpb247Ci0gICAgVmVjdG9yPE9ic2VydmVy
Kj4gbV9vYnNlcnZlcnM7CisgICAgVmVjdG9yPEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDKj4gbV9v
YnNlcnZlcnM7CiAgICAgTG9jayBtX2xvY2s7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0FWQXVkaW9DYXB0
dXJlU291cmNlLm1tCShyZXZpc2lvbiAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tZWRpYXN0cmVhbS9tYWMvQVZBdWRpb0NhcHR1cmVTb3VyY2UubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZP
VU5EQVRJT04pCiAKKyNpbXBvcnQgIkF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDLmgiCiAjaW1wb3J0
ICJMb2dnaW5nLmgiCiAjaW1wb3J0ICJNZWRpYUNvbnN0cmFpbnRzLmgiCiAjaW1wb3J0ICJNZWRp
YVNhbXBsZUFWRk9iakMuaCIKQEAgLTExNSwyMCArMTE2LDIzIEBAIHZvaWQgQVZBdWRpb0NhcHR1
cmVTb3VyY2U6OnVwZGF0ZVNldHRpbmcKICAgICBzZXR0aW5ncy5zZXREZXZpY2VJZChpZCgpKTsK
IH0KIAotdm9pZCBBVkF1ZGlvQ2FwdHVyZVNvdXJjZTo6YWRkT2JzZXJ2ZXIoQVZBdWRpb0NhcHR1
cmVTb3VyY2U6Ok9ic2VydmVyKiBvYnNlcnZlcikKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6
OmFkZE9ic2VydmVyKEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNlcnZlcikKIHsKICAgICBM
b2NrSG9sZGVyIGxvY2sobV9sb2NrKTsKLSAgICBtX29ic2VydmVycy5hcHBlbmQob2JzZXJ2ZXIp
OworICAgIG1fb2JzZXJ2ZXJzLmFwcGVuZCgmb2JzZXJ2ZXIpOwogICAgIGlmIChtX2lucHV0RGVz
Y3JpcHRpb24tPm1TYW1wbGVSYXRlKQotICAgICAgICBvYnNlcnZlci0+cHJlcGFyZShtX2lucHV0
RGVzY3JpcHRpb24uZ2V0KCkpOworICAgICAgICBvYnNlcnZlci5wcmVwYXJlKG1faW5wdXREZXNj
cmlwdGlvbi5nZXQoKSk7CiB9CiAKLXZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnJlbW92ZU9i
c2VydmVyKEFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlciogb2JzZXJ2ZXIpCit2b2lkIEFW
QXVkaW9DYXB0dXJlU291cmNlOjpyZW1vdmVPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVyT2Jq
QyYgb2JzZXJ2ZXIpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrKG1fbG9jayk7Ci0gICAgc2l6ZV90
IHBvcyA9IG1fb2JzZXJ2ZXJzLmZpbmQob2JzZXJ2ZXIpOwotICAgIGlmIChwb3MgIT0gbm90Rm91
bmQpCi0gICAgICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZShwb3MpOworICAgIG1fb2JzZXJ2ZXJzLnJl
bW92ZUZpcnN0KCZvYnNlcnZlcik7Cit9CisKK3ZvaWQgQVZBdWRpb0NhcHR1cmVTb3VyY2U6OnN0
YXJ0KCkKK3sKKyAgICBzdGFydFByb2R1Y2luZ0RhdGEoKTsKIH0KIAogdm9pZCBBVkF1ZGlvQ2Fw
dHVyZVNvdXJjZTo6c2V0dXBDYXB0dXJlU2Vzc2lvbigpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMvQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL0F1
ZGlvQ2FwdHVyZVNvdXJjZVByb3ZpZGVyT2JqQy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRl
ck9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUo
TUVESUFfU1RSRUFNKSAmJiBVU0UoQVZGT1VOREFUSU9OKQorCit0eXBlZGVmIHN0cnVjdCBBdWRp
b1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uOwordHlw
ZWRlZiBjb25zdCBzdHJ1Y3Qgb3BhcXVlQ01Gb3JtYXREZXNjcmlwdGlvbiAqQ01Gb3JtYXREZXNj
cmlwdGlvblJlZjsKK3R5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVmZmVyICpDTVNhbXBs
ZUJ1ZmZlclJlZjsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBdWRpb1NvdXJjZU9i
c2VydmVyT2JqQzsKKworY2xhc3MgQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKK3B1
YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMoKSA9IGRl
ZmF1bHQ7CisKKyAgICB2aXJ0dWFsIHZvaWQgYWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VPYnNlcnZl
ck9iakMmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgPSAwOworCisgICAgdmlydHVhbCB2b2lkIHN0YXJ0KCkgPSAwOworfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVB
TSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1Nv
dXJjZU9ic2VydmVyT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21lZGlhc3RyZWFtL21hYy9BdWRpb1NvdXJjZU9ic2VydmVyT2JqQy5oCShub25leGlzdGVudCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9BdWRpb1NvdXJjZU9i
c2VydmVyT2JqQy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVO
QUJMRShNRURJQV9TVFJFQU0pICYmIFVTRShBVkZPVU5EQVRJT04pCisKK3R5cGVkZWYgc3RydWN0
IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb247
Cit0eXBlZGVmIGNvbnN0IHN0cnVjdCBvcGFxdWVDTUZvcm1hdERlc2NyaXB0aW9uICpDTUZvcm1h
dERlc2NyaXB0aW9uUmVmOwordHlwZWRlZiBzdHJ1Y3Qgb3BhcXVlQ01TYW1wbGVCdWZmZXIgKkNN
U2FtcGxlQnVmZmVyUmVmOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF1ZGlvU291
cmNlT2JzZXJ2ZXJPYmpDIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5BdWRpb1NvdXJjZU9ic2Vy
dmVyT2JqQygpID0gZGVmYXVsdDsKKworICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlKGNvbnN0IEF1
ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdW5wcmVw
YXJlKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzKENNRm9ybWF0RGVzY3JpcHRpb25S
ZWYsIENNU2FtcGxlQnVmZmVyUmVmKSA9IDA7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tS
ZWFsdGltZUF1ZGlvU291cmNlTWFjLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
IE5laXRoZXIgdGhlIG5hbWUgb2YgRXJpY3Nzb24gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJp
YnV0b3JzCisgKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tIHRoaXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFC
TEUoTUVESUFfU1RSRUFNKQorCisjaW5jbHVkZSAiQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJP
YmpDLmgiCisjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKKyNpbmNsdWRlICJNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZS5oIgorI2luY2x1ZGUgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgorCitP
QkpDX0NMQVNTIEFWQXVkaW9QQ01CdWZmZXI7Cit0eXBlZGVmIHN0cnVjdCBBdWRpb0J1ZmZlckxp
c3QgQXVkaW9CdWZmZXJMaXN0OwordHlwZWRlZiBzdHJ1Y3QgT3BhcXVlQ01DbG9jayogQ01DbG9j
a1JlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0IG9wYXF1ZUNNRm9ybWF0RGVzY3JpcHRpb24qIENN
Rm9ybWF0RGVzY3JpcHRpb25SZWY7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV2Vi
QXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM7CisKK2NsYXNzIE1vY2tSZWFsdGltZUF1ZGlvU291
cmNlTWFjIGZpbmFsIDogcHVibGljIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlLCBwdWJsaWMgQXVk
aW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDIHsKK3B1YmxpYzoKKworICAgIC8vIEF1ZGlvQ2Fw
dHVyZVNvdXJjZVByb3ZpZGVyT2JqQworICAgIHZvaWQgYWRkT2JzZXJ2ZXIoQXVkaW9Tb3VyY2VP
YnNlcnZlck9iakMmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZU9ic2VydmVyKEF1ZGlvU291cmNl
T2JzZXJ2ZXJPYmpDJikgZmluYWw7CisgICAgdm9pZCBzdGFydCgpIGZpbmFsOworCitwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTsKKyAgICBNb2NrUmVh
bHRpbWVBdWRpb1NvdXJjZU1hYyhjb25zdCBTdHJpbmcmKTsKKworICAgIGJvb2wgYXBwbHlTYW1w
bGVSYXRlKGludCkgZmluYWw7CisgICAgYm9vbCBhcHBseVNhbXBsZVNpemUoaW50KSBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9pZCBlbWl0U2FtcGxlQnVmZmVycyh1aW50MzJfdCk7
CisgICAgdm9pZCByZW5kZXIoZG91YmxlKSBmaW5hbDsKKyAgICB2b2lkIHJlY29uZmlndXJlKCk7
CisKKyAgICBBdWRpb1NvdXJjZVByb3ZpZGVyKiBhdWRpb1NvdXJjZVByb3ZpZGVyKCkgZmluYWw7
CisKKyAgICBzaXplX3QgbV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplIHsgMCB9OworICAgIHN0
ZDo6dW5pcXVlX3B0cjxBdWRpb0J1ZmZlckxpc3Q+IG1fYXVkaW9CdWZmZXJMaXN0OworCisgICAg
dWludDMyX3QgbV9tYXhpbWl1bUZyYW1lQ291bnQ7CisgICAgdWludDMyX3QgbV9zYW1wbGVSYXRl
IHsgNDQxMDAgfTsKKyAgICBkb3VibGUgbV9ieXRlc1BlckZyYW1lIHsgc2l6ZW9mKEZsb2F0MzIp
IH07CisKKyAgICBSZXRhaW5QdHI8Q01Gb3JtYXREZXNjcmlwdGlvblJlZj4gbV9mb3JtYXREZXNj
cmlwdGlvbjsKKyAgICBBdWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gbV9zdHJlYW1Gb3JtYXQ7
CisgICAgUmVmUHRyPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBtX2F1ZGlvU291cmNl
UHJvdmlkZXI7CisgICAgVmVjdG9yPEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDKj4gbV9vYnNlcnZl
cnM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoTUVE
SUFfU1RSRUFNKQorCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9t
YWMvTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL01vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFt
L21hYy9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDIzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqICAgIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqICAgIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMKKyAqICAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJNb2NrUmVhbHRp
bWVBdWRpb1NvdXJjZU1hYy5oIgorCisjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKKyNpbXBvcnQg
Ik1lZGlhQ29uc3RyYWludHMuaCIKKyNpbXBvcnQgIk1lZGlhU2FtcGxlQVZGT2JqQy5oIgorI2lt
cG9ydCAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbXBvcnQgIlJlYWx0aW1lTWVkaWFTb3VyY2VTZXR0
aW5ncy5oIgorI2ltcG9ydCAiV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaCIKKyNpbXBv
cnQgPEFWRm91bmRhdGlvbi9BVkF1ZGlvQnVmZmVyLmg+CisjaW1wb3J0IDxBdWRpb1Rvb2xib3gv
QXVkaW9Db252ZXJ0ZXIuaD4KKyNpbXBvcnQgPENvcmVBdWRpby9Db3JlQXVkaW9UeXBlcy5oPgor
CisjaW1wb3J0ICJDb3JlTWVkaWFTb2Z0TGluay5oIgorCitTT0ZUX0xJTktfRlJBTUVXT1JLKEF1
ZGlvVG9vbGJveCkKKworU09GVF9MSU5LKEF1ZGlvVG9vbGJveCwgQXVkaW9Db252ZXJ0ZXJOZXcs
IE9TU3RhdHVzLCAoY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpblNvdXJjZUZv
cm1hdCwgY29uc3QgQXVkaW9TdHJlYW1CYXNpY0Rlc2NyaXB0aW9uKiBpbkRlc3RpbmF0aW9uRm9y
bWF0LCBBdWRpb0NvbnZlcnRlclJlZiogb3V0QXVkaW9Db252ZXJ0ZXIpLCAoaW5Tb3VyY2VGb3Jt
YXQsIGluRGVzdGluYXRpb25Gb3JtYXQsIG91dEF1ZGlvQ29udmVydGVyKSkKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U+IE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjpjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBNZWRpYUNvbnN0
cmFpbnRzKiBjb25zdHJhaW50cykKK3sKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYyhuYW1lKSk7CisgICAgaWYgKGNvbnN0cmFpbnRzICYm
IHNvdXJjZS0+YXBwbHlDb25zdHJhaW50cygqY29uc3RyYWludHMpKQorICAgICAgICBzb3VyY2Ug
PSBudWxscHRyOworCisgICAgcmV0dXJuIHNvdXJjZTsKK30KKworTW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2VNYWM6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFjKGNvbnN0IFN0cmluZyYgbmFtZSkK
KyAgICA6IE1vY2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpCit7Cit9CisKK1JlZlB0cjxNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2U6OmNyZWF0ZU11dGVk
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBhdXRvIHNvdXJjZSA9IGFkb3B0UmVmKG5ldyBN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZShuYW1lKSk7CisgICAgc291cmNlLT5tX211dGVkID0gdHJ1
ZTsKKyAgICByZXR1cm4gc291cmNlOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNl
TWFjOjphZGRPYnNlcnZlcihBdWRpb1NvdXJjZU9ic2VydmVyT2JqQyYgb2JzZXJ2ZXIpCit7Cisg
ICAgbV9vYnNlcnZlcnMuYXBwZW5kKCZvYnNlcnZlcik7CisgICAgaWYgKG1fc3RyZWFtRm9ybWF0
Lm1TYW1wbGVSYXRlKQorICAgICAgICBvYnNlcnZlci5wcmVwYXJlKCZtX3N0cmVhbUZvcm1hdCk7
Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OnJlbW92ZU9ic2VydmVyKEF1
ZGlvU291cmNlT2JzZXJ2ZXJPYmpDJiBvYnNlcnZlcikKK3sKKyAgICBtX29ic2VydmVycy5yZW1v
dmVGaXJzdCgmb2JzZXJ2ZXIpOworfQorCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlTWFj
OjpzdGFydCgpCit7CisgICAgc3RhcnRQcm9kdWNpbmdEYXRhKCk7Cit9CisKKwordm9pZCBNb2Nr
UmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6ZW1pdFNhbXBsZUJ1ZmZlcnModWludDMyX3QgZnJhbWVD
b3VudCkKK3sKKyAgICBBU1NFUlQobV9mb3JtYXREZXNjcmlwdGlvbik7CisKKyAgICBDTVRpbWUg
c3RhcnRUaW1lID0gQ01UaW1lTWFrZShlbGFwc2VkVGltZSgpICogbV9zYW1wbGVSYXRlLCBtX3Nh
bXBsZVJhdGUpOworICAgIENNU2FtcGxlQnVmZmVyUmVmIHNhbXBsZUJ1ZmZlcjsKKyAgICBPU1N0
YXR1cyByZXN1bHQgPSBDTUF1ZGlvU2FtcGxlQnVmZmVyQ3JlYXRlV2l0aFBhY2tldERlc2NyaXB0
aW9ucyhudWxscHRyLCBudWxscHRyLCB0cnVlLCBudWxscHRyLCBudWxscHRyLCBtX2Zvcm1hdERl
c2NyaXB0aW9uLmdldCgpLCBmcmFtZUNvdW50LCBzdGFydFRpbWUsIG51bGxwdHIsICZzYW1wbGVC
dWZmZXIpOworICAgIEFTU0VSVChzYW1wbGVCdWZmZXIpOworICAgIEFTU0VSVCghcmVzdWx0KTsK
KworICAgIGlmICghc2FtcGxlQnVmZmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJ1
ZmZlciA9IGFkb3B0Q0Yoc2FtcGxlQnVmZmVyKTsKKyAgICByZXN1bHQgPSBDTVNhbXBsZUJ1ZmZl
clNldERhdGFCdWZmZXJGcm9tQXVkaW9CdWZmZXJMaXN0KHNhbXBsZUJ1ZmZlciwga0NGQWxsb2Nh
dG9yRGVmYXVsdCwga0NGQWxsb2NhdG9yRGVmYXVsdCwgMCwgbV9hdWRpb0J1ZmZlckxpc3QuZ2V0
KCkpOworICAgIEFTU0VSVCghcmVzdWx0KTsKKworICAgIHJlc3VsdCA9IENNU2FtcGxlQnVmZmVy
U2V0RGF0YVJlYWR5KHNhbXBsZUJ1ZmZlcik7CisgICAgQVNTRVJUKCFyZXN1bHQpOworCisgICAg
bWVkaWFEYXRhVXBkYXRlZChNZWRpYVNhbXBsZUFWRk9iakM6OmNyZWF0ZShzYW1wbGVCdWZmZXIp
KTsKKworICAgIGZvciAoYXV0byYgb2JzZXJ2ZXIgOiBtX29ic2VydmVycykKKyAgICAgICAgb2Jz
ZXJ2ZXItPnByb2Nlc3MobV9mb3JtYXREZXNjcmlwdGlvbi5nZXQoKSwgc2FtcGxlQnVmZmVyKTsK
K30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6cmVjb25maWd1cmUoKQorewor
ICAgIG1fbWF4aW1pdW1GcmFtZUNvdW50ID0gV1RGOjpyb3VuZFVwVG9Qb3dlck9mVHdvKHJlbmRl
ckludGVydmFsKCkgLyAxMDAwLiAqIG1fc2FtcGxlUmF0ZSAqIDIpOworICAgIEFTU0VSVChtX21h
eGltaXVtRnJhbWVDb3VudCk7CisKKyAgICAvLyBBdWRpb0J1ZmZlckxpc3QgaXMgYSB2YXJpYWJs
ZS1sZW5ndGggc3RydWN0LCBzbyBjcmVhdGUgb24gdGhlIGhlYXAgd2l0aCBhIGdlbmVyaWMgbmV3
KCkgb3BlcmF0b3IKKyAgICAvLyB3aXRoIGEgY3VzdG9tIHNpemUsIGFuZCBpbml0aWFsaXplIHRo
ZSBzdHJ1Y3QgbWFudWFsbHkuCisgICAgdWludDMyX3QgYnVmZmVyRGF0YVNpemUgPSBtX2J5dGVz
UGVyRnJhbWUgKiBtX21heGltaXVtRnJhbWVDb3VudDsKKyAgICB1aW50MzJfdCBiYXNlU2l6ZSA9
IG9mZnNldG9mKEF1ZGlvQnVmZmVyTGlzdCwgbUJ1ZmZlcnMpICsgc2l6ZW9mKEF1ZGlvQnVmZmVy
KTsKKyAgICB1aW50NjRfdCBidWZmZXJMaXN0U2l6ZSA9IGJhc2VTaXplICsgYnVmZmVyRGF0YVNp
emU7CisgICAgQVNTRVJUKGJ1ZmZlckxpc3RTaXplIDw9IFNJWkVfTUFYKTsKKyAgICBpZiAoYnVm
ZmVyTGlzdFNpemUgPiBTSVpFX01BWCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9hdWRpb0J1
ZmZlckxpc3RCdWZmZXJTaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihidWZmZXJMaXN0U2l6ZSk7
CisgICAgbV9hdWRpb0J1ZmZlckxpc3QgPSBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdWZmZXJMaXN0
PihzdGF0aWNfY2FzdDxBdWRpb0J1ZmZlckxpc3QqPig6Om9wZXJhdG9yIG5ldyAobV9hdWRpb0J1
ZmZlckxpc3RCdWZmZXJTaXplKSkpOworICAgIG1lbXNldChtX2F1ZGlvQnVmZmVyTGlzdC5nZXQo
KSwgMCwgbV9hdWRpb0J1ZmZlckxpc3RCdWZmZXJTaXplKTsKKworICAgIG1fYXVkaW9CdWZmZXJM
aXN0LT5tTnVtYmVyQnVmZmVycyA9IDE7CisgICAgYXV0byYgYnVmZmVyID0gbV9hdWRpb0J1ZmZl
ckxpc3QtPm1CdWZmZXJzWzBdOworICAgIGJ1ZmZlci5tTnVtYmVyQ2hhbm5lbHMgPSAxOworICAg
IGJ1ZmZlci5tRGF0YUJ5dGVTaXplID0gYnVmZmVyRGF0YVNpemU7CisgICAgYnVmZmVyLm1EYXRh
ID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4obV9hdWRpb0J1ZmZlckxpc3QuZ2V0KCkpICsg
YmFzZVNpemU7CisKKyAgICBjb25zdCBpbnQgYnl0ZXNQZXJGbG9hdCA9IHNpemVvZihGbG9hdDMy
KTsKKyAgICBjb25zdCBpbnQgYml0c1BlckJ5dGUgPSA4OworICAgIG1fc3RyZWFtRm9ybWF0ID0g
eyB9OworICAgIG1fc3RyZWFtRm9ybWF0Lm1TYW1wbGVSYXRlID0gbV9zYW1wbGVSYXRlOworICAg
IG1fc3RyZWFtRm9ybWF0Lm1Gb3JtYXRJRCA9IGtBdWRpb0Zvcm1hdExpbmVhclBDTTsKKyAgICBt
X3N0cmVhbUZvcm1hdC5tRm9ybWF0RmxhZ3MgPSBrQXVkaW9Gb3JtYXRGbGFnc05hdGl2ZUZsb2F0
UGFja2VkIHwga0F1ZGlvRm9ybWF0RmxhZ0lzTm9uSW50ZXJsZWF2ZWQ7CisgICAgbV9zdHJlYW1G
b3JtYXQubUJ5dGVzUGVyUGFja2V0ID0gYnl0ZXNQZXJGbG9hdDsKKyAgICBtX3N0cmVhbUZvcm1h
dC5tRnJhbWVzUGVyUGFja2V0ID0gMTsKKyAgICBtX3N0cmVhbUZvcm1hdC5tQnl0ZXNQZXJGcmFt
ZSA9IGJ5dGVzUGVyRmxvYXQ7CisgICAgbV9zdHJlYW1Gb3JtYXQubUNoYW5uZWxzUGVyRnJhbWUg
PSAxOworICAgIG1fc3RyZWFtRm9ybWF0Lm1CaXRzUGVyQ2hhbm5lbCA9IGJpdHNQZXJCeXRlICog
Ynl0ZXNQZXJGbG9hdDsKKworICAgIENNRm9ybWF0RGVzY3JpcHRpb25SZWYgZm9ybWF0RGVzY3Jp
cHRpb247CisgICAgQ01BdWRpb0Zvcm1hdERlc2NyaXB0aW9uQ3JlYXRlKE5VTEwsICZtX3N0cmVh
bUZvcm1hdCwgMCwgTlVMTCwgMCwgTlVMTCwgTlVMTCwgJmZvcm1hdERlc2NyaXB0aW9uKTsKKyAg
ICBtX2Zvcm1hdERlc2NyaXB0aW9uID0gYWRvcHRDRihmb3JtYXREZXNjcmlwdGlvbik7CisKKyAg
ICBmb3IgKGF1dG8mIG9ic2VydmVyIDogbV9vYnNlcnZlcnMpCisgICAgICAgIG9ic2VydmVyLT5w
cmVwYXJlKCZtX3N0cmVhbUZvcm1hdCk7Cit9CisKK3ZvaWQgTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2VNYWM6OnJlbmRlcihkb3VibGUgZGVsdGEpCit7CisgICAgc3RhdGljIGRvdWJsZSB0aGV0YTsK
KyAgICBzdGF0aWMgY29uc3QgZG91YmxlIGZyZXF1ZW5jaWVzW10gPSB7IDE1MDAuLCA1MDAuIH07
CisKKyAgICBpZiAoIW1fYXVkaW9CdWZmZXJMaXN0KQorICAgICAgICByZWNvbmZpZ3VyZSgpOwor
CisgICAgdWludDMyX3QgdG90YWxGcmFtZUNvdW50ID0gZGVsdGEgKiBtX3NhbXBsZVJhdGU7Cisg
ICAgdWludDMyX3QgZnJhbWVDb3VudCA9IHN0ZDo6bWluKHRvdGFsRnJhbWVDb3VudCwgbV9tYXhp
bWl1bUZyYW1lQ291bnQpOworICAgIGRvdWJsZSBlbGFwc2VkID0gZWxhcHNlZFRpbWUoKTsKKyAg
ICB3aGlsZSAoZnJhbWVDb3VudCkgeworICAgICAgICBmbG9hdCAqYnVmZmVyID0gc3RhdGljX2Nh
c3Q8ZmxvYXQgKj4obV9hdWRpb0J1ZmZlckxpc3QtPm1CdWZmZXJzWzBdLm1EYXRhKTsKKyAgICAg
ICAgZm9yICh1aW50MzJfdCBmcmFtZSA9IDA7IGZyYW1lIDwgZnJhbWVDb3VudDsgKytmcmFtZSkg
eworICAgICAgICAgICAgaW50IHBoYXNlID0gZm1vZChlbGFwc2VkLCAyKSAqIDE1OworICAgICAg
ICAgICAgZG91YmxlIGluY3JlbWVudCA9IDA7CisgICAgICAgICAgICBib29sIHNpbGVudCA9IHRy
dWU7CisKKyAgICAgICAgICAgIHN3aXRjaCAocGhhc2UpIHsKKyAgICAgICAgICAgIGNhc2UgMDoK
KyAgICAgICAgICAgIGNhc2UgMTQ6IHsKKyAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBmbW9k
KGVsYXBzZWQsIDEpICogMjsKKyAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAyLjAgKiBNX1BJ
ICogZnJlcXVlbmNpZXNbaW5kZXhdIC8gbV9zYW1wbGVSYXRlOworICAgICAgICAgICAgICAgIHNp
bGVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgaWYgKHNpbGVudCkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcltmcmFt
ZV0gPSAwOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBidWZmZXJbZnJhbWVdID0gc2luKHRoZXRhKSAqIDAuMjU7CisgICAgICAgICAgICB0
aGV0YSArPSBpbmNyZW1lbnQ7CisgICAgICAgICAgICBpZiAodGhldGEgPiAyLjAgKiBNX1BJKQor
ICAgICAgICAgICAgICAgIHRoZXRhIC09IDIuMCAqIE1fUEk7CisgICAgICAgICAgICBlbGFwc2Vk
ICs9IDEgLyBtX3NhbXBsZVJhdGU7CisgICAgICAgIH0KKworICAgICAgICBtX2F1ZGlvQnVmZmVy
TGlzdC0+bUJ1ZmZlcnNbMF0ubURhdGFCeXRlU2l6ZSA9IGZyYW1lQ291bnQgKiBzaXplb2YoZmxv
YXQpOworICAgICAgICBlbWl0U2FtcGxlQnVmZmVycyhmcmFtZUNvdW50KTsKKyAgICAgICAgdG90
YWxGcmFtZUNvdW50IC09IGZyYW1lQ291bnQ7CisgICAgICAgIGZyYW1lQ291bnQgPSBzdGQ6Om1p
bih0b3RhbEZyYW1lQ291bnQsIG1fbWF4aW1pdW1GcmFtZUNvdW50KTsKKyAgICB9Cit9CisKK2Jv
b2wgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VNYWM6OmFwcGx5U2FtcGxlUmF0ZShpbnQgc2FtcGxl
UmF0ZSkKK3sKKyAgICBpZiAoc2FtcGxlUmF0ZSA8IDQ0MTAwIHx8IHNhbXBsZVJhdGUgPiA0ODAw
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKHN0YXRpY19jYXN0PHVpbnQzMl90
PihzYW1wbGVSYXRlKSA9PSBtX3NhbXBsZVJhdGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgbV9zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKKyAgICBtX2Zvcm1hdERlc2NyaXB0aW9uID0g
bnVsbHB0cjsKKyAgICBtX2F1ZGlvQnVmZmVyTGlzdCA9IG51bGxwdHI7CisgICAgbV9hdWRpb0J1
ZmZlckxpc3RCdWZmZXJTaXplID0gMDsKKworICAgIHJldHVybiB0cnVlOworfQorCitBdWRpb1Nv
dXJjZVByb3ZpZGVyKiBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZU1hYzo6YXVkaW9Tb3VyY2VQcm92
aWRlcigpCit7CisgICAgaWYgKCFtX2F1ZGlvU291cmNlUHJvdmlkZXIpCisgICAgICAgIG1fYXVk
aW9Tb3VyY2VQcm92aWRlciA9IFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUo
KnRoaXMpOworCisgICAgcmV0dXJuIG1fYXVkaW9Tb3VyY2VQcm92aWRlci5nZXQoKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1Nv
dXJjZVByb3ZpZGVyQVZGT2JqQy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5oCShyZXZp
c2lvbiAyMTA2MzEpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9tYWMv
V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOSAr
MjgsOSBAQAogCiAjaWYgRU5BQkxFKFdFQl9BVURJTykgJiYgRU5BQkxFKE1FRElBX1NUUkVBTSkK
IAotI2luY2x1ZGUgIkFWQXVkaW9DYXB0dXJlU291cmNlLmgiCisjaW5jbHVkZSAiQXVkaW9DYXB0
dXJlU291cmNlUHJvdmlkZXJPYmpDLmgiCisjaW5jbHVkZSAiQXVkaW9Tb3VyY2VPYnNlcnZlck9i
akMuaCIKICNpbmNsdWRlICJBdWRpb1NvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8d3RmL0xv
Y2suaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIApAQCAtNDIsMjggKzQyLDI0IEBAIHR5cGVkZWYgc3RydWN0IG9wYXF1ZUNNU2FtcGxlQnVm
ZmVyICpDTVMKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBVkF1ZGlvQ2FwdHVyZVNv
dXJjZTsKIGNsYXNzIENBUmluZ0J1ZmZlcjsKIAotY2xhc3MgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakMgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2Jq
Qz4sIHB1YmxpYyBBdWRpb1NvdXJjZVByb3ZpZGVyLCBwdWJsaWMgQVZBdWRpb0NhcHR1cmVTb3Vy
Y2U6Ok9ic2VydmVyIHsKK2NsYXNzIFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+LCBwdWJsaWMgQXVk
aW9Tb3VyY2VQcm92aWRlciwgcHVibGljIEF1ZGlvU291cmNlT2JzZXJ2ZXJPYmpDIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPFdlYkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDPiBjcmVhdGUo
QVZBdWRpb0NhcHR1cmVTb3VyY2UmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDPiBjcmVhdGUoQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDJik7CiAg
ICAgdmlydHVhbCB+V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoKTsKIAogcHJpdmF0ZToK
LSAgICBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQyhBVkF1ZGlvQ2FwdHVyZVNvdXJjZSYp
OwotCi0gICAgdm9pZCBzdGFydFByb2R1Y2luZ0RhdGEoKTsKLSAgICB2b2lkIHN0b3BQcm9kdWNp
bmdEYXRhKCk7CisgICAgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakMoQXVkaW9DYXB0dXJl
U291cmNlUHJvdmlkZXJPYmpDJik7CiAKICAgICAvLyBBdWRpb1NvdXJjZVByb3ZpZGVyCiAgICAg
dm9pZCBwcm92aWRlSW5wdXQoQXVkaW9CdXMqLCBzaXplX3QpIG92ZXJyaWRlOwogICAgIHZvaWQg
c2V0Q2xpZW50KEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqKSBvdmVycmlkZTsKIAotICAgIC8v
IEFWQXVkaW9DYXB0dXJlU291cmNlOjpPYnNlcnZlcgotICAgIHZvaWQgcHJlcGFyZShjb25zdCBB
dWRpb1N0cmVhbUJhc2ljRGVzY3JpcHRpb24gKikgb3ZlcnJpZGU7Ci0gICAgdm9pZCB1bnByZXBh
cmUoKSBvdmVycmlkZTsKLSAgICB2b2lkIHByb2Nlc3MoQ01Gb3JtYXREZXNjcmlwdGlvblJlZiwg
Q01TYW1wbGVCdWZmZXJSZWYpIG92ZXJyaWRlOworICAgIC8vIEF1ZGlvU291cmNlT2JzZXJ2ZXJP
YmpDCisgICAgdm9pZCBwcmVwYXJlKGNvbnN0IEF1ZGlvU3RyZWFtQmFzaWNEZXNjcmlwdGlvbiAq
KSBmaW5hbDsKKyAgICB2b2lkIHVucHJlcGFyZSgpIGZpbmFsOworICAgIHZvaWQgcHJvY2VzcyhD
TUZvcm1hdERlc2NyaXB0aW9uUmVmLCBDTVNhbXBsZUJ1ZmZlclJlZikgZmluYWw7CiAKICAgICBz
aXplX3QgbV9saXN0QnVmZmVyU2l6ZSB7IDAgfTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9C
dWZmZXJMaXN0PiBtX2xpc3Q7CkBAIC03Niw3ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgdWludDY0
X3QgbV93cml0ZUNvdW50IHsgMCB9OwogICAgIHVpbnQ2NF90IG1fcmVhZENvdW50IHsgMCB9Owog
ICAgIEF1ZGlvU291cmNlUHJvdmlkZXJDbGllbnQqIG1fY2xpZW50IHsgbnVsbHB0ciB9OwotICAg
IEFWQXVkaW9DYXB0dXJlU291cmNlKiBtX2NhcHR1cmVTb3VyY2UgeyBudWxscHRyIH07CisgICAg
QXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDKiBtX2NhcHR1cmVTb3VyY2UgeyBudWxscHRy
IH07CiAgICAgYm9vbCBtX2Nvbm5lY3RlZCB7IGZhbHNlIH07CiB9OwogICAgIApJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlvU291cmNlUHJvdmlk
ZXJBVkZPYmpDLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlh
c3RyZWFtL21hYy9XZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQy5tbQkocmV2aXNpb24gMjEw
NjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vbWFjL1dlYkF1ZGlv
U291cmNlUHJvdmlkZXJBVkZPYmpDLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MywxMiArNTMsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIGtSaW5nQnVmZmVy
RHVyYXRpb24gPSAxOwogCi1SZWY8V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM+IFdlYkF1
ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDOjpjcmVhdGUoQVZBdWRpb0NhcHR1cmVTb3VyY2UmIHNv
dXJjZSkKK1JlZjxXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQz4gV2ViQXVkaW9Tb3VyY2VQ
cm92aWRlckFWRk9iakM6OmNyZWF0ZShBdWRpb0NhcHR1cmVTb3VyY2VQcm92aWRlck9iakMmIHNv
dXJjZSkKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJBdWRpb1NvdXJjZVByb3ZpZGVy
QVZGT2JqQyhzb3VyY2UpKTsKIH0KIAotV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6Oldl
YkF1ZGlvU291cmNlUHJvdmlkZXJBVkZPYmpDKEFWQXVkaW9DYXB0dXJlU291cmNlJiBzb3VyY2Up
CitXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZGT2JqQzo6V2ViQXVkaW9Tb3VyY2VQcm92aWRlckFW
Rk9iakMoQXVkaW9DYXB0dXJlU291cmNlUHJvdmlkZXJPYmpDJiBzb3VyY2UpCiAgICAgOiBtX2Nh
cHR1cmVTb3VyY2UoJnNvdXJjZSkKIHsKIH0KQEAgLTcxLDE3ICs3MSw3IEBAIFdlYkF1ZGlvU291
cmNlUHJvdmlkZXJBVkZPYmpDOjp+V2ViQXVkaW8KICAgICAgICAgbV9jb252ZXJ0ZXIgPSBudWxs
cHRyOwogICAgIH0KICAgICBpZiAobV9jb25uZWN0ZWQpCi0gICAgICAgIG1fY2FwdHVyZVNvdXJj
ZS0+cmVtb3ZlT2JzZXJ2ZXIodGhpcyk7Ci19Ci0KLXZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRl
ckFWRk9iakM6OnN0YXJ0UHJvZHVjaW5nRGF0YSgpCi17Ci0gICAgbV9jYXB0dXJlU291cmNlLT5z
dGFydFByb2R1Y2luZ0RhdGEoKTsKLX0KLQotdm9pZCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyQVZG
T2JqQzo6c3RvcFByb2R1Y2luZ0RhdGEoKQotewotICAgIG1fY2FwdHVyZVNvdXJjZS0+c3RvcFBy
b2R1Y2luZ0RhdGEoKTsKKyAgICAgICAgbV9jYXB0dXJlU291cmNlLT5yZW1vdmVPYnNlcnZlcigq
dGhpcyk7CiB9CiAKIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByb3ZpZGVJ
bnB1dChBdWRpb0J1cyogYnVzLCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQpAQCAtMTA3LDYgKzk3
LDEwIEBAIHZvaWQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckFWRk9iakM6OnByb3YKICAgICB9CiAK
ICAgICBBU1NFUlQoYnVzLT5udW1iZXJPZkNoYW5uZWxzKCkgPT0gbV9yaW5nQnVmZmVyLT5jaGFu
bmVsQ291bnQoKSk7CisgICAgaWYgKGJ1cy0+bnVtYmVyT2ZDaGFubmVscygpICE9IG1fcmluZ0J1
ZmZlci0+Y2hhbm5lbENvdW50KCkpIHsKKyAgICAgICAgYnVzLT56ZXJvKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9saXN0LT5tTnVt
YmVyQnVmZmVyczsgKytpKSB7CiAgICAgICAgIEF1ZGlvQ2hhbm5lbCYgY2hhbm5lbCA9ICpidXMt
PmNoYW5uZWwoaSk7CkBAIC0xMzIsMTAgKzEyNiwxMCBAQCB2b2lkIFdlYkF1ZGlvU291cmNlUHJv
dmlkZXJBVkZPYmpDOjpzZXRDCiAKICAgICBpZiAobV9jbGllbnQgJiYgIW1fY29ubmVjdGVkKSB7
CiAgICAgICAgIG1fY29ubmVjdGVkID0gdHJ1ZTsKLSAgICAgICAgbV9jYXB0dXJlU291cmNlLT5h
ZGRPYnNlcnZlcih0aGlzKTsKLSAgICAgICAgbV9jYXB0dXJlU291cmNlLT5zdGFydFByb2R1Y2lu
Z0RhdGEoKTsKKyAgICAgICAgbV9jYXB0dXJlU291cmNlLT5hZGRPYnNlcnZlcigqdGhpcyk7Cisg
ICAgICAgIG1fY2FwdHVyZVNvdXJjZS0+c3RhcnQoKTsKICAgICB9IGVsc2UgaWYgKCFtX2NsaWVu
dCAmJiBtX2Nvbm5lY3RlZCkgewotICAgICAgICBtX2NhcHR1cmVTb3VyY2UtPnJlbW92ZU9ic2Vy
dmVyKHRoaXMpOworICAgICAgICBtX2NhcHR1cmVTb3VyY2UtPnJlbW92ZU9ic2VydmVyKCp0aGlz
KTsKICAgICAgICAgbV9jb25uZWN0ZWQgPSBmYWxzZTsKICAgICB9CiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291cmNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tb2NrL01vY2tSZWFsdGltZUF1ZGlvU291
cmNlLmNwcAkocmV2aXNpb24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9j
ay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisjaWYgIVBMQVRGT1JNKE1BQykgJiYgIVBM
QVRGT1JNKElPUykKIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6OmNyZWF0ZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IE1lZGlhQ29uc3Ry
YWludHMqIGNvbnN0cmFpbnRzKQogewogICAgIGF1dG8gc291cmNlID0gYWRvcHRSZWYobmV3IE1v
Y2tSZWFsdGltZUF1ZGlvU291cmNlKG5hbWUpKTsKQEAgLTU1LDkgKzU2LDExIEBAIFJlZlB0cjxN
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gTW9ja1JlYWwKICAgICBzb3VyY2UtPm1fbXV0ZWQgPSB0
cnVlOwogICAgIHJldHVybiBzb3VyY2U7CiB9Ci0KKyNlbmRpZgorICAgIAogTW9ja1JlYWx0aW1l
QXVkaW9Tb3VyY2U6Ok1vY2tSZWFsdGltZUF1ZGlvU291cmNlKGNvbnN0IFN0cmluZyYgbmFtZSkK
ICAgICA6IE1vY2tSZWFsdGltZU1lZGlhU291cmNlKGNyZWF0ZUNhbm9uaWNhbFVVSURTdHJpbmco
KSwgUmVhbHRpbWVNZWRpYVNvdXJjZTo6QXVkaW8sIG5hbWUpCisgICAgLCBtX3RpbWVyKFJ1bkxv
b3A6OmN1cnJlbnQoKSwgdGhpcywgJk1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjp0aWNrKQogewog
fQogCkBAIC04Miw2ICs4NSw0MSBAQCB2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjppbml0
aWFsaXplCiAgICAgc3VwcG9ydGVkQ29uc3RyYWludHMuc2V0U3VwcG9ydHNTYW1wbGVSYXRlKHRy
dWUpOwogfQogCit2b2lkIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjpzdGFydFByb2R1Y2luZ0Rh
dGEoKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdGFydFByb2R1Y2luZ0RhdGEo
KTsKKworICAgIG1fc3RhcnRUaW1lID0gbW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCk7Cisg
ICAgbV90aW1lci5zdGFydFJlcGVhdGluZyhzdGQ6OmNocm9ubzo6bWlsbGlzZWNvbmRzKHJlbmRl
ckludGVydmFsKCkpKTsKK30KKwordm9pZCBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZTo6c3RvcFBy
b2R1Y2luZ0RhdGEoKQoreworICAgIE1vY2tSZWFsdGltZU1lZGlhU291cmNlOjpzdG9wUHJvZHVj
aW5nRGF0YSgpOworICAgIG1fdGltZXIuc3RvcCgpOworICAgIG1fZWxhcHNlZFRpbWUgKz0gbW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBtX3N0YXJ0VGltZTsKKyAgICBtX3N0YXJ0VGlt
ZSA9IE5BTjsKK30KKworZG91YmxlIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlOjplbGFwc2VkVGlt
ZSgpCit7CisgICAgaWYgKHN0ZDo6aXNuYW4obV9zdGFydFRpbWUpKQorICAgICAgICByZXR1cm4g
bV9lbGFwc2VkVGltZTsKKworICAgIHJldHVybiBtX2VsYXBzZWRUaW1lICsgKG1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpIC0gbV9zdGFydFRpbWUpOworfQorCit2b2lkIE1vY2tSZWFsdGlt
ZUF1ZGlvU291cmNlOjp0aWNrKCkKK3sKKyAgICBpZiAoc3RkOjppc25hbihtX2xhc3RSZW5kZXJU
aW1lKSkKKyAgICAgICAgbV9sYXN0UmVuZGVyVGltZSA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5n
VGltZSgpOworCisgICAgZG91YmxlIG5vdyA9IG1vbm90b25pY2FsbHlJbmNyZWFzaW5nVGltZSgp
OworICAgIGRvdWJsZSBkZWx0YSA9IG5vdyAtIG1fbGFzdFJlbmRlclRpbWU7CisgICAgbV9sYXN0
UmVuZGVyVGltZSA9IG5vdzsKKyAgICByZW5kZXIoZGVsdGEpOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbW9jay9Nb2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21vY2svTW9ja1JlYWx0aW1lQXVkaW9Tb3Vy
Y2UuaAkocmV2aXNpb24gMjEwNjMxKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbW9jay9N
b2NrUmVhbHRpbWVBdWRpb1NvdXJjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI4LDE0ICsyOCwxNCBAQAog
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlX2gK
LSNkZWZpbmUgTW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2VfaAorI3ByYWdtYSBvbmNlCiAKICNpZiBF
TkFCTEUoTUVESUFfU1RSRUFNKQogCiAjaW5jbHVkZSAiRm9udENhc2NhZGUuaCIKICNpbmNsdWRl
ICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIk1vY2tSZWFsdGltZU1lZGlhU291cmNlLmgiCisj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NSwx
MSArNDUsMTkgQEAgcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8TW9ja1JlYWx0aW1lQXVkaW9T
b3VyY2U+IGNyZWF0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBNZWRpYUNvbnN0cmFpbnRzKik7CiAg
ICAgc3RhdGljIFJlZlB0cjxNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZT4gY3JlYXRlTXV0ZWQoY29u
c3QgU3RyaW5nJiBuYW1lKTsKIAotICAgIHZpcnR1YWwgfk1vY2tSZWFsdGltZUF1ZGlvU291cmNl
KCkgeyB9CisgICAgdmlydHVhbCB+TW9ja1JlYWx0aW1lQXVkaW9Tb3VyY2UoKSA9IGRlZmF1bHQ7
CiAKIHByb3RlY3RlZDoKICAgICBNb2NrUmVhbHRpbWVBdWRpb1NvdXJjZShjb25zdCBTdHJpbmcm
IG5hbWUgPSBBU0NJSUxpdGVyYWwoIk1vY2sgYXVkaW8gZGV2aWNlIikpOwogCisgICAgdm9pZCBz
dGFydFByb2R1Y2luZ0RhdGEoKSBmaW5hbDsKKyAgICB2b2lkIHN0b3BQcm9kdWNpbmdEYXRhKCkg
ZmluYWw7CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyKGRvdWJsZSkgeyB9CisKKyAgICBkb3Vi
bGUgZWxhcHNlZFRpbWUoKTsKKyAgICBzdGF0aWMgaW50IHJlbmRlckludGVydmFsKCkgeyByZXR1
cm4gMTI1OyB9CisKIHByaXZhdGU6CiAKICAgICBib29sIGFwcGx5Vm9sdW1lKGRvdWJsZSkgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNjAsMTAgKzY4LDE1IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVTZXR0aW5ncyhSZWFsdGltZU1lZGlhU291cmNlU2V0dGluZ3MmKSBvdmVycmlk
ZTsKICAgICB2b2lkIGluaXRpYWxpemVDYXBhYmlsaXRpZXMoUmVhbHRpbWVNZWRpYVNvdXJjZUNh
cGFiaWxpdGllcyYpIG92ZXJyaWRlOwogICAgIHZvaWQgaW5pdGlhbGl6ZVN1cHBvcnRlZENvbnN0
cmFpbnRzKFJlYWx0aW1lTWVkaWFTb3VyY2VTdXBwb3J0ZWRDb25zdHJhaW50cyYpIG92ZXJyaWRl
OworCisgICAgdm9pZCB0aWNrKCk7CisKKyAgICBSdW5Mb29wOjpUaW1lcjxNb2NrUmVhbHRpbWVB
dWRpb1NvdXJjZT4gbV90aW1lcjsKKyAgICBkb3VibGUgbV9zdGFydFRpbWUgeyBOQU4gfTsKKyAg
ICBkb3VibGUgbV9sYXN0UmVuZGVyVGltZSB7IE5BTiB9OworICAgIGRvdWJsZSBtX2VsYXBzZWRU
aW1lIHsgMCB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIE1vY2tSZWFsdGltZUF1ZGlvU291cmNlX2gK
SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDIxMDYzMSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE3LTAxLTEyICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFtNZWRpYVN0cmVhbSwgTWFjXSBBZGQg
bW9jayBhdWRpbyBzb3VyY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2Njk3NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWw6
CisKIDIwMTctMDEtMTIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUB3ZWJraXQub3JnPgog
CiAgICAgICAgIFtFRkxdIFNlY29uZCB1cGRhdGUgVGVzdEV4cGVjdGF0aW9uIGZpbGUgZm9yIFVi
dW50dSAxNi4wNC4KSW5kZXg6IExheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9z
b3VyY2Vub2RlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy93ZWJhdWRp
by9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDIxMDYz
MSkKKysrIExheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxNCArMywxNSBAQCBCYXNpYyB0ZXN0cyBm
b3IgTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAK
IFBBU1Mge2F1ZGlvOnRydWV9IGdlbmVyYXRlZCBzdHJlYW0KLVBBU1Mgcy5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyAxCi1QQVNTIHMuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFT
UyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGggaXMgMAogUEFTUyBTb3VyY2UgQXVkaW9Ob2RlIGhhcyBubyBpbnB1
dHMuCiBQQVNTIFNvdXJjZSBBdWRpb05vZGUgaGFzIG9uZSBvdXRwdXQuCi1QQVNTIGNvbm5lY3Qo
KSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4KLVBB
U1MgY29ubmVjdCgpIGV4Y2VwdGlvbiB0aHJvd24gZm9yIGlsbGVnYWwgb3V0cHV0IGluZGV4Lgot
UEFTUyBjb25uZWN0KCkgZXhjZXB0aW9uIHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRleC4K
K1BBU1MgY29ubmVjdCgpIGV4Y2VwdGlvbiB7IlR5cGVFcnJvciIsICJBcmd1bWVudCAxICgnZGVz
dGluYXRpb24nKSB0byBBdWRpb05vZGUuY29ubmVjdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIEF1
ZGlvTm9kZSJ9IHRocm93biBmb3IgaWxsZWdhbCBkZXN0aW5hdGlvbiBBdWRpb05vZGUKK1BBU1Mg
Y29ubmVjdCgpIGV4Y2VwdGlvbiB7IkluZGV4U2l6ZUVycm9yIiwgIlRoZSBpbmRleCBpcyBub3Qg
aW4gdGhlIGFsbG93ZWQgcmFuZ2UuIn0gdGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleAor
UEFTUyBjb25uZWN0KCkgZXhjZXB0aW9uIHsiSW5kZXhTaXplRXJyb3IiLCAiVGhlIGluZGV4IGlz
IG5vdCBpbiB0aGUgYWxsb3dlZCByYW5nZS4ifSB0aHJvd24gZm9yIGlsbGVnYWwgaW5wdXQgaW5k
ZXgKIFBBU1MgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBz
dWNjZWVkZWQuCitQQVNTIG9uYXVkaW9wcm9jZXNzIHdhcyBjYWxsZWQKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvd2Vi
YXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCShyZXZpc2lv
biAyMTA2MzEpCisrKyBMYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNl
bm9kZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDk2ICsxLDExNCBAQAogPCFET0NUWVBFIGh0
bWw+Ci0KIDxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvYXVkaW8tdGVzdGluZy5q
cyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci0KLTxib2R5PgotPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwv
ZGl2PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci1kZXNjcmlwdGlvbigi
QmFzaWMgdGVzdHMgZm9yIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlIEFQSS4iKTsKLQotdmFy
IGNvbnRleHQgPSAwOwotCi1mdW5jdGlvbiBlcnJvcigpIHsKLSAgICB0ZXN0RmFpbGVkKCdTdHJl
YW0gZ2VuZXJhdGlvbiBmYWlsZWQuJyk7Ci0gICAgZmluaXNoSlNUZXN0KCk7Ci19Ci0KLWZ1bmN0
aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewotICAgIHRyeSB7Ci0gICAg
ICAgIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2ssIGVy
cm9yKTsKLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoJ3dlYmtpdEdldFVz
ZXJNZWRpYSB0aHJldyBleGNlcHRpb24gOicgKyBlKTsKLSAgICAgICAgZmluaXNoSlNUZXN0KCk7
Ci0gICAgfQotfQotCi1mdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKSB7Ci0gICAgcyA9IHN0cmVh
bTsKLSAgICB0ZXN0UGFzc2VkKCd7YXVkaW86dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbScpOwotICAg
IHNob3VsZEJlKCdzLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRC
ZSgncy5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7Ci0KLSAgICBjb250ZXh0ID0gbmV3
IHdlYmtpdEF1ZGlvQ29udGV4dCgpOwotCi0gICAgLy8gQ3JlYXRlIGFuIEF1ZGlvTm9kZSBmcm9t
IHRoZSBzdHJlYW0uCi0gICAgdmFyIG1lZGlhU3RyZWFtU291cmNlID0gY29udGV4dC5jcmVhdGVN
ZWRpYVN0cmVhbVNvdXJjZShzdHJlYW0pOwotCi0gICAgLy8gQ2hlY2sgbnVtYmVyIG9mIGlucHV0
cyBhbmQgb3V0cHV0cy4KLSAgICBpZiAobWVkaWFTdHJlYW1Tb3VyY2UubnVtYmVyT2ZJbnB1dHMg
PT0gMCkKLSAgICAgICAgdGVzdFBhc3NlZCgiU291cmNlIEF1ZGlvTm9kZSBoYXMgbm8gaW5wdXRz
LiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91
bGQgbm90IGhhdmUgaW5wdXRzLiIpOwotCi0gICAgaWYgKG1lZGlhU3RyZWFtU291cmNlLm51bWJl
ck9mT3V0cHV0cyA9PSAxKQotICAgICAgICB0ZXN0UGFzc2VkKCJTb3VyY2UgQXVkaW9Ob2RlIGhh
cyBvbmUgb3V0cHV0LiIpOwotICAgIGVsc2UKLSAgICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1
ZGlvTm9kZSBzaG91bGQgaGF2ZSBvbmUgb3V0cHV0LiIpOwotCi0gICAgLy8gVHJ5IGNhbGxpbmcg
Y29ubmVjdCgpIG1ldGhvZCB3aXRoIGlsbGVnYWwgdmFsdWVzLgotCi0gICAgdHJ5IHsKLSAgICAg
ICAgbWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdCgwLCAwLCAwKTsKLSAgICAgICAgdGVzdEZhaWxl
ZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiBzaG91bGQgYmUgdGhyb3duIGZvciBpbGxlZ2FsIGRlc3Rp
bmF0aW9uIEF1ZGlvTm9kZS4iKTsKLSAgICB9IGNhdGNoKGUpIHsKLSAgICAgICAgdGVzdFBhc3Nl
ZCgiY29ubmVjdCgpIGV4Y2VwdGlvbiB0aHJvd24gZm9yIGlsbGVnYWwgZGVzdGluYXRpb24gQXVk
aW9Ob2RlLiIpOwotICAgIH0KLQotICAgIHRyeSB7Ci0gICAgICAgIG1lZGlhU3RyZWFtU291cmNl
LmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiwgNSwgMCk7Ci0gICAgICAgIHRlc3RGYWlsZWQo
ImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBvdXRwdXQg
aW5kZXguIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImNvbm5lY3Qo
KSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxlZ2FsIG91dHB1dCBpbmRleC4iKTsKLSAgICB9Ci0K
LSAgICB0cnkgewotICAgICAgICBtZWRpYVN0cmVhbVNvdXJjZS5jb25uZWN0KGNvbnRleHQuZGVz
dGluYXRpb24sIDAsIDUpOwotICAgICAgICB0ZXN0RmFpbGVkKCJjb25uZWN0KCkgZXhjZXB0aW9u
IHNob3VsZCBiZSB0aHJvd24gZm9yIGlsbGVnYWwgaW5wdXQgaW5kZXguIik7Ci0gICAgfSBjYXRj
aChlKSB7Ci0gICAgICAgIHRlc3RQYXNzZWQoImNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZv
ciBpbGxlZ2FsIGlucHV0IGluZGV4LiIpOwotICAgIH0KLQotICAgIC8vIFRyeSBjYWxsaW5nIGNv
bm5lY3QoKSB3aXRoIHByb3BlciB2YWx1ZXMuCi0gICAgdHJ5IHsKLSAgICAgICAgbWVkaWFTdHJl
YW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uLCAwLCAwKTsKLSAgICAgICAgdGVz
dFBhc3NlZCgibWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBz
dWNjZWVkZWQuIik7Ci0gICAgfSBjYXRjaChlKSB7Ci0gICAgICAgIHRlc3RGYWlsZWQoIm1lZGlh
U3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbikgZmFpbGVkLiIpOwotICAg
IH0KLQotICAgIGZpbmlzaEpTVGVzdCgpOwotfQotCi1nZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWV9
LCBnb3RTdHJlYW0pOwotd2luZG93LmpzVGVzdElzQXN5bmMgPSB0cnVlOwotd2luZG93LnN1Y2Nl
c3NmdWxseVBhcnNlZCA9IHRydWU7Ci0KLTwvc2NyaXB0PgorICAgIDxoZWFkPgorICAgICAgICA8
c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKyAgICA8
L2hlYWQ+CisKKyAgICA8Ym9keT4KKyAgICAgICAgPGRpdiBpZD0iZGVzY3JpcHRpb24iPjwvZGl2
PgorICAgICAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworICAgICAgICA8c2NyaXB0Pgor
ICAgICAgICAgICAgZGVzY3JpcHRpb24oIkJhc2ljIHRlc3RzIGZvciBNZWRpYVN0cmVhbUF1ZGlv
U291cmNlTm9kZSBBUEkuIik7CisKKyAgICAgICAgICAgIGxldCBjb250ZXh0OworICAgICAgICAg
ICAgbGV0IHN0cmVhbTsKKyAgICAgICAgICAgIGxldCBmaW5pc2hlZCA9IGZhbHNlOworICAgICAg
ICAgICAgY29uc3QgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDI7CisgICAgICAgICAgICBjb25z
dCBudW1iZXJPZklucHV0Q2hhbm5lbHMgPSAyOworICAgICAgICAgICAgY29uc3QgYnVmZmVyU2l6
ZSA9IDUxMjsKKworICAgICAgICAgICAgZnVuY3Rpb24gcHJvY2Vzc0F1ZGlvRGF0YShldmVudCkg
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGZpbmlzaGVkKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuaW5wdXRCdWZm
ZXIubnVtYmVyT2ZDaGFubmVscyAhPSBudW1iZXJPZklucHV0Q2hhbm5lbHMpCisgICAgICAgICAg
ICAgICAgICAgIHRlc3RGYWlsZWQoYG51bWJlck9mSW5wdXRDaGFubmVscyBkb2Vzbid0IG1hdGNo
OiBoYXZlICR7ZXZlbnQuaW5wdXRCdWZmZXIubnVtYmVyT2ZDaGFubmVsc30sIGV4cGVjdCAke251
bWJlck9mSW5wdXRDaGFubmVsc30hYCk7CisKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQub3V0
cHV0QnVmZmVyLm51bWJlck9mQ2hhbm5lbHMgIT0gbnVtYmVyT2ZPdXRwdXRDaGFubmVscykKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgbnVtYmVyT2ZPdXRwdXRDaGFubmVscyBkb2Vz
bid0IG1hdGNoOiBoYXZlICR7ZXZlbnQub3V0cHV0QnVmZmVyLm51bWJlck9mQ2hhbm5lbHN9LCBl
eHBlY3QgJHtudW1iZXJPZk91dHB1dENoYW5uZWxzfSFgKTsKKworICAgICAgICAgICAgICAgIHN0
cmVhbS5nZXRBdWRpb1RyYWNrcygpWzBdLnN0b3AoKTsKKyAgICAgICAgICAgICAgICB0ZXN0UGFz
c2VkKCJvbmF1ZGlvcHJvY2VzcyB3YXMgY2FsbGVkIik7CisgICAgICAgICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CisgICAgICAgICAgICAgICAgZmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBmdW5jdGlvbiBnb3RTdHJlYW0ocykKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICBzdHJlYW0gPSBzOworICAgICAgICAgICAgICAgIHRlc3RQYXNzZWQoJ3th
dWRpbzp0cnVlfSBnZW5lcmF0ZWQgc3RyZWFtJyk7CisgICAgICAgICAgICAgICAgc2hvdWxkQmUo
J3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgICAgICAgICAgICAg
c2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CisKKyAgICAg
ICAgICAgICAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlvQ29udGV4dCgpOworCisgICAgICAg
ICAgICAgICAgLy8gQ3JlYXRlIGFuIEF1ZGlvTm9kZSBmcm9tIHRoZSBzdHJlYW0uCisgICAgICAg
ICAgICAgICAgbGV0IG1lZGlhU3RyZWFtU291cmNlID0gY29udGV4dC5jcmVhdGVNZWRpYVN0cmVh
bVNvdXJjZShzdHJlYW0pOworCisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgbnVtYmVyIG9mIGlu
cHV0cyBhbmQgb3V0cHV0cy4KKyAgICAgICAgICAgICAgICBpZiAobWVkaWFTdHJlYW1Tb3VyY2Uu
bnVtYmVyT2ZJbnB1dHMgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgiU291
cmNlIEF1ZGlvTm9kZSBoYXMgbm8gaW5wdXRzLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQgbm90
IGhhdmUgaW5wdXRzLiIpOworCisgICAgICAgICAgICAgICAgaWYgKG1lZGlhU3RyZWFtU291cmNl
Lm51bWJlck9mT3V0cHV0cyA9PSAxKQorICAgICAgICAgICAgICAgICAgICB0ZXN0UGFzc2VkKCJT
b3VyY2UgQXVkaW9Ob2RlIGhhcyBvbmUgb3V0cHV0LiIpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZCgiU291cmNlIEF1ZGlvTm9kZSBzaG91bGQg
aGF2ZSBvbmUgb3V0cHV0LiIpOworCisgICAgICAgICAgICAgICAgLy8gVHJ5IGNhbGxpbmcgY29u
bmVjdCgpIG1ldGhvZCB3aXRoIGlsbGVnYWwgdmFsdWVzLgorICAgICAgICAgICAgICAgIHRyeSB7
CisgICAgICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoMCwgMCwgMCk7
CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hv
dWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBkZXN0aW5hdGlvbiBBdWRpb05vZGUuIik7CisgICAg
ICAgICAgICAgICAgfSBjYXRjaChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3Nl
ZChgY29ubmVjdCgpIGV4Y2VwdGlvbiB7IiR7ZXJyLm5hbWV9IiwgIiR7ZXJyLm1lc3NhZ2V9In0g
dGhyb3duIGZvciBpbGxlZ2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZWApOworICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1lZGlh
U3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbiwgNSwgMCk7CisgICAgICAg
ICAgICAgICAgICAgIHRlc3RGYWlsZWQoImNvbm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRo
cm93biBmb3IgaWxsZWdhbCBvdXRwdXQgaW5kZXguIik7CisgICAgICAgICAgICAgICAgfSBjYXRj
aChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZChgY29ubmVjdCgpIGV4Y2Vw
dGlvbiB7IiR7ZXJyLm5hbWV9IiwgIiR7ZXJyLm1lc3NhZ2V9In0gdGhyb3duIGZvciBpbGxlZ2Fs
IG91dHB1dCBpbmRleGApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgIG1lZGlhU3RyZWFtU291cmNlLmNvbm5lY3QoY29udGV4
dC5kZXN0aW5hdGlvbiwgMCwgNSk7CisgICAgICAgICAgICAgICAgICAgIHRlc3RGYWlsZWQoImNv
bm5lY3QoKSBleGNlcHRpb24gc2hvdWxkIGJlIHRocm93biBmb3IgaWxsZWdhbCBpbnB1dCBpbmRl
eC4iKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoKGVycikgeworICAgICAgICAgICAgICAgICAg
ICB0ZXN0UGFzc2VkKGBjb25uZWN0KCkgZXhjZXB0aW9uIHsiJHtlcnIubmFtZX0iLCAiJHtlcnIu
bWVzc2FnZX0ifSB0aHJvd24gZm9yIGlsbGVnYWwgaW5wdXQgaW5kZXhgKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUcnkgY2FsbGluZyBjb25uZWN0KCkgd2l0aCBs
ZWdhbCB2YWx1ZXMuCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAg
bWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uLCAwLCAwKTsKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdFBhc3NlZCgibWVkaWFTdHJlYW1Tb3VyY2UuY29ubmVjdChj
b250ZXh0LmRlc3RpbmF0aW9uKSBzdWNjZWVkZWQuIik7CisgICAgICAgICAgICAgICAgfSBjYXRj
aChlcnIpIHsKKyAgICAgICAgICAgICAgICAgICAgdGVzdEZhaWxlZChgbWVkaWFTdHJlYW1Tb3Vy
Y2UuY29ubmVjdChjb250ZXh0LmRlc3RpbmF0aW9uKSBmYWlsZWQgd2l0aCAiJHtlcnIubmFtZX0i
OiAiJHtlcnIubWVzc2FnZX0iYCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgbGV0IHNjcmlwdFByb2Nlc3Nvck5vZGUgPSBjb250ZXh0LmNyZWF0ZVNjcmlwdFByb2Nlc3Nv
cihidWZmZXJTaXplLCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIG51bWJlck9mT3V0cHV0Q2hhbm5l
bHMpOworICAgICAgICAgICAgICAgIHNjcmlwdFByb2Nlc3Nvck5vZGUub25hdWRpb3Byb2Nlc3Mg
PSBwcm9jZXNzQXVkaW9EYXRhOworCisgICAgICAgICAgICAgICAgbWVkaWFTdHJlYW1Tb3VyY2Uu
Y29ubmVjdChzY3JpcHRQcm9jZXNzb3JOb2RlKTsKKyAgICAgICAgICAgICAgICBzY3JpcHRQcm9j
ZXNzb3JOb2RlLmNvbm5lY3QoY29udGV4dC5kZXN0aW5hdGlvbik7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgICAgICB0ZXN0
UnVubmVyLnNldFVzZXJNZWRpYVBlcm1pc3Npb24odHJ1ZSk7CisKKyAgICAgICAgICAgIG5hdmln
YXRvci5tZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSkKKyAgICAgICAgICAg
ICAgICAudGhlbihzdHJlYW0gPT4gZ290U3RyZWFtKHN0cmVhbSkpCisgICAgICAgICAgICAgICAg
LmNhdGNoKGZ1bmN0aW9uKGVycikgeworICAgICAgICAgICAgICAgICAgICB0ZXN0RmFpbGVkKGBt
ZWRpYURldmljZXMuZ2V0VXNlck1lZGlhKCkgZmFpbGVkIHdpdGggIiR7ZXJyLm5hbWV9IjogIiR7
ZXJyLm1lc3NhZ2V9ImApOworICAgICAgICAgICAgICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKKyAg
ICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgd2luZG93LmpzVGVzdElzQXN5bmMgPSB0
cnVlOworICAgICAgICAgICAgd2luZG93LnN1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CisgICAg
ICAgIDwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiAKLTxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KKyAgICA8L2JvZHk+CiA8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>