<?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>181102</bug_id>
          
          <creation_ts>2017-12-21 13:59:34 -0800</creation_ts>
          <short_desc>Rename NoEventDispatchAssertion to ScriptDisallowedScope</short_desc>
          <delta_ts>2017-12-21 17:11:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1384247</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-12-21 13:59:34 -0800</bug_when>
    <thetext>It no longer makes sense to call this class NoEventDispatchAssertion
given it&apos;s used to communicate the intent of never executing scripts
whether it&apos;s an event, or a callback, etc...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384252</commentid>
    <comment_count>1</comment_count>
      <attachid>330062</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-12-21 14:05:58 -0800</bug_when>
    <thetext>Created attachment 330062
Renamed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384267</commentid>
    <comment_count>2</comment_count>
      <attachid>330069</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-12-21 14:26:47 -0800</bug_when>
    <thetext>Created attachment 330069
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384268</commentid>
    <comment_count>3</comment_count>
      <attachid>330069</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-12-21 14:27:54 -0800</bug_when>
    <thetext>Comment on attachment 330069
Patch for landing

Wait for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384269</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2017-12-21 14:30:51 -0800</bug_when>
    <thetext>Attachment 330069 did not pass style-queue:


ERROR: Source/WebCore/dom/Element.cpp:2478:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/Element.cpp:2485:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/Node.cpp:2338:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/Node.cpp:2351:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/EventDispatcher.cpp:133:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/ContainerNode.cpp:126:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/ContainerNode.cpp:769:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/ContainerNode.cpp:786:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/Document.cpp:4302:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/Document.cpp:4310:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/Document.cpp:5145:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
ERROR: Source/WebCore/dom/EventTarget.cpp:218:  Please replace ASSERT_WITH_SECURITY_IMPLICATION() with RELEASE_ASSERT_WITH_SECURITY_IMPLICATION().  [security/assertion] [5]
Total errors found: 12 in 28 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384327</commentid>
    <comment_count>5</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2017-12-21 17:10:34 -0800</bug_when>
    <thetext>Committed r226251: &lt;https://trac.webkit.org/changeset/226251&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1384328</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-12-21 17:11:52 -0800</bug_when>
    <thetext>&lt;rdar://problem/36188468&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330062</attachid>
            <date>2017-12-21 14:05:58 -0800</date>
            <delta_ts>2017-12-21 14:26:41 -0800</delta_ts>
            <desc>Renamed</desc>
            <filename>bug-181102-20171221140558.patch</filename>
            <type>text/plain</type>
            <size>65671</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNjIzOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAxNy0xMi0yMSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uIHRvIFNjcmlwdERpc2FsbG93ZWRTY29wZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVuYW1lZCB0aGUgY2xhc3MuCisKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGlu
Z3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250
cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyk6CisgICAgICAgICogZG9tL0NvbnRhaW5lck5vZGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5X
aXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJl
bW92ZU5vZGVXaXRoU2NyaXB0QXNzZXJ0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVO
b2RlSW5zZXJ0aW9uV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjpyZW1vdmVEZXRhY2hlZENoaWxkcmVuKToKKyAgICAgICAgKFdlYkNvcmU6OkNv
bnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjphcHBlbmRDaGlsZENvbW1vbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRJ
bnNlcnRpb25FdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6ZGlzcGF0Y2hDaGlsZFJlbW92YWxF
dmVudHMpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpub3RpZnlDaGlsZE5vZGVJbnNlcnRlZCk6CisgICAgICAgIChXZWJDb3Jl
Ojpub3RpZnlDaGlsZE5vZGVSZW1vdmVkKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnJlc29sdmVTdHlsZSk6CisgICAgICAgIChXZWJD
b3JlOjppc1NhZmVUb1VwZGF0ZVN0eWxlT3JMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Om5vZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Om5vZGVXaWxsQmVSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaXNwYXRj
aFdpbmRvd0V2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpkaXNwYXRjaFdpbmRv
d0xvYWRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNM
VHJhbnNmb3Jtc1RpbWVyRmlyZWQpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFkZFNoYWRvd1Jvb3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6YXR0YWNoQXR0cmlidXRlTm9kZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6OnNldEF0dHJpYnV0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
c2V0QXR0cmlidXRlTm9kZU5TKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNo
Rm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNP
dXRFdmVudCk6CisgICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvckFzc2VydGlvbnMuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OkVsZW1lbnRJdGVyYXRv
ckFzc2VydGlvbnMpOgorICAgICAgICAqIGRvbS9FdmVudERpc3BhdGNoZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBk
b20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6OmZpcmVF
dmVudExpc3RlbmVycyk6CisgICAgICAgICogZG9tL05vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5o
OiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKiBkb20vU2NyaXB0RGlzYWxs
b3dlZFNjb3BlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob0V2ZW50RGlzcGF0
Y2hBc3NlcnRpb24uaC4KKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERpc2FsbG93ZWRTY29wZTo6
U2NyaXB0RGlzYWxsb3dlZFNjb3BlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdERpc2FsbG93
ZWRTY29wZTo6flNjcmlwdERpc2FsbG93ZWRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3Jp
cHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNFdmVudERpc3BhdGNoQWxsb3dlZElu
U3VidHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjo6Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6fk5vRXZlbnREaXNwYXRjaEFz
c2VydGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb246OmlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjpJbk1haW5UaHJl
YWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
OjpJbk1haW5UaHJlYWQ6On5Jbk1haW5UaHJlYWQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRj
aEFsbG93ZWRJblN1YnRyZWUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnRBbGxvd2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2Vk
U2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5v
RXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2NvcGU6On5FdmVudEFsbG93ZWRT
Y29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b246OkV2ZW50QWxsb3dlZFNjb3BlOjppc0FsbG93ZWROb2RlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2NvcGU6Omlz
QWxsb3dlZE5vZGVJbnRlcm5hbCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb246OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZTo6RGlzYWJsZUFzc2Vy
dGlvbnNJblNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbjo6RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlOjp+RGlzYWJsZUFzc2VydGlvbnNJ
blNjb3BlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vU2NyaXB0RWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3NpY1NjcmlwdCk6CisgICAg
ICAgICogZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHNGb3JEb2N1
bWVudFN1c3BlbnNpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRE9NT2JqZWN0cyk6CisgICAgICAg
ICogaGlzdG9yeS9DYWNoZWRQYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFBhZ2U6
OnJlc3RvcmUpOgorICAgICAgICAqIGhpc3RvcnkvUGFnZUNhY2hlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlBhZ2VDYWNoZTo6YWRkSWZDYWNoZWFibGUpOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6dGV4dFRvRnJhZ21lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVyVGV4dCk6CisgICAgICAgICogaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpz
ZXRJbm5lclRleHRWYWx1ZSk6CisgICAgICAgICogaHRtbC90cmFjay9WVFRDdWUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VlRUQ3VlOjpjcmVhdGVDdWVSZW5kZXJpbmdUcmVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlZUVEN1ZTo6dXBkYXRlRGlzcGxheVRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6
VlRUQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSk6CisgICAgICAgICogbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDYWNoZWRTVkdGb250OjplbnN1cmVDdXN0b21Gb250RGF0YSk6CisgICAg
ICAgICogcGFnZS9MYXlvdXRDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dENv
bnRleHQ6OmxheW91dCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGcmFtZUJhc2U6OnBlcmZvcm1MYXlvdXRXaXRoRmxh
dHRlbmluZyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKToKKyAgICAgICAgKiBz
dmcvU1ZHVFJlZkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVFJlZkVsZW1lbnQ6
OnVwZGF0ZVJlZmVyZW5jZWRUZXh0KToKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVtZW50OjpjbGVhclNoYWRvd1RyZWUpOgorICAg
ICAgICAqIHN2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJ
bWFnZTo6ZHJhdyk6CisKIDIwMTctMTItMjEgIEplcmVteSBKb25lcyAgPGplcmVteWpAYXBwbGUu
Y29tPgogCiAgICAgICAgIFVwZGF0ZSBGVUxMU0NSRUVOX0FQSSBmZWF0dXJlIGRlZmluZXMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1NzEsNyArNDU3MSw3IEBACiAJ
CUU0NjJBNEExMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJBNEEwMTEzRTcxQkUwMDRBNDIy
MCAvKiBJbnRQb2ludEhhc2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFNDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDZBMkIxQjE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2VuZGFu
dEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJRTQ2QTJCMUUxN0NBNzZCMTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDZBMkIxRDE3
Q0E3NkIxMDAwREJDRDggLyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlFNDZCNDFGOTFDQjI0RTcwMDA4RjEx
REUgLyogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDZCNDFGODFDQjI0RTcwMDA4RjExREUgLyogTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJRTQ2QjQxRjkxQ0IyNEU3MDAwOEYxMURFIC8qIFNjcmlwdERpc2FsbG93
ZWRTY29wZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RTQ2QjQxRjgxQ0IyNEU3MDAwOEYxMURFIC8qIFNjcmlwdERpc2FsbG93ZWRTY29wZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NkM3OTRCMUYx
M0U4MkIwMEYzNzFFMSAvKiBTdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMTgyMkYxRjEzQkU1ODAwRkVG
Njk4IC8qIFN0eWxlSW52YWxpZGF0aW9uRnVuY3Rpb25zLmggKi87IH07CiAJCUU0NzEyN0NCMTYz
NDM4QUUwMEVENkY1QSAvKiBTdHlsZUludmFsaWRhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDdBOTdDRjE2MzA1OUZDMDA1RENEOTkgLyogU3R5
bGVJbnZhbGlkYXRvci5oICovOyB9OwogCQlFNDc3OEI4MDExNUE1ODFBMDBCNUQzNzIgLyogSlND
dXN0b21FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRTQ3NzhCN0UxMTVBNTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCAqLzsgfTsKQEAg
LTEzODkzLDcgKzEzODkzLDcgQEAKIAkJRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIwIC8qIEludFBv
aW50SGFzaC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRQb2ludEhhc2gu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4
IC8qIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2QTJCMUQxN0NBNzZCMTAwMERCQ0Q4IC8qIEVsZW1lbnRD
aGlsZEl0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRD
aGlsZEl0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0NkI0MUY4MUNC
MjRFNzAwMDhGMTFERSAvKiBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUU0NkI0MUY4MUNCMjRFNzAwMDhGMTFERSAvKiBTY3JpcHRE
aXNhbGxvd2VkU2NvcGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
RGlzYWxsb3dlZFNjb3BlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Nzc4QjdE
MTE1QTU4MUEwMEI1RDM3MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlFNDc3OEI3RTExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUV2ZW50Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0N0EzQUMyMUM1RUFCQkUwMENDQkZBNyAvKiBTdHlsZVNo
YXJpbmdSZXNvbHZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
dHlsZVNoYXJpbmdSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
NTQ2Myw3ICsyNTQ2Myw2IEBACiAJCQkJRTQzMTA1QjcxNjc1MEYwQzAwREIyRkI4IC8qIE5vZGVU
cmF2ZXJzYWwuY3BwICovLAogCQkJCUU0MzEwNUJBMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJh
dmVyc2FsLmggKi8sCiAJCQkJOTM4MkFBQjEwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5k
ZXguaCAqLywKLQkJCQlFNDZCNDFGODFDQjI0RTcwMDA4RjExREUgLyogTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLmggKi8sCiAJCQkJODM2OUU1OEYxQUZERDAzMDAwODdERjY4IC8qIE5vbkRvY3Vt
ZW50VHlwZUNoaWxkTm9kZS5pZGwgKi8sCiAJCQkJN0M2NzUyQkExQjA2RTgyMDAwQzI3OUNCIC8q
IE5vbkVsZW1lbnRQYXJlbnROb2RlLmlkbCAqLywKIAkJCQkxQTBENTczNDBBNUM3N0ZFMDA3RURE
NEMgLyogT3ZlcmZsb3dFdmVudC5jcHAgKi8sCkBAIC0yNTUxNyw2ICsyNTUxNiw3IEBACiAJCQkJ
OUJEMEJGOTExMkE0MkJGNTAwNzJGRDQzIC8qIFNjb3BlZEV2ZW50UXVldWUuaCAqLywKIAkJCQlB
ODREODJDMDExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmNwcCAq
LywKIAkJCQlBODREODJCRjExRDM0NzQ4MDA5NzI5OTAgLyogU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmggKi8sCisJCQkJRTQ2QjQxRjgxQ0IyNEU3MDAwOEYxMURFIC8qIFNjcmlwdERpc2FsbG93
ZWRTY29wZS5oICovLAogCQkJCTQ5OThBRUNGMTNGQjIyNEQwMDkwQjFBQSAvKiBTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIuY3BwICovLAogCQkJCTQ5OThBRUQwMTNGQjIyNEQwMDkwQjFBQSAv
KiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCAqLywKIAkJCQkwOEE0ODQ3NTBFNTI3MkM1
MDBDM0ZFNzYgLyogU2NyaXB0RWxlbWVudC5jcHAgKi8sCkBAIC0yNzIyNiw3ICsyNzIyNiw2IEBA
CiAJCQkJOTc3QjM4NzgxMjI4ODNFOTAwQjgxRkY4IC8qIEhUTUxUb2tlbml6ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTA3MDc1NjhDMTQyMjYyRDYwMDQxNDE2MSAvKiBIVE1MVHJhY2tFbGVtZW50
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5NzdCMzcyNjEyMjg3MjE3MDBCODFGRjggLyogSFRNTFRy
ZWVCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdDMzkzMDFGRTZFMEZEMDBCQkJDNkIg
LyogUmVuZGVyVHJlZUJ1aWxkZXJGaXJzdExldHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThF
QTc5RjIwQTE5MTZERjAwQThFRjVGIC8qIEhUTUxVTGlzdEVsZW1lbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUFENDk5MTQzMThGMDgxNTEwMEJGMDA5MiAvKiBIVE1MVW5rbm93bkVsZW1lbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCUU0NDYxM0FCMENENjMzMTAwMEZBREE3NSAvKiBIVE1MVmlkZW9F
bGVtZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTI4NTAyLDcgKzI4NTAxLDYgQEAKIAkJCQk2M0Q3
QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDMxMDVCQjE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM4MkFBQjQwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCBp
biBIZWFkZXJzICovLAotCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkMwQzQxMTQ2REM2Q0MwMDE2
QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTMzNTAzQzlBMTAxNzlB
NzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMx
MjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250cm9sbGVyLmggaW4gSGVh
ZGVycyAqLywKQEAgLTI4OTE0LDEyICsyODkxMiwxMyBAQAogCQkJCUJDRUE0ODg3MDk3RDkzMDIw
MDk0QzlFNCAvKiBSZW5kZXJUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5OEMw
ODI0NUU1OTAwMUU5QUJDIC8qIFJlbmRlclRyZWVBc1RleHQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUU0N0MzOTJEMUZFNkUwRjMwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRTQ3QzM5MzAxRkU2RTBGRDAwQkJCQzZCIC8qIFJlbmRlclRyZWVCdWlsZGVy
Rmlyc3RMZXR0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTMyMUZFNkUxMDUwMEJCQkM2
QiAvKiBSZW5kZXJUcmVlQnVpbGRlckxpc3QuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0N0MzOTMz
MUZFNkUxMDgwMEJCQkM2QiAvKiBSZW5kZXJUcmVlQnVpbGRlck11bHRpQ29sdW1uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxMTkzNDA3OTFGRThCOTIzMDA5MzVGMUUgLyogUmVuZGVyVHJlZUJ1aWxk
ZXJUYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3QzM5MkUxRkU2RTBGNzAwQkJCQzZCIC8q
IFJlbmRlclRyZWVQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3QzM5MkYxRkU2RTBG
OTAwQkJCQzZCIC8qIFJlbmRlclRyZWVVcGRhdGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDdD
MzkzMTFGRTZFMTAyMDBCQkJDNkIgLyogUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdDMzkzMjFGRTZFMTA1MDBCQkJDNkIgLyogUmVuZGVy
VHJlZUJ1aWxkZXJMaXN0LmggaW4gSGVhZGVycyAqLywKLQkJCQlFNDdDMzkzMzFGRTZFMTA4MDBC
QkJDNkIgLyogUmVuZGVyVHJlZUJ1aWxkZXJNdWx0aUNvbHVtbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTQ0NjE0NTIwQ0Q2OEEzNTAwRkFEQTc1IC8qIFJlbmRlclZpZGVvLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQ0VBNDg2ODA5N0Q5MzAyMDA5NEM5RTQgLyogUmVuZGVyVmlldy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQkUyMDUwN0UxOEE0NThDMjAwODA2NDdFIC8qIFJlbmRlclZUVEN1ZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yOTAyMiw2ICsyOTAyMSw3IEBACiAJCQkJQTg0RDgyQzExMUQzNDc0
ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDFGMUQyMUYwRUYzNUMyQTAwREE4NzUzIC8qIFNjcmlwdENhY2hlZEZyYW1lRGF0YS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTNCNzBENzAwOUVCMEM3QzAwOUQ4NDY4IC8qIFNjcmlwdENvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBT
Y3JpcHREaXNhbGxvd2VkU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5OThBRUQyMTNGQjIy
NEQwMDkwQjFBQSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA4QTQ4NDc4MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFM0U0RTJBODFFM0IxNzEwMDAyM0JCOEEgLyogU2NyaXB0RWxlbWVudENh
Y2hlZFNjcmlwdEZldGNoZXIuaCBpbiBIZWFkZXJzICovLApJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDIyNjIxNikK
KysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MywxMiArNDMsMTIgQEAKICNpbmNsdWRlICJNb2R1bGVGZXRjaEZhaWx1
cmVLaW5kLmgiCiAjaW5jbHVkZSAiTW9kdWxlRmV0Y2hQYXJhbWV0ZXJzLmgiCiAjaW5jbHVkZSAi
TlBfanNvYmplY3QuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUNvbnNvbGVDbGllbnQuaCIKICNpbmNsdWRl
ICJQYWdlR3JvdXAuaCIKICNpbmNsdWRlICJQbHVnaW5WaWV3QmFzZS5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29w
ZS5oIgogI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxl
RG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAtNjY5LDcgKzY2OSw3
IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdEkKIGJvb2wgU2NyaXB0
Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVT
Y3JpcHRzIHJlYXNvbikKIHsKICAgICBpZiAocmVhc29uID09IEFib3V0VG9FeGVjdXRlU2NyaXB0
KQotICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZl
bnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpIHx8ICFp
c0luV2ViUHJvY2VzcygpKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRB
bGxvd2VkKCkgfHwgIWlzSW5XZWJQcm9jZXNzKCkpOwogCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1l
bnQoKSAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkg
ewogICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhl
IGNvbnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDMyNzQgZXhpc3RzLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0NvbnRh
aW5lck5vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJO
b2RlLmNwcAkocmV2aXNpb24gMjI2MjE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw3ICs0NCw2IEBACiAjaW5jbHVkZSAiTGFi
ZWxzTm9kZUxpc3QuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSAiTmFt
ZU5vZGVMaXN0LmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5j
bHVkZSAiTm9kZVJhcmVEYXRhLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5j
bHVkZSAiUmFkaW9Ob2RlTGlzdC5oIgpAQCAtNTgsNiArNTcsNyBAQAogI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1VzZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTZWxlY3Rv
clF1ZXJ5LmgiCiAjaW5jbHVkZSAiVGVtcGxhdGVDb250ZW50RG9jdW1lbnRGcmFnbWVudC5oIgog
I2luY2x1ZGUgPGFsZ29yaXRobT4KQEAgLTcwLDkgKzcwLDkgQEAgc3RhdGljIHZvaWQgZGlzcGF0
Y2hDaGlsZFJlbW92YWxFdmVudHMoUgogCiBDaGlsZE5vZGVzTGF6eVNuYXBzaG90KiBDaGlsZE5v
ZGVzTGF6eVNuYXBzaG90OjpsYXRlc3RTbmFwc2hvdDsKIAotdW5zaWduZWQgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uOjpzX2NvdW50ID0gMDsKK3Vuc2lnbmVkIFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6c19jb3VudCA9IDA7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAotTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpFdmVu
dEFsbG93ZWRTY29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOworU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSogU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFs
bG93ZWRTY29wZTo6c19jdXJyZW50U2NvcGUgPSBudWxscHRyOwogI2VuZGlmCiAKIEFMV0FZU19J
TkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3Jp
cHRBc3NlcnRpb24oQ2hpbGRDaGFuZ2VTb3VyY2Ugc291cmNlLCBEZWZlckNoaWxkcmVuQ2hhbmdl
ZCBkZWZlckNoaWxkcmVuQ2hhbmdlZCkKQEAgLTg4LDcgKzg4LDcgQEAgQUxXQVlTX0lOTElORSBO
b2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OgogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgQVNTRVJUKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6UGFy
c2VyKTsKLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgYXNz
ZXJ0Tm9FdmVudERpc3BhdGNoOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIGlmIChVTkxJS0VMWShkb2N1
bWVudCgpLmhhc011dGF0aW9uT2JzZXJ2ZXJzT2ZUeXBlKE11dGF0aW9uT2JzZXJ2ZXI6OkNoaWxk
TGlzdCkpKSB7CiAgICAgICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlIG11dGF0aW9uKCp0
aGlzKTsKICAgICAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbikKQEAgLTk5LDcg
Kzk5LDcgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OgogICAgIGRp
c2Nvbm5lY3RTdWJmcmFtZXNJZk5lZWRlZCgqdGhpcywgRGVzY2VuZGFudHNPbmx5KTsKIAogICAg
IFdpZGdldEhpZXJhcmNoeVVwZGF0ZXNTdXNwZW5zaW9uU2NvcGUgc3VzcGVuZFdpZGdldEhpZXJh
cmNoeVVwZGF0ZXM7Ci0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQg
YXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWlu
VGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAogICAgIGRvY3VtZW50KCkubm9kZUNoaWxk
cmVuV2lsbEJlUmVtb3ZlZCgqdGhpcyk7CiAKQEAgLTExOSwxMSArMTE5LDExIEBAIEFMV0FZU19J
TkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmUKICAgICBSZWY8Tm9kZT4gcHJvdGVjdGVk
Q2hpbGRUb1JlbW92ZShjaGlsZFRvUmVtb3ZlKTsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9J
TVBMSUNBVElPTihjaGlsZFRvUmVtb3ZlLnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKICAgICB7Ci0g
ICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2VydE5vRXZl
bnREaXNwYXRjaDsKKyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKCp0
aGlzKS53aWxsUmVtb3ZlQ2hpbGQoY2hpbGRUb1JlbW92ZSk7CiAgICAgfQogCi0gICAgQVNTRVJU
X1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1h
aW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoY2hpbGRUb1JlbW92ZSkp
OworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxk
VG9SZW1vdmUpKTsKICAgICBpZiAoc291cmNlID09IENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdl
U291cmNlOjpBUEkpIHsKICAgICAgICAgY2hpbGRUb1JlbW92ZS5ub3RpZnlNdXRhdGlvbk9ic2Vy
dmVyc05vZGVXaWxsRGV0YWNoKCk7CiAgICAgICAgIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRz
KHByb3RlY3RlZENoaWxkVG9SZW1vdmUpOwpAQCAtMTQ1LDcgKzE0NSw3IEBAIEFMV0FZU19JTkxJ
TkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmUKICAgICBDaGlsZENoYW5nZSBjaGFuZ2U7CiAg
ICAgewogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3Bl
bmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAgICAgIFNjcmlwdERp
c2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAogICAg
ICAgICBkb2N1bWVudCgpLm5vZGVXaWxsQmVSZW1vdmVkKGNoaWxkVG9SZW1vdmUpOwogCkBAIC0x
NjMsNyArMTYzLDcgQEAgQUxXQVlTX0lOTElORSBib29sIENvbnRhaW5lck5vZGU6OnJlbW92ZQog
ICAgICAgICBjaGFuZ2Uuc291cmNlID0gc291cmNlOwogICAgIH0KIAotICAgIC8vIEZJWE1FOiBN
b3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBibG9jay4K
KyAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50byBTY3JpcHREaXNhbGxvd2Vk
U2NvcGUgYmxvY2suCiAgICAgY2hpbGRyZW5DaGFuZ2VkKGNoYW5nZSk7CiAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE3NywxMyArMTc3LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhl
Y3V0ZU5vZGVJbnMKIHsKICAgICBOb2RlVmVjdG9yIHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25U
YXJnZXRzOwogICAgIHsKLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5U
aHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIGRvTm9kZUlu
c2VydGlvbigpOwogICAgICAgICBDaGlsZExpc3RNdXRhdGlvblNjb3BlKGNvbnRhaW5lck5vZGUp
LmNoaWxkQWRkZWQoY2hpbGQpOwogICAgICAgICBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFy
Z2V0cyA9IG5vdGlmeUNoaWxkTm9kZUluc2VydGVkKGNvbnRhaW5lck5vZGUsIGNoaWxkKTsKICAg
ICB9CiAKLSAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJlbkNoYW5nZWQgaW50byBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24gYmxvY2suCisgICAgLy8gRklYTUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2Vk
IGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2NrLgogICAgIGlmIChyZXBsYWNlZEFsbENo
aWxkcmVuID09IFJlcGxhY2VkQWxsQ2hpbGRyZW46OlllcykKICAgICAgICAgY29udGFpbmVyTm9k
ZS5jaGlsZHJlbkNoYW5nZWQoQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2UgeyBDb250YWluZXJO
b2RlOjpBbGxDaGlsZHJlblJlcGxhY2VkLCBudWxscHRyLCBudWxscHRyLCBzb3VyY2UgfSk7CiAg
ICAgZWxzZSB7CkBAIC0xOTUsNyArMTk1LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgdm9pZCBl
eGVjdXRlTm9kZUlucwogICAgICAgICB9KTsKICAgICB9CiAKLSAgICBBU1NFUlQoTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1
YnRyZWUoY2hpbGQpKTsKKyAgICBBU1NFUlQoU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoY2hpbGQpKTsKICAgICBmb3Ig
KGF1dG8mIHRhcmdldCA6IHBvc3RJbnNlcnRpb25Ob3RpZmljYXRpb25UYXJnZXRzKQogICAgICAg
ICB0YXJnZXQtPmRpZEZpbmlzaEluc2VydGluZ05vZGUoKTsKIApAQCAtMjI4LDcgKzIyOCw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlRGV0YWNoZWRDaGlsZHIKICAgICAgICAgICAgIGNo
aWxkLT51cGRhdGVBbmNlc3RvckNvbm5lY3RlZFN1YmZyYW1lQ291bnRGb3JSZW1vdmFsKCk7CiAg
ICAgfQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBBU1NFUlQoIWF0dGFjaGVk
KCkpIGhlcmU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc4MDEK
LSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBub0V2ZW50RGlzcGF0
Y2hBc3NlcnRpb247CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOwogICAgIHJlbW92ZURldGFjaGVkQ2hpbGRyZW5JbkNvbnRhaW5l
cigqdGhpcyk7CiB9CiAKQEAgLTQwMyw3ICs0MDMsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBDb250
YWluZXJOb2RlOjppbnNlcnRCCiAKIHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlQ29t
bW9uKE5vZGUmIG5leHRDaGlsZCwgTm9kZSYgbmV3Q2hpbGQpCiB7Ci0gICAgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgIFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsK
IAogICAgIEFTU0VSVCghbmV3Q2hpbGQucGFyZW50Tm9kZSgpKTsgLy8gVXNlIGluc2VydEJlZm9y
ZSBpZiB5b3UgbmVlZCB0byBoYW5kbGUgcmVwYXJlbnRpbmcgKGFuZCB3YW50IERPTSBtdXRhdGlv
biBldmVudHMpLgogICAgIEFTU0VSVCghbmV3Q2hpbGQubmV4dFNpYmxpbmcoKSk7CkBAIC00Mjgs
NyArNDI4LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmVDb21tb24oTgogCiB2
b2lkIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkQ29tbW9uKE5vZGUmIGNoaWxkKQogewotICAg
IE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2VydE5vRXZlbnREaXNw
YXRjaDsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNh
bGxvd2VkU2NvcGU7CiAKICAgICBjaGlsZC5zZXRQYXJlbnROb2RlKHRoaXMpOwogCkBAIC01Njcs
NyArNTY3LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVCZXR3ZWVuKE5vZGUqIAogewog
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVtb3ZlRE9NTm9kZShvbGRDaGlsZC5k
b2N1bWVudCgpLCBvbGRDaGlsZCk7CiAKLSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246Oklu
TWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCiAgICAgQVNTRVJUKG9s
ZENoaWxkLnBhcmVudE5vZGUoKSA9PSB0aGlzKTsKIApAQCAtNzY2LDcgKzc2Niw3IEBAIHN0YXRp
YyB2b2lkIGRpc3BhdGNoQ2hpbGRJbnNlcnRpb25FdmVudHMKICAgICBpZiAoY2hpbGQuaXNJblNo
YWRvd1RyZWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZl
bnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoY2hpbGQpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNV
UklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNF
dmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShjaGlsZCkpOwogCiAgICAgUmVmUHRyPE5vZGU+
IGMgPSAmY2hpbGQ7CiAgICAgUmVmPERvY3VtZW50PiBkb2N1bWVudChjaGlsZC5kb2N1bWVudCgp
KTsKQEAgLTc4Myw3ICs3ODMsNyBAQCBzdGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkSW5zZXJ0aW9u
RXZlbnRzCiAKIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZlbnRzKFJlZjxOb2Rl
PiYgY2hpbGQpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJ
blN1YnRyZWUoY2hpbGQpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihT
Y3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNFdmVudERpc3BhdGNoQWxsb3dl
ZEluU3VidHJlZShjaGlsZCkpOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJl
bW92ZURPTU5vZGUoY2hpbGQtPmRvY3VtZW50KCksIGNoaWxkLmdldCgpKTsKIAogICAgIGlmIChj
aGlsZC0+aXNJblNoYWRvd1RyZWUoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWlu
ZXJOb2RlQWxnb3JpdGhtcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAkocmV2aXNpb24gMjI2MjE2KQorKysgU291cmNlL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGVBbGdvcml0aG1zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNyArMjksNyBAQAogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb24uaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKKyNpbmNsdWRl
ICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5j
bHVkZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCiAKQEAgLTg4LDcgKzg4LDcg
QEAgc3RhdGljIHZvaWQgbm90aWZ5Tm9kZUluc2VydGVkSW50b1RyZWUoQwogCiBOb2RlVmVjdG9y
IG5vdGlmeUNoaWxkTm9kZUluc2VydGVkKENvbnRhaW5lck5vZGUmIHBhcmVudE9mSW5zZXJ0ZWRU
cmVlLCBOb2RlJiBub2RlKQogewotICAgIEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
OjpJbk1haW5UaHJlYWQ6OmlzRXZlbnRBbGxvd2VkKCkpOworICAgIEFTU0VSVCghU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKIAogICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW5zZXJ0RE9NTm9kZShub2RlLmRvY3VtZW50KCks
IG5vZGUpOwogCkBAIC0xNTEsOCArMTUxLDggQEAgc3RhdGljIHZvaWQgbm90aWZ5Tm9kZVJlbW92
ZWRGcm9tVHJlZShDbwogCiB2b2lkIG5vdGlmeUNoaWxkTm9kZVJlbW92ZWQoQ29udGFpbmVyTm9k
ZSYgb2xkUGFyZW50T2ZSZW1vdmVkVHJlZSwgTm9kZSYgY2hpbGQpCiB7Ci0gICAgLy8gQXNzZXJ0
IHRoYXQgdGhlIGNhbGxlciBvZiB0aGlzIGZ1bmN0aW9uIGhhcyBhbiBpbnN0YW5jZSBvZiBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24uCi0gICAgQVNTRVJUKCFpc01haW5UaHJlYWQoKSB8fCAhTm9F
dmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnRBbGxvd2VkKCkpOwor
ICAgIC8vIEFzc2VydCB0aGF0IHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBoYXMgYW4gaW5z
dGFuY2Ugb2YgU2NyaXB0RGlzYWxsb3dlZFNjb3BlLgorICAgIEFTU0VSVCghaXNNYWluVGhyZWFk
KCkgfHwgIVNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93
ZWQoKSk7CiAgICAgQ29udGFpbmVyQ2hpbGRSZW1vdmFsU2NvcGUgcmVtb3ZhbFNjb3BlKG9sZFBh
cmVudE9mUmVtb3ZlZFRyZWUsIGNoaWxkKTsKIAogICAgIC8vIFRyZWUgc2NvcGUgaGFzIGNoYW5n
ZWQgaWYgdGhlIGNvbnRhaW5lciBub2RlIGZyb20gd2hpY2ggIm5vZGUiIGlzIHJlbW92ZWQgaXMg
aW4gYSBkb2N1bWVudCBvciBhIHNoYWRvdyByb290LgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjUsNyArMTI1LDcgQEAKICNpbmNsdWRlICJOYXZpZ2F0aW9u
RGlzYWJsZXIuaCIKICNpbmNsdWRlICJOYXZpZ2F0aW9uU2NoZWR1bGVyLmgiCiAjaW5jbHVkZSAi
TmVzdGluZ0xldmVsSW5jcmVtZW50ZXIuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24uaCIKKwogI2luY2x1ZGUgIk5vZGVJdGVyYXRvci5oIgogI2luY2x1ZGUgIk5vZGVSYXJl
RGF0YS5oIgogI2luY2x1ZGUgIk5vZGVXaXRoSW5kZXguaCIKQEAgLTE2Niw2ICsxNjYsNyBAQAog
I2luY2x1ZGUgIlNjaGVtZVJlZ2lzdHJ5LmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5o
IgogI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxv
d2VkU2NvcGUuaCIKICNpbmNsdWRlICJTY3JpcHRNb2R1bGVMb2FkZXIuaCIKICNpbmNsdWRlICJT
Y3JpcHRSdW5uZXIuaCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCkBAIC0xODA2LDcg
KzE4MDcsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlCiAgICAg
Ly8gaGl0cyBhIG51bGwtZGVyZWZlcmVuY2UgZHVlIHRvIHNlY3VyaXR5IGNvZGUgYWx3YXlzIGFz
c3VtaW5nIHRoZSBkb2N1bWVudCBoYXMgYSBTZWN1cml0eU9yaWdpbi4KIAogICAgIHsKLSAgICAg
ICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgbm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBz
Y3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIHN0eWxlU2NvcGUoKS5mbHVzaFBlbmRpbmdV
cGRhdGUoKTsKICAgICAgICAgZnJhbWVWaWV3LndpbGxSZWNhbGNTdHlsZSgpOwogICAgIH0KQEAg
LTE4MTcsNyArMTgxOCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnJlc29sdmVTdHlsZShSZXNvbHZlU3R5
bGUKICAgICB7CiAgICAgICAgIFN0eWxlOjpQb3N0UmVzb2x1dGlvbkNhbGxiYWNrRGlzYWJsZXIg
ZGlzYWJsZXIoKnRoaXMpOwogICAgICAgICBXaWRnZXRIaWVyYXJjaHlVcGRhdGVzU3VzcGVuc2lv
blNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVzOwotICAgICAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBub0V2ZW50RGlzcGF0Y2hBc3NlcnRpb247Cisg
ICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKIAogICAgICAgICBtX2luU3R5bGVSZWNhbGMgPSB0cnVlOwogCkBAIC0xOTM2LDcg
KzE5MzcsNyBAQCBib29sIERvY3VtZW50OjpuZWVkc1N0eWxlUmVjYWxjKCkgY29uc3QKIAogaW5s
aW5lIGJvb2wgc3RhdGljIGlzU2FmZVRvVXBkYXRlU3R5bGVPckxheW91dChGcmFtZVZpZXcqIGZy
YW1lVmlldykKIHsKLSAgICBib29sIGlzU2FmZVRvRXhlY3V0ZVNjcmlwdCA9IE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpOworICAgIGJvb2wg
aXNTYWZlVG9FeGVjdXRlU2NyaXB0ID0gU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQ6OmlzU2NyaXB0QWxsb3dlZCgpOwogICAgIGJvb2wgaXNJbkZyYW1lRmxhdHRlbmluZyA9IGZy
YW1lVmlldyAmJiBmcmFtZVZpZXctPmlzSW5DaGlsZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygp
OwogICAgIHJldHVybiBpc1NhZmVUb0V4ZWN1dGVTY3JpcHQgfHwgaXNJbkZyYW1lRmxhdHRlbmlu
ZyB8fCAhaXNJbldlYlByb2Nlc3MoKTsKIH0KQEAgLTE5NDUsNyArMTk0Niw3IEBAIGJvb2wgRG9j
dW1lbnQ6OnVwZGF0ZVN0eWxlSWZOZWVkZWQoKQogewogICAgIFJlZlB0cjxGcmFtZVZpZXc+IGZy
YW1lVmlldyA9IHZpZXcoKTsKICAgICB7Ci0gICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bjo6SW5NYWluVGhyZWFkIG5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjsKKyAgICAgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgICAgICBBU1NFUlQoIWZyYW1lVmlldyB8
fCAhZnJhbWVWaWV3LT5pc1BhaW50aW5nKCkpOwogCkBAIC00MTIxLDcgKzQxMjIsNyBAQCB2b2lk
IERvY3VtZW50Ojp1cGRhdGVSYW5nZXNBZnRlckNoaWxkcmVuCiAKIHZvaWQgRG9jdW1lbnQ6Om5v
ZGVDaGlsZHJlbldpbGxCZVJlbW92ZWQoQ29udGFpbmVyTm9kZSYgY29udGFpbmVyKQogewotICAg
IEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnRB
bGxvd2VkKCkpOworICAgIEFTU0VSVCghU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKIAogICAgIHJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVl
KGNvbnRhaW5lciwgdHJ1ZSAvKiBhbW9uZ0NoaWxkcmVuT25seSAqLyk7CiAgICAgcmVtb3ZlRm9j
dXNOYXZpZ2F0aW9uTm9kZU9mU3VidHJlZShjb250YWluZXIsIHRydWUgLyogYW1vbmdDaGlsZHJl
bk9ubHkgKi8pOwpAQCAtNDE1NCw3ICs0MTU1LDcgQEAgdm9pZCBEb2N1bWVudDo6bm9kZUNoaWxk
cmVuV2lsbEJlUmVtb3ZlZAogCiB2b2lkIERvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZChOb2Rl
JiBub2RlKQogewotICAgIEFTU0VSVCghTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5U
aHJlYWQ6OmlzRXZlbnRBbGxvd2VkKCkpOworICAgIEFTU0VSVCghU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKIAogICAgIHJlbW92ZUZvY3Vz
ZWROb2RlT2ZTdWJ0cmVlKG5vZGUpOwogICAgIHJlbW92ZUZvY3VzTmF2aWdhdGlvbk5vZGVPZlN1
YnRyZWUobm9kZSk7CkBAIC00Mjk4LDcgKzQyOTksNyBAQCBFdmVudExpc3RlbmVyKiBEb2N1bWVu
dDo6Z2V0V2luZG93QXR0cmliCiAKIHZvaWQgRG9jdW1lbnQ6OmRpc3BhdGNoV2luZG93RXZlbnQo
RXZlbnQmIGV2ZW50LCBFdmVudFRhcmdldCogdGFyZ2V0KQogewotICAgIEFTU0VSVF9XSVRIX1NF
Q1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFk
Ojppc0V2ZW50QWxsb3dlZCgpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
TihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkp
OwogICAgIGlmICghbV9kb21XaW5kb3cpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvbVdpbmRv
dy0+ZGlzcGF0Y2hFdmVudChldmVudCwgdGFyZ2V0KTsKQEAgLTQzMDYsNyArNDMwNyw3IEBAIHZv
aWQgRG9jdW1lbnQ6OmRpc3BhdGNoV2luZG93RXZlbnQoRXZlbnQKIAogdm9pZCBEb2N1bWVudDo6
ZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQoKQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50
QWxsb3dlZCgpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHRE
aXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIGlm
ICghbV9kb21XaW5kb3cpCiAgICAgICAgIHJldHVybjsKICAgICBtX2RvbVdpbmRvdy0+ZGlzcGF0
Y2hMb2FkRXZlbnQoKTsKQEAgLTUxNDEsNyArNTE0Miw3IEBAIHZvaWQgRG9jdW1lbnQ6OmFwcGx5
UGVuZGluZ1hTTFRyYW5zZm9ybXMKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9oYXNQZW5kaW5n
WFNMVHJhbnNmb3JtcyA9IGZhbHNlOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dl
ZCgpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIGZvciAoYXV0
byYgcHJvY2Vzc2luZ0luc3RydWN0aW9uIDogc3R5bGVTY29wZSgpLmNvbGxlY3RYU0xUcmFuc2Zv
cm1zKCkpIHsKICAgICAgICAgQVNTRVJUKHByb2Nlc3NpbmdJbnN0cnVjdGlvbi0+aXNYU0woKSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNjIxNikKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUsNyArNzUsNiBA
QAogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKLSNpbmNsdWRlICJOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJOb2RlUmVuZGVyU3R5bGUuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVdoZWVsRXZlbnQuaCIKICNpbmNsdWRlICJQb2ludGVyTG9ja0NvbnRy
b2xsZXIuaCIKQEAgLTkxLDYgKzkwLDcgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2Nyb2xsTGF0Y2hpbmdTdGF0ZS5o
IgogI2luY2x1ZGUgIlNlbGVjdG9yUXVlcnkuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgpAQCAt
MTc3NCw3ICsxNzc0LDcgQEAgdm9pZCBFbGVtZW50OjphZGRTaGFkb3dSb290KFJlZjxTaGFkb3dS
bwogCiAgICAgU2hhZG93Um9vdCYgc2hhZG93Um9vdCA9IG5ld1NoYWRvd1Jvb3Q7CiAgICAgewot
ICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBub0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb247CisgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICBSZW5kZXJUcmVlVXBkYXRlcjo6dGVhckRvd25SZW5kZXJlcnMoKnRoaXMpOwogCkBA
IC0yMTQ5LDcgKzIxNDksNyBAQCB2b2lkIEVsZW1lbnQ6OmF0dGFjaEF0dHJpYnV0ZU5vZGVJZk5l
ZWRlCiAgICAgaWYgKGF0dHJOb2RlLm93bmVyRWxlbWVudCgpID09IHRoaXMpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2Vy
dE5vRXZlbnREaXNwYXRjaDsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVh
ZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKICAgICBhdHRyTm9kZS5hdHRhY2hUb0VsZW1lbnQo
KnRoaXMpOwogICAgIGVuc3VyZUF0dHJOb2RlTGlzdEZvckVsZW1lbnQoKnRoaXMpLmFwcGVuZCgm
YXR0ck5vZGUpOwpAQCAtMjE2Nyw3ICsyMTY3LDcgQEAgRXhjZXB0aW9uT3I8UmVmUHRyPEF0dHI+
PiBFbGVtZW50OjpzZXRBdAogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW5Vc2VBdHRyaWJ1
dGVFcnJvciB9OwogCiAgICAgewotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246Oklu
TWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAgICAgIFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICAgICAgc3lu
Y2hyb25pemVBbGxBdHRyaWJ1dGVzKCk7CiAgICAgfQogCkBAIC0yMjE4LDcgKzIyMTgsNyBAQCBF
eGNlcHRpb25PcjxSZWZQdHI8QXR0cj4+IEVsZW1lbnQ6OnNldEF0CiAgICAgYXV0byBhdHRyTm9k
ZVZhbHVlID0gYXR0ck5vZGUudmFsdWUoKTsKICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAg
ewotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnRO
b0V2ZW50RGlzcGF0Y2g7CisgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhy
ZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICAgICAgc3luY2hyb25pemVBbGxBdHRyaWJ1
dGVzKCk7CiAgICAgICAgIGF1dG8mIGVsZW1lbnREYXRhID0gZW5zdXJlVW5pcXVlRWxlbWVudERh
dGEoKTsKIApAQCAtMjQ3NSwxNCArMjQ3NSwxNCBAQCB2b2lkIEVsZW1lbnQ6OmJsdXIoKQogCiB2
b2lkIEVsZW1lbnQ6OmRpc3BhdGNoRm9jdXNJbkV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgZXZl
bnRUeXBlLCBSZWZQdHI8RWxlbWVudD4mJiBvbGRGb2N1c2VkRWxlbWVudCkKIHsKLSAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246Oklu
TWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0
QWxsb3dlZCgpKTsKICAgICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5mb2N1c2lu
RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01Gb2N1c0luRXZlbnQpOwogICAg
IGRpc3BhdGNoU2NvcGVkRXZlbnQoRm9jdXNFdmVudDo6Y3JlYXRlKGV2ZW50VHlwZSwgdHJ1ZSwg
ZmFsc2UsIGRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwgMCwgV1RGTW92ZShvbGRGb2N1c2VkRWxl
bWVudCkpKTsKIH0KIAogdm9pZCBFbGVtZW50OjpkaXNwYXRjaEZvY3VzT3V0RXZlbnQoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUsIFJlZlB0cjxFbGVtZW50PiYmIG5ld0ZvY3VzZWRFbGVt
ZW50KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpKTsKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIEFTU0VSVChldmVudFR5cGUgPT0gZXZl
bnROYW1lcygpLmZvY3Vzb3V0RXZlbnQgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5ET01G
b2N1c091dEV2ZW50KTsKICAgICBkaXNwYXRjaFNjb3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0
ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksIDAsIFdU
Rk1vdmUobmV3Rm9jdXNlZEVsZW1lbnQpKSk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgJKHJldmlzaW9uIDIyNjIxNikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI1LDcgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgY29uc3QgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CiAgICAgdWludDY0X3QgbV9pbml0
aWFsRE9NVHJlZVZlcnNpb247Ci0gICAgc3RkOjpvcHRpb25hbDxOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24+IG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbjsKKyAgICBzdGQ6Om9wdGlvbmFsPFNjcmlw
dERpc2FsbG93ZWRTY29wZT4gbV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uOwogfTsKIAogLy8gRklY
TUU6IE5vIHJlYWwgcG9pbnQgaW4gZG9pbmcgdGhlc2UgYXMgaW5saW5lczsgdGhleSBhcmUgZm9y
IGRlYnVnZ2luZyBhbmQgd2UgdXN1YWxseSB0dXJuIG9mZiBpbmxpbmluZyBpbiBkZWJ1ZyBidWls
ZHMuCkBAIC00OSw3ICs0OSw3IEBAIGlubGluZSBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpF
bGVtZW4KICAgICAsIG1faW5pdGlhbERPTVRyZWVWZXJzaW9uKGZpcnN0ID8gbV9kb2N1bWVudC0+
ZG9tVHJlZVZlcnNpb24oKSA6IDApCiB7CiAgICAgaWYgKGZpcnN0KQotICAgICAgICBtX2V2ZW50
RGlzcGF0Y2hBc3NlcnRpb24gPSBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKTsKKyAgICAgICAg
bV9ldmVudERpc3BhdGNoQXNzZXJ0aW9uID0gU2NyaXB0RGlzYWxsb3dlZFNjb3BlKCk7CiB9CiAK
IGlubGluZSBib29sIEVsZW1lbnRJdGVyYXRvckFzc2VydGlvbnM6OmRvbVRyZWVIYXNNdXRhdGVk
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FdmVudERpc3BhdGNoZXIuY3BwCShyZXZp
c2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNp
bmNsdWRlICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAi
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiU2NvcGVkRXZlbnRRdWV1ZS5o
IgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jv
b3QuaCIKICNpbmNsdWRlICJUZXh0RXZlbnQuaCIKICNpbmNsdWRlICJUb3VjaEV2ZW50LmgiCkBA
IC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkU3VwcHJlc3NFdmVudERpc3BhdGNo
SQogCiB2b2lkIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudChOb2RlJiBub2RlLCBFdmVu
dCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJ
blN1YnRyZWUobm9kZSkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNj
cmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2Vk
SW5TdWJ0cmVlKG5vZGUpKTsKICAgICAKICAgICBMT0coRXZlbnRzLCAiRXZlbnREaXNwYXRjaGVy
OjpkaXNwYXRjaEV2ZW50ICVzIG9uIG5vZGUgJXMiLCBldmVudC50eXBlKCkuc3RyaW5nKCkudXRm
OCgpLmRhdGEoKSwgbm9kZS5ub2RlTmFtZSgpLnV0ZjgoKS5kYXRhKCkpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHJldmlzaW9uIDIyNjIxNikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3LDggKzM3LDggQEAK
ICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0V2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QW5pbWF0
aW9uRXZlbnQuaCIKICNpbmNsdWRlICJXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCIKICNpbmNsdWRl
IDx3dGYvTWFpblRocmVhZC5oPgpAQCAtMjE1LDcgKzIxNSw3IEBAIHN0YXRpYyBjb25zdCBBdG9t
aWNTdHJpbmcmIGxlZ2FjeVR5cGUoY28KIAogdm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlz
dGVuZXJzKEV2ZW50JiBldmVudCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OmlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93
ZWRTY29wZTo6aXNFdmVudEFsbG93ZWRJbk1haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGV2ZW50
LmlzSW5pdGlhbGl6ZWQoKSk7CiAKICAgICBhdXRvKiBkYXRhID0gZXZlbnRUYXJnZXREYXRhKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL05vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5o
CShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLmgJKG5vbmV4aXN0ZW50KQpAQCAtMSwxNTQgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQotICogICAgICAgICAgIChD
KSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQotICogICAgICAgICAgIChD
KSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQotICogQ29weXJpZ2h0IChDKSAy
MDA0LTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJDb250YWluZXJOb2RlLmgiCi0jaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b24gewotcHVibGljOgotICAgIC8vIFRoaXMgdmFyaWFudCBpcyBleHBlbnNpdmUuIFVzZSBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCB3aGVuZXZlciBwb3NzaWJsZS4KLSAg
ICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQotICAgIHsKLSAgICAgICAgaWYgKCFpc01haW5U
aHJlYWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgKytzX2NvdW50OwotICAgIH0K
LQotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbihjb25zdCBOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24mKQotICAgICAgICA6IE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCi0gICAgewotICAg
IH0KLQotICAgIH5Ob0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQotICAgIHsKLSAgICAgICAgaWYg
KCFpc01haW5UaHJlYWQoKSkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgQVNTRVJUKHNf
Y291bnQpOwotICAgICAgICBzX2NvdW50LS07Ci0gICAgfQotCi0gICAgc3RhdGljIGJvb2wgaXNF
dmVudEFsbG93ZWRJbk1haW5UaHJlYWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJuICFpc01haW5U
aHJlYWQoKSB8fCAhc19jb3VudDsKLSAgICB9Ci0KLSAgICBjbGFzcyBJbk1haW5UaHJlYWQgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgSW5NYWluVGhyZWFkKCkKLSAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgICAgICsrc19jb3VudDsKLSAgICAg
ICAgfQotCi0gICAgICAgIH5Jbk1haW5UaHJlYWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgQVNTRVJUKHNfY291bnQpOwotICAg
ICAgICAgICAgLS1zX2NvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRG9uJ3QgZW5hYmxl
IHRoaXMgYXNzZXJ0aW9uIGluIHJlbGVhc2Ugc2luY2UgaXQncyBPKG4pLgotICAgICAgICAvLyBS
ZWxlYXNlIGFzc2VydHMgaW4gY2FuRXhlY3V0ZVNjcmlwdCBzaG91bGQgYmUgc3VmZmljaWVudCBm
b3Igc2VjdXJpdHkgZGVmZW5zZSBwdXJwb3Nlcy4KLSAgICAgICAgc3RhdGljIGJvb2wgaXNFdmVu
dERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShOb2RlJiBub2RlKQotICAgICAgICB7Ci0jaWYgIUFT
U0VSVF9ESVNBQkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKLSAgICAgICAgICAg
IHJldHVybiBpc0V2ZW50QWxsb3dlZCgpIHx8IEV2ZW50QWxsb3dlZFNjb3BlOjppc0FsbG93ZWRO
b2RlKG5vZGUpOwotI2Vsc2UKLSAgICAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlKTsKLSAgICAg
ICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgICAgIH0KLQotICAgICAgICBzdGF0aWMg
Ym9vbCBpc0V2ZW50QWxsb3dlZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChpc01h
aW5UaHJlYWQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gIXNfY291bnQ7Ci0gICAgICAgIH0KLSAg
ICB9OwotICAgIAotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBjbGFzcyBFdmVudEFsbG93ZWRT
Y29wZSB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBFdmVudEFsbG93ZWRTY29wZShD
b250YWluZXJOb2RlJiB1c2VyQWdlbnRDb250ZW50Um9vdCkKLSAgICAgICAgICAgIDogbV9ldmVu
dEFsbG93ZWRUcmVlUm9vdCh1c2VyQWdlbnRDb250ZW50Um9vdCkKLSAgICAgICAgICAgICwgbV9w
cmV2aW91c1Njb3BlKHNfY3VycmVudFNjb3BlKQotICAgICAgICB7Ci0gICAgICAgICAgICBzX2N1
cnJlbnRTY29wZSA9IHRoaXM7Ci0gICAgICAgIH0KLQotICAgICAgICB+RXZlbnRBbGxvd2VkU2Nv
cGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBzX2N1cnJlbnRTY29wZSA9IG1fcHJldmlvdXNT
Y29wZTsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZE5vZGUoTm9k
ZSYgbm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHNfY3VycmVudFNjb3BlICYm
IHNfY3VycmVudFNjb3BlLT5pc0FsbG93ZWROb2RlSW50ZXJuYWwobm9kZSk7Ci0gICAgICAgIH0K
LQotICAgIHByaXZhdGU6Ci0gICAgICAgIGJvb2wgaXNBbGxvd2VkTm9kZUludGVybmFsKE5vZGUm
IG5vZGUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBtX2V2ZW50QWxsb3dlZFRyZWVS
b290LT5jb250YWlucygmbm9kZSkgfHwgKG1fcHJldmlvdXNTY29wZSAmJiBtX3ByZXZpb3VzU2Nv
cGUtPmlzQWxsb3dlZE5vZGVJbnRlcm5hbChub2RlKSk7Ci0gICAgICAgIH0KLQotICAgICAgICBS
ZWY8Q29udGFpbmVyTm9kZT4gbV9ldmVudEFsbG93ZWRUcmVlUm9vdDsKLQotICAgICAgICBFdmVu
dEFsbG93ZWRTY29wZSogbV9wcmV2aW91c1Njb3BlOwotICAgICAgICBzdGF0aWMgRXZlbnRBbGxv
d2VkU2NvcGUqIHNfY3VycmVudFNjb3BlOwotICAgIH07Ci0jZWxzZQotICAgIGNsYXNzIEV2ZW50
QWxsb3dlZFNjb3BlIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIGV4cGxpY2l0IEV2ZW50QWxsb3dl
ZFNjb3BlKENvbnRhaW5lck5vZGUmKSB7IH0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2Vk
Tm9kZShOb2RlJikgeyByZXR1cm4gdHJ1ZTsgfQotICAgIH07Ci0jZW5kaWYKLQotICAgIC8vIEZJ
WE1FOiBSZW1vdmUgdGhpcyBjbGFzcyBvbmNlIHRoZSBzeW5jIGxheW91dCBpbnNpZGUgU1ZHSW1h
Z2U6OmRyYXcgaXMgcmVtb3ZlZAotICAgIC8vIGFuZCByZWZhY3RvcmVkIHRoZSBjb2RlIGluIFJl
bmRlckZyYW1lQmFzZTo6cGVyZm9ybUxheW91dFdpdGhGbGF0dGVuaW5nLgotICAgIGNsYXNzIERp
c2FibGVBc3NlcnRpb25zSW5TY29wZSB7Ci0gICAgcHVibGljOgotICAgICAgICBEaXNhYmxlQXNz
ZXJ0aW9uc0luU2NvcGUoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICAgICAgc3RkOjpzd2FwKHNfY291bnQsIG1fb3JpZ2luYWxDb3VudCk7
Ci0gICAgICAgIH0KLQotICAgICAgICB+RGlzYWJsZUFzc2VydGlvbnNJblNjb3BlKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc19jb3VudCA9IG1fb3JpZ2luYWxDb3VudDsKLSAgICAgICAgfQot
ICAgIHByaXZhdGU6Ci0gICAgICAgIHVuc2lnbmVkIG1fb3JpZ2luYWxDb3VudCB7IDAgfTsKLSAg
ICB9OwotCi1wcml2YXRlOgotICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB1bnNpZ25lZCBzX2Nv
dW50OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAko
cmV2aXNpb24gMjI2MjE2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw3ICs1Miw2IEBACiAjaW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAi
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCiAjaW5jbHVkZSAiUHJvZ3Jlc3NF
dmVudC5oIgpAQCAtNjIsNiArNjEsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRleHRDb250cm9sLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIK
KyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTdG9yYWdlRXZl
bnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVTaGVldENv
bnRlbnRzLmgiCkBAIC0yMzM1LDcgKzIzMzUsNyBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoU3VidHJl
ZU1vZGlmaWVkRXZlbnQoCiAgICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVl
KCp0aGlzKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRy
ZWUoKnRoaXMpKTsKIAogICAgIGlmICghZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5cGUoRG9jdW1l
bnQ6OkRPTVNVQlRSRUVNT0RJRklFRF9MSVNURU5FUikpCiAgICAgICAgIHJldHVybjsKQEAgLTIz
NDgsNyArMjM0OCw3IEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hTdWJ0cmVlTW9kaWZpZWRFdmVudCgK
IAogdm9pZCBOb2RlOjpkaXNwYXRjaERPTUFjdGl2YXRlRXZlbnQoRXZlbnQmIHVuZGVybHlpbmdD
bGlja0V2ZW50KQogewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZl
bnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpKTsKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6
OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAgIGludCBkZXRhaWwgPSBpczxV
SUV2ZW50Pih1bmRlcmx5aW5nQ2xpY2tFdmVudCkgPyBkb3duY2FzdDxVSUV2ZW50Pih1bmRlcmx5
aW5nQ2xpY2tFdmVudCkuZGV0YWlsKCkgOiAwOwogICAgIGF1dG8gZXZlbnQgPSBVSUV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLkRPTUFjdGl2YXRlRXZlbnQsIHRydWUsIHRydWUsIGRvY3VtZW50
KCkuZGVmYXVsdFZpZXcoKSwgZGV0YWlsKTsKICAgICBldmVudC0+c2V0VW5kZXJseWluZ0V2ZW50
KCZ1bmRlcmx5aW5nQ2xpY2tFdmVudCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0
RGlzYWxsb3dlZFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dERpc2FsbG93ZWRTY29wZS5oCShyZXZpc2lvbiAyMjYyMTYpCShmcm9tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Ob0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaDoyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwx
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9y
ZykKKyAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9y
ZykKKyAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
KyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
CisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ29udGFpbmVyTm9kZS5oIgorI2luY2x1
ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgTm9F
dmVudERpc3BhdGNoQXNzZXJ0aW9uIHsKK3B1YmxpYzoKKyAgICAvLyBUaGlzIHZhcmlhbnQgaXMg
ZXhwZW5zaXZlLiBVc2UgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgd2hl
bmV2ZXIgcG9zc2libGUuCisgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkKKyAgICB7Cisg
ICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICsrc19jb3VudDsKKyAgICB9CisKKyAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24oY29uc3Qg
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uJikKKyAgICAgICAgOiBOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24oKQorICAgIHsKKyAgICB9CisKKyAgICB+Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkK
KyAgICB7CisgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIEFTU0VSVChzX2NvdW50KTsKKyAgICAgICAgc19jb3VudC0tOworICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGlzRXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiAhaXNNYWluVGhyZWFkKCkgfHwgIXNfY291bnQ7CisgICAgfQorCisgICAgY2xh
c3MgSW5NYWluVGhyZWFkIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEluTWFpblRocmVhZCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAg
ICArK3NfY291bnQ7CisgICAgICAgIH0KKworICAgICAgICB+SW5NYWluVGhyZWFkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIEFT
U0VSVChzX2NvdW50KTsKKyAgICAgICAgICAgIC0tc19jb3VudDsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIERvbid0IGVuYWJsZSB0aGlzIGFzc2VydGlvbiBpbiByZWxlYXNlIHNpbmNlIGl0J3Mg
TyhuKS4KKyAgICAgICAgLy8gUmVsZWFzZSBhc3NlcnRzIGluIGNhbkV4ZWN1dGVTY3JpcHQgc2hv
dWxkIGJlIHN1ZmZpY2llbnQgZm9yIHNlY3VyaXR5IGRlZmVuc2UgcHVycG9zZXMuCisgICAgICAg
IHN0YXRpYyBib29sIGlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUoTm9kZSYgbm9kZSkK
KyAgICAgICAgeworI2lmICFBU1NFUlRfRElTQUJMRUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VS
VElPTlMpCisgICAgICAgICAgICByZXR1cm4gaXNFdmVudEFsbG93ZWQoKSB8fCBFdmVudEFsbG93
ZWRTY29wZTo6aXNBbGxvd2VkTm9kZShub2RlKTsKKyNlbHNlCisgICAgICAgICAgICBVTlVTRURf
UEFSQU0obm9kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgorICAgICAgICB9
CisKKyAgICAgICAgc3RhdGljIGJvb2wgaXNFdmVudEFsbG93ZWQoKQorICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgcmV0dXJuICFzX2Nv
dW50OworICAgICAgICB9CisgICAgfTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
Y2xhc3MgRXZlbnRBbGxvd2VkU2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQg
RXZlbnRBbGxvd2VkU2NvcGUoQ29udGFpbmVyTm9kZSYgdXNlckFnZW50Q29udGVudFJvb3QpCisg
ICAgICAgICAgICA6IG1fZXZlbnRBbGxvd2VkVHJlZVJvb3QodXNlckFnZW50Q29udGVudFJvb3Qp
CisgICAgICAgICAgICAsIG1fcHJldmlvdXNTY29wZShzX2N1cnJlbnRTY29wZSkKKyAgICAgICAg
eworICAgICAgICAgICAgc19jdXJyZW50U2NvcGUgPSB0aGlzOworICAgICAgICB9CisKKyAgICAg
ICAgfkV2ZW50QWxsb3dlZFNjb3BlKCkKKyAgICAgICAgeworICAgICAgICAgICAgc19jdXJyZW50
U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgYm9v
bCBpc0FsbG93ZWROb2RlKE5vZGUmIG5vZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBzX2N1cnJlbnRTY29wZSAmJiBzX2N1cnJlbnRTY29wZS0+aXNBbGxvd2VkTm9kZUludGVybmFs
KG5vZGUpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIGlzQWxsb3dl
ZE5vZGVJbnRlcm5hbChOb2RlJiBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
bV9ldmVudEFsbG93ZWRUcmVlUm9vdC0+Y29udGFpbnMoJm5vZGUpIHx8IChtX3ByZXZpb3VzU2Nv
cGUgJiYgbV9wcmV2aW91c1Njb3BlLT5pc0FsbG93ZWROb2RlSW50ZXJuYWwobm9kZSkpOworICAg
ICAgICB9CisKKyAgICAgICAgUmVmPENvbnRhaW5lck5vZGU+IG1fZXZlbnRBbGxvd2VkVHJlZVJv
b3Q7CisKKyAgICAgICAgRXZlbnRBbGxvd2VkU2NvcGUqIG1fcHJldmlvdXNTY29wZTsKKyAgICAg
ICAgc3RhdGljIEV2ZW50QWxsb3dlZFNjb3BlKiBzX2N1cnJlbnRTY29wZTsKKyAgICB9OworI2Vs
c2UKKyAgICBjbGFzcyBFdmVudEFsbG93ZWRTY29wZSB7CisgICAgcHVibGljOgorICAgICAgICBl
eHBsaWNpdCBFdmVudEFsbG93ZWRTY29wZShDb250YWluZXJOb2RlJikgeyB9CisgICAgICAgIHN0
YXRpYyBib29sIGlzQWxsb3dlZE5vZGUoTm9kZSYpIHsgcmV0dXJuIHRydWU7IH0KKyAgICB9Owor
I2VuZGlmCisKKyAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgY2xhc3Mgb25jZSB0aGUgc3luYyBs
YXlvdXQgaW5zaWRlIFNWR0ltYWdlOjpkcmF3IGlzIHJlbW92ZWQKKyAgICAvLyBhbmQgcmVmYWN0
b3JlZCB0aGUgY29kZSBpbiBSZW5kZXJGcmFtZUJhc2U6OnBlcmZvcm1MYXlvdXRXaXRoRmxhdHRl
bmluZy4KKyAgICBjbGFzcyBEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgeworICAgIHB1YmxpYzoK
KyAgICAgICAgRGlzYWJsZUFzc2VydGlvbnNJblNjb3BlKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIHN0ZDo6c3dhcChzX2NvdW50
LCBtX29yaWdpbmFsQ291bnQpOworICAgICAgICB9CisKKyAgICAgICAgfkRpc2FibGVBc3NlcnRp
b25zSW5TY29wZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNfY291bnQgPSBtX29yaWdpbmFs
Q291bnQ7CisgICAgICAgIH0KKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX29yaWdp
bmFsQ291bnQgeyAwIH07CisgICAgfTsKKworcHJpdmF0ZToKKyAgICBXRUJDT1JFX0VYUE9SVCBz
dGF0aWMgdW5zaWduZWQgc19jb3VudDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHREaXNhbGxvd2VkU2NvcGUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgJKHJldmlzaW9u
IDIyNjIxNikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHREaXNhbGxvd2VkU2NvcGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMjgsMjIgKzI4LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotY2xhc3MgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIHsKK2NsYXNzIFNjcmlwdERpc2FsbG93
ZWRTY29wZSB7CiBwdWJsaWM6Ci0gICAgLy8gVGhpcyB2YXJpYW50IGlzIGV4cGVuc2l2ZS4gVXNl
IE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIHdoZW5ldmVyIHBvc3NpYmxl
LgotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCisgICAgLy8gVGhpcyB2YXJpYW50IGlz
IGV4cGVuc2l2ZS4gVXNlIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHdoZW5l
dmVyIHBvc3NpYmxlLgorICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZSgpCiAgICAgewogICAgICAg
ICBpZiAoIWlzTWFpblRocmVhZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICArK3Nf
Y291bnQ7CiAgICAgfQogCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKGNvbnN0IE5vRXZl
bnREaXNwYXRjaEFzc2VydGlvbiYpCi0gICAgICAgIDogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
KCkKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGUoY29uc3QgU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
JikKKyAgICAgICAgOiBTY3JpcHREaXNhbGxvd2VkU2NvcGUoKQogICAgIHsKICAgICB9CiAKLSAg
ICB+Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkKKyAgICB+U2NyaXB0RGlzYWxsb3dlZFNjb3Bl
KCkKICAgICB7CiAgICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC03NiwxNCArNzYsMTQgQEAgcHVibGljOgogICAgICAgICBzdGF0aWMgYm9vbCBpc0V2
ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKE5vZGUmIG5vZGUpCiAgICAgICAgIHsKICNpZiAh
QVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQotICAgICAgICAg
ICAgcmV0dXJuIGlzRXZlbnRBbGxvd2VkKCkgfHwgRXZlbnRBbGxvd2VkU2NvcGU6OmlzQWxsb3dl
ZE5vZGUobm9kZSk7CisgICAgICAgICAgICByZXR1cm4gaXNTY3JpcHRBbGxvd2VkKCkgfHwgRXZl
bnRBbGxvd2VkU2NvcGU6OmlzQWxsb3dlZE5vZGUobm9kZSk7CiAjZWxzZQogICAgICAgICAgICAg
VU5VU0VEX1BBUkFNKG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKICAg
ICAgICAgfQogCi0gICAgICAgIHN0YXRpYyBib29sIGlzRXZlbnRBbGxvd2VkKCkKKyAgICAgICAg
c3RhdGljIGJvb2wgaXNTY3JpcHRBbGxvd2VkKCkKICAgICAgICAgewogICAgICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgICAgIHJldHVybiAhc19jb3VudDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDIyNjIxNikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTEgKzQxLDExIEBACiAjaW5jbHVkZSAiTG9hZGFibGVDbGFzc2ljU2NyaXB0LmgiCiAjaW5jbHVk
ZSAiTG9hZGFibGVNb2R1bGVTY3JpcHQuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
Ci0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUGVuZGlu
Z1NjcmlwdC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgogI2luY2x1
ZGUgIlNWR1NjcmlwdEVsZW1lbnQuaCIKICNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVE
b2N1bWVudFBhcnNlci5oIgpAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgU2NyaXB0RWxlbWVudDo6
cmVxdWVzdE1vZHVsZVNjcmlwdCgKIAogdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlQ2xhc3Np
Y1NjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQogewotICAgIFJFTEVB
U0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnRBbGxvd2VkKCkgfHwgIWlzSW5XZWJQcm9jZXNzKCkp
OworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpIHx8ICFpc0luV2Vi
UHJvY2VzcygpKTsKICAgICBBU1NFUlQobV9hbHJlYWR5U3RhcnRlZCk7CiAKICAgICBpZiAoc291
cmNlQ29kZS5pc0VtcHR5KCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEzICsz
OSwxMyBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQu
aCIKICNpbmNsdWRlICJOYXZpZ2F0b3IuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24uaCIKICNpbmNsdWRlICJQdWJsaWNVUkxNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiUmVqZWN0
ZWRQcm9taXNlVHJhY2tlci5oIgogI2luY2x1ZGUgIlJlc291cmNlUmVxdWVzdC5oIgogI2luY2x1
ZGUgIlNXQ2xpZW50Q29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIlNXQ29udGV4dE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJTY2hlbWVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRT
Y29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtl
ci5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS5oIgpAQCAtMTk2LDcgKzE5
Niw3IEBAIGJvb2wgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6Y2FuU3VzcGVuZEEKICAgICAvLyBm
dW5jdGlvbnMgc2hvdWxkIG5vdCBhZGQgbmV3IGFjdGl2ZSBET00gb2JqZWN0cywgbm9yIGV4ZWN1
dGUgYXJiaXRyYXJ5IEphdmFTY3JpcHQuCiAgICAgLy8gQW4gQVNTRVJUX1dJVEhfU0VDVVJJVFlf
SU1QTElDQVRJT04gb3IgUkVMRUFTRV9BU1NFUlQgd2lsbCBmaXJlIGlmIHRoaXMgaGFwcGVucywg
YnV0IGl0J3MgaW1wb3J0YW50IHRvIGNvZGUKICAgICAvLyBjYW5TdXNwZW5kIGZ1bmN0aW9ucyBz
byBpdCB3aWxsIG5vdCBoYXBwZW4hCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1h
aW5UaHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICBmb3IgKGF1dG8qIGFj
dGl2ZURPTU9iamVjdCA6IG1fYWN0aXZlRE9NT2JqZWN0cykgewogICAgICAgICBpZiAoIWFjdGl2
ZURPTU9iamVjdC0+Y2FuU3VzcGVuZEZvckRvY3VtZW50U3VzcGVuc2lvbigpKSB7CiAgICAgICAg
ICAgICBjYW5TdXNwZW5kID0gZmFsc2U7CkBAIC0yMzgsNyArMjM4LDcgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzdXNwZW5kQWN0aQogICAgIC8vIGZ1bmN0aW9ucyBzaG91bGQgbm90
IGFkZCBuZXcgYWN0aXZlIERPTSBvYmplY3RzLCBub3IgZXhlY3V0ZSBhcmJpdHJhcnkgSmF2YVNj
cmlwdC4KICAgICAvLyBBbiBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTiBvciBSRUxF
QVNFX0FTU0VSVCB3aWxsIGZpcmUgaWYgdGhpcyBoYXBwZW5zLCBidXQgaXQncyBpbXBvcnRhbnQg
dG8gY29kZQogICAgIC8vIHN1c3BlbmQgZnVuY3Rpb25zIHNvIGl0IHdpbGwgbm90IGhhcHBlbiEK
LSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50
RGlzcGF0Y2g7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0
RGlzYWxsb3dlZFNjb3BlOwogICAgIGZvciAoYXV0byogYWN0aXZlRE9NT2JqZWN0IDogbV9hY3Rp
dmVET01PYmplY3RzKQogICAgICAgICBhY3RpdmVET01PYmplY3QtPnN1c3BlbmQod2h5KTsKIApA
QCAtMjY3LDcgKzI2Nyw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6cmVzdW1lQWN0
aXYKICAgICAvLyBmdW5jdGlvbnMgc2hvdWxkIG5vdCBhZGQgbmV3IGFjdGl2ZSBET00gb2JqZWN0
cywgbm9yIGV4ZWN1dGUgYXJiaXRyYXJ5IEphdmFTY3JpcHQuCiAgICAgLy8gQW4gQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04gb3IgUkVMRUFTRV9BU1NFUlQgd2lsbCBmaXJlIGlmIHRo
aXMgaGFwcGVucywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGNvZGUKICAgICAvLyByZXN1bWUgZnVu
Y3Rpb25zIHNvIGl0IHdpbGwgbm90IGhhcHBlbiEKLSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAgU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgIGZvciAo
YXV0byogYWN0aXZlRE9NT2JqZWN0IDogbV9hY3RpdmVET01PYmplY3RzKQogICAgICAgICBhY3Rp
dmVET01PYmplY3QtPnJlc3VtZSgpOwogCkBAIC0yOTQsNyArMjk0LDcgQEAgdm9pZCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0OjpzdG9wQWN0aXZlRAogICAgIC8vIHN0b3AgZnVuY3Rpb25zIHNob3Vs
ZCBub3QgYWRkIG5ldyBhY3RpdmUgRE9NIG9iamVjdHMsIG5vciBleGVjdXRlIGFyYml0cmFyeSBK
YXZhU2NyaXB0LgogICAgIC8vIEFuIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OIG9y
IFJFTEVBU0VfQVNTRVJUIHdpbGwgZmlyZSBpZiB0aGlzIGhhcHBlbnMsIGJ1dCBpdCdzIGltcG9y
dGFudCB0byBjb2RlIHN0b3AgZnVuY3Rpb25zCiAgICAgLy8gc28gaXQgd2lsbCBub3QgaGFwcGVu
IQotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbiBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7Cisg
ICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICBmb3Ig
KGF1dG8qIGFjdGl2ZURPTU9iamVjdCA6IHBvc3NpYmxlQWN0aXZlRE9NT2JqZWN0cykgewogICAg
ICAgICAvLyBDaGVjayBpZiB0aGlzIG9iamVjdCB3YXMgZGVsZXRlZCBhbHJlYWR5LiBJZiBzbywg
anVzdCBza2lwIGl0LgogICAgICAgICAvLyBDYWxsaW5nIGNvbnRhaW5zIG9uIGEgcG9zc2libHkt
YWxyZWFkeS1kZWxldGVkIG9iamVjdCBpcyBPSyBiZWNhdXNlIHdlIGd1YXJhbnRlZQpJbmRleDog
U291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCShyZXZpc2lvbiAyMjYyMTYpCisrKyBT
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCwxMCArMzQsMTAgQEAKICNpbmNsdWRlICJIaXN0b3J5Q29udHJvbGxlci5oIgogI2luY2x1ZGUg
Ikhpc3RvcnlJdGVtLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVkZSAiTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWdlVHJhbnNpdGlvbkV2ZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlz
YWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJWaXNpdGVk
TGlua1N0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+CkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UmIHBhZ2UpCiAgICAgewogICAgICAg
ICAvLyBEbyBub3QgZGlzcGF0Y2ggRE9NIGV2ZW50cyBhcyB0aGVpciBKYXZhU2NyaXB0IGxpc3Rl
bmVycyBjb3VsZCBjYXVzZSB0aGUgcGFnZSB0byBiZSBwdXQKICAgICAgICAgLy8gaW50byB0aGUg
cGFnZSBjYWNoZSBiZWZvcmUgd2UgaGF2ZSBmaW5pc2hlZCByZXN0b3JpbmcgaXQgZnJvbSB0aGUg
cGFnZSBjYWNoZS4KLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJl
YWQgbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKICAgICAgICAgbV9jYWNo
ZWRNYWluRnJhbWUtPm9wZW4oKTsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5
L1BhZ2VDYWNoZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdl
Q2FjaGUuY3BwCShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1Bh
Z2VDYWNoZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDggKzQ0LDggQEAKICNpbmNsdWRlICJJ
Z25vcmVPcGVuc0R1cmluZ1VubG9hZENvdW50SW5jcmVtZW50ZXIuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1lLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93
ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiU3ViZnJhbWVMb2Fk
ZXIuaCIKICNpbmNsdWRlIDx3dGYvTWVtb3J5UHJlc3N1cmVIYW5kbGVyLmg+CkBAIC00MjMsNyAr
NDIzLDcgQEAgdm9pZCBQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKEhpc3RvcnlJdAogICAgIHNl
dFBhZ2VDYWNoZVN0YXRlKCpwYWdlLCBEb2N1bWVudDo6SW5QYWdlQ2FjaGUpOwogCiAgICAgLy8g
TWFrZSBzdXJlIHdlIG5vIGxvbmdlciBmaXJlIGFueSBKUyBldmVudHMgcGFzdCB0aGlzIHBvaW50
LgotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2VydE5vRXZl
bnREaXNwYXRjaDsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAKICAgICBpdGVtLm1fY2FjaGVkUGFnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8Q2FjaGVkUGFnZT4oKnBhZ2UpOwogICAgIGl0ZW0ubV9wcnVuaW5nUmVhc29uID0gUHJ1
bmluZ1JlYXNvbjo6Tm9uZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQzLDcgKzQ0Myw3IEBAIHN0YXRpYyBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gdGV4dFRvRnJhZ20KICAgICBhdXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6
Y3JlYXRlKGRvY3VtZW50KTsKIAogICAgIC8vIEl0J3Mgc2FmZSB0byBkaXNwYXRjaCBldmVudHMg
b24gdGhlIG5ldyBmcmFnbWVudCBzaW5jZSBhdXRob3Igc2NyaXB0cyBoYXZlIG5vIGFjY2VzcyB0
byBpdCB5ZXQuCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29w
ZSBhbGxvd2VkU2NvcGUoZnJhZ21lbnQpOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZl
bnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKGZyYWdtZW50KTsKIAogICAgIGZvciAodW5zaWdu
ZWQgc3RhcnQgPSAwLCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOyBzdGFydCA8IGxlbmd0aDsgKSB7
CiAgICAgICAgIC8vIEZpbmQgbmV4dCBsaW5lIGJyZWFrLgpAQCAtNTMzLDcgKzUzMyw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEhUTUxFbGVtZW50OjpzZXRJbm5lclQKICAgICBhdXRvIGZyYWdtZW50
ID0gdGV4dFRvRnJhZ21lbnQoZG9jdW1lbnQoKSwgdGV4dCk7CiAgICAgLy8gRklYTUU6IFRoaXMg
c2hvdWxkIHVzZSByZXBsYWNlQWxsQ2hpbGRyZW4oKSBvbmNlIGl0IGFjY2VwdHMgRG9jdW1lbnRG
cmFnbWVudHMgYXMgaW5wdXQuCiAgICAgLy8gSXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBv
biB0aGUgbmV3IGZyYWdtZW50IHNpbmNlIGF1dGhvciBzY3JpcHRzIGhhdmUgbm8gYWNjZXNzIHRv
IGl0IHlldC4KLSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxsb3dlZFNjb3Bl
IGFsbG93ZWRTY29wZShmcmFnbWVudC5nZXQoKSk7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoZnJhZ21lbnQuZ2V0KCkpOwogICAgIHJl
dHVybiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoKnRoaXMsIFdURk1vdmUoZnJhZ21lbnQp
KTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw2IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVy
eUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIk1lZGlhUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRl
ICJOZXR3b3JraW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJQYWdlR3JvdXAuaCIKICNpbmNsdWRl
ICJQbGF0Zm9ybU1lZGlhU2Vzc2lvbk1hbmFnZXIuaCIKQEAgLTc5LDYgKzc4LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkSW5mby5oIgogI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUu
aCIKICNpbmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmln
aW5EYXRhLmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlQb2xpY3kuaCIKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCShyZXZpc2lv
biAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTEgKzQxLDExIEBACiAjaW5jbHVkZSAiSFRN
TFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkxheW91dERpc2FsbG93ZWRTY29wZS5oIgogI2lu
Y2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIK
ICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlclRleHRDb250cm9sU2luZ2xlTGluZS5oIgogI2luY2x1ZGUgIlJlbmRlclRoZW1lLmgi
CisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9v
dC5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJUZXh0Q29udHJvbElubmVyRWxlbWVu
dHMuaCIKQEAgLTU3Miw3ICs1NzIsNyBAQCB2b2lkIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50
OjpzZXRJbm5lCiAKICAgICAgICAgewogICAgICAgICAgICAgLy8gRXZlbnRzIGRpc3BhdGNoZWQg
b24gdGhlIGlubmVyIHRleHQgZWxlbWVudCBjYW5ub3QgZXhlY3V0ZSBhcmJpdHJhcnkgYXV0aG9y
IHNjcmlwdHMuCi0gICAgICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxs
b3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqdXNlckFnZW50U2hhZG93Um9vdCgpKTsKKyAgICAgICAg
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3Bl
KCp1c2VyQWdlbnRTaGFkb3dSb290KCkpOwogCiAgICAgICAgICAgICBpbm5lclRleHQtPnNldElu
bmVyVGV4dCh2YWx1ZSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3Vl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAJ
KHJldmlzaW9uIDIyNjIxNikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVlRUQ3VlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsOSArNDEsOSBAQAogI2luY2x1ZGUgIkhUTUxEaXZFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSFRNTFNwYW5FbGVtZW50LmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5o
IgotI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIk5vZGVU
cmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJWVFRDdWUuaCIKKyNpbmNsdWRlICJTY3JpcHRE
aXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNr
LmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgpAQCAtNTMwLDcgKzUzMCw3IEBAIFJl
ZlB0cjxEb2N1bWVudEZyYWdtZW50PiBWVFRDdWU6OmNyZWF0ZUMKICAgICBhdXRvIGNsb25lZEZy
YWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKG93bmVyRG9jdW1lbnQoKSk7CiAKICAg
ICAvLyBUaGUgY2xvbmVkIGZyYWdtZW50IGlzIG5ldmVyIGV4cG9zZWQgdG8gYXV0aG9yIHNjcmlw
dHMgc28gaXQncyBzYWZlIHRvIGRpc3BhdGNoIGV2ZW50cyBoZXJlLgotICAgIE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2NvcGUgbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
RGlzYWJsZWRGb3JTY29wZShjbG9uZWRGcmFnbWVudCk7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoY2xvbmVkRnJhZ21lbnQpOwogCiAg
ICAgbV93ZWJWVFROb2RlVHJlZS0+Y2xvbmVDaGlsZE5vZGVzKGNsb25lZEZyYWdtZW50KTsKICAg
ICByZXR1cm4gV1RGTW92ZShjbG9uZWRGcmFnbWVudCk7CkBAIC03ODgsNyArNzg4LDcgQEAgdm9p
ZCBWVFRDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKGNvbnN0IE1lZAogICAgICAgICByZXR1cm47CiAK
ICAgICAvLyBNdXRhdGluZyB0aGUgVlRUIGNvbnRlbnRzIGlzIHNhZmUgYmVjYXVzZSBpdCdzIG5l
dmVyIGV4cG9zZWQgdG8gYXV0aG9yIHNjcmlwdHMuCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGVGb3JDdWVIaWdobGlnaHRCb3goKm1f
Y3VlSGlnaGxpZ2h0Qm94KTsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dl
ZFNjb3BlIGFsbG93ZWRTY29wZUZvckN1ZUhpZ2hsaWdodEJveCgqbV9jdWVIaWdobGlnaHRCb3gp
OwogCiAgICAgLy8gQ2xlYXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBzZXQuCiAgICAgbV9jdWVIaWdo
bGlnaHRCb3gtPnJlbW92ZUNoaWxkcmVuKCk7CkBAIC03OTgsNyArNzk4LDcgQEAgdm9pZCBWVFRD
dWU6OnVwZGF0ZURpc3BsYXlUcmVlKGNvbnN0IE1lZAogICAgIGlmICghcmVmZXJlbmNlVHJlZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpFdmVudEFs
bG93ZWRTY29wZSBhbGxvd2VkU2NvcGVGb3JSZWZlcmVuY2VUcmVlKCpyZWZlcmVuY2VUcmVlKTsK
KyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29w
ZUZvclJlZmVyZW5jZVRyZWUoKnJlZmVyZW5jZVRyZWUpOwogCiAgICAgbWFya0Z1dHVyZUFuZFBh
c3ROb2RlcyhyZWZlcmVuY2VUcmVlLmdldCgpLCBzdGFydE1lZGlhVGltZSgpLCBtb3ZpZVRpbWUp
OwogICAgIG1fY3VlSGlnaGxpZ2h0Qm94LT5hcHBlbmRDaGlsZCgqcmVmZXJlbmNlVHJlZSk7CkBA
IC04NjEsNyArODYxLDcgQEAgdm9pZCBWVFRDdWU6OnJlbW92ZURpc3BsYXlUcmVlKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGRpc3BsYXkgdHJlZSBpcyBuZXZlciBleHBvc2VkIHRv
IGF1dGhvciBzY3JpcHRzIHNvIGl0J3Mgc2FmZSB0byBkaXNwYXRjaCBldmVudHMgaGVyZS4KLSAg
ICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29w
ZShkaXNwbGF5VHJlZUludGVybmFsKCkpOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZl
bnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKGRpc3BsYXlUcmVlSW50ZXJuYWwoKSk7CiAgICAg
ZGlzcGxheVRyZWVJbnRlcm5hbCgpLnJlbW92ZSgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHJldmlzaW9uIDIyNjIxNikKKysrIFNvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcg
KzQ3LDcgQEAKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIk5vRXZlbnRE
aXNwYXRjaEFzc2VydGlvbi5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgog
I2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU1ZHRm9udC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
U1ZHRm9udC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDEwICszMSwxMCBAQAogCiAjaW5jbHVk
ZSAiRm9udERlc2NyaXB0aW9uLmgiCiAjaW5jbHVkZSAiRm9udFBsYXRmb3JtRGF0YS5oIgotI2lu
Y2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50
LmgiCiAjaW5jbHVkZSAiU1ZHRm9udEVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdGb250RmFjZUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJT
aGFyZWRCdWZmZXIuaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVk
ZSAiVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgiCkBAIC03NSw3ICs3NSw3IEBAIGJv
b2wgQ2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEKICAgICAgICAgICAgIG1fZXh0
ZXJuYWxTVkdEb2N1bWVudCA9IFNWR0RvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgVVJMKCkpOwog
ICAgICAgICAgICAgYXV0byBkZWNvZGVyID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKCJh
cHBsaWNhdGlvbi94bWwiKTsKIAotICAgICAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
OjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoKm1fZXh0ZXJuYWxTVkdEb2N1bWVudCk7
CisgICAgICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFs
bG93ZWRTY29wZSgqbV9leHRlcm5hbFNWR0RvY3VtZW50KTsKIAogICAgICAgICAgICAgbV9leHRl
cm5hbFNWR0RvY3VtZW50LT5zZXRDb250ZW50KGRlY29kZXItPmRlY29kZUFuZEZsdXNoKG1fZGF0
YS0+ZGF0YSgpLCBtX2RhdGEtPnNpemUoKSkpOwogICAgICAgICAgICAgc2F3RXJyb3IgPSBkZWNv
ZGVyLT5zYXdFcnJvcigpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRDb250ZXh0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xheW91dENvbnRleHQuY3Bw
CShyZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xheW91dENvbnRleHQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw5ICszMyw5IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTGF5b3V0U3RhdGUuaCIKICNpbmNsdWRlICJM
b2dnaW5nLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJT
Y3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiAjaW5jbHVk
ZSA8d3RmL1NldEZvclNjb3BlLmg+CkBAIC0xNzUsNyArMTc1LDcgQEAgdm9pZCBMYXlvdXRDb250
ZXh0OjpsYXlvdXQoKQogICAgIH0KICAgICB7CiAgICAgICAgIFNldEZvclNjb3BlPExheW91dFBo
YXNlPiBsYXlvdXRQaGFzZShtX2xheW91dFBoYXNlLCBMYXlvdXRQaGFzZTo6SW5SZW5kZXJUcmVl
TGF5b3V0KTsKLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQg
bm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6
OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIFN1YnRyZWVMYXlv
dXRTdGF0ZU1haW50YWluZXIgc3VidHJlZUxheW91dFN0YXRlTWFpbnRhaW5lcihzdWJ0cmVlTGF5
b3V0Um9vdCgpKTsKICAgICAgICAgUmVuZGVyVmlldzo6UmVwYWludFJlZ2lvbkFjY3VtdWxhdG9y
IHJlcGFpbnRSZWdpb25BY2N1bXVsYXRvcihyZW5kZXJWaWV3KCkpOwogI2lmbmRlZiBOREVCVUcK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwCShy
ZXZpc2lvbiAyMjYyMTYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVC
YXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksOCArMjksOCBAQAogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiSFRNTEZyYW1lRWxlbWVudEJh
c2UuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVk
ZSA8d3RmL0lzb01hbGxvY0lubGluZXMuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNzUs
NyArNzUsNyBAQCBSZW5kZXJWaWV3KiBSZW5kZXJGcmFtZUJhc2U6OmNoaWxkUmVuZGVyCiB2b2lk
IFJlbmRlckZyYW1lQmFzZTo6cGVyZm9ybUxheW91dFdpdGhGbGF0dGVuaW5nKGJvb2wgaGFzRml4
ZWRXaWR0aCwgYm9vbCBoYXNGaXhlZEhlaWdodCkKIHsKICAgICAvLyBGSVhNRTogUmVmYWN0b3Ig
ZnJhbWUgZmxhdHRlbmluZyBjb2RlIHNvIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBkaXNhYmxlIGFz
c2VydGlvbnMgaGVyZS4KLSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkRpc2FibGVBc3Nl
cnRpb25zSW5TY29wZSBzY29wZTsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2FibGVB
c3NlcnRpb25zSW5TY29wZSBzY29wZTsKICAgICBpZiAoIWNoaWxkUmVuZGVyVmlldygpKQogICAg
ICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXll
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
LmNwcAkocmV2aXNpb24gMjI2MjE2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODIsNyArODIsNiBAQAogI2luY2x1ZGUgIkhp
dFRlc3RpbmdUcmFuc2Zvcm1TdGF0ZS5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNp
bmNsdWRlICJPdmVyZmxvd0V2ZW50LmgiCiAjaW5jbHVkZSAiT3ZlcmxhcFRlc3RSZXF1ZXN0Q2xp
ZW50LmgiCiAjaW5jbHVkZSAiUGFnZS5oIgpAQCAtMTExLDYgKzExMCw3IEBACiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNp
bmNsdWRlICJTY3JvbGxBbmltYXRvci5oIgogI2luY2x1ZGUgIlNjcm9sbGJhci5oIgogI2luY2x1
ZGUgIlNjcm9sbGJhclRoZW1lLmgiCkBAIC0yNTg3LDcgKzI1ODcsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpzY3JvbGxSZWN0VG9WaXNpYmxlKFNlCiAKICAgICAgICAgICAgIGlmIChmcmFtZUVsZW1l
bnRBbmRWaWV3UGVybWl0U2Nyb2xsKGZyYW1lRWxlbWVudEJhc2UsIGZyYW1lVmlldykpIHsKICAg
ICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFzc2VydGlvbiBmaXJlcyB3ZSBuZWVkIHRvIHByb3Rl
Y3QgdGhlIG93bmVyRWxlbWVudCBmcm9tIGJlaW5nIGRlc3Ryb3llZC4KLSAgICAgICAgICAgICAg
ICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlz
cGF0Y2g7CisgICAgICAgICAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCB2
aWV3UmVjdCA9IGZyYW1lVmlldy52aXNpYmxlQ29udGVudFJlY3QoTGVnYWN5SU9TRG9jdW1lbnRW
aXNpYmxlUmVjdCk7CiAgICAgICAgICAgICAgICAgTGF5b3V0UmVjdCBleHBvc2VSZWN0ID0gZ2V0
UmVjdFRvRXhwb3NlKHZpZXdSZWN0LCBhYnNvbHV0ZVJlY3QsIGluc2lkZUZpeGVkLCBhbGlnblgs
IGFsaWduWSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHJldmlz
aW9uIDIyNjIxNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgi
CiAjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIk11dGF0aW9uRXZlbnQuaCIKLSNp
bmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJ
bmxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdJbmxpbmVUZXh0LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2UuaCIKQEAgLTMzLDYgKzMyLDcgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU3R5
bGVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlhMaW5rTmFt
ZXMuaCIKQEAgLTE0Niw3ICsxNDYsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50Ojp1cGRhdGVSZWZl
cmVuY2VkVGV4CiAKICAgICBhdXRvIHJvb3QgPSB1c2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAg
QVNTRVJUKHJvb3QpOwotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2Vk
U2NvcGUgYWxsb3dlZFNjb3BlKCpyb290KTsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2
ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqcm9vdCk7CiAgICAgaWYgKCFyb290LT5maXJz
dENoaWxkKCkpCiAgICAgICAgIHJvb3QtPmFwcGVuZENoaWxkKFRleHQ6OmNyZWF0ZShkb2N1bWVu
dCgpLCB0ZXh0Q29udGVudCkpOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
c2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjI2MjE2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMyArMzEsMTMgQEAKICNpbmNs
dWRlICJFbGVtZW50SXRlcmF0b3IuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNs
dWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RyYW5zZm9ybWFi
bGVDb250YWluZXIuaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNs
dWRlICJTVkdHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKICNpbmNsdWRl
ICJTVkdTeW1ib2xFbGVtZW50LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIApAQCAt
MjE5LDcgKzIxOSw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6Y2xlYXJTaGFkb3dUcmVlKCkKIHsK
ICAgICBpZiAoYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpKSB7CiAgICAgICAgIC8v
IFNhZmUgYmVjYXVzZSBTVkcgdXNlIGVsZW1lbnQncyBzaGFkb3cgdHJlZSBpcyBuZXZlciB1c2Vk
IHRvIGZpcmUgc3luY2hyb25vdXMgZXZlbnRzIGR1cmluZyBsYXlvdXQgb3IgRE9NIG11dGF0aW9u
cy4KLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSBz
Y29wZSgqcm9vdCk7CisgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2Vk
U2NvcGUgc2NvcGUoKnJvb3QpOwogICAgICAgICByb290LT5yZW1vdmVDaGlsZHJlbigpOwogICAg
IH0KIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAkocmV2
aXNpb24gMjI2MjE2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDMsNyArNDMsNiBAQAogI2luY2x1ZGUgIkpTRE9NV2luZG93
QmFzZS5oIgogI2luY2x1ZGUgIkxpYldlYlJUQ1Byb3ZpZGVyLmgiCiAjaW5jbHVkZSAiTWFpbkZy
YW1lLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25maWd1cmF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUm9vdC5oIgpAQCAtNTQsNiArNTMsNyBAQAogI2luY2x1ZGUgIlNWR0ltYWdlQ2xpZW50cy5o
IgogI2luY2x1ZGUgIlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQu
aCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTZXR0aW5n
cy5oIgogI2luY2x1ZGUgIlNvY2tldFByb3ZpZGVyLmgiCiAjaW5jbHVkZSA8cnVudGltZS9KU0NJ
bmxpbmVzLmg+CkBAIC0zMTIsNyArMzEyLDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFNWR0ltYWdlOjpk
cmF3KEdyYXBoaWNzQwogICAgIHZpZXctPnJlc2l6ZShjb250YWluZXJTaXplKCkpOwogCiAgICAg
ewotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkRpc2FibGVBc3NlcnRpb25zSW5T
Y29wZSBkaXNhYmxlZFNjb3BlOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkRpc2Fi
bGVBc3NlcnRpb25zSW5TY29wZSBkaXNhYmxlZFNjb3BlOwogICAgICAgICBpZiAodmlldy0+bmVl
ZHNMYXlvdXQoKSkKICAgICAgICAgICAgIHZpZXctPmxheW91dENvbnRleHQoKS5sYXlvdXQoKTsK
ICAgICB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330069</attachid>
            <date>2017-12-21 14:26:47 -0800</date>
            <delta_ts>2017-12-21 14:27:54 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-181102-20171221142646.patch</filename>
            <type>text/plain</type>
            <size>63665</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyNjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwOSBAQAorMjAxNy0xMi0yMSAgUnlvc3Vr
ZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZW5hbWUgTm9FdmVudERpc3Bh
dGNoQXNzZXJ0aW9uIHRvIFNjcmlwdERpc2FsbG93ZWRTY29wZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgxMTAyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgWmFsYW4gQnVqdGFzLgorCisgICAgICAgIFJlbmFtZWQgdGhlIGNsYXNzLgorCisgICAgICAg
ICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJv
bGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAqIGRvbS9Db250YWluZXJOb2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVuV2l0
aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpyZW1v
dmVOb2RlV2l0aFNjcmlwdEFzc2VydGlvbik6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlTm9k
ZUluc2VydGlvbldpdGhTY3JpcHRBc3NlcnRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6cmVtb3ZlRGV0YWNoZWRDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpDb250
YWluZXJOb2RlOjppbnNlcnRCZWZvcmVDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFp
bmVyTm9kZTo6YXBwZW5kQ2hpbGRDb21tb24pOgorICAgICAgICAoV2ViQ29yZTo6Q29udGFpbmVy
Tm9kZTo6cmVtb3ZlQmV0d2Vlbik6CisgICAgICAgIChXZWJDb3JlOjpkaXNwYXRjaENoaWxkSW5z
ZXJ0aW9uRXZlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OmRpc3BhdGNoQ2hpbGRSZW1vdmFsRXZl
bnRzKToKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6bm90aWZ5Q2hpbGROb2RlSW5zZXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6
bm90aWZ5Q2hpbGROb2RlUmVtb3ZlZCk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXNvbHZlU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aXNTYWZlVG9VcGRhdGVTdHlsZU9yTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp1cGRhdGVTdHlsZUlmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpu
b2RlQ2hpbGRyZW5XaWxsQmVSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpu
b2RlV2lsbEJlUmVtb3ZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlzcGF0Y2hX
aW5kb3dFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6ZGlzcGF0Y2hXaW5kb3dM
b2FkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lckZpcmVkKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjphZGRTaGFkb3dSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmF0dGFjaEF0dHJpYnV0ZU5vZGVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjpzZXRBdHRyaWJ1dGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNl
dEF0dHJpYnV0ZU5vZGVOUyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaEZv
Y3VzSW5FdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaEZvY3VzT3V0
RXZlbnQpOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zLmg6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpFbGVtZW50SXRlcmF0b3JB
c3NlcnRpb25zKToKKyAgICAgICAgKiBkb20vRXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCk6CisgICAgICAgICogZG9t
L0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0OjpmaXJlRXZl
bnRMaXN0ZW5lcnMpOgorICAgICAgICAqIGRvbS9Ob0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmRpc3BhdGNoRE9NQWN0aXZhdGVFdmVudCk6CisgICAgICAgICogZG9tL1NjcmlwdERpc2FsbG93
ZWRTY29wZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLmguCisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREaXNhbGxvd2VkU2NvcGU6OlNj
cmlwdERpc2FsbG93ZWRTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREaXNhbGxvd2Vk
U2NvcGU6On5TY3JpcHREaXNhbGxvd2VkU2NvcGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1
YnRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCk6CisgICAgICAgIChXZWJDb3JlOjpOb0V2ZW50RGlzcGF0
Y2hBc3NlcnRpb246Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbik6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246On5Ob0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24pOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOjppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZDo6SW5NYWluVGhyZWFk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6
SW5NYWluVGhyZWFkOjp+SW5NYWluVGhyZWFkKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Ok5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hB
bGxvd2VkSW5TdWJ0cmVlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxsb3dlZFNj
b3BlOjpFdmVudEFsbG93ZWRTY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxsb3dlZFNjb3BlOjp+RXZlbnRBbGxvd2VkU2Nv
cGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
OjpFdmVudEFsbG93ZWRTY29wZTo6aXNBbGxvd2VkTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxsb3dlZFNjb3BlOjppc0Fs
bG93ZWROb2RlSW50ZXJuYWwpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Tm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGU6OkRpc2FibGVBc3NlcnRp
b25zSW5TY29wZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb246OkRpc2FibGVBc3NlcnRpb25zSW5TY29wZTo6fkRpc2FibGVBc3NlcnRpb25zSW5T
Y29wZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQpOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBY3RpdmVET01PYmplY3RzRm9yRG9jdW1l
bnRTdXNwZW5zaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6
OnN1c3BlbmRBY3RpdmVET01PYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6c3RvcEFjdGl2ZURPTU9iamVjdHMpOgorICAgICAgICAq
IGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRQYWdlOjpy
ZXN0b3JlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNoZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlQ2FjaGU6OmFkZElmQ2FjaGVhYmxlKToKKyAgICAgICAgKiBodG1sL0hUTUxFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRleHRUb0ZyYWdtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjpzZXRJbm5lclRleHQpOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0
SW5uZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0bWwvdHJhY2svVlRUQ3VlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlZUVEN1ZTo6Y3JlYXRlQ3VlUmVuZGVyaW5nVHJlZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWVFRDdWU6OnVwZGF0ZURpc3BsYXlUcmVlKToKKyAgICAgICAgKFdlYkNvcmU6OlZU
VEN1ZTo6cmVtb3ZlRGlzcGxheVRyZWUpOgorICAgICAgICAqIGxvYWRlci9Gb3JtU3VibWlzc2lv
bi5jcHA6CisgICAgICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q2FjaGVkU1ZHRm9udDo6ZW5zdXJlQ3VzdG9tRm9udERhdGEpOgorICAgICAg
ICAqIHBhZ2UvTGF5b3V0Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXRDb250
ZXh0OjpsYXlvdXQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGcmFtZUJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRnJhbWVCYXNlOjpwZXJmb3JtTGF5b3V0V2l0aEZsYXR0
ZW5pbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsUmVjdFRvVmlzaWJsZSk6CisgICAgICAgICogc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50Ojp1
cGRhdGVSZWZlcmVuY2VkVGV4dCk6CisgICAgICAgICogc3ZnL1NWR1VzZUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHVXNlRWxlbWVudDo6Y2xlYXJTaGFkb3dUcmVlKToKKyAgICAg
ICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1h
Z2U6OmRyYXcpOgorCiAyMDE3LTEyLTIxICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1JlbmRlclRyZWVCdWlsZGVyXSBNb3ZlIFJlbmRlclJ1YnlBc0Jsb2NrOjph
ZGRDaGlsZCBtdXRhdGlvbiB0byBhIFJlbmRlclRyZWVCdWlsZGVyCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAy
MjYyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQ1NzIsNyArNDU3Miw3IEBACiAJCUU0NjJBNEExMTEzRTcx
QkUwMDRBNDIyMCAvKiBJbnRQb2ludEhhc2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0NjJBNEEwMTEzRTcxQkUwMDRBNDIyMCAvKiBJbnRQb2ludEhh
c2guaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
NDZBMkIxQzE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9y
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDZBMkIx
QjE3Q0E2NUI5MDAwREJDRDggLyogVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJRTQ2QTJCMUUx
N0NBNzZCMTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNDZBMkIxRDE3Q0E3NkIxMDAwREJDRDgg
LyogRWxlbWVudENoaWxkSXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwotCQlFNDZCNDFGOTFDQjI0RTcwMDA4RjExREUgLyogTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBFNDZCNDFGODFDQjI0RTcwMDA4RjExREUgLyogTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
RTQ2QjQxRjkxQ0IyNEU3MDAwOEYxMURFIC8qIFNjcmlwdERpc2FsbG93ZWRTY29wZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ2QjQxRjgxQ0IyNEU3
MDAwOEYxMURFIC8qIFNjcmlwdERpc2FsbG93ZWRTY29wZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUU0NkM3OTRCMUYxM0U4MkIwMEYzNzFFMSAv
KiBTdHlsZUludmFsaWRhdGlvbkZ1bmN0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRTRBMTgyMkYxRjEzQkU1ODAwRkVGNjk4IC8qIFN0eWxlSW52
YWxpZGF0aW9uRnVuY3Rpb25zLmggKi87IH07CiAJCUU0NzEyN0NCMTYzNDM4QUUwMEVENkY1QSAv
KiBTdHlsZUludmFsaWRhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNDdBOTdDRjE2MzA1OUZDMDA1RENEOTkgLyogU3R5bGVJbnZhbGlkYXRvci5o
ICovOyB9OwogCQlFNDc3OEI4MDExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTQ3NzhCN0UxMTVB
NTgxQTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuaCAqLzsgfTsKQEAgLTEzOTIyLDcgKzEzOTIy
LDcgQEAKIAkJRTQ2MkE0QTAxMTNFNzFCRTAwNEE0MjIwIC8qIEludFBvaW50SGFzaC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnRQb2ludEhhc2guaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRTQ2QTJCMUIxN0NBNjVCOTAwMERCQ0Q4IC8qIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBU
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTQ2QTJCMUQxN0NBNzZCMTAwMERCQ0Q4IC8qIEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVsZW1lbnRDaGlsZEl0ZXJhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUU0NkI0MUY4MUNCMjRFNzAwMDhGMTFERSAv
KiBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUU0NkI0MUY4MUNCMjRFNzAwMDhGMTFERSAvKiBTY3JpcHREaXNhbGxvd2VkU2NvcGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGlzYWxsb3dlZFNjb3Bl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0Nzc4QjdEMTE1QTU4MUEwMEI1RDM3
MiAvKiBKU0N1c3RvbUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ3VzdG9tRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFNDc3
OEI3RTExNUE1ODFBMDBCNUQzNzIgLyogSlNDdXN0b21FdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUU0N0EzQUMyMUM1RUFCQkUwMENDQkZBNyAvKiBTdHlsZVNoYXJpbmdSZXNvbHZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZVNoYXJpbmdSZXNv
bHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yNTUyOCw3ICsyNTUyOCw2
IEBACiAJCQkJRTQzMTA1QjcxNjc1MEYwQzAwREIyRkI4IC8qIE5vZGVUcmF2ZXJzYWwuY3BwICov
LAogCQkJCUU0MzEwNUJBMTY3NTBGMTYwMERCMkZCOCAvKiBOb2RlVHJhdmVyc2FsLmggKi8sCiAJ
CQkJOTM4MkFBQjEwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCAqLywKLQkJCQlF
NDZCNDFGODFDQjI0RTcwMDA4RjExREUgLyogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmggKi8s
CiAJCQkJODM2OUU1OEYxQUZERDAzMDAwODdERjY4IC8qIE5vbkRvY3VtZW50VHlwZUNoaWxkTm9k
ZS5pZGwgKi8sCiAJCQkJN0M2NzUyQkExQjA2RTgyMDAwQzI3OUNCIC8qIE5vbkVsZW1lbnRQYXJl
bnROb2RlLmlkbCAqLywKIAkJCQkxQTBENTczNDBBNUM3N0ZFMDA3RURENEMgLyogT3ZlcmZsb3dF
dmVudC5jcHAgKi8sCkBAIC0yNTU4NCw2ICsyNTU4Myw3IEBACiAJCQkJQTg0RDgyQkYxMUQzNDc0
ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oICovLAogCQkJCTQ5OThBRUNG
MTNGQjIyNEQwMDkwQjFBQSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwICovLAog
CQkJCTQ5OThBRUQwMTNGQjIyNEQwMDkwQjFBQSAvKiBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCAqLywKKwkJCQlFNDZCNDFGODFDQjI0RTcwMDA4RjExREUgLyogU2NyaXB0RGlzYWxsb3dl
ZFNjb3BlLmggKi8sCiAJCQkJMDhBNDg0NzUwRTUyNzJDNTAwQzNGRTc2IC8qIFNjcmlwdEVsZW1l
bnQuY3BwICovLAogCQkJCTA4QTQ4NDc2MEU1MjcyQzUwMEMzRkU3NiAvKiBTY3JpcHRFbGVtZW50
LmggKi8sCiAJCQkJRTNFNEUyQTUxRTNCMTZGQzAwMjNCQjhBIC8qIFNjcmlwdEVsZW1lbnRDYWNo
ZWRTY3JpcHRGZXRjaGVyLmNwcCAqLywKQEAgLTI4NTY2LDcgKzI4NTY2LDcgQEAKIAkJCQk2M0Q3
QjMyRDBFNzhDRDNGMDBGNzYxN0MgLyogTm9kZVJlbmRlclN0eWxlLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDMxMDVCQjE2NzUwRjE2MDBEQjJGQjggLyogTm9kZVRyYXZlcnNhbC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTM4MkFBQjQwRDhDMzg2MTAwRjM1N0E2IC8qIE5vZGVXaXRoSW5kZXguaCBp
biBIZWFkZXJzICovLAotCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhGMTFERSAvKiBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUU0NkI0MUY5MUNCMjRFNzAwMDhG
MTFERSAvKiBTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMkMw
QzQxMTQ2REM2Q0MwMDE2QzkxMSAvKiBOb3RpZmljYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTMzNTAzQzlBMTAxNzlBNzQwMDNCNDdFMSAvKiBOb3RpZmljYXRpb25DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMjhDQTZCMTQ3MzMxNjMwMDc0QzcyQSAvKiBOb3RpZmljYXRpb25Db250
cm9sbGVyLmggaW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiAyMjYyNDEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNDMsMTIgKzQzLDEyIEBACiAjaW5jbHVkZSAiTW9kdWxlRmV0Y2hGYWlsdXJlS2luZC5oIgog
I2luY2x1ZGUgIk1vZHVsZUZldGNoUGFyYW1ldGVycy5oIgogI2luY2x1ZGUgIk5QX2pzb2JqZWN0
LmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogI2luY2x1ZGUgIlBhZ2VDb25zb2xlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUGFnZUdyb3Vw
LmgiCiAjaW5jbHVkZSAiUGx1Z2luVmlld0Jhc2UuaCIKICNpbmNsdWRlICJSdW50aW1lQXBwbGlj
YXRpb25DaGVja3MuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNs
dWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFy
c2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTY2OSw3ICs2NjksNyBAQCBKU1ZhbHVl
IFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHRJCiBib29sIFNjcmlwdENvbnRyb2xsZXI6
OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFz
b24pCiB7CiAgICAgaWYgKHJlYXNvbiA9PSBBYm91dFRvRXhlY3V0ZVNjcmlwdCkKLSAgICAgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb246OkluTWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKSB8fCAhaXNJbldlYlByb2Nl
c3MoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpIHx8
ICFpc0luV2ViUHJvY2VzcygpKTsKIAogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9m
cmFtZS5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94U2NyaXB0cykpIHsKICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgbWVzc2FnZSBzaG91bGQgYmUgbW92ZWQgb2ZmIHRoZSBjb25zb2xlIG9u
Y2UgYSBzb2x1dGlvbiB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzMjc0IGV4aXN0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAJKHJl
dmlzaW9uIDIyNjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNyArNDQsNiBAQAogI2luY2x1ZGUgIkxhYmVsc05vZGVMaXN0
LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgogI2luY2x1ZGUgIk5hbWVOb2RlTGlzdC5o
IgotI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIk5vZGVS
YXJlRGF0YS5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJhZGlv
Tm9kZUxpc3QuaCIKQEAgLTU4LDYgKzU3LDcgQEAKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdVc2VFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2VsZWN0b3JRdWVyeS5oIgog
I2luY2x1ZGUgIlRlbXBsYXRlQ29udGVudERvY3VtZW50RnJhZ21lbnQuaCIKICNpbmNsdWRlIDxh
bGdvcml0aG0+CkBAIC03MCw5ICs3MCw5IEBAIHN0YXRpYyB2b2lkIGRpc3BhdGNoQ2hpbGRSZW1v
dmFsRXZlbnRzKFIKIAogQ2hpbGROb2Rlc0xhenlTbmFwc2hvdCogQ2hpbGROb2Rlc0xhenlTbmFw
c2hvdDo6bGF0ZXN0U25hcHNob3Q7CiAKLXVuc2lnbmVkIE5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bjo6c19jb3VudCA9IDA7Cit1bnNpZ25lZCBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OnNfY291bnQg
PSAwOwogI2lmICFBU1NFUlRfRElTQUJMRUQKLU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZl
bnRBbGxvd2VkU2NvcGUqIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2Nv
cGU6OnNfY3VycmVudFNjb3BlID0gbnVsbHB0cjsKK1NjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZl
bnRBbGxvd2VkU2NvcGUqIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxvd2VkU2NvcGU6
OnNfY3VycmVudFNjb3BlID0gbnVsbHB0cjsKICNlbmRpZgogCiBBTFdBWVNfSU5MSU5FIE5vZGVW
ZWN0b3IgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQWxsQ2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9u
KENoaWxkQ2hhbmdlU291cmNlIHNvdXJjZSwgRGVmZXJDaGlsZHJlbkNoYW5nZWQgZGVmZXJDaGls
ZHJlbkNoYW5nZWQpCkBAIC04OCw3ICs4OCw3IEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3RvciBD
b250YWluZXJOb2RlOjoKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIEFTU0VSVChz
b3VyY2UgPT0gQ29udGFpbmVyTm9kZTo6Q2hpbGRDaGFuZ2VTb3VyY2U6OlBhcnNlcik7Ci0gICAg
ICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2VydE5vRXZlbnRE
aXNwYXRjaDsKKyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2Ny
aXB0RGlzYWxsb3dlZFNjb3BlOwogICAgICAgICBpZiAoVU5MSUtFTFkoZG9jdW1lbnQoKS5oYXNN
dXRhdGlvbk9ic2VydmVyc09mVHlwZShNdXRhdGlvbk9ic2VydmVyOjpDaGlsZExpc3QpKSkgewog
ICAgICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAg
ICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pCkBAIC05OSw3ICs5OSw3IEBAIEFM
V0FZU19JTkxJTkUgTm9kZVZlY3RvciBDb250YWluZXJOb2RlOjoKICAgICBkaXNjb25uZWN0U3Vi
ZnJhbWVzSWZOZWVkZWQoKnRoaXMsIERlc2NlbmRhbnRzT25seSk7CiAKICAgICBXaWRnZXRIaWVy
YXJjaHlVcGRhdGVzU3VzcGVuc2lvblNjb3BlIHN1c3BlbmRXaWRnZXRIaWVyYXJjaHlVcGRhdGVz
OwotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2VydE5vRXZl
bnREaXNwYXRjaDsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3Jp
cHREaXNhbGxvd2VkU2NvcGU7CiAKICAgICBkb2N1bWVudCgpLm5vZGVDaGlsZHJlbldpbGxCZVJl
bW92ZWQoKnRoaXMpOwogCkBAIC0xMTksMTEgKzExOSwxMSBAQCBBTFdBWVNfSU5MSU5FIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVtb3ZlCiAgICAgUmVmPE5vZGU+IHByb3RlY3RlZENoaWxkVG9SZW1v
dmUoY2hpbGRUb1JlbW92ZSk7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
Y2hpbGRUb1JlbW92ZS5wYXJlbnROb2RlKCkgPT0gdGhpcyk7CiAgICAgewotICAgICAgICBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7
CisgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2Fs
bG93ZWRTY29wZTsKICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSgqdGhpcykud2lsbFJl
bW92ZUNoaWxkKGNoaWxkVG9SZW1vdmUpOwogICAgIH0KIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VS
SVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjpp
c0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkVG9SZW1vdmUpKTsKKyAgICBBU1NF
UlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFp
blRocmVhZDo6aXNFdmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShjaGlsZFRvUmVtb3ZlKSk7
CiAgICAgaWYgKHNvdXJjZSA9PSBDb250YWluZXJOb2RlOjpDaGlsZENoYW5nZVNvdXJjZTo6QVBJ
KSB7CiAgICAgICAgIGNoaWxkVG9SZW1vdmUubm90aWZ5TXV0YXRpb25PYnNlcnZlcnNOb2RlV2ls
bERldGFjaCgpOwogICAgICAgICBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhwcm90ZWN0ZWRD
aGlsZFRvUmVtb3ZlKTsKQEAgLTE0NSw3ICsxNDUsNyBAQCBBTFdBWVNfSU5MSU5FIGJvb2wgQ29u
dGFpbmVyTm9kZTo6cmVtb3ZlCiAgICAgQ2hpbGRDaGFuZ2UgY2hhbmdlOwogICAgIHsKICAgICAg
ICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNwZW5kV2lkZ2V0SGll
cmFyY2h5VXBkYXRlczsKLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5U
aHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2Nv
cGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKICAgICAgICAgZG9jdW1l
bnQoKS5ub2RlV2lsbEJlUmVtb3ZlZChjaGlsZFRvUmVtb3ZlKTsKIApAQCAtMTYzLDcgKzE2Myw3
IEBAIEFMV0FZU19JTkxJTkUgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmUKICAgICAgICAgY2hh
bmdlLnNvdXJjZSA9IHNvdXJjZTsKICAgICB9CiAKLSAgICAvLyBGSVhNRTogTW92ZSBjaGlsZHJl
bkNoYW5nZWQgaW50byBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24gYmxvY2suCisgICAgLy8gRklY
TUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gU2NyaXB0RGlzYWxsb3dlZFNjb3BlIGJsb2Nr
LgogICAgIGNoaWxkcmVuQ2hhbmdlZChjaGFuZ2UpOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0x
NzcsMTMgKzE3NywxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGV4ZWN1dGVOb2RlSW5z
CiB7CiAgICAgTm9kZVZlY3RvciBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0czsKICAg
ICB7Ci0gICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFzc2Vy
dE5vRXZlbnREaXNwYXRjaDsKKyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgICAgICBkb05vZGVJbnNlcnRpb24oKTsK
ICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZShjb250YWluZXJOb2RlKS5jaGlsZEFkZGVk
KGNoaWxkKTsKICAgICAgICAgcG9zdEluc2VydGlvbk5vdGlmaWNhdGlvblRhcmdldHMgPSBub3Rp
ZnlDaGlsZE5vZGVJbnNlcnRlZChjb250YWluZXJOb2RlLCBjaGlsZCk7CiAgICAgfQogCi0gICAg
Ly8gRklYTUU6IE1vdmUgY2hpbGRyZW5DaGFuZ2VkIGludG8gTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uIGJsb2NrLgorICAgIC8vIEZJWE1FOiBNb3ZlIGNoaWxkcmVuQ2hhbmdlZCBpbnRvIFNjcmlw
dERpc2FsbG93ZWRTY29wZSBibG9jay4KICAgICBpZiAocmVwbGFjZWRBbGxDaGlsZHJlbiA9PSBS
ZXBsYWNlZEFsbENoaWxkcmVuOjpZZXMpCiAgICAgICAgIGNvbnRhaW5lck5vZGUuY2hpbGRyZW5D
aGFuZ2VkKENvbnRhaW5lck5vZGU6OkNoaWxkQ2hhbmdlIHsgQ29udGFpbmVyTm9kZTo6QWxsQ2hp
bGRyZW5SZXBsYWNlZCwgbnVsbHB0ciwgbnVsbHB0ciwgc291cmNlIH0pOwogICAgIGVsc2UgewpA
QCAtMTk1LDcgKzE5NSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgZXhlY3V0ZU5vZGVJ
bnMKICAgICAgICAgfSk7CiAgICAgfQogCi0gICAgQVNTRVJUKE5vRXZlbnREaXNwYXRjaEFzc2Vy
dGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxk
KSk7CisgICAgQVNTRVJUKFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc0V2
ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7CiAgICAgZm9yIChhdXRvJiB0YXJn
ZXQgOiBwb3N0SW5zZXJ0aW9uTm90aWZpY2F0aW9uVGFyZ2V0cykKICAgICAgICAgdGFyZ2V0LT5k
aWRGaW5pc2hJbnNlcnRpbmdOb2RlKCk7CiAKQEAgLTIyOCw3ICsyMjgsNyBAQCB2b2lkIENvbnRh
aW5lck5vZGU6OnJlbW92ZURldGFjaGVkQ2hpbGRyCiAgICAgICAgICAgICBjaGlsZC0+dXBkYXRl
QW5jZXN0b3JDb25uZWN0ZWRTdWJmcmFtZUNvdW50Rm9yUmVtb3ZhbCgpOwogICAgIH0KICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gQVNTRVJUKCFhdHRhY2hlZCgpKSBoZXJlOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3ODAxCi0gICAgTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9u
OworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93
ZWRTY29wZTsKICAgICByZW1vdmVEZXRhY2hlZENoaWxkcmVuSW5Db250YWluZXIoKnRoaXMpOwog
fQogCkBAIC00MDMsNyArNDAzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gQ29udGFpbmVyTm9kZTo6
aW5zZXJ0QgogCiB2b2lkIENvbnRhaW5lck5vZGU6Omluc2VydEJlZm9yZUNvbW1vbihOb2RlJiBu
ZXh0Q2hpbGQsIE5vZGUmIG5ld0NoaWxkKQogewotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlv
bjo6SW5NYWluVGhyZWFkIGFzc2VydE5vRXZlbnREaXNwYXRjaDsKKyAgICBTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAKICAgICBBU1NF
UlQoIW5ld0NoaWxkLnBhcmVudE5vZGUoKSk7IC8vIFVzZSBpbnNlcnRCZWZvcmUgaWYgeW91IG5l
ZWQgdG8gaGFuZGxlIHJlcGFyZW50aW5nIChhbmQgd2FudCBET00gbXV0YXRpb24gZXZlbnRzKS4K
ICAgICBBU1NFUlQoIW5ld0NoaWxkLm5leHRTaWJsaW5nKCkpOwpAQCAtNDI4LDcgKzQyOCw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlQ29tbW9uKE4KIAogdm9pZCBDb250YWlu
ZXJOb2RlOjphcHBlbmRDaGlsZENvbW1vbihOb2RlJiBjaGlsZCkKIHsKLSAgICBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7CisgICAg
U2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3Bl
OwogCiAgICAgY2hpbGQuc2V0UGFyZW50Tm9kZSh0aGlzKTsKIApAQCAtNTY3LDcgKzU2Nyw3IEBA
IHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQmV0d2VlbihOb2RlKiAKIHsKICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFJlbW92ZURPTU5vZGUob2xkQ2hpbGQuZG9jdW1lbnQoKSwg
b2xkQ2hpbGQpOwogCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQg
YXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWlu
VGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKIAogICAgIEFTU0VSVChvbGRDaGlsZC5wYXJl
bnROb2RlKCkgPT0gdGhpcyk7CiAKQEAgLTc2Niw3ICs3NjYsNyBAQCBzdGF0aWMgdm9pZCBkaXNw
YXRjaENoaWxkSW5zZXJ0aW9uRXZlbnRzCiAgICAgaWYgKGNoaWxkLmlzSW5TaGFkb3dUcmVlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hB
bGxvd2VkSW5TdWJ0cmVlKGNoaWxkKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElD
QVRJT04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRj
aEFsbG93ZWRJblN1YnRyZWUoY2hpbGQpKTsKIAogICAgIFJlZlB0cjxOb2RlPiBjID0gJmNoaWxk
OwogICAgIFJlZjxEb2N1bWVudD4gZG9jdW1lbnQoY2hpbGQuZG9jdW1lbnQoKSk7CkBAIC03ODMs
NyArNzgzLDcgQEAgc3RhdGljIHZvaWQgZGlzcGF0Y2hDaGlsZEluc2VydGlvbkV2ZW50cwogCiBz
dGF0aWMgdm9pZCBkaXNwYXRjaENoaWxkUmVtb3ZhbEV2ZW50cyhSZWY8Tm9kZT4mIGNoaWxkKQog
ewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNwYXRjaEFz
c2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKGNo
aWxkKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlzYWxs
b3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzRXZlbnREaXNwYXRjaEFsbG93ZWRJblN1YnRyZWUo
Y2hpbGQpKTsKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZW1vdmVET01Ob2Rl
KGNoaWxkLT5kb2N1bWVudCgpLCBjaGlsZC5nZXQoKSk7CiAKICAgICBpZiAoY2hpbGQtPmlzSW5T
aGFkb3dUcmVlKCkpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZUFsZ29y
aXRobXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2Rl
QWxnb3JpdGhtcy5jcHAJKHJldmlzaW9uIDIyNjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlQWxnb3JpdGhtcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDcgKzI5LDcg
QEAKICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4
dEFyZWFFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCi0j
aW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlz
YWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhZG93Um9vdC5oIgogI2luY2x1ZGUgIlR5cGVk
RWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgogCkBAIC04OCw3ICs4OCw3IEBAIHN0YXRpYyB2
b2lkIG5vdGlmeU5vZGVJbnNlcnRlZEludG9UcmVlKEMKIAogTm9kZVZlY3RvciBub3RpZnlDaGls
ZE5vZGVJbnNlcnRlZChDb250YWluZXJOb2RlJiBwYXJlbnRPZkluc2VydGVkVHJlZSwgTm9kZSYg
bm9kZSkKIHsKLSAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhy
ZWFkOjppc0V2ZW50QWxsb3dlZCgpKTsKKyAgICBBU1NFUlQoIVNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7CiAKICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEluc2VydERPTU5vZGUobm9kZS5kb2N1bWVudCgpLCBub2RlKTsKIApA
QCAtMTUxLDggKzE1MSw4IEBAIHN0YXRpYyB2b2lkIG5vdGlmeU5vZGVSZW1vdmVkRnJvbVRyZWUo
Q28KIAogdm9pZCBub3RpZnlDaGlsZE5vZGVSZW1vdmVkKENvbnRhaW5lck5vZGUmIG9sZFBhcmVu
dE9mUmVtb3ZlZFRyZWUsIE5vZGUmIGNoaWxkKQogewotICAgIC8vIEFzc2VydCB0aGF0IHRoZSBj
YWxsZXIgb2YgdGhpcyBmdW5jdGlvbiBoYXMgYW4gaW5zdGFuY2Ugb2YgTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLgotICAgIEFTU0VSVCghaXNNYWluVGhyZWFkKCkgfHwgIU5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpKTsKKyAgICAvLyBBc3Nl
cnQgdGhhdCB0aGUgY2FsbGVyIG9mIHRoaXMgZnVuY3Rpb24gaGFzIGFuIGluc3RhbmNlIG9mIFNj
cmlwdERpc2FsbG93ZWRTY29wZS4KKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpIHx8ICFTY3Jp
cHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNTY3JpcHRBbGxvd2VkKCkpOwogICAg
IENvbnRhaW5lckNoaWxkUmVtb3ZhbFNjb3BlIHJlbW92YWxTY29wZShvbGRQYXJlbnRPZlJlbW92
ZWRUcmVlLCBjaGlsZCk7CiAKICAgICAvLyBUcmVlIHNjb3BlIGhhcyBjaGFuZ2VkIGlmIHRoZSBj
b250YWluZXIgbm9kZSBmcm9tIHdoaWNoICJub2RlIiBpcyByZW1vdmVkIGlzIGluIGEgZG9jdW1l
bnQgb3IgYSBzaGFkb3cgcm9vdC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gMjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI1LDcgKzEyNSw3IEBACiAjaW5jbHVkZSAiTmF2aWdhdGlvbkRpc2FibGVyLmgi
CiAjaW5jbHVkZSAiTmF2aWdhdGlvblNjaGVkdWxlci5oIgogI2luY2x1ZGUgIk5lc3RpbmdMZXZl
bEluY3JlbWVudGVyLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCisK
ICNpbmNsdWRlICJOb2RlSXRlcmF0b3IuaCIKICNpbmNsdWRlICJOb2RlUmFyZURhdGEuaCIKICNp
bmNsdWRlICJOb2RlV2l0aEluZGV4LmgiCkBAIC0xNjYsNiArMTY2LDcgQEAKICNpbmNsdWRlICJT
Y2hlbWVSZWdpc3RyeS5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKICNpbmNsdWRl
ICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0UnVubmVy
LmgiCiAjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgpAQCAtMTgwNiw3ICsxODA3LDcgQEAg
dm9pZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKFJlc29sdmVTdHlsZQogICAgIC8vIGhpdHMgYSBu
dWxsLWRlcmVmZXJlbmNlIGR1ZSB0byBzZWN1cml0eSBjb2RlIGFsd2F5cyBhc3N1bWluZyB0aGUg
ZG9jdW1lbnQgaGFzIGEgU2VjdXJpdHlPcmlnaW4uCiAKICAgICB7Ci0gICAgICAgIE5vRXZlbnRE
aXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIG5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjsK
KyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxs
b3dlZFNjb3BlOwogICAgICAgICBzdHlsZVNjb3BlKCkuZmx1c2hQZW5kaW5nVXBkYXRlKCk7CiAg
ICAgICAgIGZyYW1lVmlldy53aWxsUmVjYWxjU3R5bGUoKTsKICAgICB9CkBAIC0xODE3LDcgKzE4
MTgsNyBAQCB2b2lkIERvY3VtZW50OjpyZXNvbHZlU3R5bGUoUmVzb2x2ZVN0eWxlCiAgICAgewog
ICAgICAgICBTdHlsZTo6UG9zdFJlc29sdXRpb25DYWxsYmFja0Rpc2FibGVyIGRpc2FibGVyKCp0
aGlzKTsKICAgICAgICAgV2lkZ2V0SGllcmFyY2h5VXBkYXRlc1N1c3BlbnNpb25TY29wZSBzdXNw
ZW5kV2lkZ2V0SGllcmFyY2h5VXBkYXRlczsKLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOjpJbk1haW5UaHJlYWQgbm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOworICAgICAgICBTY3Jp
cHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAK
ICAgICAgICAgbV9pblN0eWxlUmVjYWxjID0gdHJ1ZTsKIApAQCAtMTkzNiw3ICsxOTM3LDcgQEAg
Ym9vbCBEb2N1bWVudDo6bmVlZHNTdHlsZVJlY2FsYygpIGNvbnN0CiAKIGlubGluZSBib29sIHN0
YXRpYyBpc1NhZmVUb1VwZGF0ZVN0eWxlT3JMYXlvdXQoRnJhbWVWaWV3KiBmcmFtZVZpZXcpCiB7
Ci0gICAgYm9vbCBpc1NhZmVUb0V4ZWN1dGVTY3JpcHQgPSBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b246OkluTWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKTsKKyAgICBib29sIGlzU2FmZVRvRXhl
Y3V0ZVNjcmlwdCA9IFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Njcmlw
dEFsbG93ZWQoKTsKICAgICBib29sIGlzSW5GcmFtZUZsYXR0ZW5pbmcgPSBmcmFtZVZpZXcgJiYg
ZnJhbWVWaWV3LT5pc0luQ2hpbGRGcmFtZVdpdGhGcmFtZUZsYXR0ZW5pbmcoKTsKICAgICByZXR1
cm4gaXNTYWZlVG9FeGVjdXRlU2NyaXB0IHx8IGlzSW5GcmFtZUZsYXR0ZW5pbmcgfHwgIWlzSW5X
ZWJQcm9jZXNzKCk7CiB9CkBAIC0xOTQ1LDcgKzE5NDYsNyBAQCBib29sIERvY3VtZW50Ojp1cGRh
dGVTdHlsZUlmTmVlZGVkKCkKIHsKICAgICBSZWZQdHI8RnJhbWVWaWV3PiBmcmFtZVZpZXcgPSB2
aWV3KCk7CiAgICAgewotICAgICAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRo
cmVhZCBub0V2ZW50RGlzcGF0Y2hBc3NlcnRpb247CisgICAgICAgIFNjcmlwdERpc2FsbG93ZWRT
Y29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgQVNTRVJUKCFmcmFtZVZpZXcgfHwgIWZyYW1lVmll
dy0+aXNQYWludGluZygpKTsKIApAQCAtNDEyMSw3ICs0MTIyLDcgQEAgdm9pZCBEb2N1bWVudDo6
dXBkYXRlUmFuZ2VzQWZ0ZXJDaGlsZHJlbgogCiB2b2lkIERvY3VtZW50Ojpub2RlQ2hpbGRyZW5X
aWxsQmVSZW1vdmVkKENvbnRhaW5lck5vZGUmIGNvbnRhaW5lcikKIHsKLSAgICBBU1NFUlQoIU5v
RXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpKTsK
KyAgICBBU1NFUlQoIVNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1Njcmlw
dEFsbG93ZWQoKSk7CiAKICAgICByZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShjb250YWluZXIs
IHRydWUgLyogYW1vbmdDaGlsZHJlbk9ubHkgKi8pOwogICAgIHJlbW92ZUZvY3VzTmF2aWdhdGlv
bk5vZGVPZlN1YnRyZWUoY29udGFpbmVyLCB0cnVlIC8qIGFtb25nQ2hpbGRyZW5Pbmx5ICovKTsK
QEAgLTQxNTQsNyArNDE1NSw3IEBAIHZvaWQgRG9jdW1lbnQ6Om5vZGVDaGlsZHJlbldpbGxCZVJl
bW92ZWQKIAogdm9pZCBEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSYgbm9kZSkKIHsK
LSAgICBBU1NFUlQoIU5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2
ZW50QWxsb3dlZCgpKTsKKyAgICBBU1NFUlQoIVNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWlu
VGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7CiAKICAgICByZW1vdmVGb2N1c2VkTm9kZU9mU3Vi
dHJlZShub2RlKTsKICAgICByZW1vdmVGb2N1c05hdmlnYXRpb25Ob2RlT2ZTdWJ0cmVlKG5vZGUp
OwpAQCAtNDI5OCw3ICs0Mjk5LDcgQEAgRXZlbnRMaXN0ZW5lciogRG9jdW1lbnQ6OmdldFdpbmRv
d0F0dHJpYgogCiB2b2lkIERvY3VtZW50OjpkaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50JiBldmVu
dCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBM
SUNBVElPTihOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZDo6aXNFdmVudEFs
bG93ZWQoKSk7CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlz
YWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBpZiAo
IW1fZG9tV2luZG93KQogICAgICAgICByZXR1cm47CiAgICAgbV9kb21XaW5kb3ctPmRpc3BhdGNo
RXZlbnQoZXZlbnQsIHRhcmdldCk7CkBAIC00MzA2LDcgKzQzMDcsNyBAQCB2b2lkIERvY3VtZW50
OjpkaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50CiAKIHZvaWQgRG9jdW1lbnQ6OmRpc3BhdGNoV2lu
ZG93TG9hZEV2ZW50KCkKIHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihO
b0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKSk7
CisgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlzYWxsb3dlZFNj
b3BlOjpJbk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBpZiAoIW1fZG9tV2lu
ZG93KQogICAgICAgICByZXR1cm47CiAgICAgbV9kb21XaW5kb3ctPmRpc3BhdGNoTG9hZEV2ZW50
KCk7CkBAIC01MTQxLDcgKzUxNDIsNyBAQCB2b2lkIERvY3VtZW50OjphcHBseVBlbmRpbmdYU0xU
cmFuc2Zvcm1zCiAgICAgICAgIHJldHVybjsKIAogICAgIG1faGFzUGVuZGluZ1hTTFRyYW5zZm9y
bXMgPSBmYWxzZTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihOb0V2ZW50
RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKSk7CisgICAg
QVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJ
bk1haW5UaHJlYWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBmb3IgKGF1dG8mIHByb2Nlc3Np
bmdJbnN0cnVjdGlvbiA6IHN0eWxlU2NvcGUoKS5jb2xsZWN0WFNMVHJhbnNmb3JtcygpKSB7CiAg
ICAgICAgIEFTU0VSVChwcm9jZXNzaW5nSW5zdHJ1Y3Rpb24tPmlzWFNMKCkpOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjYyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDcgKzc1LDYgQEAKICNpbmNsdWRl
ICJNYWluRnJhbWUuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVySW50ZXJlc3RHcm91cC5o
IgogI2luY2x1ZGUgIk11dGF0aW9uUmVjb3JkLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiTm9kZVJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiUGxh
dGZvcm1XaGVlbEV2ZW50LmgiCiAjaW5jbHVkZSAiUG9pbnRlckxvY2tDb250cm9sbGVyLmgiCkBA
IC05MSw2ICs5MCw3IEBACiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCiAjaW5jbHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2Fs
bG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcm9sbExhdGNoaW5nU3RhdGUuaCIKICNpbmNsdWRl
ICJTZWxlY3RvclF1ZXJ5LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKQEAgLTE3NzQsNyArMTc3
NCw3IEBAIHZvaWQgRWxlbWVudDo6YWRkU2hhZG93Um9vdChSZWY8U2hhZG93Um8KIAogICAgIFNo
YWRvd1Jvb3QmIHNoYWRvd1Jvb3QgPSBuZXdTaGFkb3dSb290OwogICAgIHsKLSAgICAgICAgTm9F
dmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgbm9FdmVudERpc3BhdGNoQXNzZXJ0
aW9uOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHRE
aXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIGlmIChyZW5kZXJlcigpKQogICAgICAgICAgICAgUmVu
ZGVyVHJlZVVwZGF0ZXI6OnRlYXJEb3duUmVuZGVyZXJzKCp0aGlzKTsKIApAQCAtMjE0OSw3ICsy
MTQ5LDcgQEAgdm9pZCBFbGVtZW50OjphdHRhY2hBdHRyaWJ1dGVOb2RlSWZOZWVkZQogICAgIGlm
IChhdHRyTm9kZS5vd25lckVsZW1lbnQoKSA9PSB0aGlzKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlz
cGF0Y2g7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlz
YWxsb3dlZFNjb3BlOwogCiAgICAgYXR0ck5vZGUuYXR0YWNoVG9FbGVtZW50KCp0aGlzKTsKICAg
ICBlbnN1cmVBdHRyTm9kZUxpc3RGb3JFbGVtZW50KCp0aGlzKS5hcHBlbmQoJmF0dHJOb2RlKTsK
QEAgLTIxNjcsNyArMjE2Nyw3IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxBdHRyPj4gRWxlbWVudDo6
c2V0QXQKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEluVXNlQXR0cmlidXRlRXJyb3IgfTsK
IAogICAgIHsKLSAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQg
YXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6Oklu
TWFpblRocmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIHN5bmNocm9uaXplQWxs
QXR0cmlidXRlcygpOwogICAgIH0KIApAQCAtMjIxOCw3ICsyMjE4LDcgQEAgRXhjZXB0aW9uT3I8
UmVmUHRyPEF0dHI+PiBFbGVtZW50OjpzZXRBdAogICAgIGF1dG8gYXR0ck5vZGVWYWx1ZSA9IGF0
dHJOb2RlLnZhbHVlKCk7CiAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgIHsKLSAgICAgICAg
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgYXNzZXJ0Tm9FdmVudERpc3Bh
dGNoOworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHRE
aXNhbGxvd2VkU2NvcGU7CiAgICAgICAgIHN5bmNocm9uaXplQWxsQXR0cmlidXRlcygpOwogICAg
ICAgICBhdXRvJiBlbGVtZW50RGF0YSA9IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCk7CiAKQEAg
LTI0NzUsMTQgKzI0NzUsMTQgQEAgdm9pZCBFbGVtZW50OjpibHVyKCkKIAogdm9pZCBFbGVtZW50
OjpkaXNwYXRjaEZvY3VzSW5FdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUmVm
UHRyPEVsZW1lbnQ+JiYgb2xkRm9jdXNlZEVsZW1lbnQpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQ6
OmlzRXZlbnRBbGxvd2VkKCkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
KFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSk7
CiAgICAgQVNTRVJUKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuZm9jdXNpbkV2ZW50IHx8IGV2
ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuRE9NRm9jdXNJbkV2ZW50KTsKICAgICBkaXNwYXRjaFNj
b3BlZEV2ZW50KEZvY3VzRXZlbnQ6OmNyZWF0ZShldmVudFR5cGUsIHRydWUsIGZhbHNlLCBkb2N1
bWVudCgpLmRlZmF1bHRWaWV3KCksIDAsIFdURk1vdmUob2xkRm9jdXNlZEVsZW1lbnQpKSk7CiB9
CiAKIHZvaWQgRWxlbWVudDo6ZGlzcGF0Y2hGb2N1c091dEV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBSZWZQdHI8RWxlbWVudD4mJiBuZXdGb2N1c2VkRWxlbWVudCkKIHsKLSAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b246OkluTWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKSk7CisgICAgQVNTRVJUX1dJVEhfU0VD
VVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQ6Omlz
U2NyaXB0QWxsb3dlZCgpKTsKICAgICBBU1NFUlQoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5m
b2N1c291dEV2ZW50IHx8IGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuRE9NRm9jdXNPdXRFdmVu
dCk7CiAgICAgZGlzcGF0Y2hTY29wZWRFdmVudChGb2N1c0V2ZW50OjpjcmVhdGUoZXZlbnRUeXBl
LCB0cnVlLCBmYWxzZSwgZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCAwLCBXVEZNb3ZlKG5ld0Zv
Y3VzZWRFbGVtZW50KSkpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVy
YXRvckFzc2VydGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCShyZXZpc2lvbiAyMjYyNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNz
ZXJ0aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGNv
bnN0IERvY3VtZW50KiBtX2RvY3VtZW50OwogICAgIHVpbnQ2NF90IG1faW5pdGlhbERPTVRyZWVW
ZXJzaW9uOwotICAgIHN0ZDo6b3B0aW9uYWw8Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uPiBtX2V2
ZW50RGlzcGF0Y2hBc3NlcnRpb247CisgICAgc3RkOjpvcHRpb25hbDxTY3JpcHREaXNhbGxvd2Vk
U2NvcGU+IG1fZXZlbnREaXNwYXRjaEFzc2VydGlvbjsKIH07CiAKIC8vIEZJWE1FOiBObyByZWFs
IHBvaW50IGluIGRvaW5nIHRoZXNlIGFzIGlubGluZXM7IHRoZXkgYXJlIGZvciBkZWJ1Z2dpbmcg
YW5kIHdlIHVzdWFsbHkgdHVybiBvZmYgaW5saW5pbmcgaW4gZGVidWcgYnVpbGRzLgpAQCAtNDks
NyArNDksNyBAQCBpbmxpbmUgRWxlbWVudEl0ZXJhdG9yQXNzZXJ0aW9uczo6RWxlbWVuCiAgICAg
LCBtX2luaXRpYWxET01UcmVlVmVyc2lvbihmaXJzdCA/IG1fZG9jdW1lbnQtPmRvbVRyZWVWZXJz
aW9uKCkgOiAwKQogewogICAgIGlmIChmaXJzdCkKLSAgICAgICAgbV9ldmVudERpc3BhdGNoQXNz
ZXJ0aW9uID0gTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKCk7CisgICAgICAgIG1fZXZlbnREaXNw
YXRjaEFzc2VydGlvbiA9IFNjcmlwdERpc2FsbG93ZWRTY29wZSgpOwogfQogCiBpbmxpbmUgYm9v
bCBFbGVtZW50SXRlcmF0b3JBc3NlcnRpb25zOjpkb21UcmVlSGFzTXV0YXRlZCgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRXZlbnREaXNwYXRjaGVyLmNwcAkocmV2aXNpb24gMjI2MjQx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50RGlzcGF0Y2hlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTM3LDggKzM3LDggQEAKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFp
bkZyYW1lLmgiCiAjaW5jbHVkZSAiTW91c2VFdmVudC5oIgotI2luY2x1ZGUgIk5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlNjb3BlZEV2ZW50UXVldWUuaCIKKyNpbmNsdWRl
ICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJTaGFkb3dSb290LmgiCiAjaW5j
bHVkZSAiVGV4dEV2ZW50LmgiCiAjaW5jbHVkZSAiVG91Y2hFdmVudC5oIgpAQCAtMTMwLDcgKzEz
MCw3IEBAIHN0YXRpYyBib29sIHNob3VsZFN1cHByZXNzRXZlbnREaXNwYXRjaEkKIAogdm9pZCBF
dmVudERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnQoTm9kZSYgbm9kZSwgRXZlbnQmIGV2ZW50KQog
ewotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNwYXRjaEFz
c2VydGlvbjo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKG5v
ZGUpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxv
d2VkU2NvcGU6OkluTWFpblRocmVhZDo6aXNFdmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZShu
b2RlKSk7CiAgICAgCiAgICAgTE9HKEV2ZW50cywgIkV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hF
dmVudCAlcyBvbiBub2RlICVzIiwgZXZlbnQudHlwZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
IG5vZGUubm9kZU5hbWUoKS51dGY4KCkuZGF0YSgpKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
ZG9tL0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCShyZXZpc2lvbiAyMjYyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgi
CiAjaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIldlYktpdEFuaW1hdGlvbkV2ZW50Lmgi
CiAjaW5jbHVkZSAiV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmgiCiAjaW5jbHVkZSA8d3RmL01haW5U
aHJlYWQuaD4KQEAgLTIxNSw3ICsyMTUsNyBAQCBzdGF0aWMgY29uc3QgQXRvbWljU3RyaW5nJiBs
ZWdhY3lUeXBlKGNvCiAKIHZvaWQgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVu
dCYgZXZlbnQpCiB7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uOjppc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihTY3JpcHREaXNhbGxvd2VkU2NvcGU6Omlz
RXZlbnRBbGxvd2VkSW5NYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChldmVudC5pc0luaXRpYWxp
emVkKCkpOwogCiAgICAgYXV0byogZGF0YSA9IGV2ZW50VGFyZ2V0RGF0YSgpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZG9tL05vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaAkocmV2aXNpb24g
MjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL05vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5o
CShub25leGlzdGVudCkKQEAgLTEsMTU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKLSAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiQ29udGFpbmVyTm9kZS5oIgotI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+Ci0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uIHsKLXB1Ymxp
YzoKLSAgICAvLyBUaGlzIHZhcmlhbnQgaXMgZXhwZW5zaXZlLiBVc2UgTm9FdmVudERpc3BhdGNo
QXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgd2hlbmV2ZXIgcG9zc2libGUuCi0gICAgTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghaXNNYWluVGhyZWFkKCkpCi0g
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICsrc19jb3VudDsKLSAgICB9Ci0KLSAgICBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oY29uc3QgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uJikKLSAg
ICAgICAgOiBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQotICAgIHsKLSAgICB9Ci0KLSAgICB+
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmICghaXNNYWluVGhy
ZWFkKCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIEFTU0VSVChzX2NvdW50KTsKLSAg
ICAgICAgc19jb3VudC0tOwotICAgIH0KLQotICAgIHN0YXRpYyBib29sIGlzRXZlbnRBbGxvd2Vk
SW5NYWluVGhyZWFkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhaXNNYWluVGhyZWFkKCkgfHwg
IXNfY291bnQ7Ci0gICAgfQotCi0gICAgY2xhc3MgSW5NYWluVGhyZWFkIHsKLSAgICBwdWJsaWM6
Ci0gICAgICAgIEluTWFpblRocmVhZCgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7Ci0gICAgICAgICAgICArK3NfY291bnQ7Ci0gICAgICAgIH0KLQotICAg
ICAgICB+SW5NYWluVGhyZWFkKCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICAgICAgICAgIEFTU0VSVChzX2NvdW50KTsKLSAgICAgICAgICAgIC0t
c19jb3VudDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIERvbid0IGVuYWJsZSB0aGlzIGFzc2Vy
dGlvbiBpbiByZWxlYXNlIHNpbmNlIGl0J3MgTyhuKS4KLSAgICAgICAgLy8gUmVsZWFzZSBhc3Nl
cnRzIGluIGNhbkV4ZWN1dGVTY3JpcHQgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIHNlY3VyaXR5
IGRlZmVuc2UgcHVycG9zZXMuCi0gICAgICAgIHN0YXRpYyBib29sIGlzRXZlbnREaXNwYXRjaEFs
bG93ZWRJblN1YnRyZWUoTm9kZSYgbm9kZSkKLSAgICAgICAgewotI2lmICFBU1NFUlRfRElTQUJM
RUQgfHwgRU5BQkxFKFNFQ1VSSVRZX0FTU0VSVElPTlMpCi0gICAgICAgICAgICByZXR1cm4gaXNF
dmVudEFsbG93ZWQoKSB8fCBFdmVudEFsbG93ZWRTY29wZTo6aXNBbGxvd2VkTm9kZShub2RlKTsK
LSNlbHNlCi0gICAgICAgICAgICBVTlVTRURfUEFSQU0obm9kZSk7Ci0gICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKLSNlbmRpZgotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdGljIGJvb2wgaXNFdmVu
dEFsbG93ZWQoKQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgICAgICAgICAgcmV0dXJuICFzX2NvdW50OwotICAgICAgICB9Ci0gICAgfTsKLSAgICAK
LSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgY2xhc3MgRXZlbnRBbGxvd2VkU2NvcGUgewotICAg
IHB1YmxpYzoKLSAgICAgICAgZXhwbGljaXQgRXZlbnRBbGxvd2VkU2NvcGUoQ29udGFpbmVyTm9k
ZSYgdXNlckFnZW50Q29udGVudFJvb3QpCi0gICAgICAgICAgICA6IG1fZXZlbnRBbGxvd2VkVHJl
ZVJvb3QodXNlckFnZW50Q29udGVudFJvb3QpCi0gICAgICAgICAgICAsIG1fcHJldmlvdXNTY29w
ZShzX2N1cnJlbnRTY29wZSkKLSAgICAgICAgewotICAgICAgICAgICAgc19jdXJyZW50U2NvcGUg
PSB0aGlzOwotICAgICAgICB9Ci0KLSAgICAgICAgfkV2ZW50QWxsb3dlZFNjb3BlKCkKLSAgICAg
ICAgewotICAgICAgICAgICAgc19jdXJyZW50U2NvcGUgPSBtX3ByZXZpb3VzU2NvcGU7Ci0gICAg
ICAgIH0KLQotICAgICAgICBzdGF0aWMgYm9vbCBpc0FsbG93ZWROb2RlKE5vZGUmIG5vZGUpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzX2N1cnJlbnRTY29wZSAmJiBzX2N1cnJlbnRT
Y29wZS0+aXNBbGxvd2VkTm9kZUludGVybmFsKG5vZGUpOwotICAgICAgICB9Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBib29sIGlzQWxsb3dlZE5vZGVJbnRlcm5hbChOb2RlJiBub2RlKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbV9ldmVudEFsbG93ZWRUcmVlUm9vdC0+Y29udGFp
bnMoJm5vZGUpIHx8IChtX3ByZXZpb3VzU2NvcGUgJiYgbV9wcmV2aW91c1Njb3BlLT5pc0FsbG93
ZWROb2RlSW50ZXJuYWwobm9kZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVmPENvbnRhaW5l
ck5vZGU+IG1fZXZlbnRBbGxvd2VkVHJlZVJvb3Q7Ci0KLSAgICAgICAgRXZlbnRBbGxvd2VkU2Nv
cGUqIG1fcHJldmlvdXNTY29wZTsKLSAgICAgICAgc3RhdGljIEV2ZW50QWxsb3dlZFNjb3BlKiBz
X2N1cnJlbnRTY29wZTsKLSAgICB9OwotI2Vsc2UKLSAgICBjbGFzcyBFdmVudEFsbG93ZWRTY29w
ZSB7Ci0gICAgcHVibGljOgotICAgICAgICBleHBsaWNpdCBFdmVudEFsbG93ZWRTY29wZShDb250
YWluZXJOb2RlJikgeyB9Ci0gICAgICAgIHN0YXRpYyBib29sIGlzQWxsb3dlZE5vZGUoTm9kZSYp
IHsgcmV0dXJuIHRydWU7IH0KLSAgICB9OwotI2VuZGlmCi0KLSAgICAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgY2xhc3Mgb25jZSB0aGUgc3luYyBsYXlvdXQgaW5zaWRlIFNWR0ltYWdlOjpkcmF3IGlz
IHJlbW92ZWQKLSAgICAvLyBhbmQgcmVmYWN0b3JlZCB0aGUgY29kZSBpbiBSZW5kZXJGcmFtZUJh
c2U6OnBlcmZvcm1MYXlvdXRXaXRoRmxhdHRlbmluZy4KLSAgICBjbGFzcyBEaXNhYmxlQXNzZXJ0
aW9uc0luU2NvcGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgRGlzYWJsZUFzc2VydGlvbnNJblNj
b3BlKCkKLSAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAg
ICAgICAgICAgIHN0ZDo6c3dhcChzX2NvdW50LCBtX29yaWdpbmFsQ291bnQpOwotICAgICAgICB9
Ci0KLSAgICAgICAgfkRpc2FibGVBc3NlcnRpb25zSW5TY29wZSgpCi0gICAgICAgIHsKLSAgICAg
ICAgICAgIHNfY291bnQgPSBtX29yaWdpbmFsQ291bnQ7Ci0gICAgICAgIH0KLSAgICBwcml2YXRl
OgotICAgICAgICB1bnNpZ25lZCBtX29yaWdpbmFsQ291bnQgeyAwIH07Ci0gICAgfTsKLQotcHJp
dmF0ZToKLSAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdW5zaWduZWQgc19jb3VudDsKLX07Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAJKHJldmlzaW9uIDIy
NjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNyArNTIsNiBAQAogI2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCiAjaW5jbHVkZSAiTXV0YXRpb25FdmVudC5oIgotI2luY2x1ZGUgIk5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIk5vZGVSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
IlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgogI2luY2x1ZGUgIlByb2dyZXNzRXZlbnQuaCIKQEAg
LTYyLDYgKzYxLDcgQEAKICNpbmNsdWRlICJSZW5kZXJUZXh0Q29udHJvbC5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAi
U2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAjaW5j
bHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgpA
QCAtMjMzNSw3ICsyMzM1LDcgQEAgdm9pZCBOb2RlOjpkaXNwYXRjaFN1YnRyZWVNb2RpZmllZEV2
ZW50KAogICAgIGlmIChpc0luU2hhZG93VHJlZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBB
U1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246
OkluTWFpblRocmVhZDo6aXNFdmVudERpc3BhdGNoQWxsb3dlZEluU3VidHJlZSgqdGhpcykpOwor
ICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKCp0aGlzKSk7
CiAKICAgICBpZiAoIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlKERvY3VtZW50OjpET01TVUJU
UkVFTU9ESUZJRURfTElTVEVORVIpKQogICAgICAgICByZXR1cm47CkBAIC0yMzQ4LDcgKzIzNDgs
NyBAQCB2b2lkIE5vZGU6OmRpc3BhdGNoU3VidHJlZU1vZGlmaWVkRXZlbnQoCiAKIHZvaWQgTm9k
ZTo6ZGlzcGF0Y2hET01BY3RpdmF0ZUV2ZW50KEV2ZW50JiB1bmRlcmx5aW5nQ2xpY2tFdmVudCkK
IHsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb246OkluTWFpblRocmVhZDo6aXNFdmVudEFsbG93ZWQoKSk7CisgICAgQVNTRVJUX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQ6OmlzU2NyaXB0QWxsb3dlZCgpKTsKICAgICBpbnQgZGV0YWlsID0gaXM8VUlFdmVudD4odW5k
ZXJseWluZ0NsaWNrRXZlbnQpID8gZG93bmNhc3Q8VUlFdmVudD4odW5kZXJseWluZ0NsaWNrRXZl
bnQpLmRldGFpbCgpIDogMDsKICAgICBhdXRvIGV2ZW50ID0gVUlFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5ET01BY3RpdmF0ZUV2ZW50LCB0cnVlLCB0cnVlLCBkb2N1bWVudCgpLmRlZmF1bHRW
aWV3KCksIGRldGFpbCk7CiAgICAgZXZlbnQtPnNldFVuZGVybHlpbmdFdmVudCgmdW5kZXJseWlu
Z0NsaWNrRXZlbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRT
Y29wZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHREaXNhbGxvd2Vk
U2NvcGUuaAkocmV2aXNpb24gMjI2MjQxKQkoZnJvbSBTb3VyY2UvV2ViQ29yZS9kb20vTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uLmg6MjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dERpc2FsbG93ZWRTY29wZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAg
ICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiBDb3B5cmln
aHQgKEMpIDIwMDQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkNvbnRhaW5lck5vZGUuaCIKKyNpbmNsdWRlIDx3dGYvTWFp
blRocmVhZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIE5vRXZlbnREaXNwYXRj
aEFzc2VydGlvbiB7CitwdWJsaWM6CisgICAgLy8gVGhpcyB2YXJpYW50IGlzIGV4cGVuc2l2ZS4g
VXNlIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIHdoZW5ldmVyIHBvc3Np
YmxlLgorICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCisgICAgeworICAgICAgICBpZiAo
IWlzTWFpblRocmVhZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICArK3NfY291bnQ7
CisgICAgfQorCisgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKGNvbnN0IE5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbiYpCisgICAgICAgIDogTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uKCkKKyAg
ICB7CisgICAgfQorCisgICAgfk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCisgICAgeworICAg
ICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBB
U1NFUlQoc19jb3VudCk7CisgICAgICAgIHNfY291bnQtLTsKKyAgICB9CisKKyAgICBzdGF0aWMg
Ym9vbCBpc0V2ZW50QWxsb3dlZEluTWFpblRocmVhZCgpCisgICAgeworICAgICAgICByZXR1cm4g
IWlzTWFpblRocmVhZCgpIHx8ICFzX2NvdW50OworICAgIH0KKworICAgIGNsYXNzIEluTWFpblRo
cmVhZCB7CisgICAgcHVibGljOgorICAgICAgICBJbk1haW5UaHJlYWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgICAgICAgICAgKytzX2NvdW50
OworICAgICAgICB9CisKKyAgICAgICAgfkluTWFpblRocmVhZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICBBU1NFUlQoc19jb3Vu
dCk7CisgICAgICAgICAgICAtLXNfY291bnQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBEb24n
dCBlbmFibGUgdGhpcyBhc3NlcnRpb24gaW4gcmVsZWFzZSBzaW5jZSBpdCdzIE8obikuCisgICAg
ICAgIC8vIFJlbGVhc2UgYXNzZXJ0cyBpbiBjYW5FeGVjdXRlU2NyaXB0IHNob3VsZCBiZSBzdWZm
aWNpZW50IGZvciBzZWN1cml0eSBkZWZlbnNlIHB1cnBvc2VzLgorICAgICAgICBzdGF0aWMgYm9v
bCBpc0V2ZW50RGlzcGF0Y2hBbGxvd2VkSW5TdWJ0cmVlKE5vZGUmIG5vZGUpCisgICAgICAgIHsK
KyNpZiAhQVNTRVJUX0RJU0FCTEVEIHx8IEVOQUJMRShTRUNVUklUWV9BU1NFUlRJT05TKQorICAg
ICAgICAgICAgcmV0dXJuIGlzRXZlbnRBbGxvd2VkKCkgfHwgRXZlbnRBbGxvd2VkU2NvcGU6Omlz
QWxsb3dlZE5vZGUobm9kZSk7CisjZWxzZQorICAgICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGUp
OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAg
IHN0YXRpYyBib29sIGlzRXZlbnRBbGxvd2VkKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICAgICAgICAgIHJldHVybiAhc19jb3VudDsKKyAgICAg
ICAgfQorICAgIH07CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGNsYXNzIEV2ZW50
QWxsb3dlZFNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGV4cGxpY2l0IEV2ZW50QWxsb3dl
ZFNjb3BlKENvbnRhaW5lck5vZGUmIHVzZXJBZ2VudENvbnRlbnRSb290KQorICAgICAgICAgICAg
OiBtX2V2ZW50QWxsb3dlZFRyZWVSb290KHVzZXJBZ2VudENvbnRlbnRSb290KQorICAgICAgICAg
ICAgLCBtX3ByZXZpb3VzU2NvcGUoc19jdXJyZW50U2NvcGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHNfY3VycmVudFNjb3BlID0gdGhpczsKKyAgICAgICAgfQorCisgICAgICAgIH5FdmVudEFs
bG93ZWRTY29wZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHNfY3VycmVudFNjb3BlID0gbV9w
cmV2aW91c1Njb3BlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGJvb2wgaXNBbGxvd2Vk
Tm9kZShOb2RlJiBub2RlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gc19jdXJyZW50
U2NvcGUgJiYgc19jdXJyZW50U2NvcGUtPmlzQWxsb3dlZE5vZGVJbnRlcm5hbChub2RlKTsKKyAg
ICAgICAgfQorCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBpc0FsbG93ZWROb2RlSW50ZXJu
YWwoTm9kZSYgbm9kZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZXZlbnRBbGxv
d2VkVHJlZVJvb3QtPmNvbnRhaW5zKCZub2RlKSB8fCAobV9wcmV2aW91c1Njb3BlICYmIG1fcHJl
dmlvdXNTY29wZS0+aXNBbGxvd2VkTm9kZUludGVybmFsKG5vZGUpKTsKKyAgICAgICAgfQorCisg
ICAgICAgIFJlZjxDb250YWluZXJOb2RlPiBtX2V2ZW50QWxsb3dlZFRyZWVSb290OworCisgICAg
ICAgIEV2ZW50QWxsb3dlZFNjb3BlKiBtX3ByZXZpb3VzU2NvcGU7CisgICAgICAgIHN0YXRpYyBF
dmVudEFsbG93ZWRTY29wZSogc19jdXJyZW50U2NvcGU7CisgICAgfTsKKyNlbHNlCisgICAgY2xh
c3MgRXZlbnRBbGxvd2VkU2NvcGUgeworICAgIHB1YmxpYzoKKyAgICAgICAgZXhwbGljaXQgRXZl
bnRBbGxvd2VkU2NvcGUoQ29udGFpbmVyTm9kZSYpIHsgfQorICAgICAgICBzdGF0aWMgYm9vbCBp
c0FsbG93ZWROb2RlKE5vZGUmKSB7IHJldHVybiB0cnVlOyB9CisgICAgfTsKKyNlbmRpZgorCisg
ICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGNsYXNzIG9uY2UgdGhlIHN5bmMgbGF5b3V0IGluc2lk
ZSBTVkdJbWFnZTo6ZHJhdyBpcyByZW1vdmVkCisgICAgLy8gYW5kIHJlZmFjdG9yZWQgdGhlIGNv
ZGUgaW4gUmVuZGVyRnJhbWVCYXNlOjpwZXJmb3JtTGF5b3V0V2l0aEZsYXR0ZW5pbmcuCisgICAg
Y2xhc3MgRGlzYWJsZUFzc2VydGlvbnNJblNjb3BlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIERp
c2FibGVBc3NlcnRpb25zSW5TY29wZSgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgICAgICAgICBzdGQ6OnN3YXAoc19jb3VudCwgbV9vcmlnaW5h
bENvdW50KTsKKyAgICAgICAgfQorCisgICAgICAgIH5EaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUo
KQorICAgICAgICB7CisgICAgICAgICAgICBzX2NvdW50ID0gbV9vcmlnaW5hbENvdW50OworICAg
ICAgICB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgdW5zaWduZWQgbV9vcmlnaW5hbENvdW50IHsg
MCB9OworICAgIH07CisKK3ByaXZhdGU6CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHVuc2ln
bmVkIHNfY291bnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdERpc2FsbG93ZWRTY29wZS5oCShyZXZpc2lvbiAyMjYyNDEpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI4LDIyICsyOCwyMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIE5v
RXZlbnREaXNwYXRjaEFzc2VydGlvbiB7CitjbGFzcyBTY3JpcHREaXNhbGxvd2VkU2NvcGUgewog
cHVibGljOgotICAgIC8vIFRoaXMgdmFyaWFudCBpcyBleHBlbnNpdmUuIFVzZSBOb0V2ZW50RGlz
cGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCB3aGVuZXZlciBwb3NzaWJsZS4KLSAgICBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24oKQorICAgIC8vIFRoaXMgdmFyaWFudCBpcyBleHBlbnNpdmUu
IFVzZSBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCB3aGVuZXZlciBwb3NzaWJs
ZS4KKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGUoKQogICAgIHsKICAgICAgICAgaWYgKCFpc01h
aW5UaHJlYWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgKytzX2NvdW50OwogICAg
IH0KIAotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbihjb25zdCBOb0V2ZW50RGlzcGF0Y2hB
c3NlcnRpb24mKQotICAgICAgICA6IE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbigpCisgICAgU2Ny
aXB0RGlzYWxsb3dlZFNjb3BlKGNvbnN0IFNjcmlwdERpc2FsbG93ZWRTY29wZSYpCisgICAgICAg
IDogU2NyaXB0RGlzYWxsb3dlZFNjb3BlKCkKICAgICB7CiAgICAgfQogCi0gICAgfk5vRXZlbnRE
aXNwYXRjaEFzc2VydGlvbigpCisgICAgflNjcmlwdERpc2FsbG93ZWRTY29wZSgpCiAgICAgewog
ICAgICAgICBpZiAoIWlzTWFpblRocmVhZCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzYs
MTQgKzc2LDE0IEBAIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGJvb2wgaXNFdmVudERpc3BhdGNo
QWxsb3dlZEluU3VidHJlZShOb2RlJiBub2RlKQogICAgICAgICB7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRCB8fCBFTkFCTEUoU0VDVVJJVFlfQVNTRVJUSU9OUykKLSAgICAgICAgICAgIHJldHVybiBp
c0V2ZW50QWxsb3dlZCgpIHx8IEV2ZW50QWxsb3dlZFNjb3BlOjppc0FsbG93ZWROb2RlKG5vZGUp
OworICAgICAgICAgICAgcmV0dXJuIGlzU2NyaXB0QWxsb3dlZCgpIHx8IEV2ZW50QWxsb3dlZFNj
b3BlOjppc0FsbG93ZWROb2RlKG5vZGUpOwogI2Vsc2UKICAgICAgICAgICAgIFVOVVNFRF9QQVJB
TShub2RlKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogI2VuZGlmCiAgICAgICAgIH0KIAot
ICAgICAgICBzdGF0aWMgYm9vbCBpc0V2ZW50QWxsb3dlZCgpCisgICAgICAgIHN0YXRpYyBib29s
IGlzU2NyaXB0QWxsb3dlZCgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gIXNfY291bnQ7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjYyNDEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDExICs0MSwxMSBA
QAogI2luY2x1ZGUgIkxvYWRhYmxlQ2xhc3NpY1NjcmlwdC5oIgogI2luY2x1ZGUgIkxvYWRhYmxl
TW9kdWxlU2NyaXB0LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgotI2luY2x1ZGUg
Ik5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlBlbmRpbmdTY3JpcHQuaCIK
ICNpbmNsdWRlICJSdW50aW1lQXBwbGljYXRpb25DaGVja3MuaCIKICNpbmNsdWRlICJTVkdTY3Jp
cHRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlNj
cmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNjcmlwdFJ1bm5lci5oIgogI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTY3JpcHRhYmxlRG9jdW1lbnRQYXJz
ZXIuaCIKQEAgLTM2Miw3ICszNjIsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1
bGVTY3JpcHQoCiAKIHZvaWQgU2NyaXB0RWxlbWVudDo6ZXhlY3V0ZUNsYXNzaWNTY3JpcHQoY29u
c3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKLSAgICBSRUxFQVNFX0FTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWlu
VGhyZWFkOjppc0V2ZW50QWxsb3dlZCgpIHx8ICFpc0luV2ViUHJvY2VzcygpKTsKKyAgICBSRUxF
QVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkOjppc1NjcmlwdEFsbG93ZWQoKSB8fCAhaXNJbldlYlByb2Nlc3MoKSk7
CiAgICAgQVNTRVJUKG1fYWxyZWFkeVN0YXJ0ZWQpOwogCiAgICAgaWYgKHNvdXJjZUNvZGUuaXNF
bXB0eSgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250
ZXh0LmNwcAkocmV2aXNpb24gMjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxMyArMzksMTMgQEAKICNp
bmNsdWRlICJKU0RPTVdpbmRvdy5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCiAjaW5jbHVk
ZSAiTmF2aWdhdG9yLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAj
aW5jbHVkZSAiUHVibGljVVJMTWFuYWdlci5oIgogI2luY2x1ZGUgIlJlamVjdGVkUHJvbWlzZVRy
YWNrZXIuaCIKICNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTV0NsaWVu
dENvbm5lY3Rpb24uaCIKICNpbmNsdWRlICJTV0NvbnRleHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAi
U2NoZW1lUmVnaXN0cnkuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNp
bmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgIlNlcnZpY2VXb3JrZXIuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTE5Niw3ICsxOTYsNyBAQCBib29s
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmNhblN1c3BlbmRBCiAgICAgLy8gZnVuY3Rpb25zIHNo
b3VsZCBub3QgYWRkIG5ldyBhY3RpdmUgRE9NIG9iamVjdHMsIG5vciBleGVjdXRlIGFyYml0cmFy
eSBKYXZhU2NyaXB0LgogICAgIC8vIEFuIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9O
IG9yIFJFTEVBU0VfQVNTRVJUIHdpbGwgZmlyZSBpZiB0aGlzIGhhcHBlbnMsIGJ1dCBpdCdzIGlt
cG9ydGFudCB0byBjb2RlCiAgICAgLy8gY2FuU3VzcGVuZCBmdW5jdGlvbnMgc28gaXQgd2lsbCBu
b3QgaGFwcGVuIQotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIGFz
c2VydE5vRXZlbnREaXNwYXRjaDsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRo
cmVhZCBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgZm9yIChhdXRvKiBhY3RpdmVET01PYmpl
Y3QgOiBtX2FjdGl2ZURPTU9iamVjdHMpIHsKICAgICAgICAgaWYgKCFhY3RpdmVET01PYmplY3Qt
PmNhblN1c3BlbmRGb3JEb2N1bWVudFN1c3BlbnNpb24oKSkgewogICAgICAgICAgICAgY2FuU3Vz
cGVuZCA9IGZhbHNlOwpAQCAtMjM4LDcgKzIzOCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c3VzcGVuZEFjdGkKICAgICAvLyBmdW5jdGlvbnMgc2hvdWxkIG5vdCBhZGQgbmV3IGFj
dGl2ZSBET00gb2JqZWN0cywgbm9yIGV4ZWN1dGUgYXJiaXRyYXJ5IEphdmFTY3JpcHQuCiAgICAg
Ly8gQW4gQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04gb3IgUkVMRUFTRV9BU1NFUlQg
d2lsbCBmaXJlIGlmIHRoaXMgaGFwcGVucywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIGNvZGUKICAg
ICAvLyBzdXNwZW5kIGZ1bmN0aW9ucyBzbyBpdCB3aWxsIG5vdCBoYXBwZW4hCi0gICAgTm9FdmVu
dERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOwor
ICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRT
Y29wZTsKICAgICBmb3IgKGF1dG8qIGFjdGl2ZURPTU9iamVjdCA6IG1fYWN0aXZlRE9NT2JqZWN0
cykKICAgICAgICAgYWN0aXZlRE9NT2JqZWN0LT5zdXNwZW5kKHdoeSk7CiAKQEAgLTI2Nyw3ICsy
NjcsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OnJlc3VtZUFjdGl2CiAgICAgLy8g
ZnVuY3Rpb25zIHNob3VsZCBub3QgYWRkIG5ldyBhY3RpdmUgRE9NIG9iamVjdHMsIG5vciBleGVj
dXRlIGFyYml0cmFyeSBKYXZhU2NyaXB0LgogICAgIC8vIEFuIEFTU0VSVF9XSVRIX1NFQ1VSSVRZ
X0lNUExJQ0FUSU9OIG9yIFJFTEVBU0VfQVNTRVJUIHdpbGwgZmlyZSBpZiB0aGlzIGhhcHBlbnMs
IGJ1dCBpdCdzIGltcG9ydGFudCB0byBjb2RlCiAgICAgLy8gcmVzdW1lIGZ1bmN0aW9ucyBzbyBp
dCB3aWxsIG5vdCBoYXBwZW4hCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5U
aHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6
SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICBmb3IgKGF1dG8qIGFjdGl2
ZURPTU9iamVjdCA6IG1fYWN0aXZlRE9NT2JqZWN0cykKICAgICAgICAgYWN0aXZlRE9NT2JqZWN0
LT5yZXN1bWUoKTsKIApAQCAtMjk0LDcgKzI5NCw3IEBAIHZvaWQgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6c3RvcEFjdGl2ZUQKICAgICAvLyBzdG9wIGZ1bmN0aW9ucyBzaG91bGQgbm90IGFkZCBu
ZXcgYWN0aXZlIERPTSBvYmplY3RzLCBub3IgZXhlY3V0ZSBhcmJpdHJhcnkgSmF2YVNjcmlwdC4K
ICAgICAvLyBBbiBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTiBvciBSRUxFQVNFX0FT
U0VSVCB3aWxsIGZpcmUgaWYgdGhpcyBoYXBwZW5zLCBidXQgaXQncyBpbXBvcnRhbnQgdG8gY29k
ZSBzdG9wIGZ1bmN0aW9ucwogICAgIC8vIHNvIGl0IHdpbGwgbm90IGhhcHBlbiEKLSAgICBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24gYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAgIFNjcmlwdERp
c2FsbG93ZWRTY29wZSBzY3JpcHREaXNhbGxvd2VkU2NvcGU7CiAgICAgZm9yIChhdXRvKiBhY3Rp
dmVET01PYmplY3QgOiBwb3NzaWJsZUFjdGl2ZURPTU9iamVjdHMpIHsKICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhpcyBvYmplY3Qgd2FzIGRlbGV0ZWQgYWxyZWFkeS4gSWYgc28sIGp1c3Qgc2tpcCBp
dC4KICAgICAgICAgLy8gQ2FsbGluZyBjb250YWlucyBvbiBhIHBvc3NpYmx5LWFscmVhZHktZGVs
ZXRlZCBvYmplY3QgaXMgT0sgYmVjYXVzZSB3ZSBndWFyYW50ZWUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aGlzdG9yeS9DYWNoZWRQYWdlLmNwcAkocmV2aXNpb24gMjI2MjQxKQorKysgU291cmNlL1dlYkNv
cmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsMTAgKzM0LDEw
IEBACiAjaW5jbHVkZSAiSGlzdG9yeUNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJIaXN0b3J5SXRl
bS5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgotI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFz
c2VydGlvbi5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUGFnZVRyYW5zaXRpb25FdmVudC5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29w
ZS5oIgogI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiVmlzaXRlZExpbmtTdGF0ZS5o
IgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgpAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQg
Q2FjaGVkUGFnZTo6cmVzdG9yZShQYWdlJiBwYWdlKQogICAgIHsKICAgICAgICAgLy8gRG8gbm90
IGRpc3BhdGNoIERPTSBldmVudHMgYXMgdGhlaXIgSmF2YVNjcmlwdCBsaXN0ZW5lcnMgY291bGQg
Y2F1c2UgdGhlIHBhZ2UgdG8gYmUgcHV0CiAgICAgICAgIC8vIGludG8gdGhlIHBhZ2UgY2FjaGUg
YmVmb3JlIHdlIGhhdmUgZmluaXNoZWQgcmVzdG9yaW5nIGl0IGZyb20gdGhlIHBhZ2UgY2FjaGUu
Ci0gICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIG5vRXZlbnRE
aXNwYXRjaEFzc2VydGlvbjsKKyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5U
aHJlYWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogCiAgICAgICAgIG1fY2FjaGVkTWFpbkZyYW1l
LT5vcGVuKCk7CiAgICAgfQpJbmRleDogU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcAko
cmV2aXNpb24gMjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw4ICs0NCw4IEBACiAjaW5jbHVkZSAiSWdub3JlT3BlbnNE
dXJpbmdVbmxvYWRDb3VudEluY3JlbWVudGVyLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2lu
Y2x1ZGUgIk1haW5GcmFtZS5oIgotI2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5o
IgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIK
ICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIlN1YmZyYW1lTG9hZGVyLmgiCiAjaW5j
bHVkZSA8d3RmL01lbW9yeVByZXNzdXJlSGFuZGxlci5oPgpAQCAtNDIzLDcgKzQyMyw3IEBAIHZv
aWQgUGFnZUNhY2hlOjphZGRJZkNhY2hlYWJsZShIaXN0b3J5SXQKICAgICBzZXRQYWdlQ2FjaGVT
dGF0ZSgqcGFnZSwgRG9jdW1lbnQ6OkluUGFnZUNhY2hlKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB3
ZSBubyBsb25nZXIgZmlyZSBhbnkgSlMgZXZlbnRzIHBhc3QgdGhpcyBwb2ludC4KLSAgICBOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb246OkluTWFpblRocmVhZCBhc3NlcnROb0V2ZW50RGlzcGF0Y2g7
CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQgc2NyaXB0RGlzYWxsb3dl
ZFNjb3BlOwogCiAgICAgaXRlbS5tX2NhY2hlZFBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPENhY2hl
ZFBhZ2U+KCpwYWdlKTsKICAgICBpdGVtLm1fcHJ1bmluZ1JlYXNvbiA9IFBydW5pbmdSZWFzb246
Ok5vbmU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gMjI2
MjQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ0Myw3ICs0NDMsNyBAQCBzdGF0aWMgUmVmPERvY3VtZW50RnJhZ21lbnQ+IHRleHRU
b0ZyYWdtCiAgICAgYXV0byBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1
bWVudCk7CiAKICAgICAvLyBJdCdzIHNhZmUgdG8gZGlzcGF0Y2ggZXZlbnRzIG9uIHRoZSBuZXcg
ZnJhZ21lbnQgc2luY2UgYXV0aG9yIHNjcmlwdHMgaGF2ZSBubyBhY2Nlc3MgdG8gaXQgeWV0Lgot
ICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2NvcGUgYWxsb3dlZFNj
b3BlKGZyYWdtZW50KTsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNj
b3BlIGFsbG93ZWRTY29wZShmcmFnbWVudCk7CiAKICAgICBmb3IgKHVuc2lnbmVkIHN0YXJ0ID0g
MCwgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsgc3RhcnQgPCBsZW5ndGg7ICkgewogICAgICAgICAv
LyBGaW5kIG5leHQgbGluZSBicmVhay4KQEAgLTUzMyw3ICs1MzMsNyBAQCBFeGNlcHRpb25Pcjx2
b2lkPiBIVE1MRWxlbWVudDo6c2V0SW5uZXJUCiAgICAgYXV0byBmcmFnbWVudCA9IHRleHRUb0Zy
YWdtZW50KGRvY3VtZW50KCksIHRleHQpOwogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCB1c2Ug
cmVwbGFjZUFsbENoaWxkcmVuKCkgb25jZSBpdCBhY2NlcHRzIERvY3VtZW50RnJhZ21lbnRzIGFz
IGlucHV0LgogICAgIC8vIEl0J3Mgc2FmZSB0byBkaXNwYXRjaCBldmVudHMgb24gdGhlIG5ldyBm
cmFnbWVudCBzaW5jZSBhdXRob3Igc2NyaXB0cyBoYXZlIG5vIGFjY2VzcyB0byBpdCB5ZXQuCi0g
ICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2Nv
cGUoZnJhZ21lbnQuZ2V0KCkpOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRBbGxv
d2VkU2NvcGUgYWxsb3dlZFNjb3BlKGZyYWdtZW50LmdldCgpKTsKICAgICByZXR1cm4gcmVwbGFj
ZUNoaWxkcmVuV2l0aEZyYWdtZW50KCp0aGlzLCBXVEZNb3ZlKGZyYWdtZW50KSk7CiB9CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMjI2
MjQxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjgsNyArNjgsNiBAQAogI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3Iu
aCIKICNpbmNsdWRlICJNZWRpYVJlc291cmNlTG9hZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya2lu
Z0NvbnRleHQuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1N
ZWRpYVNlc3Npb25NYW5hZ2VyLmgiCkBAIC03OSw2ICs3OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgogI2luY2x1ZGUgIlJlc291cmNlTG9hZEluZm8uaCIKICNpbmNsdWRlICJTY3JpcHRD
b250cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luRGF0YS5oIgog
I2luY2x1ZGUgIlNlY3VyaXR5UG9saWN5LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMjI2MjQxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDExICs0MSwxMSBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlv
bXMuaCIKICNpbmNsdWRlICJMYXlvdXREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJMb2dn
aW5nLmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAi
Tm9kZVRyYXZlcnNhbC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJUZXh0
Q29udHJvbFNpbmdsZUxpbmUuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgorI2luY2x1ZGUg
IlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlNoYWRvd1Jvb3QuaCIKICNpbmNs
dWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmgiCkBAIC01
NzIsNyArNTcyLDcgQEAgdm9pZCBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6c2V0SW5uZQog
CiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEV2ZW50cyBkaXNwYXRjaGVkIG9uIHRoZSBpbm5l
ciB0ZXh0IGVsZW1lbnQgY2Fubm90IGV4ZWN1dGUgYXJiaXRyYXJ5IGF1dGhvciBzY3JpcHRzLgot
ICAgICAgICAgICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSBh
bGxvd2VkU2NvcGUoKnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSk7CisgICAgICAgICAgICBTY3JpcHRE
aXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93ZWRTY29wZSgqdXNlckFnZW50
U2hhZG93Um9vdCgpKTsKIAogICAgICAgICAgICAgaW5uZXJUZXh0LT5zZXRJbm5lclRleHQodmFs
dWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9WVFRDdWUuY3BwCShyZXZpc2lvbiAy
MjYyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1ZUVEN1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQxLDkgKzQxLDkgQEAKICNpbmNsdWRlICJIVE1MRGl2RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkhUTUxTcGFuRWxlbWVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKLSNpbmNsdWRl
ICJOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVlRUQ3VlLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNj
b3BlLmgiCiAjaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgIlRleHRUcmFjay5oIgogI2luY2x1
ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKQEAgLTUzMCw3ICs1MzAsNyBAQCBSZWZQdHI8RG9jdW1l
bnRGcmFnbWVudD4gVlRUQ3VlOjpjcmVhdGVDCiAgICAgYXV0byBjbG9uZWRGcmFnbWVudCA9IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShvd25lckRvY3VtZW50KCkpOwogCiAgICAgLy8gVGhlIGNs
b25lZCBmcmFnbWVudCBpcyBuZXZlciBleHBvc2VkIHRvIGF1dGhvciBzY3JpcHRzIHNvIGl0J3Mg
c2FmZSB0byBkaXNwYXRjaCBldmVudHMgaGVyZS4KLSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRp
b246OkV2ZW50QWxsb3dlZFNjb3BlIG5vRXZlbnREaXNwYXRjaEFzc2VydGlvbkRpc2FibGVkRm9y
U2NvcGUoY2xvbmVkRnJhZ21lbnQpOworICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6RXZlbnRB
bGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlKGNsb25lZEZyYWdtZW50KTsKIAogICAgIG1fd2ViVlRU
Tm9kZVRyZWUtPmNsb25lQ2hpbGROb2RlcyhjbG9uZWRGcmFnbWVudCk7CiAgICAgcmV0dXJuIFdU
Rk1vdmUoY2xvbmVkRnJhZ21lbnQpOwpAQCAtNzg4LDcgKzc4OCw3IEBAIHZvaWQgVlRUQ3VlOjp1
cGRhdGVEaXNwbGF5VHJlZShjb25zdCBNZWQKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTXV0
YXRpbmcgdGhlIFZUVCBjb250ZW50cyBpcyBzYWZlIGJlY2F1c2UgaXQncyBuZXZlciBleHBvc2Vk
IHRvIGF1dGhvciBzY3JpcHRzLgotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRB
bGxvd2VkU2NvcGUgYWxsb3dlZFNjb3BlRm9yQ3VlSGlnaGxpZ2h0Qm94KCptX2N1ZUhpZ2hsaWdo
dEJveCk7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxv
d2VkU2NvcGVGb3JDdWVIaWdobGlnaHRCb3goKm1fY3VlSGlnaGxpZ2h0Qm94KTsKIAogICAgIC8v
IENsZWFyIHRoZSBjb250ZW50cyBvZiB0aGUgc2V0LgogICAgIG1fY3VlSGlnaGxpZ2h0Qm94LT5y
ZW1vdmVDaGlsZHJlbigpOwpAQCAtNzk4LDcgKzc5OCw3IEBAIHZvaWQgVlRUQ3VlOjp1cGRhdGVE
aXNwbGF5VHJlZShjb25zdCBNZWQKICAgICBpZiAoIXJlZmVyZW5jZVRyZWUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2NvcGUg
YWxsb3dlZFNjb3BlRm9yUmVmZXJlbmNlVHJlZSgqcmVmZXJlbmNlVHJlZSk7CisgICAgU2NyaXB0
RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGVGb3JSZWZlcmVu
Y2VUcmVlKCpyZWZlcmVuY2VUcmVlKTsKIAogICAgIG1hcmtGdXR1cmVBbmRQYXN0Tm9kZXMocmVm
ZXJlbmNlVHJlZS5nZXQoKSwgc3RhcnRNZWRpYVRpbWUoKSwgbW92aWVUaW1lKTsKICAgICBtX2N1
ZUhpZ2hsaWdodEJveC0+YXBwZW5kQ2hpbGQoKnJlZmVyZW5jZVRyZWUpOwpAQCAtODYxLDcgKzg2
MSw3IEBAIHZvaWQgVlRUQ3VlOjpyZW1vdmVEaXNwbGF5VHJlZSgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIFRoZSBkaXNwbGF5IHRyZWUgaXMgbmV2ZXIgZXhwb3NlZCB0byBhdXRob3Igc2Ny
aXB0cyBzbyBpdCdzIHNhZmUgdG8gZGlzcGF0Y2ggZXZlbnRzIGhlcmUuCi0gICAgTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUoZGlzcGxheVRy
ZWVJbnRlcm5hbCgpKTsKKyAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNj
b3BlIGFsbG93ZWRTY29wZShkaXNwbGF5VHJlZUludGVybmFsKCkpOwogICAgIGRpc3BsYXlUcmVl
SW50ZXJuYWwoKS5yZW1vdmUoKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9y
bVN1Ym1pc3Npb24uY3BwCShyZXZpc2lvbiAyMjYyNDEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRm9ybVN1Ym1pc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw3ICs0Nyw3IEBACiAj
aW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJOb0V2ZW50RGlzcGF0Y2hBc3Nl
cnRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHREaXNhbGxvd2VkU2NvcGUuaCIKICNpbmNsdWRlICJU
ZXh0RW5jb2RpbmcuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KIApJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTVkdGb250LmNwcAkocmV2aXNpb24g
MjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFNWR0ZvbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogI2luY2x1ZGUgIkZvbnREZXNj
cmlwdGlvbi5oIgogI2luY2x1ZGUgIkZvbnRQbGF0Zm9ybURhdGEuaCIKLSNpbmNsdWRlICJOb0V2
ZW50RGlzcGF0Y2hBc3NlcnRpb24uaCIKICNpbmNsdWRlICJTVkdEb2N1bWVudC5oIgogI2luY2x1
ZGUgIlNWR0ZvbnRFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRm9udEZhY2VFbGVtZW50LmgiCisj
aW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiVGV4dFJlc291cmNlRGVjb2Rlci5oIgogI2luY2x1ZGUgIlR5cGVkRWxl
bWVudERlc2NlbmRhbnRJdGVyYXRvci5oIgpAQCAtNzUsNyArNzUsNyBAQCBib29sIENhY2hlZFNW
R0ZvbnQ6OmVuc3VyZUN1c3RvbUZvbnREYXRhCiAgICAgICAgICAgICBtX2V4dGVybmFsU1ZHRG9j
dW1lbnQgPSBTVkdEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIFVSTCgpKTsKICAgICAgICAgICAg
IGF1dG8gZGVjb2RlciA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZSgiYXBwbGljYXRpb24v
eG1sIik7CiAKLSAgICAgICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxv
d2VkU2NvcGUgYWxsb3dlZFNjb3BlKCptX2V4dGVybmFsU1ZHRG9jdW1lbnQpOworICAgICAgICAg
ICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRTY29wZSBhbGxvd2VkU2NvcGUo
Km1fZXh0ZXJuYWxTVkdEb2N1bWVudCk7CiAKICAgICAgICAgICAgIG1fZXh0ZXJuYWxTVkdEb2N1
bWVudC0+c2V0Q29udGVudChkZWNvZGVyLT5kZWNvZGVBbmRGbHVzaChtX2RhdGEtPmRhdGEoKSwg
bV9kYXRhLT5zaXplKCkpKTsKICAgICAgICAgICAgIHNhd0Vycm9yID0gZGVjb2Rlci0+c2F3RXJy
b3IoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTGF5b3V0Q29udGV4dC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRDb250ZXh0LmNwcAkocmV2aXNpb24g
MjI2MjQxKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9MYXlvdXRDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgogI2luY2x1ZGUgIkxheW91dFN0YXRlLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgot
I2luY2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlckVs
ZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxs
b3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogI2luY2x1ZGUgPHd0Zi9TZXRG
b3JTY29wZS5oPgpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTGF5b3V0Q29udGV4dDo6bGF5b3V0
KCkKICAgICB9CiAgICAgewogICAgICAgICBTZXRGb3JTY29wZTxMYXlvdXRQaGFzZT4gbGF5b3V0
UGhhc2UobV9sYXlvdXRQaGFzZSwgTGF5b3V0UGhhc2U6OkluUmVuZGVyVHJlZUxheW91dCk7Ci0g
ICAgICAgIE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6SW5NYWluVGhyZWFkIG5vRXZlbnREaXNw
YXRjaEFzc2VydGlvbjsKKyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJl
YWQgc2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgICAgICBTdWJ0cmVlTGF5b3V0U3RhdGVNYWlu
dGFpbmVyIHN1YnRyZWVMYXlvdXRTdGF0ZU1haW50YWluZXIoc3VidHJlZUxheW91dFJvb3QoKSk7
CiAgICAgICAgIFJlbmRlclZpZXc6OlJlcGFpbnRSZWdpb25BY2N1bXVsYXRvciByZXBhaW50UmVn
aW9uQWNjdW11bGF0b3IocmVuZGVyVmlldygpKTsKICNpZm5kZWYgTkRFQlVHCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRnJhbWVCYXNlLmNwcAkocmV2aXNpb24gMjI2
MjQxKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZyYW1lQmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnRCYXNlLmgiCi0jaW5j
bHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5o
IgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29N
YWxsb2NJbmxpbmVzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc1LDcgKzc1LDcgQEAg
UmVuZGVyVmlldyogUmVuZGVyRnJhbWVCYXNlOjpjaGlsZFJlbmRlcgogdm9pZCBSZW5kZXJGcmFt
ZUJhc2U6OnBlcmZvcm1MYXlvdXRXaXRoRmxhdHRlbmluZyhib29sIGhhc0ZpeGVkV2lkdGgsIGJv
b2wgaGFzRml4ZWRIZWlnaHQpCiB7CiAgICAgLy8gRklYTUU6IFJlZmFjdG9yIGZyYW1lIGZsYXR0
ZW5pbmcgY29kZSBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gZGlzYWJsZSBhc3NlcnRpb25zIGhl
cmUuCi0gICAgTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2Nv
cGUgc2NvcGU7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9uc0lu
U2NvcGUgc2NvcGU7CiAgICAgaWYgKCFjaGlsZFJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJu
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlz
aW9uIDIyNjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTgyLDcgKzgyLDYgQEAKICNpbmNsdWRlICJIaXRUZXN0aW5nVHJh
bnNmb3JtU3RhdGUuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiTWFpbkZyYW1l
LmgiCi0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiT3Zl
cmZsb3dFdmVudC5oIgogI2luY2x1ZGUgIk92ZXJsYXBUZXN0UmVxdWVzdENsaWVudC5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKQEAgLTExMSw2ICsxMTAsNyBAQAogI2luY2x1ZGUgIlJlbmRlclZpZXcu
aCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNjYWxlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCisjaW5jbHVkZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2Ny
b2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTY3JvbGxiYXIuaCIKICNpbmNsdWRlICJTY3JvbGxi
YXJUaGVtZS5oIgpAQCAtMjU4Nyw3ICsyNTg3LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6c2Nyb2xs
UmVjdFRvVmlzaWJsZShTZQogCiAgICAgICAgICAgICBpZiAoZnJhbWVFbGVtZW50QW5kVmlld1Bl
cm1pdFNjcm9sbChmcmFtZUVsZW1lbnRCYXNlLCBmcmFtZVZpZXcpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSWYgdGhpcyBhc3NlcnRpb24gZmlyZXMgd2UgbmVlZCB0byBwcm90ZWN0IHRoZSBvd25l
ckVsZW1lbnQgZnJvbSBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgICAgICAgICAgTm9FdmVudERp
c3BhdGNoQXNzZXJ0aW9uOjpJbk1haW5UaHJlYWQgYXNzZXJ0Tm9FdmVudERpc3BhdGNoOworICAg
ICAgICAgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5NYWluVGhyZWFkIHNjcmlwdERp
c2FsbG93ZWRTY29wZTsKIAogICAgICAgICAgICAgICAgIExheW91dFJlY3Qgdmlld1JlY3QgPSBm
cmFtZVZpZXcudmlzaWJsZUNvbnRlbnRSZWN0KExlZ2FjeUlPU0RvY3VtZW50VmlzaWJsZVJlY3Qp
OwogICAgICAgICAgICAgICAgIExheW91dFJlY3QgZXhwb3NlUmVjdCA9IGdldFJlY3RUb0V4cG9z
ZSh2aWV3UmVjdCwgYWJzb2x1dGVSZWN0LCBpbnNpZGVGaXhlZCwgYWxpZ25YLCBhbGlnblkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjYyNDEp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw3ICsyNSw2IEBACiAjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IkV2ZW50TmFtZXMuaCIKICNpbmNsdWRlICJNdXRhdGlvbkV2ZW50LmgiCi0jaW5jbHVkZSAiTm9F
dmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291
cmNlLmgiCkBAIC0zMyw2ICszMiw3IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgorI2lu
Y2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVk
RGF0YS5oIgogI2luY2x1ZGUgIlRleHQuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCkBAIC0x
NDYsNyArMTQ2LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6dXBkYXRlUmVmZXJlbmNlZFRleAog
CiAgICAgYXV0byByb290ID0gdXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIEFTU0VSVChyb290
KTsKLSAgICBOb0V2ZW50RGlzcGF0Y2hBc3NlcnRpb246OkV2ZW50QWxsb3dlZFNjb3BlIGFsbG93
ZWRTY29wZSgqcm9vdCk7CisgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpFdmVudEFsbG93ZWRT
Y29wZSBhbGxvd2VkU2NvcGUoKnJvb3QpOwogICAgIGlmICghcm9vdC0+Zmlyc3RDaGlsZCgpKQog
ICAgICAgICByb290LT5hcHBlbmRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQoKSwgdGV4dENv
bnRlbnQpKTsKICAgICBlbHNlIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAJKHJldmlzaW9uIDIyNjI0MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsMTMgKzMxLDEzIEBACiAjaW5jbHVkZSAiRWxlbWVu
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgi
Ci0jaW5jbHVkZSAiTm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdUcmFuc2Zvcm1hYmxlQ29udGFpbmVy
LmgiCiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiU1ZHR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHU3ltYm9s
RWxlbWVudC5oIgorI2luY2x1ZGUgIlNjcmlwdERpc2FsbG93ZWRTY29wZS5oIgogI2luY2x1ZGUg
IlNoYWRvd1Jvb3QuaCIKICNpbmNsdWRlICJYTGlua05hbWVzLmgiCiAKQEAgLTIxOSw3ICsyMTks
NyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OmNsZWFyU2hhZG93VHJlZSgpCiB7CiAgICAgaWYgKGF1
dG8gcm9vdCA9IHVzZXJBZ2VudFNoYWRvd1Jvb3QoKSkgewogICAgICAgICAvLyBTYWZlIGJlY2F1
c2UgU1ZHIHVzZSBlbGVtZW50J3Mgc2hhZG93IHRyZWUgaXMgbmV2ZXIgdXNlZCB0byBmaXJlIHN5
bmNocm9ub3VzIGV2ZW50cyBkdXJpbmcgbGF5b3V0IG9yIERPTSBtdXRhdGlvbnMuCi0gICAgICAg
IE5vRXZlbnREaXNwYXRjaEFzc2VydGlvbjo6RXZlbnRBbGxvd2VkU2NvcGUgc2NvcGUoKnJvb3Qp
OworICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkV2ZW50QWxsb3dlZFNjb3BlIHNjb3Bl
KCpyb290KTsKICAgICAgICAgcm9vdC0+cmVtb3ZlQ2hpbGRyZW4oKTsKICAgICB9CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIyNjI0
MSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDcgKzQzLDYgQEAKICNpbmNsdWRlICJKU0RPTVdpbmRvd0Jhc2UuaCIKICNp
bmNsdWRlICJMaWJXZWJSVENQcm92aWRlci5oIgogI2luY2x1ZGUgIk1haW5GcmFtZS5oIgotI2lu
Y2x1ZGUgIk5vRXZlbnREaXNwYXRjaEFzc2VydGlvbi5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNp
bmNsdWRlICJQYWdlQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jvb3QuaCIK
QEAgLTU0LDYgKzUzLDcgQEAKICNpbmNsdWRlICJTVkdJbWFnZUNsaWVudHMuaCIKICNpbmNsdWRl
ICJTVkdJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdTVkdFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2NyaXB0RGlzYWxsb3dlZFNjb3BlLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNs
dWRlICJTb2NrZXRQcm92aWRlci5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgpA
QCAtMzEyLDcgKzMxMiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGlj
c0MKICAgICB2aWV3LT5yZXNpemUoY29udGFpbmVyU2l6ZSgpKTsKIAogICAgIHsKLSAgICAgICAg
Tm9FdmVudERpc3BhdGNoQXNzZXJ0aW9uOjpEaXNhYmxlQXNzZXJ0aW9uc0luU2NvcGUgZGlzYWJs
ZWRTY29wZTsKKyAgICAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpEaXNhYmxlQXNzZXJ0aW9u
c0luU2NvcGUgZGlzYWJsZWRTY29wZTsKICAgICAgICAgaWYgKHZpZXctPm5lZWRzTGF5b3V0KCkp
CiAgICAgICAgICAgICB2aWV3LT5sYXlvdXRDb250ZXh0KCkubGF5b3V0KCk7CiAgICAgfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>