<?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>176088</bug_id>
          
          <creation_ts>2017-08-29 19:41:23 -0700</creation_ts>
          <short_desc>Stop using PolicyCallback</short_desc>
          <delta_ts>2017-10-26 16:52:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1343398</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 19:41:23 -0700</bug_when>
    <thetext>Stop using PolicyCallback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343400</commentid>
    <comment_count>1</comment_count>
      <attachid>319324</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 19:43:32 -0700</bug_when>
    <thetext>Created attachment 319324
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343410</commentid>
    <comment_count>2</comment_count>
      <attachid>319324</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-29 20:36:08 -0700</bug_when>
    <thetext>Comment on attachment 319324
Patch

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:-184
&gt;      m_frame.loader().client().cancelPolicyCheck();
&gt; -    PolicyCallback callback = WTFMove(m_callback);
&gt; -    callback.cancel();

Cancelling the callback is now the responsibility of the FrameLoaderClient, to whom we have given the lambda.  That is why there are changes in WebKit and WebKitLegacy where the FrameLoaderClient::cancelPolicyCheck finds the lambda it has stored.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1343591</commentid>
    <comment_count>3</comment_count>
      <attachid>319378</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-30 10:33:05 -0700</bug_when>
    <thetext>Created attachment 319378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344104</commentid>
    <comment_count>4</comment_count>
      <attachid>319378</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-08-31 13:34:39 -0700</bug_when>
    <thetext>Comment on attachment 319378
Patch

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:147
&gt; +    ResourceRequest requestCopy = request;
&gt; +    m_frame.loader().client().dispatchDecidePolicyForNavigationAction(action, request, didReceiveRedirectResponse, formState, [this, function = WTFMove(function), request = WTFMove(requestCopy), formState = makeRefPtr(formState), suggestedFilename = WTFMove(suggestedFilename)](PolicyAction policyAction) mutable {

You can just capture request by value instead of explicitly making a copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344106</commentid>
    <comment_count>5</comment_count>
      <attachid>319513</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-08-31 13:39:06 -0700</bug_when>
    <thetext>Created attachment 319513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344107</commentid>
    <comment_count>6</comment_count>
      <attachid>319513</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-31 13:40:06 -0700</bug_when>
    <thetext>Comment on attachment 319513
Patch

Rejecting attachment 319513 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 319513, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Source/WebKit/ChangeLog contains OOPS!.

Full output: http://webkit-queues.webkit.org/results/4418705</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352451</commentid>
    <comment_count>7</comment_count>
      <attachid>321750</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 15:12:20 -0700</bug_when>
    <thetext>Created attachment 321750
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352459</commentid>
    <comment_count>8</comment_count>
      <attachid>321757</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 15:24:02 -0700</bug_when>
    <thetext>Created attachment 321757
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352464</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-25 15:33:35 -0700</bug_when>
    <thetext>http://trac.webkit.org/r222472</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353752</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:59:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694436&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365117</commentid>
    <comment_count>11</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-10-26 16:52:47 -0700</bug_when>
    <thetext>*** Bug 175913 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319324</attachid>
            <date>2017-08-29 19:43:32 -0700</date>
            <delta_ts>2017-08-30 10:33:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176088-20170829194331.patch</filename>
            <type>text/plain</type>
            <size>29863</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBACisyMDE3LTA4LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBQb2xpY3lDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyB3aGF0IGxhbWJkYXMgYXJlIGZvci4KKyAgICAgICAgTm8gY2hhbmdl
IGluIGJlaGF2aW9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2Fs
bGJhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5oOiBS
ZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeSk6CisgICAgICAgIChX
ZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpzdG9wQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6UG9s
aWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3kpOiBEZWxldGVkLgorICAg
ICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lD
aGVja2VyOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZSk6IERlbGV0ZWQuCisKIDIwMTctMDgtMjkgIFlv
dWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIENhY2hlU3RvcmFnZSBk
b2VzIG5vdCBuZWVkIHRvIHNvcnQgaXRzIGNhY2hlcwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDQyLDcgKzIwNDIsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAg
bG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCiAgICAgbG9hZGVyL05ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyLmNwcAogICAgIGxvYWRlci9QaW5nTG9hZGVyLmNwcAotICAgIGxvYWRlci9Q
b2xpY3lDYWxsYmFjay5jcHAKICAgICBsb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKICAgICBsb2Fk
ZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAogICAgIGxvYWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNE
aWdlc3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjEzMjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQwNDcsOCAr
NDA0Nyw2IEBACiAJCTk1MjA3NjA2MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAy
MUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLzsgfTsKIAkJOTZBQkE0MjMx
NEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29udGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4
MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJ
CTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAvKiBKU1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0
RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3BwICovOyB9OwotCQk5NzA1OTk3NzEwN0Q5NzUyMDBB
NTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxi
YWNrLmNwcCAqLzsgfTsKLQkJOTcwNTk5NzgxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxi
YWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1
OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzA1OTk3OTEwN0Q5NzUyMDBBNTBB
N0MgLyogUG9saWN5Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5j
cHAgKi87IH07CiAJCTk3MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3NjEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MEI3MjhBMTQ0RkZBQzYwMEYwMEEzNyAvKiBF
dmVudEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTIzMDQsOCAr
MTIzMDIsNiBAQAogCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2
QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3MDU5OTcz
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xp
Y3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzYxMDdE
OTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NzBCNzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50SW50ZXJmYWNlcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMjQxNzMsOCArMjQxNjksNiBAQAogCQkJCTY1NkQzNzJCMEFEQkE1REUw
MEE0NTU0RCAvKiBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5oICovLAogCQkJCUQwRkYyQTVC
MTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVyLmNwcCAqLywKIAkJCQlEMEZGMkE1QzExRjhD
NDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oICovLAotCQkJCTk3MDU5OTczMTA3RDk3NTIwMEE1
MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8sCi0JCQkJOTcwNTk5NzQxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8sCiAJCQkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdD
IC8qIFBvbGljeUNoZWNrZXIuY3BwICovLAogCQkJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDaGVja2VyLmggKi8sCiAJCQkJMUEyQTY4MjEwQjVCRURFNzAwMDJBNDgwIC8qIFBy
b2dyZXNzVHJhY2tlci5jcHAgKi8sCkBAIC0yOTI4OSw3ICsyOTI4Myw2IEBACiAJCQkJQjJCMUY3
MTcwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJM0ZGODEzQTcxREJBODY0MDAwOUJGMDAxIC8qIFBvaW50ZXJMb2NrQ29udHJvbGxl
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBEOTIxMjQ4RjBCMzAwRDNBOUM5IC8qIFBvaW50
TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTcwNTk5N0ExMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZENDVBOTU3
MTc1RDQxNEMwMEMyMUVDOCAvKiBQb2x5Z29uU2hhcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NzRFMjBBMTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BTdGF0ZUV2ZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTMzMjU3LDcgKzMzMjUwLDYgQEAKIAkJCQlCMkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyog
UG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTVDRkM0MzUwMTky
NDA5RTMwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQTFFMTE1NDYxMzAxNUM0RTAwNTRBQzhDIC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwIGlu
IFNvdXJjZXMgKi8sCi0JCQkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQ
b2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZENDVBOTU5MTc1RDQxNzEwMEMy
MUVDOCAvKiBQb2x5Z29uU2hhcGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE4OUYwREUxMEI0
NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDIyMTMyMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZl
ckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlz
aW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBAQAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29u
dHJvbGxlci5oIgogI2luY2x1ZGUgIldpbmRvd0ZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiWE1MRG9j
dW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNs
dWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw3ICs4NSw2IEBAIGNsYXNz
IE1lc3NhZ2VFdmVudDsKIGNsYXNzIE5hdmlnYXRpb25BY3Rpb247CiBjbGFzcyBQYWdlOwogY2xh
c3MgUGx1Z2luVmlld0Jhc2U7Ci1jbGFzcyBQb2xpY3lDaGVja2VyOwogY2xhc3MgUHJldmlld0xv
YWRlckNsaWVudDsKIGNsYXNzIFByb3RlY3Rpb25TcGFjZTsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0
aW9uSGFuZGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNw
cAkocmV2aXNpb24gMjIxMzIwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxi
YWNrLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDcwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiUG9saWN5Q2FsbGJhY2suaCIKLQotI2luY2x1ZGUgIkZvcm1T
dGF0ZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNp
bmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lk
IFBvbGljeUNhbGxiYWNrOjpzZXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3Jt
U3RhdGUqIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5j
dGlvbikKLXsKLSAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwotICAgIG1fZm9ybVN0YXRlID0gZm9y
bVN0YXRlOwotICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci0KLSAgICBtX25hdmlnYXRpb25G
dW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOwotfQotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpj
YWxsKGJvb2wgc2hvdWxkQ29udGludWUpCi17Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkZ1bmN0aW9u
KQotICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlvbihtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdl
dCgpLCBzaG91bGRDb250aW51ZSk7Ci19Ci0KLXZvaWQgUG9saWN5Q2FsbGJhY2s6OmNsZWFyUmVx
dWVzdCgpCi17Ci0gICAgbV9yZXF1ZXN0ID0gUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9mb3Jt
U3RhdGUgPSBudWxscHRyOwotICAgIG1fZnJhbWVOYW1lID0gU3RyaW5nKCk7Ci19Ci0KLXZvaWQg
UG9saWN5Q2FsbGJhY2s6OmNhbmNlbCgpCi17Ci0gICAgY2xlYXJSZXF1ZXN0KCk7Ci0gICAgaWYg
KG1fbmF2aWdhdGlvbkZ1bmN0aW9uKQotICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlvbihtX3Jl
cXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBmYWxzZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
YWxsYmFjay5jcHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAg
IyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaAkocmV2aXNpb24gMjIxMzIwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVk
ZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgotI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2lu
Y2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3Bh
Y2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvcm1TdGF0ZTsKLQotdXNpbmcgTmF2aWdhdGlvblBvbGlj
eURlY2lzaW9uRnVuY3Rpb24gPSBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYs
IEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGludWUpPjsKLQotY2xhc3MgUG9saWN5Q2FsbGJh
Y2sgewotcHVibGljOgotICAgIHZvaWQgc2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1T
dGF0ZSosIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwotCi0gICAgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29uc3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9Ci0g
ICAgdm9pZCBjbGVhclJlcXVlc3QoKTsKLQotICAgIHZvaWQgY2FsbChib29sIHNob3VsZENvbnRp
bnVlKTsKLSAgICB2b2lkIGNhbmNlbCgpOwotCi1wcml2YXRlOgotICAgIFJlc291cmNlUmVxdWVz
dCBtX3JlcXVlc3Q7Ci0gICAgUmVmUHRyPEZvcm1TdGF0ZT4gbV9mb3JtU3RhdGU7Ci0gICAgU3Ry
aW5nIG1fZnJhbWVOYW1lOwotICAgIE5hdmlnYXRpb25BY3Rpb24gbV9uYXZpZ2F0aW9uQWN0aW9u
OwotCi0gICAgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gbV9uYXZpZ2F0aW9uRnVu
Y3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9u
OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaApfX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkRlbGV0
ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAjIwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5j
cHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxG
b3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICNpbmNsdWRlICJRdWlja0xvb2suaCIKQEAgLTc1
LDEyICs3NiwxMiBAQCBQb2xpY3lDaGVja2VyOjpQb2xpY3lDaGVja2VyKEZyYW1lJiBmcmFtCiB7
CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24pCit2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5l
d1JlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KG5ld1JlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBtX2ZyYW1lLmxvYWRl
cigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCksIG51bGxwdHIsIFdURk1vdmUoZnVuY3Rpb24pKTsK
IH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBE
b2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24pCit2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNr
TmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgZGlk
UmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZvcm1TdGF0
ZSogZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9u
KQogewogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0aW9uID0gbG9hZGVyLT50cmlnZ2VyaW5nQWN0
aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5KCkpIHsKQEAgLTkxLDcgKzkyLDcgQEAgdm9p
ZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpYwogICAgIC8vIERvbid0IGFzayBt
b3JlIHRoYW4gb25jZSBmb3IgdGhlIHNhbWUgcmVxdWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBh
biBlbXB0eSBVUkwuCiAgICAgLy8gVGhpcyBhdm9pZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9m
IHRoZSBjbGllbnQuCiAgICAgaWYgKGVxdWFsSWdub3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwg
bG9hZGVyLT5sYXN0Q2hlY2tlZFJlcXVlc3QoKSkgfHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJl
cXVlc3QudXJsKCkuaXNFbXB0eSgpKSkgewotICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCAwLCB0
cnVlKTsKKyAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgbnVsbHB0ciwgdHJ1ZSk7CiAgICAgICAg
IGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0KHJlcXVlc3QpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtMTA2LDcgKzEwNyw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZp
Z2F0aW9uUG9saWMKICNlbmRpZgogICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1f
bG9hZFR5cGUpKQogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9h
ZDsKLSAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgMCwgc2hvdWxkQ29udGludWUpOworICAgICAg
ICBmdW5jdGlvbihyZXF1ZXN0LCBudWxscHRyLCBzaG91bGRDb250aW51ZSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTExNiwyMCArMTE3LDE2IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6
Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAgICAgICAgIC8vIHJldmVhbCB0aGF0IHRoZSBmcmFt
ZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90aGVyIGNyb3NzLW9y
aWdpbiBwYWdlIGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxlbWVudCgpLT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZh
bHNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgMCwgZmFsc2UpOwor
ICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBudWxscHRyLCBmYWxzZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBsb2FkZXItPnNldExhc3RDaGVja2VkUmVxdWVzdChyZXF1ZXN0KTsK
IAotICAgIG1fY2FsbGJhY2suc2V0KHJlcXVlc3QsIGZvcm1TdGF0ZSwgV1RGTW92ZShmdW5jdGlv
bikpOwotCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9v
ay1nZW5lcmF0ZWQgVVJMcyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgc2NoZW1lLgotICAgIGlmICgh
cmVxdWVzdC5pc051bGwoKSAmJiBpc1F1aWNrTG9va1ByZXZpZXdVUkwocmVxdWVzdC51cmwoKSkp
IHsKLSAgICAgICAgY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5VXNlKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlj
a0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKQorICAgICAgICByZXR1cm4gZnVuY3Rpb24o
cmVxdWVzdCwgZm9ybVN0YXRlLCB0cnVlKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQpAQCAtMTM5LDI5ICsxMzYsNDMgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpYwogICAgICAgICAgICAgaWYgKHVuYmxvY2tlZCkKICAgICAgICAgICAg
ICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7CiAgICAgICAgIH0pOwotICAgICAgICBjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUpOwotICAgICAgICByZXR1cm47
CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKICAgICB9CiAg
ICAgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgPSB7IH07CiAjZW5kaWYKIAogICAgIG1f
ZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IHRydWU7Ci0gICAgbV9zdWdnZXN0
ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxB
dG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24s
IHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUsIFt0aGlzXShQ
b2xpY3lBY3Rpb24gYWN0aW9uKSB7Ci0gICAgICAgIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9s
aWN5KGFjdGlvbik7CisgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25s
b2FkQXR0cmlidXRlKCkuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0
dHJpYnV0ZSgpOworICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Q29weSA9IHJlcXVlc3Q7Cisg
ICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwg
Zm9ybVN0YXRlLCBbdGhpcywgZnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9
IFdURk1vdmUocmVxdWVzdENvcHkpLCBmb3JtU3RhdGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSks
IHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSldKFBvbGljeUFj
dGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlv
bikgeworICAgICAgICBjYXNlIFBvbGljeURvd25sb2FkOgorICAgICAgICAgICAgbV9mcmFtZS5s
b2FkZXIoKS5zZXRPcmlnaW5hbFVSTEZvckRvd25sb2FkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAg
ICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0LCBz
dWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2Fz
ZSBQb2xpY3lJZ25vcmU6CisgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRy
LCBmYWxzZSk7CisgICAgICAgIGNhc2UgUG9saWN5VXNlOgorICAgICAgICAgICAgaWYgKCFtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICAg
ICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5j
bGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBmdW5jdGlvbihyZXF1ZXN0LCBmb3JtU3RhdGUuZ2V0KCksIHRydWUpOwor
ICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0pOwogICAgIG1f
ZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwogfQogCi12b2lkIFBv
bGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZp
Z2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSog
Zm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNp
b25GdW5jdGlvbiBmdW5jdGlvbikKK3ZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQ
b2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJh
bWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAg
ICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmlzU2FuZGJv
eGVkKFNhbmRib3hQb3B1cHMpKQotICAgICAgICByZXR1cm4gY29udGludWVBZnRlck5hdmlnYXRp
b25Qb2xpY3koUG9saWN5SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVs
bHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKIAogICAgIGlmICghRE9NV2luZG93OjphbGxvd1BvcFVw
KG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3ko
UG9saWN5SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9
LCB7IH0sIGZhbHNlKTsKIAotICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hE
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwg
Zm9ybVN0YXRlLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3Qs
IGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9u
QWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uKSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBv
bGljeUZvck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3Rh
dGUsIGZyYW1lTmFtZSwgW2ZyYW1lID0gbWFrZVJlZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0
YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBmcmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24s
IGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24p
IG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgewogICAgICAgICBjYXNl
IFBvbGljeURvd25sb2FkOgogICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnN0
YXJ0RG93bmxvYWQocmVxdWVzdCk7CkBAIC0xODAsOCArMTkxLDYgQEAgdm9pZCBQb2xpY3lDaGVj
a2VyOjpjaGVja05ld1dpbmRvd1BvbGljeQogdm9pZCBQb2xpY3lDaGVja2VyOjpzdG9wQ2hlY2so
KQogewogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuY2VsUG9saWN5Q2hlY2soKTsK
LSAgICBQb2xpY3lDYWxsYmFjayBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7Ci0gICAg
Y2FsbGJhY2suY2FuY2VsKCk7CiB9CiAKIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2Fubm90U2hvd01J
TUVUeXBlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAtMTk2LDM4ICsyMDUs
NiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNvbnRpbnVlTG9hZEFmdGVyV2lsCiAgICAgbV9mcmFt
ZS5sb2FkZXIoKS5jb250aW51ZUxvYWRBZnRlcldpbGxTdWJtaXRGb3JtKCk7CiB9CiAKLXZvaWQg
UG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5QWN0aW9u
IHBvbGljeSkKLXsKLSAgICBQb2xpY3lDYWxsYmFjayBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxs
YmFjayk7Ci0KLSAgICBib29sIHNob3VsZENvbnRpbnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsK
LQotICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAgICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAg
ICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDogewotICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0
IHJlcXVlc3QgPSBjYWxsYmFjay5yZXF1ZXN0KCk7Ci0gICAgICAgICAgICBtX2ZyYW1lLmxvYWRl
cigpLnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRSZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICAg
ICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2FkKHJlcXVlc3QsIG1fc3Vn
Z2VzdGVkRmlsZW5hbWUpOwotICAgICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFBvbGljeVVzZTogewot
ICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoY2FsbGJhY2sucmVxdWVzdCgpKTsK
LQotICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJl
cXVlc3QocmVxdWVzdCkpIHsKLSAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQ
b2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IoY2FsbGJh
Y2sucmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7
Ci0gICAgICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgY2FsbGJhY2suY2Fs
bChzaG91bGRDb250aW51ZSk7Ci19Ci0KIHZvaWQgUG9saWN5Q2hlY2tlcjo6aGFuZGxlVW5pbXBs
ZW1lbnRhYmxlUG9saWN5KGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewogICAgIG1fZGVs
ZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5ID0gdHJ1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAkocmV2aXNpb24gMjIxMzIwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyAr
MzAsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0j
aW5jbHVkZSAiUG9saWN5Q2FsbGJhY2suaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMzgsNiArMzcsMTAgQEAKICNp
bmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIuaCIKICNlbmRpZgogCituYW1lc3Bh
Y2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lPiBjbGFzcyBDb21wbGV0aW9uSGFuZGxlcjsKK30K
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudExvYWRlcjsKQEAgLTQ3LDcg
KzUwLDggQEAgY2xhc3MgTmF2aWdhdGlvbkFjdGlvbjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBj
bGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCi11c2luZyBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1T
dGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwg
Ym9vbCBzaG91bGRDb250aW51ZSk+OwordXNpbmcgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5j
dGlvbiA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
LCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFj
dGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpPjsKK3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGludWUpPjsKIAogY2xhc3MgUG9s
aWN5Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUG9saWN5Q2hlY2tlcik7CkBA
IC01NSw5ICs1OSw5IEBAIGNsYXNzIFBvbGljeUNoZWNrZXIgewogcHVibGljOgogICAgIGV4cGxp
Y2l0IFBvbGljeUNoZWNrZXIoRnJhbWUmKTsKIAotICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9u
c2UsIERvY3VtZW50TG9hZGVyKiwgRm9ybVN0YXRlKiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
RnVuY3Rpb24pOwotICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uKTsKLSAgICB2b2lkIGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmln
YXRpb25BY3Rpb24mJiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24pOworICAg
IHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wg
ZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgRm9ybVN0YXRlKiwg
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CisgICAgdm9pZCBjaGVja05hdmln
YXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJl
Y3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CisgICAgdm9p
ZCBjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQ
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAgICAgdm9pZCBzdG9wQ2hlY2soKTsKIApAQCAt
NjYsOCArNzAsNiBAQCBwdWJsaWM6CiAgICAgRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbG9hZFR5cGU7IH0KICAgICB2b2lkIHNldExvYWRUeXBlKEZyYW1lTG9hZFR5
cGUgbG9hZFR5cGUpIHsgbV9sb2FkVHlwZSA9IGxvYWRUeXBlOyB9CiAKLSAgICB2b2lkIHNldFN1
Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdn
ZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVuYW1lOyB9Ci0KICAgICBib29sIGRlbGVnYXRl
SXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNE
ZWNpZGluZ05hdmlnYXRpb25Qb2xpY3k7IH0KICAgICBib29sIGRlbGVnYXRlSXNIYW5kbGluZ1Vu
aW1wbGVtZW50YWJsZVBvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVJc0hhbmRsaW5n
VW5pbXBsZW1lbnRhYmxlUG9saWN5OyB9CiAKQEAgLTgzLDggKzg1LDYgQEAgcHVibGljOgogI2Vu
ZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQ
b2xpY3lBY3Rpb24pOwotCiAgICAgdm9pZCBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29u
c3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgRnJhbWUmIG1fZnJhbWU7CkBAIC05Niw4ICs5Niw2
IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBXZWJLaXQgY29udmV5cyB0aGlzIHZhbHVlIGFzIHRo
ZSBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSB2YWx1ZQogICAgIC8vIG9uIG5hdmlnYXRpb24g
YWN0aW9uIGRlbGVnYXRlIGNhbGxiYWNrcy4KICAgICBGcmFtZUxvYWRUeXBlIG1fbG9hZFR5cGU7
Ci0gICAgUG9saWN5Q2FsbGJhY2sgbV9jYWxsYmFjazsKLSAgICBTdHJpbmcgbV9zdWdnZXN0ZWRG
aWxlbmFtZTsKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBDb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXIgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXI7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjIxMzM2KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAxNy0wOC0yOSAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgUG9saWN5Q2Fs
bGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NjA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYklu
c3BlY3Rvci5jcHA6CisKIDIwMTctMDgtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBdXRvbWF0aWNhbGx5IGRldGVybWluZSBpZiBhIGNs
YXNzIGhhcyBhIG1vZGVybiBkZWNvZGVyCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3
LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVz
c1RyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI3LDcgKzIyNyw4IEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5l
cigKIAogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAgICBtX3BvbGljeUxpc3RlbmVy
SUQgPSAwOwotICAgIG1fcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOworICAgIGlmIChhdXRvIGZ1
bmN0aW9uID0gc3RkOjpleGNoYW5nZShtX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKKyAgICAg
ICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElEKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAyMjEz
MjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNC
YXNlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlckNsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvRnJhbWVMb2FkZXJUeXBlcy5oPgotI2luY2x1ZGUgPFdlYkNvcmUvUG9saWN5Q2hl
Y2tlci5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkocmV2aXNpb24gMjIxMzIwKQor
KysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0luc3BlY3RvclBhZ2VBZ2VudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvTWFpbkZyYW1lLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9OYXZp
Z2F0aW9uQWN0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvUGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxl
ci5oPgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMzIwKQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMTctMDgtMjkgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBTdG9wIHVzaW5nIFBvbGljeUNhbGxiYWNrCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzYwODgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciByZWNl
aXZlZFBvbGljeURlY2lzaW9uOl0pOgorCiAyMDE3LTA4LTI5ICBBbmR5IEVzdGVzICA8YWVzdGVz
QGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBVcHN0cmVhbSBXS1NldE1ldGFkYXRhVVJMKCkg
ZnJvbSBXZWJLaXRTeXN0ZW1JbnRlcmZhY2UKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
Lm1tCShyZXZpc2lvbiAyMjEzMjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQwOSw2
ICsyNDA5LDggQEAgLSAoaWQpaW5pdFdpdGhGcmFtZTooRnJhbWUqKWZyYW1lIHBvbGljeQogLSAo
dm9pZClpbnZhbGlkYXRlCiB7CiAgICAgX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBm
dW5jdGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKKyAgICAg
ICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCkBAIC0yNDI1
LDkgKzI0MjcsNyBAQCAtICh2b2lkKXJlY2VpdmVkUG9saWN5RGVjaXNpb246KFBvbGljeUFjCiAg
ICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRnJhbWVQb2xpY3lGdW5jdGlv
biBwb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUoX3BvbGljeUZ1bmN0aW9uKTsKLSAgICBfcG9saWN5
RnVuY3Rpb24gPSBudWxscHRyOwotCisgICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5j
dGlvbiA9IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKTsKICAgICBBU1NF
UlQocG9saWN5RnVuY3Rpb24pOwogICAgIHBvbGljeUZ1bmN0aW9uKGFjdGlvbik7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319378</attachid>
            <date>2017-08-30 10:33:05 -0700</date>
            <delta_ts>2017-08-31 13:39:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176088-20170830103304.patch</filename>
            <type>text/plain</type>
            <size>30437</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA4LTI5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBQb2xpY3lDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBpcyB3aGF0IGxhbWJkYXMgYXJlIGZvci4gTm8gY2hhbmdlIGluIGJlaGF2
aW9yLgorICAgICAgICBDYW5jZWxsaW5nIHRoZSBjYWxsYmFjayBpcyBub3cgdGhlIHJlc3BvbnNp
YmlsaXR5IG9mIHRoZSBGcmFtZUxvYWRlckNsaWVudCwgdG8gd2hvbSB3ZSBoYXZlIGdpdmVuIHRo
ZSBsYW1iZGEuCisgICAgICAgIFRoYXQgaXMgd2h5IHRoZXJlIGFyZSBjaGFuZ2VzIGluIFdlYktp
dCBhbmQgV2ViS2l0TGVnYWN5IHdoZXJlIHRoZSBGcmFtZUxvYWRlckNsaWVudDo6Y2FuY2VsUG9s
aWN5Q2hlY2sgZmluZHMgdGhlIGxhbWJkYSBpdCBoYXMgc3RvcmVkLgorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoK
KyAgICAgICAgKiBsb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwOiBSZW1vdmVkLgorICAgICAgICAq
IGxvYWRlci9Qb2xpY3lDYWxsYmFjay5oOiBSZW1vdmVkLgorICAgICAgICAqIGxvYWRlci9Qb2xp
Y3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmF2
aWdhdGlvblBvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjaGVja05l
d1dpbmRvd1BvbGljeSk6CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpzdG9wQ2hl
Y2spOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5hdmln
YXRpb25Qb2xpY3kpOiBEZWxldGVkLgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmg6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpzZXRTdWdnZXN0ZWRGaWxlbmFtZSk6
IERlbGV0ZWQuCisKIDIwMTctMDgtMjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIENhY2hlU3RvcmFnZSBkb2VzIG5vdCBuZWVkIHRvIHNvcnQgaXRzIGNhY2hl
cwpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMDQyLDcgKzIwNDIsNiBA
QCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
CiAgICAgbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAogICAgIGxvYWRlci9Q
aW5nTG9hZGVyLmNwcAotICAgIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAKICAgICBsb2FkZXIv
UG9saWN5Q2hlY2tlci5jcHAKICAgICBsb2FkZXIvUHJvZ3Jlc3NUcmFja2VyLmNwcAogICAgIGxv
YWRlci9SZXNvdXJjZUNyeXB0b2dyYXBoaWNEaWdlc3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMjEz
MjApCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTQwNDcsOCArNDA0Nyw2IEBACiAJCTk1MjA3NjA2MUYyNjc1RkUw
MDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2Vy
VHlwZXMuaCAqLzsgfTsKIAkJOTZBQkE0MjMxNEJDQjgwRTAwRDU2MjA0IC8qIEdyYXBoaWNzQ29u
dGV4dDNET3BlbkdMQ29tbW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFwaGljc0NvbnRleHQz
RE9wZW5HTENvbW1vbi5jcHAgKi87IH07CiAJCTk3MDNFMUJGMTVEQzRFMzcwMDFGMjRDOCAvKiBK
U1ZvaWRDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5N0U5RUM4QjE1REM0OTJGMDA0RjJFNzEgLyogSlNWb2lkQ2FsbGJhY2suY3BwICov
OyB9OwotCQk5NzA1OTk3NzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMxMDdE
OTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKLQkJOTcwNTk5NzgxMDdE
OTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5
Q2FsbGJhY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5NzA1OTk3OTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3NTEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi87IH07CiAJCTk3MDU5OTdBMTA3RDk3NTIw
MEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3
MEI3MjhBMTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEz
NyAvKiBFdmVudEludGVyZmFjZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwpAQCAtMTIzMDQsOCArMTIzMDIsNiBAQAogCQk5NTIwNzYwMTFGMjY3NUY5
MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBD
YWxsVHJhY2VyVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDYWxs
YmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk3MDU5OTc0MTA3RDk3NTIw
MEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb2xpY3lDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1
OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzBCNzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZl
bnRJbnRlcmZhY2VzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV2ZW50SW50
ZXJmYWNlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQxNzMsOCArMjQxNjks
NiBAQAogCQkJCTY1NkQzNzJCMEFEQkE1REUwMEE0NTU0RCAvKiBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5oICovLAogCQkJCUQwRkYyQTVCMTFGOEM0NUEwMDdFNzRFMCAvKiBQaW5nTG9hZGVy
LmNwcCAqLywKIAkJCQlEMEZGMkE1QzExRjhDNDVBMDA3RTc0RTAgLyogUGluZ0xvYWRlci5oICov
LAotCQkJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8s
Ci0JCQkJOTcwNTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi8sCiAJ
CQkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovLAogCQkJ
CTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8sCiAJCQkJMUEy
QTY4MjEwQjVCRURFNzAwMDJBNDgwIC8qIFByb2dyZXNzVHJhY2tlci5jcHAgKi8sCkBAIC0yOTI4
OSw3ICsyOTI4Myw2IEBACiAJCQkJQjJCMUY3MTcwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJF
dmVudHNIaXRSdWxlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJM0ZGODEzQTcxREJBODY0MDAwOUJG
MDAxIC8qIFBvaW50ZXJMb2NrQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODQ3MzBE
OTIxMjQ4RjBCMzAwRDNBOUM5IC8qIFBvaW50TGlnaHRTb3VyY2UuaCBpbiBIZWFkZXJzICovLAot
CQkJCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTcwNTk5N0ExMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCUZENDVBOTU3MTc1RDQxNEMwMEMyMUVDOCAvKiBQb2x5Z29uU2hh
cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzRFMjBBMTBBMUY0NEYwMEY5NUU2RiAvKiBQb3BT
dGF0ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTMzMjU3LDcgKzMzMjUwLDYgQEAKIAkJCQlC
MkIxRjcxNjBEMDBDQUE4MDA0QUVBNjQgLyogUG9pbnRlckV2ZW50c0hpdFJ1bGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTVDRkM0MzUwMTkyNDA5RTMwMEEwRDNCNSAvKiBQb2ludGVyTG9ja0Nv
bnRyb2xsZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTFFMTE1NDYxMzAxNUM0RTAwNTRBQzhD
IC8qIFBvaW50TGlnaHRTb3VyY2UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJOTcwNTk5NzcxMDdE
OTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUZENDVBOTU5MTc1RDQxNzEwMEMyMUVDOCAvKiBQb2x5Z29uU2hhcGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTE4OUYwREUxMEI0NkIwRTAwRjNDNzM5IC8qIFBvcFN0YXRlRXZlbnQu
Y3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAKICNpbmNsdWRl
ICJTdWJyZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgIlRleHRSZXNvdXJjZURlY29kZXIuaCIK
ICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFu
ZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWYuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksNyBA
QAogI2luY2x1ZGUgIlVzZXJDb250ZW50Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIldpbmRvd0Zl
YXR1cmVzLmgiCiAjaW5jbHVkZSAiWE1MRG9jdW1lbnRQYXJzZXIuaCIKKyNpbmNsdWRlIDx3dGYv
Q29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDIyMTMyMCkK
KysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC04NSw3ICs4NSw2IEBAIGNsYXNzIE1lc3NhZ2VFdmVudDsKIGNsYXNzIE5hdmlnYXRp
b25BY3Rpb247CiBjbGFzcyBQYWdlOwogY2xhc3MgUGx1Z2luVmlld0Jhc2U7Ci1jbGFzcyBQb2xp
Y3lDaGVja2VyOwogY2xhc3MgUHJldmlld0xvYWRlckNsaWVudDsKIGNsYXNzIFByb3RlY3Rpb25T
cGFjZTsKIGNsYXNzIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcAkocmV2aXNpb24gMjIxMzIwKQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDcw
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotICogQ29weXJpZ2h0IChD
KSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRw
Oi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKLSAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKLSAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAq
ICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUG9saWN5Q2Fs
bGJhY2suaCIKLQotI2luY2x1ZGUgIkZvcm1TdGF0ZS5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0j
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpzZXQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKLXsKLSAgICBtX3JlcXVlc3QgPSByZXF1
ZXN0OwotICAgIG1fZm9ybVN0YXRlID0gZm9ybVN0YXRlOwotICAgIG1fZnJhbWVOYW1lID0gU3Ry
aW5nKCk7Ci0KLSAgICBtX25hdmlnYXRpb25GdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pOwot
fQotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpjYWxsKGJvb2wgc2hvdWxkQ29udGludWUpCi17Ci0g
ICAgaWYgKG1fbmF2aWdhdGlvbkZ1bmN0aW9uKQotICAgICAgICBtX25hdmlnYXRpb25GdW5jdGlv
bihtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBzaG91bGRDb250aW51ZSk7Ci19Ci0KLXZv
aWQgUG9saWN5Q2FsbGJhY2s6OmNsZWFyUmVxdWVzdCgpCi17Ci0gICAgbV9yZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9mb3JtU3RhdGUgPSBudWxscHRyOwotICAgIG1fZnJhbWVO
YW1lID0gU3RyaW5nKCk7Ci19Ci0KLXZvaWQgUG9saWN5Q2FsbGJhY2s6OmNhbmNlbCgpCi17Ci0g
ICAgY2xlYXJSZXF1ZXN0KCk7Ci0gICAgaWYgKG1fbmF2aWdhdGlvbkZ1bmN0aW9uKQotICAgICAg
ICBtX25hdmlnYXRpb25GdW5jdGlvbihtX3JlcXVlc3QsIG1fZm9ybVN0YXRlLmdldCgpLCBmYWxz
ZSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVk
OiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suaAko
cmV2aXNpb24gMjIxMzIwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNr
LmgJKG5vbmV4aXN0ZW50KQpAQCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4g
Ci0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJG
cmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiTmF2aWdhdGlvbkFjdGlvbi5oIgotI2luY2x1
ZGUgIlJlc291cmNlUmVxdWVzdC5oIgotI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Ci0jaW5jbHVkZSA8
d3RmL0Z1bmN0aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEZvcm1TdGF0
ZTsKLQotdXNpbmcgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBGdW5jdGlvbjx2
b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGJvb2wgc2hvdWxkQ29udGlu
dWUpPjsKLQotY2xhc3MgUG9saWN5Q2FsbGJhY2sgewotcHVibGljOgotICAgIHZvaWQgc2V0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uJiYpOwotCi0gICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KCkgY29u
c3QgeyByZXR1cm4gbV9yZXF1ZXN0OyB9Ci0gICAgdm9pZCBjbGVhclJlcXVlc3QoKTsKLQotICAg
IHZvaWQgY2FsbChib29sIHNob3VsZENvbnRpbnVlKTsKLSAgICB2b2lkIGNhbmNlbCgpOwotCi1w
cml2YXRlOgotICAgIFJlc291cmNlUmVxdWVzdCBtX3JlcXVlc3Q7Ci0gICAgUmVmUHRyPEZvcm1T
dGF0ZT4gbV9mb3JtU3RhdGU7Ci0gICAgU3RyaW5nIG1fZnJhbWVOYW1lOwotICAgIE5hdmlnYXRp
b25BY3Rpb24gbV9uYXZpZ2F0aW9uQWN0aW9uOwotCi0gICAgTmF2aWdhdGlvblBvbGljeURlY2lz
aW9uRnVuY3Rpb24gbV9uYXZpZ2F0aW9uRnVuY3Rpb247Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5
Q2FsbGJhY2suaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkRlbGV0ZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTEgKzAsMCAj
IwotbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxG
cmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQbHVnSW5FbGVtZW50LmgiCisjaW5j
bHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICNp
bmNsdWRlICJRdWlja0xvb2suaCIKQEAgLTc1LDEyICs3NiwxMiBAQCBQb2xpY3lDaGVja2VyOjpQ
b2xpY3lDaGVja2VyKEZyYW1lJiBmcmFtCiB7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVzdCwgYm9v
bCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVu
Y3Rpb24gZnVuY3Rpb24pCit2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
eShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24p
CiB7CiAgICAgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KG5ld1JlcXVlc3QsIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlLCBtX2ZyYW1lLmxvYWRlcigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCksIG51
bGxwdHIsIFdURk1vdmUoZnVuY3Rpb24pKTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVj
a05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRp
ZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3Rh
dGUqIGZvcm1TdGF0ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24p
Cit2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIE5hdmlnYXRpb25BY3Rpb24gYWN0
aW9uID0gbG9hZGVyLT50cmlnZ2VyaW5nQWN0aW9uKCk7CiAgICAgaWYgKGFjdGlvbi5pc0VtcHR5
KCkpIHsKQEAgLTkxLDcgKzkyLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpYwogICAgIC8vIERvbid0IGFzayBtb3JlIHRoYW4gb25jZSBmb3IgdGhlIHNhbWUgcmVx
dWVzdCBvciBpZiB3ZSBhcmUgbG9hZGluZyBhbiBlbXB0eSBVUkwuCiAgICAgLy8gVGhpcyBhdm9p
ZHMgY29uZnVzaW9uIG9uIHRoZSBwYXJ0IG9mIHRoZSBjbGllbnQuCiAgICAgaWYgKGVxdWFsSWdu
b3JpbmdIZWFkZXJGaWVsZHMocmVxdWVzdCwgbG9hZGVyLT5sYXN0Q2hlY2tlZFJlcXVlc3QoKSkg
fHwgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKSkgewotICAg
ICAgICBmdW5jdGlvbihyZXF1ZXN0LCAwLCB0cnVlKTsKKyAgICAgICAgZnVuY3Rpb24ocmVxdWVz
dCwgbnVsbHB0ciwgdHJ1ZSk7CiAgICAgICAgIGxvYWRlci0+c2V0TGFzdENoZWNrZWRSZXF1ZXN0
KHJlcXVlc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTA2LDcgKzEwNyw3IEBAIHZv
aWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICNlbmRpZgogICAgICAgICBp
ZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQogICAgICAgICAgICAgbV9sb2Fk
VHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKLSAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwg
MCwgc2hvdWxkQ29udGludWUpOworICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBudWxscHRyLCBz
aG91bGRDb250aW51ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExNiwyMCArMTE3
LDE2IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAgICAg
ICAgIC8vIHJldmVhbCB0aGF0IHRoZSBmcmFtZSB3YXMgYmxvY2tlZC4gVGhpcyB3YXksIGl0IGxv
b2tzIGxpa2UgYW55IG90aGVyIGNyb3NzLW9yaWdpbiBwYWdlIGxvYWQuCiAgICAgICAgICAgICBt
X2ZyYW1lLm93bmVyRWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgICAgIH0KLSAgICAgICAgZnVu
Y3Rpb24ocmVxdWVzdCwgMCwgZmFsc2UpOworICAgICAgICBmdW5jdGlvbihyZXF1ZXN0LCBudWxs
cHRyLCBmYWxzZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBsb2FkZXItPnNldExh
c3RDaGVja2VkUmVxdWVzdChyZXF1ZXN0KTsKIAotICAgIG1fY2FsbGJhY2suc2V0KHJlcXVlc3Qs
IGZvcm1TdGF0ZSwgV1RGTW92ZShmdW5jdGlvbikpOwotCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAg
ICAgLy8gQWx3YXlzIGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJMcyBiYXNlZCBvbiB0aGUg
cHJvdG9jb2wgc2NoZW1lLgotICAgIGlmICghcmVxdWVzdC5pc051bGwoKSAmJiBpc1F1aWNrTG9v
a1ByZXZpZXdVUkwocmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgY29udGludWVBZnRlck5hdmln
YXRpb25Qb2xpY3koUG9saWN5VXNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBpZiAo
IXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkp
KQorICAgICAgICByZXR1cm4gZnVuY3Rpb24ocmVxdWVzdCwgZm9ybVN0YXRlLCB0cnVlKTsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAtMTM5LDI5ICsxMzYsNDMg
QEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpYwogICAgICAgICAgICAg
aWYgKHVuYmxvY2tlZCkKICAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCkucmVsb2FkKCk7
CiAgICAgICAgIH0pOwotICAgICAgICBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xp
Y3lJZ25vcmUpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0s
IG51bGxwdHIsIGZhbHNlKTsKICAgICB9CiAgICAgbV9jb250ZW50RmlsdGVyVW5ibG9ja0hhbmRs
ZXIgPSB7IH07CiAjZW5kaWYKIAogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBv
bGljeSA9IHRydWU7Ci0gICAgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0
dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1
dGUoKTsKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVjdFJl
c3BvbnNlLCBmb3JtU3RhdGUsIFt0aGlzXShQb2xpY3lBY3Rpb24gYWN0aW9uKSB7Ci0gICAgICAg
IGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KGFjdGlvbik7CisgICAgU3RyaW5nIHN1Z2dl
c3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0cmlidXRlKCkuaXNFbXB0eSgpID8gbnVs
bEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpOworICAgIFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0Q29weSA9IHJlcXVlc3Q7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLCBbdGhpcywgZnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKSwgcmVxdWVzdCA9IFdURk1vdmUocmVxdWVzdENvcHkpLCBmb3JtU3Rh
dGUgPSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShz
dWdnZXN0ZWRGaWxlbmFtZSldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewor
ICAgICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgeworICAgICAgICBjYXNlIFBvbGljeURvd25s
b2FkOgorICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5zZXRPcmlnaW5hbFVSTEZvckRvd25s
b2FkUmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50
KCkuc3RhcnREb3dubG9hZChyZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgICAg
ICBGQUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CisgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAgICAgIGNhc2UgUG9saWN5
VXNlOgorICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFi
bGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IocmVx
dWVzdCkpOworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZh
bHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyZXF1ZXN0
LCBmb3JtU3RhdGUuZ2V0KCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0pOwogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBv
bGljeSA9IGZhbHNlOwogfQogCi12b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9s
aWN5KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1l
TmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbikKK3ZvaWQgUG9s
aWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmln
YXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBm
b3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBt
X2ZyYW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hQb3B1cHMpKQotICAgICAgICBy
ZXR1cm4gY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3JlKTsKKyAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKIAogICAg
IGlmICghRE9NV2luZG93OjphbGxvd1BvcFVwKG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gY29u
dGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3JlKTsKKyAgICAgICAgcmV0dXJu
IGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKIAotICAgIG1fZnJhbWUu
bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
bmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFtmcmFtZSA9
IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0
YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVu
Y3Rpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgbV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0
aW9uQWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW2ZyYW1lID0gbWFrZVJl
ZihtX2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBm
cmFtZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbild
KFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBv
bGljeUFjdGlvbikgewogICAgICAgICBjYXNlIFBvbGljeURvd25sb2FkOgogICAgICAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCk7CkBAIC0xODAs
OCArMTkxLDYgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeQogdm9p
ZCBQb2xpY3lDaGVja2VyOjpzdG9wQ2hlY2soKQogewogICAgIG1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkuY2FuY2VsUG9saWN5Q2hlY2soKTsKLSAgICBQb2xpY3lDYWxsYmFjayBjYWxsYmFjayA9
IFdURk1vdmUobV9jYWxsYmFjayk7Ci0gICAgY2FsbGJhY2suY2FuY2VsKCk7CiB9CiAKIHZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2Fubm90U2hvd01JTUVUeXBlKGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
IHJlc3BvbnNlKQpAQCAtMTk2LDM4ICsyMDUsNiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNvbnRp
bnVlTG9hZEFmdGVyV2lsCiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jb250aW51ZUxvYWRBZnRlcldp
bGxTdWJtaXRGb3JtKCk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBQb2xpY3lDYWxsYmFj
ayBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7Ci0KLSAgICBib29sIHNob3VsZENvbnRp
bnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsKLQotICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAg
ICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAgICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDogewot
ICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBjYWxsYmFjay5yZXF1ZXN0KCk7
Ci0gICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5z
dGFydERvd25sb2FkKHJlcXVlc3QsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICAgICAg
Y2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFBvbGljeVVzZTogewotICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoY2FsbGJhY2sucmVxdWVzdCgpKTsKLQotICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKLSAgICAgICAgICAg
ICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5ub3RTaG93VVJMRXJyb3IoY2FsbGJhY2sucmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAg
ICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgY2FsbGJhY2suY2FsbChzaG91bGRDb250aW51ZSk7Ci19Ci0KIHZvaWQg
UG9saWN5Q2hlY2tlcjo6aGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogewogICAgIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxl
UG9saWN5ID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAko
cmV2aXNpb24gMjIxMzIwKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiUG9saWN5Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMzgsNiArMzcsMTAgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIuaCIKICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBDb21wbGV0aW9uSGFuZGxlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTQ3LDcgKzUwLDggQEAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCi11c2lu
ZyBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk+OwordXNpbmcg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpPjsK
K3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGJvb2wgc2hv
dWxkQ29udGludWUpPjsKIAogY2xhc3MgUG9saWN5Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUG9saWN5Q2hlY2tlcik7CkBAIC01NSw5ICs1OSw5IEBAIGNsYXNzIFBvbGljeUNo
ZWNrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBvbGljeUNoZWNrZXIoRnJhbWUmKTsKIAot
ICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgRm9ybVN0YXRl
KiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24pOwotICAgIHZvaWQgY2hlY2tOYXZp
Z2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uKTsKLSAgICB2b2lk
IGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uRnVuY3Rpb24pOworICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERv
Y3VtZW50TG9hZGVyKiwgRm9ybVN0YXRlKiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rp
b24mJik7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24mJik7CisgICAgdm9pZCBjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0
aW9uQWN0aW9uJiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAg
ICAgdm9pZCBzdG9wQ2hlY2soKTsKIApAQCAtNjYsOCArNzAsNiBAQCBwdWJsaWM6CiAgICAgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGU7IH0KICAgICB2
b2lkIHNldExvYWRUeXBlKEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpIHsgbV9sb2FkVHlwZSA9IGxv
YWRUeXBlOyB9CiAKLSAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVu
YW1lOyB9Ci0KICAgICBib29sIGRlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3k7IH0KICAg
ICBib29sIGRlbGVnYXRlSXNIYW5kbGluZ1VuaW1wbGVtZW50YWJsZVBvbGljeSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5OyB9CiAKQEAg
LTgzLDggKzg1LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lBY3Rpb24pOwotCiAgICAgdm9pZCBoYW5k
bGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgRnJh
bWUmIG1fZnJhbWU7CkBAIC05Niw4ICs5Niw2IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBXZWJL
aXQgY29udmV5cyB0aGlzIHZhbHVlIGFzIHRoZSBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSB2
YWx1ZQogICAgIC8vIG9uIG5hdmlnYXRpb24gYWN0aW9uIGRlbGVnYXRlIGNhbGxiYWNrcy4KICAg
ICBGcmFtZUxvYWRUeXBlIG1fbG9hZFR5cGU7Ci0gICAgUG9saWN5Q2FsbGJhY2sgbV9jYWxsYmFj
azsKLSAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV9jb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIxMzM2KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
Ny0wOC0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFN0b3AgdXNpbmcgUG9saWN5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZy
YW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0
ZW5lcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHA6CisKIDIwMTctMDgtMjkgIEFs
ZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBBdXRv
bWF0aWNhbGx5IGRldGVybWluZSBpZiBhIGNsYXNzIGhhcyBhIG1vZGVybiBkZWNvZGVyCkluZGV4
OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIyMTMyMCkKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcgQEAKICNpbmNsdWRlIDxXZWJDb3Jl
L1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRhdGEuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1BsdWdpbkRvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENvbnRyb2xsZXIuaD4K
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJ
KHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDcgKzIyNyw4IEBAIHZvaWQgV2ViRnJh
bWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigKIAogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9
IHsgfTsKICAgICBtX3BvbGljeUxpc3RlbmVySUQgPSAwOwotICAgIG1fcG9saWN5RnVuY3Rpb24g
PSBudWxscHRyOworICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShtX3BvbGlj
eUZ1bmN0aW9uLCBudWxscHRyKSkKKyAgICAgICAgZnVuY3Rpb24oUG9saWN5SWdub3JlKTsKIH0K
IAogdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGxpc3Rl
bmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgRG93bmxv
YWRJRCBkb3dubG9hZElEKQpAQCAtMjQxLDcgKzI0Miw4IEBAIHZvaWQgV2ViRnJhbWU6OmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbigKICAgICBpZiAobGlzdGVuZXJJRCAhPSBtX3BvbGljeUxpc3Rl
bmVySUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVChtX3BvbGljeUZ1bmN0aW9uKTsK
KyAgICBpZiAoIW1fcG9saWN5RnVuY3Rpb24pCisgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1l
UG9saWN5RnVuY3Rpb24gZnVuY3Rpb24gPSBXVEZNb3ZlKG1fcG9saWN5RnVuY3Rpb24pOwogCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHJldmlz
aW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyQ2xpZW50Lmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+Ci0jaW5jbHVkZSA8V2ViQ29yZS9Q
b2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYv
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgpJbmRleDogU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAy
MjEzMjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9J
bnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yUGFn
ZUFnZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJD
b3JlL05hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVk
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRD
b250cm9sbGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjEzMjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wOC0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3AgdXNpbmcgUG9saWN5Q2FsbGJhY2sK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA4OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW06CisgICAgICAgICgtW1dlYkZyYW1lUG9s
aWN5TGlzdGVuZXIgaW52YWxpZGF0ZV0pOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyIHJlY2VpdmVkUG9saWN5RGVjaXNpb246XSk6CisKIDIwMTctMDgtMjkgIEFuZHkgRXN0ZXMg
IDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtNYWNdIFVwc3RyZWFtIFdLU2V0TWV0YWRh
dGFVUkwoKSBmcm9tIFdlYktpdFN5c3RlbUludGVyZmFjZQpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0JKHJldmlzaW9uIDIyMTMyMCkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDA5LDYgKzI0MDksOCBAQCAtIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJhbWUgcG9s
aWN5CiAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfZnJhbWUgPSBudWxscHRyOworICAgIGlm
IChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51
bGxwdHIpKQorICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lJZ25vcmUpOwogfQogCiAtICh2
b2lkKWRlYWxsb2MKQEAgLTI0MjUsMTEgKzI0MjcsOCBAQCAtICh2b2lkKXJlY2VpdmVkUG9saWN5
RGVjaXNpb246KFBvbGljeUFjCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUoX3BvbGljeUZ1
bmN0aW9uKTsKLSAgICBfcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOwotCi0gICAgQVNTRVJUKHBv
bGljeUZ1bmN0aW9uKTsKLSAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOworICAgIGlmIChhdXRv
IHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51bGxwdHIp
KQorICAgICAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOwogfQogCiAtICh2b2lkKWlnbm9yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319513</attachid>
            <date>2017-08-31 13:39:06 -0700</date>
            <delta_ts>2017-09-25 15:12:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176088-20170831133905.patch</filename>
            <type>text/plain</type>
            <size>30457</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA4LTMxICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBQb2xpY3lDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICBUaGlzIGlzIHdoYXQgbGFtYmRhcyBhcmUgZm9yLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisgICAgICAgIENhbmNlbGxpbmcgdGhlIGNhbGxiYWNrIGlzIG5vdyB0aGUgcmVzcG9uc2liaWxp
dHkgb2YgdGhlIEZyYW1lTG9hZGVyQ2xpZW50LCB0byB3aG9tIHdlIGhhdmUgZ2l2ZW4gdGhlIGxh
bWJkYS4KKyAgICAgICAgVGhhdCBpcyB3aHkgdGhlcmUgYXJlIGNoYW5nZXMgaW4gV2ViS2l0IGFu
ZCBXZWJLaXRMZWdhY3kgd2hlcmUgdGhlIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lD
aGVjayBmaW5kcyB0aGUgbGFtYmRhIGl0IGhhcyBzdG9yZWQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2lu
ZG93UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OnN0b3BDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlv
blBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKTogRGVs
ZXRlZC4KKwogMjAxNy0wOC0yNSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAK
ICAgICAgICAgRGVtYXJjYXRlIGNvZGUgYWRkZWQgZHVlIHRvIGxhY2sgb2YgTlNETUkgZm9yIGFn
Z3JlZ2F0ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAyMjEyMjApCisrKyBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAzNCw3ICsy
MDM0LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1
bGVyLmNwcAogICAgIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKICAgICBs
b2FkZXIvUGluZ0xvYWRlci5jcHAKLSAgICBsb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCiAgICAg
bG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCiAgICAgbG9hZGVyL1Byb2dyZXNzVHJhY2tlci5jcHAK
ICAgICBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMjIxMjIwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MDM3LDggKzQwMzcsNiBAQAogCQk5NTIwNzYwNjFG
MjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2Fs
bFRyYWNlclR5cGVzLmggKi87IH07CiAJCTk2QUJBNDIzMTRCQ0I4MEUwMEQ1NjIwNCAvKiBHcmFw
aGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQgLyogR3JhcGhpY3ND
b250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovOyB9OwogCQk5NzAzRTFCRjE1REM0RTM3MDAxRjI0
QzggLyogSlNWb2lkQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpTVm9pZENhbGxiYWNr
LmNwcCAqLzsgfTsKLQkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5
OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87IH07Ci0JCTk3MDU5
OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1MjAwQTUwQTdDIC8q
IFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzUx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9OwogCQk5NzA1OTk3QTEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk5NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBCNzI4OTE0NEZGQUM2
MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyMjgwLDggKzEyMjc4LDYgQEAKIAkJOTUyMDc2MDEx
RjI2NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTIwNzYwMjFGMjY3NUY5MDA3RDJB
QUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxUcmFjZXJUeXBlcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQg
LyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9s
aWN5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzA1OTk3NDEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lD
aGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwQjcyODkxNDRGRkFDNjAwRjAwQTM3
IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
dmVudEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MTMzLDgg
KzI0MTI5LDYgQEAKIAkJCQk2NTZEMzcyQjBBREJBNURFMDBBNDU1NEQgLyogTmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXIuaCAqLywKIAkJCQlEMEZGMkE1QjExRjhDNDVBMDA3RTc0RTAgLyogUGlu
Z0xvYWRlci5jcHAgKi8sCiAJCQkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUwIC8qIFBpbmdMb2Fk
ZXIuaCAqLywKLQkJCQk5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
Y3BwICovLAotCQkJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5o
ICovLAogCQkJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAq
LywKIAkJCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oICovLAog
CQkJCTFBMkE2ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNrZXIuY3BwICovLApA
QCAtMjkyNDUsNyArMjkyMzksNiBAQAogCQkJCUIyQjFGNzE3MEQwMENBQTgwMDRBRUE2NCAvKiBQ
b2ludGVyRXZlbnRzSGl0UnVsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNGRjgxM0E3MURCQTg2
NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg0NzMwRDkyMTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNlLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAogCQkJCTk3MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1NzE3NUQ0MTRDMDBDMjFFQzggLyogUG9s
eWdvblNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0RTIwQTEwQTFGNDRGMDBGOTVFNkYg
LyogUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzIwNyw3ICszMzIwMCw2IEBA
CiAJCQkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVudHNIaXRSdWxlcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZDNDM1MDE5MjQwOUUzMDBBMEQzQjUgLyogUG9pbnRl
ckxvY2tDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTExNTQ2MTMwMTVDNEUw
MDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTk3MDU5
OTc3MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk5NzA1OTk3OTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9seWdvblNoYXBlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxODlGMERFMTBCNDZCMEUwMEYzQzczOSAvKiBQb3BTdGF0
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBACiAj
aW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNv
ZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpJbmRleDogU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiAr
MTE5LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJX
aW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2VyLmgiCisjaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAy
MjEyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtODUsNyArODUsNiBAQCBjbGFzcyBNZXNzYWdlRXZlbnQ7CiBjbGFzcyBO
YXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsdWdpblZpZXdCYXNlOwotY2xh
c3MgUG9saWN5Q2hlY2tlcjsKIGNsYXNzIFByZXZpZXdMb2FkZXJDbGllbnQ7CiBjbGFzcyBQcm90
ZWN0aW9uU3BhY2U7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAJKHJldmlzaW9uIDIyMTIyMCkKKysr
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAJKG5vbmV4aXN0ZW50KQpA
QCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAw
OCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqIENvcHly
aWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gCi0gKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBB
TlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlBv
bGljeUNhbGxiYWNrLmgiCi0KLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKLSNpbmNsdWRlICJGcmFt
ZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50
LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBQb2xpY3lDYWxsYmFjazo6c2V0KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCi17Ci0gICAgbV9yZXF1ZXN0
ID0gcmVxdWVzdDsKLSAgICBtX2Zvcm1TdGF0ZSA9IGZvcm1TdGF0ZTsKLSAgICBtX2ZyYW1lTmFt
ZSA9IFN0cmluZygpOwotCi0gICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24gPSBXVEZNb3ZlKGZ1bmN0
aW9uKTsKLX0KLQotdm9pZCBQb2xpY3lDYWxsYmFjazo6Y2FsbChib29sIHNob3VsZENvbnRpbnVl
KQotewotICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikKLSAgICAgICAgbV9uYXZpZ2F0aW9u
RnVuY3Rpb24obV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgc2hvdWxkQ29udGludWUpOwot
fQotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpjbGVhclJlcXVlc3QoKQotewotICAgIG1fcmVxdWVz
dCA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgIG1fZm9ybVN0YXRlID0gbnVsbHB0cjsKLSAgICBt
X2ZyYW1lTmFtZSA9IFN0cmluZygpOwotfQotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpjYW5jZWwo
KQotewotICAgIGNsZWFyUmVxdWVzdCgpOwotICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikK
LSAgICAgICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24obV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQo
KSwgZmFsc2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
RGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNh
bGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNhbGxi
YWNrLmgJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
YWxsYmFjay5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0g
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5j
bHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIk5hdmlnYXRpb25BY3Rpb24uaCIK
LSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlIDxmdW5jdGlvbmFsPgotI2lu
Y2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBG
b3JtU3RhdGU7Ci0KLXVzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gRnVu
Y3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBib29sIHNob3Vs
ZENvbnRpbnVlKT47Ci0KLWNsYXNzIFBvbGljeUNhbGxiYWNrIHsKLXB1YmxpYzoKLSAgICB2b2lk
IHNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBOYXZpZ2F0aW9uUG9saWN5
RGVjaXNpb25GdW5jdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIHZvaWQgY2xlYXJSZXF1ZXN0KCk7
Ci0KLSAgICB2b2lkIGNhbGwoYm9vbCBzaG91bGRDb250aW51ZSk7Ci0gICAgdm9pZCBjYW5jZWwo
KTsKLQotcHJpdmF0ZToKLSAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0OwotICAgIFJlZlB0
cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwotICAgIFN0cmluZyBtX2ZyYW1lTmFtZTsKLSAgICBO
YXZpZ2F0aW9uQWN0aW9uIG1fbmF2aWdhdGlvbkFjdGlvbjsKLQotICAgIE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbkZ1bmN0aW9uIG1fbmF2aWdhdGlvbkZ1bmN0aW9uOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNhbGxiYWNrLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0x
ICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lvbiAyMjEyMjApCisr
KyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1Z0luRWxlbWVudC5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiAjaWYgVVNFKFFVSUNLX0xP
T0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03NSwxMiArNzYsMTIgQEAgUG9saWN5Q2hl
Y2tlcjo6UG9saWN5Q2hlY2tlcihGcmFtZSYgZnJhbQogewogfQogCi12b2lkIFBvbGljeUNoZWNr
ZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVl
c3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbkZ1bmN0aW9uIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRp
b25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBib29sIGRpZFJlY2Vp
dmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1
bmN0aW9uKQogewogICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1ZXN0LCBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVEb2N1bWVudExvYWRl
cigpLCBudWxscHRyLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tl
cjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
Ym9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwg
Rm9ybVN0YXRlKiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1
bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNl
LCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwgTmF2aWdhdGlv
blBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBOYXZpZ2F0aW9uQWN0
aW9uIGFjdGlvbiA9IGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpOwogICAgIGlmIChhY3Rpb24u
aXNFbXB0eSgpKSB7CkBAIC05MSw3ICs5Miw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWMKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9uY2UgZm9yIHRoZSBz
YW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJMLgogICAgIC8vIFRo
aXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50LgogICAgIGlmIChl
cXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFzdENoZWNrZWRSZXF1
ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSkp
IHsKLSAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgMCwgdHJ1ZSk7CisgICAgICAgIGZ1bmN0aW9u
KHJlcXVlc3QsIG51bGxwdHIsIHRydWUpOwogICAgICAgICBsb2FkZXItPnNldExhc3RDaGVja2Vk
UmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwNiw3ICsxMDcs
NyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljCiAjZW5kaWYKICAg
ICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkKICAgICAgICAgICAg
IG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgICAgIGZ1bmN0aW9uKHJl
cXVlc3QsIDAsIHNob3VsZENvbnRpbnVlKTsKKyAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgbnVs
bHB0ciwgc2hvdWxkQ29udGludWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTYs
MjAgKzExNywxNiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljCiAg
ICAgICAgICAgICAvLyByZXZlYWwgdGhhdCB0aGUgZnJhbWUgd2FzIGJsb2NrZWQuIFRoaXMgd2F5
LCBpdCBsb29rcyBsaWtlIGFueSBvdGhlciBjcm9zcy1vcmlnaW4gcGFnZSBsb2FkLgogICAgICAg
ICAgICAgbV9mcmFtZS5vd25lckVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICB9Ci0gICAg
ICAgIGZ1bmN0aW9uKHJlcXVlc3QsIDAsIGZhbHNlKTsKKyAgICAgICAgZnVuY3Rpb24ocmVxdWVz
dCwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbG9hZGVy
LT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QocmVxdWVzdCk7CiAKLSAgICBtX2NhbGxiYWNrLnNldChy
ZXF1ZXN0LCBmb3JtU3RhdGUsIFdURk1vdmUoZnVuY3Rpb24pKTsKLQogI2lmIFVTRShRVUlDS19M
T09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQg
b24gdGhlIHByb3RvY29sIHNjaGVtZS4KLSAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNR
dWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIGNvbnRpbnVlQWZ0
ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeVVzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Cisg
ICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIGlzUXVpY2tMb29rUHJldmlld1VSTChyZXF1ZXN0
LnVybCgpKSkKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHJlcXVlc3QsIGZvcm1TdGF0ZSwgdHJ1
ZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKQEAgLTEzOSwyOSAr
MTM2LDQyIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAg
ICAgICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJl
bG9hZCgpOwogICAgICAgICB9KTsKLSAgICAgICAgY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xp
Y3koUG9saWN5SWdub3JlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCBmYWxzZSk7CiAgICAgfQogICAgIG1fY29udGVudEZpbHRlclVuYmxv
Y2tIYW5kbGVyID0geyB9OwogI2VuZGlmCiAKICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmln
YXRpb25Qb2xpY3kgPSB0cnVlOwotICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUgPSBhY3Rpb24uZG93
bmxvYWRBdHRyaWJ1dGUoKS5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0aW9uLmRvd25sb2Fk
QXR0cmlidXRlKCk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBkaWRSZWNlaXZlUmVk
aXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLCBbdGhpc10oUG9saWN5QWN0aW9uIGFjdGlvbikgewot
ICAgICAgICBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShhY3Rpb24pOworICAgIFN0cmlu
ZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzRW1wdHko
KSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKKyAgICBtX2ZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihhY3Rpb24sIHJlcXVlc3QsIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBmb3JtU3RhdGUs
IFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0LCBmb3JtU3RhdGUg
PSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdn
ZXN0ZWRGaWxlbmFtZSldKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgeworICAg
ICAgICBzd2l0Y2ggKHBvbGljeUFjdGlvbikgeworICAgICAgICBjYXNlIFBvbGljeURvd25sb2Fk
OgorICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5zZXRPcmlnaW5hbFVSTEZvckRvd25sb2Fk
UmVxdWVzdChyZXF1ZXN0KTsKKyAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCku
c3RhcnREb3dubG9hZChyZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CisgICAgICAgICAgICBG
QUxMVEhST1VHSDsKKyAgICAgICAgY2FzZSBQb2xpY3lJZ25vcmU6CisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAgICAgIGNhc2UgUG9saWN5VXNl
OgorICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJl
cXVlc3QocmVxdWVzdCkpIHsKKyAgICAgICAgICAgICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQ
b2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5ub3RTaG93VVJMRXJyb3IocmVxdWVz
dCkpOworICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIGZhbHNl
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihyZXF1ZXN0LCBm
b3JtU3RhdGUuZ2V0KCksIHRydWUpOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgIH0pOwogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGlj
eSA9IGZhbHNlOwogfQogCi12b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5
KE5hdmlnYXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFt
ZSwgTmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiBmdW5jdGlvbikKK3ZvaWQgUG9saWN5
Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmIG5hdmlnYXRp
b25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3Jt
U3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hQb3B1cHMpKQotICAgICAgICByZXR1
cm4gY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3JlKTsKKyAgICAgICAg
cmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKIAogICAgIGlm
ICghRE9NV2luZG93OjphbGxvd1BvcFVwKG1fZnJhbWUpKQotICAgICAgICByZXR1cm4gY29udGlu
dWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3JlKTsKKyAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKHsgfSwgbnVsbHB0ciwgeyB9LCB7IH0sIGZhbHNlKTsKIAotICAgIG1fZnJhbWUubG9h
ZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obmF2
aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5hbWUsIFtmcmFtZSA9IG1h
a2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VSZWZQdHIoZm9ybVN0YXRl
KSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rp
b24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSB7CisgICAgbV9mcmFtZS5sb2FkZXIoKS5j
bGllbnQoKS5kaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihuYXZpZ2F0aW9u
QWN0aW9uLCByZXF1ZXN0LCBmb3JtU3RhdGUsIGZyYW1lTmFtZSwgW2ZyYW1lID0gbWFrZVJlZiht
X2ZyYW1lKSwgcmVxdWVzdCwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBmcmFt
ZU5hbWUsIG5hdmlnYXRpb25BY3Rpb24sIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbildKFBv
bGljeUFjdGlvbiBwb2xpY3lBY3Rpb24pIG11dGFibGUgewogICAgICAgICBzd2l0Y2ggKHBvbGlj
eUFjdGlvbikgewogICAgICAgICBjYXNlIFBvbGljeURvd25sb2FkOgogICAgICAgICAgICAgZnJh
bWUtPmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCk7CkBAIC0xODYsOCAr
MTk2LDYgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjYW5jZWxDaGVjaygpCiB2b2lkIFBvbGljeUNo
ZWNrZXI6OnN0b3BDaGVjaygpCiB7CiAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5jYW5j
ZWxQb2xpY3lDaGVjaygpOwotICAgIFBvbGljeUNhbGxiYWNrIGNhbGxiYWNrID0gV1RGTW92ZSht
X2NhbGxiYWNrKTsKLSAgICBjYWxsYmFjay5jYW5jZWwoKTsKIH0KIAogdm9pZCBQb2xpY3lDaGVj
a2VyOjpjYW5ub3RTaG93TUlNRVR5cGUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CkBAIC0yMDIsMzggKzIxMCw2IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVMb2FkQWZ0
ZXJXaWwKICAgICBtX2ZyYW1lLmxvYWRlcigpLmNvbnRpbnVlTG9hZEFmdGVyV2lsbFN1Ym1pdEZv
cm0oKTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlvblBv
bGljeShQb2xpY3lBY3Rpb24gcG9saWN5KQotewotICAgIFBvbGljeUNhbGxiYWNrIGNhbGxiYWNr
ID0gV1RGTW92ZShtX2NhbGxiYWNrKTsKLQotICAgIGJvb2wgc2hvdWxkQ29udGludWUgPSBwb2xp
Y3kgPT0gUG9saWN5VXNlOwotCi0gICAgc3dpdGNoIChwb2xpY3kpIHsKLSAgICAgICAgY2FzZSBQ
b2xpY3lJZ25vcmU6Ci0gICAgICAgICAgICBjYWxsYmFjay5jbGVhclJlcXVlc3QoKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFBvbGljeURvd25sb2FkOiB7Ci0gICAgICAgICAg
ICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCA9IGNhbGxiYWNrLnJlcXVlc3QoKTsKLSAgICAgICAg
ICAgIG1fZnJhbWUubG9hZGVyKCkuc2V0T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QocmVx
dWVzdCk7Ci0gICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxv
YWQocmVxdWVzdCwgbV9zdWdnZXN0ZWRGaWxlbmFtZSk7Ci0gICAgICAgICAgICBjYWxsYmFjay5j
bGVhclJlcXVlc3QoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNh
c2UgUG9saWN5VXNlOiB7Ci0gICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChjYWxs
YmFjay5yZXF1ZXN0KCkpOwotCi0gICAgICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xp
ZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KSkgewotICAgICAgICAgICAgICAgIGhhbmRs
ZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNo
b3dVUkxFcnJvcihjYWxsYmFjay5yZXF1ZXN0KCkpKTsKLSAgICAgICAgICAgICAgICBjYWxsYmFj
ay5jbGVhclJlcXVlc3QoKTsKLSAgICAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNl
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBjYWxsYmFjay5jYWxsKHNob3VsZENvbnRpbnVlKTsKLX0KLQogdm9pZCBQb2xpY3lDaGVj
a2VyOjpoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYgZXJy
b3IpCiB7CiAgICAgbV9kZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3kgPSB0
cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCShyZXZpc2lvbiAy
MjEyMjApCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw3ICszMCw2IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyVHlwZXMuaCIKLSNpbmNsdWRlICJQb2xpY3lDYWxsYmFjay5oIgogI2luY2x1ZGUgIlJl
c291cmNlUmVxdWVzdC5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC0z
OCw2ICszNywxMCBAQAogI2luY2x1ZGUgIkNvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5oIgog
I2VuZGlmCiAKK25hbWVzcGFjZSBXVEYgewordGVtcGxhdGU8dHlwZW5hbWU+IGNsYXNzIENvbXBs
ZXRpb25IYW5kbGVyOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3VtZW50
TG9hZGVyOwpAQCAtNDcsNyArNTAsOCBAQCBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CiAKLXVzaW5nIE5ld1dpbmRv
d1BvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkZ1bmN0aW9uPHZvaWQoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb24mLCBib29sIHNob3VsZENvbnRpbnVlKT47Cit1c2luZyBOZXdXaW5kb3dQ
b2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk+OwordXNpbmcgTmF2
aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24gPSBXVEY6OkNvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgYm9vbCBzaG91bGRDb250aW51
ZSk+OwogCiBjbGFzcyBQb2xpY3lDaGVja2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
b2xpY3lDaGVja2VyKTsKQEAgLTU1LDkgKzU5LDkgQEAgY2xhc3MgUG9saWN5Q2hlY2tlciB7CiBw
dWJsaWM6CiAgICAgZXhwbGljaXQgUG9saWN5Q2hlY2tlcihGcmFtZSYpOwogCi0gICAgdm9pZCBj
aGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBkaWRSZWNl
aXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2FkZXIqLCBGb3JtU3RhdGUqLCBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbik7Ci0gICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xp
Y3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25z
ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24pOwotICAgIHZvaWQgY2hlY2tOZXdX
aW5kb3dQb2xpY3koTmF2aWdhdGlvbkFjdGlvbiYmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBG
b3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3V2luZG93UG9saWN5RGVjaXNp
b25GdW5jdGlvbik7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2Fk
ZXIqLCBGb3JtU3RhdGUqLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKKyAg
ICB2b2lkIGNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBib29s
IGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25GdW5j
dGlvbiYmKTsKKyAgICB2b2lkIGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24m
JiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFt
ZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24mJik7CiAKICAgICAvLyBGSVhN
RTogVGhlc2UgYXJlIGRpZmZlcmVudC4gIFRoZXkgY291bGQgdXNlIGJldHRlciBuYW1lcy4KICAg
ICB2b2lkIGNhbmNlbENoZWNrKCk7CkBAIC02OCw4ICs3Miw2IEBAIHB1YmxpYzoKICAgICBGcmFt
ZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkVHlwZTsgfQogICAgIHZv
aWQgc2V0TG9hZFR5cGUoRnJhbWVMb2FkVHlwZSBsb2FkVHlwZSkgeyBtX2xvYWRUeXBlID0gbG9h
ZFR5cGU7IH0KIAotICAgIHZvaWQgc2V0U3VnZ2VzdGVkRmlsZW5hbWUoY29uc3QgU3RyaW5nJiBz
dWdnZXN0ZWRGaWxlbmFtZSkgeyBtX3N1Z2dlc3RlZEZpbGVuYW1lID0gc3VnZ2VzdGVkRmlsZW5h
bWU7IH0KLQogICAgIGJvb2wgZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSgpIGNv
bnN0IHsgcmV0dXJuIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeTsgfQogICAg
IGJvb2wgZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9kZWxlZ2F0ZUlzSGFuZGxpbmdVbmltcGxlbWVudGFibGVQb2xpY3k7IH0KIApAQCAt
ODUsOCArODcsNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJpdmF0ZToKLSAgICB2b2lkIGNvbnRp
bnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeUFjdGlvbik7Ci0KICAgICB2b2lkIGhhbmRs
ZVVuaW1wbGVtZW50YWJsZVBvbGljeShjb25zdCBSZXNvdXJjZUVycm9yJik7CiAKICAgICBGcmFt
ZSYgbV9mcmFtZTsKQEAgLTk4LDggKzk4LDYgQEAgcHJpdmF0ZToKICAgICAvLyB0aGF0IFdlYktp
dCBjb252ZXlzIHRoaXMgdmFsdWUgYXMgdGhlIFdlYkFjdGlvbk5hdmlnYXRpb25UeXBlS2V5IHZh
bHVlCiAgICAgLy8gb24gbmF2aWdhdGlvbiBhY3Rpb24gZGVsZWdhdGUgY2FsbGJhY2tzLgogICAg
IEZyYW1lTG9hZFR5cGUgbV9sb2FkVHlwZTsKLSAgICBQb2xpY3lDYWxsYmFjayBtX2NhbGxiYWNr
OwotICAgIFN0cmluZyBtX3N1Z2dlc3RlZEZpbGVuYW1lOwogCiAjaWYgRU5BQkxFKENPTlRFTlRf
RklMVEVSSU5HKQogICAgIENvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciBtX2NvbnRlbnRGaWx0
ZXJVbmJsb2NrSGFuZGxlcjsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjE0MzMpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3
LTA4LTMxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgU3RvcCB1c2luZyBQb2xpY3lDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJh
bWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3Rl
bmVyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKwogMjAxNy0wOC0zMCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBX
S1VJRGVsZWdhdGVQcml2YXRlIGVxdWl2YWxlbnQgb2YgV0tQYWdlVUlDbGllbnQncyBkaWRDbGlj
a0F1dG9GaWxsQnV0dG9uCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJl
dmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDYgKzc3LDcg
QEAKICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRh
dGEuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1BsdWdpbkRvY3VtZW50Lmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9ncmVzc1RyYWNrZXIu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L1NjcmlwdENvbnRyb2xsZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDcg
KzIyNyw4IEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigKIAogICAg
IG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAgICBtX3BvbGljeUxpc3RlbmVySUQgPSAwOwot
ICAgIG1fcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOworICAgIGlmIChhdXRvIGZ1bmN0aW9uID0g
c3RkOjpleGNoYW5nZShtX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKKyAgICAgICAgZnVuY3Rp
b24oUG9saWN5SWdub3JlKTsKIH0KIAogdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURl
Y2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgRG93bmxvYWRJRCBkb3dubG9hZElEKQpAQCAtMjQxLDcgKzI0Miw4IEBA
IHZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbigKICAgICBpZiAobGlzdGVu
ZXJJRCAhPSBtX3BvbGljeUxpc3RlbmVySUQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VS
VChtX3BvbGljeUZ1bmN0aW9uKTsKKyAgICBpZiAoIW1fcG9saWN5RnVuY3Rpb24pCisgICAgICAg
IHJldHVybjsKIAogICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gZnVuY3Rpb24gPSBXVEZNb3ZlKG1f
cG9saWN5RnVuY3Rpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmgJKHJldmlzaW9uIDIyMTIyMCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Jhc2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zy
YW1lTG9hZGVyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+
Ci0jaW5jbHVkZSA8V2ViQ29yZS9Qb2xpY3lDaGVja2VyLmg+CiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNw
ZWN0b3IuY3BwCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBA
CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2luY2x1ZGUg
PFdlYkNvcmUvSW5zcGVjdG9yUGFnZUFnZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9NYWluRnJh
bWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCShyZXZpc2lvbiAyMjEyMjApCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wOC0zMSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFN0b3Ag
dXNpbmcgUG9saWN5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3NjA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0ZXMuCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAg
ICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAgICgtW1dl
YkZyYW1lUG9saWN5TGlzdGVuZXIgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpdKToKKwogMjAxNy0w
OC0yNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFtEaXJlY3Rv
cnkgVXBsb2FkXSBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgaW5wdXQud2Via2l0ZGlyZWN0b3J5Cklu
ZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gMjIxMjIwKQorKysgU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTI0MDksNiArMjQwOSw4IEBAIC0gKGlkKWluaXRXaXRoRnJh
bWU6KEZyYW1lKilmcmFtZSBwb2xpY3kKIC0gKHZvaWQpaW52YWxpZGF0ZQogewogICAgIF9mcmFt
ZSA9IG51bGxwdHI7CisgICAgaWYgKGF1dG8gcG9saWN5RnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdl
KF9wb2xpY3lGdW5jdGlvbiwgbnVsbHB0cikpCisgICAgICAgIHBvbGljeUZ1bmN0aW9uKFBvbGlj
eUlnbm9yZSk7CiB9CiAKIC0gKHZvaWQpZGVhbGxvYwpAQCAtMjQyNSwxMSArMjQyNyw4IEBAIC0g
KHZvaWQpcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjooUG9saWN5QWMKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIHBvbGljeUZ1bmN0aW9u
ID0gV1RGTW92ZShfcG9saWN5RnVuY3Rpb24pOwotICAgIF9wb2xpY3lGdW5jdGlvbiA9IG51bGxw
dHI7Ci0KLSAgICBBU1NFUlQocG9saWN5RnVuY3Rpb24pOwotICAgIHBvbGljeUZ1bmN0aW9uKGFj
dGlvbik7CisgICAgaWYgKGF1dG8gcG9saWN5RnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKF9wb2xp
Y3lGdW5jdGlvbiwgbnVsbHB0cikpCisgICAgICAgIHBvbGljeUZ1bmN0aW9uKGFjdGlvbik7CiB9
CiAKIC0gKHZvaWQpaWdub3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321750</attachid>
            <date>2017-09-25 15:12:20 -0700</date>
            <delta_ts>2017-09-25 15:24:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176088-20170925151219.patch</filename>
            <type>text/plain</type>
            <size>30500</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA5LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBQb2xpY3lDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICBUaGlzIGlzIHdoYXQgbGFtYmRhcyBhcmUgZm9yLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisgICAgICAgIENhbmNlbGxpbmcgdGhlIGNhbGxiYWNrIGlzIG5vdyB0aGUgcmVzcG9uc2liaWxp
dHkgb2YgdGhlIEZyYW1lTG9hZGVyQ2xpZW50LCB0byB3aG9tIHdlIGhhdmUgZ2l2ZW4gdGhlIGxh
bWJkYS4KKyAgICAgICAgVGhhdCBpcyB3aHkgdGhlcmUgYXJlIGNoYW5nZXMgaW4gV2ViS2l0IGFu
ZCBXZWJLaXRMZWdhY3kgd2hlcmUgdGhlIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lD
aGVjayBmaW5kcyB0aGUgbGFtYmRhIGl0IGhhcyBzdG9yZWQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2lu
ZG93UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OnN0b3BDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlv
blBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKTogRGVs
ZXRlZC4KKwogMjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFNlcGFyYXRlIGZvcm0gc3VibWlzc2lvbiBmcm9tIFBvbGljeUNo
ZWNrZXIgaW5mcmFzdHJ1Y3R1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MjI0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjExNiw3ICsyMTE2LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmNwcAogICAgIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKICAgICBsb2FkZXIvUGluZ0xvYWRlci5jcHAKLSAgICBsb2FkZXIvUG9saWN5Q2FsbGJh
Y2suY3BwCiAgICAgbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCiAgICAgbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjIyNDU2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTA1LDggKzQxMDUsNiBAQAog
CQk5NTIwNzYwNjFGMjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTIwNzYwMjFGMjY3NUY5MDA3
RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi87IH07CiAJCTk2QUJBNDIzMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQg
LyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovOyB9OwogCQk5NzAzRTFCRjE1
REM0RTM3MDAxRjI0QzggLyogSlNWb2lkQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpT
Vm9pZENhbGxiYWNrLmNwcCAqLzsgfTsKLQkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87
IH07Ci0JCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9Owog
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZh
Y2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBC
NzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNDcwLDggKzEyNDY4LDYgQEAK
IAkJOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTIwNzYwMjFG
MjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxU
cmFjZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NkFCQTQyMjE0QkNC
ODBFMDBENTYyMDQgLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzA1OTk3MzEwN0Q5NzUyMDBB
NTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUG9saWN5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBv
bGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwQjcyODkxNDRG
RkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFdmVudEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI0NDYzLDggKzI0NDU5LDYgQEAKIAkJCQk2NTZEMzcyQjBBREJBNURFMDBBNDU1NEQgLyog
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCAqLywKIAkJCQlEMEZGMkE1QjExRjhDNDVBMDA3
RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8sCiAJCQkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUw
IC8qIFBpbmdMb2FkZXIuaCAqLywKLQkJCQk5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2FsbGJhY2suY3BwICovLAotCQkJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xp
Y3lDYWxsYmFjay5oICovLAogCQkJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lD
aGVja2VyLmNwcCAqLywKIAkJCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hl
Y2tlci5oICovLAogCQkJCTFBMkE2ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNr
ZXIuY3BwICovLApAQCAtMjk1ODcsNyArMjk1ODEsNiBAQAogCQkJCUIyQjFGNzE3MEQwMENBQTgw
MDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNG
RjgxM0E3MURCQTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzMwRDkyMTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1NzE3NUQ0MTRDMDBD
MjFFQzggLyogUG9seWdvblNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0RTIwQTEwQTFG
NDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzU3OCw3
ICszMzU3MSw2IEBACiAJCQkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVu
dHNIaXRSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZDNDM1MDE5MjQwOUUzMDBBMEQz
QjUgLyogUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTEx
NTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTk3MDU5OTc3MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzA1OTk3OTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9s
eWdvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODlGMERFMTBCNDZCMEUwMEYzQzcz
OSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjI0NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSw3IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjI0NTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksNiArMTE5LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2Vy
LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CShyZXZpc2lvbiAyMjI0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNiBAQCBjbGFzcyBNZXNzYWdlRXZl
bnQ7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsdWdpblZp
ZXdCYXNlOwotY2xhc3MgUG9saWN5Q2hlY2tlcjsKIGNsYXNzIFByZXZpZXdMb2FkZXJDbGllbnQ7
CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAJKHJldmlzaW9u
IDIyMjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAJKG5v
bmV4aXN0ZW50KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlBvbGljeUNhbGxiYWNrLmgiCi0KLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKLSNp
bmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFRN
TEZvcm1FbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBQb2xpY3lDYWxs
YmFjazo6c2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3Jt
U3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCi17Ci0g
ICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX2Zvcm1TdGF0ZSA9IGZvcm1TdGF0ZTsKLSAg
ICBtX2ZyYW1lTmFtZSA9IFN0cmluZygpOwotCi0gICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKTsKLX0KLQotdm9pZCBQb2xpY3lDYWxsYmFjazo6Y2FsbChib29sIHNo
b3VsZENvbnRpbnVlKQotewotICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikKLSAgICAgICAg
bV9uYXZpZ2F0aW9uRnVuY3Rpb24obV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgc2hvdWxk
Q29udGludWUpOwotfQotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpjbGVhclJlcXVlc3QoKQotewot
ICAgIG1fcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgIG1fZm9ybVN0YXRlID0gbnVs
bHB0cjsKLSAgICBtX2ZyYW1lTmFtZSA9IFN0cmluZygpOwotfQotCi12b2lkIFBvbGljeUNhbGxi
YWNrOjpjYW5jZWwoKQotewotICAgIGNsZWFyUmVxdWVzdCgpOwotICAgIGlmIChtX25hdmlnYXRp
b25GdW5jdGlvbikKLSAgICAgICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24obV9yZXF1ZXN0LCBtX2Zv
cm1TdGF0ZS5nZXQoKSwgZmFsc2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNhbGxiYWNrLmgJKHJldmlzaW9uIDIyMjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDYWxsYmFjay5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIk5hdmlnYXRp
b25BY3Rpb24uaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlIDxmdW5j
dGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBGb3JtU3RhdGU7Ci0KLXVzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uID0gRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBib29sIHNob3VsZENvbnRpbnVlKT47Ci0KLWNsYXNzIFBvbGljeUNhbGxiYWNrIHsKLXB1Ymxp
YzoKLSAgICB2b2lkIHNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBOYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIHZvaWQgY2xl
YXJSZXF1ZXN0KCk7Ci0KLSAgICB2b2lkIGNhbGwoYm9vbCBzaG91bGRDb250aW51ZSk7Ci0gICAg
dm9pZCBjYW5jZWwoKTsKLQotcHJpdmF0ZToKLSAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwotICAgIFN0cmluZyBtX2ZyYW1l
TmFtZTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIG1fbmF2aWdhdGlvbkFjdGlvbjsKLQotICAgIE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fbmF2aWdhdGlvbkZ1bmN0aW9uOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lv
biAyMjI0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1
Z0luRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03NSwxMiArNzYsMTIg
QEAgUG9saWN5Q2hlY2tlcjo6UG9saWN5Q2hlY2tlcihGcmFtZSYgZnJhbQogewogfQogCi12b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIG5ld1JlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBi
b29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25G
dW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1
ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVE
b2N1bWVudExvYWRlcigpLCBudWxscHRyLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3RhdGUqIGZvcm1TdGF0
ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBO
YXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiA9IGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpOwogICAg
IGlmIChhY3Rpb24uaXNFbXB0eSgpKSB7CkBAIC05MSw3ICs5Miw3IEBAIHZvaWQgUG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9u
Y2UgZm9yIHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJM
LgogICAgIC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50
LgogICAgIGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFz
dENoZWNrZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgp
LmlzRW1wdHkoKSkpIHsKLSAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgMCwgdHJ1ZSk7CisgICAg
ICAgIGZ1bmN0aW9uKHJlcXVlc3QsIG51bGxwdHIsIHRydWUpOwogICAgICAgICBsb2FkZXItPnNl
dExhc3RDaGVja2VkUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEwNiw3ICsxMDcsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
CiAjZW5kaWYKICAgICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkK
ICAgICAgICAgICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgICAg
IGZ1bmN0aW9uKHJlcXVlc3QsIDAsIHNob3VsZENvbnRpbnVlKTsKKyAgICAgICAgZnVuY3Rpb24o
cmVxdWVzdCwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMTYsMjAgKzExNywxNiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljCiAgICAgICAgICAgICAvLyByZXZlYWwgdGhhdCB0aGUgZnJhbWUgd2FzIGJsb2Nr
ZWQuIFRoaXMgd2F5LCBpdCBsb29rcyBsaWtlIGFueSBvdGhlciBjcm9zcy1vcmlnaW4gcGFnZSBs
b2FkLgogICAgICAgICAgICAgbV9mcmFtZS5vd25lckVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAg
ICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIDAsIGZhbHNlKTsKKyAgICAgICAgZnVu
Y3Rpb24ocmVxdWVzdCwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QocmVxdWVzdCk7CiAKLSAgICBtX2Nh
bGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUsIFdURk1vdmUoZnVuY3Rpb24pKTsKLQogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2VuZXJhdGVk
IFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KLSAgICBpZiAoIXJlcXVlc3QuaXNO
dWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAg
IGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeVVzZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIGlzUXVpY2tMb29rUHJldmll
d1VSTChyZXF1ZXN0LnVybCgpKSkKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHJlcXVlc3QsIGZv
cm1TdGF0ZSwgdHJ1ZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
QEAgLTEzOSwyOSArMTM2LDQzIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWMKICAgICAgICAgICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLnJlbG9hZCgpOwogICAgICAgICB9KTsKLSAgICAgICAgY29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3JlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CiAgICAgfQogICAgIG1fY29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwogI2VuZGlmCiAKICAgICBtX2RlbGVnYXRlSXNE
ZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwotICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUg
PSBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKS5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0
aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLCBbdGhpc10oUG9saWN5QWN0aW9u
IGFjdGlvbikgewotICAgICAgICBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShhY3Rpb24p
OworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0
ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsK
KyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkgPSByZXF1ZXN0OworICAgIG1fZnJhbWUu
bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGFjdGlvbiwgcmVxdWVzdCwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIGZvcm1TdGF0ZSwg
W3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBXVEZNb3ZlKHJl
cXVlc3RDb3B5KSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBzdWdnZXN0ZWRG
aWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpXShQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKKyAgICAg
ICAgY2FzZSBQb2xpY3lEb3dubG9hZDoKKyAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuc2V0
T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgICAgICBtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCwgc3VnZ2VzdGVkRmls
ZW5hbWUpOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgUG9saWN5SWdu
b3JlOgorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgZmFsc2UpOwor
ICAgICAgICBjYXNlIFBvbGljeVVzZToKKyAgICAgICAgICAgIGlmICghbV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CisgICAgICAgICAgICAgICAg
aGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2Fu
bm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24ocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9KTsKICAgICBtX2RlbGVnYXRlSXNE
ZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24g
ZnVuY3Rpb24pCit2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmln
YXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3
V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGlmIChtX2Zy
YW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94
UG9wdXBzKSkKLSAgICAgICAgcmV0dXJuIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBv
bGljeUlnbm9yZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwg
eyB9LCBmYWxzZSk7CiAKICAgICBpZiAoIURPTVdpbmRvdzo6YWxsb3dQb3BVcChtX2ZyYW1lKSkK
LSAgICAgICAgcmV0dXJuIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeUlnbm9y
ZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBmYWxz
ZSk7CiAKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwg
ZnJhbWVOYW1lLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LCBmb3JtU3RhdGUg
PSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5h
bWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VS
ZWZQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgY2FzZSBQb2xpY3lEb3du
bG9hZDoKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2Fk
KHJlcXVlc3QpOwpAQCAtMTgwLDggKzE5MSw2IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
ZXdXaW5kb3dQb2xpY3kKIHZvaWQgUG9saWN5Q2hlY2tlcjo6c3RvcENoZWNrKCkKIHsKICAgICBt
X2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbmNlbFBvbGljeUNoZWNrKCk7Ci0gICAgUG9saWN5
Q2FsbGJhY2sgY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spOwotICAgIGNhbGxiYWNrLmNh
bmNlbCgpOwogfQogCiB2b2lkIFBvbGljeUNoZWNrZXI6OmNhbm5vdFNob3dNSU1FVHlwZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTE4OSwzOCArMTk4LDYgQEAgdm9pZCBQ
b2xpY3lDaGVja2VyOjpjYW5ub3RTaG93TUlNRVR5cGUoYwogICAgIGhhbmRsZVVuaW1wbGVtZW50
YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dNSU1FVHlwZUVy
cm9yKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBQb2xpY3lDYWxsYmFj
ayBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7Ci0KLSAgICBib29sIHNob3VsZENvbnRp
bnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsKLQotICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAg
ICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAgICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDogewot
ICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBjYWxsYmFjay5yZXF1ZXN0KCk7
Ci0gICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5z
dGFydERvd25sb2FkKHJlcXVlc3QsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICAgICAg
Y2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFBvbGljeVVzZTogewotICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoY2FsbGJhY2sucmVxdWVzdCgpKTsKLQotICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKLSAgICAgICAgICAg
ICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5ub3RTaG93VVJMRXJyb3IoY2FsbGJhY2sucmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAg
ICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgY2FsbGJhY2suY2FsbChzaG91bGRDb250aW51ZSk7Ci19Ci0KIHZvaWQg
UG9saWN5Q2hlY2tlcjo6aGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogewogICAgIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxl
UG9saWN5ID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAko
cmV2aXNpb24gMjIyNDU2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiUG9saWN5Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMzgsNiArMzcsMTAgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIuaCIKICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBDb21wbGV0aW9uSGFuZGxlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTQ3LDcgKzUwLDggQEAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCi11c2lu
ZyBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk+OwordXNpbmcg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpPjsK
K3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGJvb2wgc2hv
dWxkQ29udGludWUpPjsKIAogY2xhc3MgUG9saWN5Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUG9saWN5Q2hlY2tlcik7CkBAIC01NSw5ICs1OSw5IEBAIGNsYXNzIFBvbGljeUNo
ZWNrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBvbGljeUNoZWNrZXIoRnJhbWUmKTsKIAot
ICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgRm9ybVN0YXRl
KiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24pOwotICAgIHZvaWQgY2hlY2tOYXZp
Z2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uKTsKLSAgICB2b2lk
IGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uRnVuY3Rpb24pOworICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERv
Y3VtZW50TG9hZGVyKiwgRm9ybVN0YXRlKiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rp
b24mJik7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24mJik7CisgICAgdm9pZCBjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0
aW9uQWN0aW9uJiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAg
ICAgdm9pZCBzdG9wQ2hlY2soKTsKIApAQCAtNjYsOCArNzAsNiBAQCBwdWJsaWM6CiAgICAgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGU7IH0KICAgICB2
b2lkIHNldExvYWRUeXBlKEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpIHsgbV9sb2FkVHlwZSA9IGxv
YWRUeXBlOyB9CiAKLSAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVu
YW1lOyB9Ci0KICAgICBib29sIGRlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3k7IH0KICAg
ICBib29sIGRlbGVnYXRlSXNIYW5kbGluZ1VuaW1wbGVtZW50YWJsZVBvbGljeSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5OyB9CiAKQEAg
LTc2LDggKzc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lBY3Rpb24pOwotCiAgICAgdm9pZCBoYW5k
bGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgRnJh
bWUmIG1fZnJhbWU7CkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBXZWJL
aXQgY29udmV5cyB0aGlzIHZhbHVlIGFzIHRoZSBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSB2
YWx1ZQogICAgIC8vIG9uIG5hdmlnYXRpb24gYWN0aW9uIGRlbGVnYXRlIGNhbGxiYWNrcy4KICAg
ICBGcmFtZUxvYWRUeXBlIG1fbG9hZFR5cGU7Ci0gICAgUG9saWN5Q2FsbGJhY2sgbV9jYWxsYmFj
azsKLSAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV9jb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNDU2KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
Ny0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFN0b3AgdXNpbmcgUG9saWN5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFu
ZHkgRXN0ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKwogMjAxNy0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNlcGFyYXRl
IGZvcm0gc3VibWlzc2lvbiBmcm9tIFBvbGljeUNoZWNrZXIgaW5mcmFzdHJ1Y3R1cmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjIyNDU2KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BvbGljeUNoZWNrZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
cmV2aXNpb24gMjIyNDU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDggQEAgdm9pZCBXZWJGcmFt
ZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKAogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0g
eyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7Ci0gICAgbV9wb2xpY3lGdW5jdGlvbiA9
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5
RnVuY3Rpb24sIG51bGxwdHIpKQorICAgICAgICBmdW5jdGlvbihQb2xpY3lJZ25vcmUpOwogfQog
CiB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVu
ZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQpCkBAIC0yNTQsNyArMjU1LDggQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKAogICAgIGlmIChsaXN0ZW5lcklEICE9IG1fcG9saWN5TGlzdGVu
ZXJJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcG9saWN5RnVuY3Rpb24pOwor
ICAgIGlmICghbV9wb2xpY3lGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVQ
b2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNp
b24gMjIyNDU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bv
bGljeUNoZWNrZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5jcHAJKHJldmlzaW9uIDIy
MjQ1NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkluc3BlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JQYWdl
QWdlbnQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL01haW5GcmFtZS5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvTmF2aWdhdGlvbkFjdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2UuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1NjcmlwdENv
bnRyb2xsZXIuaD4KSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIy
MjQ1NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE0IEBACisyMDE3LTA5LTI1ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlz
dGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2luZyBQb2xpY3lDYWxsYmFjawor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc2MDg4CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZVBvbGljeUxp
c3RlbmVyIGludmFsaWRhdGVdKToKKyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBy
ZWNlaXZlZFBvbGljeURlY2lzaW9uOl0pOgorCiAyMDE3LTA5LTI1ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2VwYXJhdGUgZm9ybSBzdWJt
aXNzaW9uIGZyb20gUG9saWN5Q2hlY2tlciBpbmZyYXN0cnVjdHVyZQpJbmRleDogU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDIyMjQ1NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDA5LDYgKzI0MDksOCBAQCAtIChpZClpbml0V2l0aEZyYW1lOihGcmFtZSopZnJh
bWUgcG9saWN5CiAtICh2b2lkKWludmFsaWRhdGUKIHsKICAgICBfZnJhbWUgPSBudWxscHRyOwor
ICAgIGlmIChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rp
b24sIG51bGxwdHIpKQorICAgICAgICBwb2xpY3lGdW5jdGlvbihQb2xpY3lJZ25vcmUpOwogfQog
CiAtICh2b2lkKWRlYWxsb2MKQEAgLTI0MjUsMTEgKzI0MjcsOCBAQCAtICh2b2lkKXJlY2VpdmVk
UG9saWN5RGVjaXNpb246KFBvbGljeUFjCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRnJhbWVQb2xpY3lGdW5jdGlvbiBwb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUoX3Bv
bGljeUZ1bmN0aW9uKTsKLSAgICBfcG9saWN5RnVuY3Rpb24gPSBudWxscHRyOwotCi0gICAgQVNT
RVJUKHBvbGljeUZ1bmN0aW9uKTsKLSAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOworICAgIGlm
IChhdXRvIHBvbGljeUZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShfcG9saWN5RnVuY3Rpb24sIG51
bGxwdHIpKQorICAgICAgICBwb2xpY3lGdW5jdGlvbihhY3Rpb24pOwogfQogCiAtICh2b2lkKWln
bm9yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321757</attachid>
            <date>2017-09-25 15:24:02 -0700</date>
            <delta_ts>2017-09-25 15:26:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-176088-20170925152401.patch</filename>
            <type>text/plain</type>
            <size>30528</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyMjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBACisyMDE3LTA5LTI1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgU3RvcCB1c2lu
ZyBQb2xpY3lDYWxsYmFjaworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTc2MDg4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQW5keSBFc3Rlcy4KKworICAg
ICAgICBUaGlzIGlzIHdoYXQgbGFtYmRhcyBhcmUgZm9yLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3Iu
CisgICAgICAgIENhbmNlbGxpbmcgdGhlIGNhbGxiYWNrIGlzIG5vdyB0aGUgcmVzcG9uc2liaWxp
dHkgb2YgdGhlIEZyYW1lTG9hZGVyQ2xpZW50LCB0byB3aG9tIHdlIGhhdmUgZ2l2ZW4gdGhlIGxh
bWJkYS4KKyAgICAgICAgVGhhdCBpcyB3aHkgdGhlcmUgYXJlIGNoYW5nZXMgaW4gV2ViS2l0IGFu
ZCBXZWJLaXRMZWdhY3kgd2hlcmUgdGhlIEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xpY3lD
aGVjayBmaW5kcyB0aGUgbGFtYmRhIGl0IGhhcyBzdG9yZWQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRnJh
bWVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIGxvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHA6IFJlbW92ZWQuCisgICAgICAgICogbG9h
ZGVyL1BvbGljeUNhbGxiYWNrLmg6IFJlbW92ZWQuCisgICAgICAgICogbG9hZGVyL1BvbGljeUNo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0
aW9uUG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2lu
ZG93UG9saWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OnN0b3BDaGVjayk6
CisgICAgICAgIChXZWJDb3JlOjpQb2xpY3lDaGVja2VyOjpjb250aW51ZUFmdGVyTmF2aWdhdGlv
blBvbGljeSk6IERlbGV0ZWQuCisgICAgICAgICogbG9hZGVyL1BvbGljeUNoZWNrZXIuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBvbGljeUNoZWNrZXI6OnNldFN1Z2dlc3RlZEZpbGVuYW1lKTogRGVs
ZXRlZC4KKwogMjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFNlcGFyYXRlIGZvcm0gc3VibWlzc2lvbiBmcm9tIFBvbGljeUNo
ZWNrZXIgaW5mcmFzdHJ1Y3R1cmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAy
MjI0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMjExNiw3ICsyMTE2LDYgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGxvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmNwcAogICAgIGxvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKICAgICBsb2FkZXIvUGluZ0xvYWRlci5jcHAKLSAgICBsb2FkZXIvUG9saWN5Q2FsbGJh
Y2suY3BwCiAgICAgbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCiAgICAgbG9hZGVyL1Byb2dyZXNz
VHJhY2tlci5jcHAKICAgICBsb2FkZXIvUmVzb3VyY2VDcnlwdG9ncmFwaGljRGlnZXN0LmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjIyNDU2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MTA1LDggKzQxMDUsNiBAQAog
CQk5NTIwNzYwNjFGMjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTIwNzYwMjFGMjY3NUY5MDA3
RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi87IH07CiAJCTk2QUJBNDIzMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQg
LyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovOyB9OwogCQk5NzAzRTFCRjE1
REM0RTM3MDAxRjI0QzggLyogSlNWb2lkQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTdFOUVDOEIxNURDNDkyRjAwNEYyRTcxIC8qIEpT
Vm9pZENhbGxiYWNrLmNwcCAqLzsgfTsKLQkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi87
IH07Ci0JCTk3MDU5OTc4MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzQxMDdEOTc1
MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTcwNTk5NzkxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovOyB9Owog
CQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUw
QTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZh
Y2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBC
NzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEyNDcwLDggKzEyNDY4LDYgQEAK
IAkJOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTIwNzYwMjFG
MjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxU
cmFjZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NkFCQTQyMjE0QkNC
ODBFMDBENTYyMDQgLyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21t
b24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NzA1OTk3MzEwN0Q5NzUyMDBB
NTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUG9saWN5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9saWN5Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBv
bGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwQjcyODkxNDRG
RkFDNjAwRjAwQTM3IC8qIEV2ZW50SW50ZXJmYWNlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFdmVudEludGVyZmFjZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTI0NDYzLDggKzI0NDU5LDYgQEAKIAkJCQk2NTZEMzcyQjBBREJBNURFMDBBNDU1NEQgLyog
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuaCAqLywKIAkJCQlEMEZGMkE1QjExRjhDNDVBMDA3
RTc0RTAgLyogUGluZ0xvYWRlci5jcHAgKi8sCiAJCQkJRDBGRjJBNUMxMUY4QzQ1QTAwN0U3NEUw
IC8qIFBpbmdMb2FkZXIuaCAqLywKLQkJCQk5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9s
aWN5Q2FsbGJhY2suY3BwICovLAotCQkJCTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xp
Y3lDYWxsYmFjay5oICovLAogCQkJCTk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lD
aGVja2VyLmNwcCAqLywKIAkJCQk5NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hl
Y2tlci5oICovLAogCQkJCTFBMkE2ODIxMEI1QkVERTcwMDAyQTQ4MCAvKiBQcm9ncmVzc1RyYWNr
ZXIuY3BwICovLApAQCAtMjk1ODcsNyArMjk1ODEsNiBAQAogCQkJCUIyQjFGNzE3MEQwMENBQTgw
MDRBRUE2NCAvKiBQb2ludGVyRXZlbnRzSGl0UnVsZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTNG
RjgxM0E3MURCQTg2NDAwMDlCRjAwMSAvKiBQb2ludGVyTG9ja0NvbnRyb2xsZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzMwRDkyMTI0OEYwQjMwMEQzQTlDOSAvKiBQb2ludExpZ2h0U291cmNl
LmggaW4gSGVhZGVycyAqLywKLQkJCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTk3MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlGRDQ1QTk1NzE3NUQ0MTRDMDBD
MjFFQzggLyogUG9seWdvblNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTc0RTIwQTEwQTFG
NDRGMDBGOTVFNkYgLyogUG9wU3RhdGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzU3OCw3
ICszMzU3MSw2IEBACiAJCQkJQjJCMUY3MTYwRDAwQ0FBODAwNEFFQTY0IC8qIFBvaW50ZXJFdmVu
dHNIaXRSdWxlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1Q0ZDNDM1MDE5MjQwOUUzMDBBMEQz
QjUgLyogUG9pbnRlckxvY2tDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUExRTEx
NTQ2MTMwMTVDNEUwMDU0QUM4QyAvKiBQb2ludExpZ2h0U291cmNlLmNwcCBpbiBTb3VyY2VzICov
LAotCQkJCTk3MDU5OTc3MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk5NzA1OTk3OTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGRDQ1QTk1OTE3NUQ0MTcxMDBDMjFFQzggLyogUG9s
eWdvblNoYXBlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxODlGMERFMTBCNDZCMEUwMEYzQzcz
OSAvKiBQb3BTdGF0ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjI0NTYpCisrKyBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NSw2
ICs3NSw3IEBACiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJUZXh0
UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpJ
bmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjI0NTYp
CisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksNiArMTE5LDcgQEAKICNpbmNsdWRlICJVc2VyQ29udGVudENvbnRyb2xsZXIuaCIK
ICNpbmNsdWRlICJXaW5kb3dGZWF0dXJlcy5oIgogI2luY2x1ZGUgIlhNTERvY3VtZW50UGFyc2Vy
LmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5o
CShyZXZpc2lvbiAyMjI0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtODQsNyArODQsNiBAQCBjbGFzcyBNZXNzYWdlRXZl
bnQ7CiBjbGFzcyBOYXZpZ2F0aW9uQWN0aW9uOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBsdWdpblZp
ZXdCYXNlOwotY2xhc3MgUG9saWN5Q2hlY2tlcjsKIGNsYXNzIFByZXZpZXdMb2FkZXJDbGllbnQ7
CiBjbGFzcyBQcm90ZWN0aW9uU3BhY2U7CiBjbGFzcyBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXI7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAJKHJldmlzaW9u
IDIyMjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDYWxsYmFjay5jcHAJKG5v
bmV4aXN0ZW50KQpAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAy
MDA3LCAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4gCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4gCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCi0gKgotICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgIlBvbGljeUNhbGxiYWNrLmgiCi0KLSNpbmNsdWRlICJGb3JtU3RhdGUuaCIKLSNp
bmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCi0jaW5jbHVkZSAiSFRN
TEZvcm1FbGVtZW50LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdm9pZCBQb2xpY3lDYWxs
YmFjazo6c2V0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0YXRlKiBmb3Jt
U3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYgZnVuY3Rpb24pCi17Ci0g
ICAgbV9yZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBtX2Zvcm1TdGF0ZSA9IGZvcm1TdGF0ZTsKLSAg
ICBtX2ZyYW1lTmFtZSA9IFN0cmluZygpOwotCi0gICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24gPSBX
VEZNb3ZlKGZ1bmN0aW9uKTsKLX0KLQotdm9pZCBQb2xpY3lDYWxsYmFjazo6Y2FsbChib29sIHNo
b3VsZENvbnRpbnVlKQotewotICAgIGlmIChtX25hdmlnYXRpb25GdW5jdGlvbikKLSAgICAgICAg
bV9uYXZpZ2F0aW9uRnVuY3Rpb24obV9yZXF1ZXN0LCBtX2Zvcm1TdGF0ZS5nZXQoKSwgc2hvdWxk
Q29udGludWUpOwotfQotCi12b2lkIFBvbGljeUNhbGxiYWNrOjpjbGVhclJlcXVlc3QoKQotewot
ICAgIG1fcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwotICAgIG1fZm9ybVN0YXRlID0gbnVs
bHB0cjsKLSAgICBtX2ZyYW1lTmFtZSA9IFN0cmluZygpOwotfQotCi12b2lkIFBvbGljeUNhbGxi
YWNrOjpjYW5jZWwoKQotewotICAgIGNsZWFyUmVxdWVzdCgpOwotICAgIGlmIChtX25hdmlnYXRp
b25GdW5jdGlvbikKLSAgICAgICAgbV9uYXZpZ2F0aW9uRnVuY3Rpb24obV9yZXF1ZXN0LCBtX2Zv
cm1TdGF0ZS5nZXQoKSwgZmFsc2UpOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2FsbGJhY2suY3Bw
Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUK
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1BvbGljeUNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVy
L1BvbGljeUNhbGxiYWNrLmgJKHJldmlzaW9uIDIyMjQ1NikKKysrIFNvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDYWxsYmFjay5oCShub25leGlzdGVudCkKQEAgLTEsNjUgKzAsMCBAQAotLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykK
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuIAotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uIAotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uIAotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEg
b25jZQotCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXJUeXBlcy5oIgotI2luY2x1ZGUgIk5hdmlnYXRp
b25BY3Rpb24uaCIKLSNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKLSNpbmNsdWRlIDxmdW5j
dGlvbmFsPgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBGb3JtU3RhdGU7Ci0KLXVzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1
bmN0aW9uID0gRnVuY3Rpb248dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUq
LCBib29sIHNob3VsZENvbnRpbnVlKT47Ci0KLWNsYXNzIFBvbGljeUNhbGxiYWNrIHsKLXB1Ymxp
YzoKLSAgICB2b2lkIHNldChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBOYXZp
Z2F0aW9uUG9saWN5RGVjaXNpb25GdW5jdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlc291cmNlUmVx
dWVzdCYgcmVxdWVzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVxdWVzdDsgfQotICAgIHZvaWQgY2xl
YXJSZXF1ZXN0KCk7Ci0KLSAgICB2b2lkIGNhbGwoYm9vbCBzaG91bGRDb250aW51ZSk7Ci0gICAg
dm9pZCBjYW5jZWwoKTsKLQotcHJpdmF0ZToKLSAgICBSZXNvdXJjZVJlcXVlc3QgbV9yZXF1ZXN0
OwotICAgIFJlZlB0cjxGb3JtU3RhdGU+IG1fZm9ybVN0YXRlOwotICAgIFN0cmluZyBtX2ZyYW1l
TmFtZTsKLSAgICBOYXZpZ2F0aW9uQWN0aW9uIG1fbmF2aWdhdGlvbkFjdGlvbjsKLQotICAgIE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIG1fbmF2aWdhdGlvbkZ1bmN0aW9uOwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dl
YkNvcmUvbG9hZGVyL1BvbGljeUNhbGxiYWNrLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9s
LXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3Bl
cnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCShyZXZpc2lv
biAyMjI0NTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGx1
Z0luRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiAjaWYg
VVNFKFFVSUNLX0xPT0spCiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCkBAIC03NSwxMiArNzYsMTIg
QEAgUG9saWN5Q2hlY2tlcjo6UG9saWN5Q2hlY2tlcihGcmFtZSYgZnJhbQogewogfQogCi12b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIG5ld1JlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBi
b29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb25G
dW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGNoZWNrTmF2aWdhdGlvblBvbGljeShuZXdSZXF1
ZXN0LCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgbV9mcmFtZS5sb2FkZXIoKS5hY3RpdmVE
b2N1bWVudExvYWRlcigpLCBudWxscHRyLCBXVEZNb3ZlKGZ1bmN0aW9uKSk7CiB9CiAKLXZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlciwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bkZ1bmN0aW9uIGZ1bmN0aW9uKQordm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Q
b2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRp
cmVjdFJlc3BvbnNlLCBEb2N1bWVudExvYWRlciogbG9hZGVyLCBGb3JtU3RhdGUqIGZvcm1TdGF0
ZSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24mJiBmdW5jdGlvbikKIHsKICAgICBO
YXZpZ2F0aW9uQWN0aW9uIGFjdGlvbiA9IGxvYWRlci0+dHJpZ2dlcmluZ0FjdGlvbigpOwogICAg
IGlmIChhY3Rpb24uaXNFbXB0eSgpKSB7CkBAIC05MSw3ICs5Miw3IEBAIHZvaWQgUG9saWN5Q2hl
Y2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWMKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9u
Y2UgZm9yIHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJM
LgogICAgIC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50
LgogICAgIGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFz
dENoZWNrZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgp
LmlzRW1wdHkoKSkpIHsKLSAgICAgICAgZnVuY3Rpb24ocmVxdWVzdCwgMCwgdHJ1ZSk7CisgICAg
ICAgIGZ1bmN0aW9uKHJlcXVlc3QsIG51bGxwdHIsIHRydWUpOwogICAgICAgICBsb2FkZXItPnNl
dExhc3RDaGVja2VkUmVxdWVzdChyZXF1ZXN0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAg
LTEwNiw3ICsxMDcsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
CiAjZW5kaWYKICAgICAgICAgaWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkK
ICAgICAgICAgICAgIG1fbG9hZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7Ci0gICAgICAg
IGZ1bmN0aW9uKHJlcXVlc3QsIDAsIHNob3VsZENvbnRpbnVlKTsKKyAgICAgICAgZnVuY3Rpb24o
cmVxdWVzdCwgbnVsbHB0ciwgc2hvdWxkQ29udGludWUpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMTYsMjAgKzExNywxNiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljCiAgICAgICAgICAgICAvLyByZXZlYWwgdGhhdCB0aGUgZnJhbWUgd2FzIGJsb2Nr
ZWQuIFRoaXMgd2F5LCBpdCBsb29rcyBsaWtlIGFueSBvdGhlciBjcm9zcy1vcmlnaW4gcGFnZSBs
b2FkLgogICAgICAgICAgICAgbV9mcmFtZS5vd25lckVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAg
ICAgICB9Ci0gICAgICAgIGZ1bmN0aW9uKHJlcXVlc3QsIDAsIGZhbHNlKTsKKyAgICAgICAgZnVu
Y3Rpb24ocmVxdWVzdCwgbnVsbHB0ciwgZmFsc2UpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CiAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QocmVxdWVzdCk7CiAKLSAgICBtX2Nh
bGxiYWNrLnNldChyZXF1ZXN0LCBmb3JtU3RhdGUsIFdURk1vdmUoZnVuY3Rpb24pKTsKLQogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBRdWlja0xvb2stZ2VuZXJhdGVk
IFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KLSAgICBpZiAoIXJlcXVlc3QuaXNO
dWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAg
IGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeVVzZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9CisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIGlzUXVpY2tMb29rUHJldmll
d1VSTChyZXF1ZXN0LnVybCgpKSkKKyAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHJlcXVlc3QsIGZv
cm1TdGF0ZSwgdHJ1ZSk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykK
QEAgLTEzOSwyOSArMTM2LDQzIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9u
UG9saWMKICAgICAgICAgICAgIGlmICh1bmJsb2NrZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUt
PmxvYWRlcigpLnJlbG9hZCgpOwogICAgICAgICB9KTsKLSAgICAgICAgY29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3JlKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBmYWxzZSk7CiAgICAgfQogICAgIG1fY29udGVu
dEZpbHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwogI2VuZGlmCiAKICAgICBtX2RlbGVnYXRlSXNE
ZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwotICAgIG1fc3VnZ2VzdGVkRmlsZW5hbWUg
PSBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKS5pc0VtcHR5KCkgPyBudWxsQXRvbSgpIDogYWN0
aW9uLmRvd25sb2FkQXR0cmlidXRlKCk7Ci0gICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oYWN0aW9uLCByZXF1ZXN0LCBk
aWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgZm9ybVN0YXRlLCBbdGhpc10oUG9saWN5QWN0aW9u
IGFjdGlvbikgewotICAgICAgICBjb250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShhY3Rpb24p
OworICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFtZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0
ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBhY3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsK
KyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkgPSByZXF1ZXN0OworICAgIG1fZnJhbWUu
bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KGFjdGlvbiwgcmVxdWVzdCwgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIGZvcm1TdGF0ZSwg
W3RoaXMsIGZ1bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBXVEZNb3ZlKHJl
cXVlc3RDb3B5KSwgZm9ybVN0YXRlID0gbWFrZVJlZlB0cihmb3JtU3RhdGUpLCBzdWdnZXN0ZWRG
aWxlbmFtZSA9IFdURk1vdmUoc3VnZ2VzdGVkRmlsZW5hbWUpXShQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKKyAgICAg
ICAgY2FzZSBQb2xpY3lEb3dubG9hZDoKKyAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuc2V0
T3JpZ2luYWxVUkxGb3JEb3dubG9hZFJlcXVlc3QocmVxdWVzdCk7CisgICAgICAgICAgICBtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCwgc3VnZ2VzdGVkRmls
ZW5hbWUpOworICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgIGNhc2UgUG9saWN5SWdu
b3JlOgorICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgZmFsc2UpOwor
ICAgICAgICBjYXNlIFBvbGljeVVzZToKKyAgICAgICAgICAgIGlmICghbV9mcmFtZS5sb2FkZXIo
KS5jbGllbnQoKS5jYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpKSB7CisgICAgICAgICAgICAgICAg
aGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2Fu
bm90U2hvd1VSTEVycm9yKHJlcXVlc3QpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCBmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1
cm4gZnVuY3Rpb24ocmVxdWVzdCwgZm9ybVN0YXRlLmdldCgpLCB0cnVlKTsKKyAgICAgICAgfQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9KTsKICAgICBtX2RlbGVnYXRlSXNE
ZWNpZGluZ05hdmlnYXRpb25Qb2xpY3kgPSBmYWxzZTsKIH0KIAotdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0aW9uQWN0aW9uJiYgbmF2aWdhdGlvbkFjdGlv
biwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZvcm1TdGF0ZSwg
Y29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24g
ZnVuY3Rpb24pCit2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KE5hdmln
YXRpb25BY3Rpb24mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgTmV3
V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiYmIGZ1bmN0aW9uKQogewogICAgIGlmIChtX2Zy
YW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94
UG9wdXBzKSkKLSAgICAgICAgcmV0dXJuIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBv
bGljeUlnbm9yZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwg
eyB9LCBmYWxzZSk7CiAKICAgICBpZiAoIURPTVdpbmRvdzo6YWxsb3dQb3BVcChtX2ZyYW1lKSkK
LSAgICAgICAgcmV0dXJuIGNvbnRpbnVlQWZ0ZXJOYXZpZ2F0aW9uUG9saWN5KFBvbGljeUlnbm9y
ZSk7CisgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIHsgfSwgeyB9LCBmYWxz
ZSk7CiAKLSAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoRGVjaWRlUG9saWN5
Rm9yTmV3V2luZG93QWN0aW9uKG5hdmlnYXRpb25BY3Rpb24sIHJlcXVlc3QsIGZvcm1TdGF0ZSwg
ZnJhbWVOYW1lLCBbZnJhbWUgPSBtYWtlUmVmKG1fZnJhbWUpLCByZXF1ZXN0LCBmb3JtU3RhdGUg
PSBtYWtlUmVmUHRyKGZvcm1TdGF0ZSksIGZyYW1lTmFtZSwgbmF2aWdhdGlvbkFjdGlvbiwgZnVu
Y3Rpb24gPSBXVEZNb3ZlKGZ1bmN0aW9uKV0oUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgewor
ICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24obmF2aWdhdGlvbkFjdGlvbiwgcmVxdWVzdCwgZm9ybVN0YXRlLCBmcmFtZU5h
bWUsIFtmcmFtZSA9IG1ha2VSZWYobV9mcmFtZSksIHJlcXVlc3QsIGZvcm1TdGF0ZSA9IG1ha2VS
ZWZQdHIoZm9ybVN0YXRlKSwgZnJhbWVOYW1lLCBuYXZpZ2F0aW9uQWN0aW9uLCBmdW5jdGlvbiA9
IFdURk1vdmUoZnVuY3Rpb24pXShQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsK
ICAgICAgICAgc3dpdGNoIChwb2xpY3lBY3Rpb24pIHsKICAgICAgICAgY2FzZSBQb2xpY3lEb3du
bG9hZDoKICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2Fk
KHJlcXVlc3QpOwpAQCAtMTgwLDggKzE5MSw2IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tO
ZXdXaW5kb3dQb2xpY3kKIHZvaWQgUG9saWN5Q2hlY2tlcjo6c3RvcENoZWNrKCkKIHsKICAgICBt
X2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbmNlbFBvbGljeUNoZWNrKCk7Ci0gICAgUG9saWN5
Q2FsbGJhY2sgY2FsbGJhY2sgPSBXVEZNb3ZlKG1fY2FsbGJhY2spOwotICAgIGNhbGxiYWNrLmNh
bmNlbCgpOwogfQogCiB2b2lkIFBvbGljeUNoZWNrZXI6OmNhbm5vdFNob3dNSU1FVHlwZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKQEAgLTE4OSwzOCArMTk4LDYgQEAgdm9pZCBQ
b2xpY3lDaGVja2VyOjpjYW5ub3RTaG93TUlNRVR5cGUoYwogICAgIGhhbmRsZVVuaW1wbGVtZW50
YWJsZVBvbGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dNSU1FVHlwZUVy
cm9yKHJlc3BvbnNlKSk7CiB9CiAKLXZvaWQgUG9saWN5Q2hlY2tlcjo6Y29udGludWVBZnRlck5h
dmlnYXRpb25Qb2xpY3koUG9saWN5QWN0aW9uIHBvbGljeSkKLXsKLSAgICBQb2xpY3lDYWxsYmFj
ayBjYWxsYmFjayA9IFdURk1vdmUobV9jYWxsYmFjayk7Ci0KLSAgICBib29sIHNob3VsZENvbnRp
bnVlID0gcG9saWN5ID09IFBvbGljeVVzZTsKLQotICAgIHN3aXRjaCAocG9saWN5KSB7Ci0gICAg
ICAgIGNhc2UgUG9saWN5SWdub3JlOgotICAgICAgICAgICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBQb2xpY3lEb3dubG9hZDogewot
ICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QgPSBjYWxsYmFjay5yZXF1ZXN0KCk7
Ci0gICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLnNldE9yaWdpbmFsVVJMRm9yRG93bmxvYWRS
ZXF1ZXN0KHJlcXVlc3QpOwotICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5z
dGFydERvd25sb2FkKHJlcXVlc3QsIG1fc3VnZ2VzdGVkRmlsZW5hbWUpOwotICAgICAgICAgICAg
Y2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQot
ICAgICAgICBjYXNlIFBvbGljeVVzZTogewotICAgICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoY2FsbGJhY2sucmVxdWVzdCgpKTsKLQotICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxv
YWRlcigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKLSAgICAgICAgICAg
ICAgICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jYW5ub3RTaG93VVJMRXJyb3IoY2FsbGJhY2sucmVxdWVzdCgpKSk7Ci0gICAgICAgICAgICAg
ICAgY2FsbGJhY2suY2xlYXJSZXF1ZXN0KCk7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9
Ci0gICAgfQotCi0gICAgY2FsbGJhY2suY2FsbChzaG91bGRDb250aW51ZSk7Ci19Ci0KIHZvaWQg
UG9saWN5Q2hlY2tlcjo6aGFuZGxlVW5pbXBsZW1lbnRhYmxlUG9saWN5KGNvbnN0IFJlc291cmNl
RXJyb3ImIGVycm9yKQogewogICAgIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxl
UG9saWN5ID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuaAko
cmV2aXNpb24gMjIyNDU2KQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJGcmFtZUxvYWRlclR5cGVzLmgiCi0jaW5jbHVkZSAiUG9saWN5Q2FsbGJhY2suaCIKICNp
bmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIApAQCAtMzgsNiArMzcsMTAgQEAKICNpbmNsdWRlICJDb250ZW50RmlsdGVyVW5ibG9ja0hh
bmRsZXIuaCIKICNlbmRpZgogCituYW1lc3BhY2UgV1RGIHsKK3RlbXBsYXRlPHR5cGVuYW1lPiBj
bGFzcyBDb21wbGV0aW9uSGFuZGxlcjsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFz
cyBEb2N1bWVudExvYWRlcjsKQEAgLTQ3LDcgKzUwLDggQEAgY2xhc3MgTmF2aWdhdGlvbkFjdGlv
bjsKIGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwogCi11c2lu
ZyBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiwgYm9vbCBzaG91bGRDb250aW51ZSk+OwordXNpbmcg
TmV3V2luZG93UG9saWN5RGVjaXNpb25GdW5jdGlvbiA9IFdURjo6Q29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBGb3JtU3RhdGUqLCBjb25zdCBTdHJpbmcmIGZy
YW1lTmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYsIGJvb2wgc2hvdWxkQ29udGludWUpPjsK
K3VzaW5nIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uID0gV1RGOjpDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGJvb2wgc2hv
dWxkQ29udGludWUpPjsKIAogY2xhc3MgUG9saWN5Q2hlY2tlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUG9saWN5Q2hlY2tlcik7CkBAIC01NSw5ICs1OSw5IEBAIGNsYXNzIFBvbGljeUNo
ZWNrZXIgewogcHVibGljOgogICAgIGV4cGxpY2l0IFBvbGljeUNoZWNrZXIoRnJhbWUmKTsKIAot
ICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJv
b2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERvY3VtZW50TG9hZGVyKiwgRm9ybVN0YXRl
KiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rpb24pOwotICAgIHZvaWQgY2hlY2tOYXZp
Z2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGly
ZWN0UmVzcG9uc2UsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbkZ1bmN0aW9uKTsKLSAgICB2b2lk
IGNoZWNrTmV3V2luZG93UG9saWN5KE5hdmlnYXRpb25BY3Rpb24mJiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgRm9ybVN0YXRlKiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5ld1dpbmRvd1Bv
bGljeURlY2lzaW9uRnVuY3Rpb24pOworICAgIHZvaWQgY2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNv
bnN0IFJlc291cmNlUmVxdWVzdCYsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIERv
Y3VtZW50TG9hZGVyKiwgRm9ybVN0YXRlKiwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uRnVuY3Rp
b24mJik7CisgICAgdm9pZCBjaGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNwb25zZSwgTmF2aWdhdGlvblBvbGljeURl
Y2lzaW9uRnVuY3Rpb24mJik7CisgICAgdm9pZCBjaGVja05ld1dpbmRvd1BvbGljeShOYXZpZ2F0
aW9uQWN0aW9uJiYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIEZvcm1TdGF0ZSosIGNvbnN0IFN0
cmluZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uJiYpOwogCiAg
ICAgdm9pZCBzdG9wQ2hlY2soKTsKIApAQCAtNjYsOCArNzAsNiBAQCBwdWJsaWM6CiAgICAgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZFR5cGU7IH0KICAgICB2
b2lkIHNldExvYWRUeXBlKEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUpIHsgbV9sb2FkVHlwZSA9IGxv
YWRUeXBlOyB9CiAKLSAgICB2b2lkIHNldFN1Z2dlc3RlZEZpbGVuYW1lKGNvbnN0IFN0cmluZyYg
c3VnZ2VzdGVkRmlsZW5hbWUpIHsgbV9zdWdnZXN0ZWRGaWxlbmFtZSA9IHN1Z2dlc3RlZEZpbGVu
YW1lOyB9Ci0KICAgICBib29sIGRlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3koKSBj
b25zdCB7IHJldHVybiBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRpb25Qb2xpY3k7IH0KICAg
ICBib29sIGRlbGVnYXRlSXNIYW5kbGluZ1VuaW1wbGVtZW50YWJsZVBvbGljeSgpIGNvbnN0IHsg
cmV0dXJuIG1fZGVsZWdhdGVJc0hhbmRsaW5nVW5pbXBsZW1lbnRhYmxlUG9saWN5OyB9CiAKQEAg
LTc2LDggKzc4LDYgQEAgcHVibGljOgogI2VuZGlmCiAKIHByaXZhdGU6Ci0gICAgdm9pZCBjb250
aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lBY3Rpb24pOwotCiAgICAgdm9pZCBoYW5k
bGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgRnJh
bWUmIG1fZnJhbWU7CkBAIC04OSw4ICs4OSw2IEBAIHByaXZhdGU6CiAgICAgLy8gdGhhdCBXZWJL
aXQgY29udmV5cyB0aGlzIHZhbHVlIGFzIHRoZSBXZWJBY3Rpb25OYXZpZ2F0aW9uVHlwZUtleSB2
YWx1ZQogICAgIC8vIG9uIG5hdmlnYXRpb24gYWN0aW9uIGRlbGVnYXRlIGNhbGxiYWNrcy4KICAg
ICBGcmFtZUxvYWRUeXBlIG1fbG9hZFR5cGU7Ci0gICAgUG9saWN5Q2FsbGJhY2sgbV9jYWxsYmFj
azsKLSAgICBTdHJpbmcgbV9zdWdnZXN0ZWRGaWxlbmFtZTsKIAogI2lmIEVOQUJMRShDT05URU5U
X0ZJTFRFUklORykKICAgICBDb250ZW50RmlsdGVyVW5ibG9ja0hhbmRsZXIgbV9jb250ZW50Rmls
dGVyVW5ibG9ja0hhbmRsZXI7CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNDU2KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNiBAQAorMjAx
Ny0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisg
ICAgICAgIFN0b3AgdXNpbmcgUG9saWN5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NjA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFu
ZHkgRXN0ZXMuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVjdG9yLmNwcDoKKwogMjAxNy0wOS0yNSAgQWxleCBD
aHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFNlcGFyYXRl
IGZvcm0gc3VibWlzc2lvbiBmcm9tIFBvbGljeUNoZWNrZXIgaW5mcmFzdHJ1Y3R1cmUKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjIyNDU2KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzcsNiArNzcsNyBAQAogI2luY2x1ZGUgPFdlYkNvcmUv
UGFnZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUGx1Z2luRGF0YS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvUGx1Z2luRG9jdW1lbnQuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1BvbGljeUNoZWNrZXIuaD4K
ICNpbmNsdWRlIDxXZWJDb3JlL1Byb2dyZXNzVHJhY2tlci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvU2NyaXB0Q29udHJvbGxlci5oPgpJ
bmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAko
cmV2aXNpb24gMjIyNDU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNyArMjQwLDggQEAgdm9pZCBXZWJGcmFt
ZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKAogCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0g
eyB9OwogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7Ci0gICAgbV9wb2xpY3lGdW5jdGlvbiA9
IG51bGxwdHI7CisgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4Y2hhbmdlKG1fcG9saWN5
RnVuY3Rpb24sIG51bGxwdHIpKQorICAgICAgICBmdW5jdGlvbihQb2xpY3lJZ25vcmUpOwogfQog
CiB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgbGlzdGVu
ZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9h
ZElEIGRvd25sb2FkSUQpCkBAIC0yNTQsNyArMjU1LDggQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKAogICAgIGlmIChsaXN0ZW5lcklEICE9IG1fcG9saWN5TGlzdGVu
ZXJJRCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKG1fcG9saWN5RnVuY3Rpb24pOwor
ICAgIGlmICghbV9wb2xpY3lGdW5jdGlvbikKKyAgICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWVQ
b2xpY3lGdW5jdGlvbiBmdW5jdGlvbiA9IFdURk1vdmUobV9wb2xpY3lGdW5jdGlvbik7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNp
b24gMjIyNDU2KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsOCArMzMsOCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0pTQmFzZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRnJhbWVMb2FkZXJDbGllbnQuaD4KICNp
bmNsdWRlIDxXZWJDb3JlL0ZyYW1lTG9hZGVyVHlwZXMuaD4KLSNpbmNsdWRlIDxXZWJDb3JlL1Bv
bGljeUNoZWNrZXIuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViSW5zcGVj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJJbnNwZWN0b3IuY3BwCShyZXZpc2lvbiAyMjI0NTYpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJJbnNwZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9JbnNwZWN0b3JGcm9udGVuZENsaWVudC5oPgogI2lu
Y2x1ZGUgPFdlYkNvcmUvSW5zcGVjdG9yUGFnZUFnZW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9N
YWluRnJhbWUuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL05hdmlnYXRpb25BY3Rpb24uaD4KICNpbmNs
dWRlIDxXZWJDb3JlL05vdEltcGxlbWVudGVkLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QYWdlLmg+
CiAjaW5jbHVkZSA8V2ViQ29yZS9TY3JpcHRDb250cm9sbGVyLmg+CkluZGV4OiBTb3VyY2UvV2Vi
S2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI0NTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5
L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxNy0wOS0y
NSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFN0b3AgdXNpbmcgUG9saWN5Q2FsbGJhY2sKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3NjA4OAorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHkgRXN0
ZXMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWVQb2xpY3lMaXN0ZW5lciBpbnZhbGlkYXRlXSk6CisgICAgICAg
ICgtW1dlYkZyYW1lUG9saWN5TGlzdGVuZXIgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbjpdKToKKwog
MjAxNy0wOS0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIFNlcGFyYXRlIGZvcm0gc3VibWlzc2lvbiBmcm9tIFBvbGljeUNoZWNrZXIgaW5m
cmFzdHJ1Y3R1cmUKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiAy
MjI0NTYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQwOSw2ICsyNDA5LDggQEAgLSAo
aWQpaW5pdFdpdGhGcmFtZTooRnJhbWUqKWZyYW1lIHBvbGljeQogLSAodm9pZClpbnZhbGlkYXRl
CiB7CiAgICAgX2ZyYW1lID0gbnVsbHB0cjsKKyAgICBpZiAoYXV0byBwb2xpY3lGdW5jdGlvbiA9
IHN0ZDo6ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKKyAgICAgICAgcG9saWN5
RnVuY3Rpb24oUG9saWN5SWdub3JlKTsKIH0KIAogLSAodm9pZClkZWFsbG9jCkBAIC0yNDI1LDEx
ICsyNDI3LDggQEAgLSAodm9pZClyZWNlaXZlZFBvbGljeURlY2lzaW9uOihQb2xpY3lBYwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lUG9saWN5RnVuY3Rpb24g
cG9saWN5RnVuY3Rpb24gPSBXVEZNb3ZlKF9wb2xpY3lGdW5jdGlvbik7Ci0gICAgX3BvbGljeUZ1
bmN0aW9uID0gbnVsbHB0cjsKLQotICAgIEFTU0VSVChwb2xpY3lGdW5jdGlvbik7Ci0gICAgcG9s
aWN5RnVuY3Rpb24oYWN0aW9uKTsKKyAgICBpZiAoYXV0byBwb2xpY3lGdW5jdGlvbiA9IHN0ZDo6
ZXhjaGFuZ2UoX3BvbGljeUZ1bmN0aW9uLCBudWxscHRyKSkKKyAgICAgICAgcG9saWN5RnVuY3Rp
b24oYWN0aW9uKTsKIH0KIAogLSAodm9pZClpZ25vcmUK
</data>

          </attachment>
      

    </bug>

</bugzilla>