<?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>192352</bug_id>
          
          <creation_ts>2018-12-03 21:46:59 -0800</creation_ts>
          <short_desc>Remove using namespace WebCore and WebKit under WebKit/Shared/API</short_desc>
          <delta_ts>2018-12-05 20:09:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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>
          
          <blocked>192449</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Fujii Hironori">fujii</reporter>
          <assigned_to name="Fujii Hironori">fujii</assigned_to>
          <cc>achristensen</cc>
    
    <cc>darin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1484716</commentid>
    <comment_count>0</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-03 21:46:59 -0800</bug_when>
    <thetext>Remove using namespace WebCore and WebKit under WebKit/Shared/API

Bug 191995 – Remove &quot;using namespace WebCore&quot; under Source/WebKit/WebProcess/InjectedBundle/API
Bug 192301 – Remove &quot;using namespace WebKit&quot; under Source/WebKit/WebProcess/InjectedBundle/API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484720</commentid>
    <comment_count>1</comment_count>
      <attachid>356464</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-03 21:52:22 -0800</bug_when>
    <thetext>Created attachment 356464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484723</commentid>
    <comment_count>2</comment_count>
      <attachid>356465</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-03 21:59:59 -0800</bug_when>
    <thetext>Created attachment 356465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484732</commentid>
    <comment_count>3</comment_count>
      <attachid>356467</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-03 22:14:34 -0800</bug_when>
    <thetext>Created attachment 356467
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484746</commentid>
    <comment_count>4</comment_count>
      <attachid>356472</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-03 22:40:21 -0800</bug_when>
    <thetext>Created attachment 356472
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484752</commentid>
    <comment_count>5</comment_count>
      <attachid>356473</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-03 23:27:11 -0800</bug_when>
    <thetext>Created attachment 356473
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1484829</commentid>
    <comment_count>6</comment_count>
      <attachid>356473</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-04 08:21:55 -0800</bug_when>
    <thetext>Comment on attachment 356473
Patch

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

&gt; Source/WebKit/Shared/API/APIURLRequest.cpp:34
&gt; -using namespace WebCore;
&gt; -using namespace WebKit;
&gt; -
&gt;  namespace API {
&gt;  
&gt; -URLRequest::URLRequest(const ResourceRequest&amp; request)
&gt; +URLRequest::URLRequest(const WebCore::ResourceRequest&amp; request)

If you just move the &quot;using namespace X;&quot; to after the &quot;namespace Y {&quot; then the &quot;using&quot; has that scope, doesn&apos;t mess with unified builds, and requires less invasive changes to the existing code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485089</commentid>
    <comment_count>7</comment_count>
      <attachid>356473</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-04 17:34:31 -0800</bug_when>
    <thetext>Comment on attachment 356473
Patch

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

&gt;&gt; Source/WebKit/Shared/API/APIURLRequest.cpp:34
&gt;&gt; +URLRequest::URLRequest(const WebCore::ResourceRequest&amp; request)
&gt; 
&gt; If you just move the &quot;using namespace X;&quot; to after the &quot;namespace Y {&quot; then the &quot;using&quot; has that scope, doesn&apos;t mess with unified builds, and requires less invasive changes to the existing code.

Oh, that&apos;s right. Thank you very much for catching.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485106</commentid>
    <comment_count>8</comment_count>
      <attachid>356566</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-04 18:17:33 -0800</bug_when>
    <thetext>Created attachment 356566
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485160</commentid>
    <comment_count>9</comment_count>
      <attachid>356566</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-04 22:53:17 -0800</bug_when>
    <thetext>Comment on attachment 356566
Patch

Clearing flags on attachment: 356566

Committed r238887: &lt;https://trac.webkit.org/changeset/238887&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485161</commentid>
    <comment_count>10</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2018-12-04 22:53:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1485162</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-12-04 22:54:34 -0800</bug_when>
    <thetext>&lt;rdar://problem/46478178&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356464</attachid>
            <date>2018-12-03 21:52:22 -0800</date>
            <delta_ts>2018-12-03 21:57:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192352-20181204145220.patch</filename>
            <type>text/plain</type>
            <size>54621</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5YzAzNDkzMDA0YWYxYmFi
ZjRjYmNiMmQ3OTVlZTY5NjAwMjFmOTcuLmQ5ZTc2YzUxZmY0NWYyNzY4MGU0OGY1MDFlYjdlNjcx
NTFjYTAyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTgtMTItMDMgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgdW5kZXIgV2ViS2l0L1NoYXJlZC9BUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjM1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdXNp
bmcgbmFtZXNwYWNlIHN0YXRlbWVudHMsIGFuZCB1c2UgbmFtZXNwYWNlIHByZWZpeAorICAgICAg
ICBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwOgorCiAyMDE4LTEy
LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBhbmltYXRlZCBrZXlib2FyZCBzY3JvbGxpbmcgYmVo
YXZpb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcAppbmRleCBh
YzkwNGQ0MDljMjE1MTBjZjU2YzczODAxYTk1ZmE1ZjFhZjUxOTViLi4zZTUwMjJlMWQ4YTE3YTFi
N2RjZWM3NmY5NmJjYWQ3MjMzOWQzNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTFJlcXVlc3QuY3BwCkBAIC0yOSwyNyArMjksMjQgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCi1VUkxSZXF1ZXN0OjpVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK1VSTFJlcXVlc3Q6OlVSTFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiB7CiB9CiAKIGRvdWJsZSBVUkxS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgcmVhbGx5IGJlIG9uIFdlYlByb2Nlc3NQb29sIG9yIFdlYlBh
Z2VQcm94eS4KIHZvaWQgVVJMUmVxdWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3Vi
bGUgdGltZW91dEludGVydmFsKQogewotICAgIFJlc291cmNlUmVxdWVzdDo6c2V0RGVmYXVsdFRp
bWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZXREZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogfQogCkBAIC02MCw3ICs1Nyw3IEBA
IHZvaWQgVVJMUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
Ym9vbCBVUkxSZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8T2Jq
ZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVzcG9uc2UuY3BwCmluZGV4IDFkOTNiNjJkMzhmYWMyYjg4MzdiODFhY2Jh
NTAyMGFhYzE0ZjgyYjcuLmJhMTM3NThkOGIyZGQ2MmY2M2YxMDZhNmNkZTZkMWZjNTkyMjU4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcApAQCAtMjgs
OCArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgQVBJIHsKIAogVVJMUmVzcG9uc2U6OlVS
TFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAt
NDQsNyArNDIsNyBAQCB2b2lkIFVSTFJlc3BvbnNlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiBib29sIFVSTFJlc3BvbnNlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA4NDQxNjExMjQyMTdhZjRk
MzUzZWI2YjI5YmY5MTdlMDRkOGJlNWE5Li5jOTc4NmY0YmE0NjBhMGUxOGFlNjg5OTZmOTFiZmRm
NmRkY2NhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcApAQCAtMjks
MTEgKzI5LDkgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tB
cnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQpAQCAt
NDIsOSArNDAsOSBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKHRvSW1wbCh2
YWx1ZXNbaV0pKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdlYktpdDo6dG9J
bXBsKHZhbHVlc1tpXSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKIH0KIAog
V0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKQEAgLTUzLDE3ICs1MSwxNyBAQCBXS0FycmF5UmVmIFdL
QXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJl
ck9mVmFsdWVzKQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytp
KQotICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYodG9JbXBsKHZhbHVl
c1tpXSkpKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKFdlYktp
dDo6dG9JbXBsKHZhbHVlc1tpXSkpKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJl
Ziwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoYXJyYXlSZWYpLT5h
dChpbmRleCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGFycmF5
UmVmKS0+YXQoaW5kZXgpKTsKIH0KIAogc2l6ZV90IFdLQXJyYXlHZXRTaXplKFdLQXJyYXlSZWYg
YXJyYXlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhcnJheVJlZiktPnNpemUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggNDVlYzYyNzUx
YTcxM2M3MjNhZmRhYWVlMWYyNzkzMjY0ODU3ZGNmZi4uMmI3MTdlNTcyZjk5NmFhOGUzOWRlZDll
OWU2NjA5MmI4Y2VhNmViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tDZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcApAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgIldlYkNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS0NlcnRpZmljYXRlSW5mb0dldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKFdlYkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKaW5kZXggOWZh
NzA0MmMyOWVlMzEwM2UxNzIxNGVlYjNiYjY0MDg0ZmM4MzhmYi4uMjU1NjRmOWY4NzhjOWFjZmUw
ZmVmYjNmNTQ4MjFkNGViYTVkNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS0Nvbm5lY3Rpb25SZWYuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQ29ubmVjdGlvbkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKFdlYkNvbm5lY3Rpb246OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6QVBJVHlwZSk7CiB9CiAKIHZvaWQgV0tDb25uZWN0aW9u
U2V0Q29ubmVjdGlvbkNsaWVudChXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qg
V0tDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbm5lY3Rp
b25SZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29ubmVjdGlvblJlZiktPmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xp
ZW50KTsKIH0KIAogdm9pZCBXS0Nvbm5lY3Rpb25Qb3N0TWVzc2FnZShXS0Nvbm5lY3Rpb25SZWYg
Y29ubmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keVJlZikKIHsKLSAgICB0b0ltcGwoY29ubmVjdGlvblJlZiktPnBvc3RNZXNzYWdlKHRv
SW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChjb25uZWN0aW9uUmVmKS0+cG9zdE1lc3NhZ2UoV2ViS2l0Ojp0
b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwobWVzc2FnZUJv
ZHlSZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tD
b250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IDFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThj
OTcuLjdjZDM4YmUzZjAyMGUzMTNmYmYyMzFlMDEyOTJmZTUzZWQ1NGYzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTMyLDIy
ICszMiwxOSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0NvbnRleHRNZW51SXRlbUdldFR5cGVJRCgpCiB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHRNZW51
SXRlbTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW06OkFQSVR5cGUpOwogI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmpl
Y3Q6OlR5cGU6Ok51bGwpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6T2JqZWN0OjpU
eXBlOjpOdWxsKTsKICNlbmRpZgogfQogCiBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRN
ZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgV0tTdHJpbmdS
ZWYgdGl0bGUsIGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygp
LCBlbmFibGVkLCBmYWxzZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JldlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhKFdlYkNvcmU6OkFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdlYktp
dDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGZhbHNlKSkubGVha1JlZigpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsK
QEAgLTU5LDcgKzU2LDcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1D
cmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFcKIFdLQ29udGV4dE1lbnVJ
dGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVBY3Rpb24oV0tDb250ZXh0
TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNo
ZWNrZWQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKENoZWNrYWJs
ZUFjdGlvblR5cGUsIHRvSW1wbCh0YWcpLCB0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxl
ZCwgY2hlY2tlZCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhKFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdl
YktpdDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGNoZWNrZWQpKS5sZWFrUmVm
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGFnKTsKICAgICBVTlVTRURfUEFSQU0odGl0
bGUpOwpAQCAtNzIsNyArNjksNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51
SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogV0tDb250ZXh0
TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYg
dGl0bGUsIGJvb2wgZW5hYmxlZCwgV0tBcnJheVJlZiBzdWJtZW51SXRlbXMpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZSh0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxlZCwgdG9JbXBsKHN1Ym1lbnVJ
dGVtcykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwg
ZW5hYmxlZCwgV2ViS2l0Ojp0b0ltcGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CkBA
IC04NCw3ICs4MSw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3Jl
YXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuCiBXS0NvbnRleHRNZW51SXRl
bVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OnNlcGFyYXRv
ckl0ZW0oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCkBAIC05Myw3ICs5MCw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJ
dGVtU2VwYXJhdG9ySXRlbSgpCiBXS0NvbnRleHRNZW51SXRlbVRhZyBXS0NvbnRleHRNZW51SXRl
bUdldFRhZyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS5hY3Rp
b24oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikt
PmRhdGEoKS5hY3Rpb24oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gdG9BUEkoQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOwpAQCAtMTAzLDcgKzEw
MCw3IEBAIFdLQ29udGV4dE1lbnVJdGVtVGFnIFdLQ29udGV4dE1lbnVJdGVtR2V0VGFnKFdLQ29u
dGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0
TWVudUl0ZW1HZXRUeXBlKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0
YSgpLnR5cGUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRl
bVJlZiktPmRhdGEoKS50eXBlKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7
CiAgICAgcmV0dXJuIHRvQVBJKEFjdGlvblR5cGUpOwpAQCAtMTEzLDcgKzExMCw3IEBAIFdLQ29u
dGV4dE1lbnVJdGVtVHlwZSBXS0NvbnRleHRNZW51SXRlbUdldFR5cGUoV0tDb250ZXh0TWVudUl0
ZW1SZWYgaXRlbVJlZikKIFdLU3RyaW5nUmVmIFdLQ29udGV4dE1lbnVJdGVtQ29weVRpdGxlKFdL
Q29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLnRpdGxlKCku
aW1wbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChp
dGVtUmVmKS0+ZGF0YSgpLnRpdGxlKCkuaW1wbCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGl0ZW1SZWYpOwogICAgIHJldHVybiAwOwpAQCAtMTIzLDcgKzEyMCw3IEBAIFdLU3RyaW5nUmVm
IFdLQ29udGV4dE1lbnVJdGVtQ29weVRpdGxlKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYp
CiBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0RW5hYmxlZChXS0NvbnRleHRNZW51SXRlbVJlZiBp
dGVtUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0ltcGwo
aXRlbVJlZiktPmRhdGEoKS5lbmFibGVkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGl0
ZW1SZWYpLT5kYXRhKCkuZW5hYmxlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJl
Zik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMzLDcgKzEzMCw3IEBAIGJvb2wgV0tDb250ZXh0
TWVudUl0ZW1HZXRFbmFibGVkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBib29sIFdL
Q29udGV4dE1lbnVJdGVtR2V0Q2hlY2tlZChXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQog
ewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZikt
PmRhdGEoKS5jaGVja2VkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpLT5k
YXRhKCkuY2hlY2tlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTQzLDcgKzE0MCw3IEBAIGJvb2wgV0tDb250ZXh0TWVudUl0ZW1H
ZXRDaGVja2VkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS0FycmF5UmVmIFdLQ29u
dGV4dE1lbnVDb3B5U3VibWVudUl0ZW1zKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwoaXRl
bVJlZiktPnN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+c3VibWVudUl0ZW1zQXNBUElB
cnJheSgpLmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gMDsKQEAgLTE1Myw3ICsxNTAsNyBAQCBXS0FycmF5UmVmIFdLQ29udGV4dE1lbnVD
b3B5U3VibWVudUl0ZW1zKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS1R5cGVSZWYg
V0tDb250ZXh0TWVudUl0ZW1HZXRVc2VyRGF0YShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVm
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
aXRlbVJlZiktPnVzZXJEYXRhKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
dG9JbXBsKGl0ZW1SZWYpLT51c2VyRGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0
ZW1SZWYpOwogICAgIHJldHVybiAwOwpAQCAtMTYzLDcgKzE2MCw3IEBAIFdLVHlwZVJlZiBXS0Nv
bnRleHRNZW51SXRlbUdldFVzZXJEYXRhKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB2
b2lkIFdLQ29udGV4dE1lbnVJdGVtU2V0VXNlckRhdGEoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRl
bVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIHRvSW1wbChpdGVtUmVmKS0+c2V0VXNlckRhdGEodG9JbXBsKHVzZXJEYXRhUmVmKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPnNldFVzZXJEYXRhKFdlYktpdDo6dG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAgICBV
TlVTRURfUEFSQU0odXNlckRhdGFSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGF0YS5j
cHAKaW5kZXggZmRiY2E3M2RjYjllZWIzNjk4NTAyMDVjZTlmODg0MGMwYTMyZDQ2MS4uMTNmNzlk
OTIxNmQ0YjYyZjMxNjVkOTQ5YzNmMzRjNmVmZTg4NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS0RhdGEuY3BwCkBAIC0yOSwyNCArMjksMjIgQEAKICNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdL
VHlwZUlEIFdLRGF0YUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RGF0YTo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpEYXRhOjpBUElUeXBlKTsK
IH0KIAogV0tEYXRhUmVmIFdLRGF0YUNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkRhdGE6OmNyZWF0ZShieXRl
cywgc2l6ZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpEYXRh
OjpjcmVhdGUoYnl0ZXMsIHNpemUpLmxlYWtSZWYoKSk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIFdLRGF0YUdldEJ5dGVzKFdLRGF0YVJlZiBkYXRhUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwoZGF0YVJlZiktPmJ5dGVzKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRhdGFSZWYp
LT5ieXRlcygpOwogfQogCiBzaXplX3QgV0tEYXRhR2V0U2l6ZShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKGRhdGFSZWYpLT5zaXplKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKGRhdGFSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tEaWN0aW9uYXJ5LmNwcAppbmRleCA2NTRlMWU2MWUwNmYwYjBmN2U4M2ZkNmMyN2RhYWJm
MzFlMTM4Y2RlLi4yZjVhMDBlMDQ4YTRiMjEzOTI0YjYxYzY4NTIxZThkMWIxYzg3MDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAKQEAgLTMwLDMzICsz
MCwzMSBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpEaWN0aW9uYXJ5OjpBUElUeXBlKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRpY3Rpb25hcnk6OkFQSVR5cGUpOwogfQog
CiBXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLRGljdGlvbmFyeUNyZWF0ZShjb25zdCBXS1N0
cmluZ1JlZioga2V5cywgY29uc3QgV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZh
bHVlcykKIHsKICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgbWFwLmFkZCh0b0lt
cGwoa2V5c1tpXSktPnN0cmluZygpLCB0b0ltcGwodmFsdWVzW2ldKSk7CisgICAgICAgIG1hcC5h
ZGQoV2ViS2l0Ojp0b0ltcGwoa2V5c1tpXSktPnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbCh2YWx1
ZXNbaV0pKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RG
TW92ZShtYXApKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRp
Y3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVHlwZVJl
ZiBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVm
LCBXS1N0cmluZ1JlZiBrZXkpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkaWN0aW9uYXJ5
UmVmKS0+Z2V0KHRvSW1wbChrZXkpLT5zdHJpbmcoKSkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKFdlYktpdDo6dG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5nZXQoV2ViS2l0Ojp0b0ltcGwoa2V5
KS0+c3RyaW5nKCkpKTsKIH0KIAogc2l6ZV90IFdLRGljdGlvbmFyeUdldFNpemUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVm
KS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2l6
ZSgpOwogfQogCiBXS0FycmF5UmVmIFdLRGljdGlvbmFyeUNvcHlLZXlzKFdLRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5UmVmKQogewotICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGRpY3Rpb25hcnlS
ZWYpLT5rZXlzKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0
Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPmtleXMoKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcAppbmRleCBjOTQxNTEyMGI4NTMwOWMwNTAz
YTc1MjMxNGEyYTU3NzIxMTYyYzhmLi40NzkzYTU3ZmQyZjE1NGZlYzcxZDk4NGI3OGZiNDhhZDg0
OTI5MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcApAQCAt
MjksMjYgKzI5LDI0IEBACiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tFcnJvckdldFR5
cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RXJyb3I6OkFQSVR5cGUpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RXJyb3I6OkFQSVR5cGUpOwogfQogCiBXS1N0cmluZ1Jl
ZiBXS0Vycm9yQ29weVdLRXJyb3JEb21haW4oKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShB
UEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpKTsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tFcnJvckNvcHlEb21haW4oV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGVycm9yUmVmKS0+ZG9tYWluKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKGVycm9yUmVmKS0+ZG9tYWluKCkpOwogfQog
CiBpbnQgV0tFcnJvckdldEVycm9yQ29kZShXS0Vycm9yUmVmIGVycm9yUmVmKQogewotICAgIGF1
dG8gZXJyb3JDb2RlID0gdG9JbXBsKGVycm9yUmVmKS0+ZXJyb3JDb2RlKCk7CisgICAgYXV0byBl
cnJvckNvZGUgPSBXZWJLaXQ6OnRvSW1wbChlcnJvclJlZiktPmVycm9yQ29kZSgpOwogICAgIHN3
aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBBUEk6OkVycm9yOjpQb2xpY3k6OkNhbm5vdFNo
b3dNSU1FVHlwZToKICAgICAgICAgcmV0dXJuIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dNSU1FVHlw
ZTsKQEAgLTgzLDEwICs4MSwxMCBAQCBpbnQgV0tFcnJvckdldEVycm9yQ29kZShXS0Vycm9yUmVm
IGVycm9yUmVmKQogCiBXS1VSTFJlZiBXS0Vycm9yQ29weUZhaWxpbmdVUkwoV0tFcnJvclJlZiBl
cnJvclJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGVycm9yUmVmKS0+
ZmFpbGluZ1VSTCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6
OnRvSW1wbChlcnJvclJlZiktPmZhaWxpbmdVUkwoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLRXJy
b3JDb3B5TG9jYWxpemVkRGVzY3JpcHRpb24oV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGVycm9yUmVmKS0+bG9jYWxpemVkRGVzY3JpcHRpb24o
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZXJyb3JS
ZWYpLT5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tHZW9tZXRyeS5jcHAKaW5kZXggNGNkNWUzZGE0NzAwYzc1NmY2YjcwYTNkZjM4ZTNmZThl
NWVhOWVkNy4uMmE4YjYzMDU3OWMxNzY5YjA5NmZiNWRjZWU5MTkxY2JmNjhmODZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAKQEAgLTI5LDUwICsyOSw0OCBA
QAogI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU2l6ZUdldFR5cGVJRCh2b2lkKQog
ewotICAgIHJldHVybiB0b0FQSShBUEk6OlNpemU6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6U2l6ZTo6QVBJVHlwZSk7CiB9CiAKIFdLVHlwZUlEIFdLUG9pbnRHZXRU
eXBlSUQodm9pZCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpQb2ludDo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpQb2ludDo6QVBJVHlwZSk7CiB9CiAKIFdLVHlw
ZUlEIFdLUmVjdEdldFR5cGVJRCh2b2lkKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlJlY3Q6
OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6UmVjdDo6QVBJVHlwZSk7
CiB9CiAKIFdLUG9pbnRSZWYgV0tQb2ludENyZWF0ZShXS1BvaW50IHBvaW50KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpQb2ludDo6Y3JlYXRlKHBvaW50KS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlBvaW50OjpjcmVhdGUocG9pbnQpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLU2l6ZVJlZiBXS1NpemVDcmVhdGUoV0tTaXplIHNpemUpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKCZBUEk6OlNpemU6OmNyZWF0ZShzaXplKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OlNpemU6OmNyZWF0ZShzaXplKS5sZWFrUmVmKCkpOwogfQogCiBX
S1JlY3RSZWYgV0tSZWN0Q3JlYXRlKFdLUmVjdCByZWN0KQogewotICAgIHJldHVybiB0b0FQSSgm
QVBJOjpSZWN0OjpjcmVhdGUocmVjdCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmQVBJOjpSZWN0OjpjcmVhdGUocmVjdCkubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdL
U2l6ZUdldFZhbHVlKFdLU2l6ZVJlZiBzaXplKQogewotICAgIHJldHVybiB0b0ltcGwoc2l6ZSkt
PnNpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc2l6ZSktPnNpemUoKTsKIH0KIAog
V0tQb2ludCBXS1BvaW50R2V0VmFsdWUoV0tQb2ludFJlZiBwb2ludCkKIHsKLSAgICByZXR1cm4g
dG9JbXBsKHBvaW50KS0+cG9pbnQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocG9pbnQp
LT5wb2ludCgpOwogfQogCiBXS1JlY3QgV0tSZWN0R2V0VmFsdWUoV0tSZWN0UmVmIHJlY3QpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChyZWN0KS0+cmVjdCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChyZWN0KS0+cmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2Uu
Y3BwCmluZGV4IDY4ZTYzODFkOGMxODk0N2ZlZWQ1YTZjZDczYzI5ZTIxZjFiYzdiNzkuLjMxYjZk
YWViODM4ZmNhM2NiZTY1YmUzYjcwOTY5MTlmNWMwMjAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLSW1hZ2UuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKFdlYkltYWdlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYkltYWdlOjpBUElUeXBlKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIGF1dG8gd2ViSW1hZ2UgPSBX
ZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykp
OworICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoV2ViS2l0Ojp0
b0ludFNpemUoc2l6ZSksIFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIHJl
dHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS1NpemUgV0tJbWFnZUdldFNp
emUoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGltYWdl
UmVmKS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChp
bWFnZVJlZiktPnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS011dGFibGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011
dGFibGVBcnJheS5jcHAKaW5kZXggNWRjODUyNjBmYWRiYWUzMmQ5OGIwMTQ4NWM5MzdmNGRjNmNi
MThhNC4uOWE5MzFjYzYyMmEwY2JkZjc0ZjA4YjUzYzAzMzViZmMwODM2MTZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcApAQCAtMjksMjAgKzI5
LDE4IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tNdXRhYmxlQXJyYXlSZWYgV0tNdXRhYmxlQXJy
YXlDcmVhdGUoKQogewotICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZUFycmF5UmVmPih0
b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKCkubGVha1JlZigpKSk7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8V0tNdXRhYmxlQXJyYXlSZWY+KFdlYktpdDo6dG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0
ZSgpLmxlYWtSZWYoKSkpOwogfQogCiB2b2lkIFdLQXJyYXlBcHBlbmRJdGVtKFdLTXV0YWJsZUFy
cmF5UmVmIGFycmF5UmVmLCBXS1R5cGVSZWYgaXRlbVJlZikKIHsKLSAgICB0b0ltcGwoYXJyYXlS
ZWYpLT5lbGVtZW50cygpLmFwcGVuZCh0b0ltcGwoaXRlbVJlZikpOworICAgIFdlYktpdDo6dG9J
bXBsKGFycmF5UmVmKS0+ZWxlbWVudHMoKS5hcHBlbmQoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikp
OwogfQogCiB2b2lkIFdLQXJyYXlSZW1vdmVJdGVtQXRJbmRleChXS011dGFibGVBcnJheVJlZiBh
cnJheVJlZiwgc2l6ZV90IGluZGV4KQogewotICAgIHRvSW1wbChhcnJheVJlZiktPmVsZW1lbnRz
KCkucmVtb3ZlKGluZGV4KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChhcnJheVJlZiktPmVsZW1lbnRz
KCkucmVtb3ZlKGluZGV4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCA5NmI4OWJkNDU2NDg0ZDUxYzBhN2ZiM2E1
NzljOWU1ZDljZGE4NDdkLi43ZGIyMTE2ODBlMjg3ZjQ4NWJhMTM2YTkxYzE3YzhhOWY4ZDU3NTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9u
YXJ5LmNwcApAQCAtMjksMTUgKzI5LDEzIEBACiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS011
dGFibGVEaWN0aW9uYXJ5UmVmIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKQogewotICAgIHJl
dHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+KHRvQVBJKCZBUEk6OkRpY3Rp
b25hcnk6OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+KFdlYktpdDo6dG9BUEkoJkFQSTo6RGljdGlvbmFyeTo6Y3JlYXRl
KCkubGVha1JlZigpKSk7CiB9CiAKIGJvb2wgV0tEaWN0aW9uYXJ5U2V0SXRlbShXS011dGFibGVE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nUmVmIGtleVJlZiwgV0tUeXBlUmVm
IGl0ZW1SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2V0KHRvSW1w
bChrZXlSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKGl0ZW1SZWYpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNldChXZWJLaXQ6OnRvSW1wbChrZXlSZWYpLT5zdHJp
bmcoKSwgV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS051bWJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS051bWJlci5jcHAKaW5kZXggNDE4ZTAyOWVhNjdkYmYzYTZhMWZlY2MwNzUzODdjYzZh
MjE3NGQ4Ni4uMTlmOWVlMDc5NmMzYzRhNzYyYThlMTZkM2RhZjNkMGUyNDdiZmJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcApAQCAtMjksNTIgKzI5LDUwIEBACiAj
aW5jbHVkZSAiQVBJTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQm9vbGVhbkdldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6Qm9vbGVhbjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoQVBJOjpCb29sZWFuOjpBUElUeXBlKTsKIH0KIAogV0tCb29sZWFuUmVmIFdLQm9vbGVh
bkNyZWF0ZShib29sIHZhbHVlKQogewogICAgIGF1dG8gYm9vbGVhbk9iamVjdCA9IEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkoJmJvb2xlYW5PYmplY3QubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVm
KCkpOwogfQogCiBib29sIFdLQm9vbGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwoYm9vbGVhblJlZiktPnZhbHVlKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKGJvb2xlYW5SZWYpLT52YWx1ZSgpOwogfQogCiBXS1R5cGVJRCBXS0Rv
dWJsZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RG91YmxlOjpBUElUeXBl
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRvdWJsZTo6QVBJVHlwZSk7CiB9CiAK
IFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRlKGRvdWJsZSB2YWx1ZSkKIHsKICAgICBhdXRvIGRv
dWJsZU9iamVjdCA9IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQ
SSgmZG91YmxlT2JqZWN0LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmRv
dWJsZU9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0Rv
dWJsZVJlZiBkb3VibGVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkb3VibGVSZWYpLT52YWx1
ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkb3VibGVSZWYpLT52YWx1ZSgpOwogfQog
CiBXS1R5cGVJRCBXS1VJbnQ2NEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6
VUludDY0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVJbnQ2NDo6
QVBJVHlwZSk7CiB9CiAKIFdLVUludDY0UmVmIFdLVUludDY0Q3JlYXRlKHVpbnQ2NF90IHZhbHVl
KQogewogICAgIGF1dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmdWludDY0T2JqZWN0LmxlYWtSZWYoKSk7CiB9CiAKIHVpbnQ2NF90IFdL
VUludDY0R2V0VmFsdWUoV0tVSW50NjRSZWYgdWludDY0UmVmKQogewotICAgIHJldHVybiB0b0lt
cGwodWludDY0UmVmKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodWludDY0
UmVmKS0+dmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAKaW5kZXggZTNhZTRmNWYwMzI1OGFhMTBhNmFiNWFiYWIzNGM2
YWYwYmRkMzMwOS4uNTJjZmJmNjBjYzM3N2JjMDU0M2QwODYwOGZmOTJiM2NjMDU2MmI0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHAKQEAgLTMwLDggKzMwLDYgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2lu
Y2x1ZGUgIldLU2hhcmVkQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBX
S1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpCiB7CiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLUmVuZGVyTGF5ZXIuY3BwCmluZGV4IDIwNzI2ZjRlZTI5MmQ5N2EwYWVmNWM0YmEyYTZh
M2ZlMjQwYTA5NGQuLjk0Yzg1ZTkxM2Y5Y2Q1MDVhNDNiNDM4MGYwMzY5MzkyNzI3NGE3ZDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMCw4
MCArMzAsNzcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJM
YXllci5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KIFdLVHlwZUlEIFdLUmVuZGVyTGF5ZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0
b0FQSShXZWJSZW5kZXJMYXllcjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
V2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6QVBJVHlwZSk7CiB9CiAKIFdLUmVuZGVyT2JqZWN0UmVm
IFdLUmVuZGVyTGF5ZXJHZXRSZW5kZXJlcihXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVm
KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigp
KTsKKyAgICByZXR1cm4gdG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5k
ZXJlcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tSZW5kZXJMYXllckNvcHlSZW5kZXJlck5hbWUo
V0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVuZGVyZXIoKS0+bmFtZSgpKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPnJl
bmRlcmVyKCktPm5hbWUoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyTGF5ZXJDb3B5RWxl
bWVudFRhZ05hbWUoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBXZWJS
ZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOworICAgIFdl
YktpdDo6V2ViUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVy
TGF5ZXJSZWYpOwogICAgIGlmICghcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRUYWdO
YW1lKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJMYXllci0+
cmVuZGVyZXIoKS0+ZWxlbWVudFRhZ05hbWUoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRv
Q29waWVkQVBJKHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5lbGVtZW50VGFnTmFtZSgpKTsKIAog
ICAgIHJldHVybiBudWxscHRyOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlckxheWVyQ29weUVs
ZW1lbnRJRChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIFdlYlJlbmRl
ckxheWVyKiByZW5kZXJMYXllciA9IHRvSW1wbChyZW5kZXJMYXllclJlZik7CisgICAgV2ViS2l0
OjpXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXll
clJlZik7CiAgICAgaWYgKCFyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudElEKCkuaXNO
dWxsKCkpCi0gICAgICAgIHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIo
KS0+ZWxlbWVudElEKCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShyZW5k
ZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudElEKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldEVsZW1lbnRDbGFzc05hbWVzKFdLUmVu
ZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChy
ZW5kZXJMYXllclJlZiktPnJlbmRlcmVyKCktPmVsZW1lbnRDbGFzc05hbWVzKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVuZGVy
ZXIoKS0+ZWxlbWVudENsYXNzTmFtZXMoKSk7CiB9CiAKIFdLUmVjdCBXS1JlbmRlckxheWVyR2V0
QWJzb2x1dGVCb3VuZHMoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBJ
bnRSZWN0IGJvdW5kcyA9IHRvSW1wbChyZW5kZXJMYXllclJlZiktPmFic29sdXRlQm91bmRpbmdC
b3goKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0IGJvdW5kcyA9IFdlYktpdDo6dG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+YWJzb2x1dGVCb3VuZGluZ0JveCgpOwogICAgIHJldHVybiBXS1JlY3RNYWtl
KGJvdW5kcy54KCksIGJvdW5kcy55KCksIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkp
OwogfQogCiBib29sIFdLUmVuZGVyTGF5ZXJJc0NsaXBwaW5nKFdLUmVuZGVyTGF5ZXJSZWYgcmVu
ZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzQ2xp
cHBpbmcoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0Ns
aXBwaW5nKCk7CiB9CiAKIGJvb2wgV0tSZW5kZXJMYXllcklzQ2xpcHBlZChXS1JlbmRlckxheWVy
UmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyTGF5ZXJSZWYp
LT5pc0NsaXBwZWQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYp
LT5pc0NsaXBwZWQoKTsKIH0KIAogYm9vbCBXS1JlbmRlckxheWVySXNSZWZsZWN0aW9uKFdLUmVu
ZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJM
YXllclJlZiktPmlzUmVmbGVjdGlvbigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5k
ZXJMYXllclJlZiktPmlzUmVmbGVjdGlvbigpOwogfQogCiBXS0NvbXBvc2l0aW5nTGF5ZXJUeXBl
IFdLUmVuZGVyTGF5ZXJHZXRDb21wb3NpdGluZ0xheWVyVHlwZShXS1JlbmRlckxheWVyUmVmIHJl
bmRlckxheWVyUmVmKQogewotICAgIHN3aXRjaCAodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+Y29t
cG9zaXRpbmdMYXllclR5cGUoKSkgewotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6Ok5vbmU6Cisg
ICAgc3dpdGNoIChXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmNvbXBvc2l0aW5nTGF5
ZXJUeXBlKCkpIHsKKyAgICBjYXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6Ok5vbmU6CiAgICAg
ICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xheWVyVHlwZU5vbmU7Ci0gICAgY2FzZSBXZWJSZW5k
ZXJMYXllcjo6Tm9ybWFsOgorICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6Tm9ybWFs
OgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVOb3JtYWw7Ci0gICAgY2Fz
ZSBXZWJSZW5kZXJMYXllcjo6VGlsZWQ6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVy
OjpUaWxlZDoKICAgICAgICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlVGlsZWQ7Ci0g
ICAgY2FzZSBXZWJSZW5kZXJMYXllcjo6TWVkaWE6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRl
ckxheWVyOjpNZWRpYToKICAgICAgICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlTWVk
aWE7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXllcjo6Q29udGFpbmVyOgorICAgIGNhc2UgV2ViS2l0
OjpXZWJSZW5kZXJMYXllcjo6Q29udGFpbmVyOgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRp
bmdMYXllclR5cGVDb250YWluZXI7CiAgICAgfQogCkBAIC0xMTMsMjUgKzExMCwyNSBAQCBXS0Nv
bXBvc2l0aW5nTGF5ZXJUeXBlIFdLUmVuZGVyTGF5ZXJHZXRDb21wb3NpdGluZ0xheWVyVHlwZShX
S1JlbmRlckxheWVyUmVmIHJlbgogCiBXS19FWFBPUlQgZG91YmxlIFdLUmVuZGVyTGF5ZXJHZXRC
YWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZShXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5iYWNraW5nU3RvcmVNZW1v
cnlFc3RpbWF0ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZikt
PmJhY2tpbmdTdG9yZU1lbW9yeUVzdGltYXRlKCk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJM
YXllckdldE5lZ2F0aXZlWk9yZGVyTGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVm
KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5uZWdhdGl2ZVpP
cmRlckxpc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVu
ZGVyTGF5ZXJSZWYpLT5uZWdhdGl2ZVpPcmRlckxpc3QoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tS
ZW5kZXJMYXllckdldE5vcm1hbEZsb3dMaXN0KFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPm5vcm1hbEZs
b3dMaXN0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+bm9ybWFsRmxvd0xpc3QoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJM
YXllckdldFBvc2l0aXZlWk9yZGVyTGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVm
KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5wb3NpdGl2ZVpP
cmRlckxpc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVu
ZGVyTGF5ZXJSZWYpLT5wb3NpdGl2ZVpPcmRlckxpc3QoKSk7CiB9CiAKIFdLUmVuZGVyTGF5ZXJS
ZWYgV0tSZW5kZXJMYXllckdldEZyYW1lQ29udGVudHNMYXllcihXS1JlbmRlckxheWVyUmVmIHJl
bmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYp
LT5mcmFtZUNvbnRlbnRzTGF5ZXIoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6dG9JbXBs
KHJlbmRlckxheWVyUmVmKS0+ZnJhbWVDb250ZW50c0xheWVyKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwCmluZGV4IGNmZjcxYzdjZDg2ODhm
NTE0MzdhZWQ3NGEzODQ3NWFhNjJmNzhjYjIuLmJhMTIzOTBiNjMyODcxYWE0Y2ExYTUzNmZiODhm
YWFkNjEzNWE0MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVu
ZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlck9i
amVjdC5jcHAKQEAgLTMwLDY5ICszMCw2NiBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldlYlJlbmRlck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLUmVuZGVyT2JqZWN0R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9BUEkoV2ViUmVuZGVyT2JqZWN0OjpBUElUeXBlKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6QVBJVHlwZSk7CiB9
CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyT2JqZWN0Q29weU5hbWUoV0tSZW5kZXJPYmplY3RSZWYg
cmVuZGVyT2JqZWN0UmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVuZGVy
T2JqZWN0UmVmKS0+bmFtZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJL
aXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5uYW1lKCkpOwogfQogCiBXS1N0cmluZ1JlZiBX
S1JlbmRlck9iamVjdENvcHlUZXh0U25pcHBldChXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmpl
Y3RSZWYpCiB7Ci0gICAgV2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSB0b0ltcGwocmVu
ZGVyT2JqZWN0UmVmKTsKKyAgICBXZWJLaXQ6OldlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
ID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKICAgICBpZiAoIXJlbmRlck9iamVj
dC0+dGV4dFNuaXBwZXQoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJl
bmRlck9iamVjdC0+dGV4dFNuaXBwZXQoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29w
aWVkQVBJKHJlbmRlck9iamVjdC0+dGV4dFNuaXBwZXQoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAogdW5zaWduZWQgV0tSZW5kZXJPYmplY3RHZXRUZXh0TGVuZ3RoKFdLUmVuZGVyT2Jq
ZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlck9iamVj
dFJlZiktPnRleHRMZW5ndGgoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2Jq
ZWN0UmVmKS0+dGV4dExlbmd0aCgpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENv
cHlFbGVtZW50VGFnTmFtZShXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0g
ICAgV2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVm
KTsKKyAgICBXZWJLaXQ6OldlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0
b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKICAgICBpZiAoIXJlbmRlck9iamVjdC0+ZWxlbWVudFRh
Z05hbWUoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlck9iamVj
dC0+ZWxlbWVudFRhZ05hbWUoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJ
KHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogV0tTdHJpbmdSZWYgV0tSZW5kZXJPYmplY3RDb3B5RWxlbWVudElEKFdLUmVuZGVyT2Jq
ZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9i
amVjdCA9IHRvSW1wbChyZW5kZXJPYmplY3RSZWYpOworICAgIFdlYktpdDo6V2ViUmVuZGVyT2Jq
ZWN0KiByZW5kZXJPYmplY3QgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpOwogICAg
IGlmICghcmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+ZWxlbWVudElEKCkpOworICAgICAgICByZXR1cm4g
V2ViS2l0Ojp0b0NvcGllZEFQSShyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKIAogICAgIHJl
dHVybiBudWxscHRyOwogfQogCiBXS0FycmF5UmVmIFdLUmVuZGVyT2JqZWN0R2V0RWxlbWVudENs
YXNzTmFtZXMoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIHJldHVy
biB0b0FQSSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+ZWxlbWVudENsYXNzTmFtZXMoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+
ZWxlbWVudENsYXNzTmFtZXMoKSk7CiB9CiAKIFdLUG9pbnQgV0tSZW5kZXJPYmplY3RHZXRBYnNv
bHV0ZVBvc2l0aW9uKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBJ
bnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uID0gdG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmFic29s
dXRlUG9zaXRpb24oKTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uID0g
V2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+YWJzb2x1dGVQb3NpdGlvbigpOwogICAg
IHJldHVybiBXS1BvaW50TWFrZShhYnNvbHV0ZVBvc2l0aW9uLngoKSwgYWJzb2x1dGVQb3NpdGlv
bi55KCkpOwogfQogCiBXS1JlY3QgV0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QoV0tSZW5kZXJP
YmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIEludFJlY3QgZnJhbWVSZWN0ID0gdG9J
bXBsKHJlbmRlck9iamVjdFJlZiktPmZyYW1lUmVjdCgpOworICAgIFdlYkNvcmU6OkludFJlY3Qg
ZnJhbWVSZWN0ID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+ZnJhbWVSZWN0KCk7
CiAgICAgcmV0dXJuIFdLUmVjdE1ha2UoZnJhbWVSZWN0LngoKSwgZnJhbWVSZWN0LnkoKSwgZnJh
bWVSZWN0LndpZHRoKCksIGZyYW1lUmVjdC5oZWlnaHQoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tS
ZW5kZXJPYmplY3RHZXRDaGlsZHJlbihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYp
CiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5jaGlsZHJlbigp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RS
ZWYpLT5jaGlsZHJlbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tTZWN1cml0eU9yaWdpblJlZi5jcHAKaW5kZXggYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNj
NGYzZjBiZDUzZDE1MS4uNWU2YmU3NGI4ZGE2ZDRiOTM2MDM3OTBjYTRhZDE3NmQxZjY2MmM2NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJl
Zi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJl
Zi5jcHAKQEAgLTMwLDUzICszMCw1MSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KIFdLVHlwZUlEIFdLU2VjdXJpdHlPcmlnaW5HZXRUeXBlSUQoKQogewotICAgIHJldHVy
biB0b0FQSShBUEk6OlNlY3VyaXR5T3JpZ2luOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShBUEk6OlNlY3VyaXR5T3JpZ2luOjpBUElUeXBlKTsKIH0KIAogV0tTZWN1cml0eU9y
aWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhXS1N0cmluZ1JlZiBzdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKHN0cmluZyktPnN0
cmluZygpKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpTZWN1
cml0eU9yaWdpbjo6Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3Ry
aW5nKFdlYktpdDo6dG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKIH0KIAog
V0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNlSWRl
bnRpZmllcihXS1N0cmluZ1JlZiBpZGVudGlmaWVyKQogewotICAgIGF1dG8gb3JpZ2luID0gV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvSW1wbChp
ZGVudGlmaWVyKS0+c3RyaW5nKCkpOworICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFdlYktpdDo6dG9JbXBsKGlkZW50
aWZpZXIpLT5zdHJpbmcoKSk7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwotICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdp
bi52YWx1ZSgpLnNlY3VyaXR5T3JpZ2luKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4udmFsdWUoKS5zZWN1
cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2Vj
dXJpdHlPcmlnaW5DcmVhdGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3Qs
IGludCBwb3J0KQogewotICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGUodG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3Ry
aW5nKCksIHBvcnQpOwotICAgIHJldHVybiB0b0FQSSgmc2VjdXJpdHlPcmlnaW4ubGVha1JlZigp
KTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
KFdlYktpdDo6dG9JbXBsKHByb3RvY29sKS0+c3RyaW5nKCksIFdlYktpdDo6dG9JbXBsKGhvc3Qp
LT5zdHJpbmcoKSwgcG9ydCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJnNlY3VyaXR5T3Jp
Z2luLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5RGF0
YWJhc2VJZGVudGlmaWVyKFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0g
ICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3Jp
Z2luKCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2lu
KCkuZGF0YSgpLmRhdGFiYXNlSWRlbnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1
cml0eU9yaWdpbkNvcHlUb1N0cmluZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2lu
KQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpLnRvU3RyaW5nKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJ
KFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmlu
ZygpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChXS1Nl
Y3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQ
SSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wcm90b2NvbCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tT
ZWN1cml0eU9yaWdpbkNvcHlIb3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4p
CiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3Vy
aXR5T3JpZ2luKCkuaG9zdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJL
aXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKTsKIH0K
IAogdW5zaWduZWQgc2hvcnQgV0tTZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1cml0eU9yaWdp
blJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHNlY3VyaXR5T3JpZ2lu
KS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVf
b3IoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYWFkOGVhZTQ0N2VhMTMxMjNhOTZmMjY4NmZmZTY2
ZTQ5NmZkMzlkOC4uYzRkY2JhM2ZlYTRkZjVjNTIzOTJiNzcxYzAwN2MzYTkwMjk3NzE1MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcApAQCAtMjksMjAgKzI5LDE4IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlR2V0VHlwZUlEKCkKIHsK
LSAgICByZXR1cm4gdG9BUEkoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFQSVR5cGUpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBUElU
eXBlKTsKIH0KIAogV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgV0tTZXJpYWxpemVkU2NyaXB0
VmFsdWVDcmVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0g
ICAgcmV0dXJuIHRvQVBJKHNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKHNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVm
IFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWVSZWYgc2NyaXB0VmFsdWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzY3JpcHRWYWx1ZVJlZiktPmRlc2Vy
aWFsaXplKGNvbnRleHRSZWYsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBs
KHNjcmlwdFZhbHVlUmVmKS0+ZGVzZXJpYWxpemUoY29udGV4dFJlZiwgZXhjZXB0aW9uKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAppbmRleCA3NjdhYThkOTE0YjBj
Zjc1MTk2ZTIwYzM2M2I4MDYzOGZmZDdkM2Q5Li4wMmFhNGNjMGYwYjY2NzNlMjM2YTA3YTgxYzQ2
ZmUzOWVhYjdmZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0
cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBA
IC0zMSwyNiArMzEsMjQgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhy
ZWFkaW5nLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KIAot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tTdHJpbmdHZXRUeXBlSUQoKQog
ewotICAgIHJldHVybiB0b0FQSShBUEk6OlN0cmluZzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpTdHJpbmc6OkFQSVR5cGUpOwogfQogCiBXS1N0cmluZ1JlZiBXS1N0
cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OlN0cmluZzo6Y3JlYXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJp
bmcpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlN0cmluZzo6
Y3JlYXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkpOwogfQogCiBi
b29sIFdLU3RyaW5nSXNFbXB0eShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpOwogfQogCiBz
aXplX3QgV0tTdHJpbmdHZXRMZW5ndGgoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewotICAgIHJl
dHVybiB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0aCgpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCk7CiB9CiAK
IHNpemVfdCBXS1N0cmluZ0dldENoYXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0No
YXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlckxlbmd0aCkKQEAgLTU4LDcgKzU2LDcgQEAgc2l6ZV90
IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIFdLQ2hhciogYnVm
ZmVyLCBzaXplX3QgYnVmZmUKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXS0NoYXIpID09IHNp
emVvZihVQ2hhciksICJTaXplIG9mIFdLQ2hhciBtdXN0IG1hdGNoIHNpemUgb2YgVUNoYXIiKTsK
IAogICAgIHVuc2lnbmVkIHVuc2lnbmVkQnVmZmVyTGVuZ3RoID0gc3RkOjptaW48c2l6ZV90Pihi
dWZmZXJMZW5ndGgsIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAg
YXV0byBzdWJzdHJpbmcgPSB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0cmlu
ZygwLCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBXZWJLaXQ6
OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkuc3Vic3RyaW5nKDAsIHVuc2lnbmVkQnVm
ZmVyTGVuZ3RoKTsKIAogICAgIHN1YnN0cmluZy5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChy
ZWludGVycHJldF9jYXN0PFVDaGFyKj4oYnVmZmVyKSk7CiAgICAgcmV0dXJuIHN1YnN0cmluZy5s
ZW5ndGgoKTsKQEAgLTY2LDcgKzY0LDcgQEAgc2l6ZV90IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhX
S1N0cmluZ1JlZiBzdHJpbmdSZWYsIFdLQ2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmUKIAogc2l6
ZV90IFdLU3RyaW5nR2V0TWF4aW11bVVURjhDU3RyaW5nU2l6ZShXS1N0cmluZ1JlZiBzdHJpbmdS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3Ro
KCkgKiAzICsgMTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5n
VmlldygpLmxlbmd0aCgpICogMyArIDE7CiB9CiAKIGVudW0gU3RyaWN0VHlwZSB7IE5vblN0cmlj
dCA9IGZhbHNlLCBTdHJpY3QgPSB0cnVlIH07CkBAIC03Nyw3ICs3NSw3IEBAIHNpemVfdCBXS1N0
cmluZ0dldFVURjhDU3RyaW5nSW1wbChXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNoYXIqIGJ1ZmZl
ciwgc2l6ZV90IGJ1CiAgICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gMDsKIAot
ICAgIGF1dG8gc3RyaW5nVmlldyA9IHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCk7Cisg
ICAgYXV0byBzdHJpbmdWaWV3ID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmll
dygpOwogCiAgICAgY2hhciogcCA9IGJ1ZmZlcjsKICAgICBXVEY6OlVuaWNvZGU6OkNvbnZlcnNp
b25SZXN1bHQgcmVzdWx0OwpAQCAtMTA5LDMyICsxMDcsMzIgQEAgc2l6ZV90IFdLU3RyaW5nR2V0
VVRGOENTdHJpbmdOb25TdHJpY3QoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZmZXIs
IHNpemUKIAogYm9vbCBXS1N0cmluZ0lzRXF1YWwoV0tTdHJpbmdSZWYgYVJlZiwgV0tTdHJpbmdS
ZWYgYlJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gdG9J
bXBsKGJSZWYpLT5zdHJpbmdWaWV3KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGFSZWYp
LT5zdHJpbmdWaWV3KCkgPT0gV2ViS2l0Ojp0b0ltcGwoYlJlZiktPnN0cmluZ1ZpZXcoKTsKIH0K
IAogYm9vbCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nKFdLU3RyaW5nUmVmIGFSZWYsIGNv
bnN0IGNoYXIqIGIpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhZGQgYSBmYXN0IHBhdGgg
dGhhdCBhdm9pZHMgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiB0aGUgc3RyaW5nIGlzIGFsbCBBU0NJ
ST8KICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGV2ZW4gdGhlIGdlbmVyYWwgY2FzZSBtb3JlIGVm
ZmljaWVudGx5IGlmIHdlIHdyaXRlIGEgZnVuY3Rpb24gaW4gU3RyaW5nVmlldyB0aGF0IHVuZGVy
c3RhbmRzIFVURi04IEMgc3RyaW5ncy4KLSAgICByZXR1cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdW
aWV3KCkgPT0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGIpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChhUmVmKS0+c3RyaW5nVmlldygpID09IFdURjo6U3RyaW5nOjpmcm9tVVRGOChiKTsKIH0K
IAogYm9vbCBXS1N0cmluZ0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKFdLU3RyaW5n
UmVmIGFSZWYsIGNvbnN0IGNoYXIqIGIpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhZGQg
YSBmYXN0IHBhdGggdGhhdCBhdm9pZHMgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiB0aGUgc3RyaW5n
IGlzIGFsbCBBU0NJST8KICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGV2ZW4gdGhlIGdlbmVyYWwg
Y2FzZSBtb3JlIGVmZmljaWVudGx5IGlmIHdlIHdyaXRlIGEgZnVuY3Rpb24gaW4gU3RyaW5nVmll
dyB0aGF0IHVuZGVyc3RhbmRzIFVURi04IEMgc3RyaW5ncy4KLSAgICByZXR1cm4gZXF1YWxJZ25v
cmluZ0FTQ0lJQ2FzZSh0b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSwgV1RGOjpTdHJpbmc6OmZy
b21VVEY4KGIpKTsKKyAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShXZWJLaXQ6OnRv
SW1wbChhUmVmKS0+c3RyaW5nVmlldygpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYikpOwogfQog
CiBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0
cmluZ1JlZikKIHsKICAgICBhdXRvIGFwaVN0cmluZyA9IGpzU3RyaW5nUmVmID8gQVBJOjpTdHJp
bmc6OmNyZWF0ZShqc1N0cmluZ1JlZi0+c3RyaW5nKCkpIDogQVBJOjpTdHJpbmc6OmNyZWF0ZU51
bGwoKTsKIAotICAgIHJldHVybiB0b0FQSSgmYXBpU3RyaW5nLmxlYWtSZWYoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoJmFwaVN0cmluZy5sZWFrUmVmKCkpOwogfQogCiBKU1N0cmluZ1Jl
ZiBXS1N0cmluZ0NvcHlKU1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7CiAgICAgSlND
Ojppbml0aWFsaXplVGhyZWFkaW5nKCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUodG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZygpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3Ry
aW5nKCkpLmxlYWtSZWYoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLVHlwZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCmlu
ZGV4IGZkMjBlNmZmZjFlMDRmMDRhN2U5OWNkNTVkNDg2YTRkMTNmOWE2OTEuLjQxNjlkYTg0ZmU3
Yzc0ZWY1ODRlNWYyZWM1OTFiOWVlNGRlNmZkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tUeXBlLmNwcApAQCAtMjksMjEgKzI5LDE5IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLR2V0VHlwZUlEKFdLVHlwZVJlZiB0eXBlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0
b0ltcGwodHlwZVJlZiktPnR5cGUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0
Ojp0b0ltcGwodHlwZVJlZiktPnR5cGUoKSk7CiB9CiAKIFdLVHlwZVJlZiBXS1JldGFpbihXS1R5
cGVSZWYgdHlwZVJlZikKIHsKLSAgICB0b0ltcGwodHlwZVJlZiktPnJlZigpOworICAgIFdlYktp
dDo6dG9JbXBsKHR5cGVSZWYpLT5yZWYoKTsKIAogICAgIHJldHVybiB0eXBlUmVmOwogfQogCiB2
b2lkIFdLUmVsZWFzZShXS1R5cGVSZWYgdHlwZVJlZikKIHsKLSAgICB0b0ltcGwodHlwZVJlZikt
PmRlcmVmKCk7CisgICAgV2ViS2l0Ojp0b0ltcGwodHlwZVJlZiktPmRlcmVmKCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAKaW5kZXggZjFhMWVhNTQ2ODIwODE3MTMxMjNiMTcy
MGZiMzRiZmVlMjVkNWNjOC4uMTdjOWE2MmQzMTc4ZDFiMDUwZjFkN2QxNjkxNTc4NDBkOTYwOWI0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMLmNwcApAQCAtMjgsNDkgKzI4LDQ3IEBA
CiAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQog
V0tUeXBlSUQgV0tVUkxHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVSTDo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVUkw6OkFQSVR5cGUpOwog
fQogCiBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJp
bmcpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVU
Rjgoc3RyaW5nKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpV
Ukw6OmNyZWF0ZShTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpLmxlYWtSZWYoKSk7CiB9CiAKIFdL
VVJMUmVmIFdLVVJMQ3JlYXRlV2l0aEJhc2VVUkwoV0tVUkxSZWYgYmFzZVVSTCwgY29uc3QgY2hh
ciogcmVsYXRpdmUpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKHRvSW1w
bChiYXNlVVJMKSwgU3RyaW5nOjpmcm9tVVRGOChyZWxhdGl2ZSkpLmxlYWtSZWYoKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6VVJMOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwoYmFz
ZVVSTCksIFN0cmluZzo6ZnJvbVVURjgocmVsYXRpdmUpKS5sZWFrUmVmKCkpOwogfQogCiBXS1N0
cmluZ1JlZiBXS1VSTENvcHlTdHJpbmcoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwodXJsKS0+c3RyaW5nKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29w
aWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCktPnN0cmluZygpKTsKIH0KIAogYm9vbCBXS1VSTElz
RXF1YWwoV0tVUkxSZWYgYSwgV0tVUkxSZWYgYikKIHsKLSAgICByZXR1cm4gQVBJOjpVUkw6OmVx
dWFscygqdG9JbXBsKGEpLCAqdG9JbXBsKGIpKTsKKyAgICByZXR1cm4gQVBJOjpVUkw6OmVxdWFs
cygqV2ViS2l0Ojp0b0ltcGwoYSksICpXZWJLaXQ6OnRvSW1wbChiKSk7CiB9CiAKIFdLU3RyaW5n
UmVmIFdLVVJMQ29weUhvc3ROYW1lKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKHVybCktPmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRB
UEkoV2ViS2l0Ojp0b0ltcGwodXJsKS0+aG9zdCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tVUkxD
b3B5U2NoZW1lKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBs
KHVybCktPnByb3RvY29sKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktp
dDo6dG9JbXBsKHVybCktPnByb3RvY29sKCkpOwogfQogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYg
V0tVUkxDb3B5UGF0aChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRv
SW1wbCh1cmwpLT5wYXRoKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktp
dDo6dG9JbXBsKHVybCktPnBhdGgoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMQ29weUxhc3RQ
YXRoQ29tcG9uZW50KFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9J
bXBsKHVybCktPmxhc3RQYXRoQ29tcG9uZW50KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29w
aWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCktPmxhc3RQYXRoQ29tcG9uZW50KCkpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggMTQ5OTU2M2Uz
OWFlN2I5ODZkZTE3MzQ3Njc4ODVmNmFhZDkyOGQzMi4uMjk2Y2FmN2MzMjc1ZTAyNTNkZmVhNmQ2
ODg2NjkzMDJjYmE4MGE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJl
cXVlc3QuY3BwCkBAIC0zMSwzOSArMzEsMzYgQEAKICNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNs
dWRlIDx3dGYvVVJMLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlEKCkKIHsKLSAgICBy
ZXR1cm4gdG9BUEkoQVBJOjpVUkxSZXF1ZXN0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShBUEk6OlVSTFJlcXVlc3Q6OkFQSVR5cGUpOwogfQogCiBXS1VSTFJlcXVlc3RSZWYg
V0tVUkxSZXF1ZXN0Q3JlYXRlV2l0aFdLVVJMKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4g
dG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwoKSwgdG9JbXBsKHVybCktPnN0
cmluZygpKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkxS
ZXF1ZXN0OjpjcmVhdGUoVVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh1cmwpLT5zdHJpbmcoKSkp
LmxlYWtSZWYoKSk7CiB9CiAKIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwoV0tVUkxSZXF1
ZXN0UmVmIHJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChy
ZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQ29waWVkVVJMQVBJKFdlYktpdDo6dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVl
c3QoKS51cmwoKSk7CiB9CiAKIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9y
Q29va2llcyhXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3Bp
ZWRVUkxBUEkodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5maXJzdFBhcnR5
Rm9yQ29va2llcygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6
OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tp
ZXMoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKFdLVVJM
UmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwo
cmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNl
UmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CiB9CiAKIFdLVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVl
c3RDb3B5U2V0dGluZ0hUVFBCb2R5KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS0RhdGFS
ZWYgYm9keSkKIHsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkodG9J
bXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgcmVxdWVzdENvcHkuc2V0
SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShXS0RhdGFHZXRCeXRlcyhib2R5KSwgV0tEYXRhR2V0
U2l6ZShib2R5KSkpOwotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUo
cmVxdWVzdENvcHkpLmxlYWtSZWYoKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3RDb3B5KFdlYktpdDo6dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7
CisgICAgcmVxdWVzdENvcHkuc2V0SFRUUEJvZHkoV2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZShX
S0RhdGFHZXRCeXRlcyhib2R5KSwgV0tEYXRhR2V0U2l6ZShib2R5KSkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q29weSkubGVha1Jl
ZigpKTsKIH0KIAogdm9pZCBXS1VSTFJlcXVlc3RTZXREZWZhdWx0VGltZW91dEludGVydmFsKGRv
dWJsZSB0aW1lb3V0SW50ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1VSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJM
UmVzcG9uc2UuY3BwCmluZGV4IDhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4
Y2YuLjE5OTBjMDMzZWQ4NWNhNmFmNDVhMDdlOTYxYWYwZTI0ODFkNDM3NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0zMCwzOSArMzAsMzcg
QEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLVVJMUmVzcG9uc2VHZXRUeXBlSUQoKQog
ewotICAgIHJldHVybiB0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpBUElUeXBlKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpBUElUeXBlKTsKIH0KIAogV0tVUkxS
ZWYgV0tVUkxSZXNwb25zZUNvcHlVUkwoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsK
LSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VS
ZXNwb25zZSgpLnVybCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJL
aXQ6OnRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS51cmwoKSk7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLVVJMUmVzcG9uc2VDb3B5TUlNRVR5cGUoV0tVUkxSZXNwb25zZVJlZiBy
ZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlc3BvbnNlUmVm
KS0+cmVzb3VyY2VSZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
Q29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgp
Lm1pbWVUeXBlKCkpOwogfQogCiBpbnQzMl90IFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShX
S1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVzcG9u
c2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuaHR0cFN0YXR1
c0NvZGUoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxl
bmFtZShXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuc3VnZ2VzdGVkRmls
ZW5hbWUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwo
cmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9
CiAKIGJvb2wgV0tVUkxSZXNwb25zZUlzQXR0YWNobWVudChXS1VSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3Bv
bnNlKCkuaXNBdHRhY2htZW50KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlc3BvbnNl
UmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmlzQXR0YWNobWVudCgpOwogfQogCiB1aW50MzJfdCBX
S1VSTFJlc3BvbnNlR2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKFdLVVJMUmVzcG9uc2VSZWYgcmVz
cG9uc2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVz
cG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0lt
cGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3Ro
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKaW5kZXggY2VlZGM3Njk2MzMxMzA3MDYyMzk0YWY1NzU3MmU2OWVm
NDQ0ZTg4OC4uZmRlYmE3OTcxMDVhNzgyNjMxOTUyYWNkYWI3YjNiYjg4M2NjZWY4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0
ZXJuLmNwcApAQCAtMzAsMzkgKzMwLDM3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV0tTdHJpbmcuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQg
V0tVc2VyQ29udGVudFVSTFBhdHRlcm5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShB
UEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OkFQSVR5cGUpOwogfQogCiBXS1VzZXJD
b250ZW50VVJMUGF0dGVyblJlZiBXS1VzZXJDb250ZW50VVJMUGF0dGVybkNyZWF0ZShXS1N0cmlu
Z1JlZiBwYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVc2VyQ29udGVudFVS
TFBhdHRlcm46OmNyZWF0ZSh0b0ltcGwocGF0dGVyblJlZiktPnN0cmluZygpKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6
Y3JlYXRlKFdlYktpdDo6dG9JbXBsKHBhdHRlcm5SZWYpLT5zdHJpbmcoKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5Db3B5SG9zdChXS1VzZXJD
b250ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0NvcGll
ZEFQSSh0b0ltcGwodXJsUGF0dGVyblJlZiktPmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPmhvc3QoKSk7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuQ29weVNjaGVtZShXS1VzZXJDb250
ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQ
SSh0b0ltcGwodXJsUGF0dGVyblJlZiktPnNjaGVtZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+c2NoZW1lKCkpOwogfQog
CiBib29sIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuSXNWYWxpZChXS1VzZXJDb250ZW50VVJMUGF0
dGVyblJlZiB1cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJl
ZiktPmlzVmFsaWQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZikt
PmlzVmFsaWQoKTsKIH0KIAogYm9vbCBXS1VzZXJDb250ZW50VVJMUGF0dGVybk1hdGNoZXNVUkwo
V0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZiwgV0tVUkxSZWYgdXJsUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJlZiktPm1hdGNoZXNVUkwodG9XVEZT
dHJpbmcodXJsUmVmKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYp
LT5tYXRjaGVzVVJMKFdlYktpdDo6dG9XVEZTdHJpbmcodXJsUmVmKSk7CiB9CiAKIGJvb2wgV0tV
c2VyQ29udGVudFVSTFBhdHRlcm5NYXRjaGVzU3ViZG9tYWlucyhXS1VzZXJDb250ZW50VVJMUGF0
dGVyblJlZiB1cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJl
ZiktPm1hdGNoZXNTdWJkb21haW5zKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBh
dHRlcm5SZWYpLT5tYXRjaGVzU3ViZG9tYWlucygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKaW5kZXggMzBhZjRkZmE0MWY3MjBh
MWE5NWI1NzI4ZDNmODJmOGMwMzg3Njg3Mi4uY2NmY2M2NjhmMWY1NDE3ZjUwMGMwYjI0OGEzNTQ4
OTk2NmY5MWUxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8v
V0tJbWFnZUNhaXJvLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9X
S0ltYWdlQ2Fpcm8uY3BwCkBAIC0zNCwxOSArMzQsMTYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1Bs
YXRmb3JtQ29udGV4dENhaXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAotdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBjYWlyb19zdXJmYWNlX3Qq
IFdLSW1hZ2VDcmVhdGVDYWlyb1N1cmZhY2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICAv
LyBXZSBjYW5ub3QgcGFzcyBhIFJlZlB0ciB0aHJvdWdoIHRoZSBBUEkgaGVyZSwgc28gd2UganVz
dCBsZWFrIHRoZSByZWZlcmVuY2UuCi0gICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1h
cCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoaW1hZ2VSZWYpLT5iaXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7
CiB9CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoY2Fpcm9fc3Vy
ZmFjZV90KiBzdXJmYWNlLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIEludFNpemUg
aW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19p
bWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIGF1dG8gd2ViSW1hZ2UgPSBX
ZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOworICAg
IFdlYkNvcmU6OkludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRo
KHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOworICAg
IGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJL
aXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9
IHdlYkltYWdlLT5iaXRtYXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGNhaXJv
X3QqIGNyID0gZ3JhcGhpY3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9D
dXJsLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUlu
Zm9DdXJsLmNwcAppbmRleCA3N2YwMmZmMmJhZjk3ODVhZDczZTMwZjBmZWMxMmZhNTBlMTViYmVm
Li42NGQzMDE5MmEzNWJhMjk0OTRiMzVhNjdmMDFiYjNiODBlMDIzNzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCkBAIC0zNCw4ICszNCw2IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRl
SW5mby5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiB1c2luZyBDZXJ0aWZpY2F0ZSA9
IFZlY3Rvcjx1aW50OF90PjsKIHVzaW5nIENlcnRpZmljYXRlQ2hhaW4gPSBWZWN0b3I8Q2VydGlm
aWNhdGU+OwogCkBAIC01NSwxOSArNTMsMTkgQEAgV0tDZXJ0aWZpY2F0ZUluZm9SZWYgV0tDZXJ0
aWZpY2F0ZUluZm9DcmVhdGVXaXRoQ2VydGZpY2F0ZUNoYWluKFdLQXJyYXlSZWYgY2VydGkKIAog
aW50IFdLQ2VydGlmaWNhdGVJbmZvR2V0VmVyaWZpY2F0aW9uRXJyb3IoV0tDZXJ0aWZpY2F0ZUlu
Zm9SZWYgY2VydGlmaWNhdGVJbmZvUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoY2VydGlmaWNh
dGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkudmVyaWZpY2F0aW9uRXJyb3IoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZv
KCkudmVyaWZpY2F0aW9uRXJyb3IoKTsKIH0KIAogc2l6ZV90IFdLQ2VydGlmaWNhdGVJbmZvR2V0
Q2VydGlmaWNhdGVDaGFpblNpemUoV0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJbmZv
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNh
dGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpLnNpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVD
aGFpbigpLnNpemUoKTsKIH0KIAogV0tEYXRhUmVmIFdLQ2VydGlmaWNhdGVJbmZvQ29weUNlcnRp
ZmljYXRlQXRJbmRleChXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYsIHNp
emVfdCBpbmRleCkKIHsKLSAgICBpZiAodG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRp
ZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5zaXplKCkgPD0gaW5kZXgpCisgICAgaWYg
KFdlYktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNl
cnRpZmljYXRlQ2hhaW4oKS5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OkRhdGE6OmNyZWF0ZShudWxscHRyLCAwKS5sZWFrUmVmKCkpOwogCi0gICAg
Y29uc3QgYXV0byYgY2VydGlmaWNhdGUgPSB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2Vy
dGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpLmF0KGluZGV4KTsKKyAgICBjb25zdCBh
dXRvJiBjZXJ0aWZpY2F0ZSA9IFdlYktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNl
cnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5hdChpbmRleCk7CiAgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJkFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dW5zaWduZWQgY2hhcio+KGNlcnRpZmljYXRlLmRhdGEoKSksIGNlcnRpZmljYXRlLnNpemUoKSku
bGVha1JlZigpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356465</attachid>
            <date>2018-12-03 21:59:59 -0800</date>
            <delta_ts>2018-12-03 22:13:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192352-20181204145957.patch</filename>
            <type>text/plain</type>
            <size>60901</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5YzAzNDkzMDA0YWYxYmFi
ZjRjYmNiMmQ3OTVlZTY5NjAwMjFmOTcuLmQ5ZTc2YzUxZmY0NWYyNzY4MGU0OGY1MDFlYjdlNjcx
NTFjYTAyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTgtMTItMDMgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgdW5kZXIgV2ViS2l0L1NoYXJlZC9BUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjM1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdXNp
bmcgbmFtZXNwYWNlIHN0YXRlbWVudHMsIGFuZCB1c2UgbmFtZXNwYWNlIHByZWZpeAorICAgICAg
ICBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwOgorCiAyMDE4LTEy
LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBhbmltYXRlZCBrZXlib2FyZCBzY3JvbGxpbmcgYmVo
YXZpb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcAppbmRleCBh
YzkwNGQ0MDljMjE1MTBjZjU2YzczODAxYTk1ZmE1ZjFhZjUxOTViLi4zZTUwMjJlMWQ4YTE3YTFi
N2RjZWM3NmY5NmJjYWQ3MjMzOWQzNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTFJlcXVlc3QuY3BwCkBAIC0yOSwyNyArMjksMjQgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCi1VUkxSZXF1ZXN0OjpVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK1VSTFJlcXVlc3Q6OlVSTFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiB7CiB9CiAKIGRvdWJsZSBVUkxS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgcmVhbGx5IGJlIG9uIFdlYlByb2Nlc3NQb29sIG9yIFdlYlBh
Z2VQcm94eS4KIHZvaWQgVVJMUmVxdWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3Vi
bGUgdGltZW91dEludGVydmFsKQogewotICAgIFJlc291cmNlUmVxdWVzdDo6c2V0RGVmYXVsdFRp
bWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZXREZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogfQogCkBAIC02MCw3ICs1Nyw3IEBA
IHZvaWQgVVJMUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
Ym9vbCBVUkxSZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8T2Jq
ZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVzcG9uc2UuY3BwCmluZGV4IDFkOTNiNjJkMzhmYWMyYjg4MzdiODFhY2Jh
NTAyMGFhYzE0ZjgyYjcuLmJhMTM3NThkOGIyZGQ2MmY2M2YxMDZhNmNkZTZkMWZjNTkyMjU4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcApAQCAtMjgs
OCArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgQVBJIHsKIAogVVJMUmVzcG9uc2U6OlVS
TFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAt
NDQsNyArNDIsNyBAQCB2b2lkIFVSTFJlc3BvbnNlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiBib29sIFVSTFJlc3BvbnNlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA4NDQxNjExMjQyMTdhZjRk
MzUzZWI2YjI5YmY5MTdlMDRkOGJlNWE5Li5jOTc4NmY0YmE0NjBhMGUxOGFlNjg5OTZmOTFiZmRm
NmRkY2NhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcApAQCAtMjks
MTEgKzI5LDkgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tB
cnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQpAQCAt
NDIsOSArNDAsOSBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKHRvSW1wbCh2
YWx1ZXNbaV0pKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdlYktpdDo6dG9J
bXBsKHZhbHVlc1tpXSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKIH0KIAog
V0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKQEAgLTUzLDE3ICs1MSwxNyBAQCBXS0FycmF5UmVmIFdL
QXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJl
ck9mVmFsdWVzKQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytp
KQotICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYodG9JbXBsKHZhbHVl
c1tpXSkpKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKFdlYktp
dDo6dG9JbXBsKHZhbHVlc1tpXSkpKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJl
Ziwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoYXJyYXlSZWYpLT5h
dChpbmRleCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGFycmF5
UmVmKS0+YXQoaW5kZXgpKTsKIH0KIAogc2l6ZV90IFdLQXJyYXlHZXRTaXplKFdLQXJyYXlSZWYg
YXJyYXlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhcnJheVJlZiktPnNpemUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggNDVlYzYyNzUx
YTcxM2M3MjNhZmRhYWVlMWYyNzkzMjY0ODU3ZGNmZi4uMmI3MTdlNTcyZjk5NmFhOGUzOWRlZDll
OWU2NjA5MmI4Y2VhNmViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tDZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcApAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgIldlYkNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS0NlcnRpZmljYXRlSW5mb0dldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKFdlYkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKaW5kZXggOWZh
NzA0MmMyOWVlMzEwM2UxNzIxNGVlYjNiYjY0MDg0ZmM4MzhmYi4uMjU1NjRmOWY4NzhjOWFjZmUw
ZmVmYjNmNTQ4MjFkNGViYTVkNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS0Nvbm5lY3Rpb25SZWYuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQ29ubmVjdGlvbkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKFdlYkNvbm5lY3Rpb246OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6QVBJVHlwZSk7CiB9CiAKIHZvaWQgV0tDb25uZWN0aW9u
U2V0Q29ubmVjdGlvbkNsaWVudChXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qg
V0tDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbm5lY3Rp
b25SZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29ubmVjdGlvblJlZiktPmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xp
ZW50KTsKIH0KIAogdm9pZCBXS0Nvbm5lY3Rpb25Qb3N0TWVzc2FnZShXS0Nvbm5lY3Rpb25SZWYg
Y29ubmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keVJlZikKIHsKLSAgICB0b0ltcGwoY29ubmVjdGlvblJlZiktPnBvc3RNZXNzYWdlKHRv
SW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChjb25uZWN0aW9uUmVmKS0+cG9zdE1lc3NhZ2UoV2ViS2l0Ojp0
b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwobWVzc2FnZUJv
ZHlSZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tD
b250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IDFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThj
OTcuLjdjZDM4YmUzZjAyMGUzMTNmYmYyMzFlMDEyOTJmZTUzZWQ1NGYzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTMyLDIy
ICszMiwxOSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0NvbnRleHRNZW51SXRlbUdldFR5cGVJRCgpCiB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHRNZW51
SXRlbTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW06OkFQSVR5cGUpOwogI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmpl
Y3Q6OlR5cGU6Ok51bGwpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6T2JqZWN0OjpU
eXBlOjpOdWxsKTsKICNlbmRpZgogfQogCiBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRN
ZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgV0tTdHJpbmdS
ZWYgdGl0bGUsIGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygp
LCBlbmFibGVkLCBmYWxzZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JldlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhKFdlYkNvcmU6OkFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdlYktp
dDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGZhbHNlKSkubGVha1JlZigpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsK
QEAgLTU5LDcgKzU2LDcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1D
cmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFcKIFdLQ29udGV4dE1lbnVJ
dGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVBY3Rpb24oV0tDb250ZXh0
TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNo
ZWNrZWQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKENoZWNrYWJs
ZUFjdGlvblR5cGUsIHRvSW1wbCh0YWcpLCB0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxl
ZCwgY2hlY2tlZCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhKFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdl
YktpdDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGNoZWNrZWQpKS5sZWFrUmVm
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGFnKTsKICAgICBVTlVTRURfUEFSQU0odGl0
bGUpOwpAQCAtNzIsNyArNjksNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51
SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogV0tDb250ZXh0
TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYg
dGl0bGUsIGJvb2wgZW5hYmxlZCwgV0tBcnJheVJlZiBzdWJtZW51SXRlbXMpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZSh0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxlZCwgdG9JbXBsKHN1Ym1lbnVJ
dGVtcykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwg
ZW5hYmxlZCwgV2ViS2l0Ojp0b0ltcGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CkBA
IC04NCw3ICs4MSw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3Jl
YXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuCiBXS0NvbnRleHRNZW51SXRl
bVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OnNlcGFyYXRv
ckl0ZW0oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCkBAIC05Myw3ICs5MCw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJ
dGVtU2VwYXJhdG9ySXRlbSgpCiBXS0NvbnRleHRNZW51SXRlbVRhZyBXS0NvbnRleHRNZW51SXRl
bUdldFRhZyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS5hY3Rp
b24oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikt
PmRhdGEoKS5hY3Rpb24oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gdG9BUEkoQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOwpAQCAtMTAzLDcgKzEw
MCw3IEBAIFdLQ29udGV4dE1lbnVJdGVtVGFnIFdLQ29udGV4dE1lbnVJdGVtR2V0VGFnKFdLQ29u
dGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0
TWVudUl0ZW1HZXRUeXBlKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0
YSgpLnR5cGUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRl
bVJlZiktPmRhdGEoKS50eXBlKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7
CiAgICAgcmV0dXJuIHRvQVBJKEFjdGlvblR5cGUpOwpAQCAtMTEzLDcgKzExMCw3IEBAIFdLQ29u
dGV4dE1lbnVJdGVtVHlwZSBXS0NvbnRleHRNZW51SXRlbUdldFR5cGUoV0tDb250ZXh0TWVudUl0
ZW1SZWYgaXRlbVJlZikKIFdLU3RyaW5nUmVmIFdLQ29udGV4dE1lbnVJdGVtQ29weVRpdGxlKFdL
Q29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLnRpdGxlKCku
aW1wbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChp
dGVtUmVmKS0+ZGF0YSgpLnRpdGxlKCkuaW1wbCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGl0ZW1SZWYpOwogICAgIHJldHVybiAwOwpAQCAtMTIzLDcgKzEyMCw3IEBAIFdLU3RyaW5nUmVm
IFdLQ29udGV4dE1lbnVJdGVtQ29weVRpdGxlKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYp
CiBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0RW5hYmxlZChXS0NvbnRleHRNZW51SXRlbVJlZiBp
dGVtUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0ltcGwo
aXRlbVJlZiktPmRhdGEoKS5lbmFibGVkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGl0
ZW1SZWYpLT5kYXRhKCkuZW5hYmxlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJl
Zik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMzLDcgKzEzMCw3IEBAIGJvb2wgV0tDb250ZXh0
TWVudUl0ZW1HZXRFbmFibGVkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBib29sIFdL
Q29udGV4dE1lbnVJdGVtR2V0Q2hlY2tlZChXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQog
ewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZikt
PmRhdGEoKS5jaGVja2VkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpLT5k
YXRhKCkuY2hlY2tlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTQzLDcgKzE0MCw3IEBAIGJvb2wgV0tDb250ZXh0TWVudUl0ZW1H
ZXRDaGVja2VkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS0FycmF5UmVmIFdLQ29u
dGV4dE1lbnVDb3B5U3VibWVudUl0ZW1zKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwoaXRl
bVJlZiktPnN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+c3VibWVudUl0ZW1zQXNBUElB
cnJheSgpLmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gMDsKQEAgLTE1Myw3ICsxNTAsNyBAQCBXS0FycmF5UmVmIFdLQ29udGV4dE1lbnVD
b3B5U3VibWVudUl0ZW1zKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS1R5cGVSZWYg
V0tDb250ZXh0TWVudUl0ZW1HZXRVc2VyRGF0YShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVm
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
aXRlbVJlZiktPnVzZXJEYXRhKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
dG9JbXBsKGl0ZW1SZWYpLT51c2VyRGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0
ZW1SZWYpOwogICAgIHJldHVybiAwOwpAQCAtMTYzLDcgKzE2MCw3IEBAIFdLVHlwZVJlZiBXS0Nv
bnRleHRNZW51SXRlbUdldFVzZXJEYXRhKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB2
b2lkIFdLQ29udGV4dE1lbnVJdGVtU2V0VXNlckRhdGEoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRl
bVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIHRvSW1wbChpdGVtUmVmKS0+c2V0VXNlckRhdGEodG9JbXBsKHVzZXJEYXRhUmVmKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPnNldFVzZXJEYXRhKFdlYktpdDo6dG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAgICBV
TlVTRURfUEFSQU0odXNlckRhdGFSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGF0YS5j
cHAKaW5kZXggZmRiY2E3M2RjYjllZWIzNjk4NTAyMDVjZTlmODg0MGMwYTMyZDQ2MS4uMTNmNzlk
OTIxNmQ0YjYyZjMxNjVkOTQ5YzNmMzRjNmVmZTg4NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS0RhdGEuY3BwCkBAIC0yOSwyNCArMjksMjIgQEAKICNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdL
VHlwZUlEIFdLRGF0YUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RGF0YTo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpEYXRhOjpBUElUeXBlKTsK
IH0KIAogV0tEYXRhUmVmIFdLRGF0YUNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkRhdGE6OmNyZWF0ZShieXRl
cywgc2l6ZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpEYXRh
OjpjcmVhdGUoYnl0ZXMsIHNpemUpLmxlYWtSZWYoKSk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIFdLRGF0YUdldEJ5dGVzKFdLRGF0YVJlZiBkYXRhUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwoZGF0YVJlZiktPmJ5dGVzKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRhdGFSZWYp
LT5ieXRlcygpOwogfQogCiBzaXplX3QgV0tEYXRhR2V0U2l6ZShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKGRhdGFSZWYpLT5zaXplKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKGRhdGFSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tEaWN0aW9uYXJ5LmNwcAppbmRleCA2NTRlMWU2MWUwNmYwYjBmN2U4M2ZkNmMyN2RhYWJm
MzFlMTM4Y2RlLi4yZjVhMDBlMDQ4YTRiMjEzOTI0YjYxYzY4NTIxZThkMWIxYzg3MDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAKQEAgLTMwLDMzICsz
MCwzMSBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpEaWN0aW9uYXJ5OjpBUElUeXBlKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRpY3Rpb25hcnk6OkFQSVR5cGUpOwogfQog
CiBXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLRGljdGlvbmFyeUNyZWF0ZShjb25zdCBXS1N0
cmluZ1JlZioga2V5cywgY29uc3QgV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZh
bHVlcykKIHsKICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgbWFwLmFkZCh0b0lt
cGwoa2V5c1tpXSktPnN0cmluZygpLCB0b0ltcGwodmFsdWVzW2ldKSk7CisgICAgICAgIG1hcC5h
ZGQoV2ViS2l0Ojp0b0ltcGwoa2V5c1tpXSktPnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbCh2YWx1
ZXNbaV0pKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RG
TW92ZShtYXApKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRp
Y3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVHlwZVJl
ZiBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVm
LCBXS1N0cmluZ1JlZiBrZXkpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkaWN0aW9uYXJ5
UmVmKS0+Z2V0KHRvSW1wbChrZXkpLT5zdHJpbmcoKSkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKFdlYktpdDo6dG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5nZXQoV2ViS2l0Ojp0b0ltcGwoa2V5
KS0+c3RyaW5nKCkpKTsKIH0KIAogc2l6ZV90IFdLRGljdGlvbmFyeUdldFNpemUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVm
KS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2l6
ZSgpOwogfQogCiBXS0FycmF5UmVmIFdLRGljdGlvbmFyeUNvcHlLZXlzKFdLRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5UmVmKQogewotICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGRpY3Rpb25hcnlS
ZWYpLT5rZXlzKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0
Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPmtleXMoKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcAppbmRleCBjOTQxNTEyMGI4NTMwOWMwNTAz
YTc1MjMxNGEyYTU3NzIxMTYyYzhmLi40NzkzYTU3ZmQyZjE1NGZlYzcxZDk4NGI3OGZiNDhhZDg0
OTI5MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcApAQCAt
MjksMjYgKzI5LDI0IEBACiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tFcnJvckdldFR5
cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RXJyb3I6OkFQSVR5cGUpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RXJyb3I6OkFQSVR5cGUpOwogfQogCiBXS1N0cmluZ1Jl
ZiBXS0Vycm9yQ29weVdLRXJyb3JEb21haW4oKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShB
UEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpKTsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tFcnJvckNvcHlEb21haW4oV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGVycm9yUmVmKS0+ZG9tYWluKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKGVycm9yUmVmKS0+ZG9tYWluKCkpOwogfQog
CiBpbnQgV0tFcnJvckdldEVycm9yQ29kZShXS0Vycm9yUmVmIGVycm9yUmVmKQogewotICAgIGF1
dG8gZXJyb3JDb2RlID0gdG9JbXBsKGVycm9yUmVmKS0+ZXJyb3JDb2RlKCk7CisgICAgYXV0byBl
cnJvckNvZGUgPSBXZWJLaXQ6OnRvSW1wbChlcnJvclJlZiktPmVycm9yQ29kZSgpOwogICAgIHN3
aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBBUEk6OkVycm9yOjpQb2xpY3k6OkNhbm5vdFNo
b3dNSU1FVHlwZToKICAgICAgICAgcmV0dXJuIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dNSU1FVHlw
ZTsKQEAgLTgzLDEwICs4MSwxMCBAQCBpbnQgV0tFcnJvckdldEVycm9yQ29kZShXS0Vycm9yUmVm
IGVycm9yUmVmKQogCiBXS1VSTFJlZiBXS0Vycm9yQ29weUZhaWxpbmdVUkwoV0tFcnJvclJlZiBl
cnJvclJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGVycm9yUmVmKS0+
ZmFpbGluZ1VSTCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6
OnRvSW1wbChlcnJvclJlZiktPmZhaWxpbmdVUkwoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLRXJy
b3JDb3B5TG9jYWxpemVkRGVzY3JpcHRpb24oV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGVycm9yUmVmKS0+bG9jYWxpemVkRGVzY3JpcHRpb24o
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZXJyb3JS
ZWYpLT5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tHZW9tZXRyeS5jcHAKaW5kZXggNGNkNWUzZGE0NzAwYzc1NmY2YjcwYTNkZjM4ZTNmZThl
NWVhOWVkNy4uMmE4YjYzMDU3OWMxNzY5YjA5NmZiNWRjZWU5MTkxY2JmNjhmODZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAKQEAgLTI5LDUwICsyOSw0OCBA
QAogI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU2l6ZUdldFR5cGVJRCh2b2lkKQog
ewotICAgIHJldHVybiB0b0FQSShBUEk6OlNpemU6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6U2l6ZTo6QVBJVHlwZSk7CiB9CiAKIFdLVHlwZUlEIFdLUG9pbnRHZXRU
eXBlSUQodm9pZCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpQb2ludDo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpQb2ludDo6QVBJVHlwZSk7CiB9CiAKIFdLVHlw
ZUlEIFdLUmVjdEdldFR5cGVJRCh2b2lkKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlJlY3Q6
OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6UmVjdDo6QVBJVHlwZSk7
CiB9CiAKIFdLUG9pbnRSZWYgV0tQb2ludENyZWF0ZShXS1BvaW50IHBvaW50KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpQb2ludDo6Y3JlYXRlKHBvaW50KS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlBvaW50OjpjcmVhdGUocG9pbnQpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLU2l6ZVJlZiBXS1NpemVDcmVhdGUoV0tTaXplIHNpemUpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKCZBUEk6OlNpemU6OmNyZWF0ZShzaXplKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OlNpemU6OmNyZWF0ZShzaXplKS5sZWFrUmVmKCkpOwogfQogCiBX
S1JlY3RSZWYgV0tSZWN0Q3JlYXRlKFdLUmVjdCByZWN0KQogewotICAgIHJldHVybiB0b0FQSSgm
QVBJOjpSZWN0OjpjcmVhdGUocmVjdCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmQVBJOjpSZWN0OjpjcmVhdGUocmVjdCkubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdL
U2l6ZUdldFZhbHVlKFdLU2l6ZVJlZiBzaXplKQogewotICAgIHJldHVybiB0b0ltcGwoc2l6ZSkt
PnNpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc2l6ZSktPnNpemUoKTsKIH0KIAog
V0tQb2ludCBXS1BvaW50R2V0VmFsdWUoV0tQb2ludFJlZiBwb2ludCkKIHsKLSAgICByZXR1cm4g
dG9JbXBsKHBvaW50KS0+cG9pbnQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocG9pbnQp
LT5wb2ludCgpOwogfQogCiBXS1JlY3QgV0tSZWN0R2V0VmFsdWUoV0tSZWN0UmVmIHJlY3QpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChyZWN0KS0+cmVjdCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChyZWN0KS0+cmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2Uu
Y3BwCmluZGV4IDY4ZTYzODFkOGMxODk0N2ZlZWQ1YTZjZDczYzI5ZTIxZjFiYzdiNzkuLjMxYjZk
YWViODM4ZmNhM2NiZTY1YmUzYjcwOTY5MTlmNWMwMjAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLSW1hZ2UuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKFdlYkltYWdlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYkltYWdlOjpBUElUeXBlKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIGF1dG8gd2ViSW1hZ2UgPSBX
ZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykp
OworICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoV2ViS2l0Ojp0
b0ludFNpemUoc2l6ZSksIFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIHJl
dHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS1NpemUgV0tJbWFnZUdldFNp
emUoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGltYWdl
UmVmKS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChp
bWFnZVJlZiktPnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS011dGFibGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011
dGFibGVBcnJheS5jcHAKaW5kZXggNWRjODUyNjBmYWRiYWUzMmQ5OGIwMTQ4NWM5MzdmNGRjNmNi
MThhNC4uOWE5MzFjYzYyMmEwY2JkZjc0ZjA4YjUzYzAzMzViZmMwODM2MTZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcApAQCAtMjksMjAgKzI5
LDE4IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tNdXRhYmxlQXJyYXlSZWYgV0tNdXRhYmxlQXJy
YXlDcmVhdGUoKQogewotICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZUFycmF5UmVmPih0
b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKCkubGVha1JlZigpKSk7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8V0tNdXRhYmxlQXJyYXlSZWY+KFdlYktpdDo6dG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0
ZSgpLmxlYWtSZWYoKSkpOwogfQogCiB2b2lkIFdLQXJyYXlBcHBlbmRJdGVtKFdLTXV0YWJsZUFy
cmF5UmVmIGFycmF5UmVmLCBXS1R5cGVSZWYgaXRlbVJlZikKIHsKLSAgICB0b0ltcGwoYXJyYXlS
ZWYpLT5lbGVtZW50cygpLmFwcGVuZCh0b0ltcGwoaXRlbVJlZikpOworICAgIFdlYktpdDo6dG9J
bXBsKGFycmF5UmVmKS0+ZWxlbWVudHMoKS5hcHBlbmQoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikp
OwogfQogCiB2b2lkIFdLQXJyYXlSZW1vdmVJdGVtQXRJbmRleChXS011dGFibGVBcnJheVJlZiBh
cnJheVJlZiwgc2l6ZV90IGluZGV4KQogewotICAgIHRvSW1wbChhcnJheVJlZiktPmVsZW1lbnRz
KCkucmVtb3ZlKGluZGV4KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChhcnJheVJlZiktPmVsZW1lbnRz
KCkucmVtb3ZlKGluZGV4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCA5NmI4OWJkNDU2NDg0ZDUxYzBhN2ZiM2E1
NzljOWU1ZDljZGE4NDdkLi43ZGIyMTE2ODBlMjg3ZjQ4NWJhMTM2YTkxYzE3YzhhOWY4ZDU3NTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9u
YXJ5LmNwcApAQCAtMjksMTUgKzI5LDEzIEBACiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS011
dGFibGVEaWN0aW9uYXJ5UmVmIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKQogewotICAgIHJl
dHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+KHRvQVBJKCZBUEk6OkRpY3Rp
b25hcnk6OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+KFdlYktpdDo6dG9BUEkoJkFQSTo6RGljdGlvbmFyeTo6Y3JlYXRl
KCkubGVha1JlZigpKSk7CiB9CiAKIGJvb2wgV0tEaWN0aW9uYXJ5U2V0SXRlbShXS011dGFibGVE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nUmVmIGtleVJlZiwgV0tUeXBlUmVm
IGl0ZW1SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2V0KHRvSW1w
bChrZXlSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKGl0ZW1SZWYpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNldChXZWJLaXQ6OnRvSW1wbChrZXlSZWYpLT5zdHJp
bmcoKSwgV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS051bWJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS051bWJlci5jcHAKaW5kZXggNDE4ZTAyOWVhNjdkYmYzYTZhMWZlY2MwNzUzODdjYzZh
MjE3NGQ4Ni4uMTlmOWVlMDc5NmMzYzRhNzYyYThlMTZkM2RhZjNkMGUyNDdiZmJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcApAQCAtMjksNTIgKzI5LDUwIEBACiAj
aW5jbHVkZSAiQVBJTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQm9vbGVhbkdldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6Qm9vbGVhbjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoQVBJOjpCb29sZWFuOjpBUElUeXBlKTsKIH0KIAogV0tCb29sZWFuUmVmIFdLQm9vbGVh
bkNyZWF0ZShib29sIHZhbHVlKQogewogICAgIGF1dG8gYm9vbGVhbk9iamVjdCA9IEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkoJmJvb2xlYW5PYmplY3QubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVm
KCkpOwogfQogCiBib29sIFdLQm9vbGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwoYm9vbGVhblJlZiktPnZhbHVlKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKGJvb2xlYW5SZWYpLT52YWx1ZSgpOwogfQogCiBXS1R5cGVJRCBXS0Rv
dWJsZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RG91YmxlOjpBUElUeXBl
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRvdWJsZTo6QVBJVHlwZSk7CiB9CiAK
IFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRlKGRvdWJsZSB2YWx1ZSkKIHsKICAgICBhdXRvIGRv
dWJsZU9iamVjdCA9IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQ
SSgmZG91YmxlT2JqZWN0LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmRv
dWJsZU9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0Rv
dWJsZVJlZiBkb3VibGVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkb3VibGVSZWYpLT52YWx1
ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkb3VibGVSZWYpLT52YWx1ZSgpOwogfQog
CiBXS1R5cGVJRCBXS1VJbnQ2NEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6
VUludDY0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVJbnQ2NDo6
QVBJVHlwZSk7CiB9CiAKIFdLVUludDY0UmVmIFdLVUludDY0Q3JlYXRlKHVpbnQ2NF90IHZhbHVl
KQogewogICAgIGF1dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmdWludDY0T2JqZWN0LmxlYWtSZWYoKSk7CiB9CiAKIHVpbnQ2NF90IFdL
VUludDY0R2V0VmFsdWUoV0tVSW50NjRSZWYgdWludDY0UmVmKQogewotICAgIHJldHVybiB0b0lt
cGwodWludDY0UmVmKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodWludDY0
UmVmKS0+dmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAKaW5kZXggZTNhZTRmNWYwMzI1OGFhMTBhNmFiNWFiYWIzNGM2
YWYwYmRkMzMwOS4uMDkzMDk5MjQ0Njg2NjM3MmVmZDRhNGE1MjMzZjJhODUwNmE2NWYxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHAKQEAgLTMwLDEzICszMCwxMSBAQAogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAj
aW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
IFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKIHsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcm
IGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlm
aWVyS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGlj
IEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnBsdWdpbklu
Zm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC00NSw4
ICs0Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVy
S2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkK
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJp
bmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJz
aW9uS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGlj
IEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnBsdWdpbklu
Zm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC01NSw4ICs1
Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkK
IFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVTaG9ydFZlcnNpb25LZXkoKQog
ewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVNob3J0
VmVyc2lvbktleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0
YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpwbHVn
aW5JbmZvcm1hdGlvbkJ1bmRsZVNob3J0VmVyc2lvbktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBA
IC02NSw4ICs2Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVTaG9y
dFZlcnNpb25LZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKQog
ewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKSku
bGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJp
bmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6cGx1Z2luSW5mb3JtYXRpb25Q
YXRoS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNl
bHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTc1LDggKzczLDggQEAgV0tTdHJpbmdSZWYg
V0tQbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvbkRpc3BsYXlOYW1lS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2lu
SW5mb3JtYXRpb25EaXNwbGF5TmFtZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJ
KCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0
ZShXZWJDb3JlOjpwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKQEAgLTg1LDggKzgzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRp
c3BsYXlOYW1lS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25EZWZhdWx0TG9h
ZFBvbGljeUtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3Rh
dGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0
aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgm
a2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
V2ViQ29yZTo6cGx1Z2luSW5mb3JtYXRpb25EZWZhdWx0TG9hZFBvbGljeUtleSgpKS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAw
OwogI2VuZGlmCkBAIC05NSw4ICs5Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRp
b25EZWZhdWx0TG9hZFBvbGljeUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9u
VXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKQogewogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5
ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBhc3RMYXN0Qmxv
Y2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4g
dG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6
Y3JlYXRlKFdlYkNvcmU6OnBsdWdpbkluZm9ybWF0aW9uVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVy
c2lvbklzS25vd25BdmFpbGFibGVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTA1LDggKzEw
Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2Nr
ZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9y
bWF0aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0
ZShwbHVnaW5JbmZvcm1hdGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KCkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnBsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2Zp
bGVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE1LDggKzExMyw4IEBAIFdLU3RyaW5nUmVm
IFdLUGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpCiBXS1N0cmluZ1JlZiBX
S1BsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNy
ZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1
cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKFdlYkNvcmU6OnBsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxLZXkoKSkubGVha1Jl
ZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKICNlbmRpZgpAQCAtMTI1LDggKzEyMyw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3Jt
YXRpb25GcmFtZVVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uTUlNRVR5
cGVLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBB
UEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbk1J
TUVUeXBlS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3Rh
dGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYkNvcmU6OnBsdWdp
bkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTM1LDggKzEz
Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpCiBXS1N0
cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpCiB7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0
cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJ
OjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpwbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKSku
bGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICBy
ZXR1cm4gMDsKICNlbmRpZgpAQCAtMTQ1LDggKzE0Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2lu
SW5mb3JtYXRpb25QYWdlVVJMS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25Q
bHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJ
Tl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRl
KHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKSkubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9
IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViQ29yZTo6cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNTUsOCArMTUzLDggQEAg
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5
KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKQogewogI2lm
IEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5
ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKS5s
ZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpwbHVnaW5JbmZvcm1hdGlvblBs
dWdpblVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNjUsOCArMTYzLDggQEAgV0tTdHJp
bmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1Bs
dWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpCiB7CiAjaWYgRU5BQkxFKE5F
VFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0
cmluZzo6Y3JlYXRlKHBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5s
ZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJDb3JlOjpwbHVnSW5JbmZvcm1hdGlvblJl
cGxhY2VtZW50T2JzY3VyZWRLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVyLmNwcAppbmRleCAyMDcyNmY0ZWUyOTJkOTdhMGFl
ZjVjNGJhMmE2YTNmZTI0MGEwOTRkLi45NGM4NWU5MTNmOWNkNTA1YTQzYjQzODBmMDM2OTM5Mjcy
NzRhN2QyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlckxh
eWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVyLmNw
cApAQCAtMzAsODAgKzMwLDc3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V2ViUmVuZGVyTGF5ZXIuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1JlbmRlckxheWVyR2V0VHlwZUlEKCkKIHsKLSAg
ICByZXR1cm4gdG9BUEkoV2ViUmVuZGVyTGF5ZXI6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6OkFQSVR5cGUpOwogfQogCiBXS1JlbmRl
ck9iamVjdFJlZiBXS1JlbmRlckxheWVyR2V0UmVuZGVyZXIoV0tSZW5kZXJMYXllclJlZiByZW5k
ZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+
cmVuZGVyZXIoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVy
UmVmKS0+cmVuZGVyZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyTGF5ZXJDb3B5UmVu
ZGVyZXJOYW1lKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRlcmVyKCktPm5hbWUoKSk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5
ZXJSZWYpLT5yZW5kZXJlcigpLT5uYW1lKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlckxh
eWVyQ29weUVsZW1lbnRUYWdOYW1lKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7
Ci0gICAgV2ViUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gdG9JbXBsKHJlbmRlckxheWVyUmVm
KTsKKyAgICBXZWJLaXQ6OldlYlJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IFdlYktpdDo6dG9J
bXBsKHJlbmRlckxheWVyUmVmKTsKICAgICBpZiAoIXJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5l
bGVtZW50VGFnTmFtZSgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdG9Db3BpZWRBUEkocmVu
ZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRUYWdOYW1lKCkpOworICAgICAgICByZXR1cm4g
V2ViS2l0Ojp0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudFRhZ05h
bWUoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tSZW5kZXJM
YXllckNvcHlFbGVtZW50SUQoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAg
ICBXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOwor
ICAgIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gV2ViS2l0Ojp0b0ltcGwo
cmVuZGVyTGF5ZXJSZWYpOwogICAgIGlmICghcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1l
bnRJRCgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdG9Db3BpZWRBUEkocmVuZGVyTGF5ZXIt
PnJlbmRlcmVyKCktPmVsZW1lbnRJRCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6dG9Db3Bp
ZWRBUEkocmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRJRCgpKTsKIAogICAgIHJldHVy
biBudWxscHRyOwogfQogCiBXS0FycmF5UmVmIFdLUmVuZGVyTGF5ZXJHZXRFbGVtZW50Q2xhc3NO
YW1lcyhXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpLT5lbGVtZW50Q2xhc3NOYW1lcygp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJl
ZiktPnJlbmRlcmVyKCktPmVsZW1lbnRDbGFzc05hbWVzKCkpOwogfQogCiBXS1JlY3QgV0tSZW5k
ZXJMYXllckdldEFic29sdXRlQm91bmRzKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYp
CiB7Ci0gICAgSW50UmVjdCBib3VuZHMgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5hYnNvbHV0
ZUJvdW5kaW5nQm94KCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMgPSBXZWJLaXQ6OnRv
SW1wbChyZW5kZXJMYXllclJlZiktPmFic29sdXRlQm91bmRpbmdCb3goKTsKICAgICByZXR1cm4g
V0tSZWN0TWFrZShib3VuZHMueCgpLCBib3VuZHMueSgpLCBib3VuZHMud2lkdGgoKSwgYm91bmRz
LmhlaWdodCgpKTsKIH0KIAogYm9vbCBXS1JlbmRlckxheWVySXNDbGlwcGluZyhXS1JlbmRlckxh
eWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyTGF5ZXJS
ZWYpLT5pc0NsaXBwaW5nKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVy
UmVmKS0+aXNDbGlwcGluZygpOwogfQogCiBib29sIFdLUmVuZGVyTGF5ZXJJc0NsaXBwZWQoV0tS
ZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+aXNDbGlwcGVkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+aXNDbGlwcGVkKCk7CiB9CiAKIGJvb2wgV0tSZW5kZXJMYXllcklzUmVmbGVj
dGlvbihXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwocmVuZGVyTGF5ZXJSZWYpLT5pc1JlZmxlY3Rpb24oKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc1JlZmxlY3Rpb24oKTsKIH0KIAogV0tDb21wb3NpdGlu
Z0xheWVyVHlwZSBXS1JlbmRlckxheWVyR2V0Q29tcG9zaXRpbmdMYXllclR5cGUoV0tSZW5kZXJM
YXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBzd2l0Y2ggKHRvSW1wbChyZW5kZXJMYXll
clJlZiktPmNvbXBvc2l0aW5nTGF5ZXJUeXBlKCkpIHsKLSAgICBjYXNlIFdlYlJlbmRlckxheWVy
OjpOb25lOgorICAgIHN3aXRjaCAoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5jb21w
b3NpdGluZ0xheWVyVHlwZSgpKSB7CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpO
b25lOgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVOb25lOwotICAgIGNh
c2UgV2ViUmVuZGVyTGF5ZXI6Ok5vcm1hbDoKKyAgICBjYXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5
ZXI6Ok5vcm1hbDoKICAgICAgICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlTm9ybWFs
OwotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6OlRpbGVkOgorICAgIGNhc2UgV2ViS2l0OjpXZWJS
ZW5kZXJMYXllcjo6VGlsZWQ6CiAgICAgICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xheWVyVHlw
ZVRpbGVkOwotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6Ok1lZGlhOgorICAgIGNhc2UgV2ViS2l0
OjpXZWJSZW5kZXJMYXllcjo6TWVkaWE6CiAgICAgICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xh
eWVyVHlwZU1lZGlhOwotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6OkNvbnRhaW5lcjoKKyAgICBj
YXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6OkNvbnRhaW5lcjoKICAgICAgICAgcmV0dXJuIGtX
S0NvbXBvc2l0aW5nTGF5ZXJUeXBlQ29udGFpbmVyOwogICAgIH0KIApAQCAtMTEzLDI1ICsxMTAs
MjUgQEAgV0tDb21wb3NpdGluZ0xheWVyVHlwZSBXS1JlbmRlckxheWVyR2V0Q29tcG9zaXRpbmdM
YXllclR5cGUoV0tSZW5kZXJMYXllclJlZiByZW4KIAogV0tfRVhQT1JUIGRvdWJsZSBXS1JlbmRl
ckxheWVyR2V0QmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoV0tSZW5kZXJMYXllclJlZiByZW5k
ZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlckxheWVyUmVmKS0+YmFja2lu
Z1N0b3JlTWVtb3J5RXN0aW1hdGUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVy
TGF5ZXJSZWYpLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpOwogfQogCiBXS0FycmF5UmVm
IFdLUmVuZGVyTGF5ZXJHZXROZWdhdGl2ZVpPcmRlckxpc3QoV0tSZW5kZXJMYXllclJlZiByZW5k
ZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+
bmVnYXRpdmVaT3JkZXJMaXN0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+bmVnYXRpdmVaT3JkZXJMaXN0KCkpOwogfQogCiBXS0Fy
cmF5UmVmIFdLUmVuZGVyTGF5ZXJHZXROb3JtYWxGbG93TGlzdChXS1JlbmRlckxheWVyUmVmIHJl
bmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYp
LT5ub3JtYWxGbG93TGlzdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRv
SW1wbChyZW5kZXJMYXllclJlZiktPm5vcm1hbEZsb3dMaXN0KCkpOwogfQogCiBXS0FycmF5UmVm
IFdLUmVuZGVyTGF5ZXJHZXRQb3NpdGl2ZVpPcmRlckxpc3QoV0tSZW5kZXJMYXllclJlZiByZW5k
ZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+
cG9zaXRpdmVaT3JkZXJMaXN0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cG9zaXRpdmVaT3JkZXJMaXN0KCkpOwogfQogCiBXS1Jl
bmRlckxheWVyUmVmIFdLUmVuZGVyTGF5ZXJHZXRGcmFtZUNvbnRlbnRzTGF5ZXIoV0tSZW5kZXJM
YXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+ZnJhbWVDb250ZW50c0xheWVyKCkpOworICAgIHJldHVybiB0b0FQSShXZWJL
aXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmZyYW1lQ29udGVudHNMYXllcigpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcAppbmRleCBjZmY3
MWM3Y2Q4Njg4ZjUxNDM3YWVkNzRhMzg0NzVhYTYyZjc4Y2IyLi5iYTEyMzkwYjYzMjg3MWFhNGNh
MWE1MzZmYjg4ZmFhZDYxMzVhNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tSZW5kZXJPYmplY3QuY3BwCkBAIC0zMCw2OSArMzAsNjYgQEAKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1JlbmRlck9iamVj
dEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlJlbmRlck9iamVjdDo6QVBJVHlw
ZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OkFQ
SVR5cGUpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlOYW1lKFdLUmVuZGVy
T2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9J
bXBsKHJlbmRlck9iamVjdFJlZiktPm5hbWUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3Bp
ZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+bmFtZSgpKTsKIH0KIAogV0tT
dHJpbmdSZWYgV0tSZW5kZXJPYmplY3RDb3B5VGV4dFNuaXBwZXQoV0tSZW5kZXJPYmplY3RSZWYg
cmVuZGVyT2JqZWN0UmVmKQogewotICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0g
dG9JbXBsKHJlbmRlck9iamVjdFJlZik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCA9IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZik7CiAgICAgaWYgKCFy
ZW5kZXJPYmplY3QtPnRleHRTbmlwcGV0KCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0b0Nv
cGllZEFQSShyZW5kZXJPYmplY3QtPnRleHRTbmlwcGV0KCkpOworICAgICAgICByZXR1cm4gV2Vi
S2l0Ojp0b0NvcGllZEFQSShyZW5kZXJPYmplY3QtPnRleHRTbmlwcGV0KCkpOwogCiAgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHVuc2lnbmVkIFdLUmVuZGVyT2JqZWN0R2V0VGV4dExlbmd0aChX
S1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChy
ZW5kZXJPYmplY3RSZWYpLT50ZXh0TGVuZ3RoKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBs
KHJlbmRlck9iamVjdFJlZiktPnRleHRMZW5ndGgoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tSZW5k
ZXJPYmplY3RDb3B5RWxlbWVudFRhZ05hbWUoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0
UmVmKQogewotICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gdG9JbXBsKHJlbmRl
ck9iamVjdFJlZik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9
IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZik7CiAgICAgaWYgKCFyZW5kZXJPYmplY3Qt
PmVsZW1lbnRUYWdOYW1lKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0b0NvcGllZEFQSShy
ZW5kZXJPYmplY3QtPmVsZW1lbnRUYWdOYW1lKCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShyZW5kZXJPYmplY3QtPmVsZW1lbnRUYWdOYW1lKCkpOwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyT2JqZWN0Q29weUVsZW1lbnRJRChX
S1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgV2ViUmVuZGVyT2JqZWN0
KiByZW5kZXJPYmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKKyAgICBXZWJLaXQ6Oldl
YlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0
UmVmKTsKICAgICBpZiAoIXJlbmRlck9iamVjdC0+ZWxlbWVudElEKCkuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKKyAgICAg
ICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkocmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKSk7
CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tBcnJheVJlZiBXS1JlbmRlck9iamVjdEdl
dEVsZW1lbnRDbGFzc05hbWVzKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsK
LSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmVsZW1lbnRDbGFzc05h
bWVzKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlck9i
amVjdFJlZiktPmVsZW1lbnRDbGFzc05hbWVzKCkpOwogfQogCiBXS1BvaW50IFdLUmVuZGVyT2Jq
ZWN0R2V0QWJzb2x1dGVQb3NpdGlvbihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYp
CiB7Ci0gICAgSW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiA9IHRvSW1wbChyZW5kZXJPYmplY3RS
ZWYpLT5hYnNvbHV0ZVBvc2l0aW9uKCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQ
b3NpdGlvbiA9IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmFic29sdXRlUG9zaXRp
b24oKTsKICAgICByZXR1cm4gV0tQb2ludE1ha2UoYWJzb2x1dGVQb3NpdGlvbi54KCksIGFic29s
dXRlUG9zaXRpb24ueSgpKTsKIH0KIAogV0tSZWN0IFdLUmVuZGVyT2JqZWN0R2V0RnJhbWVSZWN0
KFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBJbnRSZWN0IGZyYW1l
UmVjdCA9IHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5mcmFtZVJlY3QoKTsKKyAgICBXZWJDb3Jl
OjpJbnRSZWN0IGZyYW1lUmVjdCA9IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmZy
YW1lUmVjdCgpOwogICAgIHJldHVybiBXS1JlY3RNYWtlKGZyYW1lUmVjdC54KCksIGZyYW1lUmVj
dC55KCksIGZyYW1lUmVjdC53aWR0aCgpLCBmcmFtZVJlY3QuaGVpZ2h0KCkpOwogfQogCiBXS0Fy
cmF5UmVmIFdLUmVuZGVyT2JqZWN0R2V0Q2hpbGRyZW4oV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVy
T2JqZWN0UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+
Y2hpbGRyZW4oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVu
ZGVyT2JqZWN0UmVmKS0+Y2hpbGRyZW4oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IGJjZjk1NWE2NmNiNzY4MDU0
MmMyY2ZjYWRjYzRmM2YwYmQ1M2QxNTEuLjVlNmJlNzRiOGRhNmQ0YjkzNjAzNzkwY2E0YWQxNzZk
MWY2NjJjNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJp
dHlPcmlnaW5SZWYuY3BwCkBAIC0zMCw1MyArMzAsNTEgQEAKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1NlY3VyaXR5T3JpZ2luR2V0VHlwZUlEKCkKIHsK
LSAgICByZXR1cm4gdG9BUEkoQVBJOjpTZWN1cml0eU9yaWdpbjo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpTZWN1cml0eU9yaWdpbjo6QVBJVHlwZSk7CiB9CiAKIFdL
U2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcoV0tTdHJp
bmdSZWYgc3RyaW5nKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6
Y3JlYXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChz
dHJpbmcpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlRnJvbVN0cmluZyhXZWJLaXQ6OnRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSkpLmxlYWtSZWYo
KSk7CiB9CiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21E
YXRhYmFzZUlkZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIG9y
aWdpbiA9IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cih0b0ltcGwoaWRlbnRpZmllciktPnN0cmluZygpKTsKKyAgICBhdXRvIG9yaWdpbiA9IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihXZWJLaXQ6OnRv
SW1wbChpZGVudGlmaWVyKS0+c3RyaW5nKCkpOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShvcmlnaW4udmFsdWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luLnZh
bHVlKCkuc2VjdXJpdHlPcmlnaW4oKSkubGVha1JlZigpKTsKIH0KIAogV0tTZWN1cml0eU9yaWdp
blJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlKFdLU3RyaW5nUmVmIHByb3RvY29sLCBXS1N0cmlu
Z1JlZiBob3N0LCBpbnQgcG9ydCkKIHsKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlKHRvSW1wbChwcm90b2NvbCktPnN0cmluZygpLCB0b0ltcGwo
aG9zdCktPnN0cmluZygpLCBwb3J0KTsKLSAgICByZXR1cm4gdG9BUEkoJnNlY3VyaXR5T3JpZ2lu
LmxlYWtSZWYoKSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmln
aW46OmNyZWF0ZShXZWJLaXQ6OnRvSW1wbChwcm90b2NvbCktPnN0cmluZygpLCBXZWJLaXQ6OnRv
SW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZz
ZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3Jp
Z2luQ29weURhdGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3Jp
Z2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5z
ZWN1cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFdLU3RyaW5n
UmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5VG9TdHJpbmcoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1
cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlY3VyaXR5T3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2lu
KCkudG9TdHJpbmcoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5UHJv
dG9jb2woV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wcm90
b2NvbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChz
ZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKSk7CiB9CiAKIFdLU3Ry
aW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3Vy
aXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmln
aW4pLT5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3Bp
ZWRBUEkoV2ViS2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmhv
c3QoKSk7CiB9CiAKIHVuc2lnbmVkIHNob3J0IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdLU2Vj
dXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzZWN1
cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDApOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9y
dCgpLnZhbHVlX29yKDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGFhZDhlYWU0NDdlYTEzMTIzYTk2
ZjI2ODZmZmU2NmU0OTZmZDM5ZDguLmM0ZGNiYTNmZWE0ZGY1YzUyMzkyYjc3MWMwMDdjM2E5MDI5
NzcxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTI5LDIwICsyOSwxOCBAQAogI2luY2x1ZGUgIkFQSVNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUdldFR5
cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpB
UElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6QVBJVHlwZSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIFdLU2VyaWFs
aXplZFNjcmlwdFZhbHVlQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZh
bHVlLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgYXV0byBzZXJpYWxpemVkVmFsdWUg
PSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNvbnRleHQsIHZhbHVlLCBleGNl
cHRpb24pOwotICAgIHJldHVybiB0b0FQSShzZXJpYWxpemVkVmFsdWUubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSShzZXJpYWxpemVkVmFsdWUubGVha1JlZigpKTsKIH0KIAog
SlNWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZURlc2VyaWFsaXplKFdLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlUmVmIHNjcmlwdFZhbHVlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4dFJlZiwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIHJldHVybiB0b0ltcGwoc2NyaXB0VmFsdWVS
ZWYpLT5kZXNlcmlhbGl6ZShjb250ZXh0UmVmLCBleGNlcHRpb24pOworICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChzY3JpcHRWYWx1ZVJlZiktPmRlc2VyaWFsaXplKGNvbnRleHRSZWYsIGV4Y2Vw
dGlvbik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmlu
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNzY3
YWE4ZDkxNGIwY2Y3NTE5NmUyMGMzNjNiODA2MzhmZmQ3ZDNkOS4uMDJhYTRjYzBmMGI2NjczZTIz
NmEwN2E4MWM0NmZlMzllYWI3ZmVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3Ry
aW5nLmNwcApAQCAtMzEsMjYgKzMxLDI0IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5p
dGlhbGl6ZVRocmVhZGluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3Ry
aW5nLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU3RyaW5nR2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpTdHJpbmc6OkFQSVR5cGUpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6U3RyaW5nOjpBUElUeXBlKTsKIH0KIAogV0tTdHJp
bmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQog
ewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpTdHJpbmc6OmNyZWF0ZShXVEY6OlN0cmluZzo6ZnJv
bVVURjgoc3RyaW5nKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJ
OjpTdHJpbmc6OmNyZWF0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSkubGVha1JlZigp
KTsKIH0KIAogYm9vbCBXS1N0cmluZ0lzRW1wdHkoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewot
ICAgIHJldHVybiB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmlzRW1wdHkoKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmlzRW1wdHko
KTsKIH0KIAogc2l6ZV90IFdLU3RyaW5nR2V0TGVuZ3RoKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5sZW5ndGgoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0
aCgpOwogfQogCiBzaXplX3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3RyaW5nUmVmIHN0cmlu
Z1JlZiwgV0tDaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgpCkBAIC01OCw3ICs1Niw3
IEBAIHNpemVfdCBXS1N0cmluZ0dldENoYXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBX
S0NoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV0tD
aGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiU2l6ZSBvZiBXS0NoYXIgbXVzdCBtYXRjaCBzaXplIG9m
IFVDaGFyIik7CiAKICAgICB1bnNpZ25lZCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCA9IHN0ZDo6bWlu
PHNpemVfdD4oYnVmZmVyTGVuZ3RoLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpOwotICAgIGF1dG8gc3Vic3RyaW5nID0gdG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXco
KS5zdWJzdHJpbmcoMCwgdW5zaWduZWRCdWZmZXJMZW5ndGgpOworICAgIGF1dG8gc3Vic3RyaW5n
ID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0cmluZygwLCB1
bnNpZ25lZEJ1ZmZlckxlbmd0aCk7CiAKICAgICBzdWJzdHJpbmcuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlcikpOwogICAgIHJldHVybiBz
dWJzdHJpbmcubGVuZ3RoKCk7CkBAIC02Niw3ICs2NCw3IEBAIHNpemVfdCBXS1N0cmluZ0dldENo
YXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlCiAKIHNpemVfdCBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoV0tTdHJpbmdS
ZWYgc3RyaW5nUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmll
dygpLmxlbmd0aCgpICogMyArIDE7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHN0cmluZ1Jl
ZiktPnN0cmluZ1ZpZXcoKS5sZW5ndGgoKSAqIDMgKyAxOwogfQogCiBlbnVtIFN0cmljdFR5cGUg
eyBOb25TdHJpY3QgPSBmYWxzZSwgU3RyaWN0ID0gdHJ1ZSB9OwpAQCAtNzcsNyArNzUsNyBAQCBz
aXplX3QgV0tTdHJpbmdHZXRVVEY4Q1N0cmluZ0ltcGwoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBj
aGFyKiBidWZmZXIsIHNpemVfdCBidQogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0
dXJuIDA7CiAKLSAgICBhdXRvIHN0cmluZ1ZpZXcgPSB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5n
VmlldygpOworICAgIGF1dG8gc3RyaW5nVmlldyA9IFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZikt
PnN0cmluZ1ZpZXcoKTsKIAogICAgIGNoYXIqIHAgPSBidWZmZXI7CiAgICAgV1RGOjpVbmljb2Rl
OjpDb252ZXJzaW9uUmVzdWx0IHJlc3VsdDsKQEAgLTEwOSwzMiArMTA3LDMyIEBAIHNpemVfdCBX
S1N0cmluZ0dldFVURjhDU3RyaW5nTm9uU3RyaWN0KFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY2hh
ciogYnVmZmVyLCBzaXplCiAKIGJvb2wgV0tTdHJpbmdJc0VxdWFsKFdLU3RyaW5nUmVmIGFSZWYs
IFdLU3RyaW5nUmVmIGJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhUmVmKS0+c3RyaW5nVmll
dygpID09IHRvSW1wbChiUmVmKS0+c3RyaW5nVmlldygpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChhUmVmKS0+c3RyaW5nVmlldygpID09IFdlYktpdDo6dG9JbXBsKGJSZWYpLT5zdHJpbmdW
aWV3KCk7CiB9CiAKIGJvb2wgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhXS1N0cmluZ1Jl
ZiBhUmVmLCBjb25zdCBjaGFyKiBiKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIGEg
ZmFzdCBwYXRoIHRoYXQgYXZvaWRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIHN0cmluZyBp
cyBhbGwgQVNDSUk/CiAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBldmVuIHRoZSBnZW5lcmFsIGNh
c2UgbW9yZSBlZmZpY2llbnRseSBpZiB3ZSB3cml0ZSBhIGZ1bmN0aW9uIGluIFN0cmluZ1ZpZXcg
dGhhdCB1bmRlcnN0YW5kcyBVVEYtOCBDIHN0cmluZ3MuCi0gICAgcmV0dXJuIHRvSW1wbChhUmVm
KS0+c3RyaW5nVmlldygpID09IFdURjo6U3RyaW5nOjpmcm9tVVRGOChiKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSA9PSBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgoYik7CiB9CiAKIGJvb2wgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZ0lnbm9yaW5nQ2Fz
ZShXS1N0cmluZ1JlZiBhUmVmLCBjb25zdCBjaGFyKiBiKQogewogICAgIC8vIEZJWE1FOiBTaG91
bGQgd2UgYWRkIGEgZmFzdCBwYXRoIHRoYXQgYXZvaWRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4g
dGhlIHN0cmluZyBpcyBhbGwgQVNDSUk/CiAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBldmVuIHRo
ZSBnZW5lcmFsIGNhc2UgbW9yZSBlZmZpY2llbnRseSBpZiB3ZSB3cml0ZSBhIGZ1bmN0aW9uIGlu
IFN0cmluZ1ZpZXcgdGhhdCB1bmRlcnN0YW5kcyBVVEYtOCBDIHN0cmluZ3MuCi0gICAgcmV0dXJu
IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCksIFdURjo6
U3RyaW5nOjpmcm9tVVRGOChiKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2Uo
V2ViS2l0Ojp0b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4
KGIpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoSlNTdHJp
bmdSZWYganNTdHJpbmdSZWYpCiB7CiAgICAgYXV0byBhcGlTdHJpbmcgPSBqc1N0cmluZ1JlZiA/
IEFQSTo6U3RyaW5nOjpjcmVhdGUoanNTdHJpbmdSZWYtPnN0cmluZygpKSA6IEFQSTo6U3RyaW5n
OjpjcmVhdGVOdWxsKCk7CiAKLSAgICByZXR1cm4gdG9BUEkoJmFwaVN0cmluZy5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZhcGlTdHJpbmcubGVha1JlZigpKTsKIH0KIAog
SlNTdHJpbmdSZWYgV0tTdHJpbmdDb3B5SlNTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQog
ewogICAgIEpTQzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIHJldHVybiBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKSkubGVha1JlZigpOwor
ICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdlYktpdDo6dG9JbXBsKHN0cmlu
Z1JlZiktPnN0cmluZygpKS5sZWFrUmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tU
eXBlLmNwcAppbmRleCBmZDIwZTZmZmYxZTA0ZjA0YTdlOTljZDU1ZDQ4NmE0ZDEzZjlhNjkxLi40
MTY5ZGE4NGZlN2M3NGVmNTg0ZTVmMmVjNTkxYjllZTRkZTZmZGE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLVHlwZS5jcHAKQEAgLTI5LDIxICsyOSwxOSBAQAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0
OwotCiBXS1R5cGVJRCBXS0dldFR5cGVJRChXS1R5cGVSZWYgdHlwZVJlZikKIHsKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKHR5cGVSZWYpLT50eXBlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKFdlYktpdDo6dG9JbXBsKHR5cGVSZWYpLT50eXBlKCkpOwogfQogCiBXS1R5cGVSZWYgV0tS
ZXRhaW4oV0tUeXBlUmVmIHR5cGVSZWYpCiB7Ci0gICAgdG9JbXBsKHR5cGVSZWYpLT5yZWYoKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbCh0eXBlUmVmKS0+cmVmKCk7CiAKICAgICByZXR1cm4gdHlwZVJl
ZjsKIH0KIAogdm9pZCBXS1JlbGVhc2UoV0tUeXBlUmVmIHR5cGVSZWYpCiB7Ci0gICAgdG9JbXBs
KHR5cGVSZWYpLT5kZXJlZigpOworICAgIFdlYktpdDo6dG9JbXBsKHR5cGVSZWYpLT5kZXJlZigp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCmluZGV4IGYxYTFlYTU0NjgyMDgx
NzEzMTIzYjE3MjBmYjM0YmZlZTI1ZDVjYzguLjE3YzlhNjJkMzE3OGQxYjA1MGYxZDdkMTY5MTU3
ODQwZDk2MDliNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJM
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAKQEAgLTI4LDQ5
ICsyOCw0NyBAQAogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLVVJMR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEko
QVBJOjpVUkw6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMOjpB
UElUeXBlKTsKIH0KIAogV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29uc3Qg
Y2hhciogc3RyaW5nKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkw6OmNyZWF0ZShTdHJp
bmc6OmZyb21VVEY4KHN0cmluZykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9B
UEkoJkFQSTo6VVJMOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkp
OwogfQogCiBXS1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhCYXNlVVJMKFdLVVJMUmVmIGJhc2VVUkws
IGNvbnN0IGNoYXIqIHJlbGF0aXZlKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkw6OmNy
ZWF0ZSh0b0ltcGwoYmFzZVVSTCksIFN0cmluZzo6ZnJvbVVURjgocmVsYXRpdmUpKS5sZWFrUmVm
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKFdlYktpdDo6
dG9JbXBsKGJhc2VVUkwpLCBTdHJpbmc6OmZyb21VVEY4KHJlbGF0aXZlKSkubGVha1JlZigpKTsK
IH0KIAogV0tTdHJpbmdSZWYgV0tVUkxDb3B5U3RyaW5nKFdLVVJMUmVmIHVybCkKIHsKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybCktPnN0cmluZygpKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmwpLT5zdHJpbmcoKSk7CiB9CiAKIGJv
b2wgV0tVUkxJc0VxdWFsKFdLVVJMUmVmIGEsIFdLVVJMUmVmIGIpCiB7Ci0gICAgcmV0dXJuIEFQ
STo6VVJMOjplcXVhbHMoKnRvSW1wbChhKSwgKnRvSW1wbChiKSk7CisgICAgcmV0dXJuIEFQSTo6
VVJMOjplcXVhbHMoKldlYktpdDo6dG9JbXBsKGEpLCAqV2ViS2l0Ojp0b0ltcGwoYikpOwogfQog
CiBXS1N0cmluZ1JlZiBXS1VSTENvcHlIb3N0TmFtZShXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0
dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwpLT5ob3N0KCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCktPmhvc3QoKSk7CiB9CiAKIFdLU3RyaW5n
UmVmIFdLVVJMQ29weVNjaGVtZShXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbCh1cmwpLT5wcm90b2NvbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGll
ZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmwpLT5wcm90b2NvbCgpKTsKIH0KIAogV0tfRVhQT1JUIFdL
U3RyaW5nUmVmIFdLVVJMQ29weVBhdGgoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwodXJsKS0+cGF0aCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGll
ZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmwpLT5wYXRoKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VS
TENvcHlMYXN0UGF0aENvbXBvbmVudChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbCh1cmwpLT5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmwpLT5sYXN0UGF0aENvbXBvbmVudCgp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCmluZGV4
IDE0OTk1NjNlMzlhZTdiOTg2ZGUxNzM0NzY3ODg1ZjZhYWQ5MjhkMzIuLjI5NmNhZjdjMzI3NWUw
MjUzZGZlYTZkNjg4NjY5MzAyY2JhODBhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tVUkxSZXF1ZXN0LmNwcApAQCAtMzEsMzkgKzMxLDM2IEBACiAjaW5jbHVkZSAiV0tEYXRh
LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLVVJMUmVxdWVzdEdldFR5cGVJRCgp
CiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6VVJMUmVxdWVzdDo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXF1ZXN0OjpBUElUeXBlKTsKIH0KIAogV0tVUkxS
ZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhXS1VSTChXS1VSTFJlZiB1cmwpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShVUkwoVVJMKCksIHRvSW1w
bCh1cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodXJsKS0+
c3RyaW5nKCkpKS5sZWFrUmVmKCkpOwogfQogCiBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5VVJM
KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIHJldHVybiB0b0NvcGllZFVSTEFQ
SSh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCkpOwogfQogCiBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5Rmly
c3RQYXJ0eUZvckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCku
Zmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRVUkxB
UEkoV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmZpcnN0UGFy
dHlGb3JDb29raWVzKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTFJlcXVlc3RDb3B5SFRUUE1l
dGhvZChXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHJlcXVlc3RSZWYp
LT5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkpOwogfQogCiBXS1VSTFJlcXVlc3RSZWYg
V0tVUkxSZXF1ZXN0Q29weVNldHRpbmdIVFRQQm9keShXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJl
ZiwgV0tEYXRhUmVmIGJvZHkpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVl
c3RDb3B5KHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgIHJlcXVl
c3RDb3B5LnNldEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoV0tEYXRhR2V0Qnl0ZXMoYm9keSks
IFdLRGF0YUdldFNpemUoYm9keSkpKTsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVz
dDo6Y3JlYXRlKHJlcXVlc3RDb3B5KS5sZWFrUmVmKCkpOworICAgIFdlYkNvcmU6OlJlc291cmNl
UmVxdWVzdCByZXF1ZXN0Q29weShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VS
ZXF1ZXN0KCkpOworICAgIHJlcXVlc3RDb3B5LnNldEhUVFBCb2R5KFdlYkNvcmU6OkZvcm1EYXRh
OjpjcmVhdGUoV0tEYXRhR2V0Qnl0ZXMoYm9keSksIFdLRGF0YUdldFNpemUoYm9keSkpKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENv
cHkpLmxlYWtSZWYoKSk7CiB9CiAKIHZvaWQgV0tVUkxSZXF1ZXN0U2V0RGVmYXVsdFRpbWVvdXRJ
bnRlcnZhbChkb3VibGUgdGltZW91dEludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1VSTFJlc3BvbnNlLmNwcAppbmRleCA4ZjFmYTlhZDZlMzZlOThhYzQxM2ViYTllZjk1
NTNjYWQ0MDYzOGNmLi4xOTkwYzAzM2VkODVjYTZhZjQ1YTA3ZTk2MWFmMGUyNDgxZDQzNzRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMzAs
MzkgKzMwLDM3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5o
PgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1VSTFJlc3BvbnNlR2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6QVBJVHlwZSk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6QVBJVHlwZSk7CiB9
CiAKIFdLVVJMUmVmIFdLVVJMUmVzcG9uc2VDb3B5VVJMKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9u
c2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXNwb25zZVJlZikt
PnJlc291cmNlUmVzcG9uc2UoKS51cmwoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRV
UkxBUEkoV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkudXJs
KCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKFdLVVJMUmVz
cG9uc2VSZWYgcmVzcG9uc2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChy
ZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNl
UmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKIH0KIAogaW50MzJfdCBXS1VSTFJlc3BvbnNlSFRUUFN0
YXR1c0NvZGUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9J
bXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgp
Lmh0dHBTdGF0dXNDb2RlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMUmVzcG9uc2VDb3B5U3Vn
Z2VzdGVkRmlsZW5hbWUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnN1
Z2dlc3RlZEZpbGVuYW1lKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktp
dDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVu
YW1lKCkpOwogfQogCiBib29sIFdLVVJMUmVzcG9uc2VJc0F0dGFjaG1lbnQoV0tVUkxSZXNwb25z
ZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVz
b3VyY2VSZXNwb25zZSgpLmlzQXR0YWNobWVudCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1w
bChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5pc0F0dGFjaG1lbnQoKTsKIH0KIAog
dWludDMyX3QgV0tVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChXS1VSTFJlc3Bv
bnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5y
ZXNvdXJjZVJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmV4cGVjdGVkQ29u
dGVudExlbmd0aCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGNlZWRjNzY5NjMzMTMwNzA2MjM5NGFm
NTc1NzJlNjllZjQ0NGU4ODguLmZkZWJhNzk3MTA1YTc4MjYzMTk1MmFjZGFiN2IzYmI4ODNjY2Vm
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250
ZW50VVJMUGF0dGVybi5jcHAKQEAgLTMwLDM5ICszMCwzNyBAQAogI2luY2x1ZGUgIldLQVBJQ2Fz
dC5oIgogI2luY2x1ZGUgIldLU3RyaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
IFdLVHlwZUlEIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1
cm4gdG9BUEkoQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OkFQSVR5cGUpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpBUElUeXBlKTsKIH0K
IAogV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWYgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5DcmVh
dGUoV0tTdHJpbmdSZWYgcGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNl
ckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVhdGUodG9JbXBsKHBhdHRlcm5SZWYpLT5zdHJpbmcoKSku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVc2VyQ29udGVudFVS
TFBhdHRlcm46OmNyZWF0ZShXZWJLaXQ6OnRvSW1wbChwYXR0ZXJuUmVmKS0+c3RyaW5nKCkpLmxl
YWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuQ29weUhv
c3QoV0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1
cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybFBhdHRlcm5SZWYpLT5ob3N0KCkpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5ob3N0
KCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VzZXJDb250ZW50VVJMUGF0dGVybkNvcHlTY2hlbWUo
V0tVc2VyQ29udGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKHVybFBhdHRlcm5SZWYpLT5zY2hlbWUoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPnNjaGVt
ZSgpKTsKIH0KIAogYm9vbCBXS1VzZXJDb250ZW50VVJMUGF0dGVybklzVmFsaWQoV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVy
bFBhdHRlcm5SZWYpLT5pc1ZhbGlkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBh
dHRlcm5SZWYpLT5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5N
YXRjaGVzVVJMKFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuUmVmIHVybFBhdHRlcm5SZWYsIFdLVVJM
UmVmIHVybFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVybFBhdHRlcm5SZWYpLT5tYXRjaGVz
VVJMKHRvV1RGU3RyaW5nKHVybFJlZikpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh1cmxQ
YXR0ZXJuUmVmKS0+bWF0Y2hlc1VSTChXZWJLaXQ6OnRvV1RGU3RyaW5nKHVybFJlZikpOwogfQog
CiBib29sIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuTWF0Y2hlc1N1YmRvbWFpbnMoV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVy
bFBhdHRlcm5SZWYpLT5tYXRjaGVzU3ViZG9tYWlucygpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbCh1cmxQYXR0ZXJuUmVmKS0+bWF0Y2hlc1N1YmRvbWFpbnMoKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDMwYWY0
ZGZhNDFmNzIwYTFhOTViNTcyOGQzZjgyZjhjMDM4NzY4NzIuLmNjZmNjNjY4ZjFmNTQxN2Y1MDBj
MGIyNDhhMzU0ODk5NjZmOTFlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcApAQCAtMzQsMTkgKzM0LDE2IEBACiAjaW5jbHVkZSA8
V2ViQ29yZS9QbGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogY2Fpcm9f
c3VyZmFjZV90KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYp
CiB7CiAgICAgLy8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUs
IHNvIHdlIGp1c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVybiB0b0ltcGwoaW1hZ2VS
ZWYpLT5iaXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCku
bGVha1JlZigpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNl
KGNhaXJvX3N1cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAg
ICBJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNl
KSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBhdXRvIHdl
YkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlv
bnMpKTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNl
X2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZh
Y2UpKTsKKyAgICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdl
U2l6ZSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBncmFwaGlj
c0NvbnRleHQgPSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAK
ICAgICBjYWlyb190KiBjciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNy
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlm
aWNhdGVJbmZvQ3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jdXJsL1dLQ2Vy
dGlmaWNhdGVJbmZvQ3VybC5jcHAKaW5kZXggNzdmMDJmZjJiYWY5Nzg1YWQ3M2UzMGYwZmVjMTJm
YTUwZTE1YmJlZi4uNjRkMzAxOTJhMzViYTI5NDk0YjM1YTY3ZjAxYmIzYjgwZTAyMzc3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5m
b0N1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZp
Y2F0ZUluZm9DdXJsLmNwcApAQCAtMzQsOCArMzQsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9D
ZXJ0aWZpY2F0ZUluZm8uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogdXNpbmcgQ2Vy
dGlmaWNhdGUgPSBWZWN0b3I8dWludDhfdD47CiB1c2luZyBDZXJ0aWZpY2F0ZUNoYWluID0gVmVj
dG9yPENlcnRpZmljYXRlPjsKIApAQCAtNTUsMTkgKzUzLDE5IEBAIFdLQ2VydGlmaWNhdGVJbmZv
UmVmIFdLQ2VydGlmaWNhdGVJbmZvQ3JlYXRlV2l0aENlcnRmaWNhdGVDaGFpbihXS0FycmF5UmVm
IGNlcnRpCiAKIGludCBXS0NlcnRpZmljYXRlSW5mb0dldFZlcmlmaWNhdGlvbkVycm9yKFdLQ2Vy
dGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5mb1JlZikKIHsKLSAgICByZXR1cm4gdG9JbXBs
KGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLnZlcmlmaWNhdGlvbkVycm9y
KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRp
ZmljYXRlSW5mbygpLnZlcmlmaWNhdGlvbkVycm9yKCk7CiB9CiAKIHNpemVfdCBXS0NlcnRpZmlj
YXRlSW5mb0dldENlcnRpZmljYXRlQ2hhaW5TaXplKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRp
ZmljYXRlSW5mb1JlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZikt
PmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5zaXplKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNl
cnRpZmljYXRlQ2hhaW4oKS5zaXplKCk7CiB9CiAKIFdLRGF0YVJlZiBXS0NlcnRpZmljYXRlSW5m
b0NvcHlDZXJ0aWZpY2F0ZUF0SW5kZXgoV0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJ
bmZvUmVmLCBzaXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKHRvSW1wbChjZXJ0aWZpY2F0ZUluZm9S
ZWYpLT5jZXJ0aWZpY2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuc2l6ZSgpIDw9IGluZGV4
KQorICAgIGlmIChXZWJLaXQ6OnRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0aWZpY2F0
ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpEYXRhOjpjcmVhdGUobnVsbHB0ciwgMCkubGVha1JlZigp
KTsKIAotICAgIGNvbnN0IGF1dG8mIGNlcnRpZmljYXRlID0gdG9JbXBsKGNlcnRpZmljYXRlSW5m
b1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5hdChpbmRleCk7Cisg
ICAgY29uc3QgYXV0byYgY2VydGlmaWNhdGUgPSBXZWJLaXQ6OnRvSW1wbChjZXJ0aWZpY2F0ZUlu
Zm9SZWYpLT5jZXJ0aWZpY2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuYXQoaW5kZXgpOwog
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRhdGE6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IHVuc2lnbmVkIGNoYXIqPihjZXJ0aWZpY2F0ZS5kYXRhKCkpLCBjZXJ0aWZpY2F0
ZS5zaXplKCkpLmxlYWtSZWYoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356467</attachid>
            <date>2018-12-03 22:14:34 -0800</date>
            <delta_ts>2018-12-03 22:39:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192352-20181204151433.patch</filename>
            <type>text/plain</type>
            <size>60887</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5YzAzNDkzMDA0YWYxYmFi
ZjRjYmNiMmQ3OTVlZTY5NjAwMjFmOTcuLmQ5ZTc2YzUxZmY0NWYyNzY4MGU0OGY1MDFlYjdlNjcx
NTFjYTAyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTgtMTItMDMgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgdW5kZXIgV2ViS2l0L1NoYXJlZC9BUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjM1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdXNp
bmcgbmFtZXNwYWNlIHN0YXRlbWVudHMsIGFuZCB1c2UgbmFtZXNwYWNlIHByZWZpeAorICAgICAg
ICBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwOgorCiAyMDE4LTEy
LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBhbmltYXRlZCBrZXlib2FyZCBzY3JvbGxpbmcgYmVo
YXZpb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcAppbmRleCBh
YzkwNGQ0MDljMjE1MTBjZjU2YzczODAxYTk1ZmE1ZjFhZjUxOTViLi4zZTUwMjJlMWQ4YTE3YTFi
N2RjZWM3NmY5NmJjYWQ3MjMzOWQzNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTFJlcXVlc3QuY3BwCkBAIC0yOSwyNyArMjksMjQgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCi1VUkxSZXF1ZXN0OjpVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK1VSTFJlcXVlc3Q6OlVSTFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiB7CiB9CiAKIGRvdWJsZSBVUkxS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgcmVhbGx5IGJlIG9uIFdlYlByb2Nlc3NQb29sIG9yIFdlYlBh
Z2VQcm94eS4KIHZvaWQgVVJMUmVxdWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3Vi
bGUgdGltZW91dEludGVydmFsKQogewotICAgIFJlc291cmNlUmVxdWVzdDo6c2V0RGVmYXVsdFRp
bWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZXREZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogfQogCkBAIC02MCw3ICs1Nyw3IEBA
IHZvaWQgVVJMUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
Ym9vbCBVUkxSZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8T2Jq
ZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVzcG9uc2UuY3BwCmluZGV4IDFkOTNiNjJkMzhmYWMyYjg4MzdiODFhY2Jh
NTAyMGFhYzE0ZjgyYjcuLmJhMTM3NThkOGIyZGQ2MmY2M2YxMDZhNmNkZTZkMWZjNTkyMjU4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcApAQCAtMjgs
OCArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgQVBJIHsKIAogVVJMUmVzcG9uc2U6OlVS
TFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAt
NDQsNyArNDIsNyBAQCB2b2lkIFVSTFJlc3BvbnNlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiBib29sIFVSTFJlc3BvbnNlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA4NDQxNjExMjQyMTdhZjRk
MzUzZWI2YjI5YmY5MTdlMDRkOGJlNWE5Li5jOTc4NmY0YmE0NjBhMGUxOGFlNjg5OTZmOTFiZmRm
NmRkY2NhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcApAQCAtMjks
MTEgKzI5LDkgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tB
cnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQpAQCAt
NDIsOSArNDAsOSBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKHRvSW1wbCh2
YWx1ZXNbaV0pKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdlYktpdDo6dG9J
bXBsKHZhbHVlc1tpXSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKIH0KIAog
V0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKQEAgLTUzLDE3ICs1MSwxNyBAQCBXS0FycmF5UmVmIFdL
QXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJl
ck9mVmFsdWVzKQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytp
KQotICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYodG9JbXBsKHZhbHVl
c1tpXSkpKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKFdlYktp
dDo6dG9JbXBsKHZhbHVlc1tpXSkpKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJl
Ziwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoYXJyYXlSZWYpLT5h
dChpbmRleCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGFycmF5
UmVmKS0+YXQoaW5kZXgpKTsKIH0KIAogc2l6ZV90IFdLQXJyYXlHZXRTaXplKFdLQXJyYXlSZWYg
YXJyYXlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhcnJheVJlZiktPnNpemUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggNDVlYzYyNzUx
YTcxM2M3MjNhZmRhYWVlMWYyNzkzMjY0ODU3ZGNmZi4uMmI3MTdlNTcyZjk5NmFhOGUzOWRlZDll
OWU2NjA5MmI4Y2VhNmViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tDZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcApAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgIldlYkNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS0NlcnRpZmljYXRlSW5mb0dldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKFdlYkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKaW5kZXggOWZh
NzA0MmMyOWVlMzEwM2UxNzIxNGVlYjNiYjY0MDg0ZmM4MzhmYi4uMjU1NjRmOWY4NzhjOWFjZmUw
ZmVmYjNmNTQ4MjFkNGViYTVkNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS0Nvbm5lY3Rpb25SZWYuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQ29ubmVjdGlvbkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKFdlYkNvbm5lY3Rpb246OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6QVBJVHlwZSk7CiB9CiAKIHZvaWQgV0tDb25uZWN0aW9u
U2V0Q29ubmVjdGlvbkNsaWVudChXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qg
V0tDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbm5lY3Rp
b25SZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29ubmVjdGlvblJlZiktPmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xp
ZW50KTsKIH0KIAogdm9pZCBXS0Nvbm5lY3Rpb25Qb3N0TWVzc2FnZShXS0Nvbm5lY3Rpb25SZWYg
Y29ubmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keVJlZikKIHsKLSAgICB0b0ltcGwoY29ubmVjdGlvblJlZiktPnBvc3RNZXNzYWdlKHRv
SW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChjb25uZWN0aW9uUmVmKS0+cG9zdE1lc3NhZ2UoV2ViS2l0Ojp0
b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwobWVzc2FnZUJv
ZHlSZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tD
b250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IDFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThj
OTcuLjdjZDM4YmUzZjAyMGUzMTNmYmYyMzFlMDEyOTJmZTUzZWQ1NGYzNGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTMyLDIy
ICszMiwxOSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0NvbnRleHRNZW51SXRlbUdldFR5cGVJRCgpCiB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHRNZW51
SXRlbTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW06OkFQSVR5cGUpOwogI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmpl
Y3Q6OlR5cGU6Ok51bGwpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6T2JqZWN0OjpU
eXBlOjpOdWxsKTsKICNlbmRpZgogfQogCiBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRN
ZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgV0tTdHJpbmdS
ZWYgdGl0bGUsIGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygp
LCBlbmFibGVkLCBmYWxzZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JldlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhKFdlYkNvcmU6OkFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdlYktp
dDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGZhbHNlKSkubGVha1JlZigpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsK
QEAgLTU5LDcgKzU2LDcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1D
cmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFcKIFdLQ29udGV4dE1lbnVJ
dGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVBY3Rpb24oV0tDb250ZXh0
TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNo
ZWNrZWQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKENoZWNrYWJs
ZUFjdGlvblR5cGUsIHRvSW1wbCh0YWcpLCB0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxl
ZCwgY2hlY2tlZCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhKFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdl
YktpdDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGNoZWNrZWQpKS5sZWFrUmVm
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGFnKTsKICAgICBVTlVTRURfUEFSQU0odGl0
bGUpOwpAQCAtNzIsNyArNjksNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51
SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogV0tDb250ZXh0
TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYg
dGl0bGUsIGJvb2wgZW5hYmxlZCwgV0tBcnJheVJlZiBzdWJtZW51SXRlbXMpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZSh0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxlZCwgdG9JbXBsKHN1Ym1lbnVJ
dGVtcykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwg
ZW5hYmxlZCwgV2ViS2l0Ojp0b0ltcGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CkBA
IC04NCw3ICs4MSw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3Jl
YXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuCiBXS0NvbnRleHRNZW51SXRl
bVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OnNlcGFyYXRv
ckl0ZW0oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCkBAIC05Myw3ICs5MCw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJ
dGVtU2VwYXJhdG9ySXRlbSgpCiBXS0NvbnRleHRNZW51SXRlbVRhZyBXS0NvbnRleHRNZW51SXRl
bUdldFRhZyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS5hY3Rp
b24oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikt
PmRhdGEoKS5hY3Rpb24oKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gdG9BUEkoQ29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOwpAQCAtMTAzLDcgKzEw
MCw3IEBAIFdLQ29udGV4dE1lbnVJdGVtVGFnIFdLQ29udGV4dE1lbnVJdGVtR2V0VGFnKFdLQ29u
dGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0
TWVudUl0ZW1HZXRUeXBlKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0
YSgpLnR5cGUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRl
bVJlZiktPmRhdGEoKS50eXBlKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7
CiAgICAgcmV0dXJuIHRvQVBJKEFjdGlvblR5cGUpOwpAQCAtMTEzLDcgKzExMCw3IEBAIFdLQ29u
dGV4dE1lbnVJdGVtVHlwZSBXS0NvbnRleHRNZW51SXRlbUdldFR5cGUoV0tDb250ZXh0TWVudUl0
ZW1SZWYgaXRlbVJlZikKIFdLU3RyaW5nUmVmIFdLQ29udGV4dE1lbnVJdGVtQ29weVRpdGxlKFdL
Q29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMp
Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLnRpdGxlKCku
aW1wbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChp
dGVtUmVmKS0+ZGF0YSgpLnRpdGxlKCkuaW1wbCgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFN
KGl0ZW1SZWYpOwogICAgIHJldHVybiAwOwpAQCAtMTIzLDcgKzEyMCw3IEBAIFdLU3RyaW5nUmVm
IFdLQ29udGV4dE1lbnVJdGVtQ29weVRpdGxlKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYp
CiBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0RW5hYmxlZChXS0NvbnRleHRNZW51SXRlbVJlZiBp
dGVtUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0ltcGwo
aXRlbVJlZiktPmRhdGEoKS5lbmFibGVkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGl0
ZW1SZWYpLT5kYXRhKCkuZW5hYmxlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJl
Zik7CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTMzLDcgKzEzMCw3IEBAIGJvb2wgV0tDb250ZXh0
TWVudUl0ZW1HZXRFbmFibGVkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBib29sIFdL
Q29udGV4dE1lbnVJdGVtR2V0Q2hlY2tlZChXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQog
ewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0ltcGwoaXRlbVJlZikt
PmRhdGEoKS5jaGVja2VkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpLT5k
YXRhKCkuY2hlY2tlZCgpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAg
cmV0dXJuIGZhbHNlOwpAQCAtMTQzLDcgKzE0MCw3IEBAIGJvb2wgV0tDb250ZXh0TWVudUl0ZW1H
ZXRDaGVja2VkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS0FycmF5UmVmIFdLQ29u
dGV4dE1lbnVDb3B5U3VibWVudUl0ZW1zKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7
CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwoaXRl
bVJlZiktPnN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+c3VibWVudUl0ZW1zQXNBUElB
cnJheSgpLmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gMDsKQEAgLTE1Myw3ICsxNTAsNyBAQCBXS0FycmF5UmVmIFdLQ29udGV4dE1lbnVD
b3B5U3VibWVudUl0ZW1zKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiBXS1R5cGVSZWYg
V0tDb250ZXh0TWVudUl0ZW1HZXRVc2VyRGF0YShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVm
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
aXRlbVJlZiktPnVzZXJEYXRhKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6
dG9JbXBsKGl0ZW1SZWYpLT51c2VyRGF0YSgpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0
ZW1SZWYpOwogICAgIHJldHVybiAwOwpAQCAtMTYzLDcgKzE2MCw3IEBAIFdLVHlwZVJlZiBXS0Nv
bnRleHRNZW51SXRlbUdldFVzZXJEYXRhKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB2
b2lkIFdLQ29udGV4dE1lbnVJdGVtU2V0VXNlckRhdGEoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRl
bVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVT
KQotICAgIHRvSW1wbChpdGVtUmVmKS0+c2V0VXNlckRhdGEodG9JbXBsKHVzZXJEYXRhUmVmKSk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPnNldFVzZXJEYXRhKFdlYktpdDo6dG9JbXBs
KHVzZXJEYXRhUmVmKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAgICBV
TlVTRURfUEFSQU0odXNlckRhdGFSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tEYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGF0YS5j
cHAKaW5kZXggZmRiY2E3M2RjYjllZWIzNjk4NTAyMDVjZTlmODg0MGMwYTMyZDQ2MS4uMTNmNzlk
OTIxNmQ0YjYyZjMxNjVkOTQ5YzNmMzRjNmVmZTg4NmQzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS0RhdGEuY3BwCkBAIC0yOSwyNCArMjksMjIgQEAKICNpbmNsdWRlICJBUElEYXRhLmgi
CiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdL
VHlwZUlEIFdLRGF0YUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RGF0YTo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpEYXRhOjpBUElUeXBlKTsK
IH0KIAogV0tEYXRhUmVmIFdLRGF0YUNyZWF0ZShjb25zdCB1bnNpZ25lZCBjaGFyKiBieXRlcywg
c2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkRhdGE6OmNyZWF0ZShieXRl
cywgc2l6ZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpEYXRh
OjpjcmVhdGUoYnl0ZXMsIHNpemUpLmxlYWtSZWYoKSk7CiB9CiAKIGNvbnN0IHVuc2lnbmVkIGNo
YXIqIFdLRGF0YUdldEJ5dGVzKFdLRGF0YVJlZiBkYXRhUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwoZGF0YVJlZiktPmJ5dGVzKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRhdGFSZWYp
LT5ieXRlcygpOwogfQogCiBzaXplX3QgV0tEYXRhR2V0U2l6ZShXS0RhdGFSZWYgZGF0YVJlZikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKGRhdGFSZWYpLT5zaXplKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKGRhdGFSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tEaWN0aW9uYXJ5LmNwcAppbmRleCA2NTRlMWU2MWUwNmYwYjBmN2U4M2ZkNmMyN2RhYWJm
MzFlMTM4Y2RlLi4yZjVhMDBlMDQ4YTRiMjEzOTI0YjYxYzY4NTIxZThkMWIxYzg3MDBlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAKQEAgLTMwLDMzICsz
MCwzMSBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3Qu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tEaWN0aW9uYXJ5R2V0
VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpEaWN0aW9uYXJ5OjpBUElUeXBlKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRpY3Rpb25hcnk6OkFQSVR5cGUpOwogfQog
CiBXS19FWFBPUlQgV0tEaWN0aW9uYXJ5UmVmIFdLRGljdGlvbmFyeUNyZWF0ZShjb25zdCBXS1N0
cmluZ1JlZioga2V5cywgY29uc3QgV0tUeXBlUmVmKiB2YWx1ZXMsIHNpemVfdCBudW1iZXJPZlZh
bHVlcykKIHsKICAgICBBUEk6OkRpY3Rpb25hcnk6Ok1hcFR5cGUgbWFwOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgbWFwLmFkZCh0b0lt
cGwoa2V5c1tpXSktPnN0cmluZygpLCB0b0ltcGwodmFsdWVzW2ldKSk7CisgICAgICAgIG1hcC5h
ZGQoV2ViS2l0Ojp0b0ltcGwoa2V5c1tpXSktPnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbCh2YWx1
ZXNbaV0pKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoV1RG
TW92ZShtYXApKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRp
Y3Rpb25hcnk6OmNyZWF0ZShXVEZNb3ZlKG1hcCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVHlwZVJl
ZiBXS0RpY3Rpb25hcnlHZXRJdGVtRm9yS2V5KFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVm
LCBXS1N0cmluZ1JlZiBrZXkpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChkaWN0aW9uYXJ5
UmVmKS0+Z2V0KHRvSW1wbChrZXkpLT5zdHJpbmcoKSkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKFdlYktpdDo6dG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5nZXQoV2ViS2l0Ojp0b0ltcGwoa2V5
KS0+c3RyaW5nKCkpKTsKIH0KIAogc2l6ZV90IFdLRGljdGlvbmFyeUdldFNpemUoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVm
KS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2l6
ZSgpOwogfQogCiBXS0FycmF5UmVmIFdLRGljdGlvbmFyeUNvcHlLZXlzKFdLRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5UmVmKQogewotICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGRpY3Rpb25hcnlS
ZWYpLT5rZXlzKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0
Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPmtleXMoKS5sZWFrUmVmKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcAppbmRleCBjOTQxNTEyMGI4NTMwOWMwNTAz
YTc1MjMxNGEyYTU3NzIxMTYyYzhmLi40NzkzYTU3ZmQyZjE1NGZlYzcxZDk4NGI3OGZiNDhhZDg0
OTI5MTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVm
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcApAQCAt
MjksMjYgKzI5LDI0IEBACiAjaW5jbHVkZSAiQVBJRXJyb3IuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tFcnJvckdldFR5
cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RXJyb3I6OkFQSVR5cGUpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RXJyb3I6OkFQSVR5cGUpOwogfQogCiBXS1N0cmluZ1Jl
ZiBXS0Vycm9yQ29weVdLRXJyb3JEb21haW4oKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSShB
UEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShBUEk6OkVycm9yOjp3ZWJLaXRFcnJvckRvbWFpbigpKTsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tFcnJvckNvcHlEb21haW4oV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICByZXR1cm4g
dG9Db3BpZWRBUEkodG9JbXBsKGVycm9yUmVmKS0+ZG9tYWluKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKGVycm9yUmVmKS0+ZG9tYWluKCkpOwogfQog
CiBpbnQgV0tFcnJvckdldEVycm9yQ29kZShXS0Vycm9yUmVmIGVycm9yUmVmKQogewotICAgIGF1
dG8gZXJyb3JDb2RlID0gdG9JbXBsKGVycm9yUmVmKS0+ZXJyb3JDb2RlKCk7CisgICAgYXV0byBl
cnJvckNvZGUgPSBXZWJLaXQ6OnRvSW1wbChlcnJvclJlZiktPmVycm9yQ29kZSgpOwogICAgIHN3
aXRjaCAoZXJyb3JDb2RlKSB7CiAgICAgY2FzZSBBUEk6OkVycm9yOjpQb2xpY3k6OkNhbm5vdFNo
b3dNSU1FVHlwZToKICAgICAgICAgcmV0dXJuIGtXS0Vycm9yQ29kZUNhbm5vdFNob3dNSU1FVHlw
ZTsKQEAgLTgzLDEwICs4MSwxMCBAQCBpbnQgV0tFcnJvckdldEVycm9yQ29kZShXS0Vycm9yUmVm
IGVycm9yUmVmKQogCiBXS1VSTFJlZiBXS0Vycm9yQ29weUZhaWxpbmdVUkwoV0tFcnJvclJlZiBl
cnJvclJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKGVycm9yUmVmKS0+
ZmFpbGluZ1VSTCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6
OnRvSW1wbChlcnJvclJlZiktPmZhaWxpbmdVUkwoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLRXJy
b3JDb3B5TG9jYWxpemVkRGVzY3JpcHRpb24oV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGVycm9yUmVmKS0+bG9jYWxpemVkRGVzY3JpcHRpb24o
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZXJyb3JS
ZWYpLT5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tHZW9tZXRyeS5jcHAKaW5kZXggNGNkNWUzZGE0NzAwYzc1NmY2YjcwYTNkZjM4ZTNmZThl
NWVhOWVkNy4uMmE4YjYzMDU3OWMxNzY5YjA5NmZiNWRjZWU5MTkxY2JmNjhmODZlNSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAKQEAgLTI5LDUwICsyOSw0OCBA
QAogI2luY2x1ZGUgIkFQSUdlb21ldHJ5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU2l6ZUdldFR5cGVJRCh2b2lkKQog
ewotICAgIHJldHVybiB0b0FQSShBUEk6OlNpemU6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6U2l6ZTo6QVBJVHlwZSk7CiB9CiAKIFdLVHlwZUlEIFdLUG9pbnRHZXRU
eXBlSUQodm9pZCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpQb2ludDo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpQb2ludDo6QVBJVHlwZSk7CiB9CiAKIFdLVHlw
ZUlEIFdLUmVjdEdldFR5cGVJRCh2b2lkKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlJlY3Q6
OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6UmVjdDo6QVBJVHlwZSk7
CiB9CiAKIFdLUG9pbnRSZWYgV0tQb2ludENyZWF0ZShXS1BvaW50IHBvaW50KQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpQb2ludDo6Y3JlYXRlKHBvaW50KS5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlBvaW50OjpjcmVhdGUocG9pbnQpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLU2l6ZVJlZiBXS1NpemVDcmVhdGUoV0tTaXplIHNpemUpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKCZBUEk6OlNpemU6OmNyZWF0ZShzaXplKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OlNpemU6OmNyZWF0ZShzaXplKS5sZWFrUmVmKCkpOwogfQogCiBX
S1JlY3RSZWYgV0tSZWN0Q3JlYXRlKFdLUmVjdCByZWN0KQogewotICAgIHJldHVybiB0b0FQSSgm
QVBJOjpSZWN0OjpjcmVhdGUocmVjdCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmQVBJOjpSZWN0OjpjcmVhdGUocmVjdCkubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdL
U2l6ZUdldFZhbHVlKFdLU2l6ZVJlZiBzaXplKQogewotICAgIHJldHVybiB0b0ltcGwoc2l6ZSkt
PnNpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc2l6ZSktPnNpemUoKTsKIH0KIAog
V0tQb2ludCBXS1BvaW50R2V0VmFsdWUoV0tQb2ludFJlZiBwb2ludCkKIHsKLSAgICByZXR1cm4g
dG9JbXBsKHBvaW50KS0+cG9pbnQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocG9pbnQp
LT5wb2ludCgpOwogfQogCiBXS1JlY3QgV0tSZWN0R2V0VmFsdWUoV0tSZWN0UmVmIHJlY3QpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChyZWN0KS0+cmVjdCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChyZWN0KS0+cmVjdCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS0ltYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2Uu
Y3BwCmluZGV4IDY4ZTYzODFkOGMxODk0N2ZlZWQ1YTZjZDczYzI5ZTIxZjFiYzdiNzkuLjMxYjZk
YWViODM4ZmNhM2NiZTY1YmUzYjcwOTY5MTlmNWMwMjAwYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLSW1hZ2UuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS1NoYXJl
ZEFQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJJbWFnZS5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS0ltYWdlR2V0VHlwZUlEKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKFdlYkltYWdlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OldlYkltYWdlOjpBUElUeXBlKTsKIH0KIAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlKFdLU2l6
ZSBzaXplLCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIGF1dG8gd2ViSW1hZ2UgPSBX
ZWJJbWFnZTo6Y3JlYXRlKHRvSW50U2l6ZShzaXplKSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykp
OworICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoV2ViS2l0Ojp0
b0ludFNpemUoc2l6ZSksIFdlYktpdDo6dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIHJl
dHVybiB0b0FQSSh3ZWJJbWFnZS5sZWFrUmVmKCkpOwogfQogCiBXS1NpemUgV0tJbWFnZUdldFNp
emUoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGltYWdl
UmVmKS0+c2l6ZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChp
bWFnZVJlZiktPnNpemUoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS011dGFibGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011
dGFibGVBcnJheS5jcHAKaW5kZXggNWRjODUyNjBmYWRiYWUzMmQ5OGIwMTQ4NWM5MzdmNGRjNmNi
MThhNC4uOWE5MzFjYzYyMmEwY2JkZjc0ZjA4YjUzYzAzMzViZmMwODM2MTZlZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcApAQCAtMjksMjAgKzI5
LDE4IEBACiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tNdXRhYmxlQXJyYXlSZWYgV0tNdXRhYmxlQXJy
YXlDcmVhdGUoKQogewotICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZUFycmF5UmVmPih0
b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKCkubGVha1JlZigpKSk7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8V0tNdXRhYmxlQXJyYXlSZWY+KFdlYktpdDo6dG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0
ZSgpLmxlYWtSZWYoKSkpOwogfQogCiB2b2lkIFdLQXJyYXlBcHBlbmRJdGVtKFdLTXV0YWJsZUFy
cmF5UmVmIGFycmF5UmVmLCBXS1R5cGVSZWYgaXRlbVJlZikKIHsKLSAgICB0b0ltcGwoYXJyYXlS
ZWYpLT5lbGVtZW50cygpLmFwcGVuZCh0b0ltcGwoaXRlbVJlZikpOworICAgIFdlYktpdDo6dG9J
bXBsKGFycmF5UmVmKS0+ZWxlbWVudHMoKS5hcHBlbmQoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikp
OwogfQogCiB2b2lkIFdLQXJyYXlSZW1vdmVJdGVtQXRJbmRleChXS011dGFibGVBcnJheVJlZiBh
cnJheVJlZiwgc2l6ZV90IGluZGV4KQogewotICAgIHRvSW1wbChhcnJheVJlZiktPmVsZW1lbnRz
KCkucmVtb3ZlKGluZGV4KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChhcnJheVJlZiktPmVsZW1lbnRz
KCkucmVtb3ZlKGluZGV4KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcAppbmRleCA5NmI4OWJkNDU2NDg0ZDUxYzBhN2ZiM2E1
NzljOWU1ZDljZGE4NDdkLi43ZGIyMTE2ODBlMjg3ZjQ4NWJhMTM2YTkxYzE3YzhhOWY4ZDU3NTAz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9u
YXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9u
YXJ5LmNwcApAQCAtMjksMTUgKzI5LDEzIEBACiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS011
dGFibGVEaWN0aW9uYXJ5UmVmIFdLTXV0YWJsZURpY3Rpb25hcnlDcmVhdGUoKQogewotICAgIHJl
dHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZURpY3Rpb25hcnlSZWY+KHRvQVBJKCZBUEk6OkRpY3Rp
b25hcnk6OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0
YWJsZURpY3Rpb25hcnlSZWY+KFdlYktpdDo6dG9BUEkoJkFQSTo6RGljdGlvbmFyeTo6Y3JlYXRl
KCkubGVha1JlZigpKSk7CiB9CiAKIGJvb2wgV0tEaWN0aW9uYXJ5U2V0SXRlbShXS011dGFibGVE
aWN0aW9uYXJ5UmVmIGRpY3Rpb25hcnlSZWYsIFdLU3RyaW5nUmVmIGtleVJlZiwgV0tUeXBlUmVm
IGl0ZW1SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2V0KHRvSW1w
bChrZXlSZWYpLT5zdHJpbmcoKSwgdG9JbXBsKGl0ZW1SZWYpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNldChXZWJLaXQ6OnRvSW1wbChrZXlSZWYpLT5zdHJp
bmcoKSwgV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS051bWJlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS051bWJlci5jcHAKaW5kZXggNDE4ZTAyOWVhNjdkYmYzYTZhMWZlY2MwNzUzODdjYzZh
MjE3NGQ4Ni4uMTlmOWVlMDc5NmMzYzRhNzYyYThlMTZkM2RhZjNkMGUyNDdiZmJlMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcApAQCAtMjksNTIgKzI5LDUwIEBACiAj
aW5jbHVkZSAiQVBJTnVtYmVyLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQm9vbGVhbkdldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6Qm9vbGVhbjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoQVBJOjpCb29sZWFuOjpBUElUeXBlKTsKIH0KIAogV0tCb29sZWFuUmVmIFdLQm9vbGVh
bkNyZWF0ZShib29sIHZhbHVlKQogewogICAgIGF1dG8gYm9vbGVhbk9iamVjdCA9IEFQSTo6Qm9v
bGVhbjo6Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkoJmJvb2xlYW5PYmplY3QubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmYm9vbGVhbk9iamVjdC5sZWFrUmVm
KCkpOwogfQogCiBib29sIFdLQm9vbGVhbkdldFZhbHVlKFdLQm9vbGVhblJlZiBib29sZWFuUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwoYm9vbGVhblJlZiktPnZhbHVlKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKGJvb2xlYW5SZWYpLT52YWx1ZSgpOwogfQogCiBXS1R5cGVJRCBXS0Rv
dWJsZUdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RG91YmxlOjpBUElUeXBl
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRvdWJsZTo6QVBJVHlwZSk7CiB9CiAK
IFdLRG91YmxlUmVmIFdLRG91YmxlQ3JlYXRlKGRvdWJsZSB2YWx1ZSkKIHsKICAgICBhdXRvIGRv
dWJsZU9iamVjdCA9IEFQSTo6RG91YmxlOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQ
SSgmZG91YmxlT2JqZWN0LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmRv
dWJsZU9iamVjdC5sZWFrUmVmKCkpOwogfQogCiBkb3VibGUgV0tEb3VibGVHZXRWYWx1ZShXS0Rv
dWJsZVJlZiBkb3VibGVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChkb3VibGVSZWYpLT52YWx1
ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkb3VibGVSZWYpLT52YWx1ZSgpOwogfQog
CiBXS1R5cGVJRCBXS1VJbnQ2NEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6
VUludDY0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVJbnQ2NDo6
QVBJVHlwZSk7CiB9CiAKIFdLVUludDY0UmVmIFdLVUludDY0Q3JlYXRlKHVpbnQ2NF90IHZhbHVl
KQogewogICAgIGF1dG8gdWludDY0T2JqZWN0ID0gQVBJOjpVSW50NjQ6OmNyZWF0ZSh2YWx1ZSk7
Ci0gICAgcmV0dXJuIHRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmdWludDY0T2JqZWN0LmxlYWtSZWYoKSk7CiB9CiAKIHVpbnQ2NF90IFdL
VUludDY0R2V0VmFsdWUoV0tVSW50NjRSZWYgdWludDY0UmVmKQogewotICAgIHJldHVybiB0b0lt
cGwodWludDY0UmVmKS0+dmFsdWUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodWludDY0
UmVmKS0+dmFsdWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQ
bHVnaW5JbmZvcm1hdGlvbi5jcHAKaW5kZXggZTNhZTRmNWYwMzI1OGFhMTBhNmFiNWFiYWIzNGM2
YWYwYmRkMzMwOS4uZDViMzQxYjFjOTYxOWM4MTMxYTdkN2ZjMzc4MzJiYWI5MWM5OTIxMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5j
cHAKQEAgLTMwLDEzICszMCwxMSBAQAogI2luY2x1ZGUgIlBsdWdpbkluZm9ybWF0aW9uLmgiCiAj
aW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
IFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKIHsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcm
IGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlm
aWVyS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGlj
IEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5m
b3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTQ1LDgg
KzQzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJL
ZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKQog
ewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNp
b25LZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMg
QVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZv
cm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNTUsOCArNTMs
OCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpCiBX
S1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCkKIHsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcm
IGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVTaG9ydFZl
cnNpb25LZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0
aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5J
bmZvcm1hdGlvbkJ1bmRsZVNob3J0VmVyc2lvbktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC02
NSw4ICs2Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVTaG9ydFZl
cnNpb25LZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKQogewog
I2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYg
a2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblBhdGhLZXkoKSkubGVh
a1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcm
IGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvblBhdGhL
ZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNzUsOCArNzMsOCBAQCBXS1N0cmluZ1JlZiBXS1Bs
dWdpbkluZm9ybWF0aW9uUGF0aEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9u
RGlzcGxheU5hbWVLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZv
cm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtl
eSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdl
YktpdDo6cGx1Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFtZUtleSgpKS5sZWFrUmVmKCk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlm
CkBAIC04NSw4ICs4Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25EaXNwbGF5
TmFtZUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRGVmYXVsdExvYWRQb2xp
Y3lLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBB
UEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkRl
ZmF1bHRMb2FkUG9saWN5S2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7
CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktp
dDo6cGx1Z2luSW5mb3JtYXRpb25EZWZhdWx0TG9hZFBvbGljeUtleSgpKS5sZWFrUmVmKCk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2Vu
ZGlmCkBAIC05NSw4ICs5Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25EZWZh
dWx0TG9hZFBvbGljeUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uVXBkYXRl
UGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKQogewogI2lmIEVOQUJM
RShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJ
OjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBhc3RMYXN0QmxvY2tlZFZl
cnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEko
JmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRl
KFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNL
bm93bkF2YWlsYWJsZUtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xMDUsOCArMTAzLDggQEAg
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBhc3RMYXN0QmxvY2tlZFZlcnNp
b25Jc0tub3duQXZhaWxhYmxlS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25I
YXNTYW5kYm94UHJvZmlsZUtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdp
bkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVy
biB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5n
OjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KCkp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTExNSw4ICsxMTMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdp
bkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5J
bmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQ
SSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1
Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJ
KCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0
ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxLZXkoKSkubGVha1JlZigpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRp
ZgpAQCAtMTI1LDggKzEyMyw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25GcmFt
ZVVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKQog
ewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5
KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6
U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRp
b25NSU1FVHlwZUtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtl
eSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xMzUsOCArMTMzLDggQEAgV0tT
dHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkKIFdLU3RyaW5nUmVmIFdL
UGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExV
R0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVh
dGUocGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4g
dG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6
Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25QYWdlVVJMS2V5KCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKQEAgLTE0NSw4ICsxNDMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9u
UGFnZVVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VB
dHRyaWJ1dGVVUkxLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZv
cm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1
cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVS
TEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxz
ZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNTUsOCArMTUzLDggQEAgV0tTdHJpbmdSZWYg
V0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCkKIFdLU3RyaW5n
UmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKQogewogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJp
bmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJ
OjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkp
LmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE2NSw4ICsxNjMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdp
bkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z0luSW5mb3JtYXRp
b25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
cGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1cmVkS2V5KCkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z0luSW5mb3JtYXRpb25SZXBsYWNlbWVudE9ic2N1
cmVkS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNl
bHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tSZW5kZXJMYXllci5jcHAKaW5kZXggMjA3MjZmNGVlMjkyZDk3YTBhZWY1YzRiYTJhNmEzZmUy
NDBhMDk0ZC4uOTRjODVlOTEzZjljZDUwNWE0M2I0MzgwZjAzNjkzOTI3Mjc0YTdkMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJMYXllci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJMYXllci5jcHAKQEAgLTMwLDgwICsz
MCw3NyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlJlbmRlckxheWVy
LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQogV0tUeXBlSUQgV0tSZW5kZXJMYXllckdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJ
KFdlYlJlbmRlckxheWVyOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJL
aXQ6OldlYlJlbmRlckxheWVyOjpBUElUeXBlKTsKIH0KIAogV0tSZW5kZXJPYmplY3RSZWYgV0tS
ZW5kZXJMYXllckdldFJlbmRlcmVyKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRlcmVyKCkpOwor
ICAgIHJldHVybiB0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRlcmVy
KCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlckxheWVyQ29weVJlbmRlcmVyTmFtZShXS1Jl
bmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0
b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpLT5uYW1lKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVuZGVy
ZXIoKS0+bmFtZSgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tSZW5kZXJMYXllckNvcHlFbGVtZW50
VGFnTmFtZShXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIFdlYlJlbmRl
ckxheWVyKiByZW5kZXJMYXllciA9IHRvSW1wbChyZW5kZXJMYXllclJlZik7CisgICAgV2ViS2l0
OjpXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5ZXIgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXll
clJlZik7CiAgICAgaWYgKCFyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudFRhZ05hbWUo
KS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlckxheWVyLT5yZW5k
ZXJlcigpLT5lbGVtZW50VGFnTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6dG9Db3Bp
ZWRBUEkocmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRUYWdOYW1lKCkpOwogCiAgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyTGF5ZXJDb3B5RWxlbWVu
dElEKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgV2ViUmVuZGVyTGF5
ZXIqIHJlbmRlckxheWVyID0gdG9JbXBsKHJlbmRlckxheWVyUmVmKTsKKyAgICBXZWJLaXQ6Oldl
YlJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVm
KTsKICAgICBpZiAoIXJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5lbGVtZW50SUQoKS5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5l
bGVtZW50SUQoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRlckxh
eWVyLT5yZW5kZXJlcigpLT5lbGVtZW50SUQoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0K
IAogV0tBcnJheVJlZiBXS1JlbmRlckxheWVyR2V0RWxlbWVudENsYXNzTmFtZXMoV0tSZW5kZXJM
YXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+cmVuZGVyZXIoKS0+ZWxlbWVudENsYXNzTmFtZXMoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigp
LT5lbGVtZW50Q2xhc3NOYW1lcygpKTsKIH0KIAogV0tSZWN0IFdLUmVuZGVyTGF5ZXJHZXRBYnNv
bHV0ZUJvdW5kcyhXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIEludFJl
Y3QgYm91bmRzID0gdG9JbXBsKHJlbmRlckxheWVyUmVmKS0+YWJzb2x1dGVCb3VuZGluZ0JveCgp
OworICAgIFdlYkNvcmU6OkludFJlY3QgYm91bmRzID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5
ZXJSZWYpLT5hYnNvbHV0ZUJvdW5kaW5nQm94KCk7CiAgICAgcmV0dXJuIFdLUmVjdE1ha2UoYm91
bmRzLngoKSwgYm91bmRzLnkoKSwgYm91bmRzLndpZHRoKCksIGJvdW5kcy5oZWlnaHQoKSk7CiB9
CiAKIGJvb2wgV0tSZW5kZXJMYXllcklzQ2xpcHBpbmcoV0tSZW5kZXJMYXllclJlZiByZW5kZXJM
YXllclJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlckxheWVyUmVmKS0+aXNDbGlwcGlu
ZygpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzQ2xpcHBp
bmcoKTsKIH0KIAogYm9vbCBXS1JlbmRlckxheWVySXNDbGlwcGVkKFdLUmVuZGVyTGF5ZXJSZWYg
cmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmlz
Q2xpcHBlZCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmlz
Q2xpcHBlZCgpOwogfQogCiBib29sIFdLUmVuZGVyTGF5ZXJJc1JlZmxlY3Rpb24oV0tSZW5kZXJM
YXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlckxheWVy
UmVmKS0+aXNSZWZsZWN0aW9uKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRlckxh
eWVyUmVmKS0+aXNSZWZsZWN0aW9uKCk7CiB9CiAKIFdLQ29tcG9zaXRpbmdMYXllclR5cGUgV0tS
ZW5kZXJMYXllckdldENvbXBvc2l0aW5nTGF5ZXJUeXBlKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVy
TGF5ZXJSZWYpCiB7Ci0gICAgc3dpdGNoICh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5jb21wb3Np
dGluZ0xheWVyVHlwZSgpKSB7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXllcjo6Tm9uZToKKyAgICBz
d2l0Y2ggKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+Y29tcG9zaXRpbmdMYXllclR5
cGUoKSkgeworICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6Tm9uZToKICAgICAgICAg
cmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlTm9uZTsKLSAgICBjYXNlIFdlYlJlbmRlckxh
eWVyOjpOb3JtYWw6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpOb3JtYWw6CiAg
ICAgICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xheWVyVHlwZU5vcm1hbDsKLSAgICBjYXNlIFdl
YlJlbmRlckxheWVyOjpUaWxlZDoKKyAgICBjYXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6OlRp
bGVkOgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVUaWxlZDsKLSAgICBj
YXNlIFdlYlJlbmRlckxheWVyOjpNZWRpYToKKyAgICBjYXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5
ZXI6Ok1lZGlhOgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVNZWRpYTsK
LSAgICBjYXNlIFdlYlJlbmRlckxheWVyOjpDb250YWluZXI6CisgICAgY2FzZSBXZWJLaXQ6Oldl
YlJlbmRlckxheWVyOjpDb250YWluZXI6CiAgICAgICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xh
eWVyVHlwZUNvbnRhaW5lcjsKICAgICB9CiAKQEAgLTExMywyNSArMTEwLDI1IEBAIFdLQ29tcG9z
aXRpbmdMYXllclR5cGUgV0tSZW5kZXJMYXllckdldENvbXBvc2l0aW5nTGF5ZXJUeXBlKFdLUmVu
ZGVyTGF5ZXJSZWYgcmVuCiAKIFdLX0VYUE9SVCBkb3VibGUgV0tSZW5kZXJMYXllckdldEJhY2tp
bmdTdG9yZU1lbW9yeUVzdGltYXRlKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmJhY2tpbmdTdG9yZU1lbW9yeUVz
dGltYXRlKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+YmFj
a2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoKTsKIH0KIAogV0tBcnJheVJlZiBXS1JlbmRlckxheWVy
R2V0TmVnYXRpdmVaT3JkZXJMaXN0KFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPm5lZ2F0aXZlWk9yZGVy
TGlzdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJM
YXllclJlZiktPm5lZ2F0aXZlWk9yZGVyTGlzdCgpKTsKIH0KIAogV0tBcnJheVJlZiBXS1JlbmRl
ckxheWVyR2V0Tm9ybWFsRmxvd0xpc3QoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikK
IHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+bm9ybWFsRmxvd0xp
c3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5
ZXJSZWYpLT5ub3JtYWxGbG93TGlzdCgpKTsKIH0KIAogV0tBcnJheVJlZiBXS1JlbmRlckxheWVy
R2V0UG9zaXRpdmVaT3JkZXJMaXN0KFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPnBvc2l0aXZlWk9yZGVy
TGlzdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJM
YXllclJlZiktPnBvc2l0aXZlWk9yZGVyTGlzdCgpKTsKIH0KIAogV0tSZW5kZXJMYXllclJlZiBX
S1JlbmRlckxheWVyR2V0RnJhbWVDb250ZW50c0xheWVyKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVy
TGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPmZy
YW1lQ29udGVudHNMYXllcigpKTsKKyAgICByZXR1cm4gdG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVu
ZGVyTGF5ZXJSZWYpLT5mcmFtZUNvbnRlbnRzTGF5ZXIoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5jcHAKaW5kZXggY2ZmNzFjN2NkODY4OGY1MTQz
N2FlZDc0YTM4NDc1YWE2MmY3OGNiMi4uYmExMjM5MGI2MzI4NzFhYTRjYTFhNTM2ZmI4OGZhYWQ2
MTM1YTQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0
LmNwcApAQCAtMzAsNjkgKzMwLDY2IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVk
ZSAiV2ViUmVuZGVyT2JqZWN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcg
bmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tSZW5kZXJPYmplY3RHZXRUeXBlSUQoKQog
ewotICAgIHJldHVybiB0b0FQSShXZWJSZW5kZXJPYmplY3Q6OkFQSVR5cGUpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0OjpBUElUeXBlKTsKIH0KIAog
V0tTdHJpbmdSZWYgV0tSZW5kZXJPYmplY3RDb3B5TmFtZShXS1JlbmRlck9iamVjdFJlZiByZW5k
ZXJPYmplY3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZW5kZXJPYmpl
Y3RSZWYpLT5uYW1lKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6
dG9JbXBsKHJlbmRlck9iamVjdFJlZiktPm5hbWUoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVu
ZGVyT2JqZWN0Q29weVRleHRTbmlwcGV0KFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJl
ZikKIHsKLSAgICBXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHRvSW1wbChyZW5kZXJP
YmplY3RSZWYpOworICAgIFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSBX
ZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpOwogICAgIGlmICghcmVuZGVyT2JqZWN0LT50
ZXh0U25pcHBldCgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdG9Db3BpZWRBUEkocmVuZGVy
T2JqZWN0LT50ZXh0U25pcHBldCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRB
UEkocmVuZGVyT2JqZWN0LT50ZXh0U25pcHBldCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCiB1bnNpZ25lZCBXS1JlbmRlck9iamVjdEdldFRleHRMZW5ndGgoV0tSZW5kZXJPYmplY3RS
ZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyT2JqZWN0UmVm
KS0+dGV4dExlbmd0aCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RS
ZWYpLT50ZXh0TGVuZ3RoKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyT2JqZWN0Q29weUVs
ZW1lbnRUYWdOYW1lKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBX
ZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHRvSW1wbChyZW5kZXJPYmplY3RSZWYpOwor
ICAgIFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSBXZWJLaXQ6OnRvSW1w
bChyZW5kZXJPYmplY3RSZWYpOwogICAgIGlmICghcmVuZGVyT2JqZWN0LT5lbGVtZW50VGFnTmFt
ZSgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdG9Db3BpZWRBUEkocmVuZGVyT2JqZWN0LT5l
bGVtZW50VGFnTmFtZSgpKTsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkocmVu
ZGVyT2JqZWN0LT5lbGVtZW50VGFnTmFtZSgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQog
CiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlFbGVtZW50SUQoV0tSZW5kZXJPYmplY3RS
ZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0
ID0gdG9JbXBsKHJlbmRlck9iamVjdFJlZik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Qq
IHJlbmRlck9iamVjdCA9IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZik7CiAgICAgaWYg
KCFyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdG9D
b3BpZWRBUEkocmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKSk7CisgICAgICAgIHJldHVybiBXZWJL
aXQ6OnRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+ZWxlbWVudElEKCkpOwogCiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJPYmplY3RHZXRFbGVtZW50Q2xhc3NO
YW1lcyhXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5lbGVtZW50Q2xhc3NOYW1lcygpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5lbGVt
ZW50Q2xhc3NOYW1lcygpKTsKIH0KIAogV0tQb2ludCBXS1JlbmRlck9iamVjdEdldEFic29sdXRl
UG9zaXRpb24oV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIEludFBv
aW50IGFic29sdXRlUG9zaXRpb24gPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+YWJzb2x1dGVQ
b3NpdGlvbigpOworICAgIFdlYkNvcmU6OkludFBvaW50IGFic29sdXRlUG9zaXRpb24gPSBXZWJL
aXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5hYnNvbHV0ZVBvc2l0aW9uKCk7CiAgICAgcmV0
dXJuIFdLUG9pbnRNYWtlKGFic29sdXRlUG9zaXRpb24ueCgpLCBhYnNvbHV0ZVBvc2l0aW9uLnko
KSk7CiB9CiAKIFdLUmVjdCBXS1JlbmRlck9iamVjdEdldEZyYW1lUmVjdChXS1JlbmRlck9iamVj
dFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgSW50UmVjdCBmcmFtZVJlY3QgPSB0b0ltcGwo
cmVuZGVyT2JqZWN0UmVmKS0+ZnJhbWVSZWN0KCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBmcmFt
ZVJlY3QgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5mcmFtZVJlY3QoKTsKICAg
ICByZXR1cm4gV0tSZWN0TWFrZShmcmFtZVJlY3QueCgpLCBmcmFtZVJlY3QueSgpLCBmcmFtZVJl
Y3Qud2lkdGgoKSwgZnJhbWVSZWN0LmhlaWdodCgpKTsKIH0KIAogV0tBcnJheVJlZiBXS1JlbmRl
ck9iamVjdEdldENoaWxkcmVuKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsK
LSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmNoaWxkcmVuKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZikt
PmNoaWxkcmVuKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tTZWN1cml0eU9yaWdpblJlZi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Nl
Y3VyaXR5T3JpZ2luUmVmLmNwcAppbmRleCBiY2Y5NTVhNjZjYjc2ODA1NDJjMmNmY2FkY2M0ZjNm
MGJkNTNkMTUxLi41ZTZiZTc0YjhkYTZkNGI5MzYwMzc5MGNhNGFkMTc2ZDFmNjYyYzY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNw
cApAQCAtMzAsNTMgKzMwLDUxIEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQogV0tUeXBlSUQgV0tTZWN1cml0eU9yaWdpbkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKEFQSTo6U2VjdXJpdHlPcmlnaW46OkFQSVR5cGUpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2lu
UmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZykK
IHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0cmluZyh0b0ltcGwoc3RyaW5nKS0+c3RyaW5n
KCkpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlNlY3VyaXR5
T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZUZyb21TdHJpbmco
V2ViS2l0Ojp0b0ltcGwoc3RyaW5nKS0+c3RyaW5nKCkpKS5sZWFrUmVmKCkpOwogfQogCiBXS1Nl
Y3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGVGcm9tRGF0YWJhc2VJZGVudGlm
aWVyKFdLU3RyaW5nUmVmIGlkZW50aWZpZXIpCiB7Ci0gICAgYXV0byBvcmlnaW4gPSBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIodG9JbXBsKGlkZW50
aWZpZXIpLT5zdHJpbmcoKSk7CisgICAgYXV0byBvcmlnaW4gPSBXZWJDb3JlOjpTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIoV2ViS2l0Ojp0b0ltcGwoaWRlbnRpZmll
ciktPnN0cmluZygpKTsKICAgICBpZiAoIW9yaWdpbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luLnZh
bHVlKCkuc2VjdXJpdHlPcmlnaW4oKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3VyaXR5
T3JpZ2luKCkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0
eU9yaWdpbkNyZWF0ZShXS1N0cmluZ1JlZiBwcm90b2NvbCwgV0tTdHJpbmdSZWYgaG9zdCwgaW50
IHBvcnQpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZSh0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgdG9JbXBsKGhvc3QpLT5zdHJpbmco
KSwgcG9ydCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZzZWN1cml0eU9yaWdpbi5sZWFrUmVmKCkpOwor
ICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2Vi
S2l0Ojp0b0ltcGwocHJvdG9jb2wpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwoaG9zdCktPnN0
cmluZygpLCBwb3J0KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmc2VjdXJpdHlPcmlnaW4u
bGVha1JlZigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlEYXRhYmFz
ZUlkZW50aWZpZXIoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5kYXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29w
aWVkQVBJKFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5k
YXRhKCkuZGF0YWJhc2VJZGVudGlmaWVyKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5
T3JpZ2luQ29weVRvU3RyaW5nKFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7
Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5
T3JpZ2luKCkudG9TdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2Vi
S2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5nKCkp
OwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weVByb3RvY29sKFdLU2VjdXJp
dHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRv
SW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4p
LT5zZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3Vy
aXR5T3JpZ2luQ29weUhvc3QoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsK
LSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlP
cmlnaW4oKS5ob3N0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6
dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5ob3N0KCkpOwogfQogCiB1
bnNpZ25lZCBzaG9ydCBXS1NlY3VyaXR5T3JpZ2luR2V0UG9ydChXS1NlY3VyaXR5T3JpZ2luUmVm
IHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5z
ZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigwKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnBvcnQoKS52YWx1ZV9vcigw
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAppbmRleCBhYWQ4ZWFlNDQ3ZWExMzEyM2E5NmYyNjg2ZmZlNjZlNDk2
ZmQzOWQ4Li5jNGRjYmEzZmVhNGRmNWM1MjM5MmI3NzFjMDA3YzNhOTAyOTc3MTUxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFs
dWUuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQogV0tUeXBlSUQgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVHZXRUeXBlSUQoKQogewotICAg
IHJldHVybiB0b0FQSShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QVBJVHlwZSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFQSVR5cGUp
OwogfQogCiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJlZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUNyZWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewogICAgIGF1dG8gc2VyaWFsaXplZFZhbHVlID0gQVBJOjpTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OmNyZWF0ZShjb250ZXh0LCB2YWx1ZSwgZXhjZXB0aW9uKTsKLSAgICBy
ZXR1cm4gdG9BUEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoc2VyaWFsaXplZFZhbHVlLmxlYWtSZWYoKSk7CiB9CiAKIEpTVmFsdWVSZWYgV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVEZXNlcmlhbGl6ZShXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZVJl
ZiBzY3JpcHRWYWx1ZVJlZiwgSlNDb250ZXh0UmVmIGNvbnRleHRSZWYsIEpTVmFsdWVSZWYqIGV4
Y2VwdGlvbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHNjcmlwdFZhbHVlUmVmKS0+ZGVzZXJpYWxp
emUoY29udGV4dFJlZiwgZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc2Ny
aXB0VmFsdWVSZWYpLT5kZXNlcmlhbGl6ZShjb250ZXh0UmVmLCBleGNlcHRpb24pOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCmluZGV4IDc2N2FhOGQ5MTRiMGNmNzUx
OTZlMjBjMzYzYjgwNjM4ZmZkN2QzZDkuLjAyYWE0Y2MwZjBiNjY3M2UyMzZhMDdhODFjNDZmZTM5
ZWFiN2ZlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKQEAgLTMx
LDI2ICszMSwyNCBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luaXRpYWxpemVUaHJlYWRp
bmcuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9PcGFxdWVKU1N0cmluZy5oPgogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1N0cmluZ0dldFR5cGVJRCgpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKEFQSTo6U3RyaW5nOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShBUEk6OlN0cmluZzo6QVBJVHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU3RyaW5n
Q3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykKIHsKLSAgICByZXR1cm4g
dG9BUEkoJkFQSTo6U3RyaW5nOjpjcmVhdGUoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZykp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6U3RyaW5nOjpjcmVh
dGUoV1RGOjpTdHJpbmc6OmZyb21VVEY4KHN0cmluZykpLmxlYWtSZWYoKSk7CiB9CiAKIGJvb2wg
V0tTdHJpbmdJc0VtcHR5KFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKIHsKLSAgICByZXR1cm4gdG9J
bXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5pc0VtcHR5KCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5pc0VtcHR5KCk7CiB9CiAKIHNpemVf
dCBXS1N0cmluZ0dldExlbmd0aChXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5sZW5ndGgoKTsKIH0KIAogc2l6
ZV90IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIFdLQ2hhciog
YnVmZmVyLCBzaXplX3QgYnVmZmVyTGVuZ3RoKQpAQCAtNTgsNyArNTYsNyBAQCBzaXplX3QgV0tT
dHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgV0tDaGFyKiBidWZmZXIs
IHNpemVfdCBidWZmZQogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdLQ2hhcikgPT0gc2l6ZW9m
KFVDaGFyKSwgIlNpemUgb2YgV0tDaGFyIG11c3QgbWF0Y2ggc2l6ZSBvZiBVQ2hhciIpOwogCiAg
ICAgdW5zaWduZWQgdW5zaWduZWRCdWZmZXJMZW5ndGggPSBzdGQ6Om1pbjxzaXplX3Q+KGJ1ZmZl
ckxlbmd0aCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBhdXRv
IHN1YnN0cmluZyA9IHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkuc3Vic3RyaW5nKDAs
IHVuc2lnbmVkQnVmZmVyTGVuZ3RoKTsKKyAgICBhdXRvIHN1YnN0cmluZyA9IFdlYktpdDo6dG9J
bXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5zdWJzdHJpbmcoMCwgdW5zaWduZWRCdWZmZXJM
ZW5ndGgpOwogCiAgICAgc3Vic3RyaW5nLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50
ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIpKTsKICAgICByZXR1cm4gc3Vic3RyaW5nLmxlbmd0
aCgpOwpAQCAtNjYsNyArNjQsNyBAQCBzaXplX3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3Ry
aW5nUmVmIHN0cmluZ1JlZiwgV0tDaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZQogCiBzaXplX3Qg
V0tTdHJpbmdHZXRNYXhpbXVtVVRGOENTdHJpbmdTaXplKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5sZW5ndGgoKSAq
IDMgKyAxOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3
KCkubGVuZ3RoKCkgKiAzICsgMTsKIH0KIAogZW51bSBTdHJpY3RUeXBlIHsgTm9uU3RyaWN0ID0g
ZmFsc2UsIFN0cmljdCA9IHRydWUgfTsKQEAgLTc3LDcgKzc1LDcgQEAgc2l6ZV90IFdLU3RyaW5n
R2V0VVRGOENTdHJpbmdJbXBsKFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY2hhciogYnVmZmVyLCBz
aXplX3QgYnUKICAgICBpZiAoIWJ1ZmZlclNpemUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
YXV0byBzdHJpbmdWaWV3ID0gdG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKTsKKyAgICBh
dXRvIHN0cmluZ1ZpZXcgPSBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCk7
CiAKICAgICBjaGFyKiBwID0gYnVmZmVyOwogICAgIFdURjo6VW5pY29kZTo6Q29udmVyc2lvblJl
c3VsdCByZXN1bHQ7CkBAIC0xMDksMzIgKzEwNywzMiBAQCBzaXplX3QgV0tTdHJpbmdHZXRVVEY4
Q1N0cmluZ05vblN0cmljdChXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNoYXIqIGJ1ZmZlciwgc2l6
ZQogCiBib29sIFdLU3RyaW5nSXNFcXVhbChXS1N0cmluZ1JlZiBhUmVmLCBXS1N0cmluZ1JlZiBi
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSA9PSB0b0ltcGwo
YlJlZiktPnN0cmluZ1ZpZXcoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYVJlZiktPnN0
cmluZ1ZpZXcoKSA9PSBXZWJLaXQ6OnRvSW1wbChiUmVmKS0+c3RyaW5nVmlldygpOwogfQogCiBi
b29sIFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmcoV0tTdHJpbmdSZWYgYVJlZiwgY29uc3Qg
Y2hhciogYikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCBhIGZhc3QgcGF0aCB0aGF0
IGF2b2lkcyBtZW1vcnkgYWxsb2NhdGlvbiB3aGVuIHRoZSBzdHJpbmcgaXMgYWxsIEFTQ0lJPwog
ICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gZXZlbiB0aGUgZ2VuZXJhbCBjYXNlIG1vcmUgZWZmaWNp
ZW50bHkgaWYgd2Ugd3JpdGUgYSBmdW5jdGlvbiBpbiBTdHJpbmdWaWV3IHRoYXQgdW5kZXJzdGFu
ZHMgVVRGLTggQyBzdHJpbmdzLgotICAgIHJldHVybiB0b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXco
KSA9PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBs
KGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gV1RGOjpTdHJpbmc6OmZyb21VVEY4KGIpOwogfQogCiBi
b29sIFdLU3RyaW5nSXNFcXVhbFRvVVRGOENTdHJpbmdJZ25vcmluZ0Nhc2UoV0tTdHJpbmdSZWYg
YVJlZiwgY29uc3QgY2hhciogYikKIHsKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGFkZCBhIGZh
c3QgcGF0aCB0aGF0IGF2b2lkcyBtZW1vcnkgYWxsb2NhdGlvbiB3aGVuIHRoZSBzdHJpbmcgaXMg
YWxsIEFTQ0lJPwogICAgIC8vIEZJWE1FOiBXZSBjYW4gZG8gZXZlbiB0aGUgZ2VuZXJhbCBjYXNl
IG1vcmUgZWZmaWNpZW50bHkgaWYgd2Ugd3JpdGUgYSBmdW5jdGlvbiBpbiBTdHJpbmdWaWV3IHRo
YXQgdW5kZXJzdGFuZHMgVVRGLTggQyBzdHJpbmdzLgotICAgIHJldHVybiBlcXVhbElnbm9yaW5n
QVNDSUlDYXNlKHRvSW1wbChhUmVmKS0+c3RyaW5nVmlldygpLCBXVEY6OlN0cmluZzo6ZnJvbVVU
RjgoYikpOworICAgIHJldHVybiBlcXVhbElnbm9yaW5nQVNDSUlDYXNlKFdlYktpdDo6dG9JbXBs
KGFSZWYpLT5zdHJpbmdWaWV3KCksIFdURjo6U3RyaW5nOjpmcm9tVVRGOChiKSk7CiB9CiAKIFdL
U3RyaW5nUmVmIFdLU3RyaW5nQ3JlYXRlV2l0aEpTU3RyaW5nKEpTU3RyaW5nUmVmIGpzU3RyaW5n
UmVmKQogewogICAgIGF1dG8gYXBpU3RyaW5nID0ganNTdHJpbmdSZWYgPyBBUEk6OlN0cmluZzo6
Y3JlYXRlKGpzU3RyaW5nUmVmLT5zdHJpbmcoKSkgOiBBUEk6OlN0cmluZzo6Y3JlYXRlTnVsbCgp
OwogCi0gICAgcmV0dXJuIHRvQVBJKCZhcGlTdHJpbmcubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmYXBpU3RyaW5nLmxlYWtSZWYoKSk7CiB9CiAKIEpTU3RyaW5nUmVmIFdL
U3RyaW5nQ29weUpTU3RyaW5nKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKIHsKICAgICBKU0M6Omlu
aXRpYWxpemVUaHJlYWRpbmcoKTsKLSAgICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZSh0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmco
KSkubGVha1JlZigpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tUeXBlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAKaW5kZXgg
ZmQyMGU2ZmZmMWUwNGYwNGE3ZTk5Y2Q1NWQ0ODZhNGQxM2Y5YTY5MS4uNDE2OWRhODRmZTdjNzRl
ZjU4NGU1ZjJlYzU5MWI5ZWU0ZGU2ZmRhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1R5
cGUuY3BwCkBAIC0yOSwyMSArMjksMTkgQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIKICNpbmNs
dWRlICJXS0FQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQg
V0tHZXRUeXBlSUQoV0tUeXBlUmVmIHR5cGVSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1w
bCh0eXBlUmVmKS0+dHlwZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRv
SW1wbCh0eXBlUmVmKS0+dHlwZSgpKTsKIH0KIAogV0tUeXBlUmVmIFdLUmV0YWluKFdLVHlwZVJl
ZiB0eXBlUmVmKQogewotICAgIHRvSW1wbCh0eXBlUmVmKS0+cmVmKCk7CisgICAgV2ViS2l0Ojp0
b0ltcGwodHlwZVJlZiktPnJlZigpOwogCiAgICAgcmV0dXJuIHR5cGVSZWY7CiB9CiAKIHZvaWQg
V0tSZWxlYXNlKFdLVHlwZVJlZiB0eXBlUmVmKQogewotICAgIHRvSW1wbCh0eXBlUmVmKS0+ZGVy
ZWYoKTsKKyAgICBXZWJLaXQ6OnRvSW1wbCh0eXBlUmVmKS0+ZGVyZWYoKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVVJMLmNwcAppbmRleCBmMWExZWE1NDY4MjA4MTcxMzEyM2IxNzIwZmIz
NGJmZWUyNWQ1Y2M4Li4xN2M5YTYyZDMxNzhkMWIwNTBmMWQ3ZDE2OTE1Nzg0MGQ5NjA5YjRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCkBAIC0yOCw0OSArMjgsNDcgQEAKIAog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5
cGVJRCBXS1VSTEdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6VVJMOjpBUElU
eXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVSTDo6QVBJVHlwZSk7CiB9CiAK
IFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0aFVURjhDU3RyaW5nKGNvbnN0IGNoYXIqIHN0cmluZykK
IHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOChz
dHJpbmcpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlVSTDo6
Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSkubGVha1JlZigpKTsKIH0KIAogV0tVUkxS
ZWYgV0tVUkxDcmVhdGVXaXRoQmFzZVVSTChXS1VSTFJlZiBiYXNlVVJMLCBjb25zdCBjaGFyKiBy
ZWxhdGl2ZSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMOjpjcmVhdGUodG9JbXBsKGJh
c2VVUkwpLCBTdHJpbmc6OmZyb21VVEY4KHJlbGF0aXZlKSkubGVha1JlZigpKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkw6OmNyZWF0ZShXZWJLaXQ6OnRvSW1wbChiYXNlVVJM
KSwgU3RyaW5nOjpmcm9tVVRGOChyZWxhdGl2ZSkpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU3RyaW5n
UmVmIFdLVVJMQ29weVN0cmluZyhXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbCh1cmwpLT5zdHJpbmcoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRB
UEkoV2ViS2l0Ojp0b0ltcGwodXJsKS0+c3RyaW5nKCkpOwogfQogCiBib29sIFdLVVJMSXNFcXVh
bChXS1VSTFJlZiBhLCBXS1VSTFJlZiBiKQogewotICAgIHJldHVybiBBUEk6OlVSTDo6ZXF1YWxz
KCp0b0ltcGwoYSksICp0b0ltcGwoYikpOworICAgIHJldHVybiBBUEk6OlVSTDo6ZXF1YWxzKCpX
ZWJLaXQ6OnRvSW1wbChhKSwgKldlYktpdDo6dG9JbXBsKGIpKTsKIH0KIAogV0tTdHJpbmdSZWYg
V0tVUkxDb3B5SG9zdE5hbWUoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0NvcGllZEFQ
SSh0b0ltcGwodXJsKS0+aG9zdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShX
ZWJLaXQ6OnRvSW1wbCh1cmwpLT5ob3N0KCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTENvcHlT
Y2hlbWUoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJs
KS0+cHJvdG9jb2woKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0
b0ltcGwodXJsKS0+cHJvdG9jb2woKSk7CiB9CiAKIFdLX0VYUE9SVCBXS1N0cmluZ1JlZiBXS1VS
TENvcHlQYXRoKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBs
KHVybCktPnBhdGgoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0
b0ltcGwodXJsKS0+cGF0aCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tVUkxDb3B5TGFzdFBhdGhD
b21wb25lbnQoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwo
dXJsKS0+bGFzdFBhdGhDb21wb25lbnQoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRB
UEkoV2ViS2l0Ojp0b0ltcGwodXJsKS0+bGFzdFBhdGhDb21wb25lbnQoKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAppbmRleCAxNDk5NTYzZTM5YWU3
Yjk4NmRlMTczNDc2Nzg4NWY2YWFkOTI4ZDMyLi4yOTZjYWY3YzMyNzVlMDI1M2RmZWE2ZDY4ODY2
OTMwMmNiYTgwYTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVz
dC5jcHAKQEAgLTMxLDM5ICszMSwzNiBAQAogI2luY2x1ZGUgIldLRGF0YS5oIgogI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS1VSTFJlcXVlc3RHZXRUeXBlSUQoKQogewotICAgIHJldHVy
biB0b0FQSShBUEk6OlVSTFJlcXVlc3Q6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKEFQSTo6VVJMUmVxdWVzdDo6QVBJVHlwZSk7CiB9CiAKIFdLVVJMUmVxdWVzdFJlZiBXS1VS
TFJlcXVlc3RDcmVhdGVXaXRoV0tVUkwoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0FQ
SSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUoVVJMKFVSTCgpLCB0b0ltcGwodXJsKS0+c3RyaW5n
KCkpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlVSTFJlcXVl
c3Q6OmNyZWF0ZShVUkwoVVJMKCksIFdlYktpdDo6dG9JbXBsKHVybCktPnN0cmluZygpKSkubGVh
a1JlZigpKTsKIH0KIAogV0tVUkxSZWYgV0tVUkxSZXF1ZXN0Q29weVVSTChXS1VSTFJlcXVlc3RS
ZWYgcmVxdWVzdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9D
b3BpZWRVUkxBUEkoV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgp
LnVybCgpKTsKIH0KIAogV0tVUkxSZWYgV0tVUkxSZXF1ZXN0Q29weUZpcnN0UGFydHlGb3JDb29r
aWVzKFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIHJldHVybiB0b0NvcGllZFVS
TEFQSSh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JD
b29raWVzKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJKFdlYktpdDo6dG9J
bXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygp
KTsKIH0KIAogV0tTdHJpbmdSZWYgV0tVUkxSZXF1ZXN0Q29weUhUVFBNZXRob2QoV0tVUkxSZXF1
ZXN0UmVmIHJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZXF1
ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkuaHR0cE1ldGhvZCgpKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1
ZXN0KCkuaHR0cE1ldGhvZCgpKTsKIH0KIAogV0tVUkxSZXF1ZXN0UmVmIFdLVVJMUmVxdWVzdENv
cHlTZXR0aW5nSFRUUEJvZHkoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYsIFdLRGF0YVJlZiBi
b2R5KQogewotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0Q29weSh0b0ltcGwo
cmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpKTsKLSAgICByZXF1ZXN0Q29weS5zZXRIVFRQ
Qm9keShGb3JtRGF0YTo6Y3JlYXRlKFdLRGF0YUdldEJ5dGVzKGJvZHkpLCBXS0RhdGFHZXRTaXpl
KGJvZHkpKSk7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1
ZXN0Q29weSkubGVha1JlZigpKTsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dENvcHkoV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpKTsKKyAg
ICByZXF1ZXN0Q29weS5zZXRIVFRQQm9keShXZWJDb3JlOjpGb3JtRGF0YTo6Y3JlYXRlKFdLRGF0
YUdldEJ5dGVzKGJvZHkpLCBXS0RhdGFHZXRTaXplKGJvZHkpKSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRlKHJlcXVlc3RDb3B5KS5sZWFrUmVmKCkp
OwogfQogCiB2b2lkIFdLVVJMUmVxdWVzdFNldERlZmF1bHRUaW1lb3V0SW50ZXJ2YWwoZG91Ymxl
IHRpbWVvdXRJbnRlcnZhbCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLVVJMUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNw
b25zZS5jcHAKaW5kZXggOGYxZmE5YWQ2ZTM2ZTk4YWM0MTNlYmE5ZWY5NTUzY2FkNDA2MzhjZi4u
MTk5MGMwMzNlZDg1Y2E2YWY0NWEwN2U5NjFhZjBlMjQ4MWQ0Mzc0YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5jcHAKQEAgLTMwLDM5ICszMCwzNyBAQAog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KIAotdXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tVUkxSZXNwb25zZUdldFR5cGVJRCgpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OkFQSVR5cGUpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKEFQSTo6VVJMUmVzcG9uc2U6OkFQSVR5cGUpOwogfQogCiBXS1VSTFJlZiBX
S1VSTFJlc3BvbnNlQ29weVVSTChXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAg
IHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3Bv
bnNlKCkudXJsKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJKFdlYktpdDo6
dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnVybCgpKTsKIH0KIAogV0tT
dHJpbmdSZWYgV0tVUkxSZXNwb25zZUNvcHlNSU1FVHlwZShXS1VSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVzcG9uc2VSZWYpLT5y
ZXNvdXJjZVJlc3BvbnNlKCkubWltZVR5cGUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3Bp
ZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkubWlt
ZVR5cGUoKSk7CiB9CiAKIGludDMyX3QgV0tVUkxSZXNwb25zZUhUVFBTdGF0dXNDb2RlKFdLVVJM
UmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZXNwb25zZVJl
ZiktPnJlc291cmNlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29kZSgpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5odHRwU3RhdHVzQ29k
ZSgpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTFJlc3BvbnNlQ29weVN1Z2dlc3RlZEZpbGVuYW1l
KFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFt
ZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZXNw
b25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpKTsKIH0KIAog
Ym9vbCBXS1VSTFJlc3BvbnNlSXNBdHRhY2htZW50KFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2Uo
KS5pc0F0dGFjaG1lbnQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYp
LT5yZXNvdXJjZVJlc3BvbnNlKCkuaXNBdHRhY2htZW50KCk7CiB9CiAKIHVpbnQzMl90IFdLVVJM
UmVzcG9uc2VHZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgoV0tVUkxSZXNwb25zZVJlZiByZXNwb25z
ZVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25z
ZSgpLmV4cGVjdGVkQ29udGVudExlbmd0aCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChy
ZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5leHBlY3RlZENvbnRlbnRMZW5ndGgoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRV
UkxQYXR0ZXJuLmNwcAppbmRleCBjZWVkYzc2OTYzMzEzMDcwNjIzOTRhZjU3NTcyZTY5ZWY0NDRl
ODg4Li5mZGViYTc5NzEwNWE3ODI2MzE5NTJhY2RhYjdiM2JiODgzY2NlZjhiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4u
Y3BwCkBAIC0zMCwzOSArMzAsMzcgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRl
ICJXS1N0cmluZy5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1Vz
ZXJDb250ZW50VVJMUGF0dGVybkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6
VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6QVBJVHlwZSk7CiB9CiAKIFdLVXNlckNvbnRl
bnRVUkxQYXR0ZXJuUmVmIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuQ3JlYXRlKFdLU3RyaW5nUmVm
IHBhdHRlcm5SZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVzZXJDb250ZW50VVJMUGF0
dGVybjo6Y3JlYXRlKHRvSW1wbChwYXR0ZXJuUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpjcmVh
dGUoV2ViS2l0Ojp0b0ltcGwocGF0dGVyblJlZiktPnN0cmluZygpKS5sZWFrUmVmKCkpOwogfQog
CiBXS1N0cmluZ1JlZiBXS1VzZXJDb250ZW50VVJMUGF0dGVybkNvcHlIb3N0KFdLVXNlckNvbnRl
bnRVUkxQYXR0ZXJuUmVmIHVybFBhdHRlcm5SZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+aG9zdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+aG9zdCgpKTsKIH0KIAogV0tT
dHJpbmdSZWYgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5Db3B5U2NoZW1lKFdLVXNlckNvbnRlbnRV
UkxQYXR0ZXJuUmVmIHVybFBhdHRlcm5SZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRv
SW1wbCh1cmxQYXR0ZXJuUmVmKS0+c2NoZW1lKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29w
aWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5zY2hlbWUoKSk7CiB9CiAKIGJv
b2wgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5Jc1ZhbGlkKFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJu
UmVmIHVybFBhdHRlcm5SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+
aXNWYWxpZCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+aXNW
YWxpZCgpOwogfQogCiBib29sIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuTWF0Y2hlc1VSTChXS1Vz
ZXJDb250ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0ZXJuUmVmLCBXS1VSTFJlZiB1cmxSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+bWF0Y2hlc1VSTCh0b1dURlN0cmlu
Zyh1cmxSZWYpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPm1h
dGNoZXNVUkwoV2ViS2l0Ojp0b1dURlN0cmluZyh1cmxSZWYpKTsKIH0KIAogYm9vbCBXS1VzZXJD
b250ZW50VVJMUGF0dGVybk1hdGNoZXNTdWJkb21haW5zKFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJu
UmVmIHVybFBhdHRlcm5SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+
bWF0Y2hlc1N1YmRvbWFpbnMoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVy
blJlZiktPm1hdGNoZXNTdWJkb21haW5zKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAppbmRleCAzMGFmNGRmYTQxZjcyMGExYTk1
YjU3MjhkM2Y4MmY4YzAzODc2ODcyLi5jY2ZjYzY2OGYxZjU0MTdmNTAwYzBiMjQ4YTM1NDg5OTY2
ZjkxZTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0lt
YWdlQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1h
Z2VDYWlyby5jcHAKQEAgLTM0LDE5ICszNCwxNiBAQAogI2luY2x1ZGUgPFdlYkNvcmUvUGxhdGZv
cm1Db250ZXh0Q2Fpcm8uaD4KICNpbmNsdWRlIDxjYWlyby5oPgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0KIGNhaXJvX3N1cmZhY2VfdCogV0tJ
bWFnZUNyZWF0ZUNhaXJvU3VyZmFjZShXS0ltYWdlUmVmIGltYWdlUmVmKQogewogICAgIC8vIFdl
IGNhbm5vdCBwYXNzIGEgUmVmUHRyIHRocm91Z2ggdGhlIEFQSSBoZXJlLCBzbyB3ZSBqdXN0IGxl
YWsgdGhlIHJlZmVyZW5jZS4KLSAgICByZXR1cm4gdG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCku
Y3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1w
bChpbWFnZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFjZSgpLmxlYWtSZWYoKTsKIH0K
IAogV0tJbWFnZVJlZiBXS0ltYWdlQ3JlYXRlRnJvbUNhaXJvU3VyZmFjZShjYWlyb19zdXJmYWNl
X3QqIHN1cmZhY2UsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgSW50U2l6ZSBpbWFn
ZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZSksIGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7Ci0gICAgYXV0byB3ZWJJbWFnZSA9IFdlYklt
YWdlOjpjcmVhdGUoaW1hZ2VTaXplLCB0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CisgICAgV2Vi
Q29yZTo6SW50U2l6ZSBpbWFnZVNpemUoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3Vy
ZmFjZSksIGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X2hlaWdodChzdXJmYWNlKSk7CisgICAgYXV0
byB3ZWJJbWFnZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIFdlYktpdDo6
dG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOwogICAgIGF1dG8gZ3JhcGhpY3NDb250ZXh0ID0gd2Vi
SW1hZ2UtPmJpdG1hcCgpLmNyZWF0ZUdyYXBoaWNzQ29udGV4dCgpOwogCiAgICAgY2Fpcm9fdCog
Y3IgPSBncmFwaGljc0NvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpLT5jcigpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwu
Y3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1
cmwuY3BwCmluZGV4IDc3ZjAyZmYyYmFmOTc4NWFkNzNlMzBmMGZlYzEyZmE1MGUxNWJiZWYuLjY0
ZDMwMTkyYTM1YmEyOTQ5NGIzNWE2N2YwMWJiM2I4MGUwMjM3NzQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5j
cHAKQEAgLTM0LDggKzM0LDYgQEAKIAogI2luY2x1ZGUgPFdlYkNvcmUvQ2VydGlmaWNhdGVJbmZv
Lmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIHVzaW5nIENlcnRpZmljYXRlID0gVmVj
dG9yPHVpbnQ4X3Q+OwogdXNpbmcgQ2VydGlmaWNhdGVDaGFpbiA9IFZlY3RvcjxDZXJ0aWZpY2F0
ZT47CiAKQEAgLTU1LDE5ICs1MywxOSBAQCBXS0NlcnRpZmljYXRlSW5mb1JlZiBXS0NlcnRpZmlj
YXRlSW5mb0NyZWF0ZVdpdGhDZXJ0ZmljYXRlQ2hhaW4oV0tBcnJheVJlZiBjZXJ0aQogCiBpbnQg
V0tDZXJ0aWZpY2F0ZUluZm9HZXRWZXJpZmljYXRpb25FcnJvcihXS0NlcnRpZmljYXRlSW5mb1Jl
ZiBjZXJ0aWZpY2F0ZUluZm9SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChjZXJ0aWZpY2F0ZUlu
Zm9SZWYpLT5jZXJ0aWZpY2F0ZUluZm8oKS52ZXJpZmljYXRpb25FcnJvcigpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0aWZpY2F0ZUluZm8oKS52
ZXJpZmljYXRpb25FcnJvcigpOwogfQogCiBzaXplX3QgV0tDZXJ0aWZpY2F0ZUluZm9HZXRDZXJ0
aWZpY2F0ZUNoYWluU2l6ZShXS0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYp
CiB7Ci0gICAgcmV0dXJuIHRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0aWZpY2F0ZUlu
Zm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuc2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1w
bChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0aWZpY2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWlu
KCkuc2l6ZSgpOwogfQogCiBXS0RhdGFSZWYgV0tDZXJ0aWZpY2F0ZUluZm9Db3B5Q2VydGlmaWNh
dGVBdEluZGV4KFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5mb1JlZiwgc2l6ZV90
IGluZGV4KQogewotICAgIGlmICh0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNh
dGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpLnNpemUoKSA8PSBpbmRleCkKKyAgICBpZiAoV2Vi
S2l0Ojp0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlm
aWNhdGVDaGFpbigpLnNpemUoKSA8PSBpbmRleCkKICAgICAgICAgcmV0dXJuIFdlYktpdDo6dG9B
UEkoJkFQSTo6RGF0YTo6Y3JlYXRlKG51bGxwdHIsIDApLmxlYWtSZWYoKSk7CiAKLSAgICBjb25z
dCBhdXRvJiBjZXJ0aWZpY2F0ZSA9IHRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0aWZp
Y2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuYXQoaW5kZXgpOworICAgIGNvbnN0IGF1dG8m
IGNlcnRpZmljYXRlID0gV2ViS2l0Ojp0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlm
aWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpLmF0KGluZGV4KTsKICAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSSgmQVBJOjpEYXRhOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1bnNp
Z25lZCBjaGFyKj4oY2VydGlmaWNhdGUuZGF0YSgpKSwgY2VydGlmaWNhdGUuc2l6ZSgpKS5sZWFr
UmVmKCkpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356472</attachid>
            <date>2018-12-03 22:40:21 -0800</date>
            <delta_ts>2018-12-03 23:26:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192352-20181204154020.patch</filename>
            <type>text/plain</type>
            <size>60819</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5YzAzNDkzMDA0YWYxYmFi
ZjRjYmNiMmQ3OTVlZTY5NjAwMjFmOTcuLmQ5ZTc2YzUxZmY0NWYyNzY4MGU0OGY1MDFlYjdlNjcx
NTFjYTAyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTgtMTItMDMgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgdW5kZXIgV2ViS2l0L1NoYXJlZC9BUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjM1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdXNp
bmcgbmFtZXNwYWNlIHN0YXRlbWVudHMsIGFuZCB1c2UgbmFtZXNwYWNlIHByZWZpeAorICAgICAg
ICBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwOgorCiAyMDE4LTEy
LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBhbmltYXRlZCBrZXlib2FyZCBzY3JvbGxpbmcgYmVo
YXZpb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcAppbmRleCBh
YzkwNGQ0MDljMjE1MTBjZjU2YzczODAxYTk1ZmE1ZjFhZjUxOTViLi4zZTUwMjJlMWQ4YTE3YTFi
N2RjZWM3NmY5NmJjYWQ3MjMzOWQzNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTFJlcXVlc3QuY3BwCkBAIC0yOSwyNyArMjksMjQgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCi1VUkxSZXF1ZXN0OjpVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK1VSTFJlcXVlc3Q6OlVSTFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiB7CiB9CiAKIGRvdWJsZSBVUkxS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgcmVhbGx5IGJlIG9uIFdlYlByb2Nlc3NQb29sIG9yIFdlYlBh
Z2VQcm94eS4KIHZvaWQgVVJMUmVxdWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3Vi
bGUgdGltZW91dEludGVydmFsKQogewotICAgIFJlc291cmNlUmVxdWVzdDo6c2V0RGVmYXVsdFRp
bWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZXREZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogfQogCkBAIC02MCw3ICs1Nyw3IEBA
IHZvaWQgVVJMUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
Ym9vbCBVUkxSZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8T2Jq
ZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVzcG9uc2UuY3BwCmluZGV4IDFkOTNiNjJkMzhmYWMyYjg4MzdiODFhY2Jh
NTAyMGFhYzE0ZjgyYjcuLmJhMTM3NThkOGIyZGQ2MmY2M2YxMDZhNmNkZTZkMWZjNTkyMjU4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcApAQCAtMjgs
OCArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgQVBJIHsKIAogVVJMUmVzcG9uc2U6OlVS
TFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAt
NDQsNyArNDIsNyBAQCB2b2lkIFVSTFJlc3BvbnNlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiBib29sIFVSTFJlc3BvbnNlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA4NDQxNjExMjQyMTdhZjRk
MzUzZWI2YjI5YmY5MTdlMDRkOGJlNWE5Li5jOTc4NmY0YmE0NjBhMGUxOGFlNjg5OTZmOTFiZmRm
NmRkY2NhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcApAQCAtMjks
MTEgKzI5LDkgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tB
cnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQpAQCAt
NDIsOSArNDAsOSBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKHRvSW1wbCh2
YWx1ZXNbaV0pKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdlYktpdDo6dG9J
bXBsKHZhbHVlc1tpXSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKIH0KIAog
V0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKQEAgLTUzLDE3ICs1MSwxNyBAQCBXS0FycmF5UmVmIFdL
QXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJl
ck9mVmFsdWVzKQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytp
KQotICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYodG9JbXBsKHZhbHVl
c1tpXSkpKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKFdlYktp
dDo6dG9JbXBsKHZhbHVlc1tpXSkpKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJl
Ziwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoYXJyYXlSZWYpLT5h
dChpbmRleCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGFycmF5
UmVmKS0+YXQoaW5kZXgpKTsKIH0KIAogc2l6ZV90IFdLQXJyYXlHZXRTaXplKFdLQXJyYXlSZWYg
YXJyYXlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhcnJheVJlZiktPnNpemUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggNDVlYzYyNzUx
YTcxM2M3MjNhZmRhYWVlMWYyNzkzMjY0ODU3ZGNmZi4uMmI3MTdlNTcyZjk5NmFhOGUzOWRlZDll
OWU2NjA5MmI4Y2VhNmViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tDZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcApAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgIldlYkNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS0NlcnRpZmljYXRlSW5mb0dldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKFdlYkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKaW5kZXggOWZh
NzA0MmMyOWVlMzEwM2UxNzIxNGVlYjNiYjY0MDg0ZmM4MzhmYi4uMjU1NjRmOWY4NzhjOWFjZmUw
ZmVmYjNmNTQ4MjFkNGViYTVkNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS0Nvbm5lY3Rpb25SZWYuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQ29ubmVjdGlvbkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKFdlYkNvbm5lY3Rpb246OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6QVBJVHlwZSk7CiB9CiAKIHZvaWQgV0tDb25uZWN0aW9u
U2V0Q29ubmVjdGlvbkNsaWVudChXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qg
V0tDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbm5lY3Rp
b25SZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29ubmVjdGlvblJlZiktPmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xp
ZW50KTsKIH0KIAogdm9pZCBXS0Nvbm5lY3Rpb25Qb3N0TWVzc2FnZShXS0Nvbm5lY3Rpb25SZWYg
Y29ubmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keVJlZikKIHsKLSAgICB0b0ltcGwoY29ubmVjdGlvblJlZiktPnBvc3RNZXNzYWdlKHRv
SW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChjb25uZWN0aW9uUmVmKS0+cG9zdE1lc3NhZ2UoV2ViS2l0Ojp0
b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwobWVzc2FnZUJv
ZHlSZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tD
b250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IDFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThj
OTcuLjE0NjU4NjIzOTA2OWYxNjI2NjJlZjAwZTIxODRhZDI3NzU0MTEyOWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTMyLDIy
ICszMiwxOSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0NvbnRleHRNZW51SXRlbUdldFR5cGVJRCgpCiB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHRNZW51
SXRlbTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW06OkFQSVR5cGUpOwogI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmpl
Y3Q6OlR5cGU6Ok51bGwpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6T2JqZWN0OjpU
eXBlOjpOdWxsKTsKICNlbmRpZgogfQogCiBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRN
ZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgV0tTdHJpbmdS
ZWYgdGl0bGUsIGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygp
LCBlbmFibGVkLCBmYWxzZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JldlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhKFdlYkNvcmU6OkFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdlYktp
dDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGZhbHNlKSkubGVha1JlZigpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsK
QEAgLTU5LDcgKzU2LDcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1D
cmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFcKIFdLQ29udGV4dE1lbnVJ
dGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVBY3Rpb24oV0tDb250ZXh0
TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNo
ZWNrZWQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKENoZWNrYWJs
ZUFjdGlvblR5cGUsIHRvSW1wbCh0YWcpLCB0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxl
ZCwgY2hlY2tlZCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhKFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdl
YktpdDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGNoZWNrZWQpKS5sZWFrUmVm
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGFnKTsKICAgICBVTlVTRURfUEFSQU0odGl0
bGUpOwpAQCAtNzIsNyArNjksNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51
SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogV0tDb250ZXh0
TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYg
dGl0bGUsIGJvb2wgZW5hYmxlZCwgV0tBcnJheVJlZiBzdWJtZW51SXRlbXMpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZSh0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxlZCwgdG9JbXBsKHN1Ym1lbnVJ
dGVtcykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwg
ZW5hYmxlZCwgV2ViS2l0Ojp0b0ltcGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CkBA
IC04NCw3ICs4MSw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3Jl
YXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuCiBXS0NvbnRleHRNZW51SXRl
bVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OnNlcGFyYXRv
ckl0ZW0oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCkBAIC05MywyNyArOTAsMjcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVu
dUl0ZW1TZXBhcmF0b3JJdGVtKCkKIFdLQ29udGV4dE1lbnVJdGVtVGFnIFdLQ29udGV4dE1lbnVJ
dGVtR2V0VGFnKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLmFj
dGlvbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChpdGVtUmVm
KS0+ZGF0YSgpLmFjdGlvbigpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwot
ICAgIHJldHVybiB0b0FQSShDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbik7CisgICAgcmV0dXJu
IHRvQVBJKFdlYkNvcmU6OkNvbnRleHRNZW51SXRlbVRhZ05vQWN0aW9uKTsKICNlbmRpZgogfQog
CiBXS0NvbnRleHRNZW51SXRlbVR5cGUgV0tDb250ZXh0TWVudUl0ZW1HZXRUeXBlKFdLQ29udGV4
dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLnR5cGUoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS50eXBlKCkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7Ci0gICAgcmV0dXJuIHRvQVBJKEFjdGlv
blR5cGUpOworICAgIHJldHVybiB0b0FQSShXZWJDb3JlOjpBY3Rpb25UeXBlKTsKICNlbmRpZgog
fQogCiBXS1N0cmluZ1JlZiBXS0NvbnRleHRNZW51SXRlbUNvcHlUaXRsZShXS0NvbnRleHRNZW51
SXRlbVJlZiBpdGVtUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS50aXRsZSgpLmltcGwoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPmRh
dGEoKS50aXRsZSgpLmltcGwoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsK
ICAgICByZXR1cm4gMDsKQEAgLTEyMyw3ICsxMjAsNyBAQCBXS1N0cmluZ1JlZiBXS0NvbnRleHRN
ZW51SXRlbUNvcHlUaXRsZShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogYm9vbCBXS0Nv
bnRleHRNZW51SXRlbUdldEVuYWJsZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsK
ICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5k
YXRhKCkuZW5hYmxlZCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+ZGF0
YSgpLmVuYWJsZWQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwogICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzMyw3ICsxMzAsNyBAQCBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0
RW5hYmxlZChXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogYm9vbCBXS0NvbnRleHRNZW51
SXRlbUdldENoZWNrZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBFTkFC
TEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkuY2hl
Y2tlZCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLmNoZWNr
ZWQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwogICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE0Myw3ICsxNDAsNyBAQCBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0Q2hlY2tlZChX
S0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogV0tBcnJheVJlZiBXS0NvbnRleHRNZW51Q29w
eVN1Ym1lbnVJdGVtcyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogewogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGl0ZW1SZWYpLT5zdWJt
ZW51SXRlbXNBc0FQSUFycmF5KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPnN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkoKS5sZWFr
UmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAgcmV0dXJuIDA7
CkBAIC0xNTMsNyArMTUwLDcgQEAgV0tBcnJheVJlZiBXS0NvbnRleHRNZW51Q29weVN1Ym1lbnVJ
dGVtcyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogV0tUeXBlUmVmIFdLQ29udGV4dE1l
bnVJdGVtR2V0VXNlckRhdGEoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGl0ZW1SZWYpLT51
c2VyRGF0YSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChpdGVt
UmVmKS0+dXNlckRhdGEoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAg
ICByZXR1cm4gMDsKQEAgLTE2Myw3ICsxNjAsNyBAQCBXS1R5cGVSZWYgV0tDb250ZXh0TWVudUl0
ZW1HZXRVc2VyRGF0YShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogdm9pZCBXS0NvbnRl
eHRNZW51SXRlbVNldFVzZXJEYXRhKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYsIFdLVHlw
ZVJlZiB1c2VyRGF0YVJlZikKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0lt
cGwoaXRlbVJlZiktPnNldFVzZXJEYXRhKHRvSW1wbCh1c2VyRGF0YVJlZikpOworICAgIFdlYktp
dDo6dG9JbXBsKGl0ZW1SZWYpLT5zZXRVc2VyRGF0YShXZWJLaXQ6OnRvSW1wbCh1c2VyRGF0YVJl
ZikpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAgVU5VU0VEX1BBUkFN
KHVzZXJEYXRhUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RhdGEuY3BwCmluZGV4IGZk
YmNhNzNkY2I5ZWViMzY5ODUwMjA1Y2U5Zjg4NDBjMGEzMmQ0NjEuLjEzZjc5ZDkyMTZkNGI2MmYz
MTY1ZDk0OWMzZjM0YzZlZmU4ODZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tEYXRh
LmNwcApAQCAtMjksMjQgKzI5LDIyIEBACiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUg
IldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0Rh
dGFHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OkRhdGE6OkFQSVR5cGUpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RGF0YTo6QVBJVHlwZSk7CiB9CiAKIFdLRGF0
YVJlZiBXS0RhdGFDcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBzaXpl
KQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpEYXRhOjpjcmVhdGUoYnl0ZXMsIHNpemUpLmxl
YWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6RGF0YTo6Y3JlYXRlKGJ5
dGVzLCBzaXplKS5sZWFrUmVmKCkpOwogfQogCiBjb25zdCB1bnNpZ25lZCBjaGFyKiBXS0RhdGFH
ZXRCeXRlcyhXS0RhdGFSZWYgZGF0YVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGRhdGFSZWYp
LT5ieXRlcygpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkYXRhUmVmKS0+Ynl0ZXMoKTsK
IH0KIAogc2l6ZV90IFdLRGF0YUdldFNpemUoV0tEYXRhUmVmIGRhdGFSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvSW1wbChkYXRhUmVmKS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChk
YXRhUmVmKS0+c2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlv
bmFyeS5jcHAKaW5kZXggNjU0ZTFlNjFlMDZmMGIwZjdlODNmZDZjMjdkYWFiZjMxZTEzOGNkZS4u
MmY1YTAwZTA0OGE0YjIxMzkyNGI2MWM2ODUyMWU4ZDFiMWM4NzAwZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCkBAIC0zMCwzMyArMzAsMzEgQEAKICNp
bmNsdWRlICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLRGljdGlvbmFyeUdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6RGljdGlvbmFyeTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpEaWN0aW9uYXJ5OjpBUElUeXBlKTsKIH0KIAogV0tfRVhQT1JU
IFdLRGljdGlvbmFyeVJlZiBXS0RpY3Rpb25hcnlDcmVhdGUoY29uc3QgV0tTdHJpbmdSZWYqIGtl
eXMsIGNvbnN0IFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpCiB7CiAg
ICAgQVBJOjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG51bWJlck9mVmFsdWVzOyArK2kpCi0gICAgICAgIG1hcC5hZGQodG9JbXBsKGtleXNbaV0p
LT5zdHJpbmcoKSwgdG9JbXBsKHZhbHVlc1tpXSkpOworICAgICAgICBtYXAuYWRkKFdlYktpdDo6
dG9JbXBsKGtleXNbaV0pLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwodmFsdWVzW2ldKSk7CiAK
LSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUoV1RGTW92ZShtYXApKS5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVSZWYgV0tEaWN0aW9u
YXJ5R2V0SXRlbUZvcktleShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZiwgV0tTdHJpbmdS
ZWYga2V5KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZGljdGlvbmFyeVJlZiktPmdldCh0
b0ltcGwoa2V5KS0+c3RyaW5nKCkpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6
OnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+Z2V0KFdlYktpdDo6dG9JbXBsKGtleSktPnN0cmluZygp
KSk7CiB9CiAKIHNpemVfdCBXS0RpY3Rpb25hcnlHZXRTaXplKFdLRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNpemUoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNpemUoKTsKIH0KIAog
V0tBcnJheVJlZiBXS0RpY3Rpb25hcnlDb3B5S2V5cyhXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFy
eVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+a2V5cygp
LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRp
Y3Rpb25hcnlSZWYpLT5rZXlzKCkubGVha1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tFcnJvclJlZi5jcHAKaW5kZXggYzk0MTUxMjBiODUzMDljMDUwM2E3NTIzMTRhMmE1
NzcyMTE2MmM4Zi4uNDc5M2E1N2ZkMmYxNTRmZWM3MWQ5ODRiNzhmYjQ4YWQ4NDkyOTEyZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAKQEAgLTI5LDI2ICsyOSwy
NCBAQAogI2luY2x1ZGUgIkFQSUVycm9yLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLRXJyb3JHZXRUeXBlSUQoKQogewot
ICAgIHJldHVybiB0b0FQSShBUEk6OkVycm9yOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShBUEk6OkVycm9yOjpBUElUeXBlKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tFcnJvckNv
cHlXS0Vycm9yRG9tYWluKCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkoQVBJOjpFcnJvcjo6
d2ViS2l0RXJyb3JEb21haW4oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoQVBJ
OjpFcnJvcjo6d2ViS2l0RXJyb3JEb21haW4oKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLRXJyb3JD
b3B5RG9tYWluKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChlcnJvclJlZiktPmRvbWFpbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGll
ZEFQSShXZWJLaXQ6OnRvSW1wbChlcnJvclJlZiktPmRvbWFpbigpKTsKIH0KIAogaW50IFdLRXJy
b3JHZXRFcnJvckNvZGUoV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICBhdXRvIGVycm9yQ29k
ZSA9IHRvSW1wbChlcnJvclJlZiktPmVycm9yQ29kZSgpOworICAgIGF1dG8gZXJyb3JDb2RlID0g
V2ViS2l0Ojp0b0ltcGwoZXJyb3JSZWYpLT5lcnJvckNvZGUoKTsKICAgICBzd2l0Y2ggKGVycm9y
Q29kZSkgewogICAgIGNhc2UgQVBJOjpFcnJvcjo6UG9saWN5OjpDYW5ub3RTaG93TUlNRVR5cGU6
CiAgICAgICAgIHJldHVybiBrV0tFcnJvckNvZGVDYW5ub3RTaG93TUlNRVR5cGU7CkBAIC04Mywx
MCArODEsMTAgQEAgaW50IFdLRXJyb3JHZXRFcnJvckNvZGUoV0tFcnJvclJlZiBlcnJvclJlZikK
IAogV0tVUkxSZWYgV0tFcnJvckNvcHlGYWlsaW5nVVJMKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChlcnJvclJlZiktPmZhaWxpbmdVUkwo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRVUkxBUEkoV2ViS2l0Ojp0b0ltcGwoZXJy
b3JSZWYpLT5mYWlsaW5nVVJMKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0Vycm9yQ29weUxvY2Fs
aXplZERlc2NyaXB0aW9uKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChlcnJvclJlZiktPmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKGVycm9yUmVmKS0+bG9jYWxp
emVkRGVzY3JpcHRpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0
cnkuY3BwCmluZGV4IDRjZDVlM2RhNDcwMGM3NTZmNmI3MGEzZGYzOGUzZmU4ZTVlYTllZDcuLjJh
OGI2MzA1NzljMTc2OWIwOTZmYjVkY2VlOTE5MWNiZjY4Zjg2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwCkBAIC0yOSw1MCArMjksNDggQEAKICNpbmNsdWRl
ICJBUElHZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1NpemVHZXRUeXBlSUQodm9pZCkKIHsKLSAgICByZXR1
cm4gdG9BUEkoQVBJOjpTaXplOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShB
UEk6OlNpemU6OkFQSVR5cGUpOwogfQogCiBXS1R5cGVJRCBXS1BvaW50R2V0VHlwZUlEKHZvaWQp
CiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6UG9pbnQ6OkFQSVR5cGUpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKEFQSTo6UG9pbnQ6OkFQSVR5cGUpOwogfQogCiBXS1R5cGVJRCBXS1JlY3RH
ZXRUeXBlSUQodm9pZCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpSZWN0OjpBUElUeXBlKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlJlY3Q6OkFQSVR5cGUpOwogfQogCiBXS1Bv
aW50UmVmIFdLUG9pbnRDcmVhdGUoV0tQb2ludCBwb2ludCkKIHsKLSAgICByZXR1cm4gdG9BUEko
JkFQSTo6UG9pbnQ6OmNyZWF0ZShwb2ludCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSSgmQVBJOjpQb2ludDo6Y3JlYXRlKHBvaW50KS5sZWFrUmVmKCkpOwogfQogCiBXS1Np
emVSZWYgV0tTaXplQ3JlYXRlKFdLU2l6ZSBzaXplKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJ
OjpTaXplOjpjcmVhdGUoc2l6ZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmQVBJOjpTaXplOjpjcmVhdGUoc2l6ZSkubGVha1JlZigpKTsKIH0KIAogV0tSZWN0UmVmIFdL
UmVjdENyZWF0ZShXS1JlY3QgcmVjdCkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6UmVjdDo6
Y3JlYXRlKHJlY3QpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6
UmVjdDo6Y3JlYXRlKHJlY3QpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6ZSBXS1NpemVHZXRWYWx1
ZShXS1NpemVSZWYgc2l6ZSkKIHsKLSAgICByZXR1cm4gdG9JbXBsKHNpemUpLT5zaXplKCk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNpemUpLT5zaXplKCk7CiB9CiAKIFdLUG9pbnQgV0tQ
b2ludEdldFZhbHVlKFdLUG9pbnRSZWYgcG9pbnQpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwb2lu
dCktPnBvaW50KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHBvaW50KS0+cG9pbnQoKTsK
IH0KIAogV0tSZWN0IFdLUmVjdEdldFZhbHVlKFdLUmVjdFJlZiByZWN0KQogewotICAgIHJldHVy
biB0b0ltcGwocmVjdCktPnJlY3QoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVjdCkt
PnJlY3QoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tJ
bWFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcAppbmRleCA2
OGU2MzgxZDhjMTg5NDdmZWVkNWE2Y2Q3M2MyOWUyMWYxYmM3Yjc5Li4zMWI2ZGFlYjgzOGZjYTNj
YmU2NWJlM2I3MDk2OTE5ZjVjMDIwMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0lt
YWdlLmNwcApAQCAtMjksMjAgKzI5LDE4IEBACiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0Lmgi
CiAjaW5jbHVkZSAiV2ViSW1hZ2UuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tU
eXBlSUQgV0tJbWFnZUdldFR5cGVJRCh2b2lkKQogewotICAgIHJldHVybiB0b0FQSShXZWJJbWFn
ZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJJbWFnZTo6
QVBJVHlwZSk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZShXS1NpemUgc2l6ZSwgV0tJ
bWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNy
ZWF0ZSh0b0ludFNpemUoc2l6ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRv
IHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKFdlYktpdDo6dG9JbnRTaXplKHNp
emUpLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICByZXR1cm4gdG9BUEko
d2ViSW1hZ2UubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VS
ZWYgaW1hZ2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbWFnZVJlZiktPnNpemUo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5z
aXplKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRh
YmxlQXJyYXkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXku
Y3BwCmluZGV4IDVkYzg1MjYwZmFkYmFlMzJkOThiMDE0ODVjOTM3ZjRkYzZjYjE4YTQuLjlhOTMx
Y2M2MjJhMGNiZGY3NGYwOGI1M2MwMzM1YmZjMDgzNjE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHAKQEAgLTI5LDIwICsyOSwxOCBAQAogI2lu
Y2x1ZGUgIkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Ci0KIFdLTXV0YWJsZUFycmF5UmVmIFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkK
IHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxXS011dGFibGVBcnJheVJlZj4odG9BUEkoJkFQSTo6
QXJyYXk6OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0
YWJsZUFycmF5UmVmPihXZWJLaXQ6OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoKS5sZWFrUmVm
KCkpKTsKIH0KIAogdm9pZCBXS0FycmF5QXBwZW5kSXRlbShXS011dGFibGVBcnJheVJlZiBhcnJh
eVJlZiwgV0tUeXBlUmVmIGl0ZW1SZWYpCiB7Ci0gICAgdG9JbXBsKGFycmF5UmVmKS0+ZWxlbWVu
dHMoKS5hcHBlbmQodG9JbXBsKGl0ZW1SZWYpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChhcnJheVJl
ZiktPmVsZW1lbnRzKCkuYXBwZW5kKFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpKTsKIH0KIAogdm9p
ZCBXS0FycmF5UmVtb3ZlSXRlbUF0SW5kZXgoV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXlSZWYsIHNp
emVfdCBpbmRleCkKIHsKLSAgICB0b0ltcGwoYXJyYXlSZWYpLT5lbGVtZW50cygpLnJlbW92ZShp
bmRleCk7CisgICAgV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5lbGVtZW50cygpLnJlbW92ZShp
bmRleCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0
YWJsZURpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxl
RGljdGlvbmFyeS5jcHAKaW5kZXggOTZiODliZDQ1NjQ4NGQ1MWMwYTdmYjNhNTc5YzllNWQ5Y2Rh
ODQ3ZC4uN2RiMjExNjgwZTI4N2Y0ODViYTEzNmE5MWMxN2M4YTlmOGQ1NzUwMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAKQEAg
LTI5LDE1ICsyOSwxMyBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tNdXRhYmxlRGljdGlv
bmFyeVJlZiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkKIHsKLSAgICByZXR1cm4gY29uc3Rf
Y2FzdDxXS011dGFibGVEaWN0aW9uYXJ5UmVmPih0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5OjpjcmVh
dGUoKS5sZWFrUmVmKCkpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXS011dGFibGVEaWN0aW9u
YXJ5UmVmPihXZWJLaXQ6OnRvQVBJKCZBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZSgpLmxlYWtSZWYo
KSkpOwogfQogCiBib29sIFdLRGljdGlvbmFyeVNldEl0ZW0oV0tNdXRhYmxlRGljdGlvbmFyeVJl
ZiBkaWN0aW9uYXJ5UmVmLCBXS1N0cmluZ1JlZiBrZXlSZWYsIFdLVHlwZVJlZiBpdGVtUmVmKQog
ewotICAgIHJldHVybiB0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNldCh0b0ltcGwoa2V5UmVmKS0+
c3RyaW5nKCksIHRvSW1wbChpdGVtUmVmKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRp
Y3Rpb25hcnlSZWYpLT5zZXQoV2ViS2l0Ojp0b0ltcGwoa2V5UmVmKS0+c3RyaW5nKCksIFdlYktp
dDo6dG9JbXBsKGl0ZW1SZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvQVBJL2MvV0tOdW1iZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tOdW1i
ZXIuY3BwCmluZGV4IDQxOGUwMjllYTY3ZGJmM2E2YTFmZWNjMDc1Mzg3Y2M2YTIxNzRkODYuLjE5
ZjllZTA3OTZjM2M0YTc2MmE4ZTE2ZDNkYWYzZDBlMjQ3YmZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS051bWJlci5jcHAKQEAgLTI5LDUyICsyOSw1MCBAQAogI2luY2x1ZGUgIkFQ
SU51bWJlci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS0Jvb2xlYW5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQ
SShBUEk6OkJvb2xlYW46OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6
Qm9vbGVhbjo6QVBJVHlwZSk7CiB9CiAKIFdLQm9vbGVhblJlZiBXS0Jvb2xlYW5DcmVhdGUoYm9v
bCB2YWx1ZSkKIHsKICAgICBhdXRvIGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0
ZSh2YWx1ZSk7Ci0gICAgcmV0dXJuIHRvQVBJKCZib29sZWFuT2JqZWN0LmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmJvb2xlYW5PYmplY3QubGVha1JlZigpKTsKIH0KIAog
Ym9vbCBXS0Jvb2xlYW5HZXRWYWx1ZShXS0Jvb2xlYW5SZWYgYm9vbGVhblJlZikKIHsKLSAgICBy
ZXR1cm4gdG9JbXBsKGJvb2xlYW5SZWYpLT52YWx1ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
SW1wbChib29sZWFuUmVmKS0+dmFsdWUoKTsKIH0KIAogV0tUeXBlSUQgV0tEb3VibGVHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OkRvdWJsZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpEb3VibGU6OkFQSVR5cGUpOwogfQogCiBXS0RvdWJsZVJl
ZiBXS0RvdWJsZUNyZWF0ZShkb3VibGUgdmFsdWUpCiB7CiAgICAgYXV0byBkb3VibGVPYmplY3Qg
PSBBUEk6OkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9i
amVjdC5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZkb3VibGVPYmplY3Qu
bGVha1JlZigpKTsKIH0KIAogZG91YmxlIFdLRG91YmxlR2V0VmFsdWUoV0tEb3VibGVSZWYgZG91
YmxlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoZG91YmxlUmVmKS0+dmFsdWUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoZG91YmxlUmVmKS0+dmFsdWUoKTsKIH0KIAogV0tUeXBlSUQg
V0tVSW50NjRHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVJbnQ2NDo6QVBJ
VHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVSW50NjQ6OkFQSVR5cGUpOwog
fQogCiBXS1VJbnQ2NFJlZiBXS1VJbnQ2NENyZWF0ZSh1aW50NjRfdCB2YWx1ZSkKIHsKICAgICBh
dXRvIHVpbnQ2NE9iamVjdCA9IEFQSTo6VUludDY0OjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVy
biB0b0FQSSgmdWludDY0T2JqZWN0LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9B
UEkoJnVpbnQ2NE9iamVjdC5sZWFrUmVmKCkpOwogfQogCiB1aW50NjRfdCBXS1VJbnQ2NEdldFZh
bHVlKFdLVUludDY0UmVmIHVpbnQ2NFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVpbnQ2NFJl
ZiktPnZhbHVlKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVpbnQ2NFJlZiktPnZhbHVl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1BsdWdpbklu
Zm9ybWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3Jt
YXRpb24uY3BwCmluZGV4IGUzYWU0ZjVmMDMyNThhYTEwYTZhYjVhYmFiMzRjNmFmMGJkZDMzMDku
LmQ1YjM0MWIxYzk2MTljODEzMWE3ZDdmYzM3ODMyYmFiOTFjOTkyMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCkBAIC0zMCwx
MyArMzAsMTEgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIldL
U2hhcmVkQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1N0cmluZ1Jl
ZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpCiB7CiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpKS5s
ZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmlu
ZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uQnVu
ZGxlSWRlbnRpZmllcktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC00NSw4ICs0Myw4IEBAIFdL
U3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKIFdLU3Ry
aW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkKIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQ
STo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkpLmxl
YWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5n
JiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25CdW5k
bGVWZXJzaW9uS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5
KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTU1LDggKzUzLDggQEAgV0tTdHJp
bmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKQogV0tTdHJpbmdSZWYg
V0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVNob3J0VmVyc2lvbktleSgpCiB7CiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCkp
LmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3Ry
aW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25C
dW5kbGVTaG9ydFZlcnNpb25LZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNjUsOCArNjMsOCBA
QCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCkK
IFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkKIHsKICNpZiBFTkFCTEUo
TkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6
U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLmxlYWtSZWYoKTsKLSAg
ICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLmxlYWtS
ZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKQEAgLTc1LDggKzczLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvblBhdGhLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1l
S2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJ
OjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25EaXNw
bGF5TmFtZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0
YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdp
bkluZm9ybWF0aW9uRGlzcGxheU5hbWVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtODUsOCAr
ODMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRGlzcGxheU5hbWVLZXkoKQog
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkKIHsK
ICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcm
IGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25EZWZhdWx0TG9hZFBv
bGljeUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRp
YyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbklu
Zm9ybWF0aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtOTUs
OCArOTMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRGVmYXVsdExvYWRQb2xp
Y3lLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBhc3RMYXN0Qmxv
Y2tlZFZlcnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVf
UExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpj
cmVhdGUocGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93
bkF2YWlsYWJsZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBs
dWdpbkluZm9ybWF0aW9uVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFi
bGVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vs
c2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTA1LDggKzEwMyw4IEBAIFdLU3RyaW5nUmVm
IFdLUGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2
YWlsYWJsZUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFBy
b2ZpbGVLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRp
YyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlv
bkhhc1NhbmRib3hQcm9maWxlS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtl
eSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdl
YktpdDo6cGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xMTUsOCArMTEzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlv
bkhhc1NhbmRib3hQcm9maWxlS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25G
cmFtZVVSTEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3Rh
dGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0
aW9uRnJhbWVVUkxLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAg
ICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0Ojpw
bHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEyNSw4
ICsxMjMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxLZXkoKQog
V0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkKIHsKICNpZiBFTkFC
TEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQ
STo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKS5sZWFrUmVm
KCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5
ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVL
ZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTM1LDggKzEzMyw4IEBAIFdLU3RyaW5nUmVmIFdL
UGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9y
bWF0aW9uUGFnZVVSTEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0g
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbklu
Zm9ybWF0aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkp
OworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJL
aXQ6OnBsdWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0x
NDUsOCArMTQzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXko
KQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJM
S2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJ
OjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25QbHVn
aW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZr
ZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShX
ZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKSkubGVh
a1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1
cm4gMDsKICNlbmRpZgpAQCAtMTU1LDggKzE1Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5m
b3JtYXRpb25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdp
bkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0
b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpj
cmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xNjUsOCArMTYzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlv
blBsdWdpblVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1l
bnRPYnNjdXJlZEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAg
c3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdJbkluZm9y
bWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRv
QVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNy
ZWF0ZShXZWJLaXQ6OnBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5s
ZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJl
dHVybiAwOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5
ZXIuY3BwCmluZGV4IDIwNzI2ZjRlZTI5MmQ5N2EwYWVmNWM0YmEyYTZhM2ZlMjQwYTA5NGQuLjk0
Yzg1ZTkxM2Y5Y2Q1MDVhNDNiNDM4MGYwMzY5MzkyNzI3NGE3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMCw4MCArMzAsNzcgQEAKICNp
bmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlE
IFdLUmVuZGVyTGF5ZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShXZWJSZW5kZXJM
YXllcjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJSZW5k
ZXJMYXllcjo6QVBJVHlwZSk7CiB9CiAKIFdLUmVuZGVyT2JqZWN0UmVmIFdLUmVuZGVyTGF5ZXJH
ZXRSZW5kZXJlcihXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVy
biB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpKTsKKyAgICByZXR1cm4g
dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpKTsKIH0KIAog
V0tTdHJpbmdSZWYgV0tSZW5kZXJMYXllckNvcHlSZW5kZXJlck5hbWUoV0tSZW5kZXJMYXllclJl
ZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlbmRl
ckxheWVyUmVmKS0+cmVuZGVyZXIoKS0+bmFtZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRlcmVyKCktPm5hbWUo
KSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyTGF5ZXJDb3B5RWxlbWVudFRhZ05hbWUoV0tS
ZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBXZWJSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOworICAgIFdlYktpdDo6V2ViUmVuZGVy
TGF5ZXIqIHJlbmRlckxheWVyID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOwogICAg
IGlmICghcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRUYWdOYW1lKCkuaXNOdWxsKCkp
Ci0gICAgICAgIHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxl
bWVudFRhZ05hbWUoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRl
ckxheWVyLT5yZW5kZXJlcigpLT5lbGVtZW50VGFnTmFtZSgpKTsKIAogICAgIHJldHVybiBudWxs
cHRyOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlckxheWVyQ29weUVsZW1lbnRJRChXS1JlbmRl
ckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIFdlYlJlbmRlckxheWVyKiByZW5kZXJM
YXllciA9IHRvSW1wbChyZW5kZXJMYXllclJlZik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJMYXll
ciogcmVuZGVyTGF5ZXIgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZik7CiAgICAgaWYg
KCFyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudElEKCkuaXNOdWxsKCkpCi0gICAgICAg
IHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudElEKCkp
OworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVy
ZXIoKS0+ZWxlbWVudElEKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdLQXJyYXlS
ZWYgV0tSZW5kZXJMYXllckdldEVsZW1lbnRDbGFzc05hbWVzKFdLUmVuZGVyTGF5ZXJSZWYgcmVu
ZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZikt
PnJlbmRlcmVyKCktPmVsZW1lbnRDbGFzc05hbWVzKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVuZGVyZXIoKS0+ZWxlbWVudENs
YXNzTmFtZXMoKSk7CiB9CiAKIFdLUmVjdCBXS1JlbmRlckxheWVyR2V0QWJzb2x1dGVCb3VuZHMo
V0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBJbnRSZWN0IGJvdW5kcyA9
IHRvSW1wbChyZW5kZXJMYXllclJlZiktPmFic29sdXRlQm91bmRpbmdCb3goKTsKKyAgICBXZWJD
b3JlOjpJbnRSZWN0IGJvdW5kcyA9IFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+YWJz
b2x1dGVCb3VuZGluZ0JveCgpOwogICAgIHJldHVybiBXS1JlY3RNYWtlKGJvdW5kcy54KCksIGJv
dW5kcy55KCksIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkpOwogfQogCiBib29sIFdL
UmVuZGVyTGF5ZXJJc0NsaXBwaW5nKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzQ2xpcHBpbmcoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0NsaXBwaW5nKCk7CiB9CiAK
IGJvb2wgV0tSZW5kZXJMYXllcklzQ2xpcHBlZChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVy
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0NsaXBwZWQoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0NsaXBwZWQoKTsK
IH0KIAogYm9vbCBXS1JlbmRlckxheWVySXNSZWZsZWN0aW9uKFdLUmVuZGVyTGF5ZXJSZWYgcmVu
ZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzUmVm
bGVjdGlvbigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmlz
UmVmbGVjdGlvbigpOwogfQogCiBXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlIFdLUmVuZGVyTGF5ZXJH
ZXRDb21wb3NpdGluZ0xheWVyVHlwZShXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQog
ewotICAgIHN3aXRjaCAodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+Y29tcG9zaXRpbmdMYXllclR5
cGUoKSkgewotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6Ok5vbmU6CisgICAgc3dpdGNoIChXZWJL
aXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmNvbXBvc2l0aW5nTGF5ZXJUeXBlKCkpIHsKKyAg
ICBjYXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6Ok5vbmU6CiAgICAgICAgIHJldHVybiBrV0tD
b21wb3NpdGluZ0xheWVyVHlwZU5vbmU7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXllcjo6Tm9ybWFs
OgorICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6Tm9ybWFsOgogICAgICAgICByZXR1
cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVOb3JtYWw7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXll
cjo6VGlsZWQ6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpUaWxlZDoKICAgICAg
ICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlVGlsZWQ7Ci0gICAgY2FzZSBXZWJSZW5k
ZXJMYXllcjo6TWVkaWE6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpNZWRpYToK
ICAgICAgICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlTWVkaWE7Ci0gICAgY2FzZSBX
ZWJSZW5kZXJMYXllcjo6Q29udGFpbmVyOgorICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXll
cjo6Q29udGFpbmVyOgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVDb250
YWluZXI7CiAgICAgfQogCkBAIC0xMTMsMjUgKzExMCwyNSBAQCBXS0NvbXBvc2l0aW5nTGF5ZXJU
eXBlIFdLUmVuZGVyTGF5ZXJHZXRDb21wb3NpdGluZ0xheWVyVHlwZShXS1JlbmRlckxheWVyUmVm
IHJlbgogCiBXS19FWFBPUlQgZG91YmxlIFdLUmVuZGVyTGF5ZXJHZXRCYWNraW5nU3RvcmVNZW1v
cnlFc3RpbWF0ZShXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVy
biB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmJhY2tpbmdTdG9yZU1l
bW9yeUVzdGltYXRlKCk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldE5lZ2F0aXZl
Wk9yZGVyTGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVy
biB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5uZWdhdGl2ZVpPcmRlckxpc3QoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5u
ZWdhdGl2ZVpPcmRlckxpc3QoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldE5v
cm1hbEZsb3dMaXN0KFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPm5vcm1hbEZsb3dMaXN0KCkpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+bm9y
bWFsRmxvd0xpc3QoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldFBvc2l0aXZl
Wk9yZGVyTGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVy
biB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5wb3NpdGl2ZVpPcmRlckxpc3QoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5w
b3NpdGl2ZVpPcmRlckxpc3QoKSk7CiB9CiAKIFdLUmVuZGVyTGF5ZXJSZWYgV0tSZW5kZXJMYXll
ckdldEZyYW1lQ29udGVudHNMYXllcihXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQog
ewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5mcmFtZUNvbnRlbnRz
TGF5ZXIoKSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVm
KS0+ZnJhbWVDb250ZW50c0xheWVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tSZW5kZXJPYmplY3QuY3BwCmluZGV4IGNmZjcxYzdjZDg2ODhmNTE0MzdhZWQ3NGEzODQ3
NWFhNjJmNzhjYjIuLmJhMTIzOTBiNjMyODcxYWE0Y2ExYTUzNmZiODhmYWFkNjEzNWE0MDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5jcHAKQEAgLTMw
LDY5ICszMCw2NiBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlJlbmRl
ck9iamVjdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLUmVuZGVyT2JqZWN0R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1
cm4gdG9BUEkoV2ViUmVuZGVyT2JqZWN0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSShXZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6QVBJVHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVm
IFdLUmVuZGVyT2JqZWN0Q29weU5hbWUoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVm
KQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+bmFt
ZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZW5k
ZXJPYmplY3RSZWYpLT5uYW1lKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENv
cHlUZXh0U25pcHBldChXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAg
V2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsK
KyAgICBXZWJLaXQ6OldlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0b0lt
cGwocmVuZGVyT2JqZWN0UmVmKTsKICAgICBpZiAoIXJlbmRlck9iamVjdC0+dGV4dFNuaXBwZXQo
KS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+dGV4
dFNuaXBwZXQoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRlck9i
amVjdC0+dGV4dFNuaXBwZXQoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdW5zaWdu
ZWQgV0tSZW5kZXJPYmplY3RHZXRUZXh0TGVuZ3RoKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9i
amVjdFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlck9iamVjdFJlZiktPnRleHRMZW5n
dGgoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+dGV4dExl
bmd0aCgpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlFbGVtZW50VGFnTmFt
ZShXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgV2ViUmVuZGVyT2Jq
ZWN0KiByZW5kZXJPYmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKKyAgICBXZWJLaXQ6
OldlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2Jq
ZWN0UmVmKTsKICAgICBpZiAoIXJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKS5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05h
bWUoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+
ZWxlbWVudFRhZ05hbWUoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tSZW5kZXJPYmplY3RDb3B5RWxlbWVudElEKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9i
amVjdFJlZikKIHsKLSAgICBXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHRvSW1wbChy
ZW5kZXJPYmplY3RSZWYpOworICAgIFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmpl
Y3QgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpOwogICAgIGlmICghcmVuZGVyT2Jq
ZWN0LT5lbGVtZW50SUQoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJl
bmRlck9iamVjdC0+ZWxlbWVudElEKCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGll
ZEFQSShyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCiBXS0FycmF5UmVmIFdLUmVuZGVyT2JqZWN0R2V0RWxlbWVudENsYXNzTmFtZXMoV0tSZW5k
ZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
cmVuZGVyT2JqZWN0UmVmKS0+ZWxlbWVudENsYXNzTmFtZXMoKSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+ZWxlbWVudENsYXNzTmFt
ZXMoKSk7CiB9CiAKIFdLUG9pbnQgV0tSZW5kZXJPYmplY3RHZXRBYnNvbHV0ZVBvc2l0aW9uKFdL
UmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBJbnRQb2ludCBhYnNvbHV0
ZVBvc2l0aW9uID0gdG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmFic29sdXRlUG9zaXRpb24oKTsK
KyAgICBXZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uID0gV2ViS2l0Ojp0b0ltcGwo
cmVuZGVyT2JqZWN0UmVmKS0+YWJzb2x1dGVQb3NpdGlvbigpOwogICAgIHJldHVybiBXS1BvaW50
TWFrZShhYnNvbHV0ZVBvc2l0aW9uLngoKSwgYWJzb2x1dGVQb3NpdGlvbi55KCkpOwogfQogCiBX
S1JlY3QgV0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVy
T2JqZWN0UmVmKQogewotICAgIEludFJlY3QgZnJhbWVSZWN0ID0gdG9JbXBsKHJlbmRlck9iamVj
dFJlZiktPmZyYW1lUmVjdCgpOworICAgIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0ID0gV2Vi
S2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+ZnJhbWVSZWN0KCk7CiAgICAgcmV0dXJuIFdL
UmVjdE1ha2UoZnJhbWVSZWN0LngoKSwgZnJhbWVSZWN0LnkoKSwgZnJhbWVSZWN0LndpZHRoKCks
IGZyYW1lUmVjdC5oZWlnaHQoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJPYmplY3RHZXRD
aGlsZHJlbihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5jaGlsZHJlbigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5jaGlsZHJlbigp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlP
cmlnaW5SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdp
blJlZi5jcHAKaW5kZXggYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNjNGYzZjBiZDUzZDE1MS4u
NWU2YmU3NGI4ZGE2ZDRiOTM2MDM3OTBjYTRhZDE3NmQxZjY2MmM2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTMwLDUz
ICszMCw1MSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vj
dXJpdHlPcmlnaW5EYXRhLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlE
IFdLU2VjdXJpdHlPcmlnaW5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlNl
Y3VyaXR5T3JpZ2luOjpBUElUeXBlKTsKIH0KIAogV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3Vy
aXR5T3JpZ2luQ3JlYXRlRnJvbVN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW46OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3Jl
YXRlKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9J
bXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKIH0KIAogV0tTZWN1cml0eU9yaWdp
blJlZiBXS1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihXS1N0cmlu
Z1JlZiBpZGVudGlmaWVyKQogewotICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvSW1wbChpZGVudGlmaWVyKS0+c3Ry
aW5nKCkpOworICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRGF0YWJhc2VJZGVudGlmaWVyKFdlYktpdDo6dG9JbXBsKGlkZW50aWZpZXIpLT5zdHJpbmco
KSk7CiAgICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVy
biB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3Vy
aXR5T3JpZ2luKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmlnaW4udmFsdWUoKS5zZWN1cml0eU9yaWdpbigpKS5s
ZWFrUmVmKCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVh
dGUoV0tTdHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewot
ICAgIGF1dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9J
bXBsKHByb3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQpOwot
ICAgIHJldHVybiB0b0FQSSgmc2VjdXJpdHlPcmlnaW4ubGVha1JlZigpKTsKKyAgICBhdXRvIHNl
Y3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYktpdDo6dG9JbXBs
KHByb3RvY29sKS0+c3RyaW5nKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSwgcG9y
dCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJnNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7
CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5RGF0YWJhc2VJZGVudGlmaWVy
KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRh
dGFiYXNlSWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJL
aXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFi
YXNlSWRlbnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlU
b1N0cmluZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVy
biB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnRv
U3RyaW5nKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBs
KHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKIH0KIAogV0tT
dHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChXS1NlY3VyaXR5T3JpZ2luUmVm
IHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJp
dHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlP
cmlnaW4oKS5wcm90b2NvbCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNv
cHlIb3N0KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJu
IHRvQ29waWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuaG9z
dCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChzZWN1
cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKTsKIH0KIAogdW5zaWduZWQgc2hv
cnQgV0tTZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9y
aWdpbikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmln
aW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNlY3Vy
aXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5jcHAKaW5kZXggYWFkOGVhZTQ0N2VhMTMxMjNhOTZmMjY4NmZmZTY2ZTQ5NmZkMzlkOC4uYzRk
Y2JhM2ZlYTRkZjVjNTIzOTJiNzcxYzAwN2MzYTkwMjk3NzE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAt
MjksMjAgKzI5LDE4IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAj
aW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlw
ZUlEIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9B
UEkoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBUElUeXBlKTsKIH0KIAogV0tT
ZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVDcmVhdGUoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZh
bHVlOjpjcmVhdGUoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHRvQVBJ
KHNlcmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKHNl
cmlhbGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVmIFdLU2VyaWFsaXplZFNj
cmlwdFZhbHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2NyaXB0VmFs
dWVSZWYsIEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7
Ci0gICAgcmV0dXJuIHRvSW1wbChzY3JpcHRWYWx1ZVJlZiktPmRlc2VyaWFsaXplKGNvbnRleHRS
ZWYsIGV4Y2VwdGlvbik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNjcmlwdFZhbHVlUmVm
KS0+ZGVzZXJpYWxpemUoY29udGV4dFJlZiwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLU3RyaW5nLmNwcAppbmRleCA3NjdhYThkOTE0YjBjZjc1MTk2ZTIwYzM2M2I4
MDYzOGZmZDdkM2Q5Li4wMmFhNGNjMGYwYjY2NzNlMjM2YTA3YTgxYzQ2ZmUzOWVhYjdmZWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBAIC0zMSwyNiArMzEsMjQg
QEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5j
bHVkZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKLQogV0tUeXBlSUQgV0tTdHJpbmdHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0
b0FQSShBUEk6OlN0cmluZzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJ
OjpTdHJpbmc6OkFQSVR5cGUpOwogfQogCiBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhV
VEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6
OlN0cmluZzo6Y3JlYXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlN0cmluZzo6Y3JlYXRlKFdURjo6U3Ry
aW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLU3RyaW5nSXNF
bXB0eShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzdHJpbmdS
ZWYpLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChz
dHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpOwogfQogCiBzaXplX3QgV0tTdHJpbmdH
ZXRMZW5ndGgoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoc3Ry
aW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0aCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1w
bChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCk7CiB9CiAKIHNpemVfdCBXS1N0cmlu
Z0dldENoYXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1ZmZlciwgc2l6
ZV90IGJ1ZmZlckxlbmd0aCkKQEAgLTU4LDcgKzU2LDcgQEAgc2l6ZV90IFdLU3RyaW5nR2V0Q2hh
cmFjdGVycyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIFdLQ2hhciogYnVmZmVyLCBzaXplX3QgYnVm
ZmUKICAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXS0NoYXIpID09IHNpemVvZihVQ2hhciksICJT
aXplIG9mIFdLQ2hhciBtdXN0IG1hdGNoIHNpemUgb2YgVUNoYXIiKTsKIAogICAgIHVuc2lnbmVk
IHVuc2lnbmVkQnVmZmVyTGVuZ3RoID0gc3RkOjptaW48c2l6ZV90PihidWZmZXJMZW5ndGgsIHN0
ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgYXV0byBzdWJzdHJpbmcg
PSB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0cmluZygwLCB1bnNpZ25lZEJ1
ZmZlckxlbmd0aCk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBXZWJLaXQ6OnRvSW1wbChzdHJpbmdS
ZWYpLT5zdHJpbmdWaWV3KCkuc3Vic3RyaW5nKDAsIHVuc2lnbmVkQnVmZmVyTGVuZ3RoKTsKIAog
ICAgIHN1YnN0cmluZy5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChyZWludGVycHJldF9jYXN0
PFVDaGFyKj4oYnVmZmVyKSk7CiAgICAgcmV0dXJuIHN1YnN0cmluZy5sZW5ndGgoKTsKQEAgLTY2
LDcgKzY0LDcgQEAgc2l6ZV90IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhXS1N0cmluZ1JlZiBzdHJp
bmdSZWYsIFdLQ2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmUKIAogc2l6ZV90IFdLU3RyaW5nR2V0
TWF4aW11bVVURjhDU3RyaW5nU2l6ZShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCkgKiAzICsgMTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0aCgp
ICogMyArIDE7CiB9CiAKIGVudW0gU3RyaWN0VHlwZSB7IE5vblN0cmljdCA9IGZhbHNlLCBTdHJp
Y3QgPSB0cnVlIH07CkBAIC03Nyw3ICs3NSw3IEBAIHNpemVfdCBXS1N0cmluZ0dldFVURjhDU3Ry
aW5nSW1wbChXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1CiAg
ICAgaWYgKCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gc3RyaW5n
VmlldyA9IHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCk7CisgICAgYXV0byBzdHJpbmdW
aWV3ID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpOwogCiAgICAgY2hh
ciogcCA9IGJ1ZmZlcjsKICAgICBXVEY6OlVuaWNvZGU6OkNvbnZlcnNpb25SZXN1bHQgcmVzdWx0
OwpAQCAtMTA5LDMyICsxMDcsMzIgQEAgc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25T
dHJpY3QoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemUKIAogYm9vbCBX
S1N0cmluZ0lzRXF1YWwoV0tTdHJpbmdSZWYgYVJlZiwgV0tTdHJpbmdSZWYgYlJlZikKIHsKLSAg
ICByZXR1cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gdG9JbXBsKGJSZWYpLT5zdHJp
bmdWaWV3KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkg
PT0gV2ViS2l0Ojp0b0ltcGwoYlJlZiktPnN0cmluZ1ZpZXcoKTsKIH0KIAogYm9vbCBXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nKFdLU3RyaW5nUmVmIGFSZWYsIGNvbnN0IGNoYXIqIGIpCiB7
CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhZGQgYSBmYXN0IHBhdGggdGhhdCBhdm9pZHMgbWVt
b3J5IGFsbG9jYXRpb24gd2hlbiB0aGUgc3RyaW5nIGlzIGFsbCBBU0NJST8KICAgICAvLyBGSVhN
RTogV2UgY2FuIGRvIGV2ZW4gdGhlIGdlbmVyYWwgY2FzZSBtb3JlIGVmZmljaWVudGx5IGlmIHdl
IHdyaXRlIGEgZnVuY3Rpb24gaW4gU3RyaW5nVmlldyB0aGF0IHVuZGVyc3RhbmRzIFVURi04IEMg
c3RyaW5ncy4KLSAgICByZXR1cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gV1RGOjpT
dHJpbmc6OmZyb21VVEY4KGIpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChhUmVmKS0+c3Ry
aW5nVmlldygpID09IFdURjo6U3RyaW5nOjpmcm9tVVRGOChiKTsKIH0KIAogYm9vbCBXS1N0cmlu
Z0lzRXF1YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKFdLU3RyaW5nUmVmIGFSZWYsIGNvbnN0
IGNoYXIqIGIpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhZGQgYSBmYXN0IHBhdGggdGhh
dCBhdm9pZHMgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiB0aGUgc3RyaW5nIGlzIGFsbCBBU0NJST8K
ICAgICAvLyBGSVhNRTogV2UgY2FuIGRvIGV2ZW4gdGhlIGdlbmVyYWwgY2FzZSBtb3JlIGVmZmlj
aWVudGx5IGlmIHdlIHdyaXRlIGEgZnVuY3Rpb24gaW4gU3RyaW5nVmlldyB0aGF0IHVuZGVyc3Rh
bmRzIFVURi04IEMgc3RyaW5ncy4KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0
b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGIpKTsKKyAg
ICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShXZWJLaXQ6OnRvSW1wbChhUmVmKS0+c3Ry
aW5nVmlldygpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYikpOwogfQogCiBXS1N0cmluZ1JlZiBX
S1N0cmluZ0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1JlZikKIHsKICAg
ICBhdXRvIGFwaVN0cmluZyA9IGpzU3RyaW5nUmVmID8gQVBJOjpTdHJpbmc6OmNyZWF0ZShqc1N0
cmluZ1JlZi0+c3RyaW5nKCkpIDogQVBJOjpTdHJpbmc6OmNyZWF0ZU51bGwoKTsKIAotICAgIHJl
dHVybiB0b0FQSSgmYXBpU3RyaW5nLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9B
UEkoJmFwaVN0cmluZy5sZWFrUmVmKCkpOwogfQogCiBKU1N0cmluZ1JlZiBXS1N0cmluZ0NvcHlK
U1N0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7CiAgICAgSlNDOjppbml0aWFsaXplVGhy
ZWFkaW5nKCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodG9JbXBsKHN0
cmluZ1JlZiktPnN0cmluZygpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYo
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCmluZGV4IGZkMjBlNmZmZjFl
MDRmMDRhN2U5OWNkNTVkNDg2YTRkMTNmOWE2OTEuLjQxNjlkYTg0ZmU3Yzc0ZWY1ODRlNWYyZWM1
OTFiOWVlNGRlNmZkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tUeXBlLmNwcApAQCAt
MjksMjEgKzI5LDE5IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLR2V0VHlwZUlE
KFdLVHlwZVJlZiB0eXBlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwodHlwZVJlZikt
PnR5cGUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwodHlwZVJl
ZiktPnR5cGUoKSk7CiB9CiAKIFdLVHlwZVJlZiBXS1JldGFpbihXS1R5cGVSZWYgdHlwZVJlZikK
IHsKLSAgICB0b0ltcGwodHlwZVJlZiktPnJlZigpOworICAgIFdlYktpdDo6dG9JbXBsKHR5cGVS
ZWYpLT5yZWYoKTsKIAogICAgIHJldHVybiB0eXBlUmVmOwogfQogCiB2b2lkIFdLUmVsZWFzZShX
S1R5cGVSZWYgdHlwZVJlZikKIHsKLSAgICB0b0ltcGwodHlwZVJlZiktPmRlcmVmKCk7CisgICAg
V2ViS2l0Ojp0b0ltcGwodHlwZVJlZiktPmRlcmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1VSTC5jcHAKaW5kZXggZjFhMWVhNTQ2ODIwODE3MTMxMjNiMTcyMGZiMzRiZmVlMjVkNWNj
OC4uMTdjOWE2MmQzMTc4ZDFiMDUwZjFkN2QxNjkxNTc4NDBkOTYwOWI0YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVVJMLmNwcApAQCAtMjgsNDkgKzI4LDQ3IEBACiAKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tVUkxH
ZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVSTDo6QVBJVHlwZSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVUkw6OkFQSVR5cGUpOwogfQogCiBXS1VSTFJlZiBX
S1VSTENyZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0
dXJuIHRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkw6OmNyZWF0ZShTdHJp
bmc6OmZyb21VVEY4KHN0cmluZykpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVVJMUmVmIFdLVVJMQ3Jl
YXRlV2l0aEJhc2VVUkwoV0tVUkxSZWYgYmFzZVVSTCwgY29uc3QgY2hhciogcmVsYXRpdmUpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKHRvSW1wbChiYXNlVVJMKSwgU3Ry
aW5nOjpmcm9tVVRGOChyZWxhdGl2ZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9BUEkoJkFQSTo6VVJMOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwoYmFzZVVSTCksIFN0cmluZzo6
ZnJvbVVURjgocmVsYXRpdmUpKS5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTENv
cHlTdHJpbmcoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwo
dXJsKS0+c3RyaW5nKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6
dG9JbXBsKHVybCktPnN0cmluZygpKTsKIH0KIAogYm9vbCBXS1VSTElzRXF1YWwoV0tVUkxSZWYg
YSwgV0tVUkxSZWYgYikKIHsKLSAgICByZXR1cm4gQVBJOjpVUkw6OmVxdWFscygqdG9JbXBsKGEp
LCAqdG9JbXBsKGIpKTsKKyAgICByZXR1cm4gQVBJOjpVUkw6OmVxdWFscygqV2ViS2l0Ojp0b0lt
cGwoYSksICpXZWJLaXQ6OnRvSW1wbChiKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMQ29weUhv
c3ROYW1lKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVy
bCktPmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0lt
cGwodXJsKS0+aG9zdCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tVUkxDb3B5U2NoZW1lKFdLVVJM
UmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybCktPnByb3RvY29s
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCkt
PnByb3RvY29sKCkpOwogfQogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5UGF0aChX
S1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwpLT5wYXRo
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCkt
PnBhdGgoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KFdL
VVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybCktPmxhc3RQ
YXRoQ29tcG9uZW50KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6
dG9JbXBsKHVybCktPmxhc3RQYXRoQ29tcG9uZW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggMTQ5OTU2M2UzOWFlN2I5ODZkZTE3MzQ3
Njc4ODVmNmFhZDkyOGQzMi4uMjk2Y2FmN2MzMjc1ZTAyNTNkZmVhNmQ2ODg2NjkzMDJjYmE4MGE1
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCkBAIC0z
MSwzOSArMzEsMzYgQEAKICNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+
CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQog
V0tUeXBlSUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJ
OjpVUkxSZXF1ZXN0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVS
TFJlcXVlc3Q6OkFQSVR5cGUpOwogfQogCiBXS1VSTFJlcXVlc3RSZWYgV0tVUkxSZXF1ZXN0Q3Jl
YXRlV2l0aFdLVVJMKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJM
UmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwoKSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUo
VVJMKFVSTCgpLCBXZWJLaXQ6OnRvSW1wbCh1cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CiB9
CiAKIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RS
ZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVz
b3VyY2VSZXF1ZXN0KCkudXJsKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJ
KFdlYktpdDo6dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CiB9
CiAKIFdLVVJMUmVmIFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhXS1VSTFJl
cXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBs
KHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0
UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiB9CiAKIFdL
U3RyaW5nUmVmIFdLVVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZiByZXF1
ZXN0UmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVxdWVzdFJlZiktPnJl
c291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3Bp
ZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBN
ZXRob2QoKSk7CiB9CiAKIFdLVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDb3B5U2V0dGluZ0hU
VFBCb2R5KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS0RhdGFSZWYgYm9keSkKIHsKLSAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkodG9JbXBsKHJlcXVlc3RSZWYp
LT5yZXNvdXJjZVJlcXVlc3QoKSk7Ci0gICAgcmVxdWVzdENvcHkuc2V0SFRUUEJvZHkoRm9ybURh
dGE6OmNyZWF0ZShXS0RhdGFHZXRCeXRlcyhib2R5KSwgV0tEYXRhR2V0U2l6ZShib2R5KSkpOwot
ICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENvcHkpLmxl
YWtSZWYoKSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3RDb3B5KFdlYktp
dDo6dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgcmVxdWVzdENv
cHkuc2V0SFRUUEJvZHkoV2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZShXS0RhdGFHZXRCeXRlcyhi
b2R5KSwgV0tEYXRhR2V0U2l6ZShib2R5KSkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZB
UEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q29weSkubGVha1JlZigpKTsKIH0KIAogdm9p
ZCBXS1VSTFJlcXVlc3RTZXREZWZhdWx0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50
ZXJ2YWwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3Bv
bnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCmlu
ZGV4IDhmMWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2YuLjE5OTBjMDMzZWQ4
NWNhNmFmNDVhMDdlOTYxYWYwZTI0ODFkNDM3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0zMCwzOSArMzAsMzcgQEAKICNpbmNsdWRlICJX
S0FQSUNhc3QuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KIFdLVHlwZUlEIFdLVVJMUmVzcG9uc2VHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0
b0FQSShBUEk6OlVSTFJlc3BvbnNlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShBUEk6OlVSTFJlc3BvbnNlOjpBUElUeXBlKTsKIH0KIAogV0tVUkxSZWYgV0tVUkxSZXNwb25z
ZUNvcHlVUkwoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9D
b3BpZWRVUkxBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnVybCgp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6OnRvSW1wbChyZXNw
b25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS51cmwoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdL
VVJMUmVzcG9uc2VDb3B5TUlNRVR5cGUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsK
LSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNw
b25zZSgpLm1pbWVUeXBlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktp
dDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLm1pbWVUeXBlKCkpOwog
fQogCiBpbnQzMl90IFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJj
ZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwo
cmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKIH0KIAog
V0tTdHJpbmdSZWYgV0tVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShXS1VSTFJlc3Bv
bnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVz
cG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5y
ZXNvdXJjZVJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIGJvb2wgV0tVUkxS
ZXNwb25zZUlzQXR0YWNobWVudChXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAg
IHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuaXNBdHRhY2ht
ZW50KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VS
ZXNwb25zZSgpLmlzQXR0YWNobWVudCgpOwogfQogCiB1aW50MzJfdCBXS1VSTFJlc3BvbnNlR2V0
RXhwZWN0ZWRDb250ZW50TGVuZ3RoKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYpCiB7Ci0g
ICAgcmV0dXJuIHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5leHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYp
LT5yZXNvdXJjZVJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5j
cHAKaW5kZXggY2VlZGM3Njk2MzMxMzA3MDYyMzk0YWY1NzU3MmU2OWVmNDQ0ZTg4OC4uZmRlYmE3
OTcxMDVhNzgyNjMxOTUyYWNkYWI3YjNiYjg4M2NjZWY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzAs
MzkgKzMwLDM3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcu
aCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tVc2VyQ29udGVudFVS
TFBhdHRlcm5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVzZXJDb250ZW50
VVJMUGF0dGVybjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVc2Vy
Q29udGVudFVSTFBhdHRlcm46OkFQSVR5cGUpOwogfQogCiBXS1VzZXJDb250ZW50VVJMUGF0dGVy
blJlZiBXS1VzZXJDb250ZW50VVJMUGF0dGVybkNyZWF0ZShXS1N0cmluZ1JlZiBwYXR0ZXJuUmVm
KQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0
ZSh0b0ltcGwocGF0dGVyblJlZiktPnN0cmluZygpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKCZBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlKFdlYktpdDo6
dG9JbXBsKHBhdHRlcm5SZWYpLT5zdHJpbmcoKSkubGVha1JlZigpKTsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5Db3B5SG9zdChXS1VzZXJDb250ZW50VVJMUGF0dGVy
blJlZiB1cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJs
UGF0dGVyblJlZiktPmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2Vi
S2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPmhvc3QoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdL
VXNlckNvbnRlbnRVUkxQYXR0ZXJuQ29weVNjaGVtZShXS1VzZXJDb250ZW50VVJMUGF0dGVyblJl
ZiB1cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsUGF0
dGVyblJlZiktPnNjaGVtZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJL
aXQ6OnRvSW1wbCh1cmxQYXR0ZXJuUmVmKS0+c2NoZW1lKCkpOwogfQogCiBib29sIFdLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuSXNWYWxpZChXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0
ZXJuUmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJlZiktPmlzVmFsaWQoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPmlzVmFsaWQoKTsKIH0K
IAogYm9vbCBXS1VzZXJDb250ZW50VVJMUGF0dGVybk1hdGNoZXNVUkwoV0tVc2VyQ29udGVudFVS
TFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVy
biB0b0ltcGwodXJsUGF0dGVyblJlZiktPm1hdGNoZXNVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5tYXRjaGVzVVJMKFdl
YktpdDo6dG9XVEZTdHJpbmcodXJsUmVmKSk7CiB9CiAKIGJvb2wgV0tVc2VyQ29udGVudFVSTFBh
dHRlcm5NYXRjaGVzU3ViZG9tYWlucyhXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0
ZXJuUmVmKQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJlZiktPm1hdGNoZXNTdWJk
b21haW5zKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5tYXRj
aGVzU3ViZG9tYWlucygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2Nh
aXJvL1dLSW1hZ2VDYWlyby5jcHAKaW5kZXggMzBhZjRkZmE0MWY3MjBhMWE5NWI1NzI4ZDNmODJm
OGMwMzg3Njg3Mi4uY2NmY2M2NjhmMWY1NDE3ZjUwMGMwYjI0OGEzNTQ4OTk2NmY5MWUxYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3Bw
CkBAIC0zNCwxOSArMzQsMTYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENh
aXJvLmg+CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotCiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVD
YWlyb1N1cmZhY2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICAvLyBXZSBjYW5ub3QgcGFz
cyBhIFJlZlB0ciB0aHJvdWdoIHRoZSBBUEkgaGVyZSwgc28gd2UganVzdCBsZWFrIHRoZSByZWZl
cmVuY2UuCi0gICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJv
U3VyZmFjZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYp
LT5iaXRtYXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1hZ2VS
ZWYgV0tJbWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNl
LCBXS0ltYWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJv
X2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dl
dF9oZWlnaHQoc3VyZmFjZSkpOwotICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRl
KGltYWdlU2l6ZSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOworICAgIFdlYkNvcmU6OkludFNp
emUgaW1hZ2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWly
b19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOworICAgIGF1dG8gd2ViSW1hZ2Ug
PSBXZWJLaXQ6OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRp
b25zKG9wdGlvbnMpKTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRt
YXAoKS5jcmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGNhaXJvX3QqIGNyID0gZ3JhcGhp
Y3NDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAppbmRl
eCA3N2YwMmZmMmJhZjk3ODVhZDczZTMwZjBmZWMxMmZhNTBlMTViYmVmLi42NGQzMDE5MmEzNWJh
Mjk0OTRiMzVhNjdmMDFiYjNiODBlMDIzNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC0zNCw4
ICszNCw2IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotCiB1c2luZyBDZXJ0aWZpY2F0ZSA9IFZlY3Rvcjx1aW50OF90
PjsKIHVzaW5nIENlcnRpZmljYXRlQ2hhaW4gPSBWZWN0b3I8Q2VydGlmaWNhdGU+OwogCkBAIC01
NSwxOSArNTMsMTkgQEAgV0tDZXJ0aWZpY2F0ZUluZm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVh
dGVXaXRoQ2VydGZpY2F0ZUNoYWluKFdLQXJyYXlSZWYgY2VydGkKIAogaW50IFdLQ2VydGlmaWNh
dGVJbmZvR2V0VmVyaWZpY2F0aW9uRXJyb3IoV0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNh
dGVJbmZvUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2Vy
dGlmaWNhdGVJbmZvKCkudmVyaWZpY2F0aW9uRXJyb3IoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkudmVyaWZpY2F0aW9u
RXJyb3IoKTsKIH0KIAogc2l6ZV90IFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVDaGFp
blNpemUoV0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJbmZvUmVmKQogewotICAgIHJl
dHVybiB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlm
aWNhdGVDaGFpbigpLnNpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoY2VydGlmaWNh
dGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpLnNpemUoKTsK
IH0KIAogV0tEYXRhUmVmIFdLQ2VydGlmaWNhdGVJbmZvQ29weUNlcnRpZmljYXRlQXRJbmRleChX
S0NlcnRpZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYsIHNpemVfdCBpbmRleCkKIHsK
LSAgICBpZiAodG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNl
cnRpZmljYXRlQ2hhaW4oKS5zaXplKCkgPD0gaW5kZXgpCisgICAgaWYgKFdlYktpdDo6dG9JbXBs
KGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4o
KS5zaXplKCkgPD0gaW5kZXgpCiAgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRh
dGE6OmNyZWF0ZShudWxscHRyLCAwKS5sZWFrUmVmKCkpOwogCi0gICAgY29uc3QgYXV0byYgY2Vy
dGlmaWNhdGUgPSB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCku
Y2VydGlmaWNhdGVDaGFpbigpLmF0KGluZGV4KTsKKyAgICBjb25zdCBhdXRvJiBjZXJ0aWZpY2F0
ZSA9IFdlYktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygp
LmNlcnRpZmljYXRlQ2hhaW4oKS5hdChpbmRleCk7CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+
KGNlcnRpZmljYXRlLmRhdGEoKSksIGNlcnRpZmljYXRlLnNpemUoKSkubGVha1JlZigpKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356473</attachid>
            <date>2018-12-03 23:27:11 -0800</date>
            <delta_ts>2018-12-04 18:16:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192352-20181204162710.patch</filename>
            <type>text/plain</type>
            <size>60835</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGI5YzAzNDkzMDA0YWYxYmFi
ZjRjYmNiMmQ3OTVlZTY5NjAwMjFmOTcuLmQ5ZTc2YzUxZmY0NWYyNzY4MGU0OGY1MDFlYjdlNjcx
NTFjYTAyZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTgtMTItMDMgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgdW5kZXIgV2ViS2l0L1NoYXJlZC9BUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjM1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdXNp
bmcgbmFtZXNwYWNlIHN0YXRlbWVudHMsIGFuZCB1c2UgbmFtZXNwYWNlIHByZWZpeAorICAgICAg
ICBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwOgorCiAyMDE4LTEy
LTAzICBUaW0gSG9ydG9uICA8dGltb3RoeV9ob3J0b25AYXBwbGUuY29tPgogCiAgICAgICAgIE1h
a2UgaXQgcG9zc2libGUgdG8gZGlzYWJsZSBhbmltYXRlZCBrZXlib2FyZCBzY3JvbGxpbmcgYmVo
YXZpb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcAppbmRleCBh
YzkwNGQ0MDljMjE1MTBjZjU2YzczODAxYTk1ZmE1ZjFhZjUxOTViLi4zZTUwMjJlMWQ4YTE3YTFi
N2RjZWM3NmY5NmJjYWQ3MjMzOWQzNmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQ
SVVSTFJlcXVlc3QuY3BwCkBAIC0yOSwyNyArMjksMjQgQEAKICNpbmNsdWRlICJXZWJDb3JlQXJn
dW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIG5hbWVzcGFjZSBBUEkg
ewogCi1VUkxSZXF1ZXN0OjpVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCkKK1VSTFJlcXVlc3Q6OlVSTFJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0KQogICAgIDogbV9yZXF1ZXN0KHJlcXVlc3QpCiB7CiB9CiAKIGRvdWJsZSBVUkxS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCkKIHsKLSAgICByZXR1cm4gUmVzb3VyY2VS
ZXF1ZXN0OjpkZWZhdWx0VGltZW91dEludGVydmFsKCk7CisgICAgcmV0dXJuIFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdDo6ZGVmYXVsdFRpbWVvdXRJbnRlcnZhbCgpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBmdW5jdGlvbiBzaG91bGQgcmVhbGx5IGJlIG9uIFdlYlByb2Nlc3NQb29sIG9yIFdlYlBh
Z2VQcm94eS4KIHZvaWQgVVJMUmVxdWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChkb3Vi
bGUgdGltZW91dEludGVydmFsKQogewotICAgIFJlc291cmNlUmVxdWVzdDo6c2V0RGVmYXVsdFRp
bWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdDo6c2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogCi0gICAg
Zm9yIChhdXRvKiBwcm9jZXNzUG9vbCA6IFdlYlByb2Nlc3NQb29sOjphbGxQcm9jZXNzUG9vbHMo
KSkKKyAgICBmb3IgKGF1dG8qIHByb2Nlc3NQb29sIDogV2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6
YWxsUHJvY2Vzc1Bvb2xzKCkpCiAgICAgICAgIHByb2Nlc3NQb29sLT5zZXREZWZhdWx0UmVxdWVz
dFRpbWVvdXRJbnRlcnZhbCh0aW1lb3V0SW50ZXJ2YWwpOwogfQogCkBAIC02MCw3ICs1Nyw3IEBA
IHZvaWQgVVJMUmVxdWVzdDo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKIAog
Ym9vbCBVUkxSZXF1ZXN0OjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8T2Jq
ZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0OworICAgIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0OwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVx
dWVzdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvQVBJVVJMUmVzcG9uc2UuY3BwCmluZGV4IDFkOTNiNjJkMzhmYWMyYjg4MzdiODFhY2Jh
NTAyMGFhYzE0ZjgyYjcuLmJhMTM3NThkOGIyZGQ2MmY2M2YxMDZhNmNkZTZkMWZjNTkyMjU4NmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNwb25zZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcApAQCAtMjgs
OCArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAKLXVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOwotCiBuYW1lc3BhY2UgQVBJIHsKIAogVVJMUmVzcG9uc2U6OlVS
TFJlc3BvbnNlKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQpAQCAt
NDQsNyArNDIsNyBAQCB2b2lkIFVSTFJlc3BvbnNlOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAogCiBib29sIFVSTFJlc3BvbnNlOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNv
ZGVyLCBSZWZQdHI8T2JqZWN0PiYgcmVzdWx0KQogewotICAgIFJlc291cmNlUmVzcG9uc2UgcmVz
cG9uc2U7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3BvbnNlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tBcnJheS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcAppbmRleCA4NDQxNjExMjQyMTdhZjRk
MzUzZWI2YjI5YmY5MTdlMDRkOGJlNWE5Li5jOTc4NmY0YmE0NjBhMGUxOGFlNjg5OTZmOTFiZmRm
NmRkY2NhOThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcApAQCAtMjks
MTEgKzI5LDkgQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0FycmF5R2V0VHlwZUlE
KCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpBcnJheTo6QVBJVHlwZSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tB
cnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVzKQpAQCAt
NDIsOSArNDAsOSBAQCBXS0FycmF5UmVmIFdLQXJyYXlDcmVhdGUoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG51bWJlck9mVmFsdWVzKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZWYWx1ZXM7ICsraSkKLSAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKHRvSW1wbCh2
YWx1ZXNbaV0pKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKFdlYktpdDo6dG9J
bXBsKHZhbHVlc1tpXSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUo
V1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKIH0KIAog
V0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlQWRvcHRpbmdWYWx1ZXMoV0tUeXBlUmVmKiB2YWx1ZXMs
IHNpemVfdCBudW1iZXJPZlZhbHVlcykKQEAgLTUzLDE3ICs1MSwxNyBAQCBXS0FycmF5UmVmIFdL
QXJyYXlDcmVhdGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJl
ck9mVmFsdWVzKQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZW
YWx1ZXMpOwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytp
KQotICAgICAgICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYodG9JbXBsKHZhbHVl
c1tpXSkpKTsKKyAgICAgICAgZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKGFkb3B0UmVmKFdlYktp
dDo6dG9JbXBsKHZhbHVlc1tpXSkpKTsKIAotICAgIHJldHVybiB0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKFdURk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShlbGVtZW50cykpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLVHlwZVJlZiBXS0FycmF5R2V0SXRlbUF0SW5kZXgoV0tBcnJheVJlZiBhcnJheVJl
Ziwgc2l6ZV90IGluZGV4KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoYXJyYXlSZWYpLT5h
dChpbmRleCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGFycmF5
UmVmKS0+YXQoaW5kZXgpKTsKIH0KIAogc2l6ZV90IFdLQXJyYXlHZXRTaXplKFdLQXJyYXlSZWYg
YXJyYXlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhcnJheVJlZiktPnNpemUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5zaXplKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAKaW5kZXggNDVlYzYyNzUx
YTcxM2M3MjNhZmRhYWVlMWYyNzkzMjY0ODU3ZGNmZi4uMmI3MTdlNTcyZjk5NmFhOGUzOWRlZDll
OWU2NjA5MmI4Y2VhNmViOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tDZXJ0aWZpY2F0ZUluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcApAQCAtMjksOSArMjksNyBAQAogI2luY2x1ZGUgIldlYkNlcnRp
ZmljYXRlSW5mby5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS0NlcnRpZmljYXRlSW5mb0dldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKFdlYkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDZXJ0aWZpY2F0ZUluZm86OkFQSVR5cGUpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcCBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAKaW5kZXggOWZh
NzA0MmMyOWVlMzEwM2UxNzIxNGVlYjNiYjY0MDg0ZmM4MzhmYi4uMjU1NjRmOWY4NzhjOWFjZmUw
ZmVmYjNmNTQ4MjFkNGViYTVkNGQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS0Nvbm5lY3Rpb25SZWYuY3BwCkBAIC0yOSwyMCArMjksMTggQEAKICNpbmNsdWRlICJXS0FQ
SUNhc3QuaCIKICNpbmNsdWRlICJXZWJDb25uZWN0aW9uLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQ29ubmVjdGlvbkdldFR5cGVJRCgpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKFdlYkNvbm5lY3Rpb246OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6V2ViQ29ubmVjdGlvbjo6QVBJVHlwZSk7CiB9CiAKIHZvaWQgV0tDb25uZWN0aW9u
U2V0Q29ubmVjdGlvbkNsaWVudChXS0Nvbm5lY3Rpb25SZWYgY29ubmVjdGlvblJlZiwgY29uc3Qg
V0tDb25uZWN0aW9uQ2xpZW50QmFzZSogd2tDbGllbnQpCiB7Ci0gICAgdG9JbXBsKGNvbm5lY3Rp
b25SZWYpLT5pbml0aWFsaXplQ29ubmVjdGlvbkNsaWVudCh3a0NsaWVudCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoY29ubmVjdGlvblJlZiktPmluaXRpYWxpemVDb25uZWN0aW9uQ2xpZW50KHdrQ2xp
ZW50KTsKIH0KIAogdm9pZCBXS0Nvbm5lY3Rpb25Qb3N0TWVzc2FnZShXS0Nvbm5lY3Rpb25SZWYg
Y29ubmVjdGlvblJlZiwgV0tTdHJpbmdSZWYgbWVzc2FnZU5hbWVSZWYsIFdLVHlwZVJlZiBtZXNz
YWdlQm9keVJlZikKIHsKLSAgICB0b0ltcGwoY29ubmVjdGlvblJlZiktPnBvc3RNZXNzYWdlKHRv
SW1wbChtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b0ltcGwobWVzc2FnZUJvZHlSZWYpKTsK
KyAgICBXZWJLaXQ6OnRvSW1wbChjb25uZWN0aW9uUmVmKS0+cG9zdE1lc3NhZ2UoV2ViS2l0Ojp0
b0ltcGwobWVzc2FnZU5hbWVSZWYpLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwobWVzc2FnZUJv
ZHlSZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tD
b250ZXh0TWVudUl0ZW0uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDb250ZXh0
TWVudUl0ZW0uY3BwCmluZGV4IDFjZjA1ZTUwNWMyNDcyNDg0NTE1ZTk4ZjA3MDY3OTA0NzJjNThj
OTcuLmE1ZjFiMTlmMjI4NDhlNWRiOWRjNGJjZTI5NGNiMGRlYTBlOThiZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKQEAgLTMyLDIy
ICszMiwxOSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldLQ29udGV4dE1l
bnVJdGVtVHlwZXMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0NvbnRleHRNZW51SXRlbUdldFR5cGVJRCgpCiB7CiAj
aWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKFdlYkNvbnRleHRNZW51
SXRlbTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250
ZXh0TWVudUl0ZW06OkFQSVR5cGUpOwogI2Vsc2UKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpPYmpl
Y3Q6OlR5cGU6Ok51bGwpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6T2JqZWN0OjpU
eXBlOjpOdWxsKTsKICNlbmRpZgogfQogCiBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRN
ZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVGFnIHRhZywgV0tTdHJpbmdS
ZWYgdGl0bGUsIGJvb2wgZW5hYmxlZCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKFdlYkNvbnRleHRNZW51
SXRlbURhdGEoQWN0aW9uVHlwZSwgdG9JbXBsKHRhZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygp
LCBlbmFibGVkLCBmYWxzZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JldlYktpdDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW1EYXRhKFdlYkNvcmU6OkFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdlYktp
dDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGZhbHNlKSkubGVha1JlZigpKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHRhZyk7CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsK
QEAgLTU5LDcgKzU2LDcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1D
cmVhdGVBc0FjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFcKIFdLQ29udGV4dE1lbnVJ
dGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVBY3Rpb24oV0tDb250ZXh0
TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBib29sIGNo
ZWNrZWQpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZX
ZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0ZShXZWJDb250ZXh0TWVudUl0ZW1EYXRhKENoZWNrYWJs
ZUFjdGlvblR5cGUsIHRvSW1wbCh0YWcpLCB0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxl
ZCwgY2hlY2tlZCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktp
dDo6V2ViQ29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW1E
YXRhKFdlYkNvcmU6OkNoZWNrYWJsZUFjdGlvblR5cGUsIFdlYktpdDo6dG9JbXBsKHRhZyksIFdl
YktpdDo6dG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGNoZWNrZWQpKS5sZWFrUmVm
KCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGFnKTsKICAgICBVTlVTRURfUEFSQU0odGl0
bGUpOwpAQCAtNzIsNyArNjksNyBAQCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51
SXRlbUNyZWF0ZUFzQ2hlY2thYmxlQWN0aW9uKFdLQ29udGV4dE1lbnVJdGVtVAogV0tDb250ZXh0
TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdSZWYg
dGl0bGUsIGJvb2wgZW5hYmxlZCwgV0tBcnJheVJlZiBzdWJtZW51SXRlbXMpCiB7CiAjaWYgRU5B
QkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKCZXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZSh0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwgZW5hYmxlZCwgdG9JbXBsKHN1Ym1lbnVJ
dGVtcykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6V2Vi
Q29udGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5zdHJpbmcoKSwg
ZW5hYmxlZCwgV2ViS2l0Ojp0b0ltcGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKICNlbHNl
CiAgICAgVU5VU0VEX1BBUkFNKHRpdGxlKTsKICAgICBVTlVTRURfUEFSQU0oZW5hYmxlZCk7CkBA
IC04NCw3ICs4MSw3IEBAIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3Jl
YXRlQXNTdWJtZW51KFdLU3RyaW5nUmVmIHRpdGxlLCBib29sIGVuCiBXS0NvbnRleHRNZW51SXRl
bVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSShXZWJDb250ZXh0TWVudUl0ZW06OnNlcGFyYXRv
ckl0ZW0oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW06OnNlcGFyYXRvckl0ZW0oKSk7CiAjZWxzZQogICAgIHJldHVybiBudWxscHRyOwogI2Vu
ZGlmCkBAIC05MywyNyArOTAsMjcgQEAgV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVu
dUl0ZW1TZXBhcmF0b3JJdGVtKCkKIFdLQ29udGV4dE1lbnVJdGVtVGFnIFdLQ29udGV4dE1lbnVJ
dGVtR2V0VGFnKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENP
TlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLmFj
dGlvbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChpdGVtUmVm
KS0+ZGF0YSgpLmFjdGlvbigpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwot
ICAgIHJldHVybiB0b0FQSShDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbik7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViQ29yZTo6Q29udGV4dE1lbnVJdGVtVGFnTm9BY3Rpb24pOwogI2Vu
ZGlmCiB9CiAKIFdLQ29udGV4dE1lbnVJdGVtVHlwZSBXS0NvbnRleHRNZW51SXRlbUdldFR5cGUo
V0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkudHlwZSgpKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLnR5
cGUoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKLSAgICByZXR1cm4gdG9B
UEkoQWN0aW9uVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViQ29yZTo6QWN0aW9u
VHlwZSk7CiAjZW5kaWYKIH0KIAogV0tTdHJpbmdSZWYgV0tDb250ZXh0TWVudUl0ZW1Db3B5VGl0
bGUoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9N
RU5VUykKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkudGl0
bGUoKS5pbXBsKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9J
bXBsKGl0ZW1SZWYpLT5kYXRhKCkudGl0bGUoKS5pbXBsKCkpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oaXRlbVJlZik7CiAgICAgcmV0dXJuIDA7CkBAIC0xMjMsNyArMTIwLDcgQEAgV0tTdHJp
bmdSZWYgV0tDb250ZXh0TWVudUl0ZW1Db3B5VGl0bGUoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRl
bVJlZikKIGJvb2wgV0tDb250ZXh0TWVudUl0ZW1HZXRFbmFibGVkKFdLQ29udGV4dE1lbnVJdGVt
UmVmIGl0ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRv
SW1wbChpdGVtUmVmKS0+ZGF0YSgpLmVuYWJsZWQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0lt
cGwoaXRlbVJlZiktPmRhdGEoKS5lbmFibGVkKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShp
dGVtUmVmKTsKICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMzMsNyArMTMwLDcgQEAgYm9vbCBXS0Nv
bnRleHRNZW51SXRlbUdldEVuYWJsZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIGJv
b2wgV0tDb250ZXh0TWVudUl0ZW1HZXRDaGVja2VkKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1S
ZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvSW1wbChpdGVt
UmVmKS0+ZGF0YSgpLmNoZWNrZWQoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoaXRlbVJl
ZiktPmRhdGEoKS5jaGVja2VkKCk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsK
ICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNDMsNyArMTQwLDcgQEAgYm9vbCBXS0NvbnRleHRNZW51
SXRlbUdldENoZWNrZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIFdLQXJyYXlSZWYg
V0tDb250ZXh0TWVudUNvcHlTdWJtZW51SXRlbXMoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJl
ZikKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9BUEkoJnRvSW1w
bChpdGVtUmVmKS0+c3VibWVudUl0ZW1zQXNBUElBcnJheSgpLmxlYWtSZWYoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGl0ZW1SZWYpLT5zdWJtZW51SXRlbXNB
c0FQSUFycmF5KCkubGVha1JlZigpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYp
OwogICAgIHJldHVybiAwOwpAQCAtMTUzLDcgKzE1MCw3IEBAIFdLQXJyYXlSZWYgV0tDb250ZXh0
TWVudUNvcHlTdWJtZW51SXRlbXMoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIFdLVHlw
ZVJlZiBXS0NvbnRleHRNZW51SXRlbUdldFVzZXJEYXRhKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0
ZW1SZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJuIHRvQVBJKHRv
SW1wbChpdGVtUmVmKS0+dXNlckRhdGEoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2Vi
S2l0Ojp0b0ltcGwoaXRlbVJlZiktPnVzZXJEYXRhKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0oaXRlbVJlZik7CiAgICAgcmV0dXJuIDA7CkBAIC0xNjMsNyArMTYwLDcgQEAgV0tUeXBlUmVm
IFdLQ29udGV4dE1lbnVJdGVtR2V0VXNlckRhdGEoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJl
ZikKIHZvaWQgV0tDb250ZXh0TWVudUl0ZW1TZXRVc2VyRGF0YShXS0NvbnRleHRNZW51SXRlbVJl
ZiBpdGVtUmVmLCBXS1R5cGVSZWYgdXNlckRhdGFSZWYpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRf
TUVOVVMpCi0gICAgdG9JbXBsKGl0ZW1SZWYpLT5zZXRVc2VyRGF0YSh0b0ltcGwodXNlckRhdGFS
ZWYpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+c2V0VXNlckRhdGEoV2ViS2l0Ojp0
b0ltcGwodXNlckRhdGFSZWYpKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwog
ICAgIFVOVVNFRF9QQVJBTSh1c2VyRGF0YVJlZik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tE
YXRhLmNwcAppbmRleCBmZGJjYTczZGNiOWVlYjM2OTg1MDIwNWNlOWY4ODQwYzBhMzJkNDYxLi4x
M2Y3OWQ5MjE2ZDRiNjJmMzE2NWQ5NDljM2YzNGM2ZWZlODg2ZDM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLRGF0YS5jcHAKQEAgLTI5LDI0ICsyOSwyMiBAQAogI2luY2x1ZGUgIkFQSURh
dGEuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQogV0tUeXBlSUQgV0tEYXRhR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpE
YXRhOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkRhdGE6OkFQSVR5
cGUpOwogfQogCiBXS0RhdGFSZWYgV0tEYXRhQ3JlYXRlKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ5
dGVzLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6RGF0YTo6Y3JlYXRl
KGJ5dGVzLCBzaXplKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6
OkRhdGE6OmNyZWF0ZShieXRlcywgc2l6ZSkubGVha1JlZigpKTsKIH0KIAogY29uc3QgdW5zaWdu
ZWQgY2hhciogV0tEYXRhR2V0Qnl0ZXMoV0tEYXRhUmVmIGRhdGFSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvSW1wbChkYXRhUmVmKS0+Ynl0ZXMoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoZGF0
YVJlZiktPmJ5dGVzKCk7CiB9CiAKIHNpemVfdCBXS0RhdGFHZXRTaXplKFdLRGF0YVJlZiBkYXRh
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoZGF0YVJlZiktPnNpemUoKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoZGF0YVJlZiktPnNpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCmluZGV4IDY1NGUxZTYxZTA2ZjBiMGY3ZTgzZmQ2YzI3
ZGFhYmYzMWUxMzhjZGUuLjJmNWEwMGUwNDhhNGIyMTM5MjRiNjFjNjg1MjFlOGQxYjFjODcwMGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmNwcApAQCAtMzAs
MzMgKzMwLDMxIEBACiAjaW5jbHVkZSAiQVBJRGljdGlvbmFyeS5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0RpY3Rpb25h
cnlHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OkRpY3Rpb25hcnk6OkFQSVR5
cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RGljdGlvbmFyeTo6QVBJVHlwZSk7
CiB9CiAKIFdLX0VYUE9SVCBXS0RpY3Rpb25hcnlSZWYgV0tEaWN0aW9uYXJ5Q3JlYXRlKGNvbnN0
IFdLU3RyaW5nUmVmKiBrZXlzLCBjb25zdCBXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJl
ck9mVmFsdWVzKQogewogICAgIEFQSTo6RGljdGlvbmFyeTo6TWFwVHlwZSBtYXA7CiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytpKQotICAgICAgICBtYXAuYWRk
KHRvSW1wbChrZXlzW2ldKS0+c3RyaW5nKCksIHRvSW1wbCh2YWx1ZXNbaV0pKTsKKyAgICAgICAg
bWFwLmFkZChXZWJLaXQ6OnRvSW1wbChrZXlzW2ldKS0+c3RyaW5nKCksIFdlYktpdDo6dG9JbXBs
KHZhbHVlc1tpXSkpOwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkRpY3Rpb25hcnk6OmNyZWF0
ZShXVEZNb3ZlKG1hcCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQ
STo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSkubGVha1JlZigpKTsKIH0KIAogV0tU
eXBlUmVmIFdLRGljdGlvbmFyeUdldEl0ZW1Gb3JLZXkoV0tEaWN0aW9uYXJ5UmVmIGRpY3Rpb25h
cnlSZWYsIFdLU3RyaW5nUmVmIGtleSkKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGRpY3Rp
b25hcnlSZWYpLT5nZXQodG9JbXBsKGtleSktPnN0cmluZygpKSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPmdldChXZWJLaXQ6OnRvSW1w
bChrZXkpLT5zdHJpbmcoKSkpOwogfQogCiBzaXplX3QgV0tEaWN0aW9uYXJ5R2V0U2l6ZShXS0Rp
Y3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGRpY3Rpb25h
cnlSZWYpLT5zaXplKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRpY3Rpb25hcnlSZWYp
LT5zaXplKCk7CiB9CiAKIFdLQXJyYXlSZWYgV0tEaWN0aW9uYXJ5Q29weUtleXMoV0tEaWN0aW9u
YXJ5UmVmIGRpY3Rpb25hcnlSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZ0b0ltcGwoZGljdGlv
bmFyeVJlZiktPmtleXMoKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZX
ZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+a2V5cygpLmxlYWtSZWYoKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuY3BwCmluZGV4IGM5NDE1MTIwYjg1MzA5
YzA1MDNhNzUyMzE0YTJhNTc3MjExNjJjOGYuLjQ3OTNhNTdmZDJmMTU0ZmVjNzFkOTg0Yjc4ZmI0
OGFkODQ5MjkxMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRXJy
b3JSZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuY3Bw
CkBAIC0yOSwyNiArMjksMjQgQEAKICNpbmNsdWRlICJBUElFcnJvci5oIgogI2luY2x1ZGUgIldL
QVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0Vycm9y
R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpFcnJvcjo6QVBJVHlwZSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpFcnJvcjo6QVBJVHlwZSk7CiB9CiAKIFdLU3Ry
aW5nUmVmIFdLRXJyb3JDb3B5V0tFcnJvckRvbWFpbigpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVk
QVBJKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWluKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQ29waWVkQVBJKEFQSTo6RXJyb3I6OndlYktpdEVycm9yRG9tYWluKCkpOwogfQogCiBXS1N0
cmluZ1JlZiBXS0Vycm9yQ29weURvbWFpbihXS0Vycm9yUmVmIGVycm9yUmVmKQogewotICAgIHJl
dHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZXJyb3JSZWYpLT5kb21haW4oKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoZXJyb3JSZWYpLT5kb21haW4oKSk7
CiB9CiAKIGludCBXS0Vycm9yR2V0RXJyb3JDb2RlKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7Ci0g
ICAgYXV0byBlcnJvckNvZGUgPSB0b0ltcGwoZXJyb3JSZWYpLT5lcnJvckNvZGUoKTsKKyAgICBh
dXRvIGVycm9yQ29kZSA9IFdlYktpdDo6dG9JbXBsKGVycm9yUmVmKS0+ZXJyb3JDb2RlKCk7CiAg
ICAgc3dpdGNoIChlcnJvckNvZGUpIHsKICAgICBjYXNlIEFQSTo6RXJyb3I6OlBvbGljeTo6Q2Fu
bm90U2hvd01JTUVUeXBlOgogICAgICAgICByZXR1cm4ga1dLRXJyb3JDb2RlQ2Fubm90U2hvd01J
TUVUeXBlOwpAQCAtODMsMTAgKzgxLDEwIEBAIGludCBXS0Vycm9yR2V0RXJyb3JDb2RlKFdLRXJy
b3JSZWYgZXJyb3JSZWYpCiAKIFdLVVJMUmVmIFdLRXJyb3JDb3B5RmFpbGluZ1VSTChXS0Vycm9y
UmVmIGVycm9yUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwoZXJyb3JS
ZWYpLT5mYWlsaW5nVVJMKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJKFdl
YktpdDo6dG9JbXBsKGVycm9yUmVmKS0+ZmFpbGluZ1VSTCgpKTsKIH0KIAogV0tTdHJpbmdSZWYg
V0tFcnJvckNvcHlMb2NhbGl6ZWREZXNjcmlwdGlvbihXS0Vycm9yUmVmIGVycm9yUmVmKQogewot
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoZXJyb3JSZWYpLT5sb2NhbGl6ZWREZXNjcmlw
dGlvbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChl
cnJvclJlZiktPmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS0dlb21ldHJ5LmNwcAppbmRleCA0Y2Q1ZTNkYTQ3MDBjNzU2ZjZiNzBhM2RmMzhl
M2ZlOGU1ZWE5ZWQ3Li4yYThiNjMwNTc5YzE3NjliMDk2ZmI1ZGNlZTkxOTFjYmY2OGY4NmU1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0dlb21ldHJ5LmNwcApAQCAtMjksNTAgKzI5
LDQ4IEBACiAjaW5jbHVkZSAiQVBJR2VvbWV0cnkuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIK
IAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tTaXplR2V0VHlwZUlEKHZv
aWQpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2l6ZTo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpTaXplOjpBUElUeXBlKTsKIH0KIAogV0tUeXBlSUQgV0tQb2lu
dEdldFR5cGVJRCh2b2lkKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlBvaW50OjpBUElUeXBl
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlBvaW50OjpBUElUeXBlKTsKIH0KIAog
V0tUeXBlSUQgV0tSZWN0R2V0VHlwZUlEKHZvaWQpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6
UmVjdDo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpSZWN0OjpBUElU
eXBlKTsKIH0KIAogV0tQb2ludFJlZiBXS1BvaW50Q3JlYXRlKFdLUG9pbnQgcG9pbnQpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZBUEk6OlBvaW50OjpjcmVhdGUocG9pbnQpLmxlYWtSZWYoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6UG9pbnQ6OmNyZWF0ZShwb2ludCkubGVha1Jl
ZigpKTsKIH0KIAogV0tTaXplUmVmIFdLU2l6ZUNyZWF0ZShXS1NpemUgc2l6ZSkKIHsKLSAgICBy
ZXR1cm4gdG9BUEkoJkFQSTo6U2l6ZTo6Y3JlYXRlKHNpemUpLmxlYWtSZWYoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6U2l6ZTo6Y3JlYXRlKHNpemUpLmxlYWtSZWYoKSk7CiB9
CiAKIFdLUmVjdFJlZiBXS1JlY3RDcmVhdGUoV0tSZWN0IHJlY3QpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKCZBUEk6OlJlY3Q6OmNyZWF0ZShyZWN0KS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKCZBUEk6OlJlY3Q6OmNyZWF0ZShyZWN0KS5sZWFrUmVmKCkpOwogfQogCiBXS1Np
emUgV0tTaXplR2V0VmFsdWUoV0tTaXplUmVmIHNpemUpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChz
aXplKS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChzaXplKS0+c2l6ZSgpOwog
fQogCiBXS1BvaW50IFdLUG9pbnRHZXRWYWx1ZShXS1BvaW50UmVmIHBvaW50KQogewotICAgIHJl
dHVybiB0b0ltcGwocG9pbnQpLT5wb2ludCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChw
b2ludCktPnBvaW50KCk7CiB9CiAKIFdLUmVjdCBXS1JlY3RHZXRWYWx1ZShXS1JlY3RSZWYgcmVj
dCkKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlY3QpLT5yZWN0KCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9JbXBsKHJlY3QpLT5yZWN0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLSW1hZ2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tJ
bWFnZS5jcHAKaW5kZXggNjhlNjM4MWQ4YzE4OTQ3ZmVlZDVhNmNkNzNjMjllMjFmMWJjN2I3OS4u
MzFiNmRhZWI4MzhmY2EzY2JlNjViZTNiNzA5NjkxOWY1YzAyMDBhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tJbWFnZS5jcHAKQEAgLTI5LDIwICsyOSwxOCBAQAogI2luY2x1ZGUgIldL
U2hhcmVkQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYkltYWdlLmgiCiAKLXVzaW5nIG5hbWVzcGFj
ZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLSW1hZ2VHZXRUeXBlSUQodm9pZCkKIHsKLSAgICByZXR1
cm4gdG9BUEkoV2ViSW1hZ2U6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6V2ViSW1hZ2U6OkFQSVR5cGUpOwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGUo
V0tTaXplIHNpemUsIFdLSW1hZ2VPcHRpb25zIG9wdGlvbnMpCiB7Ci0gICAgYXV0byB3ZWJJbWFn
ZSA9IFdlYkltYWdlOjpjcmVhdGUodG9JbnRTaXplKHNpemUpLCB0b0ltYWdlT3B0aW9ucyhvcHRp
b25zKSk7CisgICAgYXV0byB3ZWJJbWFnZSA9IFdlYktpdDo6V2ViSW1hZ2U6OmNyZWF0ZShXZWJL
aXQ6OnRvSW50U2l6ZShzaXplKSwgV2ViS2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAg
ICAgcmV0dXJuIHRvQVBJKHdlYkltYWdlLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6ZSBXS0ltYWdl
R2V0U2l6ZShXS0ltYWdlUmVmIGltYWdlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
aW1hZ2VSZWYpLT5zaXplKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9J
bXBsKGltYWdlUmVmKS0+c2l6ZSgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLTXV0YWJsZUFycmF5LmNwcAppbmRleCA1ZGM4NTI2MGZhZGJhZTMyZDk4YjAxNDg1YzkzN2Y0
ZGM2Y2IxOGE0Li45YTkzMWNjNjIyYTBjYmRmNzRmMDhiNTNjMDMzNWJmYzA4MzYxNmVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCkBAIC0yOSwy
MCArMjksMTggQEAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5o
IgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS011dGFibGVBcnJheVJlZiBXS011dGFi
bGVBcnJheUNyZWF0ZSgpCiB7Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V0tNdXRhYmxlQXJyYXlS
ZWY+KHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoKS5sZWFrUmVmKCkpKTsKKyAgICByZXR1cm4g
Y29uc3RfY2FzdDxXS011dGFibGVBcnJheVJlZj4oV2ViS2l0Ojp0b0FQSSgmQVBJOjpBcnJheTo6
Y3JlYXRlKCkubGVha1JlZigpKSk7CiB9CiAKIHZvaWQgV0tBcnJheUFwcGVuZEl0ZW0oV0tNdXRh
YmxlQXJyYXlSZWYgYXJyYXlSZWYsIFdLVHlwZVJlZiBpdGVtUmVmKQogewotICAgIHRvSW1wbChh
cnJheVJlZiktPmVsZW1lbnRzKCkuYXBwZW5kKHRvSW1wbChpdGVtUmVmKSk7CisgICAgV2ViS2l0
Ojp0b0ltcGwoYXJyYXlSZWYpLT5lbGVtZW50cygpLmFwcGVuZChXZWJLaXQ6OnRvSW1wbChpdGVt
UmVmKSk7CiB9CiAKIHZvaWQgV0tBcnJheVJlbW92ZUl0ZW1BdEluZGV4KFdLTXV0YWJsZUFycmF5
UmVmIGFycmF5UmVmLCBzaXplX3QgaW5kZXgpCiB7Ci0gICAgdG9JbXBsKGFycmF5UmVmKS0+ZWxl
bWVudHMoKS5yZW1vdmUoaW5kZXgpOworICAgIFdlYktpdDo6dG9JbXBsKGFycmF5UmVmKS0+ZWxl
bWVudHMoKS5yZW1vdmUoaW5kZXgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS011dGFibGVEaWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwCmluZGV4IDk2Yjg5YmQ0NTY0ODRkNTFjMGE3
ZmIzYTU3OWM5ZTVkOWNkYTg0N2QuLjdkYjIxMTY4MGUyODdmNDg1YmExMzZhOTFjMTdjOGE5Zjhk
NTc1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURp
Y3Rpb25hcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURp
Y3Rpb25hcnkuY3BwCkBAIC0yOSwxNSArMjksMTMgQEAKICNpbmNsdWRlICJBUElEaWN0aW9uYXJ5
LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
IFdLTXV0YWJsZURpY3Rpb25hcnlSZWYgV0tNdXRhYmxlRGljdGlvbmFyeUNyZWF0ZSgpCiB7Ci0g
ICAgcmV0dXJuIGNvbnN0X2Nhc3Q8V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4odG9BUEkoJkFQSTo6
RGljdGlvbmFyeTo6Y3JlYXRlKCkubGVha1JlZigpKSk7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8
V0tNdXRhYmxlRGljdGlvbmFyeVJlZj4oV2ViS2l0Ojp0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5Ojpj
cmVhdGUoKS5sZWFrUmVmKCkpKTsKIH0KIAogYm9vbCBXS0RpY3Rpb25hcnlTZXRJdGVtKFdLTXV0
YWJsZURpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZiwgV0tTdHJpbmdSZWYga2V5UmVmLCBXS1R5
cGVSZWYgaXRlbVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGRpY3Rpb25hcnlSZWYpLT5zZXQo
dG9JbXBsKGtleVJlZiktPnN0cmluZygpLCB0b0ltcGwoaXRlbVJlZikpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+c2V0KFdlYktpdDo6dG9JbXBsKGtleVJlZikt
PnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLTnVtYmVyLmNwcAppbmRleCA0MThlMDI5ZWE2N2RiZjNhNmExZmVjYzA3NTM4
N2NjNmEyMTc0ZDg2Li4xOWY5ZWUwNzk2YzNjNGE3NjJhOGUxNmQzZGFmM2QwZTI0N2JmYmUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS051bWJlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3BwCkBAIC0yOSw1MiArMjksNTAg
QEAKICNpbmNsdWRlICJBUElOdW1iZXIuaCIKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKIAotdXNp
bmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tCb29sZWFuR2V0VHlwZUlEKCkKIHsK
LSAgICByZXR1cm4gdG9BUEkoQVBJOjpCb29sZWFuOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2Vi
S2l0Ojp0b0FQSShBUEk6OkJvb2xlYW46OkFQSVR5cGUpOwogfQogCiBXS0Jvb2xlYW5SZWYgV0tC
b29sZWFuQ3JlYXRlKGJvb2wgdmFsdWUpCiB7CiAgICAgYXV0byBib29sZWFuT2JqZWN0ID0gQVBJ
OjpCb29sZWFuOjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQSSgmYm9vbGVhbk9iamVj
dC5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZib29sZWFuT2JqZWN0Lmxl
YWtSZWYoKSk7CiB9CiAKIGJvb2wgV0tCb29sZWFuR2V0VmFsdWUoV0tCb29sZWFuUmVmIGJvb2xl
YW5SZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChib29sZWFuUmVmKS0+dmFsdWUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoYm9vbGVhblJlZiktPnZhbHVlKCk7CiB9CiAKIFdLVHlwZUlE
IFdLRG91YmxlR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpEb3VibGU6OkFQ
SVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RG91YmxlOjpBUElUeXBlKTsK
IH0KIAogV0tEb3VibGVSZWYgV0tEb3VibGVDcmVhdGUoZG91YmxlIHZhbHVlKQogewogICAgIGF1
dG8gZG91YmxlT2JqZWN0ID0gQVBJOjpEb3VibGU6OmNyZWF0ZSh2YWx1ZSk7Ci0gICAgcmV0dXJu
IHRvQVBJKCZkb3VibGVPYmplY3QubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmZG91YmxlT2JqZWN0LmxlYWtSZWYoKSk7CiB9CiAKIGRvdWJsZSBXS0RvdWJsZUdldFZhbHVl
KFdLRG91YmxlUmVmIGRvdWJsZVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGRvdWJsZVJlZikt
PnZhbHVlKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRvdWJsZVJlZiktPnZhbHVlKCk7
CiB9CiAKIFdLVHlwZUlEIFdLVUludDY0R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEko
QVBJOjpVSW50NjQ6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6VUlu
dDY0OjpBUElUeXBlKTsKIH0KIAogV0tVSW50NjRSZWYgV0tVSW50NjRDcmVhdGUodWludDY0X3Qg
dmFsdWUpCiB7CiAgICAgYXV0byB1aW50NjRPYmplY3QgPSBBUEk6OlVJbnQ2NDo6Y3JlYXRlKHZh
bHVlKTsKLSAgICByZXR1cm4gdG9BUEkoJnVpbnQ2NE9iamVjdC5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZ1aW50NjRPYmplY3QubGVha1JlZigpKTsKIH0KIAogdWludDY0
X3QgV0tVSW50NjRHZXRWYWx1ZShXS1VJbnQ2NFJlZiB1aW50NjRSZWYpCiB7Ci0gICAgcmV0dXJu
IHRvSW1wbCh1aW50NjRSZWYpLT52YWx1ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh1
aW50NjRSZWYpLT52YWx1ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tQbHVnaW5JbmZvcm1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS1BsdWdpbkluZm9ybWF0aW9uLmNwcAppbmRleCBlM2FlNGY1ZjAzMjU4YWExMGE2YWI1YWJh
YjM0YzZhZjBiZGQzMzA5Li5kNWIzNDFiMWM5NjE5YzgxMzFhN2Q3ZmMzNzgzMmJhYjkxYzk5MjEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0
aW9uLmNwcApAQCAtMzAsMTMgKzMwLDExIEBACiAjaW5jbHVkZSAiUGx1Z2luSW5mb3JtYXRpb24u
aCIKICNpbmNsdWRlICJXS1NoYXJlZEFQSUNhc3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXko
KQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0
cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZUlk
ZW50aWZpZXJLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBz
dGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVn
aW5JbmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKSkubGVha1JlZigpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAt
NDUsOCArNDMsOCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRp
ZmllcktleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktl
eSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6
U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVuZGxl
VmVyc2lvbktleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0
YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdp
bkluZm9ybWF0aW9uQnVuZGxlVmVyc2lvbktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC01NSw4
ICs1Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5
KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVTaG9ydFZlcnNpb25LZXko
KQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0
cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVNo
b3J0VmVyc2lvbktleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBs
dWdpbkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCkpLmxlYWtSZWYoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
QEAgLTY1LDggKzYzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVNo
b3J0VmVyc2lvbktleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgp
CiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3Ry
aW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uUGF0aEtleSgp
KS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0
cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9u
UGF0aEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAj
ZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC03NSw4ICs3Myw4IEBAIFdLU3RyaW5nUmVm
IFdLUGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3Jt
YXRpb25EaXNwbGF5TmFtZUtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdp
bkluZm9ybWF0aW9uRGlzcGxheU5hbWVLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQ
SSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVh
dGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKQEAgLTg1LDggKzgzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRp
c3BsYXlOYW1lS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25EZWZhdWx0TG9h
ZFBvbGljeUtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3Rh
dGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0
aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgm
a2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
V2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkpLmxlYWtSZWYo
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7
CiAjZW5kaWYKQEAgLTk1LDggKzkzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlv
bkRlZmF1bHRMb2FkUG9saWN5S2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25V
cGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJsZUtleSgpCiB7CiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkg
PSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uVXBkYXRlUGFzdExhc3RCbG9j
a2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0
b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpj
cmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBhc3RMYXN0QmxvY2tlZFZlcnNp
b25Jc0tub3duQXZhaWxhYmxlS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEwNSw4ICsxMDMs
OCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uVXBkYXRlUGFzdExhc3RCbG9ja2Vk
VmVyc2lvbklzS25vd25BdmFpbGFibGVLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1h
dGlvbkhhc1NhbmRib3hQcm9maWxlS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
cGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAg
cmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpT
dHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVL
ZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTE1LDggKzExMyw4IEBAIFdLU3RyaW5nUmVmIFdL
UGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpCiBXS1N0cmluZ1JlZiBXS1Bs
dWdpbkluZm9ybWF0aW9uRnJhbWVVUkxLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVH
SU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0
ZShwbHVnaW5JbmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4g
dG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6
Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25GcmFtZVVSTEtleSgpKS5sZWFrUmVmKCk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwog
I2VuZGlmCkBAIC0xMjUsOCArMTIzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlv
bkZyYW1lVVJMS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtl
eSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6
U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uTUlNRVR5
cGVLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMg
QVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZv
cm1hdGlvbk1JTUVUeXBlS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEzNSw4ICsxMzMsOCBA
QCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKQogV0tTdHJpbmdS
ZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQ
RV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6
OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKSkubGVha1JlZigpOwotICAgIHJl
dHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3Ry
aW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKSkubGVha1Jl
ZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4g
MDsKICNlbmRpZgpAQCAtMTQ1LDggKzE0Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3Jt
YXRpb25QYWdlVVJMS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QbHVnaW5z
cGFnZUF0dHJpYnV0ZVVSTEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkp
Ci0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdp
bkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKSkubGVha1JlZigpOwotICAg
IHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6
U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmli
dXRlVVJMS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsK
ICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTE1NSw4ICsxNTMsOCBAQCBXS1N0cmlu
Z1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKQogV0tT
dHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpCiB7CiAjaWYgRU5BQkxF
KE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6
OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uUGx1Z2luVVJMS2V5KCkpLmxlYWtSZWYo
KTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkg
PSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxL
ZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UK
ICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTY1LDggKzE2Myw4IEBAIFdLU3RyaW5nUmVmIFdL
UGx1Z2luSW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnSW5JbmZv
cm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9Q
TFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNy
ZWF0ZShwbHVnSW5JbmZvcm1hdGlvblJlcGxhY2VtZW50T2JzY3VyZWRLZXkoKSkubGVha1JlZigp
OwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9
IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnSW5JbmZvcm1hdGlvblJlcGxhY2VtZW50
T2JzY3VyZWRLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkp
OwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1JlbmRlckxheWVyLmNwcAppbmRleCAyMDcyNmY0ZWUyOTJkOTdhMGFlZjVjNGJhMmE2
YTNmZTI0MGEwOTRkLi45NGM4NWU5MTNmOWNkNTA1YTQzYjQzODBmMDM2OTM5MjcyNzRhN2QyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVyLmNwcApAQCAtMzAs
ODAgKzMwLDc3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV2ViUmVuZGVy
TGF5ZXIuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS1JlbmRlckxheWVyR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4g
dG9BUEkoV2ViUmVuZGVyTGF5ZXI6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6OkFQSVR5cGUpOwogfQogCiBXS1JlbmRlck9iamVjdFJl
ZiBXS1JlbmRlckxheWVyR2V0UmVuZGVyZXIoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJl
ZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVuZGVyZXIo
KSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVu
ZGVyZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyTGF5ZXJDb3B5UmVuZGVyZXJOYW1l
KFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVk
QVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRlcmVyKCktPm5hbWUoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5y
ZW5kZXJlcigpLT5uYW1lKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlckxheWVyQ29weUVs
ZW1lbnRUYWdOYW1lKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgV2Vi
UmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gdG9JbXBsKHJlbmRlckxheWVyUmVmKTsKKyAgICBX
ZWJLaXQ6OldlYlJlbmRlckxheWVyKiByZW5kZXJMYXllciA9IFdlYktpdDo6dG9JbXBsKHJlbmRl
ckxheWVyUmVmKTsKICAgICBpZiAoIXJlbmRlckxheWVyLT5yZW5kZXJlcigpLT5lbGVtZW50VGFn
TmFtZSgpLmlzTnVsbCgpKQotICAgICAgICByZXR1cm4gdG9Db3BpZWRBUEkocmVuZGVyTGF5ZXIt
PnJlbmRlcmVyKCktPmVsZW1lbnRUYWdOYW1lKCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudFRhZ05hbWUoKSk7CiAK
ICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tSZW5kZXJMYXllckNvcHlF
bGVtZW50SUQoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBXZWJSZW5k
ZXJMYXllciogcmVuZGVyTGF5ZXIgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOworICAgIFdlYktp
dDo6V2ViUmVuZGVyTGF5ZXIqIHJlbmRlckxheWVyID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5
ZXJSZWYpOwogICAgIGlmICghcmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRJRCgpLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gdG9Db3BpZWRBUEkocmVuZGVyTGF5ZXItPnJlbmRlcmVy
KCktPmVsZW1lbnRJRCgpKTsKKyAgICAgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkocmVu
ZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRJRCgpKTsKIAogICAgIHJldHVybiBudWxscHRy
OwogfQogCiBXS0FycmF5UmVmIFdLUmVuZGVyTGF5ZXJHZXRFbGVtZW50Q2xhc3NOYW1lcyhXS1Jl
bmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwo
cmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpLT5lbGVtZW50Q2xhc3NOYW1lcygpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRl
cmVyKCktPmVsZW1lbnRDbGFzc05hbWVzKCkpOwogfQogCiBXS1JlY3QgV0tSZW5kZXJMYXllckdl
dEFic29sdXRlQm91bmRzKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAg
SW50UmVjdCBib3VuZHMgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5hYnNvbHV0ZUJvdW5kaW5n
Qm94KCk7CisgICAgV2ViQ29yZTo6SW50UmVjdCBib3VuZHMgPSBXZWJLaXQ6OnRvSW1wbChyZW5k
ZXJMYXllclJlZiktPmFic29sdXRlQm91bmRpbmdCb3goKTsKICAgICByZXR1cm4gV0tSZWN0TWFr
ZShib3VuZHMueCgpLCBib3VuZHMueSgpLCBib3VuZHMud2lkdGgoKSwgYm91bmRzLmhlaWdodCgp
KTsKIH0KIAogYm9vbCBXS1JlbmRlckxheWVySXNDbGlwcGluZyhXS1JlbmRlckxheWVyUmVmIHJl
bmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0Ns
aXBwaW5nKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+aXND
bGlwcGluZygpOwogfQogCiBib29sIFdLUmVuZGVyTGF5ZXJJc0NsaXBwZWQoV0tSZW5kZXJMYXll
clJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlckxheWVyUmVm
KS0+aXNDbGlwcGVkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVm
KS0+aXNDbGlwcGVkKCk7CiB9CiAKIGJvb2wgV0tSZW5kZXJMYXllcklzUmVmbGVjdGlvbihXS1Jl
bmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVuZGVy
TGF5ZXJSZWYpLT5pc1JlZmxlY3Rpb24oKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVu
ZGVyTGF5ZXJSZWYpLT5pc1JlZmxlY3Rpb24oKTsKIH0KIAogV0tDb21wb3NpdGluZ0xheWVyVHlw
ZSBXS1JlbmRlckxheWVyR2V0Q29tcG9zaXRpbmdMYXllclR5cGUoV0tSZW5kZXJMYXllclJlZiBy
ZW5kZXJMYXllclJlZikKIHsKLSAgICBzd2l0Y2ggKHRvSW1wbChyZW5kZXJMYXllclJlZiktPmNv
bXBvc2l0aW5nTGF5ZXJUeXBlKCkpIHsKLSAgICBjYXNlIFdlYlJlbmRlckxheWVyOjpOb25lOgor
ICAgIHN3aXRjaCAoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5jb21wb3NpdGluZ0xh
eWVyVHlwZSgpKSB7CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpOb25lOgogICAg
ICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVOb25lOwotICAgIGNhc2UgV2ViUmVu
ZGVyTGF5ZXI6Ok5vcm1hbDoKKyAgICBjYXNlIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6Ok5vcm1h
bDoKICAgICAgICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlTm9ybWFsOwotICAgIGNh
c2UgV2ViUmVuZGVyTGF5ZXI6OlRpbGVkOgorICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXll
cjo6VGlsZWQ6CiAgICAgICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xheWVyVHlwZVRpbGVkOwot
ICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6Ok1lZGlhOgorICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5k
ZXJMYXllcjo6TWVkaWE6CiAgICAgICAgIHJldHVybiBrV0tDb21wb3NpdGluZ0xheWVyVHlwZU1l
ZGlhOwotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6OkNvbnRhaW5lcjoKKyAgICBjYXNlIFdlYktp
dDo6V2ViUmVuZGVyTGF5ZXI6OkNvbnRhaW5lcjoKICAgICAgICAgcmV0dXJuIGtXS0NvbXBvc2l0
aW5nTGF5ZXJUeXBlQ29udGFpbmVyOwogICAgIH0KIApAQCAtMTEzLDI1ICsxMTAsMjUgQEAgV0tD
b21wb3NpdGluZ0xheWVyVHlwZSBXS1JlbmRlckxheWVyR2V0Q29tcG9zaXRpbmdMYXllclR5cGUo
V0tSZW5kZXJMYXllclJlZiByZW4KIAogV0tfRVhQT1JUIGRvdWJsZSBXS1JlbmRlckxheWVyR2V0
QmFja2luZ1N0b3JlTWVtb3J5RXN0aW1hdGUoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJl
ZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlckxheWVyUmVmKS0+YmFja2luZ1N0b3JlTWVt
b3J5RXN0aW1hdGUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYp
LT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpOwogfQogCiBXS0FycmF5UmVmIFdLUmVuZGVy
TGF5ZXJHZXROZWdhdGl2ZVpPcmRlckxpc3QoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJl
ZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+bmVnYXRpdmVa
T3JkZXJMaXN0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJl
bmRlckxheWVyUmVmKS0+bmVnYXRpdmVaT3JkZXJMaXN0KCkpOwogfQogCiBXS0FycmF5UmVmIFdL
UmVuZGVyTGF5ZXJHZXROb3JtYWxGbG93TGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVy
UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5ub3JtYWxG
bG93TGlzdCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5k
ZXJMYXllclJlZiktPm5vcm1hbEZsb3dMaXN0KCkpOwogfQogCiBXS0FycmF5UmVmIFdLUmVuZGVy
TGF5ZXJHZXRQb3NpdGl2ZVpPcmRlckxpc3QoV0tSZW5kZXJMYXllclJlZiByZW5kZXJMYXllclJl
ZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cG9zaXRpdmVa
T3JkZXJMaXN0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJl
bmRlckxheWVyUmVmKS0+cG9zaXRpdmVaT3JkZXJMaXN0KCkpOwogfQogCiBXS1JlbmRlckxheWVy
UmVmIFdLUmVuZGVyTGF5ZXJHZXRGcmFtZUNvbnRlbnRzTGF5ZXIoV0tSZW5kZXJMYXllclJlZiBy
ZW5kZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKHJlbmRlckxheWVyUmVm
KS0+ZnJhbWVDb250ZW50c0xheWVyKCkpOworICAgIHJldHVybiB0b0FQSShXZWJLaXQ6OnRvSW1w
bChyZW5kZXJMYXllclJlZiktPmZyYW1lQ29udGVudHNMYXllcigpKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcAppbmRleCBjZmY3MWM3Y2Q4Njg4
ZjUxNDM3YWVkNzRhMzg0NzVhYTYyZjc4Y2IyLi5iYTEyMzkwYjYzMjg3MWFhNGNhMWE1MzZmYjg4
ZmFhZDYxMzVhNDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1Jl
bmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tSZW5kZXJP
YmplY3QuY3BwCkBAIC0zMCw2OSArMzAsNjYgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNp
bmNsdWRlICJXZWJSZW5kZXJPYmplY3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci11
c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1JlbmRlck9iamVjdEdldFR5cGVJ
RCgpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKFdlYlJlbmRlck9iamVjdDo6QVBJVHlwZSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJSZW5kZXJPYmplY3Q6OkFQSVR5cGUpOwog
fQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlOYW1lKFdLUmVuZGVyT2JqZWN0UmVm
IHJlbmRlck9iamVjdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlbmRl
ck9iamVjdFJlZiktPm5hbWUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2Vi
S2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+bmFtZSgpKTsKIH0KIAogV0tTdHJpbmdSZWYg
V0tSZW5kZXJPYmplY3RDb3B5VGV4dFNuaXBwZXQoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2Jq
ZWN0UmVmKQogewotICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gdG9JbXBsKHJl
bmRlck9iamVjdFJlZik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVj
dCA9IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZik7CiAgICAgaWYgKCFyZW5kZXJPYmpl
Y3QtPnRleHRTbmlwcGV0KCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0b0NvcGllZEFQSShy
ZW5kZXJPYmplY3QtPnRleHRTbmlwcGV0KCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShyZW5kZXJPYmplY3QtPnRleHRTbmlwcGV0KCkpOwogCiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIHVuc2lnbmVkIFdLUmVuZGVyT2JqZWN0R2V0VGV4dExlbmd0aChXS1JlbmRlck9i
amVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJPYmpl
Y3RSZWYpLT50ZXh0TGVuZ3RoKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlbmRlck9i
amVjdFJlZiktPnRleHRMZW5ndGgoKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tSZW5kZXJPYmplY3RD
b3B5RWxlbWVudFRhZ05hbWUoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewot
ICAgIFdlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gdG9JbXBsKHJlbmRlck9iamVjdFJl
Zik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IFdlYktpdDo6
dG9JbXBsKHJlbmRlck9iamVjdFJlZik7CiAgICAgaWYgKCFyZW5kZXJPYmplY3QtPmVsZW1lbnRU
YWdOYW1lKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJPYmpl
Y3QtPmVsZW1lbnRUYWdOYW1lKCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShyZW5kZXJPYmplY3QtPmVsZW1lbnRUYWdOYW1lKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7
CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyT2JqZWN0Q29weUVsZW1lbnRJRChXS1JlbmRlck9i
amVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgV2ViUmVuZGVyT2JqZWN0KiByZW5kZXJP
YmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKKyAgICBXZWJLaXQ6OldlYlJlbmRlck9i
amVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKICAg
ICBpZiAoIXJlbmRlck9iamVjdC0+ZWxlbWVudElEKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0b0NvcGllZEFQSShyZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKKyAgICAgICAgcmV0dXJu
IFdlYktpdDo6dG9Db3BpZWRBUEkocmVuZGVyT2JqZWN0LT5lbGVtZW50SUQoKSk7CiAKICAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tBcnJheVJlZiBXS1JlbmRlck9iamVjdEdldEVsZW1lbnRD
bGFzc05hbWVzKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmVsZW1lbnRDbGFzc05hbWVzKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZikt
PmVsZW1lbnRDbGFzc05hbWVzKCkpOwogfQogCiBXS1BvaW50IFdLUmVuZGVyT2JqZWN0R2V0QWJz
b2x1dGVQb3NpdGlvbihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAg
SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiA9IHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5hYnNv
bHV0ZVBvc2l0aW9uKCk7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgYWJzb2x1dGVQb3NpdGlvbiA9
IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmFic29sdXRlUG9zaXRpb24oKTsKICAg
ICByZXR1cm4gV0tQb2ludE1ha2UoYWJzb2x1dGVQb3NpdGlvbi54KCksIGFic29sdXRlUG9zaXRp
b24ueSgpKTsKIH0KIAogV0tSZWN0IFdLUmVuZGVyT2JqZWN0R2V0RnJhbWVSZWN0KFdLUmVuZGVy
T2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBJbnRSZWN0IGZyYW1lUmVjdCA9IHRv
SW1wbChyZW5kZXJPYmplY3RSZWYpLT5mcmFtZVJlY3QoKTsKKyAgICBXZWJDb3JlOjpJbnRSZWN0
IGZyYW1lUmVjdCA9IFdlYktpdDo6dG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmZyYW1lUmVjdCgp
OwogICAgIHJldHVybiBXS1JlY3RNYWtlKGZyYW1lUmVjdC54KCksIGZyYW1lUmVjdC55KCksIGZy
YW1lUmVjdC53aWR0aCgpLCBmcmFtZVJlY3QuaGVpZ2h0KCkpOwogfQogCiBXS0FycmF5UmVmIFdL
UmVuZGVyT2JqZWN0R2V0Q2hpbGRyZW4oV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVm
KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+Y2hpbGRyZW4o
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0
UmVmKS0+Y2hpbGRyZW4oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLU2VjdXJpdHlPcmlnaW5SZWYuY3BwCmluZGV4IGJjZjk1NWE2NmNiNzY4MDU0MmMyY2ZjYWRj
YzRmM2YwYmQ1M2QxNTEuLjVlNmJlNzRiOGRhNmQ0YjkzNjAzNzkwY2E0YWQxNzZkMWY2NjJjNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5S
ZWYuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5S
ZWYuY3BwCkBAIC0zMCw1MyArMzAsNTEgQEAKICNpbmNsdWRlICJXS0FQSUNhc3QuaCIKICNpbmNs
dWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS1NlY3VyaXR5T3JpZ2luR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1
cm4gdG9BUEkoQVBJOjpTZWN1cml0eU9yaWdpbjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoQVBJOjpTZWN1cml0eU9yaWdpbjo6QVBJVHlwZSk7CiB9CiAKIFdLU2VjdXJpdHlP
cmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21TdHJpbmcoV0tTdHJpbmdSZWYgc3Ry
aW5nKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKHRvSW1wbChzdHJpbmcpLT5z
dHJpbmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6U2Vj
dXJpdHlPcmlnaW46OmNyZWF0ZShXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlRnJvbVN0
cmluZyhXZWJLaXQ6OnRvSW1wbChzdHJpbmcpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CiB9CiAK
IFdLU2VjdXJpdHlPcmlnaW5SZWYgV0tTZWN1cml0eU9yaWdpbkNyZWF0ZUZyb21EYXRhYmFzZUlk
ZW50aWZpZXIoV0tTdHJpbmdSZWYgaWRlbnRpZmllcikKIHsKLSAgICBhdXRvIG9yaWdpbiA9IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcih0b0ltcGwo
aWRlbnRpZmllciktPnN0cmluZygpKTsKKyAgICBhdXRvIG9yaWdpbiA9IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmllcihXZWJLaXQ6OnRvSW1wbChpZGVu
dGlmaWVyKS0+c3RyaW5nKCkpOwogICAgIGlmICghb3JpZ2luKQogICAgICAgICByZXR1cm4gbnVs
bHB0cjsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShvcmln
aW4udmFsdWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJL
aXQ6OnRvQVBJKCZBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUob3JpZ2luLnZhbHVlKCkuc2Vj
dXJpdHlPcmlnaW4oKSkubGVha1JlZigpKTsKIH0KIAogV0tTZWN1cml0eU9yaWdpblJlZiBXS1Nl
Y3VyaXR5T3JpZ2luQ3JlYXRlKFdLU3RyaW5nUmVmIHByb3RvY29sLCBXS1N0cmluZ1JlZiBob3N0
LCBpbnQgcG9ydCkKIHsKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gQVBJOjpTZWN1cml0eU9y
aWdpbjo6Y3JlYXRlKHRvSW1wbChwcm90b2NvbCktPnN0cmluZygpLCB0b0ltcGwoaG9zdCktPnN0
cmluZygpLCBwb3J0KTsKLSAgICByZXR1cm4gdG9BUEkoJnNlY3VyaXR5T3JpZ2luLmxlYWtSZWYo
KSk7CisgICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IEFQSTo6U2VjdXJpdHlPcmlnaW46OmNyZWF0
ZShXZWJLaXQ6OnRvSW1wbChwcm90b2NvbCktPnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbChob3N0
KS0+c3RyaW5nKCksIHBvcnQpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZzZWN1cml0eU9y
aWdpbi5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1NlY3VyaXR5T3JpZ2luQ29weURh
dGFiYXNlSWRlbnRpZmllcihXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewot
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9y
aWdpbigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdp
bigpLmRhdGEoKS5kYXRhYmFzZUlkZW50aWZpZXIoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2Vj
dXJpdHlPcmlnaW5Db3B5VG9TdHJpbmcoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdp
bikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2Vj
dXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkudG9TdHJp
bmcoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5UHJvdG9jb2woV0tT
ZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wcm90b2NvbCgpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9y
aWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucHJvdG9jb2woKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdL
U2VjdXJpdHlPcmlnaW5Db3B5SG9zdChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2lu
KQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1
cml0eU9yaWdpbigpLmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2Vi
S2l0Ojp0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLmhvc3QoKSk7CiB9
CiAKIHVuc2lnbmVkIHNob3J0IFdLU2VjdXJpdHlPcmlnaW5HZXRQb3J0KFdLU2VjdXJpdHlPcmln
aW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzZWN1cml0eU9yaWdp
biktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVlX29yKDApOworICAgIHJldHVybiBXZWJL
aXQ6OnRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkucG9ydCgpLnZhbHVl
X29yKDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZXJp
YWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IGFhZDhlYWU0NDdlYTEzMTIzYTk2ZjI2ODZmZmU2
NmU0OTZmZDM5ZDguLmM0ZGNiYTNmZWE0ZGY1YzUyMzkyYjc3MWMwMDdjM2E5MDI5NzcxNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHAKQEAgLTI5LDIwICsyOSwxOCBAQAogI2luY2x1ZGUgIkFQSVNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwotCiBXS1R5cGVJRCBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZUdldFR5cGVJRCgpCiB7
Ci0gICAgcmV0dXJuIHRvQVBJKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBUElUeXBlKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6QVBJ
VHlwZSk7CiB9CiAKIFdLU2VyaWFsaXplZFNjcmlwdFZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlw
dFZhbHVlQ3JlYXRlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1Zh
bHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgYXV0byBzZXJpYWxpemVkVmFsdWUgPSBBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlKGNvbnRleHQsIHZhbHVlLCBleGNlcHRpb24pOwot
ICAgIHJldHVybiB0b0FQSShzZXJpYWxpemVkVmFsdWUubGVha1JlZigpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSShzZXJpYWxpemVkVmFsdWUubGVha1JlZigpKTsKIH0KIAogSlNWYWx1ZVJl
ZiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZURlc2VyaWFsaXplKFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlUmVmIHNjcmlwdFZhbHVlUmVmLCBKU0NvbnRleHRSZWYgY29udGV4dFJlZiwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQogewotICAgIHJldHVybiB0b0ltcGwoc2NyaXB0VmFsdWVSZWYpLT5kZXNl
cmlhbGl6ZShjb250ZXh0UmVmLCBleGNlcHRpb24pOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1w
bChzY3JpcHRWYWx1ZVJlZiktPmRlc2VyaWFsaXplKGNvbnRleHRSZWYsIGV4Y2VwdGlvbik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNzY3YWE4ZDkxNGIw
Y2Y3NTE5NmUyMGMzNjNiODA2MzhmZmQ3ZDNkOS4uMDJhYTRjYzBmMGI2NjczZTIzNmEwN2E4MWM0
NmZlMzllYWI3ZmVkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tT
dHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcApA
QCAtMzEsMjYgKzMxLDI0IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5pdGlhbGl6ZVRo
cmVhZGluZy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL09wYXF1ZUpTU3RyaW5nLmg+CiAK
LXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU3RyaW5nR2V0VHlwZUlEKCkK
IHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpTdHJpbmc6OkFQSVR5cGUpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKEFQSTo6U3RyaW5nOjpBUElUeXBlKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tT
dHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29uc3QgY2hhciogc3RyaW5nKQogewotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpTdHJpbmc6OmNyZWF0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3Ry
aW5nKSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpTdHJpbmc6
OmNyZWF0ZShXVEY6OlN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSkubGVha1JlZigpKTsKIH0KIAog
Ym9vbCBXS1N0cmluZ0lzRW1wdHkoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewotICAgIHJldHVy
biB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmlzRW1wdHkoKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmlzRW1wdHkoKTsKIH0KIAog
c2l6ZV90IFdLU3RyaW5nR2V0TGVuZ3RoKFdLU3RyaW5nUmVmIHN0cmluZ1JlZikKIHsKLSAgICBy
ZXR1cm4gdG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5sZW5ndGgoKTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0aCgpOwogfQog
CiBzaXplX3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgV0tD
aGFyKiBidWZmZXIsIHNpemVfdCBidWZmZXJMZW5ndGgpCkBAIC01OCw3ICs1Niw3IEBAIHNpemVf
dCBXS1N0cmluZ0dldENoYXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1
ZmZlciwgc2l6ZV90IGJ1ZmZlCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV0tDaGFyKSA9PSBz
aXplb2YoVUNoYXIpLCAiU2l6ZSBvZiBXS0NoYXIgbXVzdCBtYXRjaCBzaXplIG9mIFVDaGFyIik7
CiAKICAgICB1bnNpZ25lZCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCA9IHN0ZDo6bWluPHNpemVfdD4o
YnVmZmVyTGVuZ3RoLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAg
IGF1dG8gc3Vic3RyaW5nID0gdG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5zdWJzdHJp
bmcoMCwgdW5zaWduZWRCdWZmZXJMZW5ndGgpOworICAgIGF1dG8gc3Vic3RyaW5nID0gV2ViS2l0
Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0cmluZygwLCB1bnNpZ25lZEJ1
ZmZlckxlbmd0aCk7CiAKICAgICBzdWJzdHJpbmcuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
cmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlcikpOwogICAgIHJldHVybiBzdWJzdHJpbmcu
bGVuZ3RoKCk7CkBAIC02Niw3ICs2NCw3IEBAIHNpemVfdCBXS1N0cmluZ0dldENoYXJhY3RlcnMo
V0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlCiAKIHNp
emVfdCBXS1N0cmluZ0dldE1heGltdW1VVEY4Q1N0cmluZ1NpemUoV0tTdHJpbmdSZWYgc3RyaW5n
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0
aCgpICogMyArIDE7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmlu
Z1ZpZXcoKS5sZW5ndGgoKSAqIDMgKyAxOwogfQogCiBlbnVtIFN0cmljdFR5cGUgeyBOb25TdHJp
Y3QgPSBmYWxzZSwgU3RyaWN0ID0gdHJ1ZSB9OwpAQCAtNzcsNyArNzUsNyBAQCBzaXplX3QgV0tT
dHJpbmdHZXRVVEY4Q1N0cmluZ0ltcGwoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZm
ZXIsIHNpemVfdCBidQogICAgIGlmICghYnVmZmVyU2l6ZSkKICAgICAgICAgcmV0dXJuIDA7CiAK
LSAgICBhdXRvIHN0cmluZ1ZpZXcgPSB0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpOwor
ICAgIGF1dG8gc3RyaW5nVmlldyA9IFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1Zp
ZXcoKTsKIAogICAgIGNoYXIqIHAgPSBidWZmZXI7CiAgICAgV1RGOjpVbmljb2RlOjpDb252ZXJz
aW9uUmVzdWx0IHJlc3VsdDsKQEAgLTEwOSwzMiArMTA3LDMyIEBAIHNpemVfdCBXS1N0cmluZ0dl
dFVURjhDU3RyaW5nTm9uU3RyaWN0KFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgY2hhciogYnVmZmVy
LCBzaXplCiAKIGJvb2wgV0tTdHJpbmdJc0VxdWFsKFdLU3RyaW5nUmVmIGFSZWYsIFdLU3RyaW5n
UmVmIGJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChhUmVmKS0+c3RyaW5nVmlldygpID09IHRv
SW1wbChiUmVmKS0+c3RyaW5nVmlldygpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChhUmVm
KS0+c3RyaW5nVmlldygpID09IFdlYktpdDo6dG9JbXBsKGJSZWYpLT5zdHJpbmdWaWV3KCk7CiB9
CiAKIGJvb2wgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZyhXS1N0cmluZ1JlZiBhUmVmLCBj
b25zdCBjaGFyKiBiKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRkIGEgZmFzdCBwYXRo
IHRoYXQgYXZvaWRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIHN0cmluZyBpcyBhbGwgQVND
SUk/CiAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBldmVuIHRoZSBnZW5lcmFsIGNhc2UgbW9yZSBl
ZmZpY2llbnRseSBpZiB3ZSB3cml0ZSBhIGZ1bmN0aW9uIGluIFN0cmluZ1ZpZXcgdGhhdCB1bmRl
cnN0YW5kcyBVVEYtOCBDIHN0cmluZ3MuCi0gICAgcmV0dXJuIHRvSW1wbChhUmVmKS0+c3RyaW5n
VmlldygpID09IFdURjo6U3RyaW5nOjpmcm9tVVRGOChiKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSA9PSBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYik7CiB9
CiAKIGJvb2wgV0tTdHJpbmdJc0VxdWFsVG9VVEY4Q1N0cmluZ0lnbm9yaW5nQ2FzZShXS1N0cmlu
Z1JlZiBhUmVmLCBjb25zdCBjaGFyKiBiKQogewogICAgIC8vIEZJWE1FOiBTaG91bGQgd2UgYWRk
IGEgZmFzdCBwYXRoIHRoYXQgYXZvaWRzIG1lbW9yeSBhbGxvY2F0aW9uIHdoZW4gdGhlIHN0cmlu
ZyBpcyBhbGwgQVNDSUk/CiAgICAgLy8gRklYTUU6IFdlIGNhbiBkbyBldmVuIHRoZSBnZW5lcmFs
IGNhc2UgbW9yZSBlZmZpY2llbnRseSBpZiB3ZSB3cml0ZSBhIGZ1bmN0aW9uIGluIFN0cmluZ1Zp
ZXcgdGhhdCB1bmRlcnN0YW5kcyBVVEYtOCBDIHN0cmluZ3MuCi0gICAgcmV0dXJuIGVxdWFsSWdu
b3JpbmdBU0NJSUNhc2UodG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCksIFdURjo6U3RyaW5nOjpm
cm9tVVRGOChiKSk7CisgICAgcmV0dXJuIGVxdWFsSWdub3JpbmdBU0NJSUNhc2UoV2ViS2l0Ojp0
b0ltcGwoYVJlZiktPnN0cmluZ1ZpZXcoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGIpKTsKIH0K
IAogV0tTdHJpbmdSZWYgV0tTdHJpbmdDcmVhdGVXaXRoSlNTdHJpbmcoSlNTdHJpbmdSZWYganNT
dHJpbmdSZWYpCiB7CiAgICAgYXV0byBhcGlTdHJpbmcgPSBqc1N0cmluZ1JlZiA/IEFQSTo6U3Ry
aW5nOjpjcmVhdGUoanNTdHJpbmdSZWYtPnN0cmluZygpKSA6IEFQSTo6U3RyaW5nOjpjcmVhdGVO
dWxsKCk7CiAKLSAgICByZXR1cm4gdG9BUEkoJmFwaVN0cmluZy5sZWFrUmVmKCkpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKCZhcGlTdHJpbmcubGVha1JlZigpKTsKIH0KIAogSlNTdHJpbmdS
ZWYgV0tTdHJpbmdDb3B5SlNTdHJpbmcoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewogICAgIEpT
Qzo6aW5pdGlhbGl6ZVRocmVhZGluZygpOwotICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5
Q3JlYXRlKHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmcoKSkubGVha1JlZigpOworICAgIHJldHVy
biBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0
cmluZygpKS5sZWFrUmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1R5cGUuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tUeXBlLmNwcApp
bmRleCBmZDIwZTZmZmYxZTA0ZjA0YTdlOTljZDU1ZDQ4NmE0ZDEzZjlhNjkxLi40MTY5ZGE4NGZl
N2M3NGVmNTg0ZTVmMmVjNTkxYjllZTRkZTZmZGE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLVHlwZS5jcHAKQEAgLTI5LDIxICsyOSwxOSBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgog
I2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5
cGVJRCBXS0dldFR5cGVJRChXS1R5cGVSZWYgdHlwZVJlZikKIHsKLSAgICByZXR1cm4gdG9BUEko
dG9JbXBsKHR5cGVSZWYpLT50eXBlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdlYktp
dDo6dG9JbXBsKHR5cGVSZWYpLT50eXBlKCkpOwogfQogCiBXS1R5cGVSZWYgV0tSZXRhaW4oV0tU
eXBlUmVmIHR5cGVSZWYpCiB7Ci0gICAgdG9JbXBsKHR5cGVSZWYpLT5yZWYoKTsKKyAgICBXZWJL
aXQ6OnRvSW1wbCh0eXBlUmVmKS0+cmVmKCk7CiAKICAgICByZXR1cm4gdHlwZVJlZjsKIH0KIAog
dm9pZCBXS1JlbGVhc2UoV0tUeXBlUmVmIHR5cGVSZWYpCiB7Ci0gICAgdG9JbXBsKHR5cGVSZWYp
LT5kZXJlZigpOworICAgIFdlYktpdDo6dG9JbXBsKHR5cGVSZWYpLT5kZXJlZigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCmluZGV4IGYxYTFlYTU0NjgyMDgxNzEzMTIzYjE3
MjBmYjM0YmZlZTI1ZDVjYzguLjE3YzlhNjJkMzE3OGQxYjA1MGYxZDdkMTY5MTU3ODQwZDk2MDli
NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAKQEAgLTI4LDQ5ICsyOCw0NyBA
QAogCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
IFdLVHlwZUlEIFdLVVJMR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpVUkw6
OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6VVJMOjpBUElUeXBlKTsK
IH0KIAogV0tVUkxSZWYgV0tVUkxDcmVhdGVXaXRoVVRGOENTdHJpbmcoY29uc3QgY2hhciogc3Ry
aW5nKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkw6OmNyZWF0ZShTdHJpbmc6OmZyb21V
VEY4KHN0cmluZykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6
VVJMOjpjcmVhdGUoU3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkpOwogfQogCiBX
S1VSTFJlZiBXS1VSTENyZWF0ZVdpdGhCYXNlVVJMKFdLVVJMUmVmIGJhc2VVUkwsIGNvbnN0IGNo
YXIqIHJlbGF0aXZlKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpVUkw6OmNyZWF0ZSh0b0lt
cGwoYmFzZVVSTCksIFN0cmluZzo6ZnJvbVVURjgocmVsYXRpdmUpKS5sZWFrUmVmKCkpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKFdlYktpdDo6dG9JbXBsKGJh
c2VVUkwpLCBTdHJpbmc6OmZyb21VVEY4KHJlbGF0aXZlKSkubGVha1JlZigpKTsKIH0KIAogV0tT
dHJpbmdSZWYgV0tVUkxDb3B5U3RyaW5nKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9D
b3BpZWRBUEkodG9JbXBsKHVybCktPnN0cmluZygpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmwpLT5zdHJpbmcoKSk7CiB9CiAKIGJvb2wgV0tVUkxJ
c0VxdWFsKFdLVVJMUmVmIGEsIFdLVVJMUmVmIGIpCiB7Ci0gICAgcmV0dXJuIEFQSTo6VVJMOjpl
cXVhbHMoKnRvSW1wbChhKSwgKnRvSW1wbChiKSk7CisgICAgcmV0dXJuIEFQSTo6VVJMOjplcXVh
bHMoKldlYktpdDo6dG9JbXBsKGEpLCAqV2ViS2l0Ojp0b0ltcGwoYikpOwogfQogCiBXS1N0cmlu
Z1JlZiBXS1VSTENvcHlIb3N0TmFtZShXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbCh1cmwpLT5ob3N0KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVk
QVBJKFdlYktpdDo6dG9JbXBsKHVybCktPmhvc3QoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJM
Q29weVNjaGVtZShXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bCh1cmwpLT5wcm90b2NvbCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJL
aXQ6OnRvSW1wbCh1cmwpLT5wcm90b2NvbCgpKTsKIH0KIAogV0tfRVhQT1JUIFdLU3RyaW5nUmVm
IFdLVVJMQ29weVBhdGgoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0
b0ltcGwodXJsKS0+cGF0aCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJL
aXQ6OnRvSW1wbCh1cmwpLT5wYXRoKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTENvcHlMYXN0
UGF0aENvbXBvbmVudChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRv
SW1wbCh1cmwpLT5sYXN0UGF0aENvbXBvbmVudCgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0Nv
cGllZEFQSShXZWJLaXQ6OnRvSW1wbCh1cmwpLT5sYXN0UGF0aENvbXBvbmVudCgpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCmluZGV4IDE0OTk1NjNl
MzlhZTdiOTg2ZGUxNzM0NzY3ODg1ZjZhYWQ5MjhkMzIuLjI5NmNhZjdjMzI3NWUwMjUzZGZlYTZk
Njg4NjY5MzAyY2JhODBhNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLVVJMUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxS
ZXF1ZXN0LmNwcApAQCAtMzEsMzkgKzMxLDM2IEBACiAjaW5jbHVkZSAiV0tEYXRhLmgiCiAjaW5j
bHVkZSA8d3RmL1VSTC5oPgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLVVJMUmVxdWVzdEdldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6VVJMUmVxdWVzdDo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoQVBJOjpVUkxSZXF1ZXN0OjpBUElUeXBlKTsKIH0KIAogV0tVUkxSZXF1ZXN0UmVm
IFdLVVJMUmVxdWVzdENyZWF0ZVdpdGhXS1VSTChXS1VSTFJlZiB1cmwpCiB7Ci0gICAgcmV0dXJu
IHRvQVBJKCZBUEk6OlVSTFJlcXVlc3Q6OmNyZWF0ZShVUkwoVVJMKCksIHRvSW1wbCh1cmwpLT5z
dHJpbmcoKSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6VVJM
UmVxdWVzdDo6Y3JlYXRlKFVSTChVUkwoKSwgV2ViS2l0Ojp0b0ltcGwodXJsKS0+c3RyaW5nKCkp
KS5sZWFrUmVmKCkpOwogfQogCiBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5VVJMKFdLVVJMUmVx
dWVzdFJlZiByZXF1ZXN0UmVmKQogewotICAgIHJldHVybiB0b0NvcGllZFVSTEFQSSh0b0ltcGwo
cmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLnVybCgpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkpOwogfQogCiBXS1VSTFJlZiBXS1VSTFJlcXVlc3RDb3B5Rmlyc3RQYXJ0eUZv
ckNvb2tpZXMoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29w
aWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0
eUZvckNvb2tpZXMoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRVUkxBUEkoV2ViS2l0
Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmZpcnN0UGFydHlGb3JDb29r
aWVzKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTFJlcXVlc3RDb3B5SFRUUE1ldGhvZChXS1VS
TFJlcXVlc3RSZWYgcmVxdWVzdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBs
KHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJj
ZVJlcXVlc3QoKS5odHRwTWV0aG9kKCkpOwogfQogCiBXS1VSTFJlcXVlc3RSZWYgV0tVUkxSZXF1
ZXN0Q29weVNldHRpbmdIVFRQQm9keShXS1VSTFJlcXVlc3RSZWYgcmVxdWVzdFJlZiwgV0tEYXRh
UmVmIGJvZHkpCiB7Ci0gICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3RDb3B5KHRv
SW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkpOwotICAgIHJlcXVlc3RDb3B5LnNl
dEhUVFBCb2R5KEZvcm1EYXRhOjpjcmVhdGUoV0tEYXRhR2V0Qnl0ZXMoYm9keSksIFdLRGF0YUdl
dFNpemUoYm9keSkpKTsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVzdDo6Y3JlYXRl
KHJlcXVlc3RDb3B5KS5sZWFrUmVmKCkpOworICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBy
ZXF1ZXN0Q29weShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VSZXF1ZXN0KCkp
OworICAgIHJlcXVlc3RDb3B5LnNldEhUVFBCb2R5KFdlYkNvcmU6OkZvcm1EYXRhOjpjcmVhdGUo
V0tEYXRhR2V0Qnl0ZXMoYm9keSksIFdLRGF0YUdldFNpemUoYm9keSkpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENvcHkpLmxlYWtS
ZWYoKSk7CiB9CiAKIHZvaWQgV0tVUkxSZXF1ZXN0U2V0RGVmYXVsdFRpbWVvdXRJbnRlcnZhbChk
b3VibGUgdGltZW91dEludGVydmFsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tVUkxSZXNwb25zZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TFJlc3BvbnNlLmNwcAppbmRleCA4ZjFmYTlhZDZlMzZlOThhYzQxM2ViYTllZjk1NTNjYWQ0MDYz
OGNmLi4xOTkwYzAzM2VkODVjYTZhZjQ1YTA3ZTk2MWFmMGUyNDgxZDQzNzRhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNwcApAQCAtMzAsMzkgKzMwLDM3
IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSA8d3RmL1VSTC5oPgogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS1VSTFJlc3BvbnNlR2V0VHlwZUlEKCkK
IHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6QVBJVHlwZSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVUkxSZXNwb25zZTo6QVBJVHlwZSk7CiB9CiAKIFdLVVJM
UmVmIFdLVVJMUmVzcG9uc2VDb3B5VVJMKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNl
UmVzcG9uc2UoKS51cmwoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRVUkxBUEkoV2Vi
S2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkudXJsKCkpOwogfQog
CiBXS1N0cmluZ1JlZiBXS1VSTFJlc3BvbnNlQ29weU1JTUVUeXBlKFdLVVJMUmVzcG9uc2VSZWYg
cmVzcG9uc2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbChyZXNwb25zZVJl
ZiktPnJlc291cmNlUmVzcG9uc2UoKS5taW1lVHlwZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2Uo
KS5taW1lVHlwZSgpKTsKIH0KIAogaW50MzJfdCBXS1VSTFJlc3BvbnNlSFRUUFN0YXR1c0NvZGUo
V0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlc3Bv
bnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmh0dHBTdGF0dXNDb2RlKCk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmh0dHBTdGF0
dXNDb2RlKCk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMUmVzcG9uc2VDb3B5U3VnZ2VzdGVkRmls
ZW5hbWUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnN1Z2dlc3RlZEZp
bGVuYW1lKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBs
KHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnN1Z2dlc3RlZEZpbGVuYW1lKCkpOwog
fQogCiBib29sIFdLVVJMUmVzcG9uc2VJc0F0dGFjaG1lbnQoV0tVUkxSZXNwb25zZVJlZiByZXNw
b25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNw
b25zZSgpLmlzQXR0YWNobWVudCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZXNwb25z
ZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5pc0F0dGFjaG1lbnQoKTsKIH0KIAogdWludDMyX3Qg
V0tVUkxSZXNwb25zZUdldEV4cGVjdGVkQ29udGVudExlbmd0aChXS1VSTFJlc3BvbnNlUmVmIHJl
c3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJl
c3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9J
bXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLmV4cGVjdGVkQ29udGVudExlbmd0
aCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm4uY3BwCmluZGV4IGNlZWRjNzY5NjMzMTMwNzA2MjM5NGFmNTc1NzJlNjll
ZjQ0NGU4ODguLmZkZWJhNzk3MTA1YTc4MjYzMTk1MmFjZGFiN2IzYmI4ODNjY2VmOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJu
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0
dGVybi5jcHAKQEAgLTMwLDM5ICszMCwzNyBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldLU3RyaW5nLmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlE
IFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEko
QVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKEFQSTo6VXNlckNvbnRlbnRVUkxQYXR0ZXJuOjpBUElUeXBlKTsKIH0KIAogV0tVc2Vy
Q29udGVudFVSTFBhdHRlcm5SZWYgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5DcmVhdGUoV0tTdHJp
bmdSZWYgcGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VXNlckNvbnRlbnRV
UkxQYXR0ZXJuOjpjcmVhdGUodG9JbXBsKHBhdHRlcm5SZWYpLT5zdHJpbmcoKSkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46
OmNyZWF0ZShXZWJLaXQ6OnRvSW1wbChwYXR0ZXJuUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKSk7
CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuQ29weUhvc3QoV0tVc2Vy
Q29udGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKHVybFBhdHRlcm5SZWYpLT5ob3N0KCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5ob3N0KCkpOwogfQog
CiBXS1N0cmluZ1JlZiBXS1VzZXJDb250ZW50VVJMUGF0dGVybkNvcHlTY2hlbWUoV0tVc2VyQ29u
dGVudFVSTFBhdHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRB
UEkodG9JbXBsKHVybFBhdHRlcm5SZWYpLT5zY2hlbWUoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPnNjaGVtZSgpKTsKIH0K
IAogYm9vbCBXS1VzZXJDb250ZW50VVJMUGF0dGVybklzVmFsaWQoV0tVc2VyQ29udGVudFVSTFBh
dHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVybFBhdHRlcm5S
ZWYpLT5pc1ZhbGlkKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYp
LT5pc1ZhbGlkKCk7CiB9CiAKIGJvb2wgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5NYXRjaGVzVVJM
KFdLVXNlckNvbnRlbnRVUkxQYXR0ZXJuUmVmIHVybFBhdHRlcm5SZWYsIFdLVVJMUmVmIHVybFJl
ZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVybFBhdHRlcm5SZWYpLT5tYXRjaGVzVVJMKHRvV1RG
U3RyaW5nKHVybFJlZikpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh1cmxQYXR0ZXJuUmVm
KS0+bWF0Y2hlc1VSTChXZWJLaXQ6OnRvV1RGU3RyaW5nKHVybFJlZikpOwogfQogCiBib29sIFdL
VXNlckNvbnRlbnRVUkxQYXR0ZXJuTWF0Y2hlc1N1YmRvbWFpbnMoV0tVc2VyQ29udGVudFVSTFBh
dHRlcm5SZWYgdXJsUGF0dGVyblJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVybFBhdHRlcm5S
ZWYpLT5tYXRjaGVzU3ViZG9tYWlucygpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh1cmxQ
YXR0ZXJuUmVmKS0+bWF0Y2hlc1N1YmRvbWFpbnMoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dLSW1hZ2VDYWlyby5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCmluZGV4IDMwYWY0ZGZhNDFmNzIw
YTFhOTViNTcyOGQzZjgyZjhjMDM4NzY4NzIuLmNjZmNjNjY4ZjFmNTQxN2Y1MDBjMGIyNDhhMzU0
ODk5NjZmOTFlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJv
L1dLSW1hZ2VDYWlyby5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8v
V0tJbWFnZUNhaXJvLmNwcApAQCAtMzQsMTkgKzM0LDE2IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9Q
bGF0Zm9ybUNvbnRleHRDYWlyby5oPgogI2luY2x1ZGUgPGNhaXJvLmg+CiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogY2Fpcm9fc3VyZmFjZV90
KiBXS0ltYWdlQ3JlYXRlQ2Fpcm9TdXJmYWNlKFdLSW1hZ2VSZWYgaW1hZ2VSZWYpCiB7CiAgICAg
Ly8gV2UgY2Fubm90IHBhc3MgYSBSZWZQdHIgdGhyb3VnaCB0aGUgQVBJIGhlcmUsIHNvIHdlIGp1
c3QgbGVhayB0aGUgcmVmZXJlbmNlLgotICAgIHJldHVybiB0b0ltcGwoaW1hZ2VSZWYpLT5iaXRt
YXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9JbXBsKGltYWdlUmVmKS0+Yml0bWFwKCkuY3JlYXRlQ2Fpcm9TdXJmYWNlKCkubGVha1JlZigp
OwogfQogCiBXS0ltYWdlUmVmIFdLSW1hZ2VDcmVhdGVGcm9tQ2Fpcm9TdXJmYWNlKGNhaXJvX3N1
cmZhY2VfdCogc3VyZmFjZSwgV0tJbWFnZU9wdGlvbnMgb3B0aW9ucykKIHsKLSAgICBJbnRTaXpl
IGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0aChzdXJmYWNlKSwgY2Fpcm9f
aW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKLSAgICBhdXRvIHdlYkltYWdlID0g
V2ViSW1hZ2U6OmNyZWF0ZShpbWFnZVNpemUsIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAg
ICBXZWJDb3JlOjpJbnRTaXplIGltYWdlU2l6ZShjYWlyb19pbWFnZV9zdXJmYWNlX2dldF93aWR0
aChzdXJmYWNlKSwgY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1cmZhY2UpKTsKKyAg
ICBhdXRvIHdlYkltYWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKGltYWdlU2l6ZSwgV2Vi
S2l0Ojp0b0ltYWdlT3B0aW9ucyhvcHRpb25zKSk7CiAgICAgYXV0byBncmFwaGljc0NvbnRleHQg
PSB3ZWJJbWFnZS0+Yml0bWFwKCkuY3JlYXRlR3JhcGhpY3NDb250ZXh0KCk7CiAKICAgICBjYWly
b190KiBjciA9IGdyYXBoaWNzQ29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNyKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZv
Q3VybC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJ
bmZvQ3VybC5jcHAKaW5kZXggNzdmMDJmZjJiYWY5Nzg1YWQ3M2UzMGYwZmVjMTJmYTUwZTE1YmJl
Zi4uNjRkMzAxOTJhMzViYTI5NDk0YjM1YTY3ZjAxYmIzYjgwZTAyMzc3NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9D
dXJsLmNwcApAQCAtMzQsOCArMzQsNiBAQAogCiAjaW5jbHVkZSA8V2ViQ29yZS9DZXJ0aWZpY2F0
ZUluZm8uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogdXNpbmcgQ2VydGlmaWNhdGUg
PSBWZWN0b3I8dWludDhfdD47CiB1c2luZyBDZXJ0aWZpY2F0ZUNoYWluID0gVmVjdG9yPENlcnRp
ZmljYXRlPjsKIApAQCAtNTUsMTkgKzUzLDE5IEBAIFdLQ2VydGlmaWNhdGVJbmZvUmVmIFdLQ2Vy
dGlmaWNhdGVJbmZvQ3JlYXRlV2l0aENlcnRmaWNhdGVDaGFpbihXS0FycmF5UmVmIGNlcnRpCiAK
IGludCBXS0NlcnRpZmljYXRlSW5mb0dldFZlcmlmaWNhdGlvbkVycm9yKFdLQ2VydGlmaWNhdGVJ
bmZvUmVmIGNlcnRpZmljYXRlSW5mb1JlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGNlcnRpZmlj
YXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLnZlcmlmaWNhdGlvbkVycm9yKCk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5m
bygpLnZlcmlmaWNhdGlvbkVycm9yKCk7CiB9CiAKIHNpemVfdCBXS0NlcnRpZmljYXRlSW5mb0dl
dENlcnRpZmljYXRlQ2hhaW5TaXplKFdLQ2VydGlmaWNhdGVJbmZvUmVmIGNlcnRpZmljYXRlSW5m
b1JlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmlj
YXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5zaXplKCk7CisgICAgcmV0dXJuIFdlYktpdDo6
dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRl
Q2hhaW4oKS5zaXplKCk7CiB9CiAKIFdLRGF0YVJlZiBXS0NlcnRpZmljYXRlSW5mb0NvcHlDZXJ0
aWZpY2F0ZUF0SW5kZXgoV0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJbmZvUmVmLCBz
aXplX3QgaW5kZXgpCiB7Ci0gICAgaWYgKHRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0
aWZpY2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuc2l6ZSgpIDw9IGluZGV4KQorICAgIGlm
IChXZWJLaXQ6OnRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5jZXJ0aWZpY2F0ZUluZm8oKS5j
ZXJ0aWZpY2F0ZUNoYWluKCkuc2l6ZSgpIDw9IGluZGV4KQogICAgICAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSSgmQVBJOjpEYXRhOjpjcmVhdGUobnVsbHB0ciwgMCkubGVha1JlZigpKTsKIAotICAg
IGNvbnN0IGF1dG8mIGNlcnRpZmljYXRlID0gdG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNl
cnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5hdChpbmRleCk7CisgICAgY29uc3Qg
YXV0byYgY2VydGlmaWNhdGUgPSBXZWJLaXQ6OnRvSW1wbChjZXJ0aWZpY2F0ZUluZm9SZWYpLT5j
ZXJ0aWZpY2F0ZUluZm8oKS5jZXJ0aWZpY2F0ZUNoYWluKCkuYXQoaW5kZXgpOwogICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRhdGE6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVuc2lnbmVkIGNoYXIqPihjZXJ0aWZpY2F0ZS5kYXRhKCkpLCBjZXJ0aWZpY2F0ZS5zaXplKCkp
LmxlYWtSZWYoKSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356566</attachid>
            <date>2018-12-04 18:17:33 -0800</date>
            <delta_ts>2018-12-04 22:53:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192352-20181205111732.patch</filename>
            <type>text/plain</type>
            <size>59616</size>
            <attacher name="Fujii Hironori">fujii</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4ODgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDNhMzA1YzgzODY2MzMxOWYx
NjdmMGEwZTljYjUzMmY0ZDZlMWMzN2UuLjAyMTY3NjVlOGM3OGViMTNlZmRmMDZlNWYwNDFmNzRj
MGI5YzczMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTgtMTItMDQgIEZ1amlpIEhp
cm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CisKKyAgICAgICAgUmVtb3ZlIHVzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlIGFuZCBXZWJLaXQgdW5kZXIgV2ViS2l0L1NoYXJlZC9BUEkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MjM1MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlbW92ZWQgdXNp
bmcgbmFtZXNwYWNlIHN0YXRlbWVudHMsIGFuZCB1c2UgbmFtZXNwYWNlIHByZWZpeAorICAgICAg
ICBpbnN0ZWFkLgorCisgICAgICAgICogU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcDoKKyAgICAgICAgKiBTaGFyZWQv
QVBJL2MvV0tBcnJheS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQ2VydGlmaWNhdGVJ
bmZvLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcDoKKyAg
ICAgICAgKiBTaGFyZWQvQVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwOgorICAgICAgICAqIFNo
YXJlZC9BUEkvYy9XS0RhdGEuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0RpY3Rpb25h
cnkuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS0Vycm9yUmVmLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvV0tHZW9tZXRyeS5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dL
SW1hZ2UuY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURpY3Rpb25hcnkuY3BwOgorICAgICAgICAq
IFNoYXJlZC9BUEkvYy9XS051bWJlci5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLUGx1
Z2luSW5mb3JtYXRpb24uY3BwOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1JlbmRlckxheWVy
LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwOgorICAgICAg
ICAqIFNoYXJlZC9BUEkvYy9XS1NlY3VyaXR5T3JpZ2luUmVmLmNwcDoKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIFNoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHA6Cisg
ICAgICAgICogU2hhcmVkL0FQSS9jL1dLVVJMLmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2Mv
V0tVUkxSZXF1ZXN0LmNwcDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tVUkxSZXNwb25zZS5j
cHA6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcDoK
KyAgICAgICAgKiBTaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcDoKKyAgICAgICAg
KiBTaGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwOgorCiAyMDE4LTEy
LTA0ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBDYWxsaW5n
IGdldFVzZXJNZWRpYSBpbiBhIGxpbmsgdGhhdCB3YXMgb3BlbmVkIHdpdGggdGFyZ2V0PSJfYmxh
bmsiIGRvZXMgbm90IHdvcmsgdGhlIHNlY29uZCB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVVJMUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvQVBJVVJMUmVxdWVzdC5jcHAKaW5kZXggYWM5MDRkNDA5YzIxNTEwY2Y1NmM3MzgwMWE5NWZh
NWYxYWY1MTk1Yi4uNzNkMWY3NGYzZmY5YmU5MjEzYjc0ZWY3ZGJmMDMwY2FkZjlmMzI2MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXF1ZXN0LmNwcApAQCAtMjksMTEgKzI5
LDEwIEBACiAjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc1Bvb2wuaCIKIAorbmFtZXNwYWNlIEFQSSB7CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKLW5hbWVzcGFjZSBBUEkgewotCiBVUkxSZXF1
ZXN0OjpVUkxSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKICAgICA6IG1f
cmVxdWVzdChyZXF1ZXN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L0FQSVVSTFJlc3BvbnNlLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElVUkxSZXNw
b25zZS5jcHAKaW5kZXggMWQ5M2I2MmQzOGZhYzJiODgzN2I4MWFjYmE1MDIwYWFjMTRmODJiNy4u
ZWQwNjBhOWY2ZWY5NmJmNDhjN2U5MzNiNzYzZjRkMTdlNDA3Njk2OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSVVSTFJlc3BvbnNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJVVJMUmVzcG9uc2UuY3BwCkBAIC0yOCw5ICsyOCw4IEBACiAKICNp
bmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7Ci0KIG5hbWVzcGFjZSBBUEkgewordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIFVSTFJl
c3BvbnNlOjpVUkxSZXNwb25zZShjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiByZXNw
b25zZSkKICAgICA6IG1fcmVzcG9uc2UocmVzcG9uc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvYy9XS0FycmF5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLQXJyYXkuY3BwCmluZGV4IDg0NDE2MTEyNDIxN2FmNGQzNTNlYjZiMjliZjkxN2UwNGQ4YmU1
YTkuLmM5Nzg2ZjRiYTQ2MGEwZTE4YWU2ODk5NmY5MWJmZGY2ZGRjY2E5OGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLQXJyYXkuY3BwCkBAIC0yOSwxMSArMjksOSBAQAogI2luY2x1ZGUg
IkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLQXJyYXlHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQ
SShBUEk6OkFycmF5OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OkFy
cmF5OjpBUElUeXBlKTsKIH0KIAogV0tBcnJheVJlZiBXS0FycmF5Q3JlYXRlKFdLVHlwZVJlZiog
dmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpCkBAIC00Miw5ICs0MCw5IEBAIFdLQXJyYXlS
ZWYgV0tBcnJheUNyZWF0ZShXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVz
KQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobnVtYmVyT2ZWYWx1ZXMpOwog
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlZhbHVlczsgKytpKQotICAgICAg
ICBlbGVtZW50cy51bmNoZWNrZWRBcHBlbmQodG9JbXBsKHZhbHVlc1tpXSkpOworICAgICAgICBl
bGVtZW50cy51bmNoZWNrZWRBcHBlbmQoV2ViS2l0Ojp0b0ltcGwodmFsdWVzW2ldKSk7CiAKLSAg
ICByZXR1cm4gdG9BUEkoJkFQSTo6QXJyYXk6OmNyZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpBcnJheTo6Y3JlYXRlKFdU
Rk1vdmUoZWxlbWVudHMpKS5sZWFrUmVmKCkpOwogfQogCiBXS0FycmF5UmVmIFdLQXJyYXlDcmVh
dGVBZG9wdGluZ1ZhbHVlcyhXS1R5cGVSZWYqIHZhbHVlcywgc2l6ZV90IG51bWJlck9mVmFsdWVz
KQpAQCAtNTMsMTcgKzUxLDE3IEBAIFdLQXJyYXlSZWYgV0tBcnJheUNyZWF0ZUFkb3B0aW5nVmFs
dWVzKFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpCiAgICAgZWxlbWVu
dHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZlZhbHVlcyk7CiAKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG51bWJlck9mVmFsdWVzOyArK2kpCi0gICAgICAgIGVsZW1lbnRzLnVu
Y2hlY2tlZEFwcGVuZChhZG9wdFJlZih0b0ltcGwodmFsdWVzW2ldKSkpOworICAgICAgICBlbGVt
ZW50cy51bmNoZWNrZWRBcHBlbmQoYWRvcHRSZWYoV2ViS2l0Ojp0b0ltcGwodmFsdWVzW2ldKSkp
OwogCi0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoV1RGTW92ZShlbGVtZW50
cykpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6QXJyYXk6OmNy
ZWF0ZShXVEZNb3ZlKGVsZW1lbnRzKSkubGVha1JlZigpKTsKIH0KIAogV0tUeXBlUmVmIFdLQXJy
YXlHZXRJdGVtQXRJbmRleChXS0FycmF5UmVmIGFycmF5UmVmLCBzaXplX3QgaW5kZXgpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKHRvSW1wbChhcnJheVJlZiktPmF0KGluZGV4KSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5hdChpbmRleCkpOwogfQog
CiBzaXplX3QgV0tBcnJheUdldFNpemUoV0tBcnJheVJlZiBhcnJheVJlZikKIHsKLSAgICByZXR1
cm4gdG9JbXBsKGFycmF5UmVmKS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChh
cnJheVJlZiktPnNpemUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLQ2VydGlmaWNhdGVJbmZvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dL
Q2VydGlmaWNhdGVJbmZvLmNwcAppbmRleCA0NWVjNjI3NTFhNzEzYzcyM2FmZGFhZWUxZjI3OTMy
NjQ4NTdkY2ZmLi4yYjcxN2U1NzJmOTk2YWE4ZTM5ZGVkOWU5ZTY2MDkyYjhjZWE2ZWI4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NlcnRpZmljYXRlSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tDZXJ0aWZpY2F0ZUluZm8uY3BwCkBA
IC0yOSw5ICsyOSw3IEBACiAjaW5jbHVkZSAiV2ViQ2VydGlmaWNhdGVJbmZvLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdL
Q2VydGlmaWNhdGVJbmZvR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoV2ViQ2VydGlm
aWNhdGVJbmZvOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6Oldl
YkNlcnRpZmljYXRlSW5mbzo6QVBJVHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS0Nvbm5lY3Rpb25SZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb25uZWN0aW9uUmVmLmNwcAppbmRleCA5ZmE3MDQyYzI5ZWUzMTAzZTE3MjE0ZWVi
M2JiNjQwODRmYzgzOGZiLi4yNTU2NGY5Zjg3OGM5YWNmZTBmZWZiM2Y1NDgyMWQ0ZWJhNWQ0ZDdl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0Nvbm5lY3Rpb25SZWYu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLQ29ubmVjdGlvblJlZi5jcHAK
QEAgLTI5LDIwICsyOSwxOCBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldl
YkNvbm5lY3Rpb24uaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tD
b25uZWN0aW9uR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoV2ViQ29ubmVjdGlvbjo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJDb25uZWN0aW9u
OjpBUElUeXBlKTsKIH0KIAogdm9pZCBXS0Nvbm5lY3Rpb25TZXRDb25uZWN0aW9uQ2xpZW50KFdL
Q29ubmVjdGlvblJlZiBjb25uZWN0aW9uUmVmLCBjb25zdCBXS0Nvbm5lY3Rpb25DbGllbnRCYXNl
KiB3a0NsaWVudCkKIHsKLSAgICB0b0ltcGwoY29ubmVjdGlvblJlZiktPmluaXRpYWxpemVDb25u
ZWN0aW9uQ2xpZW50KHdrQ2xpZW50KTsKKyAgICBXZWJLaXQ6OnRvSW1wbChjb25uZWN0aW9uUmVm
KS0+aW5pdGlhbGl6ZUNvbm5lY3Rpb25DbGllbnQod2tDbGllbnQpOwogfQogCiB2b2lkIFdLQ29u
bmVjdGlvblBvc3RNZXNzYWdlKFdLQ29ubmVjdGlvblJlZiBjb25uZWN0aW9uUmVmLCBXS1N0cmlu
Z1JlZiBtZXNzYWdlTmFtZVJlZiwgV0tUeXBlUmVmIG1lc3NhZ2VCb2R5UmVmKQogewotICAgIHRv
SW1wbChjb25uZWN0aW9uUmVmKS0+cG9zdE1lc3NhZ2UodG9JbXBsKG1lc3NhZ2VOYW1lUmVmKS0+
c3RyaW5nKCksIHRvSW1wbChtZXNzYWdlQm9keVJlZikpOworICAgIFdlYktpdDo6dG9JbXBsKGNv
bm5lY3Rpb25SZWYpLT5wb3N0TWVzc2FnZShXZWJLaXQ6OnRvSW1wbChtZXNzYWdlTmFtZVJlZikt
PnN0cmluZygpLCBXZWJLaXQ6OnRvSW1wbChtZXNzYWdlQm9keVJlZikpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0NvbnRleHRNZW51SXRlbS5jcHAKaW5kZXggMWNm
MDVlNTA1YzI0NzI0ODQ1MTVlOThmMDcwNjc5MDQ3MmM1OGM5Ny4uYTVmMWIxOWYyMjg0OGU1ZGI5
ZGM0YmNlMjk0Y2IwZGVhMGU5OGJkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tDb250ZXh0TWVudUl0ZW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLQ29udGV4dE1lbnVJdGVtLmNwcApAQCAtMzIsMjIgKzMyLDE5IEBACiAjaW5jbHVkZSAi
V0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tDb250ZXh0TWVudUl0ZW1UeXBlcy5oIgogCi11c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlE
IFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZUlEKCkKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKLSAgICByZXR1cm4gdG9BUEkoV2ViQ29udGV4dE1lbnVJdGVtOjpBUElUeXBlKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6QVBJVHlwZSk7
CiAjZWxzZQotICAgIHJldHVybiB0b0FQSShBUEk6Ok9iamVjdDo6VHlwZTo6TnVsbCk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpPYmplY3Q6OlR5cGU6Ok51bGwpOwogI2VuZGlmCiB9
CiAKIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNBY3Rpb24o
V0tDb250ZXh0TWVudUl0ZW1UYWcgdGFnLCBXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVk
KQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSgmV2ViQ29u
dGV4dE1lbnVJdGVtOjpjcmVhdGUoV2ViQ29udGV4dE1lbnVJdGVtRGF0YShBY3Rpb25UeXBlLCB0
b0ltcGwodGFnKSwgdG9JbXBsKHRpdGxlKS0+c3RyaW5nKCksIGVuYWJsZWQsIGZhbHNlKSkubGVh
a1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJDb250ZXh0TWVu
dUl0ZW06OmNyZWF0ZShXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEoV2ViQ29yZTo6QWN0
aW9uVHlwZSwgV2ViS2l0Ojp0b0ltcGwodGFnKSwgV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5zdHJp
bmcoKSwgZW5hYmxlZCwgZmFsc2UpKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFS
QU0odGFnKTsKICAgICBVTlVTRURfUEFSQU0odGl0bGUpOwpAQCAtNTksNyArNTYsNyBAQCBXS0Nv
bnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbUNyZWF0ZUFzQWN0aW9uKFdLQ29udGV4
dE1lbnVJdGVtVGFnIHRhZywgVwogV0tDb250ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0
ZW1DcmVhdGVBc0NoZWNrYWJsZUFjdGlvbihXS0NvbnRleHRNZW51SXRlbVRhZyB0YWcsIFdLU3Ry
aW5nUmVmIHRpdGxlLCBib29sIGVuYWJsZWQsIGJvb2wgY2hlY2tlZCkKIHsKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3Jl
YXRlKFdlYkNvbnRleHRNZW51SXRlbURhdGEoQ2hlY2thYmxlQWN0aW9uVHlwZSwgdG9JbXBsKHRh
ZyksIHRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVkLCBjaGVja2VkKSkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06
OmNyZWF0ZShXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbURhdGEoV2ViQ29yZTo6Q2hlY2thYmxl
QWN0aW9uVHlwZSwgV2ViS2l0Ojp0b0ltcGwodGFnKSwgV2ViS2l0Ojp0b0ltcGwodGl0bGUpLT5z
dHJpbmcoKSwgZW5hYmxlZCwgY2hlY2tlZCkpLmxlYWtSZWYoKSk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTSh0YWcpOwogICAgIFVOVVNFRF9QQVJBTSh0aXRsZSk7CkBAIC03Miw3ICs2OSw3IEBA
IFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVtQ3JlYXRlQXNDaGVja2FibGVB
Y3Rpb24oV0tDb250ZXh0TWVudUl0ZW1UCiBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRN
ZW51SXRlbUNyZWF0ZUFzU3VibWVudShXS1N0cmluZ1JlZiB0aXRsZSwgYm9vbCBlbmFibGVkLCBX
S0FycmF5UmVmIHN1Ym1lbnVJdGVtcykKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAg
ICByZXR1cm4gdG9BUEkoJldlYkNvbnRleHRNZW51SXRlbTo6Y3JlYXRlKHRvSW1wbCh0aXRsZSkt
PnN0cmluZygpLCBlbmFibGVkLCB0b0ltcGwoc3VibWVudUl0ZW1zKSkubGVha1JlZigpKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2ViS2l0OjpXZWJDb250ZXh0TWVudUl0ZW06OmNyZWF0
ZShXZWJLaXQ6OnRvSW1wbCh0aXRsZSktPnN0cmluZygpLCBlbmFibGVkLCBXZWJLaXQ6OnRvSW1w
bChzdWJtZW51SXRlbXMpKS5sZWFrUmVmKCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0odGl0
bGUpOwogICAgIFVOVVNFRF9QQVJBTShlbmFibGVkKTsKQEAgLTg0LDcgKzgxLDcgQEAgV0tDb250
ZXh0TWVudUl0ZW1SZWYgV0tDb250ZXh0TWVudUl0ZW1DcmVhdGVBc1N1Ym1lbnUoV0tTdHJpbmdS
ZWYgdGl0bGUsIGJvb2wgZW4KIFdLQ29udGV4dE1lbnVJdGVtUmVmIFdLQ29udGV4dE1lbnVJdGVt
U2VwYXJhdG9ySXRlbSgpCiB7CiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCi0gICAgcmV0dXJu
IHRvQVBJKFdlYkNvbnRleHRNZW51SXRlbTo6c2VwYXJhdG9ySXRlbSgpKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0FQSShXZWJLaXQ6OldlYkNvbnRleHRNZW51SXRlbTo6c2VwYXJhdG9ySXRlbSgp
KTsKICNlbHNlCiAgICAgcmV0dXJuIG51bGxwdHI7CiAjZW5kaWYKQEAgLTkzLDI3ICs5MCwyNyBA
QCBXS0NvbnRleHRNZW51SXRlbVJlZiBXS0NvbnRleHRNZW51SXRlbVNlcGFyYXRvckl0ZW0oKQog
V0tDb250ZXh0TWVudUl0ZW1UYWcgV0tDb250ZXh0TWVudUl0ZW1HZXRUYWcoV0tDb250ZXh0TWVu
dUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1
cm4gdG9BUEkodG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkuYWN0aW9uKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkuYWN0aW9uKCkpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7Ci0gICAgcmV0dXJuIHRvQVBJKENvbnRl
eHRNZW51SXRlbVRhZ05vQWN0aW9uKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJDb3Jl
OjpDb250ZXh0TWVudUl0ZW1UYWdOb0FjdGlvbik7CiAjZW5kaWYKIH0KIAogV0tDb250ZXh0TWVu
dUl0ZW1UeXBlIFdLQ29udGV4dE1lbnVJdGVtR2V0VHlwZShXS0NvbnRleHRNZW51SXRlbVJlZiBp
dGVtUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSh0
b0ltcGwoaXRlbVJlZiktPmRhdGEoKS50eXBlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJ
KFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkudHlwZSgpKTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGl0ZW1SZWYpOwotICAgIHJldHVybiB0b0FQSShBY3Rpb25UeXBlKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJDb3JlOjpBY3Rpb25UeXBlKTsKICNlbmRpZgogfQogCiBX
S1N0cmluZ1JlZiBXS0NvbnRleHRNZW51SXRlbUNvcHlUaXRsZShXS0NvbnRleHRNZW51SXRlbVJl
ZiBpdGVtUmVmKQogewogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS50aXRsZSgpLmltcGwoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwoaXRlbVJlZiktPmRhdGEoKS50
aXRsZSgpLmltcGwoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAgICBy
ZXR1cm4gMDsKQEAgLTEyMyw3ICsxMjAsNyBAQCBXS1N0cmluZ1JlZiBXS0NvbnRleHRNZW51SXRl
bUNvcHlUaXRsZShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogYm9vbCBXS0NvbnRleHRN
ZW51SXRlbUdldEVuYWJsZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBF
TkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCku
ZW5hYmxlZCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLmVu
YWJsZWQoKTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwogICAgIHJldHVybiBm
YWxzZTsKQEAgLTEzMyw3ICsxMzAsNyBAQCBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0RW5hYmxl
ZChXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogYm9vbCBXS0NvbnRleHRNZW51SXRlbUdl
dENoZWNrZWQoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBFTkFCTEUoQ09O
VEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9JbXBsKGl0ZW1SZWYpLT5kYXRhKCkuY2hlY2tlZCgp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+ZGF0YSgpLmNoZWNrZWQoKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGl0ZW1SZWYpOwogICAgIHJldHVybiBmYWxzZTsKQEAg
LTE0Myw3ICsxNDAsNyBAQCBib29sIFdLQ29udGV4dE1lbnVJdGVtR2V0Q2hlY2tlZChXS0NvbnRl
eHRNZW51SXRlbVJlZiBpdGVtUmVmKQogV0tBcnJheVJlZiBXS0NvbnRleHRNZW51Q29weVN1Ym1l
bnVJdGVtcyhXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogewogI2lmIEVOQUJMRShDT05U
RVhUX01FTlVTKQotICAgIHJldHVybiB0b0FQSSgmdG9JbXBsKGl0ZW1SZWYpLT5zdWJtZW51SXRl
bXNBc0FQSUFycmF5KCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmV2Vi
S2l0Ojp0b0ltcGwoaXRlbVJlZiktPnN1Ym1lbnVJdGVtc0FzQVBJQXJyYXkoKS5sZWFrUmVmKCkp
OwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAgcmV0dXJuIDA7CkBAIC0x
NTMsNyArMTUwLDcgQEAgV0tBcnJheVJlZiBXS0NvbnRleHRNZW51Q29weVN1Ym1lbnVJdGVtcyhX
S0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogV0tUeXBlUmVmIFdLQ29udGV4dE1lbnVJdGVt
R2V0VXNlckRhdGEoV0tDb250ZXh0TWVudUl0ZW1SZWYgaXRlbVJlZikKIHsKICNpZiBFTkFCTEUo
Q09OVEVYVF9NRU5VUykKLSAgICByZXR1cm4gdG9BUEkodG9JbXBsKGl0ZW1SZWYpLT51c2VyRGF0
YSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChpdGVtUmVmKS0+
dXNlckRhdGEoKSk7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShpdGVtUmVmKTsKICAgICByZXR1
cm4gMDsKQEAgLTE2Myw3ICsxNjAsNyBAQCBXS1R5cGVSZWYgV0tDb250ZXh0TWVudUl0ZW1HZXRV
c2VyRGF0YShXS0NvbnRleHRNZW51SXRlbVJlZiBpdGVtUmVmKQogdm9pZCBXS0NvbnRleHRNZW51
SXRlbVNldFVzZXJEYXRhKFdLQ29udGV4dE1lbnVJdGVtUmVmIGl0ZW1SZWYsIFdLVHlwZVJlZiB1
c2VyRGF0YVJlZikKIHsKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5VUykKLSAgICB0b0ltcGwoaXRl
bVJlZiktPnNldFVzZXJEYXRhKHRvSW1wbCh1c2VyRGF0YVJlZikpOworICAgIFdlYktpdDo6dG9J
bXBsKGl0ZW1SZWYpLT5zZXRVc2VyRGF0YShXZWJLaXQ6OnRvSW1wbCh1c2VyRGF0YVJlZikpOwog
I2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaXRlbVJlZik7CiAgICAgVU5VU0VEX1BBUkFNKHVzZXJE
YXRhUmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGF0YS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0RhdGEuY3BwCmluZGV4IGZkYmNhNzNk
Y2I5ZWViMzY5ODUwMjA1Y2U5Zjg4NDBjMGEzMmQ0NjEuLjEzZjc5ZDkyMTZkNGI2MmYzMTY1ZDk0
OWMzZjM0YzZlZmU4ODZkMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tEYXRhLmNwcApA
QCAtMjksMjQgKzI5LDIyIEBACiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIldLQVBJ
Q2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1R5cGVJRCBXS0RhdGFHZXRU
eXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OkRhdGE6OkFQSVR5cGUpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6RGF0YTo6QVBJVHlwZSk7CiB9CiAKIFdLRGF0YVJlZiBX
S0RhdGFDcmVhdGUoY29uc3QgdW5zaWduZWQgY2hhciogYnl0ZXMsIHNpemVfdCBzaXplKQogewot
ICAgIHJldHVybiB0b0FQSSgmQVBJOjpEYXRhOjpjcmVhdGUoYnl0ZXMsIHNpemUpLmxlYWtSZWYo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6RGF0YTo6Y3JlYXRlKGJ5dGVzLCBz
aXplKS5sZWFrUmVmKCkpOwogfQogCiBjb25zdCB1bnNpZ25lZCBjaGFyKiBXS0RhdGFHZXRCeXRl
cyhXS0RhdGFSZWYgZGF0YVJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKGRhdGFSZWYpLT5ieXRl
cygpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkYXRhUmVmKS0+Ynl0ZXMoKTsKIH0KIAog
c2l6ZV90IFdLRGF0YUdldFNpemUoV0tEYXRhUmVmIGRhdGFSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
SW1wbChkYXRhUmVmKS0+c2l6ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChkYXRhUmVm
KS0+c2l6ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tE
aWN0aW9uYXJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLRGljdGlvbmFyeS5j
cHAKaW5kZXggNjU0ZTFlNjFlMDZmMGIwZjdlODNmZDZjMjdkYWFiZjMxZTEzOGNkZS4uMmY1YTAw
ZTA0OGE0YjIxMzkyNGI2MWM2ODUyMWU4ZDFiMWM4NzAwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tEaWN0aW9uYXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9BUEkvYy9XS0RpY3Rpb25hcnkuY3BwCkBAIC0zMCwzMyArMzAsMzEgQEAKICNpbmNsdWRl
ICJBUElEaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLRGljdGlvbmFyeUdldFR5cGVJRCgpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKEFQSTo6RGljdGlvbmFyeTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoQVBJOjpEaWN0aW9uYXJ5OjpBUElUeXBlKTsKIH0KIAogV0tfRVhQT1JUIFdLRGlj
dGlvbmFyeVJlZiBXS0RpY3Rpb25hcnlDcmVhdGUoY29uc3QgV0tTdHJpbmdSZWYqIGtleXMsIGNv
bnN0IFdLVHlwZVJlZiogdmFsdWVzLCBzaXplX3QgbnVtYmVyT2ZWYWx1ZXMpCiB7CiAgICAgQVBJ
OjpEaWN0aW9uYXJ5OjpNYXBUeXBlIG1hcDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51
bWJlck9mVmFsdWVzOyArK2kpCi0gICAgICAgIG1hcC5hZGQodG9JbXBsKGtleXNbaV0pLT5zdHJp
bmcoKSwgdG9JbXBsKHZhbHVlc1tpXSkpOworICAgICAgICBtYXAuYWRkKFdlYktpdDo6dG9JbXBs
KGtleXNbaV0pLT5zdHJpbmcoKSwgV2ViS2l0Ojp0b0ltcGwodmFsdWVzW2ldKSk7CiAKLSAgICBy
ZXR1cm4gdG9BUEkoJkFQSTo6RGljdGlvbmFyeTo6Y3JlYXRlKFdURk1vdmUobWFwKSkubGVha1Jl
ZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUo
V1RGTW92ZShtYXApKS5sZWFrUmVmKCkpOwogfQogCiBXS1R5cGVSZWYgV0tEaWN0aW9uYXJ5R2V0
SXRlbUZvcktleShXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZiwgV0tTdHJpbmdSZWYga2V5
KQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwoZGljdGlvbmFyeVJlZiktPmdldCh0b0ltcGwo
a2V5KS0+c3RyaW5nKCkpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShXZWJLaXQ6OnRvSW1w
bChkaWN0aW9uYXJ5UmVmKS0+Z2V0KFdlYktpdDo6dG9JbXBsKGtleSktPnN0cmluZygpKSk7CiB9
CiAKIHNpemVfdCBXS0RpY3Rpb25hcnlHZXRTaXplKFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNpemUoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNpemUoKTsKIH0KIAogV0tBcnJh
eVJlZiBXS0RpY3Rpb25hcnlDb3B5S2V5cyhXS0RpY3Rpb25hcnlSZWYgZGljdGlvbmFyeVJlZikK
IHsKLSAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChkaWN0aW9uYXJ5UmVmKS0+a2V5cygpLmxlYWtS
ZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJldlYktpdDo6dG9JbXBsKGRpY3Rpb25h
cnlSZWYpLT5rZXlzKCkubGVha1JlZigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLRXJyb3JSZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tFcnJvclJlZi5jcHAKaW5kZXggYzk0MTUxMjBiODUzMDljMDUwM2E3NTIzMTRhMmE1NzcyMTE2
MmM4Zi4uNDc5M2E1N2ZkMmYxNTRmZWM3MWQ5ODRiNzhmYjQ4YWQ4NDkyOTEyZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tFcnJvclJlZi5jcHAKQEAgLTI5LDI2ICsyOSwyNCBAQAog
I2luY2x1ZGUgIkFQSUVycm9yLmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLRXJyb3JHZXRUeXBlSUQoKQogewotICAgIHJl
dHVybiB0b0FQSShBUEk6OkVycm9yOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SShBUEk6OkVycm9yOjpBUElUeXBlKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tFcnJvckNvcHlXS0Vy
cm9yRG9tYWluKCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkoQVBJOjpFcnJvcjo6d2ViS2l0
RXJyb3JEb21haW4oKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoQVBJOjpFcnJv
cjo6d2ViS2l0RXJyb3JEb21haW4oKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLRXJyb3JDb3B5RG9t
YWluKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1w
bChlcnJvclJlZiktPmRvbWFpbigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShX
ZWJLaXQ6OnRvSW1wbChlcnJvclJlZiktPmRvbWFpbigpKTsKIH0KIAogaW50IFdLRXJyb3JHZXRF
cnJvckNvZGUoV0tFcnJvclJlZiBlcnJvclJlZikKIHsKLSAgICBhdXRvIGVycm9yQ29kZSA9IHRv
SW1wbChlcnJvclJlZiktPmVycm9yQ29kZSgpOworICAgIGF1dG8gZXJyb3JDb2RlID0gV2ViS2l0
Ojp0b0ltcGwoZXJyb3JSZWYpLT5lcnJvckNvZGUoKTsKICAgICBzd2l0Y2ggKGVycm9yQ29kZSkg
ewogICAgIGNhc2UgQVBJOjpFcnJvcjo6UG9saWN5OjpDYW5ub3RTaG93TUlNRVR5cGU6CiAgICAg
ICAgIHJldHVybiBrV0tFcnJvckNvZGVDYW5ub3RTaG93TUlNRVR5cGU7CkBAIC04MywxMCArODEs
MTAgQEAgaW50IFdLRXJyb3JHZXRFcnJvckNvZGUoV0tFcnJvclJlZiBlcnJvclJlZikKIAogV0tV
UkxSZWYgV0tFcnJvckNvcHlGYWlsaW5nVVJMKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChlcnJvclJlZiktPmZhaWxpbmdVUkwoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRVUkxBUEkoV2ViS2l0Ojp0b0ltcGwoZXJyb3JSZWYp
LT5mYWlsaW5nVVJMKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS0Vycm9yQ29weUxvY2FsaXplZERl
c2NyaXB0aW9uKFdLRXJyb3JSZWYgZXJyb3JSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChlcnJvclJlZiktPmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOworICAgIHJldHVybiBX
ZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKGVycm9yUmVmKS0+bG9jYWxpemVkRGVz
Y3JpcHRpb24oKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9X
S0dlb21ldHJ5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3Bw
CmluZGV4IDRjZDVlM2RhNDcwMGM3NTZmNmI3MGEzZGYzOGUzZmU4ZTVlYTllZDcuLjJhOGI2MzA1
NzljMTc2OWIwOTZmYjVkY2VlOTE5MWNiZjY4Zjg2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLR2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLR2VvbWV0cnkuY3BwCkBAIC0yOSw1MCArMjksNDggQEAKICNpbmNsdWRlICJBUElH
ZW9tZXRyeS5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwotCiBXS1R5cGVJRCBXS1NpemVHZXRUeXBlSUQodm9pZCkKIHsKLSAgICByZXR1cm4gdG9B
UEkoQVBJOjpTaXplOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlNp
emU6OkFQSVR5cGUpOwogfQogCiBXS1R5cGVJRCBXS1BvaW50R2V0VHlwZUlEKHZvaWQpCiB7Ci0g
ICAgcmV0dXJuIHRvQVBJKEFQSTo6UG9pbnQ6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKEFQSTo6UG9pbnQ6OkFQSVR5cGUpOwogfQogCiBXS1R5cGVJRCBXS1JlY3RHZXRUeXBl
SUQodm9pZCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpSZWN0OjpBUElUeXBlKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlJlY3Q6OkFQSVR5cGUpOwogfQogCiBXS1BvaW50UmVm
IFdLUG9pbnRDcmVhdGUoV0tQb2ludCBwb2ludCkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6
UG9pbnQ6OmNyZWF0ZShwb2ludCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQ
SSgmQVBJOjpQb2ludDo6Y3JlYXRlKHBvaW50KS5sZWFrUmVmKCkpOwogfQogCiBXS1NpemVSZWYg
V0tTaXplQ3JlYXRlKFdLU2l6ZSBzaXplKQogewotICAgIHJldHVybiB0b0FQSSgmQVBJOjpTaXpl
OjpjcmVhdGUoc2l6ZSkubGVha1JlZigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJ
OjpTaXplOjpjcmVhdGUoc2l6ZSkubGVha1JlZigpKTsKIH0KIAogV0tSZWN0UmVmIFdLUmVjdENy
ZWF0ZShXS1JlY3QgcmVjdCkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6UmVjdDo6Y3JlYXRl
KHJlY3QpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6UmVjdDo6
Y3JlYXRlKHJlY3QpLmxlYWtSZWYoKSk7CiB9CiAKIFdLU2l6ZSBXS1NpemVHZXRWYWx1ZShXS1Np
emVSZWYgc2l6ZSkKIHsKLSAgICByZXR1cm4gdG9JbXBsKHNpemUpLT5zaXplKCk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9JbXBsKHNpemUpLT5zaXplKCk7CiB9CiAKIFdLUG9pbnQgV0tQb2ludEdl
dFZhbHVlKFdLUG9pbnRSZWYgcG9pbnQpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChwb2ludCktPnBv
aW50KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHBvaW50KS0+cG9pbnQoKTsKIH0KIAog
V0tSZWN0IFdLUmVjdEdldFZhbHVlKFdLUmVjdFJlZiByZWN0KQogewotICAgIHJldHVybiB0b0lt
cGwocmVjdCktPnJlY3QoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVjdCktPnJlY3Qo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tJbWFnZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNwcAppbmRleCA2OGU2Mzgx
ZDhjMTg5NDdmZWVkNWE2Y2Q3M2MyOWUyMWYxYmM3Yjc5Li4zMWI2ZGFlYjgzOGZjYTNjYmU2NWJl
M2I3MDk2OTE5ZjVjMDIwMGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkv
Yy9XS0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS0ltYWdlLmNw
cApAQCAtMjksMjAgKzI5LDE4IEBACiAjaW5jbHVkZSAiV0tTaGFyZWRBUElDYXN0LmgiCiAjaW5j
bHVkZSAiV2ViSW1hZ2UuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQg
V0tJbWFnZUdldFR5cGVJRCh2b2lkKQogewotICAgIHJldHVybiB0b0FQSShXZWJJbWFnZTo6QVBJ
VHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJJbWFnZTo6QVBJVHlw
ZSk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tJbWFnZUNyZWF0ZShXS1NpemUgc2l6ZSwgV0tJbWFnZU9w
dGlvbnMgb3B0aW9ucykKIHsKLSAgICBhdXRvIHdlYkltYWdlID0gV2ViSW1hZ2U6OmNyZWF0ZSh0
b0ludFNpemUoc2l6ZSksIHRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKKyAgICBhdXRvIHdlYklt
YWdlID0gV2ViS2l0OjpXZWJJbWFnZTo6Y3JlYXRlKFdlYktpdDo6dG9JbnRTaXplKHNpemUpLCBX
ZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9wdGlvbnMpKTsKICAgICByZXR1cm4gdG9BUEkod2ViSW1h
Z2UubGVha1JlZigpKTsKIH0KIAogV0tTaXplIFdLSW1hZ2VHZXRTaXplKFdLSW1hZ2VSZWYgaW1h
Z2VSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChpbWFnZVJlZiktPnNpemUoKSk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5zaXplKCkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJy
YXkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlQXJyYXkuY3BwCmlu
ZGV4IDVkYzg1MjYwZmFkYmFlMzJkOThiMDE0ODVjOTM3ZjRkYzZjYjE4YTQuLjlhOTMxY2M2MjJh
MGNiZGY3NGYwOGI1M2MwMzM1YmZjMDgzNjE2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLTXV0YWJsZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS011dGFibGVBcnJheS5jcHAKQEAgLTI5LDIwICsyOSwxOCBAQAogI2luY2x1ZGUg
IkFQSUFycmF5LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7Ci0KIFdLTXV0YWJsZUFycmF5UmVmIFdLTXV0YWJsZUFycmF5Q3JlYXRlKCkKIHsKLSAg
ICByZXR1cm4gY29uc3RfY2FzdDxXS011dGFibGVBcnJheVJlZj4odG9BUEkoJkFQSTo6QXJyYXk6
OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOworICAgIHJldHVybiBjb25zdF9jYXN0PFdLTXV0YWJsZUFy
cmF5UmVmPihXZWJLaXQ6OnRvQVBJKCZBUEk6OkFycmF5OjpjcmVhdGUoKS5sZWFrUmVmKCkpKTsK
IH0KIAogdm9pZCBXS0FycmF5QXBwZW5kSXRlbShXS011dGFibGVBcnJheVJlZiBhcnJheVJlZiwg
V0tUeXBlUmVmIGl0ZW1SZWYpCiB7Ci0gICAgdG9JbXBsKGFycmF5UmVmKS0+ZWxlbWVudHMoKS5h
cHBlbmQodG9JbXBsKGl0ZW1SZWYpKTsKKyAgICBXZWJLaXQ6OnRvSW1wbChhcnJheVJlZiktPmVs
ZW1lbnRzKCkuYXBwZW5kKFdlYktpdDo6dG9JbXBsKGl0ZW1SZWYpKTsKIH0KIAogdm9pZCBXS0Fy
cmF5UmVtb3ZlSXRlbUF0SW5kZXgoV0tNdXRhYmxlQXJyYXlSZWYgYXJyYXlSZWYsIHNpemVfdCBp
bmRleCkKIHsKLSAgICB0b0ltcGwoYXJyYXlSZWYpLT5lbGVtZW50cygpLnJlbW92ZShpbmRleCk7
CisgICAgV2ViS2l0Ojp0b0ltcGwoYXJyYXlSZWYpLT5lbGVtZW50cygpLnJlbW92ZShpbmRleCk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLTXV0YWJsZURp
Y3Rpb25hcnkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlv
bmFyeS5jcHAKaW5kZXggOTZiODliZDQ1NjQ4NGQ1MWMwYTdmYjNhNTc5YzllNWQ5Y2RhODQ3ZC4u
N2RiMjExNjgwZTI4N2Y0ODViYTEzNmE5MWMxN2M4YTlmOGQ1NzUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tNdXRhYmxlRGljdGlvbmFyeS5jcHAKQEAgLTI5LDE1
ICsyOSwxMyBAQAogI2luY2x1ZGUgIkFQSURpY3Rpb25hcnkuaCIKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tNdXRhYmxlRGljdGlvbmFyeVJl
ZiBXS011dGFibGVEaWN0aW9uYXJ5Q3JlYXRlKCkKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxX
S011dGFibGVEaWN0aW9uYXJ5UmVmPih0b0FQSSgmQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoKS5s
ZWFrUmVmKCkpKTsKKyAgICByZXR1cm4gY29uc3RfY2FzdDxXS011dGFibGVEaWN0aW9uYXJ5UmVm
PihXZWJLaXQ6OnRvQVBJKCZBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZSgpLmxlYWtSZWYoKSkpOwog
fQogCiBib29sIFdLRGljdGlvbmFyeVNldEl0ZW0oV0tNdXRhYmxlRGljdGlvbmFyeVJlZiBkaWN0
aW9uYXJ5UmVmLCBXS1N0cmluZ1JlZiBrZXlSZWYsIFdLVHlwZVJlZiBpdGVtUmVmKQogewotICAg
IHJldHVybiB0b0ltcGwoZGljdGlvbmFyeVJlZiktPnNldCh0b0ltcGwoa2V5UmVmKS0+c3RyaW5n
KCksIHRvSW1wbChpdGVtUmVmKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGRpY3Rpb25h
cnlSZWYpLT5zZXQoV2ViS2l0Ojp0b0ltcGwoa2V5UmVmKS0+c3RyaW5nKCksIFdlYktpdDo6dG9J
bXBsKGl0ZW1SZWYpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJ
L2MvV0tOdW1iZXIuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tOdW1iZXIuY3Bw
CmluZGV4IDQxOGUwMjllYTY3ZGJmM2E2YTFmZWNjMDc1Mzg3Y2M2YTIxNzRkODYuLjE5ZjllZTA3
OTZjM2M0YTc2MmE4ZTE2ZDNkYWYzZDBlMjQ3YmZiZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLTnVtYmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS051bWJlci5jcHAKQEAgLTI5LDUyICsyOSw1MCBAQAogI2luY2x1ZGUgIkFQSU51bWJl
ci5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0Owot
CiBXS1R5cGVJRCBXS0Jvb2xlYW5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6
OkJvb2xlYW46OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKEFQSTo6Qm9vbGVh
bjo6QVBJVHlwZSk7CiB9CiAKIFdLQm9vbGVhblJlZiBXS0Jvb2xlYW5DcmVhdGUoYm9vbCB2YWx1
ZSkKIHsKICAgICBhdXRvIGJvb2xlYW5PYmplY3QgPSBBUEk6OkJvb2xlYW46OmNyZWF0ZSh2YWx1
ZSk7Ci0gICAgcmV0dXJuIHRvQVBJKCZib29sZWFuT2JqZWN0LmxlYWtSZWYoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoJmJvb2xlYW5PYmplY3QubGVha1JlZigpKTsKIH0KIAogYm9vbCBX
S0Jvb2xlYW5HZXRWYWx1ZShXS0Jvb2xlYW5SZWYgYm9vbGVhblJlZikKIHsKLSAgICByZXR1cm4g
dG9JbXBsKGJvb2xlYW5SZWYpLT52YWx1ZSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChi
b29sZWFuUmVmKS0+dmFsdWUoKTsKIH0KIAogV0tUeXBlSUQgV0tEb3VibGVHZXRUeXBlSUQoKQog
ewotICAgIHJldHVybiB0b0FQSShBUEk6OkRvdWJsZTo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdl
YktpdDo6dG9BUEkoQVBJOjpEb3VibGU6OkFQSVR5cGUpOwogfQogCiBXS0RvdWJsZVJlZiBXS0Rv
dWJsZUNyZWF0ZShkb3VibGUgdmFsdWUpCiB7CiAgICAgYXV0byBkb3VibGVPYmplY3QgPSBBUEk6
OkRvdWJsZTo6Y3JlYXRlKHZhbHVlKTsKLSAgICByZXR1cm4gdG9BUEkoJmRvdWJsZU9iamVjdC5s
ZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZkb3VibGVPYmplY3QubGVha1Jl
ZigpKTsKIH0KIAogZG91YmxlIFdLRG91YmxlR2V0VmFsdWUoV0tEb3VibGVSZWYgZG91YmxlUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwoZG91YmxlUmVmKS0+dmFsdWUoKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwoZG91YmxlUmVmKS0+dmFsdWUoKTsKIH0KIAogV0tUeXBlSUQgV0tVSW50
NjRHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVJbnQ2NDo6QVBJVHlwZSk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVSW50NjQ6OkFQSVR5cGUpOwogfQogCiBX
S1VJbnQ2NFJlZiBXS1VJbnQ2NENyZWF0ZSh1aW50NjRfdCB2YWx1ZSkKIHsKICAgICBhdXRvIHVp
bnQ2NE9iamVjdCA9IEFQSTo6VUludDY0OjpjcmVhdGUodmFsdWUpOwotICAgIHJldHVybiB0b0FQ
SSgmdWludDY0T2JqZWN0LmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJnVp
bnQ2NE9iamVjdC5sZWFrUmVmKCkpOwogfQogCiB1aW50NjRfdCBXS1VJbnQ2NEdldFZhbHVlKFdL
VUludDY0UmVmIHVpbnQ2NFJlZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHVpbnQ2NFJlZiktPnZh
bHVlKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVpbnQ2NFJlZiktPnZhbHVlKCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1BsdWdpbkluZm9ybWF0
aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24u
Y3BwCmluZGV4IGUzYWU0ZjVmMDMyNThhYTEwYTZhYjVhYmFiMzRjNmFmMGJkZDMzMDkuLmQ1YjM0
MWIxYzk2MTljODEzMWE3ZDdmYzM3ODMyYmFiOTFjOTkyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLUGx1Z2luSW5mb3JtYXRpb24uY3BwCkBAIC0zMCwxMyArMzAs
MTEgQEAKICNpbmNsdWRlICJQbHVnaW5JbmZvcm1hdGlvbi5oIgogI2luY2x1ZGUgIldLU2hhcmVk
QVBJQ2FzdC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCiBXS1N0cmluZ1JlZiBXS1Bs
dWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRlbnRpZmllcktleSgpKS5sZWFrUmVm
KCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5
ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uQnVuZGxlSWRl
bnRpZmllcktleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7
CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC00NSw4ICs0Myw4IEBAIFdLU3RyaW5n
UmVmIFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkKIFdLU3RyaW5nUmVm
IFdLUGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3Ry
aW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJzaW9uS2V5KCkpLmxlYWtSZWYo
KTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkg
PSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVWZXJz
aW9uS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNl
bHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTU1LDggKzUzLDggQEAgV0tTdHJpbmdSZWYg
V0tQbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVn
aW5JbmZvcm1hdGlvbkJ1bmRsZVNob3J0VmVyc2lvbktleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCkpLmxlYWtS
ZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBr
ZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25CdW5kbGVT
aG9ydFZlcnNpb25LZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZr
ZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtNjUsOCArNjMsOCBAQCBXS1N0
cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uQnVuZGxlU2hvcnRWZXJzaW9uS2V5KCkKIFdLU3Ry
aW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5n
OjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1
cm4gdG9BUEkoJmtleSk7CisgICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmlu
Zzo6Y3JlYXRlKFdlYktpdDo6cGx1Z2luSW5mb3JtYXRpb25QYXRoS2V5KCkpLmxlYWtSZWYoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKQEAgLTc1LDggKzczLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBh
dGhLZXkoKQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRpc3BsYXlOYW1lS2V5KCkK
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJp
bmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25EaXNwbGF5TmFt
ZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBB
UEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9y
bWF0aW9uRGlzcGxheU5hbWVLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtODUsOCArODMsOCBA
QCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRGlzcGxheU5hbWVLZXkoKQogV0tTdHJp
bmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkRlZmF1bHRMb2FkUG9saWN5S2V5KCkKIHsKICNpZiBF
TkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9
IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25EZWZhdWx0TG9hZFBvbGljeUtl
eSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6
OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0
aW9uRGVmYXVsdExvYWRQb2xpY3lLZXkoKSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsKICNlbmRpZgpAQCAtOTUsOCArOTMs
OCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRGVmYXVsdExvYWRQb2xpY3lLZXko
KQogV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblVwZGF0ZVBhc3RMYXN0QmxvY2tlZFZl
cnNpb25Jc0tub3duQXZhaWxhYmxlS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
cGx1Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWls
YWJsZUtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRp
YyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbklu
Zm9ybWF0aW9uVXBkYXRlUGFzdExhc3RCbG9ja2VkVmVyc2lvbklzS25vd25BdmFpbGFibGVLZXko
KSkubGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAg
ICByZXR1cm4gMDsKICNlbmRpZgpAQCAtMTA1LDggKzEwMyw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1
Z2luSW5mb3JtYXRpb25VcGRhdGVQYXN0TGFzdEJsb2NrZWRWZXJzaW9uSXNLbm93bkF2YWlsYWJs
ZUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uSGFzU2FuZGJveFByb2ZpbGVL
ZXkoKQogewogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHN0YXRpYyBBUEk6
OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShwbHVnaW5JbmZvcm1hdGlvbkhhc1Nh
bmRib3hQcm9maWxlS2V5KCkpLmxlYWtSZWYoKTsKLSAgICByZXR1cm4gdG9BUEkoJmtleSk7Cisg
ICAgc3RhdGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKFdlYktpdDo6
cGx1Z2luSW5mb3JtYXRpb25IYXNTYW5kYm94UHJvZmlsZUtleSgpKS5sZWFrUmVmKCk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlm
CkBAIC0xMTUsOCArMTEzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbkhhc1Nh
bmRib3hQcm9maWxlS2V5KCkKIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRpb25GcmFtZVVS
TEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGljIEFQ
STo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0aW9uRnJh
bWVVUkxLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgma2V5KTsKKyAgICBzdGF0
aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUoV2ViS2l0OjpwbHVnaW5J
bmZvcm1hdGlvbkZyYW1lVVJMS2V5KCkpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0
b0FQSSgma2V5KTsKICNlbHNlCiAgICAgcmV0dXJuIDA7CiAjZW5kaWYKQEAgLTEyNSw4ICsxMjMs
OCBAQCBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9uRnJhbWVVUkxLZXkoKQogV0tTdHJp
bmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVU
U0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3Ry
aW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKS5sZWFrUmVmKCk7Ci0g
ICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJ
OjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVLZXkoKSku
bGVha1JlZigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICBy
ZXR1cm4gMDsKICNlbmRpZgpAQCAtMTM1LDggKzEzMyw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2lu
SW5mb3JtYXRpb25NSU1FVHlwZUtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9ybWF0aW9u
UGFnZVVSTEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3Rh
dGljIEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdpbkluZm9ybWF0
aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOworICAg
IHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6OnBs
dWdpbkluZm9ybWF0aW9uUGFnZVVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIFdlYktp
dDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlmCkBAIC0xNDUsOCAr
MTQzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBhZ2VVUkxLZXkoKQogV0tT
dHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdpbnNwYWdlQXR0cmlidXRlVVJMS2V5KCkK
IHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKLSAgICBzdGF0aWMgQVBJOjpTdHJp
bmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2luSW5mb3JtYXRpb25QbHVnaW5zcGFn
ZUF0dHJpYnV0ZVVSTEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZrZXkpOwor
ICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShXZWJLaXQ6
OnBsdWdpbkluZm9ybWF0aW9uUGx1Z2luc3BhZ2VBdHRyaWJ1dGVVUkxLZXkoKSkubGVha1JlZigp
OworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZrZXkpOwogI2Vsc2UKICAgICByZXR1cm4gMDsK
ICNlbmRpZgpAQCAtMTU1LDggKzE1Myw4IEBAIFdLU3RyaW5nUmVmIFdLUGx1Z2luSW5mb3JtYXRp
b25QbHVnaW5zcGFnZUF0dHJpYnV0ZVVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdpbkluZm9y
bWF0aW9uUGx1Z2luVVJMS2V5KCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkK
LSAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUocGx1Z2lu
SW5mb3JtYXRpb25QbHVnaW5VUkxLZXkoKSkubGVha1JlZigpOwotICAgIHJldHVybiB0b0FQSSgm
a2V5KTsKKyAgICBzdGF0aWMgQVBJOjpTdHJpbmcmIGtleSA9IEFQSTo6U3RyaW5nOjpjcmVhdGUo
V2ViS2l0OjpwbHVnaW5JbmZvcm1hdGlvblBsdWdpblVSTEtleSgpKS5sZWFrUmVmKCk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAwOwogI2VuZGlm
CkBAIC0xNjUsOCArMTYzLDggQEAgV0tTdHJpbmdSZWYgV0tQbHVnaW5JbmZvcm1hdGlvblBsdWdp
blVSTEtleSgpCiBXS1N0cmluZ1JlZiBXS1BsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNj
dXJlZEtleSgpCiB7CiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCi0gICAgc3RhdGlj
IEFQSTo6U3RyaW5nJiBrZXkgPSBBUEk6OlN0cmluZzo6Y3JlYXRlKHBsdWdJbkluZm9ybWF0aW9u
UmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5sZWFrUmVmKCk7Ci0gICAgcmV0dXJuIHRvQVBJKCZr
ZXkpOworICAgIHN0YXRpYyBBUEk6OlN0cmluZyYga2V5ID0gQVBJOjpTdHJpbmc6OmNyZWF0ZShX
ZWJLaXQ6OnBsdWdJbkluZm9ybWF0aW9uUmVwbGFjZW1lbnRPYnNjdXJlZEtleSgpKS5sZWFrUmVm
KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmtleSk7CiAjZWxzZQogICAgIHJldHVybiAw
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRl
ckxheWVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3Bw
CmluZGV4IDIwNzI2ZjRlZTI5MmQ5N2EwYWVmNWM0YmEyYTZhM2ZlMjQwYTA5NGQuLjk0Yzg1ZTkx
M2Y5Y2Q1MDVhNDNiNDM4MGYwMzY5MzkyNzI3NGE3ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL0FQSS9jL1dLUmVuZGVyTGF5ZXIuY3BwCkBAIC0zMCw4MCArMzAsNzcgQEAKICNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJSZW5kZXJMYXllci5oIgogCi11c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLUmVu
ZGVyTGF5ZXJHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShXZWJSZW5kZXJMYXllcjo6
QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0OjpXZWJSZW5kZXJMYXll
cjo6QVBJVHlwZSk7CiB9CiAKIFdLUmVuZGVyT2JqZWN0UmVmIFdLUmVuZGVyTGF5ZXJHZXRSZW5k
ZXJlcihXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpKTsKKyAgICByZXR1cm4gdG9BUEko
V2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5yZW5kZXJlcigpKTsKIH0KIAogV0tTdHJp
bmdSZWYgV0tSZW5kZXJMYXllckNvcHlSZW5kZXJlck5hbWUoV0tSZW5kZXJMYXllclJlZiByZW5k
ZXJMYXllclJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlbmRlckxheWVy
UmVmKS0+cmVuZGVyZXIoKS0+bmFtZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQ
SShXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRlcmVyKCktPm5hbWUoKSk7CiB9
CiAKIFdLU3RyaW5nUmVmIFdLUmVuZGVyTGF5ZXJDb3B5RWxlbWVudFRhZ05hbWUoV0tSZW5kZXJM
YXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBXZWJSZW5kZXJMYXllciogcmVuZGVyTGF5
ZXIgPSB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOworICAgIFdlYktpdDo6V2ViUmVuZGVyTGF5ZXIq
IHJlbmRlckxheWVyID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpOwogICAgIGlmICgh
cmVuZGVyTGF5ZXItPnJlbmRlcmVyKCktPmVsZW1lbnRUYWdOYW1lKCkuaXNOdWxsKCkpCi0gICAg
ICAgIHJldHVybiB0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudFRh
Z05hbWUoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRlckxheWVy
LT5yZW5kZXJlcigpLT5lbGVtZW50VGFnTmFtZSgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwog
fQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlckxheWVyQ29weUVsZW1lbnRJRChXS1JlbmRlckxheWVy
UmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIFdlYlJlbmRlckxheWVyKiByZW5kZXJMYXllciA9
IHRvSW1wbChyZW5kZXJMYXllclJlZik7CisgICAgV2ViS2l0OjpXZWJSZW5kZXJMYXllciogcmVu
ZGVyTGF5ZXIgPSBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZik7CiAgICAgaWYgKCFyZW5k
ZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudElEKCkuaXNOdWxsKCkpCi0gICAgICAgIHJldHVy
biB0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+ZWxlbWVudElEKCkpOworICAg
ICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShyZW5kZXJMYXllci0+cmVuZGVyZXIoKS0+
ZWxlbWVudElEKCkpOwogCiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFdLQXJyYXlSZWYgV0tS
ZW5kZXJMYXllckdldEVsZW1lbnRDbGFzc05hbWVzKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5
ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPnJlbmRl
cmVyKCktPmVsZW1lbnRDbGFzc05hbWVzKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKFdl
YktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+cmVuZGVyZXIoKS0+ZWxlbWVudENsYXNzTmFt
ZXMoKSk7CiB9CiAKIFdLUmVjdCBXS1JlbmRlckxheWVyR2V0QWJzb2x1dGVCb3VuZHMoV0tSZW5k
ZXJMYXllclJlZiByZW5kZXJMYXllclJlZikKIHsKLSAgICBJbnRSZWN0IGJvdW5kcyA9IHRvSW1w
bChyZW5kZXJMYXllclJlZiktPmFic29sdXRlQm91bmRpbmdCb3goKTsKKyAgICBXZWJDb3JlOjpJ
bnRSZWN0IGJvdW5kcyA9IFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+YWJzb2x1dGVC
b3VuZGluZ0JveCgpOwogICAgIHJldHVybiBXS1JlY3RNYWtlKGJvdW5kcy54KCksIGJvdW5kcy55
KCksIGJvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCkpOwogfQogCiBib29sIFdLUmVuZGVy
TGF5ZXJJc0NsaXBwaW5nKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzQ2xpcHBpbmcoKTsKKyAgICByZXR1cm4g
V2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0NsaXBwaW5nKCk7CiB9CiAKIGJvb2wg
V0tSZW5kZXJMYXllcklzQ2xpcHBlZChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQog
ewotICAgIHJldHVybiB0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0NsaXBwZWQoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5pc0NsaXBwZWQoKTsKIH0KIAog
Ym9vbCBXS1JlbmRlckxheWVySXNSZWZsZWN0aW9uKFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5
ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzUmVmbGVjdGlv
bigpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmlzUmVmbGVj
dGlvbigpOwogfQogCiBXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlIFdLUmVuZGVyTGF5ZXJHZXRDb21w
b3NpdGluZ0xheWVyVHlwZShXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAg
IHN3aXRjaCAodG9JbXBsKHJlbmRlckxheWVyUmVmKS0+Y29tcG9zaXRpbmdMYXllclR5cGUoKSkg
ewotICAgIGNhc2UgV2ViUmVuZGVyTGF5ZXI6Ok5vbmU6CisgICAgc3dpdGNoIChXZWJLaXQ6OnRv
SW1wbChyZW5kZXJMYXllclJlZiktPmNvbXBvc2l0aW5nTGF5ZXJUeXBlKCkpIHsKKyAgICBjYXNl
IFdlYktpdDo6V2ViUmVuZGVyTGF5ZXI6Ok5vbmU6CiAgICAgICAgIHJldHVybiBrV0tDb21wb3Np
dGluZ0xheWVyVHlwZU5vbmU7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXllcjo6Tm9ybWFsOgorICAg
IGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6Tm9ybWFsOgogICAgICAgICByZXR1cm4ga1dL
Q29tcG9zaXRpbmdMYXllclR5cGVOb3JtYWw7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXllcjo6VGls
ZWQ6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpUaWxlZDoKICAgICAgICAgcmV0
dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlVGlsZWQ7Ci0gICAgY2FzZSBXZWJSZW5kZXJMYXll
cjo6TWVkaWE6CisgICAgY2FzZSBXZWJLaXQ6OldlYlJlbmRlckxheWVyOjpNZWRpYToKICAgICAg
ICAgcmV0dXJuIGtXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlTWVkaWE7Ci0gICAgY2FzZSBXZWJSZW5k
ZXJMYXllcjo6Q29udGFpbmVyOgorICAgIGNhc2UgV2ViS2l0OjpXZWJSZW5kZXJMYXllcjo6Q29u
dGFpbmVyOgogICAgICAgICByZXR1cm4ga1dLQ29tcG9zaXRpbmdMYXllclR5cGVDb250YWluZXI7
CiAgICAgfQogCkBAIC0xMTMsMjUgKzExMCwyNSBAQCBXS0NvbXBvc2l0aW5nTGF5ZXJUeXBlIFdL
UmVuZGVyTGF5ZXJHZXRDb21wb3NpdGluZ0xheWVyVHlwZShXS1JlbmRlckxheWVyUmVmIHJlbgog
CiBXS19FWFBPUlQgZG91YmxlIFdLUmVuZGVyTGF5ZXJHZXRCYWNraW5nU3RvcmVNZW1vcnlFc3Rp
bWF0ZShXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwocmVuZGVyTGF5ZXJSZWYpLT5iYWNraW5nU3RvcmVNZW1vcnlFc3RpbWF0ZSgpOworICAgIHJl
dHVybiBXZWJLaXQ6OnRvSW1wbChyZW5kZXJMYXllclJlZiktPmJhY2tpbmdTdG9yZU1lbW9yeUVz
dGltYXRlKCk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldE5lZ2F0aXZlWk9yZGVy
TGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5uZWdhdGl2ZVpPcmRlckxpc3QoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5uZWdhdGl2
ZVpPcmRlckxpc3QoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldE5vcm1hbEZs
b3dMaXN0KFdLUmVuZGVyTGF5ZXJSZWYgcmVuZGVyTGF5ZXJSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKHRvSW1wbChyZW5kZXJMYXllclJlZiktPm5vcm1hbEZsb3dMaXN0KCkpOworICAgIHJldHVy
biBXZWJLaXQ6OnRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+bm9ybWFsRmxv
d0xpc3QoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJMYXllckdldFBvc2l0aXZlWk9yZGVy
TGlzdChXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAgIHJldHVybiB0b0FQ
SSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5wb3NpdGl2ZVpPcmRlckxpc3QoKSk7CisgICAgcmV0
dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5wb3NpdGl2
ZVpPcmRlckxpc3QoKSk7CiB9CiAKIFdLUmVuZGVyTGF5ZXJSZWYgV0tSZW5kZXJMYXllckdldEZy
YW1lQ29udGVudHNMYXllcihXS1JlbmRlckxheWVyUmVmIHJlbmRlckxheWVyUmVmKQogewotICAg
IHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVyTGF5ZXJSZWYpLT5mcmFtZUNvbnRlbnRzTGF5ZXIo
KSk7CisgICAgcmV0dXJuIHRvQVBJKFdlYktpdDo6dG9JbXBsKHJlbmRlckxheWVyUmVmKS0+ZnJh
bWVDb250ZW50c0xheWVyKCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
QVBJL2MvV0tSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IGNmZjcxYzdjZDg2ODhmNTE0MzdhZWQ3NGEzODQ3NWFhNjJm
NzhjYjIuLmJhMTIzOTBiNjMyODcxYWE0Y2ExYTUzNmZiODhmYWFkNjEzNWE0MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLUmVuZGVyT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1JlbmRlck9iamVjdC5jcHAKQEAgLTMwLDY5ICsz
MCw2NiBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgIldlYlJlbmRlck9iamVj
dC5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
Ci0KIFdLVHlwZUlEIFdLUmVuZGVyT2JqZWN0R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9B
UEkoV2ViUmVuZGVyT2JqZWN0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShX
ZWJLaXQ6OldlYlJlbmRlck9iamVjdDo6QVBJVHlwZSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLUmVu
ZGVyT2JqZWN0Q29weU5hbWUoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewot
ICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+bmFtZSgpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmpl
Y3RSZWYpLT5uYW1lKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlUZXh0
U25pcHBldChXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgV2ViUmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKKyAgICBX
ZWJLaXQ6OldlYlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0b0ltcGwocmVu
ZGVyT2JqZWN0UmVmKTsKICAgICBpZiAoIXJlbmRlck9iamVjdC0+dGV4dFNuaXBwZXQoKS5pc051
bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+dGV4dFNuaXBw
ZXQoKSk7CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+
dGV4dFNuaXBwZXQoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdW5zaWduZWQgV0tS
ZW5kZXJPYmplY3RHZXRUZXh0TGVuZ3RoKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJl
ZikKIHsKLSAgICByZXR1cm4gdG9JbXBsKHJlbmRlck9iamVjdFJlZiktPnRleHRMZW5ndGgoKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+dGV4dExlbmd0aCgp
OwogfQogCiBXS1N0cmluZ1JlZiBXS1JlbmRlck9iamVjdENvcHlFbGVtZW50VGFnTmFtZShXS1Jl
bmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgV2ViUmVuZGVyT2JqZWN0KiBy
ZW5kZXJPYmplY3QgPSB0b0ltcGwocmVuZGVyT2JqZWN0UmVmKTsKKyAgICBXZWJLaXQ6OldlYlJl
bmRlck9iamVjdCogcmVuZGVyT2JqZWN0ID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVm
KTsKICAgICBpZiAoIXJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKS5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+ZWxlbWVudFRhZ05hbWUoKSk7
CisgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKHJlbmRlck9iamVjdC0+ZWxlbWVu
dFRhZ05hbWUoKSk7CiAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogV0tTdHJpbmdSZWYgV0tS
ZW5kZXJPYmplY3RDb3B5RWxlbWVudElEKFdLUmVuZGVyT2JqZWN0UmVmIHJlbmRlck9iamVjdFJl
ZikKIHsKLSAgICBXZWJSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCA9IHRvSW1wbChyZW5kZXJP
YmplY3RSZWYpOworICAgIFdlYktpdDo6V2ViUmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QgPSBX
ZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpOwogICAgIGlmICghcmVuZGVyT2JqZWN0LT5l
bGVtZW50SUQoKS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRvQ29waWVkQVBJKHJlbmRlck9i
amVjdC0+ZWxlbWVudElEKCkpOworICAgICAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShy
ZW5kZXJPYmplY3QtPmVsZW1lbnRJRCgpKTsKIAogICAgIHJldHVybiBudWxscHRyOwogfQogCiBX
S0FycmF5UmVmIFdLUmVuZGVyT2JqZWN0R2V0RWxlbWVudENsYXNzTmFtZXMoV0tSZW5kZXJPYmpl
Y3RSZWYgcmVuZGVyT2JqZWN0UmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwocmVuZGVy
T2JqZWN0UmVmKS0+ZWxlbWVudENsYXNzTmFtZXMoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9B
UEkoV2ViS2l0Ojp0b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+ZWxlbWVudENsYXNzTmFtZXMoKSk7
CiB9CiAKIFdLUG9pbnQgV0tSZW5kZXJPYmplY3RHZXRBYnNvbHV0ZVBvc2l0aW9uKFdLUmVuZGVy
T2JqZWN0UmVmIHJlbmRlck9iamVjdFJlZikKIHsKLSAgICBJbnRQb2ludCBhYnNvbHV0ZVBvc2l0
aW9uID0gdG9JbXBsKHJlbmRlck9iamVjdFJlZiktPmFic29sdXRlUG9zaXRpb24oKTsKKyAgICBX
ZWJDb3JlOjpJbnRQb2ludCBhYnNvbHV0ZVBvc2l0aW9uID0gV2ViS2l0Ojp0b0ltcGwocmVuZGVy
T2JqZWN0UmVmKS0+YWJzb2x1dGVQb3NpdGlvbigpOwogICAgIHJldHVybiBXS1BvaW50TWFrZShh
YnNvbHV0ZVBvc2l0aW9uLngoKSwgYWJzb2x1dGVQb3NpdGlvbi55KCkpOwogfQogCiBXS1JlY3Qg
V0tSZW5kZXJPYmplY3RHZXRGcmFtZVJlY3QoV0tSZW5kZXJPYmplY3RSZWYgcmVuZGVyT2JqZWN0
UmVmKQogewotICAgIEludFJlY3QgZnJhbWVSZWN0ID0gdG9JbXBsKHJlbmRlck9iamVjdFJlZikt
PmZyYW1lUmVjdCgpOworICAgIFdlYkNvcmU6OkludFJlY3QgZnJhbWVSZWN0ID0gV2ViS2l0Ojp0
b0ltcGwocmVuZGVyT2JqZWN0UmVmKS0+ZnJhbWVSZWN0KCk7CiAgICAgcmV0dXJuIFdLUmVjdE1h
a2UoZnJhbWVSZWN0LngoKSwgZnJhbWVSZWN0LnkoKSwgZnJhbWVSZWN0LndpZHRoKCksIGZyYW1l
UmVjdC5oZWlnaHQoKSk7CiB9CiAKIFdLQXJyYXlSZWYgV0tSZW5kZXJPYmplY3RHZXRDaGlsZHJl
bihXS1JlbmRlck9iamVjdFJlZiByZW5kZXJPYmplY3RSZWYpCiB7Ci0gICAgcmV0dXJuIHRvQVBJ
KHRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5jaGlsZHJlbigpKTsKKyAgICByZXR1cm4gV2ViS2l0
Ojp0b0FQSShXZWJLaXQ6OnRvSW1wbChyZW5kZXJPYmplY3RSZWYpLT5jaGlsZHJlbigpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VjdXJpdHlPcmlnaW5S
ZWYuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5j
cHAKaW5kZXggYmNmOTU1YTY2Y2I3NjgwNTQyYzJjZmNhZGNjNGYzZjBiZDUzZDE1MS4uNWU2YmU3
NGI4ZGE2ZDRiOTM2MDM3OTBjYTRhZDE3NmQxZjY2MmM2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvQVBJL2MvV0tTZWN1cml0eU9yaWdpblJlZi5jcHAKQEAgLTMwLDUzICszMCw1
MSBAQAogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlP
cmlnaW5EYXRhLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLU2Vj
dXJpdHlPcmlnaW5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlNlY3VyaXR5
T3JpZ2luOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlNlY3VyaXR5
T3JpZ2luOjpBUElUeXBlKTsKIH0KIAogV0tTZWN1cml0eU9yaWdpblJlZiBXS1NlY3VyaXR5T3Jp
Z2luQ3JlYXRlRnJvbVN0cmluZyhXS1N0cmluZ1JlZiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKCZBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46
OmNyZWF0ZUZyb21TdHJpbmcodG9JbXBsKHN0cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVGcm9tU3RyaW5nKFdlYktpdDo6dG9JbXBsKHN0
cmluZyktPnN0cmluZygpKSkubGVha1JlZigpKTsKIH0KIAogV0tTZWN1cml0eU9yaWdpblJlZiBX
S1NlY3VyaXR5T3JpZ2luQ3JlYXRlRnJvbURhdGFiYXNlSWRlbnRpZmllcihXS1N0cmluZ1JlZiBp
ZGVudGlmaWVyKQogewotICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKHRvSW1wbChpZGVudGlmaWVyKS0+c3RyaW5nKCkp
OworICAgIGF1dG8gb3JpZ2luID0gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0
YWJhc2VJZGVudGlmaWVyKFdlYktpdDo6dG9JbXBsKGlkZW50aWZpZXIpLT5zdHJpbmcoKSk7CiAg
ICAgaWYgKCFvcmlnaW4pCiAgICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiB0b0FQ
SSgmQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKG9yaWdpbi52YWx1ZSgpLnNlY3VyaXR5T3Jp
Z2luKCkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6U2VjdXJp
dHlPcmlnaW46OmNyZWF0ZShvcmlnaW4udmFsdWUoKS5zZWN1cml0eU9yaWdpbigpKS5sZWFrUmVm
KCkpOwogfQogCiBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLU2VjdXJpdHlPcmlnaW5DcmVhdGUoV0tT
dHJpbmdSZWYgcHJvdG9jb2wsIFdLU3RyaW5nUmVmIGhvc3QsIGludCBwb3J0KQogewotICAgIGF1
dG8gc2VjdXJpdHlPcmlnaW4gPSBBUEk6OlNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodG9JbXBsKHBy
b3RvY29sKS0+c3RyaW5nKCksIHRvSW1wbChob3N0KS0+c3RyaW5nKCksIHBvcnQpOwotICAgIHJl
dHVybiB0b0FQSSgmc2VjdXJpdHlPcmlnaW4ubGVha1JlZigpKTsKKyAgICBhdXRvIHNlY3VyaXR5
T3JpZ2luID0gQVBJOjpTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKFdlYktpdDo6dG9JbXBsKHByb3Rv
Y29sKS0+c3RyaW5nKCksIFdlYktpdDo6dG9JbXBsKGhvc3QpLT5zdHJpbmcoKSwgcG9ydCk7Cisg
ICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJnNlY3VyaXR5T3JpZ2luLmxlYWtSZWYoKSk7CiB9CiAK
IFdLU3RyaW5nUmVmIFdLU2VjdXJpdHlPcmlnaW5Db3B5RGF0YWJhc2VJZGVudGlmaWVyKFdLU2Vj
dXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJ
KHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFiYXNl
SWRlbnRpZmllcigpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRv
SW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuZGF0YSgpLmRhdGFiYXNlSWRl
bnRpZmllcigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlUb1N0cmlu
ZyhXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3VyaXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0Nv
cGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmlnaW4pLT5zZWN1cml0eU9yaWdpbigpLnRvU3RyaW5n
KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHNlY3Vy
aXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS50b1N0cmluZygpKTsKIH0KIAogV0tTdHJpbmdS
ZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlQcm90b2NvbChXS1NlY3VyaXR5T3JpZ2luUmVmIHNlY3Vy
aXR5T3JpZ2luKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwoc2VjdXJpdHlPcmln
aW4pLT5zZWN1cml0eU9yaWdpbigpLnByb3RvY29sKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
Q29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4o
KS5wcm90b2NvbCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tTZWN1cml0eU9yaWdpbkNvcHlIb3N0
KFdLU2VjdXJpdHlPcmlnaW5SZWYgc2VjdXJpdHlPcmlnaW4pCiB7Ci0gICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChzZWN1cml0eU9yaWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRvSW1wbChzZWN1cml0eU9y
aWdpbiktPnNlY3VyaXR5T3JpZ2luKCkuaG9zdCgpKTsKIH0KIAogdW5zaWduZWQgc2hvcnQgV0tT
ZWN1cml0eU9yaWdpbkdldFBvcnQoV0tTZWN1cml0eU9yaWdpblJlZiBzZWN1cml0eU9yaWdpbikK
IHsKLSAgICByZXR1cm4gdG9JbXBsKHNlY3VyaXR5T3JpZ2luKS0+c2VjdXJpdHlPcmlnaW4oKS5w
b3J0KCkudmFsdWVfb3IoMCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNlY3VyaXR5T3Jp
Z2luKS0+c2VjdXJpdHlPcmlnaW4oKS5wb3J0KCkudmFsdWVfb3IoMCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAK
aW5kZXggYWFkOGVhZTQ0N2VhMTMxMjNhOTZmMjY4NmZmZTY2ZTQ5NmZkMzlkOC4uYzRkY2JhM2Zl
YTRkZjVjNTIzOTJiNzcxYzAwN2MzYTkwMjk3NzE1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjksMjAg
KzI5LDE4IEBACiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdL
U2VyaWFsaXplZFNjcmlwdFZhbHVlR2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OkFQSVR5cGUpOworICAgIHJldHVybiBXZWJLaXQ6OnRv
QVBJKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpBUElUeXBlKTsKIH0KIAogV0tTZXJpYWxp
emVkU2NyaXB0VmFsdWVSZWYgV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVDcmVhdGUoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsK
ICAgICBhdXRvIHNlcmlhbGl6ZWRWYWx1ZSA9IEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpj
cmVhdGUoY29udGV4dCwgdmFsdWUsIGV4Y2VwdGlvbik7Ci0gICAgcmV0dXJuIHRvQVBJKHNlcmlh
bGl6ZWRWYWx1ZS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKHNlcmlhbGl6
ZWRWYWx1ZS5sZWFrUmVmKCkpOwogfQogCiBKU1ZhbHVlUmVmIFdLU2VyaWFsaXplZFNjcmlwdFZh
bHVlRGVzZXJpYWxpemUoV0tTZXJpYWxpemVkU2NyaXB0VmFsdWVSZWYgc2NyaXB0VmFsdWVSZWYs
IEpTQ29udGV4dFJlZiBjb250ZXh0UmVmLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7Ci0gICAg
cmV0dXJuIHRvSW1wbChzY3JpcHRWYWx1ZVJlZiktPmRlc2VyaWFsaXplKGNvbnRleHRSZWYsIGV4
Y2VwdGlvbik7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHNjcmlwdFZhbHVlUmVmKS0+ZGVz
ZXJpYWxpemUoY29udGV4dFJlZiwgZXhjZXB0aW9uKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLU3RyaW5nLmNwcAppbmRleCA3NjdhYThkOTE0YjBjZjc1MTk2ZTIwYzM2M2I4MDYzOGZm
ZDdkM2Q5Li4wMmFhNGNjMGYwYjY2NzNlMjM2YTA3YTgxYzQ2ZmUzOWVhYjdmZWRhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBAIC0zMSwyNiArMzEsMjQgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKLQogV0tUeXBlSUQgV0tTdHJpbmdHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShB
UEk6OlN0cmluZzo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpTdHJp
bmc6OkFQSVR5cGUpOwogfQogCiBXS1N0cmluZ1JlZiBXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0
cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRvQVBJKCZBUEk6OlN0cmlu
Zzo6Y3JlYXRlKFdURjo6U3RyaW5nOjpmcm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkpOworICAg
IHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlN0cmluZzo6Y3JlYXRlKFdURjo6U3RyaW5nOjpm
cm9tVVRGOChzdHJpbmcpKS5sZWFrUmVmKCkpOwogfQogCiBib29sIFdLU3RyaW5nSXNFbXB0eShX
S1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJuIHRvSW1wbChzdHJpbmdSZWYpLT5z
dHJpbmdWaWV3KCkuaXNFbXB0eSgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChzdHJpbmdS
ZWYpLT5zdHJpbmdWaWV3KCkuaXNFbXB0eSgpOwogfQogCiBzaXplX3QgV0tTdHJpbmdHZXRMZW5n
dGgoV0tTdHJpbmdSZWYgc3RyaW5nUmVmKQogewotICAgIHJldHVybiB0b0ltcGwoc3RyaW5nUmVm
KS0+c3RyaW5nVmlldygpLmxlbmd0aCgpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChzdHJp
bmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCk7CiB9CiAKIHNpemVfdCBXS1N0cmluZ0dldENo
YXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1
ZmZlckxlbmd0aCkKQEAgLTU4LDcgKzU2LDcgQEAgc2l6ZV90IFdLU3RyaW5nR2V0Q2hhcmFjdGVy
cyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIFdLQ2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmUKICAg
ICBzdGF0aWNfYXNzZXJ0KHNpemVvZihXS0NoYXIpID09IHNpemVvZihVQ2hhciksICJTaXplIG9m
IFdLQ2hhciBtdXN0IG1hdGNoIHNpemUgb2YgVUNoYXIiKTsKIAogICAgIHVuc2lnbmVkIHVuc2ln
bmVkQnVmZmVyTGVuZ3RoID0gc3RkOjptaW48c2l6ZV90PihidWZmZXJMZW5ndGgsIHN0ZDo6bnVt
ZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSk7Ci0gICAgYXV0byBzdWJzdHJpbmcgPSB0b0lt
cGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0cmluZygwLCB1bnNpZ25lZEJ1ZmZlckxl
bmd0aCk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5z
dHJpbmdWaWV3KCkuc3Vic3RyaW5nKDAsIHVuc2lnbmVkQnVmZmVyTGVuZ3RoKTsKIAogICAgIHN1
YnN0cmluZy5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChyZWludGVycHJldF9jYXN0PFVDaGFy
Kj4oYnVmZmVyKSk7CiAgICAgcmV0dXJuIHN1YnN0cmluZy5sZW5ndGgoKTsKQEAgLTY2LDcgKzY0
LDcgQEAgc2l6ZV90IFdLU3RyaW5nR2V0Q2hhcmFjdGVycyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYs
IFdLQ2hhciogYnVmZmVyLCBzaXplX3QgYnVmZmUKIAogc2l6ZV90IFdLU3RyaW5nR2V0TWF4aW11
bVVURjhDU3RyaW5nU2l6ZShXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7Ci0gICAgcmV0dXJuIHRv
SW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVuZ3RoKCkgKiAzICsgMTsKKyAgICByZXR1
cm4gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlbmd0aCgpICogMyAr
IDE7CiB9CiAKIGVudW0gU3RyaWN0VHlwZSB7IE5vblN0cmljdCA9IGZhbHNlLCBTdHJpY3QgPSB0
cnVlIH07CkBAIC03Nyw3ICs3NSw3IEBAIHNpemVfdCBXS1N0cmluZ0dldFVURjhDU3RyaW5nSW1w
bChXS1N0cmluZ1JlZiBzdHJpbmdSZWYsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1CiAgICAgaWYg
KCFidWZmZXJTaXplKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGF1dG8gc3RyaW5nVmlldyA9
IHRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCk7CisgICAgYXV0byBzdHJpbmdWaWV3ID0g
V2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpOwogCiAgICAgY2hhciogcCA9
IGJ1ZmZlcjsKICAgICBXVEY6OlVuaWNvZGU6OkNvbnZlcnNpb25SZXN1bHQgcmVzdWx0OwpAQCAt
MTA5LDMyICsxMDcsMzIgQEAgc2l6ZV90IFdLU3RyaW5nR2V0VVRGOENTdHJpbmdOb25TdHJpY3Qo
V0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBjaGFyKiBidWZmZXIsIHNpemUKIAogYm9vbCBXS1N0cmlu
Z0lzRXF1YWwoV0tTdHJpbmdSZWYgYVJlZiwgV0tTdHJpbmdSZWYgYlJlZikKIHsKLSAgICByZXR1
cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gdG9JbXBsKGJSZWYpLT5zdHJpbmdWaWV3
KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gV2Vi
S2l0Ojp0b0ltcGwoYlJlZiktPnN0cmluZ1ZpZXcoKTsKIH0KIAogYm9vbCBXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nKFdLU3RyaW5nUmVmIGFSZWYsIGNvbnN0IGNoYXIqIGIpCiB7CiAgICAg
Ly8gRklYTUU6IFNob3VsZCB3ZSBhZGQgYSBmYXN0IHBhdGggdGhhdCBhdm9pZHMgbWVtb3J5IGFs
bG9jYXRpb24gd2hlbiB0aGUgc3RyaW5nIGlzIGFsbCBBU0NJST8KICAgICAvLyBGSVhNRTogV2Ug
Y2FuIGRvIGV2ZW4gdGhlIGdlbmVyYWwgY2FzZSBtb3JlIGVmZmljaWVudGx5IGlmIHdlIHdyaXRl
IGEgZnVuY3Rpb24gaW4gU3RyaW5nVmlldyB0aGF0IHVuZGVyc3RhbmRzIFVURi04IEMgc3RyaW5n
cy4KLSAgICByZXR1cm4gdG9JbXBsKGFSZWYpLT5zdHJpbmdWaWV3KCkgPT0gV1RGOjpTdHJpbmc6
OmZyb21VVEY4KGIpOworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChhUmVmKS0+c3RyaW5nVmll
dygpID09IFdURjo6U3RyaW5nOjpmcm9tVVRGOChiKTsKIH0KIAogYm9vbCBXS1N0cmluZ0lzRXF1
YWxUb1VURjhDU3RyaW5nSWdub3JpbmdDYXNlKFdLU3RyaW5nUmVmIGFSZWYsIGNvbnN0IGNoYXIq
IGIpCiB7CiAgICAgLy8gRklYTUU6IFNob3VsZCB3ZSBhZGQgYSBmYXN0IHBhdGggdGhhdCBhdm9p
ZHMgbWVtb3J5IGFsbG9jYXRpb24gd2hlbiB0aGUgc3RyaW5nIGlzIGFsbCBBU0NJST8KICAgICAv
LyBGSVhNRTogV2UgY2FuIGRvIGV2ZW4gdGhlIGdlbmVyYWwgY2FzZSBtb3JlIGVmZmljaWVudGx5
IGlmIHdlIHdyaXRlIGEgZnVuY3Rpb24gaW4gU3RyaW5nVmlldyB0aGF0IHVuZGVyc3RhbmRzIFVU
Ri04IEMgc3RyaW5ncy4KLSAgICByZXR1cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0b0ltcGwo
YVJlZiktPnN0cmluZ1ZpZXcoKSwgV1RGOjpTdHJpbmc6OmZyb21VVEY4KGIpKTsKKyAgICByZXR1
cm4gZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShXZWJLaXQ6OnRvSW1wbChhUmVmKS0+c3RyaW5nVmll
dygpLCBXVEY6OlN0cmluZzo6ZnJvbVVURjgoYikpOwogfQogCiBXS1N0cmluZ1JlZiBXS1N0cmlu
Z0NyZWF0ZVdpdGhKU1N0cmluZyhKU1N0cmluZ1JlZiBqc1N0cmluZ1JlZikKIHsKICAgICBhdXRv
IGFwaVN0cmluZyA9IGpzU3RyaW5nUmVmID8gQVBJOjpTdHJpbmc6OmNyZWF0ZShqc1N0cmluZ1Jl
Zi0+c3RyaW5nKCkpIDogQVBJOjpTdHJpbmc6OmNyZWF0ZU51bGwoKTsKIAotICAgIHJldHVybiB0
b0FQSSgmYXBpU3RyaW5nLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJmFw
aVN0cmluZy5sZWFrUmVmKCkpOwogfQogCiBKU1N0cmluZ1JlZiBXS1N0cmluZ0NvcHlKU1N0cmlu
ZyhXS1N0cmluZ1JlZiBzdHJpbmdSZWYpCiB7CiAgICAgSlNDOjppbml0aWFsaXplVGhyZWFkaW5n
KCk7Ci0gICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUodG9JbXBsKHN0cmluZ1Jl
ZiktPnN0cmluZygpKS5sZWFrUmVmKCk7CisgICAgcmV0dXJuIE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUoV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nKCkpLmxlYWtSZWYoKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVHlwZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1R5cGUuY3BwCmluZGV4IGZkMjBlNmZmZjFlMDRmMDRh
N2U5OWNkNTVkNDg2YTRkMTNmOWE2OTEuLjQxNjlkYTg0ZmU3Yzc0ZWY1ODRlNWYyZWM1OTFiOWVl
NGRlNmZkYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVHlwZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tUeXBlLmNwcApAQCAtMjksMjEg
KzI5LDE5IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0KIFdLVHlwZUlEIFdLR2V0VHlwZUlEKFdLVHlw
ZVJlZiB0eXBlUmVmKQogewotICAgIHJldHVybiB0b0FQSSh0b0ltcGwodHlwZVJlZiktPnR5cGUo
KSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoV2ViS2l0Ojp0b0ltcGwodHlwZVJlZiktPnR5
cGUoKSk7CiB9CiAKIFdLVHlwZVJlZiBXS1JldGFpbihXS1R5cGVSZWYgdHlwZVJlZikKIHsKLSAg
ICB0b0ltcGwodHlwZVJlZiktPnJlZigpOworICAgIFdlYktpdDo6dG9JbXBsKHR5cGVSZWYpLT5y
ZWYoKTsKIAogICAgIHJldHVybiB0eXBlUmVmOwogfQogCiB2b2lkIFdLUmVsZWFzZShXS1R5cGVS
ZWYgdHlwZVJlZikKIHsKLSAgICB0b0ltcGwodHlwZVJlZiktPmRlcmVmKCk7CisgICAgV2ViS2l0
Ojp0b0ltcGwodHlwZVJlZiktPmRlcmVmKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9BUEkvYy9XS1VSTC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VS
TC5jcHAKaW5kZXggZjFhMWVhNTQ2ODIwODE3MTMxMjNiMTcyMGZiMzRiZmVlMjVkNWNjOC4uMTdj
OWE2MmQzMTc4ZDFiMDUwZjFkN2QxNjkxNTc4NDBkOTYwOWI0YiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMLmNwcApAQCAtMjgsNDkgKzI4LDQ3IEBACiAKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tVUkxHZXRUeXBl
SUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVSTDo6QVBJVHlwZSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9BUEkoQVBJOjpVUkw6OkFQSVR5cGUpOwogfQogCiBXS1VSTFJlZiBXS1VSTENy
ZWF0ZVdpdGhVVEY4Q1N0cmluZyhjb25zdCBjaGFyKiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIHRv
QVBJKCZBUEk6OlVSTDo6Y3JlYXRlKFN0cmluZzo6ZnJvbVVURjgoc3RyaW5nKSkubGVha1JlZigp
KTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkw6OmNyZWF0ZShTdHJpbmc6OmZy
b21VVEY4KHN0cmluZykpLmxlYWtSZWYoKSk7CiB9CiAKIFdLVVJMUmVmIFdLVVJMQ3JlYXRlV2l0
aEJhc2VVUkwoV0tVUkxSZWYgYmFzZVVSTCwgY29uc3QgY2hhciogcmVsYXRpdmUpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKCZBUEk6OlVSTDo6Y3JlYXRlKHRvSW1wbChiYXNlVVJMKSwgU3RyaW5nOjpm
cm9tVVRGOChyZWxhdGl2ZSkpLmxlYWtSZWYoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEko
JkFQSTo6VVJMOjpjcmVhdGUoV2ViS2l0Ojp0b0ltcGwoYmFzZVVSTCksIFN0cmluZzo6ZnJvbVVU
RjgocmVsYXRpdmUpKS5sZWFrUmVmKCkpOwogfQogCiBXS1N0cmluZ1JlZiBXS1VSTENvcHlTdHJp
bmcoV0tVUkxSZWYgdXJsKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsKS0+
c3RyaW5nKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBs
KHVybCktPnN0cmluZygpKTsKIH0KIAogYm9vbCBXS1VSTElzRXF1YWwoV0tVUkxSZWYgYSwgV0tV
UkxSZWYgYikKIHsKLSAgICByZXR1cm4gQVBJOjpVUkw6OmVxdWFscygqdG9JbXBsKGEpLCAqdG9J
bXBsKGIpKTsKKyAgICByZXR1cm4gQVBJOjpVUkw6OmVxdWFscygqV2ViS2l0Ojp0b0ltcGwoYSks
ICpXZWJLaXQ6OnRvSW1wbChiKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMQ29weUhvc3ROYW1l
KFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybCktPmhv
c3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwodXJs
KS0+aG9zdCgpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tVUkxDb3B5U2NoZW1lKFdLVVJMUmVmIHVy
bCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybCktPnByb3RvY29sKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCktPnByb3Rv
Y29sKCkpOwogfQogCiBXS19FWFBPUlQgV0tTdHJpbmdSZWYgV0tVUkxDb3B5UGF0aChXS1VSTFJl
ZiB1cmwpCiB7Ci0gICAgcmV0dXJuIHRvQ29waWVkQVBJKHRvSW1wbCh1cmwpLT5wYXRoKCkpOwor
ICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBsKHVybCktPnBhdGgo
KSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMQ29weUxhc3RQYXRoQ29tcG9uZW50KFdLVVJMUmVm
IHVybCkKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHVybCktPmxhc3RQYXRoQ29t
cG9uZW50KCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9JbXBs
KHVybCktPmxhc3RQYXRoQ29tcG9uZW50KCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQ
SS9jL1dLVVJMUmVxdWVzdC5jcHAKaW5kZXggMTQ5OTU2M2UzOWFlN2I5ODZkZTE3MzQ3Njc4ODVm
NmFhZDkyOGQzMi4uMjk2Y2FmN2MzMjc1ZTAyNTNkZmVhNmQ2ODg2NjkzMDJjYmE4MGE1NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tVUkxSZXF1ZXN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlcXVlc3QuY3BwCkBAIC0zMSwzOSAr
MzEsMzYgQEAKICNpbmNsdWRlICJXS0RhdGEuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKLXVz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOwotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBl
SUQgV0tVUkxSZXF1ZXN0R2V0VHlwZUlEKCkKIHsKLSAgICByZXR1cm4gdG9BUEkoQVBJOjpVUkxS
ZXF1ZXN0OjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OlVSTFJlcXVl
c3Q6OkFQSVR5cGUpOwogfQogCiBXS1VSTFJlcXVlc3RSZWYgV0tVUkxSZXF1ZXN0Q3JlYXRlV2l0
aFdLVVJMKFdLVVJMUmVmIHVybCkKIHsKLSAgICByZXR1cm4gdG9BUEkoJkFQSTo6VVJMUmVxdWVz
dDo6Y3JlYXRlKFVSTChVUkwoKSwgdG9JbXBsKHVybCktPnN0cmluZygpKSkubGVha1JlZigpKTsK
KyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUoVVJMKFVS
TCgpLCBXZWJLaXQ6OnRvSW1wbCh1cmwpLT5zdHJpbmcoKSkpLmxlYWtSZWYoKSk7CiB9CiAKIFdL
VVJMUmVmIFdLVVJMUmVxdWVzdENvcHlVUkwoV0tVUkxSZXF1ZXN0UmVmIHJlcXVlc3RSZWYpCiB7
Ci0gICAgcmV0dXJuIHRvQ29waWVkVVJMQVBJKHRvSW1wbChyZXF1ZXN0UmVmKS0+cmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkVVJMQVBJKFdlYktp
dDo6dG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSk7CiB9CiAKIFdL
VVJMUmVmIFdLVVJMUmVxdWVzdENvcHlGaXJzdFBhcnR5Rm9yQ29va2llcyhXS1VSTFJlcXVlc3RS
ZWYgcmVxdWVzdFJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRVUkxBUEkodG9JbXBsKHJlcXVl
c3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKS5maXJzdFBhcnR5Rm9yQ29va2llcygpKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6OnRvSW1wbChyZXF1ZXN0UmVmKS0+
cmVzb3VyY2VSZXF1ZXN0KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKSk7CiB9CiAKIFdLU3RyaW5n
UmVmIFdLVVJMUmVxdWVzdENvcHlIVFRQTWV0aG9kKFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVm
KQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNl
UmVxdWVzdCgpLmh0dHBNZXRob2QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEko
V2ViS2l0Ojp0b0ltcGwocmVxdWVzdFJlZiktPnJlc291cmNlUmVxdWVzdCgpLmh0dHBNZXRob2Qo
KSk7CiB9CiAKIFdLVVJMUmVxdWVzdFJlZiBXS1VSTFJlcXVlc3RDb3B5U2V0dGluZ0hUVFBCb2R5
KFdLVVJMUmVxdWVzdFJlZiByZXF1ZXN0UmVmLCBXS0RhdGFSZWYgYm9keSkKIHsKLSAgICBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdENvcHkodG9JbXBsKHJlcXVlc3RSZWYpLT5yZXNv
dXJjZVJlcXVlc3QoKSk7Ci0gICAgcmVxdWVzdENvcHkuc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNy
ZWF0ZShXS0RhdGFHZXRCeXRlcyhib2R5KSwgV0tEYXRhR2V0U2l6ZShib2R5KSkpOwotICAgIHJl
dHVybiB0b0FQSSgmQVBJOjpVUkxSZXF1ZXN0OjpjcmVhdGUocmVxdWVzdENvcHkpLmxlYWtSZWYo
KSk7CisgICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3RDb3B5KFdlYktpdDo6dG9J
bXBsKHJlcXVlc3RSZWYpLT5yZXNvdXJjZVJlcXVlc3QoKSk7CisgICAgcmVxdWVzdENvcHkuc2V0
SFRUUEJvZHkoV2ViQ29yZTo6Rm9ybURhdGE6OmNyZWF0ZShXS0RhdGFHZXRCeXRlcyhib2R5KSwg
V0tEYXRhR2V0U2l6ZShib2R5KSkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OlVS
TFJlcXVlc3Q6OmNyZWF0ZShyZXF1ZXN0Q29weSkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS1VS
TFJlcXVlc3RTZXREZWZhdWx0VGltZW91dEludGVydmFsKGRvdWJsZSB0aW1lb3V0SW50ZXJ2YWwp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VSTFJlc3BvbnNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCmluZGV4IDhm
MWZhOWFkNmUzNmU5OGFjNDEzZWJhOWVmOTU1M2NhZDQwNjM4Y2YuLjE5OTBjMDMzZWQ4NWNhNmFm
NDVhMDdlOTYxYWYwZTI0ODFkNDM3NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0FQSS9jL1dLVVJMUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9j
L1dLVVJMUmVzcG9uc2UuY3BwCkBAIC0zMCwzOSArMzAsMzcgQEAKICNpbmNsdWRlICJXS0FQSUNh
c3QuaCIKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAKLXVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7Ci0K
IFdLVHlwZUlEIFdLVVJMUmVzcG9uc2VHZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShB
UEk6OlVSTFJlc3BvbnNlOjpBUElUeXBlKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6
OlVSTFJlc3BvbnNlOjpBUElUeXBlKTsKIH0KIAogV0tVUkxSZWYgV0tVUkxSZXNwb25zZUNvcHlV
UkwoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICByZXR1cm4gdG9Db3BpZWRV
UkxBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLnVybCgpKTsKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZFVSTEFQSShXZWJLaXQ6OnRvSW1wbChyZXNwb25zZVJl
ZiktPnJlc291cmNlUmVzcG9uc2UoKS51cmwoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVVJMUmVz
cG9uc2VDb3B5TUlNRVR5cGUoV0tVUkxSZXNwb25zZVJlZiByZXNwb25zZVJlZikKIHsKLSAgICBy
ZXR1cm4gdG9Db3BpZWRBUEkodG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgp
Lm1pbWVUeXBlKCkpOworICAgIHJldHVybiBXZWJLaXQ6OnRvQ29waWVkQVBJKFdlYktpdDo6dG9J
bXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogfQogCiBp
bnQzMl90IFdLVVJMUmVzcG9uc2VIVFRQU3RhdHVzQ29kZShXS1VSTFJlc3BvbnNlUmVmIHJlc3Bv
bnNlUmVmKQogewotICAgIHJldHVybiB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3Bv
bnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVzcG9u
c2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuaHR0cFN0YXR1c0NvZGUoKTsKIH0KIAogV0tTdHJp
bmdSZWYgV0tVUkxSZXNwb25zZUNvcHlTdWdnZXN0ZWRGaWxlbmFtZShXS1VSTFJlc3BvbnNlUmVm
IHJlc3BvbnNlUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocmVzcG9uc2VS
ZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CisgICAgcmV0dXJu
IFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJj
ZVJlc3BvbnNlKCkuc3VnZ2VzdGVkRmlsZW5hbWUoKSk7CiB9CiAKIGJvb2wgV0tVUkxSZXNwb25z
ZUlzQXR0YWNobWVudChXS1VSTFJlc3BvbnNlUmVmIHJlc3BvbnNlUmVmKQogewotICAgIHJldHVy
biB0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNvdXJjZVJlc3BvbnNlKCkuaXNBdHRhY2htZW50KCk7
CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHJlc3BvbnNlUmVmKS0+cmVzb3VyY2VSZXNwb25z
ZSgpLmlzQXR0YWNobWVudCgpOwogfQogCiB1aW50MzJfdCBXS1VSTFJlc3BvbnNlR2V0RXhwZWN0
ZWRDb250ZW50TGVuZ3RoKFdLVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2VSZWYpCiB7Ci0gICAgcmV0
dXJuIHRvSW1wbChyZXNwb25zZVJlZiktPnJlc291cmNlUmVzcG9uc2UoKS5leHBlY3RlZENvbnRl
bnRMZW5ndGgoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocmVzcG9uc2VSZWYpLT5yZXNv
dXJjZVJlc3BvbnNlKCkuZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1VzZXJDb250ZW50VVJMUGF0dGVybi5jcHAKaW5k
ZXggY2VlZGM3Njk2MzMxMzA3MDYyMzk0YWY1NzU3MmU2OWVmNDQ0ZTg4OC4uZmRlYmE3OTcxMDVh
NzgyNjMxOTUyYWNkYWI3YjNiYjg4M2NjZWY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvV0tVc2VyQ29udGVudFVSTFBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL1dLVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmNwcApAQCAtMzAsMzkgKzMw
LDM3IEBACiAjaW5jbHVkZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tTdHJpbmcuaCIKIAot
dXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLQogV0tUeXBlSUQgV0tVc2VyQ29udGVudFVSTFBhdHRl
cm5HZXRUeXBlSUQoKQogewotICAgIHJldHVybiB0b0FQSShBUEk6OlVzZXJDb250ZW50VVJMUGF0
dGVybjo6QVBJVHlwZSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoQVBJOjpVc2VyQ29udGVu
dFVSTFBhdHRlcm46OkFQSVR5cGUpOwogfQogCiBXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiBX
S1VzZXJDb250ZW50VVJMUGF0dGVybkNyZWF0ZShXS1N0cmluZ1JlZiBwYXR0ZXJuUmVmKQogewot
ICAgIHJldHVybiB0b0FQSSgmQVBJOjpVc2VyQ29udGVudFVSTFBhdHRlcm46OmNyZWF0ZSh0b0lt
cGwocGF0dGVyblJlZiktPnN0cmluZygpKS5sZWFrUmVmKCkpOworICAgIHJldHVybiBXZWJLaXQ6
OnRvQVBJKCZBUEk6OlVzZXJDb250ZW50VVJMUGF0dGVybjo6Y3JlYXRlKFdlYktpdDo6dG9JbXBs
KHBhdHRlcm5SZWYpLT5zdHJpbmcoKSkubGVha1JlZigpKTsKIH0KIAogV0tTdHJpbmdSZWYgV0tV
c2VyQ29udGVudFVSTFBhdHRlcm5Db3B5SG9zdChXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiB1
cmxQYXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsUGF0dGVy
blJlZiktPmhvc3QoKSk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9Db3BpZWRBUEkoV2ViS2l0Ojp0
b0ltcGwodXJsUGF0dGVyblJlZiktPmhvc3QoKSk7CiB9CiAKIFdLU3RyaW5nUmVmIFdLVXNlckNv
bnRlbnRVUkxQYXR0ZXJuQ29weVNjaGVtZShXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiB1cmxQ
YXR0ZXJuUmVmKQogewotICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwodXJsUGF0dGVyblJl
ZiktPnNjaGVtZSgpKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0NvcGllZEFQSShXZWJLaXQ6OnRv
SW1wbCh1cmxQYXR0ZXJuUmVmKS0+c2NoZW1lKCkpOwogfQogCiBib29sIFdLVXNlckNvbnRlbnRV
UkxQYXR0ZXJuSXNWYWxpZChXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0ZXJuUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJlZiktPmlzVmFsaWQoKTsKKyAgICBy
ZXR1cm4gV2ViS2l0Ojp0b0ltcGwodXJsUGF0dGVyblJlZiktPmlzVmFsaWQoKTsKIH0KIAogYm9v
bCBXS1VzZXJDb250ZW50VVJMUGF0dGVybk1hdGNoZXNVUkwoV0tVc2VyQ29udGVudFVSTFBhdHRl
cm5SZWYgdXJsUGF0dGVyblJlZiwgV0tVUkxSZWYgdXJsUmVmKQogewotICAgIHJldHVybiB0b0lt
cGwodXJsUGF0dGVyblJlZiktPm1hdGNoZXNVUkwodG9XVEZTdHJpbmcodXJsUmVmKSk7CisgICAg
cmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5tYXRjaGVzVVJMKFdlYktpdDo6
dG9XVEZTdHJpbmcodXJsUmVmKSk7CiB9CiAKIGJvb2wgV0tVc2VyQ29udGVudFVSTFBhdHRlcm5N
YXRjaGVzU3ViZG9tYWlucyhXS1VzZXJDb250ZW50VVJMUGF0dGVyblJlZiB1cmxQYXR0ZXJuUmVm
KQogewotICAgIHJldHVybiB0b0ltcGwodXJsUGF0dGVyblJlZiktPm1hdGNoZXNTdWJkb21haW5z
KCk7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHVybFBhdHRlcm5SZWYpLT5tYXRjaGVzU3Vi
ZG9tYWlucygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fp
cm8vV0tJbWFnZUNhaXJvLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL2NhaXJvL1dL
SW1hZ2VDYWlyby5jcHAKaW5kZXggMzBhZjRkZmE0MWY3MjBhMWE5NWI1NzI4ZDNmODJmOGMwMzg3
Njg3Mi4uY2NmY2M2NjhmMWY1NDE3ZjUwMGMwYjI0OGEzNTQ4OTk2NmY5MWUxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvY2Fpcm8vV0tJbWFnZUNhaXJvLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9jYWlyby9XS0ltYWdlQ2Fpcm8uY3BwCkBAIC0z
NCwxOSArMzQsMTYgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtQ29udGV4dENhaXJvLmg+
CiAjaW5jbHVkZSA8Y2Fpcm8uaD4KIAotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwotCiBjYWlyb19zdXJmYWNlX3QqIFdLSW1hZ2VDcmVhdGVDYWlyb1N1
cmZhY2UoV0tJbWFnZVJlZiBpbWFnZVJlZikKIHsKICAgICAvLyBXZSBjYW5ub3QgcGFzcyBhIFJl
ZlB0ciB0aHJvdWdoIHRoZSBBUEkgaGVyZSwgc28gd2UganVzdCBsZWFrIHRoZSByZWZlcmVuY2Uu
Ci0gICAgcmV0dXJuIHRvSW1wbChpbWFnZVJlZiktPmJpdG1hcCgpLmNyZWF0ZUNhaXJvU3VyZmFj
ZSgpLmxlYWtSZWYoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoaW1hZ2VSZWYpLT5iaXRt
YXAoKS5jcmVhdGVDYWlyb1N1cmZhY2UoKS5sZWFrUmVmKCk7CiB9CiAKIFdLSW1hZ2VSZWYgV0tJ
bWFnZUNyZWF0ZUZyb21DYWlyb1N1cmZhY2UoY2Fpcm9fc3VyZmFjZV90KiBzdXJmYWNlLCBXS0lt
YWdlT3B0aW9ucyBvcHRpb25zKQogewotICAgIEludFNpemUgaW1hZ2VTaXplKGNhaXJvX2ltYWdl
X3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWln
aHQoc3VyZmFjZSkpOwotICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJJbWFnZTo6Y3JlYXRlKGltYWdl
U2l6ZSwgdG9JbWFnZU9wdGlvbnMob3B0aW9ucykpOworICAgIFdlYkNvcmU6OkludFNpemUgaW1h
Z2VTaXplKGNhaXJvX2ltYWdlX3N1cmZhY2VfZ2V0X3dpZHRoKHN1cmZhY2UpLCBjYWlyb19pbWFn
ZV9zdXJmYWNlX2dldF9oZWlnaHQoc3VyZmFjZSkpOworICAgIGF1dG8gd2ViSW1hZ2UgPSBXZWJL
aXQ6OldlYkltYWdlOjpjcmVhdGUoaW1hZ2VTaXplLCBXZWJLaXQ6OnRvSW1hZ2VPcHRpb25zKG9w
dGlvbnMpKTsKICAgICBhdXRvIGdyYXBoaWNzQ29udGV4dCA9IHdlYkltYWdlLT5iaXRtYXAoKS5j
cmVhdGVHcmFwaGljc0NvbnRleHQoKTsKIAogICAgIGNhaXJvX3QqIGNyID0gZ3JhcGhpY3NDb250
ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y3IoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0FQSS9jL2N1cmwvV0tDZXJ0aWZpY2F0ZUluZm9DdXJsLmNwcAppbmRleCA3N2Yw
MmZmMmJhZjk3ODVhZDczZTMwZjBmZWMxMmZhNTBlMTViYmVmLi42NGQzMDE5MmEzNWJhMjk0OTRi
MzVhNjdmMDFiYjNiODBlMDIzNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9jdXJsL1dLQ2VydGlmaWNhdGVJbmZvQ3VybC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQVBJL2MvY3VybC9XS0NlcnRpZmljYXRlSW5mb0N1cmwuY3BwCkBAIC0zNCw4ICszNCw2
IEBACiAKICNpbmNsdWRlIDxXZWJDb3JlL0NlcnRpZmljYXRlSW5mby5oPgogCi11c2luZyBuYW1l
c3BhY2UgV2ViS2l0OwotCiB1c2luZyBDZXJ0aWZpY2F0ZSA9IFZlY3Rvcjx1aW50OF90PjsKIHVz
aW5nIENlcnRpZmljYXRlQ2hhaW4gPSBWZWN0b3I8Q2VydGlmaWNhdGU+OwogCkBAIC01NSwxOSAr
NTMsMTkgQEAgV0tDZXJ0aWZpY2F0ZUluZm9SZWYgV0tDZXJ0aWZpY2F0ZUluZm9DcmVhdGVXaXRo
Q2VydGZpY2F0ZUNoYWluKFdLQXJyYXlSZWYgY2VydGkKIAogaW50IFdLQ2VydGlmaWNhdGVJbmZv
R2V0VmVyaWZpY2F0aW9uRXJyb3IoV0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJbmZv
UmVmKQogewotICAgIHJldHVybiB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNh
dGVJbmZvKCkudmVyaWZpY2F0aW9uRXJyb3IoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwo
Y2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkudmVyaWZpY2F0aW9uRXJyb3Io
KTsKIH0KIAogc2l6ZV90IFdLQ2VydGlmaWNhdGVJbmZvR2V0Q2VydGlmaWNhdGVDaGFpblNpemUo
V0tDZXJ0aWZpY2F0ZUluZm9SZWYgY2VydGlmaWNhdGVJbmZvUmVmKQogewotICAgIHJldHVybiB0
b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVD
aGFpbigpLnNpemUoKTsKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwoY2VydGlmaWNhdGVJbmZv
UmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlmaWNhdGVDaGFpbigpLnNpemUoKTsKIH0KIAog
V0tEYXRhUmVmIFdLQ2VydGlmaWNhdGVJbmZvQ29weUNlcnRpZmljYXRlQXRJbmRleChXS0NlcnRp
ZmljYXRlSW5mb1JlZiBjZXJ0aWZpY2F0ZUluZm9SZWYsIHNpemVfdCBpbmRleCkKIHsKLSAgICBp
ZiAodG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmlj
YXRlQ2hhaW4oKS5zaXplKCkgPD0gaW5kZXgpCisgICAgaWYgKFdlYktpdDo6dG9JbXBsKGNlcnRp
ZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRpZmljYXRlQ2hhaW4oKS5zaXpl
KCkgPD0gaW5kZXgpCiAgICAgICAgIHJldHVybiBXZWJLaXQ6OnRvQVBJKCZBUEk6OkRhdGE6OmNy
ZWF0ZShudWxscHRyLCAwKS5sZWFrUmVmKCkpOwogCi0gICAgY29uc3QgYXV0byYgY2VydGlmaWNh
dGUgPSB0b0ltcGwoY2VydGlmaWNhdGVJbmZvUmVmKS0+Y2VydGlmaWNhdGVJbmZvKCkuY2VydGlm
aWNhdGVDaGFpbigpLmF0KGluZGV4KTsKKyAgICBjb25zdCBhdXRvJiBjZXJ0aWZpY2F0ZSA9IFdl
YktpdDo6dG9JbXBsKGNlcnRpZmljYXRlSW5mb1JlZiktPmNlcnRpZmljYXRlSW5mbygpLmNlcnRp
ZmljYXRlQ2hhaW4oKS5hdChpbmRleCk7CiAgICAgcmV0dXJuIFdlYktpdDo6dG9BUEkoJkFQSTo6
RGF0YTo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdW5zaWduZWQgY2hhcio+KGNlcnRp
ZmljYXRlLmRhdGEoKSksIGNlcnRpZmljYXRlLnNpemUoKSkubGVha1JlZigpKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>