<?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>196601</bug_id>
          
          <creation_ts>2019-04-04 08:02:11 -0700</creation_ts>
          <short_desc>[ATK] Cleanup accessible wrapper base class</short_desc>
          <delta_ts>2019-04-08 01:11:26 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Accessibility</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>Gtk, InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>jdiggs</cc>
    
    <cc>mario</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1524225</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-04 08:02:11 -0700</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524226</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-04-04 08:03:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/49606912&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524227</commentid>
    <comment_count>2</comment_count>
      <attachid>366713</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-04 08:11:49 -0700</bug_when>
    <thetext>Created attachment 366713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524634</commentid>
    <comment_count>3</comment_count>
      <attachid>366803</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-05 00:37:11 -0700</bug_when>
    <thetext>Created attachment 366803
Rebased patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1524651</commentid>
    <comment_count>4</comment_count>
      <attachid>366803</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2019-04-05 03:00:42 -0700</bug_when>
    <thetext>Comment on attachment 366803
Rebased patch

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

It looks good to me, only one comment on that there&apos;s a part of the code that looks like could be removed altogether (either now or in a follow-up patch)

&gt; Source/WebCore/accessibility/atk/WebKitAccessible.cppSource/WebCore/accessibility/atk/WebKitAccessibleWrapperAtk.cpp:369
&gt; +        auto* atkParent = parent ? ATK_OBJECT(parent-&gt;wrapper()) : nullptr;

It seems like this will always yield nullptr to atkParent, since `parent == nullptr` already if you made it here... meaning that the for loop below won&apos;t ever be executed.

Actually, it seems that the whole `(!parent &amp;&amp; isRootObject(coreObject)) { ... }` block can be removed, as all we can do if `parent == nullptr` at this point is to return -1, which is what the if block right after this one does.

However, I think it&apos;s better to keep this for now as this patch is just about cleaning things up and translating, so feel free to address that in a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1525139</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2019-04-08 01:11:26 -0700</bug_when>
    <thetext>Committed r243970: &lt;https://trac.webkit.org/changeset/243970&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366713</attachid>
            <date>2019-04-04 08:11:49 -0700</date>
            <delta_ts>2019-04-05 00:37:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wcore-a11y-accessible-cleanup.diff</filename>
            <type>text/plain</type>
            <size>67894</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNjJhZmM1NTg3Ni4uMDQxNGYxZTUzNTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOS0wNC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0FUS10gQ2xlYW51cCBhY2Nlc3NpYmxlIHdyYXBwZXIgYmFz
ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk2NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2xlYW51cHM6CisKKyAgICAgICAgIC0gUmVuYW1lIFdlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
IGNwcCBhbmQgaGVhZGVyIGFzIFdlYktpdEFjY2Vzc2libGUgZm9yIGNvbnNpc3RlbmN5IHdpdGgg
dGhlIGNsYXNzIG5hbWUuCisgICAgICAgICAtIFVzZSBXRUJLSVRfREVGSU5FX1RZUEUgaW5zdGVh
ZCBvZiBjdXN0b20gdHlwZSByZWdpc3RyYXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBDU3Ry
aW5ncyB1c2VkIGluIHByaXZhdGUKKyAgICAgICAgICAgc3RydWN0IGFyZSBubyBsb25nZXIgbGVh
a2VkLgorICAgICAgICAgLSBNb3ZlIGNvcmUgb2JqZWN0IHBvaW50ZXIgdG8gdGhlIHByaXZhdGUg
c3RydWN0LgorICAgICAgICAgLSBSZW1vdmUgY29uZnVzaW5nIGNvcmUoKSBmdW5jdGlvbiBhbmQg
c2ltcGx5IGdldCB0aGUgY29yZSBvYmplY3QgZnJvbSB0aGUgcHJpdmF0ZSBzdHJ1Y3QuCisgICAg
ICAgICAtIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBhbmQgb3RoZXIgY29kaW5nIHN0eWxlIGlz
c3Vlcy4KKyAgICAgICAgIC0gUmVuYW1lIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkgYXMgd2Vi
a2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkgYW5kIHVzZSBXZWJLaXRBY2Nl
c3NpYmxlIGFzCisgICAgICAgICAgIGluc3RhbmNlIHBhcmFtZXRlci4KKyAgICAgICAgIC0gTWFr
ZSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdCgpIHJldHVybiBhIHJlZmVy
ZW5jZSwgc2luY2Ugd2UgdXNlIGEgZmFsbGJhY2sgb2JqZWN0IG9uIGRldGFjaCBpdAorICAgICAg
ICAgICBuZXZlciByZXR1cm5zIG51bGxwdHIuCisgICAgICAgICAtIE1vdmUgb2JqZWN0Rm9jdXNl
ZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKCkgdG8gV2ViS2l0QWNjZXNzaWJsZVV0aWwuCisKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9i
amVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2li
bGVHZXROYW1lKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbik6Cisg
ICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KToKKyAgICAgICAgKGlzUm9v
dE9iamVjdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KToKKyAgICAgICAg
KHdlYmtpdEFjY2Vzc2libGVHZXROQ2hpbGRyZW4pOgorICAgICAgICAod2Via2l0QWNjZXNzaWJs
ZVJlZkNoaWxkKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KToK
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGF0a1Jv
bGUpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldFJvbGUpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVJlZlN0YXRlU2V0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZSZWxh
dGlvblNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW5pdCk6CisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X2NsYXNzX2luaXQpOgorICAgICAgICAoaW50ZXJmYWNlTWFza0Zyb21PYmplY3QpOgorICAgICAg
ICAodW5pcXVlQWNjZXNzaWJpbGl0eVR5cGVOYW1lKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlU
eXBlRnJvbU9iamVjdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlTmV3KToKKyAgICAgICAg
KHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVEZXRhY2gpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQp
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmguCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGluay5jcHA6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcDoKKyAgICAgICAgKGNvcmUpOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldEtleWJpbmRpbmcpOgorICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldE5hbWUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwOgorICAgICAgICAoY29y
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZURvY3VtZW50LmNwcDoKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoZG9jdW1lbnRBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZUVkaXRhYmxlVGV4dC5jcHA6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcDoKKyAg
ICAgICAgKGNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VJbWFnZS5jcHA6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKHdlYmtpdEFj
Y2Vzc2libGVJbWFnZUdldEltYWdlRGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwOgorICAgICAgICAo
Y29yZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRhYmxlLmNwcDoKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwOgorICAgICAgICAoY29y
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwOgorICAgICAgICAoY29yZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcDoKKyAgICAgICAgKGNvcmUpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAg
ICAgKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHA6CisKIDIwMTktMDQtMDQgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtBVEtdIFVzZSBhIHNtYXJ0
IHBvaW50ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3Qgd3JhcHBlciBhbmQgcmVtb3ZlIEdUSyBz
cGVjaWZpYyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IGE3OWQ0ZTdiNTM2Li4xN2U3YjRj
MDI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTIzLDYgKzIzLDcgQEAKIAogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKIGFjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2li
aWxpdHlPYmplY3RBdGsuY3BwCithY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNw
cAogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKIGFjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VBY3Rpb24uY3BwIEBuby11bmlm
eQogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5j
cHAKQEAgLTM3LDcgKzM4LDYgQEAgYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRhYmxlQ2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcAogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVZhbHVlLmNwcAogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3Bw
Ci1hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKIAogZWRp
dGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggYmIxODNkMTYy
ZmMuLjUwNWQ2OTQ1MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUg
IkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgorI2lu
Y2x1ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZy
b20gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBw
ZXJBdGsuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlLmNwcAppbmRleCBhMTQ4MGE2NmEyYS4uY2NlNTE3MGE0ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
TnVhbnRpIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gQWxvbnpvCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxOSBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0
IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCiAgKiBQb3J0aW9ucyBmcm9tIE1vemls
bGEgYTExeSwgY29weXJpZ2h0IGFzIGZvbGxvd3M6CkBAIC0zMCw3ICszMCw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
LmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogCiAjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKQogCkBAIC02OSwxMSArNjksMTQgQEAKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgogI2luY2x1
ZGUgPGdsaWIvZ3ByaW50Zi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
c3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlUHJpdmF0ZSB7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0OworCiAgICAgLy8gQ2FjaGVkIGRhdGEgZm9yIEF0a09iamVjdC4KICAgICBDU3Ry
aW5nIGFjY2Vzc2libGVOYW1lOwogICAgIENTdHJpbmcgYWNjZXNzaWJsZURlc2NyaXB0aW9uOwpA
QCAtOTIsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGVQcml2YXRlIHsKICAgICBD
U3RyaW5nIGltYWdlRGVzY3JpcHRpb247CiB9OwogCi0jZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxF
X0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VC
S0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZVByaXZhdGUpKQorV0VCS0lUX0RF
RklORV9UWVBFKFdlYktpdEFjY2Vzc2libGUsIHdlYmtpdF9hY2Nlc3NpYmxlLCBBVEtfVFlQRV9P
QkpFQ1QpCiAKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmYWxsYmFja09iamVjdCgpCiB7
CkBAIC0xMDAsMjEgKzEwMywxMyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmFsbGJh
Y2tPYmplY3QoKQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlKEF0a09iamVjdCogb2JqZWN0KQotewotICAgIGlmICghV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gd2Via2l0
QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0
KSk7Ci19Ci0KIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE5hbWUoQXRr
T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIGF1dG8qIGFjY2Vzc2li
bGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNj
ZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOwotICAgIGNvcmUob2JqZWN0KS0+YWNjZXNzaWJpbGl0
eVRleHQodGV4dE9yZGVyKTsKKyAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmFjY2Vzc2li
aWxpdHlUZXh0KHRleHRPcmRlcik7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHQgOiB0ZXh0
T3JkZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgaGVyZSBiZWNhdXNlIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lbnRUZXh0KCkKQEAgLTEyNywxOSArMTIy
LDE5IEBAIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE5hbWUoQXRrT2Jq
ZWN0KiBvYmplY3QpCiAgICAgICAgIC8vIGluIHRoZSBvcmRlciBkZWZpbmVkIGJ5IHRoYXQgc3Bl
Yy4gU28gdGFrZSB0aGUgZmlyc3QgdGhpbmcgdGhhdCBvdXIgcGxhdGZvcm0KICAgICAgICAgLy8g
ZG9lcyBub3QgZXhwb3NlIHZpYSB0aGUgQXRrT2JqZWN0IGRlc2NyaXB0aW9uLgogICAgICAgICBp
ZiAodGV4dC50ZXh0U291cmNlICE9IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwICYmIHRl
eHQudGV4dFNvdXJjZSAhPSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkKLSAgICAg
ICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVk
QWNjZXNzaWJsZU5hbWUsIHRleHQudGV4dCk7CisgICAgICAgICAgICByZXR1cm4gd2Via2l0QWNj
ZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoYWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWNj
ZXNzaWJsZU5hbWUsIHRleHQudGV4dC51dGY4KCkpOwogICAgIH0KIAotICAgIHJldHVybiBjYWNo
ZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZU5hbWUsICIi
KTsKKyAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHko
YWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWNjZXNzaWJsZU5hbWUsICIiKTsKIH0KIAogc3RhdGljIGNv
bnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0RGVzY3JpcHRpb24oQXRrT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2Jq
ZWN0KSwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJ
VF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRf
QUNDRVNTSUJMRShvYmplY3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52
YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4
dD4gdGV4dE9yZGVyOwotICAgIGNvcmUob2JqZWN0KS0+YWNjZXNzaWJpbGl0eVRleHQodGV4dE9y
ZGVyKTsKKyAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRl
eHRPcmRlcik7CiAKICAgICBib29sIG5hbWVUZXh0QXZhaWxhYmxlID0gZmFsc2U7CiAgICAgZm9y
IChjb25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7CkBAIC0xNDcsMTcgKzE0MiwxNyBAQCBz
dGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbihBdGtPYmpl
Y3QqIG9iamVjdCkKICAgICAgICAgLy8gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhhdCBzcGVj
LiBTbyB0YWtlIHRoZSBmaXJzdCB0aGluZyB0aGF0IG91ciBwbGF0Zm9ybQogICAgICAgICAvLyBk
b2VzIG5vdCBleHBvc2UgdmlhIHRoZSBBdGtPYmplY3QgbmFtZS4KICAgICAgICAgaWYgKHRleHQu
dGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCB8fCB0ZXh0LnRleHRT
b3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpCi0gICAgICAgICAgICBy
ZXR1cm4gY2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZEFjY2Vzc2li
bGVEZXNjcmlwdGlvbiwgdGV4dC50ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiB3ZWJraXRBY2Nl
c3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtDYWNoZWRBY2Nl
c3NpYmxlRGVzY3JpcHRpb24sIHRleHQudGV4dC51dGY4KCkpOwogCiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIG90aGVyIHRleHQgYWx0ZXJuYXRpdmUsIHRoZSB0aXRsZSB0YWcgY29udGVudHMg
d2lsbCBoYXZlIGJlZW4KICAgICAgICAgLy8gdXNlZCBmb3IgdGhlIEF0a09iamVjdCBuYW1lLiBX
ZSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSBpdCBoZXJlLgogICAgICAgICBpZiAodGV4dC50ZXh0
U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiBuYW1lVGV4dEF2
YWlsYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9i
amVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZURlc2NyaXB0aW9uLCB0ZXh0LnRleHQpOworICAgICAg
ICAgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KGFj
Y2Vzc2libGUsIEF0a0NhY2hlZEFjY2Vzc2libGVEZXNjcmlwdGlvbiwgdGV4dC50ZXh0LnV0Zjgo
KSk7CiAKICAgICAgICAgbmFtZVRleHRBdmFpbGFibGUgPSB0cnVlOwogICAgIH0KIAotICAgIHJl
dHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJs
ZURlc2NyaXB0aW9uLCAiIik7CisgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJl
dHVybkF0a1Byb3BlcnR5KGFjY2Vzc2libGUsIEF0a0NhY2hlZEFjY2Vzc2libGVEZXNjcmlwdGlv
biwgIiIpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVBdGtSZWxhdGlvbkJ5VHlwZShBdGtSZWxh
dGlvblNldCogcmVsYXRpb25TZXQsIEF0a1JlbGF0aW9uVHlwZSByZWxhdGlvblR5cGUpCkBAIC0x
OTIsOSArMTg3LDkgQEAgc3RhdGljIHZvaWQgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVj
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGsKICAgICAgICAgICAgICAgICBh
dGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVM
QVRJT05fTEFCRUxfRk9SLCBBVEtfT0JKRUNUKGZpZWxkc2V0LT53cmFwcGVyKCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29udHJvbCA9IGNvcmVPYmplY3QtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50
KCkpIHsKKyAgICB9IGVsc2UgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvbnRyb2wgPSBjb3Jl
T2JqZWN0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpKQogICAgICAgICBh
dGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVM
QVRJT05fTEFCRUxfRk9SLCBBVEtfT0JKRUNUKGNvbnRyb2wtPndyYXBwZXIoKSkpOwotICAgIH0g
ZWxzZSB7CisgICAgZWxzZSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzOwogICAgICAgICBjb3Jl
T2JqZWN0LT5hcmlhTGFiZWxsZWRCeUVsZW1lbnRzKGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMpOwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBhcmlhTGFiZWxs
ZWRCeUVsZW1lbnRzKQpAQCAtMjk0LDggKzI4OSw2IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0
aW9uU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRr
CiAjZW5kaWYKIH0KIAotc3RhdGljIGdwb2ludGVyIHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFz
cyA9IG51bGxwdHI7Ci0KIHN0YXRpYyBib29sIGlzUm9vdE9iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb3JlT2JqZWN0KQogewogICAgIC8vIFRoZSByb290IGFjY2Vzc2libGUgb2JqZWN0IGlu
IFdlYkNvcmUgaXMgYWx3YXlzIGFuIG9iamVjdCB3aXRoCkBAIC0zMDQsODAgKzI5Nyw1NiBAQCBz
dGF0aWMgYm9vbCBpc1Jvb3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RD
aGlsZCA9IGNvcmVPYmplY3QtPmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoIWZpcnN0Q2hpbGQgfHwg
IWZpcnN0Q2hpbGQtPmlzV2ViQXJlYSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIEF0a09iamVjdCogYXRrUGFyZW50T2ZSb290T2JqZWN0
KEF0a09iamVjdCogb2JqZWN0KQotewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmpl
Y3QgPSBjb3JlKG9iamVjdCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVBhcmVudCA9
IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotCi0gICAgLy8gVGhlIHRvcCBs
ZXZlbCBvYmplY3QgY2xhaW1zIHRvIG5vdCBoYXZlIGEgcGFyZW50LiBUaGlzIG1ha2VzIGl0Ci0g
ICAgLy8gaW1wb3NzaWJsZSBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyB0byBhc2NlbmQgdGhl
IGFjY2Vzc2libGUKLSAgICAvLyBoaWVyYXJjaHkgYWxsIHRoZSB3YXkgdG8gdGhlIGFwcGxpY2F0
aW9uLiAoQnVnIDMwNDg5KQotICAgIGlmICghY29yZVBhcmVudCAmJiBpc1Jvb3RPYmplY3QoY29y
ZU9iamVjdCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZU9iamVjdC0+ZG9j
dW1lbnQoKTsKLSAgICAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIHJldHVybiBjb3JlUGFyZW50ID8gQVRLX09CSkVDVChjb3JlUGFyZW50LT53
cmFwcGVyKCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxk
LT5pc1dlYkFyZWEoKTsKIH0KIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUdl
dFBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFj
Y2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisgICAgYXV0
byogYWNjZXNzaWJsZSA9IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CisgICAgcmV0dXJuVmFs
SWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCiAgICAg
Ly8gQ2hlY2sgZmlyc3QgaWYgdGhlIHBhcmVudCBoYXMgYmVlbiBhbHJlYWR5IHNldC4KLSAgICBB
dGtPYmplY3QqIGFjY2Vzc2libGVQYXJlbnQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vz
c2libGVQYXJlbnRDbGFzcyktPmdldF9wYXJlbnQob2JqZWN0KTsKKyAgICBBdGtPYmplY3QqIGFj
Y2Vzc2libGVQYXJlbnQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdF9hY2Nlc3NpYmxlX3BhcmVu
dF9jbGFzcyktPmdldF9wYXJlbnQob2JqZWN0KTsKICAgICBpZiAoYWNjZXNzaWJsZVBhcmVudCkK
ICAgICAgICAgcmV0dXJuIGFjY2Vzc2libGVQYXJlbnQ7CiAKICAgICAvLyBQYXJlbnQgbm90IHNl
dCB5ZXQsIHNvIHRyeSB0byBmaW5kIGl0IGluIHRoZSBoaWVyYXJjaHkuCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKLSAgICBpZiAoIWNvcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVBh
cmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotCi0gICAgaWYgKCFj
b3JlUGFyZW50ICYmIGlzUm9vdE9iamVjdChjb3JlT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIGF0
a1BhcmVudE9mUm9vdE9iamVjdChvYmplY3QpOworICAgIGF1dG8qIGNvcmVPYmplY3QgPSBhY2Nl
c3NpYmxlLT5wcml2LT5vYmplY3Q7CisgICAgYXV0byogY29yZVBhcmVudCA9IGNvcmVPYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghY29yZVBhcmVudCAmJiBpc1Jvb3RP
YmplY3QoY29yZU9iamVjdCkpIHsKKyAgICAgICAgLy8gVGhlIHRvcCBsZXZlbCBvYmplY3QgY2xh
aW1zIHRvIG5vdCBoYXZlIGEgcGFyZW50LiBUaGlzIG1ha2VzIGl0CisgICAgICAgIC8vIGltcG9z
c2libGUgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgdG8gYXNjZW5kIHRoZSBhY2Nlc3NpYmxl
CisgICAgICAgIC8vIGhpZXJhcmNoeSBhbGwgdGhlIHdheSB0byB0aGUgYXBwbGljYXRpb24uIChC
dWcgMzA0ODkpCisgICAgICAgIGlmICghY29yZU9iamVjdC0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAogICAgIHJldHVybiBjb3JlUGFyZW50ID8gQVRL
X09CSkVDVChjb3JlUGFyZW50LT53cmFwcGVyKCkpIDogbnVsbHB0cjsKIH0KIAogc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsK
LSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0g
Y29yZShvYmplY3QpOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShv
YmplY3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3Np
YmxlLCAwKTsKIAotICAgIHJldHVybiBjb3JlT2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKKyAg
ICByZXR1cm4gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKIH0K
IAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVJlZkNoaWxkKEF0a09iamVjdCog
b2JqZWN0LCBnaW50IGluZGV4KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19BQ0NFU1NJQkxFKG9iamVjdCksIDApOwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJs
ZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAgICBhdXRvKiBhY2Nl
c3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKKyAgICByZXR1cm5WYWxJZldlYktp
dEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKICAgICBpZiAoaW5k
ZXggPCAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGlsZCA9IG51bGxwdHI7Ci0KLSAgICBjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0g
Y29yZU9iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGFjY2Vz
c2libGUtPnByaXYtPm9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6
ZV90PihpbmRleCkgPj0gY2hpbGRyZW4uc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBj
b3JlQ2hpbGQgPSBjaGlsZHJlbi5hdChpbmRleCkuZ2V0KCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCisgICAgYXV0byYgY29yZUNoaWxkID0gY2hpbGRyZW5baW5kZXhdOwogICAgIGlmICgh
Y29yZUNoaWxkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvKiBjaGlsZCA9IEFUS19PQkpFQ1QoY29yZUNoaWxkLT53cmFwcGVyKCkpOwogICAg
IGF0a19vYmplY3Rfc2V0X3BhcmVudChjaGlsZCwgb2JqZWN0KTsKQEAgLTM4OCwyMyArMzU3LDIz
IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVSZWZDaGlsZChBdGtPYmplY3Qq
IG9iamVjdCwgZ2ludCBpbmRleCkKIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUdldElu
ZGV4SW5QYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgLTEpOwotICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAtMSk7Ci0K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmpl
Y3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxl
LCAtMSk7CiAKKyAgICBhdXRvKiBjb3JlT2JqZWN0ID0gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0
OworICAgIGF1dG8qIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgp
OwogICAgIGlmICghcGFyZW50ICYmIGlzUm9vdE9iamVjdChjb3JlT2JqZWN0KSkgewotICAgICAg
ICBBdGtPYmplY3QqIGF0a1BhcmVudCA9IGF0a1BhcmVudE9mUm9vdE9iamVjdChvYmplY3QpOwor
ICAgICAgICBpZiAoIWNvcmVPYmplY3QtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4g
LTE7CisKKyAgICAgICAgYXV0byogYXRrUGFyZW50ID0gcGFyZW50ID8gQVRLX09CSkVDVChwYXJl
bnQtPndyYXBwZXIoKSkgOiBudWxscHRyOwogICAgICAgICBpZiAoIWF0a1BhcmVudCkKICAgICAg
ICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICB1bnNpZ25lZCBjb3VudCA9IGF0a19vYmplY3Rf
Z2V0X25fYWNjZXNzaWJsZV9jaGlsZHJlbihhdGtQYXJlbnQpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgQXRrT2JqZWN0KiBjaGls
ZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoYXRrUGFyZW50LCBpKTsKLSAgICAg
ICAgICAgIGJvb2wgY2hpbGRJc09iamVjdCA9IGNoaWxkID09IG9iamVjdDsKLSAgICAgICAgICAg
IGdfb2JqZWN0X3VucmVmKGNoaWxkKTsKLSAgICAgICAgICAgIGlmIChjaGlsZElzT2JqZWN0KQor
ICAgICAgICAgICAgR1JlZlB0cjxBdGtPYmplY3Q+IGNoaWxkID0gYWRvcHRHUmVmKGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoYXRrUGFyZW50LCBpKSk7CisgICAgICAgICAgICBpZiAo
Y2hpbGQuZ2V0KCkgPT0gb2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDE4LDE3ICszODcsMTUgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNz
aWJsZUdldEluZGV4SW5QYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBBdGtBdHRy
aWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKEF0a09iamVjdCogb2JqZWN0
KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVj
dCksIDApOwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRf
QUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FD
Q0VTU0lCTEUob2JqZWN0KTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFs
aWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKICAgICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0
ZVNldCA9IG51bGxwdHI7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGF0dHJpYnV0ZVNldCA9IGFk
ZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInRvb2xraXQiLCAiV2ViS2l0R3RrIik7
CiAjZW5kaWYKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9i
amVjdCk7Ci0gICAgaWYgKCFjb3JlT2JqZWN0KQotICAgICAgICByZXR1cm4gYXR0cmlidXRlU2V0
OworICAgIGF1dG8qIGNvcmVPYmplY3QgPSBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Q7CiAKICAg
ICAvLyBIYWNrIG5lZWRlZCBmb3IgV2ViS2l0MiB0ZXN0cyBiZWNhdXNlIG9idGFpbmluZyBhbiBl
bGVtZW50IGJ5IGl0cyBJRAogICAgIC8vIGNhbm5vdCBiZSBkb25lIGZyb20gdGhlIFVJUHJvY2Vz
cy4gQXNzaXN0aXZlIHRlY2hub2xvZ2llcyBoYXZlIG5vIG5lZWQKQEAgLTYwNSw4ICs1NzIsNyBA
QCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhB
dGtPYmplY3QqIG9iamVjdCkKIAogc3RhdGljIEF0a1JvbGUgYXRrUm9sZShBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlT2JqZWN0KQogewotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBjb3Jl
T2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBzd2l0Y2ggKHJvbGUpIHsKKyAgICBzd2l0Y2ggKGNv
cmVPYmplY3QtPnJvbGVWYWx1ZSgpKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25BbGVydDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0FMRVJUOwogICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6CkBAIC04NzYsMTkgKzg0
MiwxNCBAQCBzdGF0aWMgQXRrUm9sZSB3ZWJraXRBY2Nlc3NpYmxlR2V0Um9sZShBdGtPYmplY3Qq
IG9iamVjdCkKIHsKICAgICAvLyBBVEtfUk9MRV9VTktOT1dOIHNob3VsZCBvbmx5IGJlIGFwcGxp
ZWQgaW4gY2FzZXMgd2hlcmUgdGhlcmUgaXMgYSB2YWxpZAogICAgIC8vIFdlYkNvcmUgYWNjZXNz
aWJsZSBvYmplY3QgZm9yIHdoaWNoIHRoZSBwbGF0Zm9ybSByb2xlIG1hcHBpbmcgaXMgdW5rbm93
bi4KLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3Qp
LCBBVEtfUk9MRV9JTlZBTElEKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0lu
dmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgQVRLX1JPTEVfSU5WQUxJRCk7Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotCi0gICAg
aWYgKCFjb3JlT2JqZWN0KQotICAgICAgICByZXR1cm4gQVRLX1JPTEVfSU5WQUxJRDsKKyAgICBh
dXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKKyAgICByZXR1cm5W
YWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgQVRLX1JPTEVfSU5WQUxJ
RCk7CiAKICAgICAvLyBOb3RlOiBXaHkgZG9lc24ndCBXZWJDb3JlIGhhdmUgYSBwYXNzd29yZCBm
aWVsZCBmb3IgdGhpcwotICAgIGlmIChjb3JlT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAg
ICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1BBU1NXT1JEX1RFWFQ7CiAKLSAgICByZXR1cm4gYXRrUm9sZShj
b3JlT2JqZWN0KTsKKyAgICByZXR1cm4gYXRrUm9sZShhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Qp
OwogfQogCiBzdGF0aWMgYm9vbCBpc1RleHRXaXRoQ2FyZXQoQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCkKQEAgLTEwNTMsMTYgKzEwMTQsMTQgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3Rh
dGVTZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtT
dGEKIAogc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlUmVmU3RhdGVTZXQoQXRr
T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBdGtTdGF0ZVNldCogc3RhdGVTZXQgPSBBVEtf
T0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcyktPnJlZl9zdGF0ZV9zZXQo
b2JqZWN0KTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmpl
Y3QpOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwor
ICAgIEF0a1N0YXRlU2V0KiBzdGF0ZVNldCA9IEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0X2FjY2Vz
c2libGVfcGFyZW50X2NsYXNzKS0+cmVmX3N0YXRlX3NldChvYmplY3QpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBsYXlvdXQgaXMgdXBkYXRlZCB0byByZWFsbHkga25vdyB3aGV0aGVyIHRoZSBv
YmplY3QKICAgICAvLyBpcyBkZWZ1bmN0IG9yIG5vdCwgc28gd2UgY2FuIHJldHVybiB0aGUgcHJv
cGVyIHN0YXRlLgotICAgIGNvcmVPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIGFj
Y2Vzc2libGUtPnByaXYtPm9iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKLSAgICBpZiAo
Y29yZU9iamVjdCA9PSBmYWxsYmFja09iamVjdCgpKSB7CisgICAgaWYgKGFjY2Vzc2libGUtPnBy
aXYtPm9iamVjdCA9PSBmYWxsYmFja09iamVjdCgpKSB7CiAgICAgICAgIGF0a19zdGF0ZV9zZXRf
YWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfREVGVU5DVCk7CiAgICAgICAgIHJldHVybiBz
dGF0ZVNldDsKICAgICB9CkBAIC0xMDcyLDU2ICsxMDMxLDQ4IEBAIHN0YXRpYyBBdGtTdGF0ZVNl
dCogd2Via2l0QWNjZXNzaWJsZVJlZlN0YXRlU2V0KEF0a09iamVjdCogb2JqZWN0KQogICAgIGlm
IChyb2xlID09IEFUS19ST0xFX1RFWFQgfHwgcm9sZSA9PSBBVEtfUk9MRV9QQVJBR1JBUEgpCiAg
ICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNB
QkxFKTsKIAotICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoY29yZU9iamVjdCwgc3Rh
dGVTZXQpOworICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoYWNjZXNzaWJsZS0+cHJp
di0+b2JqZWN0LCBzdGF0ZVNldCk7CiAgICAgcmV0dXJuIHN0YXRlU2V0OwogfQogCiBzdGF0aWMg
QXRrUmVsYXRpb25TZXQqIHdlYmtpdEFjY2Vzc2libGVSZWZSZWxhdGlvblNldChBdGtPYmplY3Qq
IG9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJM
RShvYmplY3QpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBdGtSZWxhdGlvblNldCogcmVs
YXRpb25TZXQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcykt
PnJlZl9yZWxhdGlvbl9zZXQob2JqZWN0KTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
T2JqZWN0ID0gY29yZShvYmplY3QpOwotCi0gICAgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9i
amVjdChjb3JlT2JqZWN0LCByZWxhdGlvblNldCk7CisgICAgYXV0byogYWNjZXNzaWJsZSA9IFdF
QktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCisgICAgQXRrUmVsYXRpb25TZXQqIHJl
bGF0aW9uU2V0ID0gQVRLX09CSkVDVF9DTEFTUyh3ZWJraXRfYWNjZXNzaWJsZV9wYXJlbnRfY2xh
c3MpLT5yZWZfcmVsYXRpb25fc2V0KG9iamVjdCk7CisgICAgc2V0QXRrUmVsYXRpb25TZXRGcm9t
Q29yZU9iamVjdChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QsIHJlbGF0aW9uU2V0KTsKICAgICBy
ZXR1cm4gcmVsYXRpb25TZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVJbml0
KEF0a09iamVjdCogb2JqZWN0LCBncG9pbnRlciBkYXRhKQogewotICAgIGlmIChBVEtfT0JKRUNU
X0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcyktPmluaXRpYWxpemUpCi0gICAgICAg
IEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0QWNjZXNzaWJsZVBhcmVudENsYXNzKS0+aW5pdGlhbGl6
ZShvYmplY3QsIGRhdGEpOworICAgIGlmIChBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdF9hY2Nlc3Np
YmxlX3BhcmVudF9jbGFzcyktPmluaXRpYWxpemUpCisgICAgICAgIEFUS19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzKS0+aW5pdGlhbGl6ZShvYmplY3QsIGRhdGEp
OwogCiAgICAgV2ViS2l0QWNjZXNzaWJsZSogYWNjZXNzaWJsZSA9IFdFQktJVF9BQ0NFU1NJQkxF
KG9iamVjdCk7Ci0gICAgYWNjZXNzaWJsZS0+bV9vYmplY3QgPSByZWludGVycHJldF9jYXN0PEFj
Y2Vzc2liaWxpdHlPYmplY3QqPihkYXRhKTsKLSAgICBhY2Nlc3NpYmxlLT5wcml2ID0gV0VCS0lU
X0FDQ0VTU0lCTEVfR0VUX1BSSVZBVEUoYWNjZXNzaWJsZSk7CisgICAgYWNjZXNzaWJsZS0+cHJp
di0+b2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oZGF0YSk7
CiB9CiAKIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE9iamVjdExvY2Fs
ZShBdGtPYmplY3QqIG9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2li
bGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotICAgIGlmICghY29yZU9i
amVjdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXV0byogYWNjZXNzaWJsZSA9IFdFQktJVF9B
Q0NFU1NJQkxFKG9iamVjdCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCiAgICAgaWYgKEFUS19JU19ET0NVTUVOVChvYmpl
Y3QpKSB7CiAgICAgICAgIC8vIFRPRE86IFNob3VsZCB3ZSBmYWxsIGJhY2sgb24gbGFuZyB4bWw6
bGFuZyB3aGVuIHRoZSBmb2xsb3dpbmcgY29tZXMgdXAgZW1wdHk/Ci0gICAgICAgIFN0cmluZyBs
YW5ndWFnZSA9IGNvcmVPYmplY3QtPmxhbmd1YWdlKCk7CisgICAgICAgIFN0cmluZyBsYW5ndWFn
ZSA9IGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+bGFuZ3VhZ2UoKTsKICAgICAgICAgaWYgKCFs
YW5ndWFnZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gY2FjaGVBbmRSZXR1cm5BdGtQ
cm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZERvY3VtZW50TG9jYWxlLCBsYW5ndWFnZSk7CisgICAg
ICAgICAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHko
YWNjZXNzaWJsZSwgQXRrQ2FjaGVkRG9jdW1lbnRMb2NhbGUsIGxhbmd1YWdlLnV0ZjgoKSk7CiAK
ICAgICB9IGVsc2UgaWYgKEFUS19JU19URVhUKG9iamVjdCkpIHsKICAgICAgICAgY29uc3QgZ2No
YXIqIGxvY2FsZSA9IG51bGxwdHI7CiAKICAgICAgICAgQXRrQXR0cmlidXRlU2V0KiB0ZXh0QXR0
cmlidXRlcyA9IGF0a190ZXh0X2dldF9kZWZhdWx0X2F0dHJpYnV0ZXMoQVRLX1RFWFQob2JqZWN0
KSk7Ci0gICAgICAgIGZvciAoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVzID0gdGV4dEF0dHJp
YnV0ZXM7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7Ci0gICAg
ICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0dHJp
YnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBmb3IgKGF1dG8qIGF0dHJpYnV0ZXMg
PSB0ZXh0QXR0cmlidXRlczsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5l
eHQpIHsKKyAgICAgICAgICAgIGF1dG8qIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0
dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOwogICAgICAgICAgICAgaWYgKCFzdHJjbXAoYXRr
QXR0cmlidXRlLT5uYW1lLCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRU
Ul9MQU5HVUFHRSkpKSB7Ci0gICAgICAgICAgICAgICAgbG9jYWxlID0gY2FjaGVBbmRSZXR1cm5B
dGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZERvY3VtZW50TG9jYWxlLCBTdHJpbmc6OmZyb21V
VEY4KGF0a0F0dHJpYnV0ZS0+dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBsb2NhbGUgPSB3ZWJr
aXRBY2Nlc3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtDYWNo
ZWREb2N1bWVudExvY2FsZSwgYXRrQXR0cmlidXRlLT52YWx1ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExMzAsNzkgKzEwODEsNDEgQEAg
c3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKEF0a09i
amVjdCogb2JqZWN0KQogICAgICAgICByZXR1cm4gbG9jYWxlOwogICAgIH0KIAotICAgIHJldHVy
biAwOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRmluYWxpemUoR09iamVjdCog
b2JqZWN0KQotewotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFz
cyktPmZpbmFsaXplKG9iamVjdCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYmtpdEFjY2Vzc2libGVDbGFzc0luaXQoQXRrT2JqZWN0Q2xhc3MqIGtsYXNzKQorc3Rh
dGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdChXZWJLaXRBY2Nlc3NpYmxlQ2xh
c3MqIGtsYXNzKQogewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1Moa2xhc3MpOwotCi0gICAgd2Via2l0QWNjZXNzaWJsZVBhcmVudENsYXNzID0gZ190eXBl
X2NsYXNzX3BlZWtfcGFyZW50KGtsYXNzKTsKLQotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRBY2Nlc3NpYmxlRmluYWxpemU7Ci0KLSAgICBrbGFzcy0+aW5pdGlhbGl6ZSA9IHdl
YmtpdEFjY2Vzc2libGVJbml0OwotICAgIGtsYXNzLT5nZXRfbmFtZSA9IHdlYmtpdEFjY2Vzc2li
bGVHZXROYW1lOwotICAgIGtsYXNzLT5nZXRfZGVzY3JpcHRpb24gPSB3ZWJraXRBY2Nlc3NpYmxl
R2V0RGVzY3JpcHRpb247Ci0gICAga2xhc3MtPmdldF9wYXJlbnQgPSB3ZWJraXRBY2Nlc3NpYmxl
R2V0UGFyZW50OwotICAgIGtsYXNzLT5nZXRfbl9jaGlsZHJlbiA9IHdlYmtpdEFjY2Vzc2libGVH
ZXROQ2hpbGRyZW47Ci0gICAga2xhc3MtPnJlZl9jaGlsZCA9IHdlYmtpdEFjY2Vzc2libGVSZWZD
aGlsZDsKLSAgICBrbGFzcy0+Z2V0X3JvbGUgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0Um9sZTsKLSAg
ICBrbGFzcy0+cmVmX3N0YXRlX3NldCA9IHdlYmtpdEFjY2Vzc2libGVSZWZTdGF0ZVNldDsKLSAg
ICBrbGFzcy0+Z2V0X2luZGV4X2luX3BhcmVudCA9IHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleElu
UGFyZW50OwotICAgIGtsYXNzLT5nZXRfYXR0cmlidXRlcyA9IHdlYmtpdEFjY2Vzc2libGVHZXRB
dHRyaWJ1dGVzOwotICAgIGtsYXNzLT5yZWZfcmVsYXRpb25fc2V0ID0gd2Via2l0QWNjZXNzaWJs
ZVJlZlJlbGF0aW9uU2V0OwotICAgIGtsYXNzLT5nZXRfb2JqZWN0X2xvY2FsZSA9IHdlYmtpdEFj
Y2Vzc2libGVHZXRPYmplY3RMb2NhbGU7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
a2xhc3MsIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlUHJpdmF0ZSkpOworICAgIGF1dG8qIGF0a09i
amVjdENsYXNzID0gQVRLX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgYXRrT2JqZWN0Q2xhc3Mt
PmluaXRpYWxpemUgPSB3ZWJraXRBY2Nlc3NpYmxlSW5pdDsKKyAgICBhdGtPYmplY3RDbGFzcy0+
Z2V0X25hbWUgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0TmFtZTsKKyAgICBhdGtPYmplY3RDbGFzcy0+
Z2V0X2Rlc2NyaXB0aW9uID0gd2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uOworICAgIGF0
a09iamVjdENsYXNzLT5nZXRfcGFyZW50ID0gd2Via2l0QWNjZXNzaWJsZUdldFBhcmVudDsKKyAg
ICBhdGtPYmplY3RDbGFzcy0+Z2V0X25fY2hpbGRyZW4gPSB3ZWJraXRBY2Nlc3NpYmxlR2V0TkNo
aWxkcmVuOworICAgIGF0a09iamVjdENsYXNzLT5yZWZfY2hpbGQgPSB3ZWJraXRBY2Nlc3NpYmxl
UmVmQ2hpbGQ7CisgICAgYXRrT2JqZWN0Q2xhc3MtPmdldF9yb2xlID0gd2Via2l0QWNjZXNzaWJs
ZUdldFJvbGU7CisgICAgYXRrT2JqZWN0Q2xhc3MtPnJlZl9zdGF0ZV9zZXQgPSB3ZWJraXRBY2Nl
c3NpYmxlUmVmU3RhdGVTZXQ7CisgICAgYXRrT2JqZWN0Q2xhc3MtPmdldF9pbmRleF9pbl9wYXJl
bnQgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudDsKKyAgICBhdGtPYmplY3RDbGFz
cy0+Z2V0X2F0dHJpYnV0ZXMgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlczsKKyAgICBh
dGtPYmplY3RDbGFzcy0+cmVmX3JlbGF0aW9uX3NldCA9IHdlYmtpdEFjY2Vzc2libGVSZWZSZWxh
dGlvblNldDsKKyAgICBhdGtPYmplY3RDbGFzcy0+Z2V0X29iamVjdF9sb2NhbGUgPSB3ZWJraXRB
Y2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlOwogfQogCi1HVHlwZQotd2Via2l0QWNjZXNzaWJsZUdl
dFR5cGUodm9pZCkKLXsKLSAgICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgdHlwZVZvbGF0aWxlID0g
MDsKLQotICAgIGlmIChnX29uY2VfaW5pdF9lbnRlcigmdHlwZVZvbGF0aWxlKSkgewotICAgICAg
ICBzdGF0aWMgY29uc3QgR1R5cGVJbmZvIHRpbmZvID0gewotICAgICAgICAgICAgc2l6ZW9mKFdl
YktpdEFjY2Vzc2libGVDbGFzcyksCi0gICAgICAgICAgICAoR0Jhc2VJbml0RnVuYykgMCwKLSAg
ICAgICAgICAgIChHQmFzZUZpbmFsaXplRnVuYykgMCwKLSAgICAgICAgICAgIChHQ2xhc3NJbml0
RnVuYykoR0NhbGxiYWNrKSB3ZWJraXRBY2Nlc3NpYmxlQ2xhc3NJbml0LAotICAgICAgICAgICAg
KEdDbGFzc0ZpbmFsaXplRnVuYykgMCwKLSAgICAgICAgICAgIDAsIC8qIGNsYXNzIGRhdGEgKi8K
LSAgICAgICAgICAgIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlKSwgLyogaW5zdGFuY2Ugc2l6ZSAq
LwotICAgICAgICAgICAgMCwgLyogbmIgcHJlYWxsb2NzICovCi0gICAgICAgICAgICAoR0luc3Rh
bmNlSW5pdEZ1bmMpIDAsCi0gICAgICAgICAgICAwIC8qIHZhbHVlIHRhYmxlICovCi0gICAgICAg
IH07Ci0KLSAgICAgICAgR1R5cGUgdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMoQVRLX1RZ
UEVfT0JKRUNULCAiV2ViS2l0QWNjZXNzaWJsZSIsICZ0aW5mbywgR1R5cGVGbGFncygwKSk7Ci0g
ICAgICAgIGdfb25jZV9pbml0X2xlYXZlKCZ0eXBlVm9sYXRpbGUsIHR5cGUpOwotICAgIH0KLQot
ICAgIHJldHVybiB0eXBlVm9sYXRpbGU7Ci19Ci0KLXN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5m
byBBdGtJbnRlcmZhY2VzSW5pdEZ1bmN0aW9uc1tdID0gewotICAgIHtyZWludGVycHJldF9jYXN0
PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtpdEFj
Y2Vzc2libGVBY3Rpb25JbnRlcmZhY2VJbml0KSksIDAsIDB9LAotICAgIHtyZWludGVycHJldF9j
YXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtp
dEFjY2Vzc2libGVTZWxlY3Rpb25JbnRlcmZhY2VJbml0KSksIDAsIDB9LAotICAgIHtyZWludGVy
cHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+
KHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRJbnRlcmZhY2VJbml0KSksIDAsIDB9LAotICAg
IHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxH
Q2FsbGJhY2s+KHdlYmtpdEFjY2Vzc2libGVUZXh0SW50ZXJmYWNlSW5pdCkpLCAwLCAwfSwKLSAg
ICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8
R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50SW50ZXJmYWNlSW5pdCkpLCAwLCAw
fSwKLSAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0
X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VJbnRlcmZhY2VJbml0KSksIDAs
IDB9LAotICAgIHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnBy
ZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtpdEFjY2Vzc2libGVUYWJsZUludGVyZmFjZUluaXQpKSwg
MCwgMH0sCitzdGF0aWMgY29uc3QgR0ludGVyZmFjZUluZm8gYXRrSW50ZXJmYWNlc0luaXRGdW5j
dGlvbnNbXSA9IHsKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJl
aW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uSW50ZXJmYWNl
SW5pdCkpLCBudWxscHRyLCBudWxscHRyfSwKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJm
YWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxl
U2VsZWN0aW9uSW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBudWxscHRyfSwKKyAgICB7cmVpbnRl
cnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNr
Pih3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0SW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBu
dWxscHRyfSwKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50
ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlVGV4dEludGVyZmFjZUluaXQp
KSwgbnVsbHB0ciwgbnVsbHB0cn0sCisgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUlu
aXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Via2l0QWNjZXNzaWJsZUNvbXBv
bmVudEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwgbnVsbHB0cn0sCisgICAge3JlaW50ZXJwcmV0
X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Vi
a2l0QWNjZXNzaWJsZUltYWdlSW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBudWxscHRyfSwKKyAg
ICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8
R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlVGFibGVJbnRlcmZhY2VJbml0KSksIG51bGxwdHIs
IG51bGxwdHJ9LAogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCi0gICAge3JlaW50ZXJw
cmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4o
d2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEludGVyZmFjZUluaXQpKSwgMCwgMH0sCisgICAge3Jl
aW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxs
YmFjaz4od2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwg
bnVsbHB0cn0sCiAjZW5kaWYKLSAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1
bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0
SW50ZXJmYWNlSW5pdCkpLCAwLCAwfSwKLSAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNl
SW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJsaW5rSW1wbEludGVyZmFjZUluaXQpKSwgMCwgMH0sCi0gICAge3JlaW50ZXJwcmV0X2Nhc3Q8
R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Via2l0QWNj
ZXNzaWJsZURvY3VtZW50SW50ZXJmYWNlSW5pdCkpLCAwLCAwfSwKLSAgICB7cmVpbnRlcnByZXRf
Y2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJr
aXRBY2Nlc3NpYmxlVmFsdWVJbnRlcmZhY2VJbml0KSksIDAsIDB9CisgICAge3JlaW50ZXJwcmV0
X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Vi
a2l0QWNjZXNzaWJsZUh5cGVydGV4dEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwgbnVsbHB0cn0s
CisgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9j
YXN0PEdDYWxsYmFjaz4od2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0ltcGxJbnRlcmZhY2VJbml0
KSksIG51bGxwdHIsIG51bGxwdHJ9LAorICAgIHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJ
bml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtpdEFjY2Vzc2libGVEb2N1
bWVudEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwgbnVsbHB0cn0sCisgICAge3JlaW50ZXJwcmV0
X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Vi
a2l0QWNjZXNzaWJsZVZhbHVlSW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBudWxscHRyfQogfTsK
IAogZW51bSBXQUlUeXBlIHsKQEAgLTEyMjIsNyArMTEzNSw3IEBAIGVudW0gV0FJVHlwZSB7CiAg
ICAgV0FJVmFsdWUsCiB9OwogCi1zdGF0aWMgR1R5cGUgR2V0QXRrSW50ZXJmYWNlVHlwZUZyb21X
QUlUeXBlKFdBSVR5cGUgdHlwZSkKK3N0YXRpYyBHVHlwZSBhdGtJbnRlcmZhY2VUeXBlRnJvbVdB
SVR5cGUoV0FJVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgV0FJ
QWN0aW9uOgpAQCAtMTI3MSw3ICsxMTg0LDcgQEAgc3RhdGljIGJvb2wgcm9sZUlzVGV4dFR5cGUo
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA7CiB9CiAKLXN0YXRpYyBndWludDE2IGdldEludGVy
ZmFjZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCitzdGF0
aWMgZ3VpbnQxNiBpbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlT2JqZWN0KQogewogICAgIGd1aW50MTYgaW50ZXJmYWNlTWFzayA9IDA7CiAKQEAgLTEzMTgs
MTEgKzEyMzEsOSBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQogICAgICAgICAvLyBBZGQgdGhlIFRFWFQg
aW50ZXJmYWNlIGZvciBsaXN0IGl0ZW1zIHdob3NlCiAgICAgICAgIC8vIGZpcnN0IGFjY2Vzc2li
bGUgY2hpbGQgaGFzIGEgdGV4dCByZW5kZXJlcgogICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKLSAgICAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBjb3JlT2JqZWN0
LT5jaGlsZHJlbigpOwotICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkgewotICAgICAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4UmVuZGVyQ2hpbGQgPSBjaGlsZHJlbi5h
dCgwKS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IGdldEludGVyZmFj
ZU1hc2tGcm9tT2JqZWN0KGF4UmVuZGVyQ2hpbGQpOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBjb3JlT2JqZWN0LT5jaGlsZHJlbigpOworICAgICAg
ICAgICAgaWYgKCFjaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaW50ZXJmYWNl
TWFzayB8PSBpbnRlcmZhY2VNYXNrRnJvbU9iamVjdChjaGlsZHJlblswXS5nZXQoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEzNTYsOSArMTI2Nyw5IEBAIHN0YXRpYyBndWludDE2IGdldElu
dGVyZmFjZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiAg
ICAgcmV0dXJuIGludGVyZmFjZU1hc2s7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBnZXRVbmlx
dWVBY2Nlc3NpYmlsaXR5VHlwZU5hbWUoZ3VpbnQxNiBpbnRlcmZhY2VNYXNrKQorc3RhdGljIGNv
bnN0IGNoYXIqIHVuaXF1ZUFjY2Vzc2liaWxpdHlUeXBlTmFtZShndWludDE2IGludGVyZmFjZU1h
c2spCiB7Ci0jZGVmaW5lIFdBSV9UWVBFX05BTUVfTEVOICgzMCkgLyogRW5vdWdoIGZvciBwcmVm
aXggKyA1IGhleCBjaGFyYWN0ZXJzIChtYXgpICovCisjZGVmaW5lIFdBSV9UWVBFX05BTUVfTEVO
ICgzMCkgLy8gRW5vdWdoIGZvciBwcmVmaXggKyA1IGhleCBjaGFyYWN0ZXJzIChtYXgpLgogICAg
IHN0YXRpYyBjaGFyIG5hbWVbV0FJX1RZUEVfTkFNRV9MRU4gKyAxXTsKIAogICAgIGdfc3ByaW50
ZihuYW1lLCAiV0FJVHlwZSV4IiwgaW50ZXJmYWNlTWFzayk7CkBAIC0xMzY3LDMzICsxMjc4LDMz
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBnZXRVbmlxdWVBY2Nlc3NpYmlsaXR5VHlwZU5hbWUoZ3Vp
bnQxNiBpbnRlcmZhY2VNYXNrKQogICAgIHJldHVybiBuYW1lOwogfQogCi1zdGF0aWMgR1R5cGUg
Z2V0QWNjZXNzaWJpbGl0eVR5cGVGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVP
YmplY3QpCitzdGF0aWMgR1R5cGUgYWNjZXNzaWJpbGl0eVR5cGVGcm9tT2JqZWN0KEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiB7CiAgICAgc3RhdGljIGNvbnN0IEdUeXBlSW5mbyB0
eXBlSW5mbyA9IHsKICAgICAgICAgc2l6ZW9mKFdlYktpdEFjY2Vzc2libGVDbGFzcyksCi0gICAg
ICAgIChHQmFzZUluaXRGdW5jKSAwLAotICAgICAgICAoR0Jhc2VGaW5hbGl6ZUZ1bmMpIDAsCi0g
ICAgICAgIChHQ2xhc3NJbml0RnVuYykgMCwKLSAgICAgICAgKEdDbGFzc0ZpbmFsaXplRnVuYykg
MCwKLSAgICAgICAgMCwgLyogY2xhc3MgZGF0YSAqLwotICAgICAgICBzaXplb2YoV2ViS2l0QWNj
ZXNzaWJsZSksIC8qIGluc3RhbmNlIHNpemUgKi8KLSAgICAgICAgMCwgLyogbmIgcHJlYWxsb2Nz
ICovCi0gICAgICAgIChHSW5zdGFuY2VJbml0RnVuYykgMCwKLSAgICAgICAgMCAvKiB2YWx1ZSB0
YWJsZSAqLworICAgICAgICBudWxscHRyLCAvLyBHQmFzZUluaXRGdW5jCisgICAgICAgIG51bGxw
dHIsIC8vIEdCYXNlRmluYWxpemVGdW5jCisgICAgICAgIG51bGxwdHIsIC8vIEdDbGFzc0luaXRG
dW5jCisgICAgICAgIG51bGxwdHIsIC8vIEdDbGFzc0ZpbmFsaXplRnVuYworICAgICAgICBudWxs
cHRyLCAvLyBjbGFzcyBkYXRhCisgICAgICAgIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlKSwgLy8g
aW5zdGFuY2Ugc2l6ZQorICAgICAgICAwLCAvLyBuYiBwcmVhbGxvY3MKKyAgICAgICAgbnVsbHB0
ciwgLy8gR0luc3RhbmNlSW5pdEZ1bmMKKyAgICAgICAgbnVsbHB0ciAvLyB2YWx1ZSB0YWJsZQog
ICAgIH07CiAKLSAgICBndWludDE2IGludGVyZmFjZU1hc2sgPSBnZXRJbnRlcmZhY2VNYXNrRnJv
bU9iamVjdChjb3JlT2JqZWN0KTsKLSAgICBjb25zdCBjaGFyKiBhdGtUeXBlTmFtZSA9IGdldFVu
aXF1ZUFjY2Vzc2liaWxpdHlUeXBlTmFtZShpbnRlcmZhY2VNYXNrKTsKLSAgICBHVHlwZSB0eXBl
ID0gZ190eXBlX2Zyb21fbmFtZShhdGtUeXBlTmFtZSk7Ci0gICAgaWYgKHR5cGUpCisgICAgZ3Vp
bnQxNiBpbnRlcmZhY2VNYXNrID0gaW50ZXJmYWNlTWFza0Zyb21PYmplY3QoY29yZU9iamVjdCk7
CisgICAgY29uc3QgY2hhciogYXRrVHlwZU5hbWUgPSB1bmlxdWVBY2Nlc3NpYmlsaXR5VHlwZU5h
bWUoaW50ZXJmYWNlTWFzayk7CisgICAgaWYgKEdUeXBlIHR5cGUgPSBnX3R5cGVfZnJvbV9uYW1l
KGF0a1R5cGVOYW1lKSkKICAgICAgICAgcmV0dXJuIHR5cGU7CiAKLSAgICB0eXBlID0gZ190eXBl
X3JlZ2lzdGVyX3N0YXRpYyhXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFLCBhdGtUeXBlTmFtZSwgJnR5
cGVJbmZvLCBHVHlwZUZsYWdzKDApKTsKLSAgICBmb3IgKGd1aW50IGkgPSAwOyBpIDwgR19OX0VM
RU1FTlRTKEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zKTsgaSsrKSB7Ci0gICAgICAgIGlmIChp
bnRlcmZhY2VNYXNrICYgKDEgPDwgaSkpCisgICAgR1R5cGUgdHlwZSA9IGdfdHlwZV9yZWdpc3Rl
cl9zdGF0aWMoV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgYXRrVHlwZU5hbWUsICZ0eXBlSW5mbywg
c3RhdGljX2Nhc3Q8R1R5cGVGbGFncz4oMCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBHX05fRUxFTUVOVFMoYXRrSW50ZXJmYWNlc0luaXRGdW5jdGlvbnMpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGludGVyZmFjZU1hc2sgJiAoMSA8PCBpKSkgewogICAgICAgICAgICAgZ190eXBlX2Fk
ZF9pbnRlcmZhY2Vfc3RhdGljKHR5cGUsCi0gICAgICAgICAgICAgICAgR2V0QXRrSW50ZXJmYWNl
VHlwZUZyb21XQUlUeXBlKHN0YXRpY19jYXN0PFdBSVR5cGU+KGkpKSwKLSAgICAgICAgICAgICAg
ICAmQXRrSW50ZXJmYWNlc0luaXRGdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgICAgIGF0a0lu
dGVyZmFjZVR5cGVGcm9tV0FJVHlwZShzdGF0aWNfY2FzdDxXQUlUeXBlPihpKSksCisgICAgICAg
ICAgICAgICAgJmF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW2ldKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHJldHVybiB0eXBlOwpAQCAtMTQwMSwxNjggKzEzMTIsODAgQEAgc3RhdGljIEdU
eXBlIGdldEFjY2Vzc2liaWxpdHlUeXBlRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlT2JqZWN0KQogCiBXZWJLaXRBY2Nlc3NpYmxlKiB3ZWJraXRBY2Nlc3NpYmxlTmV3KEFjY2Vz
c2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiB7Ci0gICAgR1R5cGUgdHlwZSA9IGdldEFjY2Vz
c2liaWxpdHlUeXBlRnJvbU9iamVjdChjb3JlT2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIG9iamVj
dCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdfb2JqZWN0X25ldyh0eXBlLCAwKSk7Ci0KKyAg
ICBhdXRvKiBvYmplY3QgPSBBVEtfT0JKRUNUKGdfb2JqZWN0X25ldyhhY2Nlc3NpYmlsaXR5VHlw
ZUZyb21PYmplY3QoY29yZU9iamVjdCksIG51bGxwdHIpKTsKICAgICBhdGtfb2JqZWN0X2luaXRp
YWxpemUob2JqZWN0LCBjb3JlT2JqZWN0KTsKLQogICAgIHJldHVybiBXRUJLSVRfQUNDRVNTSUJM
RShvYmplY3QpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0
QWNjZXNzaWJpbGl0eU9iamVjdChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQorQWNjZXNz
aWJpbGl0eU9iamVjdCYgd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV2Vi
S2l0QWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKIHsKLSAgICByZXR1cm4gYWNjZXNzaWJsZS0+bV9v
YmplY3Q7CisgICAgQVNTRVJUKFdFQktJVF9JU19BQ0NFU1NJQkxFKGFjY2Vzc2libGUpKTsKKyAg
ICByZXR1cm4gKmFjY2Vzc2libGUtPnByaXYtPm9iamVjdDsKIH0KIAogdm9pZCB3ZWJraXRBY2Nl
c3NpYmxlRGV0YWNoKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7Ci0gICAgQVNTRVJU
KGFjY2Vzc2libGUtPm1fb2JqZWN0KTsKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0FDQ0VTU0lCTEUo
YWNjZXNzaWJsZSkpOworICAgIEFTU0VSVChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QgIT0gZmFs
bGJhY2tPYmplY3QoKSk7CiAKLSAgICBpZiAoYWNjZXNzaWJsZS0+bV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQotICAgICAgICBhdGtfb2JqZWN0X25v
dGlmeV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChhY2Nlc3NpYmxlKSwgQVRLX1NUQVRFX0RFRlVO
Q1QsIHRydWUpOworICAgIGlmIChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPnJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQorICAgICAgICBhdGtfb2JqZWN0X25vdGlm
eV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChhY2Nlc3NpYmxlKSwgQVRLX1NUQVRFX0RFRlVOQ1Qs
IFRSVUUpOwogCiAgICAgLy8gV2UgcmVwbGFjZSB0aGUgV2ViQ29yZSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0IHdpdGggYSBmYWxsYmFjayBvYmplY3QgdGhhdAogICAgIC8vIHByb3ZpZGVzIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zIHRvIGF2b2lkIHJlcGV0aXRpdmUgbnVsbC1jaGVja2luZyBhZnRlcgog
ICAgIC8vIGRldGFjaG1lbnQuCi0gICAgYWNjZXNzaWJsZS0+bV9vYmplY3QgPSBmYWxsYmFja09i
amVjdCgpOworICAgIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCA9IGZhbGxiYWNrT2JqZWN0KCk7
CiB9CiAKIGJvb2wgd2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQoV2ViS2l0QWNjZXNzaWJsZSog
YWNjZXNzaWJsZSkKIHsKLSAgICBBU1NFUlQoYWNjZXNzaWJsZS0+bV9vYmplY3QpOwotICAgIHJl
dHVybiBhY2Nlc3NpYmxlLT5tX29iamVjdCA9PSBmYWxsYmFja09iamVjdCgpOworICAgIEFTU0VS
VChXRUJLSVRfSVNfQUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CisgICAgcmV0dXJuIGFjY2Vzc2li
bGUtPnByaXYtPm9iamVjdCA9PSBmYWxsYmFja09iamVjdCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCogcmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9mZnNldCkKK2NvbnN0IGNoYXIqIHdlYmtp
dEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KFdlYktpdEFjY2Vzc2libGUqIGFj
Y2Vzc2libGUsIEF0a0NhY2hlZFByb3BlcnR5IHByb3BlcnR5LCBDU3RyaW5nJiYgdmFsdWUpCiB7
Ci0gICAgLy8gSW5kaWNhdGlvbiB0aGF0IHNvbWV0aGluZyBib2d1cyBoYXMgdHJhbnNwaXJlZC4K
LSAgICBvZmZzZXQgPSAtMTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJlZmVyZW5jZU9i
amVjdC0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIE5vZGUqIGZvY3VzZWROb2RlID0gcmVmZXJlbmNlT2JqZWN0LT5zZWxlY3Rpb24oKS5l
bmQoKS5jb250YWluZXJOb2RlKCk7Ci0gICAgaWYgKCFmb2N1c2VkTm9kZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWRSZW5kZXJlciA9IGZvY3VzZWROb2Rl
LT5yZW5kZXJlcigpOwotICAgIGlmICghZm9jdXNlZFJlbmRlcmVyKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBkb2N1bWVudC0+
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkUmVuZGVyZXIpOwotICAgIGlmICgh
Zm9jdXNlZE9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBMb29rIGZvciB0aGUg
YWN0dWFsIChub3QgaWdub3JpbmcgYWNjZXNzaWJpbGl0eSkgc2VsZWN0ZWQgb2JqZWN0LgotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZm9jdXNlZE9iamVj
dDsKLSAgICBpZiAoZmlyc3RVbmlnbm9yZWRQYXJlbnQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSkKLSAgICAgICAgZmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFmaXJzdFVuaWdub3JlZFBhcmVudCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBEb24ndCBpZ25vcmUgbGlua3MgaWYgdGhlIG9m
ZnNldCBpcyBiZWluZyByZXF1ZXN0ZWQgZm9yIGEgbGluawotICAgIC8vIG9yIGlmIHRoZSBsaW5r
IGlzIGEgYmxvY2suCi0gICAgaWYgKCFyZWZlcmVuY2VPYmplY3QtPmlzTGluaygpICYmIGZpcnN0
VW5pZ25vcmVkUGFyZW50LT5pc0xpbmsoKQotICAgICAgICAmJiAhKGZpcnN0VW5pZ25vcmVkUGFy
ZW50LT5yZW5kZXJlcigpICYmICFmaXJzdFVuaWdub3JlZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNJ
bmxpbmUoKSkpCi0gICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQ
YXJlbnQtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghZmlyc3RVbmlnbm9yZWRQ
YXJlbnQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIHJlZmVyZW5jZSBvYmplY3Qg
bXVzdCBlaXRoZXIgY29pbmNpZGUgd2l0aCB0aGUgZm9jdXNlZAotICAgIC8vIG9iamVjdCBiZWlu
ZyBjb25zaWRlcmVkLCBvciBiZSBhIGRlc2NlbmRhbnQgb2YgaXQuCi0gICAgaWYgKHJlZmVyZW5j
ZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3QoZmlyc3RVbmlnbm9yZWRQYXJlbnQpKQotICAg
ICAgICByZWZlcmVuY2VPYmplY3QgPSBmaXJzdFVuaWdub3JlZFBhcmVudDsKLQotICAgIE5vZGUq
IHN0YXJ0Tm9kZSA9IG51bGxwdHI7Ci0gICAgaWYgKGZpcnN0VW5pZ25vcmVkUGFyZW50ICE9IHJl
ZmVyZW5jZU9iamVjdCB8fCBmaXJzdFVuaWdub3JlZFBhcmVudC0+aXNUZXh0Q29udHJvbCgpKSB7
Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBmaXJzdCBjaGlsZCdzIG5vZGUgb2YgdGhl
IHJlZmVyZW5jZQotICAgICAgICAvLyBvYmplY3QgYXMgdGhlIHN0YXJ0IHBvaW50IHRvIGNhbGN1
bGF0ZSB0aGUgY2FyZXQgb2Zmc2V0Ci0gICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBi
ZSByZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCi0gICAgICAgIC8vIHJlZmVyZW5jZSwgbm90IGp1
c3QgdG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCi0gICAgICAgIC8vIHBy
ZXZpb3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9vKS4K
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJlbmNlT2Jq
ZWN0LT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmIChheEZpcnN0Q2hpbGQpCi0gICAgICAgICAg
ICBzdGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKLSAgICB9Ci0gICAgLy8gR2V0dGlu
ZyB0aGUgUG9zaXRpb24gb2YgYSBQc2V1ZG9FbGVtZW50IG5vdyB0cmlnZ2VycyBhbiBhc3NlcnRp
b24uCi0gICAgLy8gVGhpcyBjYW4gb2NjdXIgd2hlbiBjbGlja2luZyBvbiBlbXB0eSBzcGFjZSBp
biBhIHJlbmRlciBibG9jay4KLSAgICBpZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNl
dWRvRWxlbWVudCgpKQotICAgICAgICBzdGFydE5vZGUgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+
bm9kZSgpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgZm9yIHRoZSBmaXJzdCBwYXJlbnQg
b2JqZWN0IG5vdCBpZ25vcmluZwotICAgIC8vIGFjY2Vzc2liaWxpdHkgaXMgbnVsbCBhZ2FpbiBi
ZWZvcmUgdXNpbmcgaXQuIFRoaXMgbWlnaHQgaGFwcGVuCi0gICAgLy8gd2l0aCBjZXJ0YWluIGtp
bmQgb2YgYWNjZXNzaWJpbGl0eSBvYmplY3RzLCBzdWNoIGFzIHRoZSByb290Ci0gICAgLy8gb25l
ICh0aGUgc2Nyb2xsZXIgY29udGFpbmluZyB0aGUgd2ViQXJlYSBvYmplY3QpLgotICAgIGlmICgh
c3RhcnROb2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydE5vZGUp
LCBET1dOU1RSRUFNKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24gPSBmaXJzdFVu
aWdub3JlZFBhcmVudC0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwotCi0gICAgaWYgKHN0YXJ0
UG9zaXRpb24gPT0gZW5kUG9zaXRpb24pCi0gICAgICAgIG9mZnNldCA9IDA7Ci0gICAgZWxzZSBp
ZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRpb24pKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24ucHJldmlvdXMoKSk7
Ci0gICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCks
IHRydWUpICsgMTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
bWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICAgICAgb2Zmc2V0ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZpcnN0VW5pZ25vcmVkUGFyZW50OwotfQorICAgIEFTU0VSVChXRUJLSVRfSVNf
QUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CiAKLWNvbnN0IGNoYXIqIGNhY2hlQW5kUmV0dXJuQXRr
UHJvcGVydHkoQXRrT2JqZWN0KiBvYmplY3QsIEF0a0NhY2hlZFByb3BlcnR5IHByb3BlcnR5LCBT
dHJpbmcgdmFsdWUpCi17Ci0gICAgV2ViS2l0QWNjZXNzaWJsZVByaXZhdGUqIHByaXYgPSBXRUJL
SVRfQUNDRVNTSUJMRShvYmplY3QpLT5wcml2OworICAgIFdlYktpdEFjY2Vzc2libGVQcml2YXRl
KiBwcml2ID0gYWNjZXNzaWJsZS0+cHJpdjsKICAgICBDU3RyaW5nKiBwcm9wZXJ0eVB0ciA9IG51
bGxwdHI7CiAKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgY2FzZSBBdGtDYWNoZWRBY2Nl
c3NpYmxlTmFtZToKICAgICAgICAgcHJvcGVydHlQdHIgPSAmcHJpdi0+YWNjZXNzaWJsZU5hbWU7
CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBBdGtDYWNoZWRBY2Nlc3NpYmxlRGVzY3JpcHRp
b246CiAgICAgICAgIHByb3BlcnR5UHRyID0gJnByaXYtPmFjY2Vzc2libGVEZXNjcmlwdGlvbjsK
ICAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIEF0a0NhY2hlZEFjdGlvbk5hbWU6CiAgICAgICAg
IHByb3BlcnR5UHRyID0gJnByaXYtPmFjdGlvbk5hbWU7CiAgICAgICAgIGJyZWFrOwotCiAgICAg
Y2FzZSBBdGtDYWNoZWRBY3Rpb25LZXlCaW5kaW5nOgogICAgICAgICBwcm9wZXJ0eVB0ciA9ICZw
cml2LT5hY3Rpb25LZXlCaW5kaW5nOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQXRrQ2Fj
aGVkRG9jdW1lbnRMb2NhbGU6CiAgICAgICAgIHByb3BlcnR5UHRyID0gJnByaXYtPmRvY3VtZW50
TG9jYWxlOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQXRrQ2FjaGVkRG9jdW1lbnRUeXBl
OgogICAgICAgICBwcm9wZXJ0eVB0ciA9ICZwcml2LT5kb2N1bWVudFR5cGU7CiAgICAgICAgIGJy
ZWFrOwotCiAgICAgY2FzZSBBdGtDYWNoZWREb2N1bWVudEVuY29kaW5nOgogICAgICAgICBwcm9w
ZXJ0eVB0ciA9ICZwcml2LT5kb2N1bWVudEVuY29kaW5nOwogICAgICAgICBicmVhazsKLQogICAg
IGNhc2UgQXRrQ2FjaGVkRG9jdW1lbnRVUkk6CiAgICAgICAgIHByb3BlcnR5UHRyID0gJnByaXYt
PmRvY3VtZW50VVJJOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQXRrQ2FjaGVkSW1hZ2VE
ZXNjcmlwdGlvbjoKICAgICAgICAgcHJvcGVydHlQdHIgPSAmcHJpdi0+aW1hZ2VEZXNjcmlwdGlv
bjsKICAgICAgICAgYnJlYWs7Ci0KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKICAgICAvLyBEb24ndCBpbnZhbGlkYXRlIG9sZCBtZW1vcnkgaWYg
bm90IHN0cmljbHkgbmVlZGVkLCBzaW5jZSBvdGhlcgogICAgIC8vIGNhbGxlcnMgbWlnaHQgYmUg
c3RpbGwgaG9sZGluZyBvbiB0byBpdC4KLSAgICBpZiAoKnByb3BlcnR5UHRyICE9IHZhbHVlLnV0
ZjgoKSkKLSAgICAgICAgKnByb3BlcnR5UHRyID0gdmFsdWUudXRmOCgpOworICAgIGlmICgqcHJv
cGVydHlQdHIgIT0gdmFsdWUpCisgICAgICAgICpwcm9wZXJ0eVB0ciA9IFdURk1vdmUodmFsdWUp
OwogCiAgICAgcmV0dXJuICgqcHJvcGVydHlQdHIpLmRhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmgK
c2ltaWxhcml0eSBpbmRleCA1NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5oCmluZGV4IDdkZmViZmI3
ZmRmLi43ZDU2MzdhMTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmgKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SmFuIEFsb256bwotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTkgSWdh
bGlhIFMuTC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtMzMsMjEgKzMzLDIwIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiAK
IEdfQkVHSU5fREVDTFMKIAotI2RlZmluZSBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFICAgICAgICAg
ICAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRUeXBlICgpKQotI2RlZmluZSBXRUJLSVRfQUND
RVNTSUJMRShvYmopICAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
ICgob2JqKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZSkpCi0jZGVm
aW5lIFdFQktJVF9BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAgICAgICAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUsIFdlYktpdEFjY2Vz
c2libGVDbGFzcykpCi0jZGVmaW5lIFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iaikgICAgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NF
U1NJQkxFKSkKLSNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQ0xBU1Moa2xhc3MpICAgICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJM
RSkpCi0jZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFX0dFVF9DTEFTUyhvYmopICAgICAgICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUsIFdl
YktpdEFjY2Vzc2libGVDbGFzcykpCisjZGVmaW5lIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUgICAg
ICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0FD
Q0VTU0lCTEUob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZSkpCisjZGVmaW5lIFdF
QktJVF9BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZUNsYXNzKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSkpCisjZGVmaW5lIFdF
QktJVF9JU19BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSkpCisjZGVmaW5lIFdFQktJVF9BQ0NFU1NJ
QkxFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgV0VC
S0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZUNsYXNzKSkKIAotdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgICAgICAgICAgICAgICAgV2ViS2l0QWNjZXNzaWJsZTsK
LXR5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlQ2xhc3MgICAgICAgICAgIFdlYktpdEFj
Y2Vzc2libGVDbGFzczsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlUHJpdmF0ZSAg
ICAgICAgIFdlYktpdEFjY2Vzc2libGVQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFj
Y2Vzc2libGUgICAgICAgIFdlYktpdEFjY2Vzc2libGU7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
QWNjZXNzaWJsZUNsYXNzICAgV2ViS2l0QWNjZXNzaWJsZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdEFjY2Vzc2libGVQcml2YXRlIFdlYktpdEFjY2Vzc2libGVQcml2YXRlOwogCiAKIHN0
cnVjdCBfV2ViS2l0QWNjZXNzaWJsZSB7CiAgICAgQXRrT2JqZWN0IHBhcmVudDsKLSAgICBXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX29iamVjdDsKIAogICAgIFdlYktpdEFjY2Vzc2li
bGVQcml2YXRlICpwcml2OwogfTsKQEAgLTY4LDE5ICs2NywxNyBAQCBlbnVtIEF0a0NhY2hlZFBy
b3BlcnR5IHsKICAgICBBdGtDYWNoZWRJbWFnZURlc2NyaXB0aW9uCiB9OwogCi1HVHlwZSB3ZWJr
aXRBY2Nlc3NpYmxlR2V0VHlwZSh2b2lkKSBHX0dOVUNfQ09OU1Q7CitHVHlwZSB3ZWJraXRfYWNj
ZXNzaWJsZV9nZXRfdHlwZSh2b2lkKTsKIAogV2ViS2l0QWNjZXNzaWJsZSogd2Via2l0QWNjZXNz
aWJsZU5ldyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAKLVdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdl
YktpdEFjY2Vzc2libGUqKTsKK1dlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QmIHdlYmtpdEFj
Y2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktpdEFjY2Vzc2libGUqKTsKIAogdm9p
ZCB3ZWJraXRBY2Nlc3NpYmxlRGV0YWNoKFdlYktpdEFjY2Vzc2libGUqKTsKIAogYm9vbCB3ZWJr
aXRBY2Nlc3NpYmxlSXNEZXRhY2hlZChXZWJLaXRBY2Nlc3NpYmxlKik7CiAKLVdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgaW50JiBvZmZzZXQpOwotCi1jb25zdCBjaGFy
KiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KEF0a09iamVjdCosIEF0a0NhY2hlZFByb3BlcnR5
LCBTdHJpbmcgdmFsdWUpOworY29uc3QgY2hhciogd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0
dXJuQXRrUHJvcGVydHkoV2ViS2l0QWNjZXNzaWJsZSosIEF0a0NhY2hlZFByb3BlcnR5LCBDU3Ry
aW5nJiYpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4
IGJjMTZlNGIyOTAzLi43MjEyZGIyZWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAK
QEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
V2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0j
aW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC02NCw3ICs2NCw3IEBAIHN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2li
bGUpCiAgICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFXRUJLSVRfSVNfQUNDRVNTSUJMRShhY2Nlc3Np
YmxlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUdl
dEFjY2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJsZSk7CisgICAgcmV0dXJuICZ3ZWJraXRBY2Nl
c3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlKTsKIH0KIAogc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayogbGluaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKaW5kZXggYzc5YmRjNGQ2NmMu
LjU4ZDEyMjNkODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcApA
QCAtMzYsOCArMzYsOCBAQAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgog
I2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ2LDcg
KzQ2LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrQWN0aW9uKiBhY3Rp
b24pCiAgICAgaWYgKCFXRUJLSVRfSVNfQUNDRVNTSUJMRShhY3Rpb24pKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVj
dChXRUJLSVRfQUNDRVNTSUJMRShhY3Rpb24pKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2li
bGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGFjdGlvbikpOwogfQog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUFjdGlvbkRvQWN0aW9uKEF0a0FjdGlv
biogYWN0aW9uLCBnaW50IGluZGV4KQpAQCAtNzcsMjMgKzc3LDIxIEBAIHN0YXRpYyBjb25zdCBn
Y2hhciogd2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldERlc2NyaXB0aW9uKEF0a0FjdGlvbiogYWN0
aW9uLCBnaW50CiAgICAgcmV0dXJuICIiOwogfQogCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtp
dEFjY2Vzc2libGVBY3Rpb25HZXRLZXliaW5kaW5nKEF0a0FjdGlvbiogYWN0aW9uLCBnaW50IGlu
ZGV4KQorc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0S2V5Ymlu
ZGluZyhBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFp
bmRleCwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJ
VF9BQ0NFU1NJQkxFKGFjdGlvbiksIDApOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRf
QUNDRVNTSUJMRShhY3Rpb24pOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52
YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIC8vIEZJWE1FOiBDb25zdHJ1Y3QgYSBw
cm9wZXIga2V5YmluZGluZyBzdHJpbmcuCi0gICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJv
cGVydHkoQVRLX09CSkVDVChhY3Rpb24pLCBBdGtDYWNoZWRBY3Rpb25LZXlCaW5kaW5nLCBjb3Jl
KGFjdGlvbiktPmFjY2Vzc0tleSgpLnN0cmluZygpKTsKKyAgICByZXR1cm4gd2Via2l0QWNjZXNz
aWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoYWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWN0aW9u
S2V5QmluZGluZywgY29yZShhY3Rpb24pLT5hY2Nlc3NLZXkoKS5zdHJpbmcoKS51dGY4KCkpOwog
fQogCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXROYW1lKEF0
a0FjdGlvbiogYWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRB
Y2Nlc3NpYmxlQWN0aW9uR2V0TmFtZShBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIDApOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKCFpbmRleCwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGFjdGlvbiksIDApOworICAgIGF1dG8qIGFj
Y2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShhY3Rpb24pOworICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAotICAgIHJldHVy
biBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KEFUS19PQkpFQ1QoYWN0aW9uKSwgQXRrQ2FjaGVk
QWN0aW9uTmFtZSwgY29yZShhY3Rpb24pLT5hY3Rpb25WZXJiKCkpOworICAgIHJldHVybiB3ZWJr
aXRBY2Nlc3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtDYWNo
ZWRBY3Rpb25OYW1lLCBjb3JlKGFjdGlvbiktPmFjdGlvblZlcmIoKS51dGY4KCkpOwogfQogCiB2
b2lkIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25JbnRlcmZhY2VJbml0KEF0a0FjdGlvbklmYWNlKiBp
ZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAKaW5kZXgg
Njk4NDcyNjg2YjguLjVlMjVlNDk4ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQ29tcG9uZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlQ29tcG9uZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrQ29tcG9uZW50KiBjb21wb25lbnQpCiAgICAgaWYgKCFXRUJL
SVRfSVNfQUNDRVNTSUJMRShjb21wb25lbnQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJl
dHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNT
SUJMRShjb21wb25lbnQpKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3Np
YmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGNvbXBvbmVudCkpOwogfQogCiBzdGF0aWMg
SW50UG9pbnQgYXRrVG9Db250ZW50cyhBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBB
dGtDb29yZFR5cGUgY29vcmRUeXBlLCBnaW50IHgsIGdpbnQgeSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwCmluZGV4IDY3NTJkMTJkMzIzLi41YTc5YjEyN2U2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwCkBAIC0zNyw4ICsz
Nyw4IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoZG9jdW1lbnQp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNj
ZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRShkb2N1bWVudCkpOworICAgIHJldHVy
biAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lC
TEUoZG9jdW1lbnQpKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFyKiBkb2N1bWVudEF0dHJpYnV0
ZVZhbHVlKEF0a0RvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgZ2NoYXIqIGF0dHJpYnV0ZSkKQEAg
LTU2LDcgKzU2LDcgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiBkb2N1bWVudEF0dHJpYnV0ZVZhbHVl
KEF0a0RvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgZ2NoYXIqIGEKICAgICBpZiAoIWNvcmVEb2N1
bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBTdHJpbmcgdmFsdWUgPSBTdHJpbmcoKTsK
KyAgICBTdHJpbmcgdmFsdWU7CiAgICAgQXRrQ2FjaGVkUHJvcGVydHkgYXRrQ2FjaGVkUHJvcGVy
dHk7CiAKICAgICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcChhdHRyaWJ1dGUsICJEb2NUeXBlIikg
JiYgY29yZURvY3VtZW50LT5kb2N0eXBlKCkpIHsKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGNv
bnN0IGdjaGFyKiBkb2N1bWVudEF0dHJpYnV0ZVZhbHVlKEF0a0RvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgZ2NoYXIqIGEKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoQVRLX09CSkVDVChkb2N1bWVudCks
IGF0a0NhY2hlZFByb3BlcnR5LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB3ZWJraXRBY2Nlc3Np
YmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShXRUJLSVRfQUNDRVNTSUJMRShkb2N1bWVudCks
IGF0a0NhY2hlZFByb3BlcnR5LCB2YWx1ZS51dGY4KCkpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlRWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGEx
MmU5NmE4ZjA3Li44MTZjMTU2MDcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZUVkaXRhYmxlVGV4dC5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlICJFZGl0b3Iu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGls
LmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmUoQXRrRWRpdGFibGVUZXh0KiB0ZXh0KQogICAgIGlmICghV0VCS0lUX0lTX0FD
Q0VTU0lCTEUodGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHdlYmtpdEFj
Y2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsK
KyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJ
VF9BQ0NFU1NJQkxFKHRleHQpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2li
bGVFZGl0YWJsZVRleHRTZXRSdW5BdHRyaWJ1dGVzKEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgQXRr
QXR0cmlidXRlU2V0KiwgZ2ludCwgZ2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZUh5cGVydGV4dC5jcHAKaW5kZXggZjEyZTNkZjY3OWQuLmFhMDhlZTMyMGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlSHlwZXJ0ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcApAQCAtMjMsOCArMjMsOCBAQAog
I2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZVV0aWwuaCIKLSNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZShBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKICAgICBpZiAoIVdF
QktJVF9JU19BQ0NFU1NJQkxFKGh5cGVydGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NF
U1NJQkxFKGh5cGVydGV4dCkpOworICAgIHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vz
c2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUoaHlwZXJ0ZXh0KSk7CiB9CiAKIHN0YXRp
YyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVy
dGV4dCogaHlwZXJ0ZXh0LCBnaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VJ
bWFnZS5jcHAKaW5kZXggODQzOTY5YjQyMDMuLmY1ODZlZTI3MWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VJbWFnZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiV2Vi
S2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5j
bHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmUoQXRrSW1hZ2UqIGltYWdlKQogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoaW1hZ2Up
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNj
ZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRShpbWFnZSkpOworICAgIHJldHVybiAm
d2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUo
aW1hZ2UpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUltYWdlR2V0SW1hZ2VQ
b3NpdGlvbihBdGtJbWFnZSogaW1hZ2UsIGdpbnQqIHgsIGdpbnQqIHksIEF0a0Nvb3JkVHlwZSBj
b29yZFR5cGUpCkBAIC02MCwxMCArNjAsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJs
ZUltYWdlR2V0SW1hZ2VQb3NpdGlvbihBdGtJbWFnZSogaW1hZ2UsIGdpbnQqIHgsIGdpbnQKIAog
c3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZURlc2NyaXB0
aW9uKEF0a0ltYWdlKiBpbWFnZSkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSU1B
R0UoaW1hZ2UpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUoaW1hZ2UpLCAwKTsKKyAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VC
S0lUX0FDQ0VTU0lCTEUoaW1hZ2UpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlz
SW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAotICAgIHJldHVybiBjYWNoZUFuZFJldHVy
bkF0a1Byb3BlcnR5KEFUS19PQkpFQ1QoaW1hZ2UpLCBBdGtDYWNoZWRJbWFnZURlc2NyaXB0aW9u
LCBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oY29yZShpbWFnZSkpKTsKKyAgICByZXR1cm4gd2Vi
a2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoYWNjZXNzaWJsZSwgQXRrQ2Fj
aGVkSW1hZ2VEZXNjcmlwdGlvbiwgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKGNvcmUoaW1hZ2Up
KS51dGY4KCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFn
ZVNpemUoQXRrSW1hZ2UqIGltYWdlLCBnaW50KiB3aWR0aCwgZ2ludCogaGVpZ2h0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcAppbmRleCA1YmZkOTI1NWJmYy4u
NzdlOGZlNTFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24u
Y3BwCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgog
I2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24pCiAgICAgaWYgKCFXRUJL
SVRfSVNfQUNDRVNTSUJMRShzZWxlY3Rpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRf
QUNDRVNTSUJMRShzZWxlY3Rpb24pKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbikpOwogfQogCiBz
dGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdE9iamVjdEZvclNlbGVjdGlvbihBdGtTZWxl
Y3Rpb24qIHNlbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCmlu
ZGV4IDJkYTM0YzljODM0Li42MjE0OWRmNTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGFibGUuY3BwCkBAIC00MCw5ICs0MCw5IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrVGFibGUqIHRhYmxlKQogICAgIGlmICghV0VCS0lUX0lTX0FD
Q0VTU0lCTEUodGFibGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB3
ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRSh0
YWJsZSkpOworICAgIHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmpl
Y3QoV0VCS0lUX0FDQ0VTU0lCTEUodGFibGUpKTsKIH0KIAogc3RhdGljIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqIGNlbGwoQXRrVGFibGUqIHRhYmxlLCBndWludCByb3csIGd1aW50IGNvbHVtbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5jcHAKaW5kZXggNjIzZTNl
MWE1ZmQuLmUzNDFkYzI5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGVDZWxsLmNwcApAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDcgKzQ1LDcg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrVGFibGVDZWxsKiBjZWxsKQog
ICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoY2VsbCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0
KFdFQktJVF9BQ0NFU1NJQkxFKGNlbGwpKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVH
ZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGNlbGwpKTsKIH0KIAogR1B0
ckFycmF5KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0Q29sdW1uSGVhZGVyQ2VsbHMoQXRr
VGFibGVDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IDk0NDUzZGMzZGU1Li4zNjllOTZlMTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgorI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5o
IgotI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCiAjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
NjYsNyArNjYsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtUZXh0KiB0
ZXh0KQogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUodGV4dCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0
KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVH
ZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKIH0KIAogc3Rh
dGljIGludCBiYXNlbGluZVBvc2l0aW9uRm9yUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5jcHAKaW5kZXggYWM1
ODJmYTY2OTcuLmVkYjVlODU1MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1
ZS5jcHAKQEAgLTI0LDggKzI0LDggQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKLSNpbmNsdWRlICJXZWJLaXRBY2Nl
c3NpYmxlV3JhcHBlckF0ay5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlKEF0a1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIVdFQktJVF9JU19BQ0NF
U1NJQkxFKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gd2Via2l0QWNj
ZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUodmFsdWUpKTsK
KyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJ
VF9BQ0NFU1NJQkxFKHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHdlYmtpdEFjY2Vzc2libGVT
ZXROZXdWYWx1ZShBdGtWYWx1ZSogY29yZVZhbHVlLCBjb25zdCBnZG91YmxlIG5ld1ZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVV0aWwuY3BwCmluZGV4IGEyNmY3MGEyMjA3Li5hMmY1OTM2YjcxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVVdGlsLmNwcApAQCAtMzMsMTEgKzMzLDE0IEBACiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
CiAKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9i
amVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0
aW9uLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTE3Myw0ICsx
NzYsODQgQEAgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgJiYgKCZyYW5nZS0+c3Rh
cnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3RhcnRPZmZzZXQoKSAh
PSBsYXN0T2Zmc2V0KTsKIH0KIAorQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFu
ZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlZmVyZW5jZU9iamVj
dCwgaW50JiBvZmZzZXQpCit7CisgICAgLy8gSW5kaWNhdGlvbiB0aGF0IHNvbWV0aGluZyBib2d1
cyBoYXMgdHJhbnNwaXJlZC4KKyAgICBvZmZzZXQgPSAtMTsKKworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHJlZmVyZW5jZU9iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE5vZGUqIGZvY3VzZWROb2RlID0gcmVmZXJl
bmNlT2JqZWN0LT5zZWxlY3Rpb24oKS5lbmQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFm
b2N1c2VkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW5kZXJPYmplY3Qq
IGZvY3VzZWRSZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOworICAgIGlmICghZm9j
dXNlZFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShmb2N1c2VkUmVuZGVyZXIpOworICAgIGlmICghZm9jdXNlZE9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBMb29rIGZvciB0aGUgYWN0dWFsIChub3QgaWdu
b3JpbmcgYWNjZXNzaWJpbGl0eSkgc2VsZWN0ZWQgb2JqZWN0LgorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZm9jdXNlZE9iamVjdDsKKyAgICBpZiAoZmly
c3RVbmlnbm9yZWRQYXJlbnQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgZmly
c3RVbmlnbm9yZWRQYXJlbnQgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CisgICAgaWYgKCFmaXJzdFVuaWdub3JlZFBhcmVudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBEb24ndCBpZ25vcmUgbGlua3MgaWYgdGhlIG9mZnNldCBpcyBi
ZWluZyByZXF1ZXN0ZWQgZm9yIGEgbGluaworICAgIC8vIG9yIGlmIHRoZSBsaW5rIGlzIGEgYmxv
Y2suCisgICAgaWYgKCFyZWZlcmVuY2VPYmplY3QtPmlzTGluaygpICYmIGZpcnN0VW5pZ25vcmVk
UGFyZW50LT5pc0xpbmsoKQorICAgICAgICAmJiAhKGZpcnN0VW5pZ25vcmVkUGFyZW50LT5yZW5k
ZXJlcigpICYmICFmaXJzdFVuaWdub3JlZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkp
CisgICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gVGhlIHJlZmVyZW5jZSBvYmplY3QgbXVz
dCBlaXRoZXIgY29pbmNpZGUgd2l0aCB0aGUgZm9jdXNlZAorICAgIC8vIG9iamVjdCBiZWluZyBj
b25zaWRlcmVkLCBvciBiZSBhIGRlc2NlbmRhbnQgb2YgaXQuCisgICAgaWYgKHJlZmVyZW5jZU9i
amVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3QoZmlyc3RVbmlnbm9yZWRQYXJlbnQpKQorICAgICAg
ICByZWZlcmVuY2VPYmplY3QgPSBmaXJzdFVuaWdub3JlZFBhcmVudDsKKworICAgIE5vZGUqIHN0
YXJ0Tm9kZSA9IG51bGxwdHI7CisgICAgaWYgKGZpcnN0VW5pZ25vcmVkUGFyZW50ICE9IHJlZmVy
ZW5jZU9iamVjdCB8fCBmaXJzdFVuaWdub3JlZFBhcmVudC0+aXNUZXh0Q29udHJvbCgpKSB7Cisg
ICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBmaXJzdCBjaGlsZCdzIG5vZGUgb2YgdGhlIHJl
ZmVyZW5jZQorICAgICAgICAvLyBvYmplY3QgYXMgdGhlIHN0YXJ0IHBvaW50IHRvIGNhbGN1bGF0
ZSB0aGUgY2FyZXQgb2Zmc2V0CisgICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBiZSBy
ZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCisgICAgICAgIC8vIHJlZmVyZW5jZSwgbm90IGp1c3Qg
dG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCisgICAgICAgIC8vIHByZXZp
b3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9vKS4KKyAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJlbmNlT2JqZWN0
LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmIChheEZpcnN0Q2hpbGQpCisgICAgICAgICAgICBz
dGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKKyAgICB9CisgICAgLy8gR2V0dGluZyB0
aGUgUG9zaXRpb24gb2YgYSBQc2V1ZG9FbGVtZW50IG5vdyB0cmlnZ2VycyBhbiBhc3NlcnRpb24u
CisgICAgLy8gVGhpcyBjYW4gb2NjdXIgd2hlbiBjbGlja2luZyBvbiBlbXB0eSBzcGFjZSBpbiBh
IHJlbmRlciBibG9jay4KKyAgICBpZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRv
RWxlbWVudCgpKQorICAgICAgICBzdGFydE5vZGUgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+bm9k
ZSgpOworCisgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgZm9yIHRoZSBmaXJzdCBwYXJlbnQgb2Jq
ZWN0IG5vdCBpZ25vcmluZworICAgIC8vIGFjY2Vzc2liaWxpdHkgaXMgbnVsbCBhZ2FpbiBiZWZv
cmUgdXNpbmcgaXQuIFRoaXMgbWlnaHQgaGFwcGVuCisgICAgLy8gd2l0aCBjZXJ0YWluIGtpbmQg
b2YgYWNjZXNzaWJpbGl0eSBvYmplY3RzLCBzdWNoIGFzIHRoZSByb290CisgICAgLy8gb25lICh0
aGUgc2Nyb2xsZXIgY29udGFpbmluZyB0aGUgd2ViQXJlYSBvYmplY3QpLgorICAgIGlmICghc3Rh
cnROb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZpc2libGVQb3NpdGlvbiBz
dGFydFBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydE5v
ZGUpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24gPSBmaXJz
dFVuaWdub3JlZFBhcmVudC0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOworCisgICAgaWYgKHN0
YXJ0UG9zaXRpb24gPT0gZW5kUG9zaXRpb24pCisgICAgICAgIG9mZnNldCA9IDA7CisgICAgZWxz
ZSBpZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRpb24pKSB7CisgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24ucHJldmlvdXMo
KSk7CisgICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0
KCksIHRydWUpICsgMTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gbWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICAgICAgb2Zmc2V0
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgfQor
CisgICAgcmV0dXJuIGZpcnN0VW5pZ25vcmVkUGFyZW50OworfQorCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGls
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRp
bC5oCmluZGV4IGE5NDYwMDFmNGM2Li5hODk2OWNmMTM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oCkBAIC0z
NSwyOCArMzUsMjYgQEAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIC8vIEFuIGV4aXN0aW5nIGFj
Y2Vzc2liaWxpdHkgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgaW52YWxpZCB3aGV0aGVyIGl0
J3MgYWxyZWFkeQogLy8gZGV0YWNoZWQgb3IgaWYgaXQncyBub3QgYnV0IGp1c3QgdXBkYXRpbmcg
dGhlIGxheW91dCB3aWxsIGRldGFjaCBpdCBhbnl3YXkuCiAjZGVmaW5lIHJldHVybklmV2ViS2l0
QWNjZXNzaWJsZUlzSW52YWxpZCh3ZWJraXRBY2Nlc3NpYmxlKSBHX1NUTVRfU1RBUlQgeyBcCi0g
ICAgaWYgKCF3ZWJraXRBY2Nlc3NpYmxlIHx8IHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKHdl
YmtpdEFjY2Vzc2libGUpKSB7IFwKKyAgICBpZiAoIXdlYmtpdEFjY2Vzc2libGUgfHwgd2Via2l0
QWNjZXNzaWJsZUlzRGV0YWNoZWQod2Via2l0QWNjZXNzaWJsZSkpIFwKICAgICAgICAgcmV0dXJu
OyBcCi0gICAgfSBlbHNlIHsgXAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3Qod2Via2l0QWNjZXNz
aWJsZSk7IFwKLSAgICAgICAgaWYgKCFjb3JlT2JqZWN0IHx8ICFjb3JlT2JqZWN0LT5kb2N1bWVu
dCgpKSBcCi0gICAgICAgICAgICByZXR1cm47IFwKLSAgICAgICAgY29yZU9iamVjdC0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7IFwKLSAgICAgICAgaWYgKHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVk
KHdlYmtpdEFjY2Vzc2libGUpKSBcCi0gICAgICAgICAgICByZXR1cm47IFwKLSAgICB9OyB9IEdf
U1RNVF9FTkQKKyAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vz
c2liaWxpdHlPYmplY3Qod2Via2l0QWNjZXNzaWJsZSk7IFwKKyAgICBpZiAoIWNvcmVPYmplY3Qu
ZG9jdW1lbnQoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBjb3JlT2JqZWN0LnVwZGF0ZUJhY2tpbmdTdG9yZSgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAod2Via2l0QWNjZXNzaWJs
ZUlzRGV0YWNoZWQod2Via2l0QWNjZXNzaWJsZSkpICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICA7IH0gR19TVE1UX0VORAogCiAjZGVmaW5lIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZCh3ZWJraXRBY2Nlc3NpYmxlLCB2YWwpIEdfU1RNVF9TVEFS
VCB7IFwKLSAgICBpZiAoIXdlYmtpdEFjY2Vzc2libGUgfHwgd2Via2l0QWNjZXNzaWJsZUlzRGV0
YWNoZWQod2Via2l0QWNjZXNzaWJsZSkpIHsgXAotICAgICAgICByZXR1cm4gKHZhbCk7IFwKLSAg
ICB9IGVsc2UgeyBcCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSB3
ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdCh3ZWJraXRBY2Nlc3NpYmxlKTsg
XAotICAgICAgICBpZiAoIWNvcmVPYmplY3QgfHwgIWNvcmVPYmplY3QtPmRvY3VtZW50KCkpIFwK
LSAgICAgICAgICAgIHJldHVybiAodmFsKTsgXAotICAgICAgICBjb3JlT2JqZWN0LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsgXAotICAgICAgICBpZiAod2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQo
d2Via2l0QWNjZXNzaWJsZSkpIFwKLSAgICAgICAgICAgIHJldHVybiAodmFsKTsgXAotICAgIH07
IH0gR19TVE1UX0VORAorICAgIGlmICghd2Via2l0QWNjZXNzaWJsZSB8fCB3ZWJraXRBY2Nlc3Np
YmxlSXNEZXRhY2hlZCh3ZWJraXRBY2Nlc3NpYmxlKSkgXAorICAgICAgICByZXR1cm4gKHZhbCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVj
dCh3ZWJraXRBY2Nlc3NpYmxlKTsgXAorICAgIGlmICghY29yZU9iamVjdC5kb2N1bWVudCgpKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4g
KHZhbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGNvcmVPYmplY3QudXBkYXRlQmFja2luZ1N0b3JlKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZCh3
ZWJraXRBY2Nlc3NpYmxlKSkgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKHZh
bCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIDsgfSBHX1NUTVRfRU5ECiAKIEF0a0F0dHJpYnV0ZVNldCogYWRkVG9BdGtBdHRyaWJ1dGVT
ZXQoQXRrQXR0cmlidXRlU2V0KiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUp
OwogCkBAIC02OCw0ICs2Niw2IEBAIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09i
amVjdChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYpOwogCitXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5k
Q2FyZXRPZmZzZXRVbmlnbm9yZWQoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIGludCYg
b2Zmc2V0KTsKKwogI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAppbmRleCA3ZmYxY2EzYWFh
Zi4uNzk2ZWI1YzZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0Zy
YW1lU2VsZWN0aW9uQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFt
ZVNlbGVjdGlvbkF0ay5jcHAKQEAgLTI2LDcgKzI2LDggQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKLSNpbmNs
dWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgorI2luY2x1ZGUgIldlYktpdEFjY2Vz
c2libGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgogI2luY2x1ZGUgPGds
aWIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366803</attachid>
            <date>2019-04-05 00:37:11 -0700</date>
            <delta_ts>2019-04-05 03:00:42 -0700</delta_ts>
            <desc>Rebased patch</desc>
            <filename>wcore-a11y-wrapper-cleanup.diff</filename>
            <type>text/plain</type>
            <size>67894</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjOGFhZjk1MWViNS4uOGMwYmYyNDcxYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxOS0wNC0wNCAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0FUS10gQ2xlYW51cCBhY2Nlc3NpYmxlIHdyYXBwZXIgYmFz
ZSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk2NjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
Q2xlYW51cHM6CisKKyAgICAgICAgIC0gUmVuYW1lIFdlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
IGNwcCBhbmQgaGVhZGVyIGFzIFdlYktpdEFjY2Vzc2libGUgZm9yIGNvbnNpc3RlbmN5IHdpdGgg
dGhlIGNsYXNzIG5hbWUuCisgICAgICAgICAtIFVzZSBXRUJLSVRfREVGSU5FX1RZUEUgaW5zdGVh
ZCBvZiBjdXN0b20gdHlwZSByZWdpc3RyYXRpb24uIFRoaXMgZW5zdXJlcyB0aGF0IGFsbCBDU3Ry
aW5ncyB1c2VkIGluIHByaXZhdGUKKyAgICAgICAgICAgc3RydWN0IGFyZSBubyBsb25nZXIgbGVh
a2VkLgorICAgICAgICAgLSBNb3ZlIGNvcmUgb2JqZWN0IHBvaW50ZXIgdG8gdGhlIHByaXZhdGUg
c3RydWN0LgorICAgICAgICAgLSBSZW1vdmUgY29uZnVzaW5nIGNvcmUoKSBmdW5jdGlvbiBhbmQg
c2ltcGx5IGdldCB0aGUgY29yZSBvYmplY3QgZnJvbSB0aGUgcHJpdmF0ZSBzdHJ1Y3QuCisgICAg
ICAgICAtIFVzZSBudWxscHRyIGluc3RlYWQgb2YgMCBhbmQgb3RoZXIgY29kaW5nIHN0eWxlIGlz
c3Vlcy4KKyAgICAgICAgIC0gUmVuYW1lIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkgYXMgd2Vi
a2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkgYW5kIHVzZSBXZWJLaXRBY2Nl
c3NpYmxlIGFzCisgICAgICAgICAgIGluc3RhbmNlIHBhcmFtZXRlci4KKyAgICAgICAgIC0gTWFr
ZSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdCgpIHJldHVybiBhIHJlZmVy
ZW5jZSwgc2luY2Ugd2UgdXNlIGEgZmFsbGJhY2sgb2JqZWN0IG9uIGRldGFjaCBpdAorICAgICAg
ICAgICBuZXZlciByZXR1cm5zIG51bGxwdHIuCisgICAgICAgICAtIE1vdmUgb2JqZWN0Rm9jdXNl
ZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKCkgdG8gV2ViS2l0QWNjZXNzaWJsZVV0aWwuCisKKyAg
ICAgICAgKiBTb3VyY2VzR1RLLnR4dDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9BWE9i
amVjdENhY2hlQXRrLmNwcDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nl
c3NpYmxlLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmNwcC4KKyAgICAgICAgKHdlYmtpdEFjY2Vzc2li
bGVHZXROYW1lKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbik6Cisg
ICAgICAgIChzZXRBdGtSZWxhdGlvblNldEZyb21Db3JlT2JqZWN0KToKKyAgICAgICAgKGlzUm9v
dE9iamVjdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlR2V0UGFyZW50KToKKyAgICAgICAg
KHdlYmtpdEFjY2Vzc2libGVHZXROQ2hpbGRyZW4pOgorICAgICAgICAod2Via2l0QWNjZXNzaWJs
ZVJlZkNoaWxkKToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleEluUGFyZW50KToK
KyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKGF0a1Jv
bGUpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUdldFJvbGUpOgorICAgICAgICAod2Via2l0
QWNjZXNzaWJsZVJlZlN0YXRlU2V0KToKKyAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVSZWZSZWxh
dGlvblNldCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlSW5pdCk6CisgICAgICAgICh3ZWJr
aXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKToKKyAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxl
X2NsYXNzX2luaXQpOgorICAgICAgICAoaW50ZXJmYWNlTWFza0Zyb21PYmplY3QpOgorICAgICAg
ICAodW5pcXVlQWNjZXNzaWJpbGl0eVR5cGVOYW1lKToKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlU
eXBlRnJvbU9iamVjdCk6CisgICAgICAgICh3ZWJraXRBY2Nlc3NpYmxlTmV3KToKKyAgICAgICAg
KHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKHdlYmtp
dEFjY2Vzc2libGVEZXRhY2gpOgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQp
OgorICAgICAgICAod2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGUuaDogUmVuYW1lZCBm
cm9tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmguCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5
cGVybGluay5jcHA6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcDoKKyAgICAgICAgKGNvcmUpOgor
ICAgICAgICAod2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldEtleWJpbmRpbmcpOgorICAgICAgICAo
d2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldE5hbWUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwOgorICAgICAgICAoY29y
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZURvY3VtZW50LmNwcDoKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAoZG9jdW1lbnRBdHRyaWJ1
dGVWYWx1ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZUVkaXRhYmxlVGV4dC5jcHA6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcDoKKyAg
ICAgICAgKGNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVJbnRlcmZhY2VJbWFnZS5jcHA6CisgICAgICAgIChjb3JlKToKKyAgICAgICAgKHdlYmtpdEFj
Y2Vzc2libGVJbWFnZUdldEltYWdlRGVzY3JpcHRpb24pOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwOgorICAgICAgICAo
Y29yZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVRhYmxlLmNwcDoKKyAgICAgICAgKGNvcmUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkv
YXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwOgorICAgICAgICAoY29y
ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZVRleHQuY3BwOgorICAgICAgICAoY29yZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcDoKKyAgICAgICAgKGNvcmUpOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGlsLmNwcDoKKyAgICAg
ICAgKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6CisgICAgICAgICogYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaDoKKyAgICAgICAgKiBlZGl0aW5n
L2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHA6CisKIDIwMTktMDQtMDUgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtBVEtdIFVzZSBhIHNtYXJ0
IHBvaW50ZXIgZm9yIEFjY2Vzc2liaWxpdHlPYmplY3Qgd3JhcHBlciBhbmQgcmVtb3ZlIEdUSyBz
cGVjaWZpYyBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzR1RLLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0CmluZGV4IGE3OWQ0ZTdiNTM2Li4xN2U3YjRj
MDI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKQEAgLTIzLDYgKzIzLDcgQEAKIAogYWNjZXNzaWJp
bGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKIGFjY2Vzc2liaWxpdHkvYXRrL0FjY2Vzc2li
aWxpdHlPYmplY3RBdGsuY3BwCithY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmNw
cAogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKIGFjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VBY3Rpb24uY3BwIEBuby11bmlm
eQogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5j
cHAKQEAgLTM3LDcgKzM4LDYgQEAgYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVRhYmxlQ2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJ
bnRlcmZhY2VUZXh0LmNwcAogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZVZhbHVlLmNwcAogYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuY3Bw
Ci1hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5jcHAKIAogZWRp
dGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9hdGsvQVhPYmplY3RDYWNoZUF0ay5jcHAKaW5kZXggYmIxODNkMTYy
ZmMuLjUwNWQ2OTQ1MjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9BWE9iamVjdENhY2hlQXRrLmNwcApAQCAtMjksNyArMjksNyBAQAogI2luY2x1ZGUg
IkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKLSNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgorI2lu
Y2x1ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQu
aD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5jcHAKc2ltaWxhcml0eSBpbmRleCA3OCUKcmVuYW1lIGZy
b20gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBw
ZXJBdGsuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJL
aXRBY2Nlc3NpYmxlLmNwcAppbmRleCBhMTQ4MGE2NmEyYS4uY2NlNTE3MGE0ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFw
cGVyQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRB
Y2Nlc3NpYmxlLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
TnVhbnRpIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gQWxvbnpvCi0gKiBDb3B5cmln
aHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxOSBJZ2FsaWEgUy5MLgogICogQ29weXJpZ2h0
IChDKSAyMDEzIFNhbXN1bmcgRWxlY3Ryb25pY3MKICAqCiAgKiBQb3J0aW9ucyBmcm9tIE1vemls
bGEgYTExeSwgY29weXJpZ2h0IGFzIGZvbGxvd3M6CkBAIC0zMCw3ICszMCw3IEBACiAgKi8KIAog
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
LmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogCiAjaWYgSEFWRShBQ0NFU1NJQklM
SVRZKQogCkBAIC02OSwxMSArNjksMTQgQEAKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlSW50
ZXJmYWNlVmFsdWUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgogI2luY2x1
ZGUgPGdsaWIvZ3ByaW50Zi5oPgorI2luY2x1ZGUgPHd0Zi9nbGliL1dURkdUeXBlLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAog
c3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlUHJpdmF0ZSB7CisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0OworCiAgICAgLy8gQ2FjaGVkIGRhdGEgZm9yIEF0a09iamVjdC4KICAgICBDU3Ry
aW5nIGFjY2Vzc2libGVOYW1lOwogICAgIENTdHJpbmcgYWNjZXNzaWJsZURlc2NyaXB0aW9uOwpA
QCAtOTIsNyArOTUsNyBAQCBzdHJ1Y3QgX1dlYktpdEFjY2Vzc2libGVQcml2YXRlIHsKICAgICBD
U3RyaW5nIGltYWdlRGVzY3JpcHRpb247CiB9OwogCi0jZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxF
X0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqKSwgV0VC
S0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZVByaXZhdGUpKQorV0VCS0lUX0RF
RklORV9UWVBFKFdlYktpdEFjY2Vzc2libGUsIHdlYmtpdF9hY2Nlc3NpYmxlLCBBVEtfVFlQRV9P
QkpFQ1QpCiAKIHN0YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBmYWxsYmFja09iamVjdCgpCiB7
CkBAIC0xMDAsMjEgKzEwMywxMyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogZmFsbGJh
Y2tPYmplY3QoKQogICAgIHJldHVybiBvYmplY3Q7CiB9CiAKLXN0YXRpYyBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlKEF0a09iamVjdCogb2JqZWN0KQotewotICAgIGlmICghV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gd2Via2l0
QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0
KSk7Ci19Ci0KIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE5hbWUoQXRr
T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJ
bnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIGF1dG8qIGFjY2Vzc2li
bGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNj
ZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIFZlY3RvcjxBY2Nl
c3NpYmlsaXR5VGV4dD4gdGV4dE9yZGVyOwotICAgIGNvcmUob2JqZWN0KS0+YWNjZXNzaWJpbGl0
eVRleHQodGV4dE9yZGVyKTsKKyAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmFjY2Vzc2li
aWxpdHlUZXh0KHRleHRPcmRlcik7CiAKICAgICBmb3IgKGNvbnN0IGF1dG8mIHRleHQgOiB0ZXh0
T3JkZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2hlY2sgaXMgaGVyZSBiZWNhdXNlIEFj
Y2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojp0aXRsZUVsZW1lbnRUZXh0KCkKQEAgLTEyNywxOSArMTIy
LDE5IEBAIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE5hbWUoQXRrT2Jq
ZWN0KiBvYmplY3QpCiAgICAgICAgIC8vIGluIHRoZSBvcmRlciBkZWZpbmVkIGJ5IHRoYXQgc3Bl
Yy4gU28gdGFrZSB0aGUgZmlyc3QgdGhpbmcgdGhhdCBvdXIgcGxhdGZvcm0KICAgICAgICAgLy8g
ZG9lcyBub3QgZXhwb3NlIHZpYSB0aGUgQXRrT2JqZWN0IGRlc2NyaXB0aW9uLgogICAgICAgICBp
ZiAodGV4dC50ZXh0U291cmNlICE9IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpIZWxwICYmIHRl
eHQudGV4dFNvdXJjZSAhPSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6U3VtbWFyeSkKLSAgICAg
ICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVk
QWNjZXNzaWJsZU5hbWUsIHRleHQudGV4dCk7CisgICAgICAgICAgICByZXR1cm4gd2Via2l0QWNj
ZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoYWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWNj
ZXNzaWJsZU5hbWUsIHRleHQudGV4dC51dGY4KCkpOwogICAgIH0KIAotICAgIHJldHVybiBjYWNo
ZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZU5hbWUsICIi
KTsKKyAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHko
YWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWNjZXNzaWJsZU5hbWUsICIiKTsKIH0KIAogc3RhdGljIGNv
bnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0RGVzY3JpcHRpb24oQXRrT2JqZWN0KiBvYmpl
Y3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2Jq
ZWN0KSwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJ
VF9BQ0NFU1NJQkxFKG9iamVjdCksIDApOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRf
QUNDRVNTSUJMRShvYmplY3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52
YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIFZlY3RvcjxBY2Nlc3NpYmlsaXR5VGV4
dD4gdGV4dE9yZGVyOwotICAgIGNvcmUob2JqZWN0KS0+YWNjZXNzaWJpbGl0eVRleHQodGV4dE9y
ZGVyKTsKKyAgICBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPmFjY2Vzc2liaWxpdHlUZXh0KHRl
eHRPcmRlcik7CiAKICAgICBib29sIG5hbWVUZXh0QXZhaWxhYmxlID0gZmFsc2U7CiAgICAgZm9y
IChjb25zdCBhdXRvJiB0ZXh0IDogdGV4dE9yZGVyKSB7CkBAIC0xNDcsMTcgKzE0MiwxNyBAQCBz
dGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVHZXREZXNjcmlwdGlvbihBdGtPYmpl
Y3QqIG9iamVjdCkKICAgICAgICAgLy8gaW4gdGhlIG9yZGVyIGRlZmluZWQgYnkgdGhhdCBzcGVj
LiBTbyB0YWtlIHRoZSBmaXJzdCB0aGluZyB0aGF0IG91ciBwbGF0Zm9ybQogICAgICAgICAvLyBk
b2VzIG5vdCBleHBvc2UgdmlhIHRoZSBBdGtPYmplY3QgbmFtZS4KICAgICAgICAgaWYgKHRleHQu
dGV4dFNvdXJjZSA9PSBBY2Nlc3NpYmlsaXR5VGV4dFNvdXJjZTo6SGVscCB8fCB0ZXh0LnRleHRT
b3VyY2UgPT0gQWNjZXNzaWJpbGl0eVRleHRTb3VyY2U6OlN1bW1hcnkpCi0gICAgICAgICAgICBy
ZXR1cm4gY2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZEFjY2Vzc2li
bGVEZXNjcmlwdGlvbiwgdGV4dC50ZXh0KTsKKyAgICAgICAgICAgIHJldHVybiB3ZWJraXRBY2Nl
c3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtDYWNoZWRBY2Nl
c3NpYmxlRGVzY3JpcHRpb24sIHRleHQudGV4dC51dGY4KCkpOwogCiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIG5vIG90aGVyIHRleHQgYWx0ZXJuYXRpdmUsIHRoZSB0aXRsZSB0YWcgY29udGVudHMg
d2lsbCBoYXZlIGJlZW4KICAgICAgICAgLy8gdXNlZCBmb3IgdGhlIEF0a09iamVjdCBuYW1lLiBX
ZSBkb24ndCB3YW50IHRvIGR1cGxpY2F0ZSBpdCBoZXJlLgogICAgICAgICBpZiAodGV4dC50ZXh0
U291cmNlID09IEFjY2Vzc2liaWxpdHlUZXh0U291cmNlOjpUaXRsZVRhZyAmJiBuYW1lVGV4dEF2
YWlsYWJsZSkKLSAgICAgICAgICAgIHJldHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9i
amVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJsZURlc2NyaXB0aW9uLCB0ZXh0LnRleHQpOworICAgICAg
ICAgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KGFj
Y2Vzc2libGUsIEF0a0NhY2hlZEFjY2Vzc2libGVEZXNjcmlwdGlvbiwgdGV4dC50ZXh0LnV0Zjgo
KSk7CiAKICAgICAgICAgbmFtZVRleHRBdmFpbGFibGUgPSB0cnVlOwogICAgIH0KIAotICAgIHJl
dHVybiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KG9iamVjdCwgQXRrQ2FjaGVkQWNjZXNzaWJs
ZURlc2NyaXB0aW9uLCAiIik7CisgICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVDYWNoZUFuZFJl
dHVybkF0a1Byb3BlcnR5KGFjY2Vzc2libGUsIEF0a0NhY2hlZEFjY2Vzc2libGVEZXNjcmlwdGlv
biwgIiIpOwogfQogCiBzdGF0aWMgdm9pZCByZW1vdmVBdGtSZWxhdGlvbkJ5VHlwZShBdGtSZWxh
dGlvblNldCogcmVsYXRpb25TZXQsIEF0a1JlbGF0aW9uVHlwZSByZWxhdGlvblR5cGUpCkBAIC0x
OTIsOSArMTg3LDkgQEAgc3RhdGljIHZvaWQgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9iamVj
dChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGsKICAgICAgICAgICAgICAgICBh
dGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVM
QVRJT05fTEFCRUxfRk9SLCBBVEtfT0JKRUNUKGZpZWxkc2V0LT53cmFwcGVyKCkpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29udHJvbCA9IGNvcmVPYmplY3QtPmNvcnJlc3BvbmRpbmdDb250cm9sRm9yTGFiZWxFbGVtZW50
KCkpIHsKKyAgICB9IGVsc2UgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvbnRyb2wgPSBjb3Jl
T2JqZWN0LT5jb3JyZXNwb25kaW5nQ29udHJvbEZvckxhYmVsRWxlbWVudCgpKQogICAgICAgICBh
dGtfcmVsYXRpb25fc2V0X2FkZF9yZWxhdGlvbl9ieV90eXBlKHJlbGF0aW9uU2V0LCBBVEtfUkVM
QVRJT05fTEFCRUxfRk9SLCBBVEtfT0JKRUNUKGNvbnRyb2wtPndyYXBwZXIoKSkpOwotICAgIH0g
ZWxzZSB7CisgICAgZWxzZSB7CiAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3Q6OkFjY2Vzc2li
aWxpdHlDaGlsZHJlblZlY3RvciBhcmlhTGFiZWxsZWRCeUVsZW1lbnRzOwogICAgICAgICBjb3Jl
T2JqZWN0LT5hcmlhTGFiZWxsZWRCeUVsZW1lbnRzKGFyaWFMYWJlbGxlZEJ5RWxlbWVudHMpOwog
ICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjY2Vzc2liaWxpdHlPYmplY3QgOiBhcmlhTGFiZWxs
ZWRCeUVsZW1lbnRzKQpAQCAtMjk0LDggKzI4OSw2IEBAIHN0YXRpYyB2b2lkIHNldEF0a1JlbGF0
aW9uU2V0RnJvbUNvcmVPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCwgQXRr
CiAjZW5kaWYKIH0KIAotc3RhdGljIGdwb2ludGVyIHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFz
cyA9IG51bGxwdHI7Ci0KIHN0YXRpYyBib29sIGlzUm9vdE9iamVjdChBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBjb3JlT2JqZWN0KQogewogICAgIC8vIFRoZSByb290IGFjY2Vzc2libGUgb2JqZWN0IGlu
IFdlYkNvcmUgaXMgYWx3YXlzIGFuIG9iamVjdCB3aXRoCkBAIC0zMDQsODAgKzI5Nyw1NiBAQCBz
dGF0aWMgYm9vbCBpc1Jvb3RPYmplY3QoQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZU9iamVjdCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZmlyc3RD
aGlsZCA9IGNvcmVPYmplY3QtPmZpcnN0Q2hpbGQoKTsKLSAgICBpZiAoIWZpcnN0Q2hpbGQgfHwg
IWZpcnN0Q2hpbGQtPmlzV2ViQXJlYSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotc3RhdGljIEF0a09iamVjdCogYXRrUGFyZW50T2ZSb290T2JqZWN0
KEF0a09iamVjdCogb2JqZWN0KQotewotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmpl
Y3QgPSBjb3JlKG9iamVjdCk7Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVBhcmVudCA9
IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotCi0gICAgLy8gVGhlIHRvcCBs
ZXZlbCBvYmplY3QgY2xhaW1zIHRvIG5vdCBoYXZlIGEgcGFyZW50LiBUaGlzIG1ha2VzIGl0Ci0g
ICAgLy8gaW1wb3NzaWJsZSBmb3IgYXNzaXN0aXZlIHRlY2hub2xvZ2llcyB0byBhc2NlbmQgdGhl
IGFjY2Vzc2libGUKLSAgICAvLyBoaWVyYXJjaHkgYWxsIHRoZSB3YXkgdG8gdGhlIGFwcGxpY2F0
aW9uLiAoQnVnIDMwNDg5KQotICAgIGlmICghY29yZVBhcmVudCAmJiBpc1Jvb3RPYmplY3QoY29y
ZU9iamVjdCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gY29yZU9iamVjdC0+ZG9j
dW1lbnQoKTsKLSAgICAgICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgICAgIHJldHVybiAwOwot
ICAgIH0KLQotICAgIHJldHVybiBjb3JlUGFyZW50ID8gQVRLX09CSkVDVChjb3JlUGFyZW50LT53
cmFwcGVyKCkpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxk
LT5pc1dlYkFyZWEoKTsKIH0KIAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZUdl
dFBhcmVudChBdGtPYmplY3QqIG9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChX
RUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFj
Y2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7CisgICAgYXV0
byogYWNjZXNzaWJsZSA9IFdFQktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CisgICAgcmV0dXJuVmFs
SWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCiAgICAg
Ly8gQ2hlY2sgZmlyc3QgaWYgdGhlIHBhcmVudCBoYXMgYmVlbiBhbHJlYWR5IHNldC4KLSAgICBB
dGtPYmplY3QqIGFjY2Vzc2libGVQYXJlbnQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vz
c2libGVQYXJlbnRDbGFzcyktPmdldF9wYXJlbnQob2JqZWN0KTsKKyAgICBBdGtPYmplY3QqIGFj
Y2Vzc2libGVQYXJlbnQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdF9hY2Nlc3NpYmxlX3BhcmVu
dF9jbGFzcyktPmdldF9wYXJlbnQob2JqZWN0KTsKICAgICBpZiAoYWNjZXNzaWJsZVBhcmVudCkK
ICAgICAgICAgcmV0dXJuIGFjY2Vzc2libGVQYXJlbnQ7CiAKICAgICAvLyBQYXJlbnQgbm90IHNl
dCB5ZXQsIHNvIHRyeSB0byBmaW5kIGl0IGluIHRoZSBoaWVyYXJjaHkuCi0gICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogY29yZU9iamVjdCA9IGNvcmUob2JqZWN0KTsKLSAgICBpZiAoIWNvcmVPYmpl
Y3QpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVBh
cmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotCi0gICAgaWYgKCFj
b3JlUGFyZW50ICYmIGlzUm9vdE9iamVjdChjb3JlT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuIGF0
a1BhcmVudE9mUm9vdE9iamVjdChvYmplY3QpOworICAgIGF1dG8qIGNvcmVPYmplY3QgPSBhY2Nl
c3NpYmxlLT5wcml2LT5vYmplY3Q7CisgICAgYXV0byogY29yZVBhcmVudCA9IGNvcmVPYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghY29yZVBhcmVudCAmJiBpc1Jvb3RP
YmplY3QoY29yZU9iamVjdCkpIHsKKyAgICAgICAgLy8gVGhlIHRvcCBsZXZlbCBvYmplY3QgY2xh
aW1zIHRvIG5vdCBoYXZlIGEgcGFyZW50LiBUaGlzIG1ha2VzIGl0CisgICAgICAgIC8vIGltcG9z
c2libGUgZm9yIGFzc2lzdGl2ZSB0ZWNobm9sb2dpZXMgdG8gYXNjZW5kIHRoZSBhY2Nlc3NpYmxl
CisgICAgICAgIC8vIGhpZXJhcmNoeSBhbGwgdGhlIHdheSB0byB0aGUgYXBwbGljYXRpb24uIChC
dWcgMzA0ODkpCisgICAgICAgIGlmICghY29yZU9iamVjdC0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
ICAgIHJldHVybiBudWxscHRyOworICAgIH0KIAogICAgIHJldHVybiBjb3JlUGFyZW50ID8gQVRL
X09CSkVDVChjb3JlUGFyZW50LT53cmFwcGVyKCkpIDogbnVsbHB0cjsKIH0KIAogc3RhdGljIGdp
bnQgd2Via2l0QWNjZXNzaWJsZUdldE5DaGlsZHJlbihBdGtPYmplY3QqIG9iamVjdCkKIHsKLSAg
ICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsK
LSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lC
TEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0g
Y29yZShvYmplY3QpOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShv
YmplY3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3Np
YmxlLCAwKTsKIAotICAgIHJldHVybiBjb3JlT2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKKyAg
ICByZXR1cm4gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5jaGlsZHJlbigpLnNpemUoKTsKIH0K
IAogc3RhdGljIEF0a09iamVjdCogd2Via2l0QWNjZXNzaWJsZVJlZkNoaWxkKEF0a09iamVjdCog
b2JqZWN0LCBnaW50IGluZGV4KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9J
U19BQ0NFU1NJQkxFKG9iamVjdCksIDApOwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJs
ZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAgICBhdXRvKiBhY2Nl
c3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKKyAgICByZXR1cm5WYWxJZldlYktp
dEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKICAgICBpZiAoaW5k
ZXggPCAwKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmVDaGlsZCA9IG51bGxwdHI7Ci0KLSAgICBjb25zdCBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImIGNoaWxkcmVuID0g
Y29yZU9iamVjdC0+Y2hpbGRyZW4oKTsKKyAgICBjb25zdCBhdXRvJiBjaGlsZHJlbiA9IGFjY2Vz
c2libGUtPnByaXYtPm9iamVjdC0+Y2hpbGRyZW4oKTsKICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6
ZV90PihpbmRleCkgPj0gY2hpbGRyZW4uc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICBj
b3JlQ2hpbGQgPSBjaGlsZHJlbi5hdChpbmRleCkuZ2V0KCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogCisgICAgYXV0byYgY29yZUNoaWxkID0gY2hpbGRyZW5baW5kZXhdOwogICAgIGlmICgh
Y29yZUNoaWxkKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvKiBjaGlsZCA9IEFUS19PQkpFQ1QoY29yZUNoaWxkLT53cmFwcGVyKCkpOwogICAg
IGF0a19vYmplY3Rfc2V0X3BhcmVudChjaGlsZCwgb2JqZWN0KTsKQEAgLTM4OCwyMyArMzU3LDIz
IEBAIHN0YXRpYyBBdGtPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVSZWZDaGlsZChBdGtPYmplY3Qq
IG9iamVjdCwgZ2ludCBpbmRleCkKIAogc3RhdGljIGdpbnQgd2Via2l0QWNjZXNzaWJsZUdldElu
ZGV4SW5QYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwoV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqZWN0KSwgLTEpOwotICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpLCAtMSk7Ci0K
LSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmpl
Y3QpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxl
LCAtMSk7CiAKKyAgICBhdXRvKiBjb3JlT2JqZWN0ID0gYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0
OworICAgIGF1dG8qIHBhcmVudCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgp
OwogICAgIGlmICghcGFyZW50ICYmIGlzUm9vdE9iamVjdChjb3JlT2JqZWN0KSkgewotICAgICAg
ICBBdGtPYmplY3QqIGF0a1BhcmVudCA9IGF0a1BhcmVudE9mUm9vdE9iamVjdChvYmplY3QpOwor
ICAgICAgICBpZiAoIWNvcmVPYmplY3QtPmRvY3VtZW50KCkpCisgICAgICAgICAgICByZXR1cm4g
LTE7CisKKyAgICAgICAgYXV0byogYXRrUGFyZW50ID0gcGFyZW50ID8gQVRLX09CSkVDVChwYXJl
bnQtPndyYXBwZXIoKSkgOiBudWxscHRyOwogICAgICAgICBpZiAoIWF0a1BhcmVudCkKICAgICAg
ICAgICAgIHJldHVybiAtMTsKIAogICAgICAgICB1bnNpZ25lZCBjb3VudCA9IGF0a19vYmplY3Rf
Z2V0X25fYWNjZXNzaWJsZV9jaGlsZHJlbihhdGtQYXJlbnQpOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewotICAgICAgICAgICAgQXRrT2JqZWN0KiBjaGls
ZCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoYXRrUGFyZW50LCBpKTsKLSAgICAg
ICAgICAgIGJvb2wgY2hpbGRJc09iamVjdCA9IGNoaWxkID09IG9iamVjdDsKLSAgICAgICAgICAg
IGdfb2JqZWN0X3VucmVmKGNoaWxkKTsKLSAgICAgICAgICAgIGlmIChjaGlsZElzT2JqZWN0KQor
ICAgICAgICAgICAgR1JlZlB0cjxBdGtPYmplY3Q+IGNoaWxkID0gYWRvcHRHUmVmKGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoYXRrUGFyZW50LCBpKSk7CisgICAgICAgICAgICBpZiAo
Y2hpbGQuZ2V0KCkgPT0gb2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBpOwogICAgICAg
ICB9CiAgICAgfQpAQCAtNDE4LDE3ICszODcsMTUgQEAgc3RhdGljIGdpbnQgd2Via2l0QWNjZXNz
aWJsZUdldEluZGV4SW5QYXJlbnQoQXRrT2JqZWN0KiBvYmplY3QpCiAKIHN0YXRpYyBBdGtBdHRy
aWJ1dGVTZXQqIHdlYmtpdEFjY2Vzc2libGVHZXRBdHRyaWJ1dGVzKEF0a09iamVjdCogb2JqZWN0
KQogewotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iamVj
dCksIDApOwotICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52YWxpZChXRUJLSVRf
QUNDRVNTSUJMRShvYmplY3QpLCAwKTsKKyAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FD
Q0VTU0lCTEUob2JqZWN0KTsKKyAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFs
aWQoYWNjZXNzaWJsZSwgbnVsbHB0cik7CiAKICAgICBBdGtBdHRyaWJ1dGVTZXQqIGF0dHJpYnV0
ZVNldCA9IG51bGxwdHI7CiAjaWYgUExBVEZPUk0oR1RLKQogICAgIGF0dHJpYnV0ZVNldCA9IGFk
ZFRvQXRrQXR0cmlidXRlU2V0KGF0dHJpYnV0ZVNldCwgInRvb2xraXQiLCAiV2ViS2l0R3RrIik7
CiAjZW5kaWYKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSBjb3JlKG9i
amVjdCk7Ci0gICAgaWYgKCFjb3JlT2JqZWN0KQotICAgICAgICByZXR1cm4gYXR0cmlidXRlU2V0
OworICAgIGF1dG8qIGNvcmVPYmplY3QgPSBhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Q7CiAKICAg
ICAvLyBIYWNrIG5lZWRlZCBmb3IgV2ViS2l0MiB0ZXN0cyBiZWNhdXNlIG9idGFpbmluZyBhbiBl
bGVtZW50IGJ5IGl0cyBJRAogICAgIC8vIGNhbm5vdCBiZSBkb25lIGZyb20gdGhlIFVJUHJvY2Vz
cy4gQXNzaXN0aXZlIHRlY2hub2xvZ2llcyBoYXZlIG5vIG5lZWQKQEAgLTYwNSw4ICs1NzIsNyBA
QCBzdGF0aWMgQXRrQXR0cmlidXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlcyhB
dGtPYmplY3QqIG9iamVjdCkKIAogc3RhdGljIEF0a1JvbGUgYXRrUm9sZShBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBjb3JlT2JqZWN0KQogewotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBjb3Jl
T2JqZWN0LT5yb2xlVmFsdWUoKTsKLSAgICBzd2l0Y2ggKHJvbGUpIHsKKyAgICBzd2l0Y2ggKGNv
cmVPYmplY3QtPnJvbGVWYWx1ZSgpKSB7CiAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6QXBw
bGljYXRpb25BbGVydDoKICAgICAgICAgcmV0dXJuIEFUS19ST0xFX0FMRVJUOwogICAgIGNhc2Ug
QWNjZXNzaWJpbGl0eVJvbGU6OkFwcGxpY2F0aW9uQWxlcnREaWFsb2c6CkBAIC04NzYsMTkgKzg0
MiwxNCBAQCBzdGF0aWMgQXRrUm9sZSB3ZWJraXRBY2Nlc3NpYmxlR2V0Um9sZShBdGtPYmplY3Qq
IG9iamVjdCkKIHsKICAgICAvLyBBVEtfUk9MRV9VTktOT1dOIHNob3VsZCBvbmx5IGJlIGFwcGxp
ZWQgaW4gY2FzZXMgd2hlcmUgdGhlcmUgaXMgYSB2YWxpZAogICAgIC8vIFdlYkNvcmUgYWNjZXNz
aWJsZSBvYmplY3QgZm9yIHdoaWNoIHRoZSBwbGF0Zm9ybSByb2xlIG1hcHBpbmcgaXMgdW5rbm93
bi4KLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJMRShvYmplY3Qp
LCBBVEtfUk9MRV9JTlZBTElEKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0lu
dmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgQVRLX1JPTEVfSU5WQUxJRCk7Ci0KLSAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotCi0gICAg
aWYgKCFjb3JlT2JqZWN0KQotICAgICAgICByZXR1cm4gQVRLX1JPTEVfSU5WQUxJRDsKKyAgICBh
dXRvKiBhY2Nlc3NpYmxlID0gV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KTsKKyAgICByZXR1cm5W
YWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQoYWNjZXNzaWJsZSwgQVRLX1JPTEVfSU5WQUxJ
RCk7CiAKICAgICAvLyBOb3RlOiBXaHkgZG9lc24ndCBXZWJDb3JlIGhhdmUgYSBwYXNzd29yZCBm
aWVsZCBmb3IgdGhpcwotICAgIGlmIChjb3JlT2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKKyAg
ICBpZiAoYWNjZXNzaWJsZS0+cHJpdi0+b2JqZWN0LT5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAg
ICAgcmV0dXJuIEFUS19ST0xFX1BBU1NXT1JEX1RFWFQ7CiAKLSAgICByZXR1cm4gYXRrUm9sZShj
b3JlT2JqZWN0KTsKKyAgICByZXR1cm4gYXRrUm9sZShhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3Qp
OwogfQogCiBzdGF0aWMgYm9vbCBpc1RleHRXaXRoQ2FyZXQoQWNjZXNzaWJpbGl0eU9iamVjdCog
Y29yZU9iamVjdCkKQEAgLTEwNTMsMTYgKzEwMTQsMTQgQEAgc3RhdGljIHZvaWQgc2V0QXRrU3Rh
dGVTZXRGcm9tQ29yZU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBBdGtT
dGEKIAogc3RhdGljIEF0a1N0YXRlU2V0KiB3ZWJraXRBY2Nlc3NpYmxlUmVmU3RhdGVTZXQoQXRr
T2JqZWN0KiBvYmplY3QpCiB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX0FD
Q0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBdGtTdGF0ZVNldCogc3RhdGVTZXQgPSBBVEtf
T0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcyktPnJlZl9zdGF0ZV9zZXQo
b2JqZWN0KTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmpl
Y3QpOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShvYmplY3QpOwor
ICAgIEF0a1N0YXRlU2V0KiBzdGF0ZVNldCA9IEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0X2FjY2Vz
c2libGVfcGFyZW50X2NsYXNzKS0+cmVmX3N0YXRlX3NldChvYmplY3QpOwogCiAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBsYXlvdXQgaXMgdXBkYXRlZCB0byByZWFsbHkga25vdyB3aGV0aGVyIHRoZSBv
YmplY3QKICAgICAvLyBpcyBkZWZ1bmN0IG9yIG5vdCwgc28gd2UgY2FuIHJldHVybiB0aGUgcHJv
cGVyIHN0YXRlLgotICAgIGNvcmVPYmplY3QtPnVwZGF0ZUJhY2tpbmdTdG9yZSgpOworICAgIGFj
Y2Vzc2libGUtPnByaXYtPm9iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAKLSAgICBpZiAo
Y29yZU9iamVjdCA9PSBmYWxsYmFja09iamVjdCgpKSB7CisgICAgaWYgKGFjY2Vzc2libGUtPnBy
aXYtPm9iamVjdCA9PSBmYWxsYmFja09iamVjdCgpKSB7CiAgICAgICAgIGF0a19zdGF0ZV9zZXRf
YWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfREVGVU5DVCk7CiAgICAgICAgIHJldHVybiBz
dGF0ZVNldDsKICAgICB9CkBAIC0xMDcyLDU2ICsxMDMxLDQ4IEBAIHN0YXRpYyBBdGtTdGF0ZVNl
dCogd2Via2l0QWNjZXNzaWJsZVJlZlN0YXRlU2V0KEF0a09iamVjdCogb2JqZWN0KQogICAgIGlm
IChyb2xlID09IEFUS19ST0xFX1RFWFQgfHwgcm9sZSA9PSBBVEtfUk9MRV9QQVJBR1JBUEgpCiAg
ICAgICAgIGF0a19zdGF0ZV9zZXRfYWRkX3N0YXRlKHN0YXRlU2V0LCBBVEtfU1RBVEVfRk9DVVNB
QkxFKTsKIAotICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoY29yZU9iamVjdCwgc3Rh
dGVTZXQpOworICAgIHNldEF0a1N0YXRlU2V0RnJvbUNvcmVPYmplY3QoYWNjZXNzaWJsZS0+cHJp
di0+b2JqZWN0LCBzdGF0ZVNldCk7CiAgICAgcmV0dXJuIHN0YXRlU2V0OwogfQogCiBzdGF0aWMg
QXRrUmVsYXRpb25TZXQqIHdlYmtpdEFjY2Vzc2libGVSZWZSZWxhdGlvblNldChBdGtPYmplY3Qq
IG9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfQUNDRVNTSUJM
RShvYmplY3QpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBdGtSZWxhdGlvblNldCogcmVs
YXRpb25TZXQgPSBBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcykt
PnJlZl9yZWxhdGlvbl9zZXQob2JqZWN0KTsKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3Jl
T2JqZWN0ID0gY29yZShvYmplY3QpOwotCi0gICAgc2V0QXRrUmVsYXRpb25TZXRGcm9tQ29yZU9i
amVjdChjb3JlT2JqZWN0LCByZWxhdGlvblNldCk7CisgICAgYXV0byogYWNjZXNzaWJsZSA9IFdF
QktJVF9BQ0NFU1NJQkxFKG9iamVjdCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxl
SXNJbnZhbGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCisgICAgQXRrUmVsYXRpb25TZXQqIHJl
bGF0aW9uU2V0ID0gQVRLX09CSkVDVF9DTEFTUyh3ZWJraXRfYWNjZXNzaWJsZV9wYXJlbnRfY2xh
c3MpLT5yZWZfcmVsYXRpb25fc2V0KG9iamVjdCk7CisgICAgc2V0QXRrUmVsYXRpb25TZXRGcm9t
Q29yZU9iamVjdChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QsIHJlbGF0aW9uU2V0KTsKICAgICBy
ZXR1cm4gcmVsYXRpb25TZXQ7CiB9CiAKIHN0YXRpYyB2b2lkIHdlYmtpdEFjY2Vzc2libGVJbml0
KEF0a09iamVjdCogb2JqZWN0LCBncG9pbnRlciBkYXRhKQogewotICAgIGlmIChBVEtfT0JKRUNU
X0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFzcyktPmluaXRpYWxpemUpCi0gICAgICAg
IEFUS19PQkpFQ1RfQ0xBU1Mod2Via2l0QWNjZXNzaWJsZVBhcmVudENsYXNzKS0+aW5pdGlhbGl6
ZShvYmplY3QsIGRhdGEpOworICAgIGlmIChBVEtfT0JKRUNUX0NMQVNTKHdlYmtpdF9hY2Nlc3Np
YmxlX3BhcmVudF9jbGFzcyktPmluaXRpYWxpemUpCisgICAgICAgIEFUS19PQkpFQ1RfQ0xBU1Mo
d2Via2l0X2FjY2Vzc2libGVfcGFyZW50X2NsYXNzKS0+aW5pdGlhbGl6ZShvYmplY3QsIGRhdGEp
OwogCiAgICAgV2ViS2l0QWNjZXNzaWJsZSogYWNjZXNzaWJsZSA9IFdFQktJVF9BQ0NFU1NJQkxF
KG9iamVjdCk7Ci0gICAgYWNjZXNzaWJsZS0+bV9vYmplY3QgPSByZWludGVycHJldF9jYXN0PEFj
Y2Vzc2liaWxpdHlPYmplY3QqPihkYXRhKTsKLSAgICBhY2Nlc3NpYmxlLT5wcml2ID0gV0VCS0lU
X0FDQ0VTU0lCTEVfR0VUX1BSSVZBVEUoYWNjZXNzaWJsZSk7CisgICAgYWNjZXNzaWJsZS0+cHJp
di0+b2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxBY2Nlc3NpYmlsaXR5T2JqZWN0Kj4oZGF0YSk7
CiB9CiAKIHN0YXRpYyBjb25zdCBnY2hhciogd2Via2l0QWNjZXNzaWJsZUdldE9iamVjdExvY2Fs
ZShBdGtPYmplY3QqIG9iamVjdCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfQUNDRVNTSUJMRShvYmplY3QpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2li
bGVJc0ludmFsaWQoV0VCS0lUX0FDQ0VTU0lCTEUob2JqZWN0KSwgMCk7Ci0KLSAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0ID0gY29yZShvYmplY3QpOwotICAgIGlmICghY29yZU9i
amVjdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgYXV0byogYWNjZXNzaWJsZSA9IFdFQktJVF9B
Q0NFU1NJQkxFKG9iamVjdCk7CisgICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZh
bGlkKGFjY2Vzc2libGUsIG51bGxwdHIpOwogCiAgICAgaWYgKEFUS19JU19ET0NVTUVOVChvYmpl
Y3QpKSB7CiAgICAgICAgIC8vIFRPRE86IFNob3VsZCB3ZSBmYWxsIGJhY2sgb24gbGFuZyB4bWw6
bGFuZyB3aGVuIHRoZSBmb2xsb3dpbmcgY29tZXMgdXAgZW1wdHk/Ci0gICAgICAgIFN0cmluZyBs
YW5ndWFnZSA9IGNvcmVPYmplY3QtPmxhbmd1YWdlKCk7CisgICAgICAgIFN0cmluZyBsYW5ndWFn
ZSA9IGFjY2Vzc2libGUtPnByaXYtPm9iamVjdC0+bGFuZ3VhZ2UoKTsKICAgICAgICAgaWYgKCFs
YW5ndWFnZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gY2FjaGVBbmRSZXR1cm5BdGtQ
cm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZERvY3VtZW50TG9jYWxlLCBsYW5ndWFnZSk7CisgICAg
ICAgICAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHko
YWNjZXNzaWJsZSwgQXRrQ2FjaGVkRG9jdW1lbnRMb2NhbGUsIGxhbmd1YWdlLnV0ZjgoKSk7CiAK
ICAgICB9IGVsc2UgaWYgKEFUS19JU19URVhUKG9iamVjdCkpIHsKICAgICAgICAgY29uc3QgZ2No
YXIqIGxvY2FsZSA9IG51bGxwdHI7CiAKICAgICAgICAgQXRrQXR0cmlidXRlU2V0KiB0ZXh0QXR0
cmlidXRlcyA9IGF0a190ZXh0X2dldF9kZWZhdWx0X2F0dHJpYnV0ZXMoQVRLX1RFWFQob2JqZWN0
KSk7Ci0gICAgICAgIGZvciAoQXRrQXR0cmlidXRlU2V0KiBhdHRyaWJ1dGVzID0gdGV4dEF0dHJp
YnV0ZXM7IGF0dHJpYnV0ZXM7IGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLT5uZXh0KSB7Ci0gICAg
ICAgICAgICBBdGtBdHRyaWJ1dGUqIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0dHJp
YnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOworICAgICAgICBmb3IgKGF1dG8qIGF0dHJpYnV0ZXMg
PSB0ZXh0QXR0cmlidXRlczsgYXR0cmlidXRlczsgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMtPm5l
eHQpIHsKKyAgICAgICAgICAgIGF1dG8qIGF0a0F0dHJpYnV0ZSA9IHN0YXRpY19jYXN0PEF0a0F0
dHJpYnV0ZSo+KGF0dHJpYnV0ZXMtPmRhdGEpOwogICAgICAgICAgICAgaWYgKCFzdHJjbXAoYXRr
QXR0cmlidXRlLT5uYW1lLCBhdGtfdGV4dF9hdHRyaWJ1dGVfZ2V0X25hbWUoQVRLX1RFWFRfQVRU
Ul9MQU5HVUFHRSkpKSB7Ci0gICAgICAgICAgICAgICAgbG9jYWxlID0gY2FjaGVBbmRSZXR1cm5B
dGtQcm9wZXJ0eShvYmplY3QsIEF0a0NhY2hlZERvY3VtZW50TG9jYWxlLCBTdHJpbmc6OmZyb21V
VEY4KGF0a0F0dHJpYnV0ZS0+dmFsdWUpKTsKKyAgICAgICAgICAgICAgICBsb2NhbGUgPSB3ZWJr
aXRBY2Nlc3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtDYWNo
ZWREb2N1bWVudExvY2FsZSwgYXRrQXR0cmlidXRlLT52YWx1ZSk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExMzAsNzkgKzEwODEsNDEgQEAg
c3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlKEF0a09i
amVjdCogb2JqZWN0KQogICAgICAgICByZXR1cm4gbG9jYWxlOwogICAgIH0KIAotICAgIHJldHVy
biAwOwotfQotCi1zdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlRmluYWxpemUoR09iamVjdCog
b2JqZWN0KQotewotICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdEFjY2Vzc2libGVQYXJlbnRDbGFz
cyktPmZpbmFsaXplKG9iamVjdCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXN0YXRpYyB2
b2lkIHdlYmtpdEFjY2Vzc2libGVDbGFzc0luaXQoQXRrT2JqZWN0Q2xhc3MqIGtsYXNzKQorc3Rh
dGljIHZvaWQgd2Via2l0X2FjY2Vzc2libGVfY2xhc3NfaW5pdChXZWJLaXRBY2Nlc3NpYmxlQ2xh
c3MqIGtsYXNzKQogewotICAgIEdPYmplY3RDbGFzcyogZ29iamVjdENsYXNzID0gR19PQkpFQ1Rf
Q0xBU1Moa2xhc3MpOwotCi0gICAgd2Via2l0QWNjZXNzaWJsZVBhcmVudENsYXNzID0gZ190eXBl
X2NsYXNzX3BlZWtfcGFyZW50KGtsYXNzKTsKLQotICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUg
PSB3ZWJraXRBY2Nlc3NpYmxlRmluYWxpemU7Ci0KLSAgICBrbGFzcy0+aW5pdGlhbGl6ZSA9IHdl
YmtpdEFjY2Vzc2libGVJbml0OwotICAgIGtsYXNzLT5nZXRfbmFtZSA9IHdlYmtpdEFjY2Vzc2li
bGVHZXROYW1lOwotICAgIGtsYXNzLT5nZXRfZGVzY3JpcHRpb24gPSB3ZWJraXRBY2Nlc3NpYmxl
R2V0RGVzY3JpcHRpb247Ci0gICAga2xhc3MtPmdldF9wYXJlbnQgPSB3ZWJraXRBY2Nlc3NpYmxl
R2V0UGFyZW50OwotICAgIGtsYXNzLT5nZXRfbl9jaGlsZHJlbiA9IHdlYmtpdEFjY2Vzc2libGVH
ZXROQ2hpbGRyZW47Ci0gICAga2xhc3MtPnJlZl9jaGlsZCA9IHdlYmtpdEFjY2Vzc2libGVSZWZD
aGlsZDsKLSAgICBrbGFzcy0+Z2V0X3JvbGUgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0Um9sZTsKLSAg
ICBrbGFzcy0+cmVmX3N0YXRlX3NldCA9IHdlYmtpdEFjY2Vzc2libGVSZWZTdGF0ZVNldDsKLSAg
ICBrbGFzcy0+Z2V0X2luZGV4X2luX3BhcmVudCA9IHdlYmtpdEFjY2Vzc2libGVHZXRJbmRleElu
UGFyZW50OwotICAgIGtsYXNzLT5nZXRfYXR0cmlidXRlcyA9IHdlYmtpdEFjY2Vzc2libGVHZXRB
dHRyaWJ1dGVzOwotICAgIGtsYXNzLT5yZWZfcmVsYXRpb25fc2V0ID0gd2Via2l0QWNjZXNzaWJs
ZVJlZlJlbGF0aW9uU2V0OwotICAgIGtsYXNzLT5nZXRfb2JqZWN0X2xvY2FsZSA9IHdlYmtpdEFj
Y2Vzc2libGVHZXRPYmplY3RMb2NhbGU7Ci0KLSAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUo
a2xhc3MsIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlUHJpdmF0ZSkpOworICAgIGF1dG8qIGF0a09i
amVjdENsYXNzID0gQVRLX09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgYXRrT2JqZWN0Q2xhc3Mt
PmluaXRpYWxpemUgPSB3ZWJraXRBY2Nlc3NpYmxlSW5pdDsKKyAgICBhdGtPYmplY3RDbGFzcy0+
Z2V0X25hbWUgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0TmFtZTsKKyAgICBhdGtPYmplY3RDbGFzcy0+
Z2V0X2Rlc2NyaXB0aW9uID0gd2Via2l0QWNjZXNzaWJsZUdldERlc2NyaXB0aW9uOworICAgIGF0
a09iamVjdENsYXNzLT5nZXRfcGFyZW50ID0gd2Via2l0QWNjZXNzaWJsZUdldFBhcmVudDsKKyAg
ICBhdGtPYmplY3RDbGFzcy0+Z2V0X25fY2hpbGRyZW4gPSB3ZWJraXRBY2Nlc3NpYmxlR2V0TkNo
aWxkcmVuOworICAgIGF0a09iamVjdENsYXNzLT5yZWZfY2hpbGQgPSB3ZWJraXRBY2Nlc3NpYmxl
UmVmQ2hpbGQ7CisgICAgYXRrT2JqZWN0Q2xhc3MtPmdldF9yb2xlID0gd2Via2l0QWNjZXNzaWJs
ZUdldFJvbGU7CisgICAgYXRrT2JqZWN0Q2xhc3MtPnJlZl9zdGF0ZV9zZXQgPSB3ZWJraXRBY2Nl
c3NpYmxlUmVmU3RhdGVTZXQ7CisgICAgYXRrT2JqZWN0Q2xhc3MtPmdldF9pbmRleF9pbl9wYXJl
bnQgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0SW5kZXhJblBhcmVudDsKKyAgICBhdGtPYmplY3RDbGFz
cy0+Z2V0X2F0dHJpYnV0ZXMgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QXR0cmlidXRlczsKKyAgICBh
dGtPYmplY3RDbGFzcy0+cmVmX3JlbGF0aW9uX3NldCA9IHdlYmtpdEFjY2Vzc2libGVSZWZSZWxh
dGlvblNldDsKKyAgICBhdGtPYmplY3RDbGFzcy0+Z2V0X29iamVjdF9sb2NhbGUgPSB3ZWJraXRB
Y2Nlc3NpYmxlR2V0T2JqZWN0TG9jYWxlOwogfQogCi1HVHlwZQotd2Via2l0QWNjZXNzaWJsZUdl
dFR5cGUodm9pZCkKLXsKLSAgICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgdHlwZVZvbGF0aWxlID0g
MDsKLQotICAgIGlmIChnX29uY2VfaW5pdF9lbnRlcigmdHlwZVZvbGF0aWxlKSkgewotICAgICAg
ICBzdGF0aWMgY29uc3QgR1R5cGVJbmZvIHRpbmZvID0gewotICAgICAgICAgICAgc2l6ZW9mKFdl
YktpdEFjY2Vzc2libGVDbGFzcyksCi0gICAgICAgICAgICAoR0Jhc2VJbml0RnVuYykgMCwKLSAg
ICAgICAgICAgIChHQmFzZUZpbmFsaXplRnVuYykgMCwKLSAgICAgICAgICAgIChHQ2xhc3NJbml0
RnVuYykoR0NhbGxiYWNrKSB3ZWJraXRBY2Nlc3NpYmxlQ2xhc3NJbml0LAotICAgICAgICAgICAg
KEdDbGFzc0ZpbmFsaXplRnVuYykgMCwKLSAgICAgICAgICAgIDAsIC8qIGNsYXNzIGRhdGEgKi8K
LSAgICAgICAgICAgIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlKSwgLyogaW5zdGFuY2Ugc2l6ZSAq
LwotICAgICAgICAgICAgMCwgLyogbmIgcHJlYWxsb2NzICovCi0gICAgICAgICAgICAoR0luc3Rh
bmNlSW5pdEZ1bmMpIDAsCi0gICAgICAgICAgICAwIC8qIHZhbHVlIHRhYmxlICovCi0gICAgICAg
IH07Ci0KLSAgICAgICAgR1R5cGUgdHlwZSA9IGdfdHlwZV9yZWdpc3Rlcl9zdGF0aWMoQVRLX1RZ
UEVfT0JKRUNULCAiV2ViS2l0QWNjZXNzaWJsZSIsICZ0aW5mbywgR1R5cGVGbGFncygwKSk7Ci0g
ICAgICAgIGdfb25jZV9pbml0X2xlYXZlKCZ0eXBlVm9sYXRpbGUsIHR5cGUpOwotICAgIH0KLQot
ICAgIHJldHVybiB0eXBlVm9sYXRpbGU7Ci19Ci0KLXN0YXRpYyBjb25zdCBHSW50ZXJmYWNlSW5m
byBBdGtJbnRlcmZhY2VzSW5pdEZ1bmN0aW9uc1tdID0gewotICAgIHtyZWludGVycHJldF9jYXN0
PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtpdEFj
Y2Vzc2libGVBY3Rpb25JbnRlcmZhY2VJbml0KSksIDAsIDB9LAotICAgIHtyZWludGVycHJldF9j
YXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtp
dEFjY2Vzc2libGVTZWxlY3Rpb25JbnRlcmZhY2VJbml0KSksIDAsIDB9LAotICAgIHtyZWludGVy
cHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+
KHdlYmtpdEFjY2Vzc2libGVFZGl0YWJsZVRleHRJbnRlcmZhY2VJbml0KSksIDAsIDB9LAotICAg
IHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxH
Q2FsbGJhY2s+KHdlYmtpdEFjY2Vzc2libGVUZXh0SW50ZXJmYWNlSW5pdCkpLCAwLCAwfSwKLSAg
ICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8
R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlQ29tcG9uZW50SW50ZXJmYWNlSW5pdCkpLCAwLCAw
fSwKLSAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0
X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VJbnRlcmZhY2VJbml0KSksIDAs
IDB9LAotICAgIHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJbml0RnVuYz4ocmVpbnRlcnBy
ZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtpdEFjY2Vzc2libGVUYWJsZUludGVyZmFjZUluaXQpKSwg
MCwgMH0sCitzdGF0aWMgY29uc3QgR0ludGVyZmFjZUluZm8gYXRrSW50ZXJmYWNlc0luaXRGdW5j
dGlvbnNbXSA9IHsKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJl
aW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uSW50ZXJmYWNl
SW5pdCkpLCBudWxscHRyLCBudWxscHRyfSwKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJm
YWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxl
U2VsZWN0aW9uSW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBudWxscHRyfSwKKyAgICB7cmVpbnRl
cnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNr
Pih3ZWJraXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0SW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBu
dWxscHRyfSwKKyAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50
ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlVGV4dEludGVyZmFjZUluaXQp
KSwgbnVsbHB0ciwgbnVsbHB0cn0sCisgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUlu
aXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Via2l0QWNjZXNzaWJsZUNvbXBv
bmVudEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwgbnVsbHB0cn0sCisgICAge3JlaW50ZXJwcmV0
X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Vi
a2l0QWNjZXNzaWJsZUltYWdlSW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBudWxscHRyfSwKKyAg
ICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8
R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlVGFibGVJbnRlcmZhY2VJbml0KSksIG51bGxwdHIs
IG51bGxwdHJ9LAogI2lmIEFUS19DSEVDS19WRVJTSU9OKDIsMTEsOTApCi0gICAge3JlaW50ZXJw
cmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4o
d2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEludGVyZmFjZUluaXQpKSwgMCwgMH0sCisgICAge3Jl
aW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxs
YmFjaz4od2Via2l0QWNjZXNzaWJsZVRhYmxlQ2VsbEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwg
bnVsbHB0cn0sCiAjZW5kaWYKLSAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNlSW5pdEZ1
bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlSHlwZXJ0ZXh0
SW50ZXJmYWNlSW5pdCkpLCAwLCAwfSwKLSAgICB7cmVpbnRlcnByZXRfY2FzdDxHSW50ZXJmYWNl
SW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJraXRBY2Nlc3NpYmxlSHlw
ZXJsaW5rSW1wbEludGVyZmFjZUluaXQpKSwgMCwgMH0sCi0gICAge3JlaW50ZXJwcmV0X2Nhc3Q8
R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Via2l0QWNj
ZXNzaWJsZURvY3VtZW50SW50ZXJmYWNlSW5pdCkpLCAwLCAwfSwKLSAgICB7cmVpbnRlcnByZXRf
Y2FzdDxHSW50ZXJmYWNlSW5pdEZ1bmM+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPih3ZWJr
aXRBY2Nlc3NpYmxlVmFsdWVJbnRlcmZhY2VJbml0KSksIDAsIDB9CisgICAge3JlaW50ZXJwcmV0
X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Vi
a2l0QWNjZXNzaWJsZUh5cGVydGV4dEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwgbnVsbHB0cn0s
CisgICAge3JlaW50ZXJwcmV0X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9j
YXN0PEdDYWxsYmFjaz4od2Via2l0QWNjZXNzaWJsZUh5cGVybGlua0ltcGxJbnRlcmZhY2VJbml0
KSksIG51bGxwdHIsIG51bGxwdHJ9LAorICAgIHtyZWludGVycHJldF9jYXN0PEdJbnRlcmZhY2VJ
bml0RnVuYz4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KHdlYmtpdEFjY2Vzc2libGVEb2N1
bWVudEludGVyZmFjZUluaXQpKSwgbnVsbHB0ciwgbnVsbHB0cn0sCisgICAge3JlaW50ZXJwcmV0
X2Nhc3Q8R0ludGVyZmFjZUluaXRGdW5jPihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4od2Vi
a2l0QWNjZXNzaWJsZVZhbHVlSW50ZXJmYWNlSW5pdCkpLCBudWxscHRyLCBudWxscHRyfQogfTsK
IAogZW51bSBXQUlUeXBlIHsKQEAgLTEyMjIsNyArMTEzNSw3IEBAIGVudW0gV0FJVHlwZSB7CiAg
ICAgV0FJVmFsdWUsCiB9OwogCi1zdGF0aWMgR1R5cGUgR2V0QXRrSW50ZXJmYWNlVHlwZUZyb21X
QUlUeXBlKFdBSVR5cGUgdHlwZSkKK3N0YXRpYyBHVHlwZSBhdGtJbnRlcmZhY2VUeXBlRnJvbVdB
SVR5cGUoV0FJVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAodHlwZSkgewogICAgIGNhc2UgV0FJ
QWN0aW9uOgpAQCAtMTI3MSw3ICsxMTg0LDcgQEAgc3RhdGljIGJvb2wgcm9sZUlzVGV4dFR5cGUo
QWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkKICAgICAgICAgfHwgcm9sZSA9PSBBY2Nlc3NpYmlsaXR5
Um9sZTo6QXBwbGljYXRpb25UZXh0R3JvdXA7CiB9CiAKLXN0YXRpYyBndWludDE2IGdldEludGVy
ZmFjZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCitzdGF0
aWMgZ3VpbnQxNiBpbnRlcmZhY2VNYXNrRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlT2JqZWN0KQogewogICAgIGd1aW50MTYgaW50ZXJmYWNlTWFzayA9IDA7CiAKQEAgLTEzMTgs
MTEgKzEyMzEsOSBAQCBzdGF0aWMgZ3VpbnQxNiBnZXRJbnRlcmZhY2VNYXNrRnJvbU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0KQogICAgICAgICAvLyBBZGQgdGhlIFRFWFQg
aW50ZXJmYWNlIGZvciBsaXN0IGl0ZW1zIHdob3NlCiAgICAgICAgIC8vIGZpcnN0IGFjY2Vzc2li
bGUgY2hpbGQgaGFzIGEgdGV4dCByZW5kZXJlcgogICAgICAgICBpZiAocm9sZSA9PSBBY2Nlc3Np
YmlsaXR5Um9sZTo6TGlzdEl0ZW0pIHsKLSAgICAgICAgICAgIGNvbnN0IEFjY2Vzc2liaWxpdHlP
YmplY3Q6OkFjY2Vzc2liaWxpdHlDaGlsZHJlblZlY3RvciYgY2hpbGRyZW4gPSBjb3JlT2JqZWN0
LT5jaGlsZHJlbigpOwotICAgICAgICAgICAgaWYgKGNoaWxkcmVuLnNpemUoKSkgewotICAgICAg
ICAgICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4UmVuZGVyQ2hpbGQgPSBjaGlsZHJlbi5h
dCgwKS5nZXQoKTsKLSAgICAgICAgICAgICAgICBpbnRlcmZhY2VNYXNrIHw9IGdldEludGVyZmFj
ZU1hc2tGcm9tT2JqZWN0KGF4UmVuZGVyQ2hpbGQpOwotICAgICAgICAgICAgfQorICAgICAgICAg
ICAgY29uc3QgYXV0byYgY2hpbGRyZW4gPSBjb3JlT2JqZWN0LT5jaGlsZHJlbigpOworICAgICAg
ICAgICAgaWYgKCFjaGlsZHJlbi5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgaW50ZXJmYWNl
TWFzayB8PSBpbnRlcmZhY2VNYXNrRnJvbU9iamVjdChjaGlsZHJlblswXS5nZXQoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAKQEAgLTEzNTYsOSArMTI2Nyw5IEBAIHN0YXRpYyBndWludDE2IGdldElu
dGVyZmFjZU1hc2tGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiAg
ICAgcmV0dXJuIGludGVyZmFjZU1hc2s7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBnZXRVbmlx
dWVBY2Nlc3NpYmlsaXR5VHlwZU5hbWUoZ3VpbnQxNiBpbnRlcmZhY2VNYXNrKQorc3RhdGljIGNv
bnN0IGNoYXIqIHVuaXF1ZUFjY2Vzc2liaWxpdHlUeXBlTmFtZShndWludDE2IGludGVyZmFjZU1h
c2spCiB7Ci0jZGVmaW5lIFdBSV9UWVBFX05BTUVfTEVOICgzMCkgLyogRW5vdWdoIGZvciBwcmVm
aXggKyA1IGhleCBjaGFyYWN0ZXJzIChtYXgpICovCisjZGVmaW5lIFdBSV9UWVBFX05BTUVfTEVO
ICgzMCkgLy8gRW5vdWdoIGZvciBwcmVmaXggKyA1IGhleCBjaGFyYWN0ZXJzIChtYXgpLgogICAg
IHN0YXRpYyBjaGFyIG5hbWVbV0FJX1RZUEVfTkFNRV9MRU4gKyAxXTsKIAogICAgIGdfc3ByaW50
ZihuYW1lLCAiV0FJVHlwZSV4IiwgaW50ZXJmYWNlTWFzayk7CkBAIC0xMzY3LDMzICsxMjc4LDMz
IEBAIHN0YXRpYyBjb25zdCBjaGFyKiBnZXRVbmlxdWVBY2Nlc3NpYmlsaXR5VHlwZU5hbWUoZ3Vp
bnQxNiBpbnRlcmZhY2VNYXNrKQogICAgIHJldHVybiBuYW1lOwogfQogCi1zdGF0aWMgR1R5cGUg
Z2V0QWNjZXNzaWJpbGl0eVR5cGVGcm9tT2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVP
YmplY3QpCitzdGF0aWMgR1R5cGUgYWNjZXNzaWJpbGl0eVR5cGVGcm9tT2JqZWN0KEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiB7CiAgICAgc3RhdGljIGNvbnN0IEdUeXBlSW5mbyB0
eXBlSW5mbyA9IHsKICAgICAgICAgc2l6ZW9mKFdlYktpdEFjY2Vzc2libGVDbGFzcyksCi0gICAg
ICAgIChHQmFzZUluaXRGdW5jKSAwLAotICAgICAgICAoR0Jhc2VGaW5hbGl6ZUZ1bmMpIDAsCi0g
ICAgICAgIChHQ2xhc3NJbml0RnVuYykgMCwKLSAgICAgICAgKEdDbGFzc0ZpbmFsaXplRnVuYykg
MCwKLSAgICAgICAgMCwgLyogY2xhc3MgZGF0YSAqLwotICAgICAgICBzaXplb2YoV2ViS2l0QWNj
ZXNzaWJsZSksIC8qIGluc3RhbmNlIHNpemUgKi8KLSAgICAgICAgMCwgLyogbmIgcHJlYWxsb2Nz
ICovCi0gICAgICAgIChHSW5zdGFuY2VJbml0RnVuYykgMCwKLSAgICAgICAgMCAvKiB2YWx1ZSB0
YWJsZSAqLworICAgICAgICBudWxscHRyLCAvLyBHQmFzZUluaXRGdW5jCisgICAgICAgIG51bGxw
dHIsIC8vIEdCYXNlRmluYWxpemVGdW5jCisgICAgICAgIG51bGxwdHIsIC8vIEdDbGFzc0luaXRG
dW5jCisgICAgICAgIG51bGxwdHIsIC8vIEdDbGFzc0ZpbmFsaXplRnVuYworICAgICAgICBudWxs
cHRyLCAvLyBjbGFzcyBkYXRhCisgICAgICAgIHNpemVvZihXZWJLaXRBY2Nlc3NpYmxlKSwgLy8g
aW5zdGFuY2Ugc2l6ZQorICAgICAgICAwLCAvLyBuYiBwcmVhbGxvY3MKKyAgICAgICAgbnVsbHB0
ciwgLy8gR0luc3RhbmNlSW5pdEZ1bmMKKyAgICAgICAgbnVsbHB0ciAvLyB2YWx1ZSB0YWJsZQog
ICAgIH07CiAKLSAgICBndWludDE2IGludGVyZmFjZU1hc2sgPSBnZXRJbnRlcmZhY2VNYXNrRnJv
bU9iamVjdChjb3JlT2JqZWN0KTsKLSAgICBjb25zdCBjaGFyKiBhdGtUeXBlTmFtZSA9IGdldFVu
aXF1ZUFjY2Vzc2liaWxpdHlUeXBlTmFtZShpbnRlcmZhY2VNYXNrKTsKLSAgICBHVHlwZSB0eXBl
ID0gZ190eXBlX2Zyb21fbmFtZShhdGtUeXBlTmFtZSk7Ci0gICAgaWYgKHR5cGUpCisgICAgZ3Vp
bnQxNiBpbnRlcmZhY2VNYXNrID0gaW50ZXJmYWNlTWFza0Zyb21PYmplY3QoY29yZU9iamVjdCk7
CisgICAgY29uc3QgY2hhciogYXRrVHlwZU5hbWUgPSB1bmlxdWVBY2Nlc3NpYmlsaXR5VHlwZU5h
bWUoaW50ZXJmYWNlTWFzayk7CisgICAgaWYgKEdUeXBlIHR5cGUgPSBnX3R5cGVfZnJvbV9uYW1l
KGF0a1R5cGVOYW1lKSkKICAgICAgICAgcmV0dXJuIHR5cGU7CiAKLSAgICB0eXBlID0gZ190eXBl
X3JlZ2lzdGVyX3N0YXRpYyhXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFLCBhdGtUeXBlTmFtZSwgJnR5
cGVJbmZvLCBHVHlwZUZsYWdzKDApKTsKLSAgICBmb3IgKGd1aW50IGkgPSAwOyBpIDwgR19OX0VM
RU1FTlRTKEF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zKTsgaSsrKSB7Ci0gICAgICAgIGlmIChp
bnRlcmZhY2VNYXNrICYgKDEgPDwgaSkpCisgICAgR1R5cGUgdHlwZSA9IGdfdHlwZV9yZWdpc3Rl
cl9zdGF0aWMoV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgYXRrVHlwZU5hbWUsICZ0eXBlSW5mbywg
c3RhdGljX2Nhc3Q8R1R5cGVGbGFncz4oMCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBHX05fRUxFTUVOVFMoYXRrSW50ZXJmYWNlc0luaXRGdW5jdGlvbnMpOyArK2kpIHsKKyAgICAg
ICAgaWYgKGludGVyZmFjZU1hc2sgJiAoMSA8PCBpKSkgewogICAgICAgICAgICAgZ190eXBlX2Fk
ZF9pbnRlcmZhY2Vfc3RhdGljKHR5cGUsCi0gICAgICAgICAgICAgICAgR2V0QXRrSW50ZXJmYWNl
VHlwZUZyb21XQUlUeXBlKHN0YXRpY19jYXN0PFdBSVR5cGU+KGkpKSwKLSAgICAgICAgICAgICAg
ICAmQXRrSW50ZXJmYWNlc0luaXRGdW5jdGlvbnNbaV0pOworICAgICAgICAgICAgICAgIGF0a0lu
dGVyZmFjZVR5cGVGcm9tV0FJVHlwZShzdGF0aWNfY2FzdDxXQUlUeXBlPihpKSksCisgICAgICAg
ICAgICAgICAgJmF0a0ludGVyZmFjZXNJbml0RnVuY3Rpb25zW2ldKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIHJldHVybiB0eXBlOwpAQCAtMTQwMSwxNjggKzEzMTIsODAgQEAgc3RhdGljIEdU
eXBlIGdldEFjY2Vzc2liaWxpdHlUeXBlRnJvbU9iamVjdChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBj
b3JlT2JqZWN0KQogCiBXZWJLaXRBY2Nlc3NpYmxlKiB3ZWJraXRBY2Nlc3NpYmxlTmV3KEFjY2Vz
c2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QpCiB7Ci0gICAgR1R5cGUgdHlwZSA9IGdldEFjY2Vz
c2liaWxpdHlUeXBlRnJvbU9iamVjdChjb3JlT2JqZWN0KTsKLSAgICBBdGtPYmplY3QqIG9iamVj
dCA9IHN0YXRpY19jYXN0PEF0a09iamVjdCo+KGdfb2JqZWN0X25ldyh0eXBlLCAwKSk7Ci0KKyAg
ICBhdXRvKiBvYmplY3QgPSBBVEtfT0JKRUNUKGdfb2JqZWN0X25ldyhhY2Nlc3NpYmlsaXR5VHlw
ZUZyb21PYmplY3QoY29yZU9iamVjdCksIG51bGxwdHIpKTsKICAgICBhdGtfb2JqZWN0X2luaXRp
YWxpemUob2JqZWN0LCBjb3JlT2JqZWN0KTsKLQogICAgIHJldHVybiBXRUJLSVRfQUNDRVNTSUJM
RShvYmplY3QpOwogfQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiB3ZWJraXRBY2Nlc3NpYmxlR2V0
QWNjZXNzaWJpbGl0eU9iamVjdChXZWJLaXRBY2Nlc3NpYmxlKiBhY2Nlc3NpYmxlKQorQWNjZXNz
aWJpbGl0eU9iamVjdCYgd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV2Vi
S2l0QWNjZXNzaWJsZSogYWNjZXNzaWJsZSkKIHsKLSAgICByZXR1cm4gYWNjZXNzaWJsZS0+bV9v
YmplY3Q7CisgICAgQVNTRVJUKFdFQktJVF9JU19BQ0NFU1NJQkxFKGFjY2Vzc2libGUpKTsKKyAg
ICByZXR1cm4gKmFjY2Vzc2libGUtPnByaXYtPm9iamVjdDsKIH0KIAogdm9pZCB3ZWJraXRBY2Nl
c3NpYmxlRGV0YWNoKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2libGUpCiB7Ci0gICAgQVNTRVJU
KGFjY2Vzc2libGUtPm1fb2JqZWN0KTsKKyAgICBBU1NFUlQoV0VCS0lUX0lTX0FDQ0VTU0lCTEUo
YWNjZXNzaWJsZSkpOworICAgIEFTU0VSVChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QgIT0gZmFs
bGJhY2tPYmplY3QoKSk7CiAKLSAgICBpZiAoYWNjZXNzaWJsZS0+bV9vYmplY3QtPnJvbGVWYWx1
ZSgpID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQotICAgICAgICBhdGtfb2JqZWN0X25v
dGlmeV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChhY2Nlc3NpYmxlKSwgQVRLX1NUQVRFX0RFRlVO
Q1QsIHRydWUpOworICAgIGlmIChhY2Nlc3NpYmxlLT5wcml2LT5vYmplY3QtPnJvbGVWYWx1ZSgp
ID09IEFjY2Vzc2liaWxpdHlSb2xlOjpXZWJBcmVhKQorICAgICAgICBhdGtfb2JqZWN0X25vdGlm
eV9zdGF0ZV9jaGFuZ2UoQVRLX09CSkVDVChhY2Nlc3NpYmxlKSwgQVRLX1NUQVRFX0RFRlVOQ1Qs
IFRSVUUpOwogCiAgICAgLy8gV2UgcmVwbGFjZSB0aGUgV2ViQ29yZSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0IHdpdGggYSBmYWxsYmFjayBvYmplY3QgdGhhdAogICAgIC8vIHByb3ZpZGVzIGRlZmF1bHQg
aW1wbGVtZW50YXRpb25zIHRvIGF2b2lkIHJlcGV0aXRpdmUgbnVsbC1jaGVja2luZyBhZnRlcgog
ICAgIC8vIGRldGFjaG1lbnQuCi0gICAgYWNjZXNzaWJsZS0+bV9vYmplY3QgPSBmYWxsYmFja09i
amVjdCgpOworICAgIGFjY2Vzc2libGUtPnByaXYtPm9iamVjdCA9IGZhbGxiYWNrT2JqZWN0KCk7
CiB9CiAKIGJvb2wgd2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQoV2ViS2l0QWNjZXNzaWJsZSog
YWNjZXNzaWJsZSkKIHsKLSAgICBBU1NFUlQoYWNjZXNzaWJsZS0+bV9vYmplY3QpOwotICAgIHJl
dHVybiBhY2Nlc3NpYmxlLT5tX29iamVjdCA9PSBmYWxsYmFja09iamVjdCgpOworICAgIEFTU0VS
VChXRUJLSVRfSVNfQUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CisgICAgcmV0dXJuIGFjY2Vzc2li
bGUtPnByaXYtPm9iamVjdCA9PSBmYWxsYmFja09iamVjdCgpOwogfQogCi1BY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0
eU9iamVjdCogcmVmZXJlbmNlT2JqZWN0LCBpbnQmIG9mZnNldCkKK2NvbnN0IGNoYXIqIHdlYmtp
dEFjY2Vzc2libGVDYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KFdlYktpdEFjY2Vzc2libGUqIGFj
Y2Vzc2libGUsIEF0a0NhY2hlZFByb3BlcnR5IHByb3BlcnR5LCBDU3RyaW5nJiYgdmFsdWUpCiB7
Ci0gICAgLy8gSW5kaWNhdGlvbiB0aGF0IHNvbWV0aGluZyBib2d1cyBoYXMgdHJhbnNwaXJlZC4K
LSAgICBvZmZzZXQgPSAtMTsKLQotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJlZmVyZW5jZU9i
amVjdC0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIE5vZGUqIGZvY3VzZWROb2RlID0gcmVmZXJlbmNlT2JqZWN0LT5zZWxlY3Rpb24oKS5l
bmQoKS5jb250YWluZXJOb2RlKCk7Ci0gICAgaWYgKCFmb2N1c2VkTm9kZSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWRSZW5kZXJlciA9IGZvY3VzZWROb2Rl
LT5yZW5kZXJlcigpOwotICAgIGlmICghZm9jdXNlZFJlbmRlcmVyKQotICAgICAgICByZXR1cm4g
MDsKLQotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBkb2N1bWVudC0+
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkUmVuZGVyZXIpOwotICAgIGlmICgh
Zm9jdXNlZE9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBMb29rIGZvciB0aGUg
YWN0dWFsIChub3QgaWdub3JpbmcgYWNjZXNzaWJpbGl0eSkgc2VsZWN0ZWQgb2JqZWN0LgotICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZm9jdXNlZE9iamVj
dDsKLSAgICBpZiAoZmlyc3RVbmlnbm9yZWRQYXJlbnQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQo
KSkKLSAgICAgICAgZmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+
cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFmaXJzdFVuaWdub3JlZFBhcmVudCkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBEb24ndCBpZ25vcmUgbGlua3MgaWYgdGhlIG9m
ZnNldCBpcyBiZWluZyByZXF1ZXN0ZWQgZm9yIGEgbGluawotICAgIC8vIG9yIGlmIHRoZSBsaW5r
IGlzIGEgYmxvY2suCi0gICAgaWYgKCFyZWZlcmVuY2VPYmplY3QtPmlzTGluaygpICYmIGZpcnN0
VW5pZ25vcmVkUGFyZW50LT5pc0xpbmsoKQotICAgICAgICAmJiAhKGZpcnN0VW5pZ25vcmVkUGFy
ZW50LT5yZW5kZXJlcigpICYmICFmaXJzdFVuaWdub3JlZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNJ
bmxpbmUoKSkpCi0gICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQ
YXJlbnQtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghZmlyc3RVbmlnbm9yZWRQ
YXJlbnQpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gVGhlIHJlZmVyZW5jZSBvYmplY3Qg
bXVzdCBlaXRoZXIgY29pbmNpZGUgd2l0aCB0aGUgZm9jdXNlZAotICAgIC8vIG9iamVjdCBiZWlu
ZyBjb25zaWRlcmVkLCBvciBiZSBhIGRlc2NlbmRhbnQgb2YgaXQuCi0gICAgaWYgKHJlZmVyZW5j
ZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3QoZmlyc3RVbmlnbm9yZWRQYXJlbnQpKQotICAg
ICAgICByZWZlcmVuY2VPYmplY3QgPSBmaXJzdFVuaWdub3JlZFBhcmVudDsKLQotICAgIE5vZGUq
IHN0YXJ0Tm9kZSA9IG51bGxwdHI7Ci0gICAgaWYgKGZpcnN0VW5pZ25vcmVkUGFyZW50ICE9IHJl
ZmVyZW5jZU9iamVjdCB8fCBmaXJzdFVuaWdub3JlZFBhcmVudC0+aXNUZXh0Q29udHJvbCgpKSB7
Ci0gICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBmaXJzdCBjaGlsZCdzIG5vZGUgb2YgdGhl
IHJlZmVyZW5jZQotICAgICAgICAvLyBvYmplY3QgYXMgdGhlIHN0YXJ0IHBvaW50IHRvIGNhbGN1
bGF0ZSB0aGUgY2FyZXQgb2Zmc2V0Ci0gICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBi
ZSByZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCi0gICAgICAgIC8vIHJlZmVyZW5jZSwgbm90IGp1
c3QgdG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCi0gICAgICAgIC8vIHBy
ZXZpb3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9vKS4K
LSAgICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJlbmNlT2Jq
ZWN0LT5maXJzdENoaWxkKCk7Ci0gICAgICAgIGlmIChheEZpcnN0Q2hpbGQpCi0gICAgICAgICAg
ICBzdGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKLSAgICB9Ci0gICAgLy8gR2V0dGlu
ZyB0aGUgUG9zaXRpb24gb2YgYSBQc2V1ZG9FbGVtZW50IG5vdyB0cmlnZ2VycyBhbiBhc3NlcnRp
b24uCi0gICAgLy8gVGhpcyBjYW4gb2NjdXIgd2hlbiBjbGlja2luZyBvbiBlbXB0eSBzcGFjZSBp
biBhIHJlbmRlciBibG9jay4KLSAgICBpZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNl
dWRvRWxlbWVudCgpKQotICAgICAgICBzdGFydE5vZGUgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+
bm9kZSgpOwotCi0gICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgZm9yIHRoZSBmaXJzdCBwYXJlbnQg
b2JqZWN0IG5vdCBpZ25vcmluZwotICAgIC8vIGFjY2Vzc2liaWxpdHkgaXMgbnVsbCBhZ2FpbiBi
ZWZvcmUgdXNpbmcgaXQuIFRoaXMgbWlnaHQgaGFwcGVuCi0gICAgLy8gd2l0aCBjZXJ0YWluIGtp
bmQgb2YgYWNjZXNzaWJpbGl0eSBvYmplY3RzLCBzdWNoIGFzIHRoZSByb290Ci0gICAgLy8gb25l
ICh0aGUgc2Nyb2xsZXIgY29udGFpbmluZyB0aGUgd2ViQXJlYSBvYmplY3QpLgotICAgIGlmICgh
c3RhcnROb2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZpc2libGVQb3NpdGlvbiBzdGFy
dFBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydE5vZGUp
LCBET1dOU1RSRUFNKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24gPSBmaXJzdFVu
aWdub3JlZFBhcmVudC0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOwotCi0gICAgaWYgKHN0YXJ0
UG9zaXRpb24gPT0gZW5kUG9zaXRpb24pCi0gICAgICAgIG9mZnNldCA9IDA7Ci0gICAgZWxzZSBp
ZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRpb24pKSB7Ci0gICAgICAgIFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24ucHJldmlvdXMoKSk7
Ci0gICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCks
IHRydWUpICsgMTsKLSAgICB9IGVsc2UgewotICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0g
bWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKLSAgICAgICAgb2Zmc2V0ID0g
VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIGZpcnN0VW5pZ25vcmVkUGFyZW50OwotfQorICAgIEFTU0VSVChXRUJLSVRfSVNf
QUNDRVNTSUJMRShhY2Nlc3NpYmxlKSk7CiAKLWNvbnN0IGNoYXIqIGNhY2hlQW5kUmV0dXJuQXRr
UHJvcGVydHkoQXRrT2JqZWN0KiBvYmplY3QsIEF0a0NhY2hlZFByb3BlcnR5IHByb3BlcnR5LCBT
dHJpbmcgdmFsdWUpCi17Ci0gICAgV2ViS2l0QWNjZXNzaWJsZVByaXZhdGUqIHByaXYgPSBXRUJL
SVRfQUNDRVNTSUJMRShvYmplY3QpLT5wcml2OworICAgIFdlYktpdEFjY2Vzc2libGVQcml2YXRl
KiBwcml2ID0gYWNjZXNzaWJsZS0+cHJpdjsKICAgICBDU3RyaW5nKiBwcm9wZXJ0eVB0ciA9IG51
bGxwdHI7CiAKICAgICBzd2l0Y2ggKHByb3BlcnR5KSB7CiAgICAgY2FzZSBBdGtDYWNoZWRBY2Nl
c3NpYmxlTmFtZToKICAgICAgICAgcHJvcGVydHlQdHIgPSAmcHJpdi0+YWNjZXNzaWJsZU5hbWU7
CiAgICAgICAgIGJyZWFrOwotCiAgICAgY2FzZSBBdGtDYWNoZWRBY2Nlc3NpYmxlRGVzY3JpcHRp
b246CiAgICAgICAgIHByb3BlcnR5UHRyID0gJnByaXYtPmFjY2Vzc2libGVEZXNjcmlwdGlvbjsK
ICAgICAgICAgYnJlYWs7Ci0KICAgICBjYXNlIEF0a0NhY2hlZEFjdGlvbk5hbWU6CiAgICAgICAg
IHByb3BlcnR5UHRyID0gJnByaXYtPmFjdGlvbk5hbWU7CiAgICAgICAgIGJyZWFrOwotCiAgICAg
Y2FzZSBBdGtDYWNoZWRBY3Rpb25LZXlCaW5kaW5nOgogICAgICAgICBwcm9wZXJ0eVB0ciA9ICZw
cml2LT5hY3Rpb25LZXlCaW5kaW5nOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQXRrQ2Fj
aGVkRG9jdW1lbnRMb2NhbGU6CiAgICAgICAgIHByb3BlcnR5UHRyID0gJnByaXYtPmRvY3VtZW50
TG9jYWxlOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQXRrQ2FjaGVkRG9jdW1lbnRUeXBl
OgogICAgICAgICBwcm9wZXJ0eVB0ciA9ICZwcml2LT5kb2N1bWVudFR5cGU7CiAgICAgICAgIGJy
ZWFrOwotCiAgICAgY2FzZSBBdGtDYWNoZWREb2N1bWVudEVuY29kaW5nOgogICAgICAgICBwcm9w
ZXJ0eVB0ciA9ICZwcml2LT5kb2N1bWVudEVuY29kaW5nOwogICAgICAgICBicmVhazsKLQogICAg
IGNhc2UgQXRrQ2FjaGVkRG9jdW1lbnRVUkk6CiAgICAgICAgIHByb3BlcnR5UHRyID0gJnByaXYt
PmRvY3VtZW50VVJJOwogICAgICAgICBicmVhazsKLQogICAgIGNhc2UgQXRrQ2FjaGVkSW1hZ2VE
ZXNjcmlwdGlvbjoKICAgICAgICAgcHJvcGVydHlQdHIgPSAmcHJpdi0+aW1hZ2VEZXNjcmlwdGlv
bjsKICAgICAgICAgYnJlYWs7Ci0KICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAKICAgICAvLyBEb24ndCBpbnZhbGlkYXRlIG9sZCBtZW1vcnkgaWYg
bm90IHN0cmljbHkgbmVlZGVkLCBzaW5jZSBvdGhlcgogICAgIC8vIGNhbGxlcnMgbWlnaHQgYmUg
c3RpbGwgaG9sZGluZyBvbiB0byBpdC4KLSAgICBpZiAoKnByb3BlcnR5UHRyICE9IHZhbHVlLnV0
ZjgoKSkKLSAgICAgICAgKnByb3BlcnR5UHRyID0gdmFsdWUudXRmOCgpOworICAgIGlmICgqcHJv
cGVydHlQdHIgIT0gdmFsdWUpCisgICAgICAgICpwcm9wZXJ0eVB0ciA9IFdURk1vdmUodmFsdWUp
OwogCiAgICAgcmV0dXJuICgqcHJvcGVydHlQdHIpLmRhdGEoKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRr
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmgK
c2ltaWxhcml0eSBpbmRleCA1NyUKcmVuYW1lIGZyb20gU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaApyZW5hbWUgdG8gU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZS5oCmluZGV4IDdkZmViZmI3
ZmRmLi43ZDU2MzdhMTU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlLmgKQEAgLTEsNyArMSw3IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
SmFuIEFsb256bwotICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTkgSWdh
bGlhIFMuTC4KICAqIENvcHlyaWdodCAoQykgMjAxMyBTYW1zdW5nIEVsZWN0cm9uaWNzCiAgKgog
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgpAQCAtMzMsMjEgKzMzLDIwIEBAIGNsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CiAK
IEdfQkVHSU5fREVDTFMKIAotI2RlZmluZSBXRUJLSVRfVFlQRV9BQ0NFU1NJQkxFICAgICAgICAg
ICAgICAgICAgKHdlYmtpdEFjY2Vzc2libGVHZXRUeXBlICgpKQotI2RlZmluZSBXRUJLSVRfQUND
RVNTSUJMRShvYmopICAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNU
ICgob2JqKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZSkpCi0jZGVm
aW5lIFdFQktJVF9BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAgICAgICAgICAoR19UWVBFX0NIRUNL
X0NMQVNTX0NBU1QgKChrbGFzcyksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUsIFdlYktpdEFjY2Vz
c2libGVDbGFzcykpCi0jZGVmaW5lIFdFQktJVF9JU19BQ0NFU1NJQkxFKG9iaikgICAgICAgICAg
ICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBXRUJLSVRfVFlQRV9BQ0NF
U1NJQkxFKSkKLSNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEVfQ0xBU1Moa2xhc3MpICAgICAg
IChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJM
RSkpCi0jZGVmaW5lIFdFQktJVF9BQ0NFU1NJQkxFX0dFVF9DTEFTUyhvYmopICAgICAgICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUsIFdl
YktpdEFjY2Vzc2libGVDbGFzcykpCisjZGVmaW5lIFdFQktJVF9UWVBFX0FDQ0VTU0lCTEUgICAg
ICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgV0VCS0lUX0FD
Q0VTU0lCTEUob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2Jq
KSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZSkpCisjZGVmaW5lIFdF
QktJVF9BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1Qo
KGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZUNsYXNzKSkK
KyNkZWZpbmUgV0VCS0lUX0lTX0FDQ0VTU0lCTEUob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tf
SU5TVEFOQ0VfVFlQRSgob2JqKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSkpCisjZGVmaW5lIFdF
QktJVF9JU19BQ0NFU1NJQkxFX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUo
KGtsYXNzKSwgV0VCS0lUX1RZUEVfQUNDRVNTSUJMRSkpCisjZGVmaW5lIFdFQktJVF9BQ0NFU1NJ
QkxFX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgV0VC
S0lUX1RZUEVfQUNDRVNTSUJMRSwgV2ViS2l0QWNjZXNzaWJsZUNsYXNzKSkKIAotdHlwZWRlZiBz
dHJ1Y3QgX1dlYktpdEFjY2Vzc2libGUgICAgICAgICAgICAgICAgV2ViS2l0QWNjZXNzaWJsZTsK
LXR5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlQ2xhc3MgICAgICAgICAgIFdlYktpdEFj
Y2Vzc2libGVDbGFzczsKLXR5cGVkZWYgc3RydWN0IF9XZWJLaXRBY2Nlc3NpYmxlUHJpdmF0ZSAg
ICAgICAgIFdlYktpdEFjY2Vzc2libGVQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEFj
Y2Vzc2libGUgICAgICAgIFdlYktpdEFjY2Vzc2libGU7Cit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0
QWNjZXNzaWJsZUNsYXNzICAgV2ViS2l0QWNjZXNzaWJsZUNsYXNzOwordHlwZWRlZiBzdHJ1Y3Qg
X1dlYktpdEFjY2Vzc2libGVQcml2YXRlIFdlYktpdEFjY2Vzc2libGVQcml2YXRlOwogCiAKIHN0
cnVjdCBfV2ViS2l0QWNjZXNzaWJsZSB7CiAgICAgQXRrT2JqZWN0IHBhcmVudDsKLSAgICBXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBtX29iamVjdDsKIAogICAgIFdlYktpdEFjY2Vzc2li
bGVQcml2YXRlICpwcml2OwogfTsKQEAgLTY4LDE5ICs2NywxNyBAQCBlbnVtIEF0a0NhY2hlZFBy
b3BlcnR5IHsKICAgICBBdGtDYWNoZWRJbWFnZURlc2NyaXB0aW9uCiB9OwogCi1HVHlwZSB3ZWJr
aXRBY2Nlc3NpYmxlR2V0VHlwZSh2b2lkKSBHX0dOVUNfQ09OU1Q7CitHVHlwZSB3ZWJraXRfYWNj
ZXNzaWJsZV9nZXRfdHlwZSh2b2lkKTsKIAogV2ViS2l0QWNjZXNzaWJsZSogd2Via2l0QWNjZXNz
aWJsZU5ldyhXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CiAKLVdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlPYmplY3QqIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdl
YktpdEFjY2Vzc2libGUqKTsKK1dlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3QmIHdlYmtpdEFj
Y2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdlYktpdEFjY2Vzc2libGUqKTsKIAogdm9p
ZCB3ZWJraXRBY2Nlc3NpYmxlRGV0YWNoKFdlYktpdEFjY2Vzc2libGUqKTsKIAogYm9vbCB3ZWJr
aXRBY2Nlc3NpYmxlSXNEZXRhY2hlZChXZWJLaXRBY2Nlc3NpYmxlKik7CiAKLVdlYkNvcmU6OkFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChX
ZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgaW50JiBvZmZzZXQpOwotCi1jb25zdCBjaGFy
KiBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KEF0a09iamVjdCosIEF0a0NhY2hlZFByb3BlcnR5
LCBTdHJpbmcgdmFsdWUpOworY29uc3QgY2hhciogd2Via2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0
dXJuQXRrUHJvcGVydHkoV2ViS2l0QWNjZXNzaWJsZSosIEF0a0NhY2hlZFByb3BlcnR5LCBDU3Ry
aW5nJiYpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSHlwZXJsaW5rLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVIeXBlcmxpbmsuY3BwCmluZGV4
IGJjMTZlNGIyOTAzLi43MjEyZGIyZWNiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluay5jcHAK
QEAgLTMyLDggKzMyLDggQEAKICNpbmNsdWRlICJSZW5kZXJMaXN0TWFya2VyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
V2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0j
aW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9DU3RyaW5nLmg+CiAKICNpbmNsdWRlIDxhdGsvYXRrLmg+CkBAIC02NCw3ICs2NCw3IEBAIHN0
YXRpYyBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlKFdlYktpdEFjY2Vzc2libGUqIGFjY2Vzc2li
bGUpCiAgICAgaWYgKCFhY2Nlc3NpYmxlIHx8ICFXRUJLSVRfSVNfQUNDRVNTSUJMRShhY2Nlc3Np
YmxlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gd2Via2l0QWNjZXNzaWJsZUdl
dEFjY2Vzc2liaWxpdHlPYmplY3QoYWNjZXNzaWJsZSk7CisgICAgcmV0dXJuICZ3ZWJraXRBY2Nl
c3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChhY2Nlc3NpYmxlKTsKIH0KIAogc3RhdGljIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoV2ViS2l0QWNjZXNzaWJsZUh5cGVybGluayogbGluaykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VBY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9h
dGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUFjdGlvbi5jcHAKaW5kZXggYzc5YmRjNGQ2NmMu
LjU4ZDEyMjNkODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0
ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQWN0aW9uLmNwcApA
QCAtMzYsOCArMzYsOCBAQAogCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgog
I2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ2LDcg
KzQ2LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrQWN0aW9uKiBhY3Rp
b24pCiAgICAgaWYgKCFXRUJLSVRfSVNfQUNDRVNTSUJMRShhY3Rpb24pKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVj
dChXRUJLSVRfQUNDRVNTSUJMRShhY3Rpb24pKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2li
bGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGFjdGlvbikpOwogfQog
CiBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0QWNjZXNzaWJsZUFjdGlvbkRvQWN0aW9uKEF0a0FjdGlv
biogYWN0aW9uLCBnaW50IGluZGV4KQpAQCAtNzcsMjMgKzc3LDIxIEBAIHN0YXRpYyBjb25zdCBn
Y2hhciogd2Via2l0QWNjZXNzaWJsZUFjdGlvbkdldERlc2NyaXB0aW9uKEF0a0FjdGlvbiogYWN0
aW9uLCBnaW50CiAgICAgcmV0dXJuICIiOwogfQogCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtp
dEFjY2Vzc2libGVBY3Rpb25HZXRLZXliaW5kaW5nKEF0a0FjdGlvbiogYWN0aW9uLCBnaW50IGlu
ZGV4KQorc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlQWN0aW9uR2V0S2V5Ymlu
ZGluZyhBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIDApOwotICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCFp
bmRleCwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3NpYmxlSXNJbnZhbGlkKFdFQktJ
VF9BQ0NFU1NJQkxFKGFjdGlvbiksIDApOworICAgIGF1dG8qIGFjY2Vzc2libGUgPSBXRUJLSVRf
QUNDRVNTSUJMRShhY3Rpb24pOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlzSW52
YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAogICAgIC8vIEZJWE1FOiBDb25zdHJ1Y3QgYSBw
cm9wZXIga2V5YmluZGluZyBzdHJpbmcuCi0gICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJv
cGVydHkoQVRLX09CSkVDVChhY3Rpb24pLCBBdGtDYWNoZWRBY3Rpb25LZXlCaW5kaW5nLCBjb3Jl
KGFjdGlvbiktPmFjY2Vzc0tleSgpLnN0cmluZygpKTsKKyAgICByZXR1cm4gd2Via2l0QWNjZXNz
aWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoYWNjZXNzaWJsZSwgQXRrQ2FjaGVkQWN0aW9u
S2V5QmluZGluZywgY29yZShhY3Rpb24pLT5hY2Nlc3NLZXkoKS5zdHJpbmcoKS51dGY4KCkpOwog
fQogCi1zdGF0aWMgY29uc3QgZ2NoYXIqIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25HZXROYW1lKEF0
a0FjdGlvbiogYWN0aW9uLCBnaW50IGluZGV4KQorc3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRB
Y2Nlc3NpYmxlQWN0aW9uR2V0TmFtZShBdGtBY3Rpb24qIGFjdGlvbiwgZ2ludCkKIHsKLSAgICBn
X3JldHVybl92YWxfaWZfZmFpbChBVEtfSVNfQUNUSU9OKGFjdGlvbiksIDApOwotICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKCFpbmRleCwgMCk7Ci0gICAgcmV0dXJuVmFsSWZXZWJLaXRBY2Nlc3Np
YmxlSXNJbnZhbGlkKFdFQktJVF9BQ0NFU1NJQkxFKGFjdGlvbiksIDApOworICAgIGF1dG8qIGFj
Y2Vzc2libGUgPSBXRUJLSVRfQUNDRVNTSUJMRShhY3Rpb24pOworICAgIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAotICAgIHJldHVy
biBjYWNoZUFuZFJldHVybkF0a1Byb3BlcnR5KEFUS19PQkpFQ1QoYWN0aW9uKSwgQXRrQ2FjaGVk
QWN0aW9uTmFtZSwgY29yZShhY3Rpb24pLT5hY3Rpb25WZXJiKCkpOworICAgIHJldHVybiB3ZWJr
aXRBY2Nlc3NpYmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShhY2Nlc3NpYmxlLCBBdGtDYWNo
ZWRBY3Rpb25OYW1lLCBjb3JlKGFjdGlvbiktPmFjdGlvblZlcmIoKS51dGY4KCkpOwogfQogCiB2
b2lkIHdlYmtpdEFjY2Vzc2libGVBY3Rpb25JbnRlcmZhY2VJbml0KEF0a0FjdGlvbklmYWNlKiBp
ZmFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktp
dEFjY2Vzc2libGVJbnRlcmZhY2VDb21wb25lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUNvbXBvbmVudC5jcHAKaW5kZXgg
Njk4NDcyNjg2YjguLjVlMjVlNDk4ZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlQ29tcG9uZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlQ29tcG9uZW50LmNwcApAQCAtMzYsOCArMzYsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxp
dHlPYmplY3QuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrQ29tcG9uZW50KiBjb21wb25lbnQpCiAgICAgaWYgKCFXRUJL
SVRfSVNfQUNDRVNTSUJMRShjb21wb25lbnQpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJl
dHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNT
SUJMRShjb21wb25lbnQpKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3Np
YmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGNvbXBvbmVudCkpOwogfQogCiBzdGF0aWMg
SW50UG9pbnQgYXRrVG9Db250ZW50cyhBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2JqZWN0LCBB
dGtDb29yZFR5cGUgY29vcmRUeXBlLCBnaW50IHgsIGdpbnQgeSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VEb2N1
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwCmluZGV4IDY3NTJkMTJkMzIzLi41YTc5YjEyN2U2ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZUludGVyZmFjZURvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlRG9jdW1lbnQuY3BwCkBAIC0zNyw4ICsz
Nyw4IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5jbHVkZSAiV2Vi
S2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
QEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoZG9jdW1lbnQp
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNj
ZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRShkb2N1bWVudCkpOworICAgIHJldHVy
biAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lC
TEUoZG9jdW1lbnQpKTsKIH0KIAogc3RhdGljIGNvbnN0IGdjaGFyKiBkb2N1bWVudEF0dHJpYnV0
ZVZhbHVlKEF0a0RvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgZ2NoYXIqIGF0dHJpYnV0ZSkKQEAg
LTU2LDcgKzU2LDcgQEAgc3RhdGljIGNvbnN0IGdjaGFyKiBkb2N1bWVudEF0dHJpYnV0ZVZhbHVl
KEF0a0RvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgZ2NoYXIqIGEKICAgICBpZiAoIWNvcmVEb2N1
bWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBTdHJpbmcgdmFsdWUgPSBTdHJpbmcoKTsK
KyAgICBTdHJpbmcgdmFsdWU7CiAgICAgQXRrQ2FjaGVkUHJvcGVydHkgYXRrQ2FjaGVkUHJvcGVy
dHk7CiAKICAgICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcChhdHRyaWJ1dGUsICJEb2NUeXBlIikg
JiYgY29yZURvY3VtZW50LT5kb2N0eXBlKCkpIHsKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIGNv
bnN0IGdjaGFyKiBkb2N1bWVudEF0dHJpYnV0ZVZhbHVlKEF0a0RvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgZ2NoYXIqIGEKICAgICB9CiAKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIGNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoQVRLX09CSkVDVChkb2N1bWVudCks
IGF0a0NhY2hlZFByb3BlcnR5LCB2YWx1ZSk7CisgICAgICAgIHJldHVybiB3ZWJraXRBY2Nlc3Np
YmxlQ2FjaGVBbmRSZXR1cm5BdGtQcm9wZXJ0eShXRUJLSVRfQUNDRVNTSUJMRShkb2N1bWVudCks
IGF0a0NhY2hlZFByb3BlcnR5LCB2YWx1ZS51dGY4KCkpOwogCiAgICAgcmV0dXJuIDA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3Np
YmxlSW50ZXJmYWNlRWRpdGFibGVUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VFZGl0YWJsZVRleHQuY3BwCmluZGV4IGEx
MmU5NmE4ZjA3Li44MTZjMTU2MDcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUVkaXRhYmxlVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVy
ZmFjZUVkaXRhYmxlVGV4dC5jcHAKQEAgLTM4LDggKzM4LDggQEAKICNpbmNsdWRlICJFZGl0b3Iu
aCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGls
LmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ4LDcgKzQ4LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGNvcmUoQXRrRWRpdGFibGVUZXh0KiB0ZXh0KQogICAgIGlmICghV0VCS0lUX0lTX0FD
Q0VTU0lCTEUodGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHdlYmtpdEFj
Y2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsK
KyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJ
VF9BQ0NFU1NJQkxFKHRleHQpKTsKIH0KIAogc3RhdGljIGdib29sZWFuIHdlYmtpdEFjY2Vzc2li
bGVFZGl0YWJsZVRleHRTZXRSdW5BdHRyaWJ1dGVzKEF0a0VkaXRhYmxlVGV4dCogdGV4dCwgQXRr
QXR0cmlidXRlU2V0KiwgZ2ludCwgZ2ludCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VIeXBlcnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFj
ZUh5cGVydGV4dC5jcHAKaW5kZXggZjEyZTNkZjY3OWQuLmFhMDhlZTMyMGVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlSHlwZXJ0ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSHlwZXJ0ZXh0LmNwcApAQCAtMjMsOCArMjMsOCBAQAog
I2lmIEhBVkUoQUNDRVNTSUJJTElUWSkKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlLmgiCiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNz
aWJsZVV0aWwuaCIKLSNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgQWNjZXNz
aWJpbGl0eU9iamVjdCogY29yZShBdGtIeXBlcnRleHQqIGh5cGVydGV4dCkKICAgICBpZiAoIVdF
QktJVF9JU19BQ0NFU1NJQkxFKGh5cGVydGV4dCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
cmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NF
U1NJQkxFKGh5cGVydGV4dCkpOworICAgIHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vz
c2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUoaHlwZXJ0ZXh0KSk7CiB9CiAKIHN0YXRp
YyBBdGtIeXBlcmxpbmsqIHdlYmtpdEFjY2Vzc2libGVIeXBlcnRleHRHZXRMaW5rKEF0a0h5cGVy
dGV4dCogaHlwZXJ0ZXh0LCBnaW50IGluZGV4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZUltYWdlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VJ
bWFnZS5jcHAKaW5kZXggODQzOTY5YjQyMDMuLmY1ODZlZTI3MWEzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlSW1h
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VJbWFnZS5jcHAKQEAgLTM2LDggKzM2LDggQEAKIAogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCisjaW5jbHVkZSAiV2Vi
S2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5j
bHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKQEAgLTQ2LDcgKzQ2LDcgQEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNv
cmUoQXRrSW1hZ2UqIGltYWdlKQogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoaW1hZ2Up
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNj
ZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRShpbWFnZSkpOworICAgIHJldHVybiAm
d2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUo
aW1hZ2UpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJsZUltYWdlR2V0SW1hZ2VQ
b3NpdGlvbihBdGtJbWFnZSogaW1hZ2UsIGdpbnQqIHgsIGdpbnQqIHksIEF0a0Nvb3JkVHlwZSBj
b29yZFR5cGUpCkBAIC02MCwxMCArNjAsMTAgQEAgc3RhdGljIHZvaWQgd2Via2l0QWNjZXNzaWJs
ZUltYWdlR2V0SW1hZ2VQb3NpdGlvbihBdGtJbWFnZSogaW1hZ2UsIGdpbnQqIHgsIGdpbnQKIAog
c3RhdGljIGNvbnN0IGdjaGFyKiB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFnZURlc2NyaXB0
aW9uKEF0a0ltYWdlKiBpbWFnZSkKIHsKLSAgICBnX3JldHVybl92YWxfaWZfZmFpbChBVEtfSU1B
R0UoaW1hZ2UpLCAwKTsKLSAgICByZXR1cm5WYWxJZldlYktpdEFjY2Vzc2libGVJc0ludmFsaWQo
V0VCS0lUX0FDQ0VTU0lCTEUoaW1hZ2UpLCAwKTsKKyAgICBhdXRvKiBhY2Nlc3NpYmxlID0gV0VC
S0lUX0FDQ0VTU0lCTEUoaW1hZ2UpOworICAgIHJldHVyblZhbElmV2ViS2l0QWNjZXNzaWJsZUlz
SW52YWxpZChhY2Nlc3NpYmxlLCBudWxscHRyKTsKIAotICAgIHJldHVybiBjYWNoZUFuZFJldHVy
bkF0a1Byb3BlcnR5KEFUS19PQkpFQ1QoaW1hZ2UpLCBBdGtDYWNoZWRJbWFnZURlc2NyaXB0aW9u
LCBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oY29yZShpbWFnZSkpKTsKKyAgICByZXR1cm4gd2Vi
a2l0QWNjZXNzaWJsZUNhY2hlQW5kUmV0dXJuQXRrUHJvcGVydHkoYWNjZXNzaWJsZSwgQXRrQ2Fj
aGVkSW1hZ2VEZXNjcmlwdGlvbiwgYWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKGNvcmUoaW1hZ2Up
KS51dGY4KCkpOwogfQogCiBzdGF0aWMgdm9pZCB3ZWJraXRBY2Nlc3NpYmxlSW1hZ2VHZXRJbWFn
ZVNpemUoQXRrSW1hZ2UqIGltYWdlLCBnaW50KiB3aWR0aCwgZ2ludCogaGVpZ2h0KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUlu
dGVyZmFjZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9X
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlU2VsZWN0aW9uLmNwcAppbmRleCA1YmZkOTI1NWJmYy4u
NzdlOGZlNTFjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRr
L1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VTZWxlY3Rpb24u
Y3BwCkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgog
I2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrU2VsZWN0aW9uKiBzZWxlY3Rpb24pCiAgICAgaWYgKCFXRUJL
SVRfSVNfQUNDRVNTSUJMRShzZWxlY3Rpb24pKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIHJldHVybiB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRf
QUNDRVNTSUJMRShzZWxlY3Rpb24pKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKHNlbGVjdGlvbikpOwogfQogCiBz
dGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogbGlzdE9iamVjdEZvclNlbGVjdGlvbihBdGtTZWxl
Y3Rpb24qIHNlbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VUYWJsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGUuY3BwCmlu
ZGV4IDJkYTM0YzljODM0Li42MjE0OWRmNTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJm
YWNlVGFibGUuY3BwCkBAIC00MCw5ICs0MCw5IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlQ2FwdGlv
bkVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlICJX
ZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGV4dC5oIgogI2luY2x1ZGUgIldlYktpdEFjY2Vzc2li
bGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdyYXBwZXJBdGsuaCIKIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTUxLDcgKzUxLDcgQEAgc3RhdGljIEFjY2Vzc2li
aWxpdHlPYmplY3QqIGNvcmUoQXRrVGFibGUqIHRhYmxlKQogICAgIGlmICghV0VCS0lUX0lTX0FD
Q0VTU0lCTEUodGFibGUpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIHJldHVybiB3
ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdChXRUJLSVRfQUNDRVNTSUJMRSh0
YWJsZSkpOworICAgIHJldHVybiAmd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmpl
Y3QoV0VCS0lUX0FDQ0VTU0lCTEUodGFibGUpKTsKIH0KIAogc3RhdGljIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGwqIGNlbGwoQXRrVGFibGUqIHRhYmxlLCBndWludCByb3csIGd1aW50IGNvbHVtbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vz
c2libGVJbnRlcmZhY2VUYWJsZUNlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRhYmxlQ2VsbC5jcHAKaW5kZXggNjIzZTNl
MWE1ZmQuLmUzNDFkYzI5OGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFibGVDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVGFi
bGVDZWxsLmNwcApAQCAtMjUsOCArMjUsOCBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmpl
Y3QuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5VGFibGUuaCIKICNpbmNsdWRlICJBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsLmgiCisjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZS5oIgogI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGVVdGlsLmgiCi0jaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVdy
YXBwZXJBdGsuaCIKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTQ1LDcgKzQ1LDcg
QEAgc3RhdGljIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmUoQXRrVGFibGVDZWxsKiBjZWxsKQog
ICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUoY2VsbCkpCiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogCi0gICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0
KFdFQktJVF9BQ0NFU1NJQkxFKGNlbGwpKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVH
ZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKGNlbGwpKTsKIH0KIAogR1B0
ckFycmF5KiB3ZWJraXRBY2Nlc3NpYmxlVGFibGVDZWxsR2V0Q29sdW1uSGVhZGVyQ2VsbHMoQXRr
VGFibGVDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCmluZGV4
IDk0NDUzZGMzZGU1Li4zNjllOTZlMTk0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVRleHQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VU
ZXh0LmNwcApAQCAtNDksOCArNDksOCBAQAogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5oIgogI2lu
Y2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlZpc2libGVVbml0cy5oIgorI2luY2x1
ZGUgIldlYktpdEFjY2Vzc2libGUuaCIKICNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5o
IgotI2luY2x1ZGUgIldlYktpdEFjY2Vzc2libGVXcmFwcGVyQXRrLmgiCiAjaW5jbHVkZSA8d3Rm
L2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIApAQCAt
NjYsNyArNjYsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZShBdGtUZXh0KiB0
ZXh0KQogICAgIGlmICghV0VCS0lUX0lTX0FDQ0VTU0lCTEUodGV4dCkpCiAgICAgICAgIHJldHVy
biAwOwogCi0gICAgcmV0dXJuIHdlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0
KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKKyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVH
ZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJVF9BQ0NFU1NJQkxFKHRleHQpKTsKIH0KIAogc3Rh
dGljIGludCBiYXNlbGluZVBvc2l0aW9uRm9yUmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsv
V2ViS2l0QWNjZXNzaWJsZUludGVyZmFjZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1ZS5jcHAKaW5kZXggYWM1
ODJmYTY2OTcuLmVkYjVlODU1MTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlSW50ZXJmYWNlVmFsdWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVJbnRlcmZhY2VWYWx1
ZS5jcHAKQEAgLTI0LDggKzI0LDggQEAKIAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3Qu
aCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlLmgi
CiAjaW5jbHVkZSAiV2ViS2l0QWNjZXNzaWJsZVV0aWwuaCIKLSNpbmNsdWRlICJXZWJLaXRBY2Nl
c3NpYmxlV3JhcHBlckF0ay5oIgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KIAogdXNp
bmcgbmFtZXNwYWNlIFdlYkNvcmU7CkBAIC0zNSw3ICszNSw3IEBAIHN0YXRpYyBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBjb3JlKEF0a1ZhbHVlKiB2YWx1ZSkKICAgICBpZiAoIVdFQktJVF9JU19BQ0NF
U1NJQkxFKHZhbHVlKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gd2Via2l0QWNj
ZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3QoV0VCS0lUX0FDQ0VTU0lCTEUodmFsdWUpKTsK
KyAgICByZXR1cm4gJndlYmtpdEFjY2Vzc2libGVHZXRBY2Nlc3NpYmlsaXR5T2JqZWN0KFdFQktJ
VF9BQ0NFU1NJQkxFKHZhbHVlKSk7CiB9CiAKIHN0YXRpYyBib29sIHdlYmtpdEFjY2Vzc2libGVT
ZXROZXdWYWx1ZShBdGtWYWx1ZSogY29yZVZhbHVlLCBjb25zdCBnZG91YmxlIG5ld1ZhbHVlKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNz
aWJsZVV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNj
ZXNzaWJsZVV0aWwuY3BwCmluZGV4IGEyNmY3MGEyMjA3Li5hMmY1OTM2YjcxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2li
bGVVdGlsLmNwcApAQCAtMzMsMTEgKzMzLDE0IEBACiAKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkp
CiAKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9i
amVjdC5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJOb2RlLmgiCiAjaW5jbHVkZSAiUmFuZ2UuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKKyNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0
aW9uLmgiCiAKICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTE3Myw0ICsx
NzYsODQgQEAgYm9vbCBzZWxlY3Rpb25CZWxvbmdzVG9PYmplY3QoQWNjZXNzaWJpbGl0eU9iamVj
dCogY29yZU9iamVjdCwgVmlzaWJsZVNlbGVjdGlvbiYKICAgICAgICAgJiYgKCZyYW5nZS0+c3Rh
cnRDb250YWluZXIoKSAhPSBsYXN0RGVzY2VuZGFudCB8fCByYW5nZS0+c3RhcnRPZmZzZXQoKSAh
PSBsYXN0T2Zmc2V0KTsKIH0KIAorQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFu
ZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHJlZmVyZW5jZU9iamVj
dCwgaW50JiBvZmZzZXQpCit7CisgICAgLy8gSW5kaWNhdGlvbiB0aGF0IHNvbWV0aGluZyBib2d1
cyBoYXMgdHJhbnNwaXJlZC4KKyAgICBvZmZzZXQgPSAtMTsKKworICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHJlZmVyZW5jZU9iamVjdC0+ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWRvY3VtZW50KQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE5vZGUqIGZvY3VzZWROb2RlID0gcmVmZXJl
bmNlT2JqZWN0LT5zZWxlY3Rpb24oKS5lbmQoKS5jb250YWluZXJOb2RlKCk7CisgICAgaWYgKCFm
b2N1c2VkTm9kZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBSZW5kZXJPYmplY3Qq
IGZvY3VzZWRSZW5kZXJlciA9IGZvY3VzZWROb2RlLT5yZW5kZXJlcigpOworICAgIGlmICghZm9j
dXNlZFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGZvY3VzZWRPYmplY3QgPSBkb2N1bWVudC0+YXhPYmplY3RDYWNoZSgpLT5nZXRP
ckNyZWF0ZShmb2N1c2VkUmVuZGVyZXIpOworICAgIGlmICghZm9jdXNlZE9iamVjdCkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICAvLyBMb29rIGZvciB0aGUgYWN0dWFsIChub3QgaWdu
b3JpbmcgYWNjZXNzaWJpbGl0eSkgc2VsZWN0ZWQgb2JqZWN0LgorICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZm9jdXNlZE9iamVjdDsKKyAgICBpZiAoZmly
c3RVbmlnbm9yZWRQYXJlbnQtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAgICAgZmly
c3RVbmlnbm9yZWRQYXJlbnQgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+cGFyZW50T2JqZWN0VW5p
Z25vcmVkKCk7CisgICAgaWYgKCFmaXJzdFVuaWdub3JlZFBhcmVudCkKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisKKyAgICAvLyBEb24ndCBpZ25vcmUgbGlua3MgaWYgdGhlIG9mZnNldCBpcyBi
ZWluZyByZXF1ZXN0ZWQgZm9yIGEgbGluaworICAgIC8vIG9yIGlmIHRoZSBsaW5rIGlzIGEgYmxv
Y2suCisgICAgaWYgKCFyZWZlcmVuY2VPYmplY3QtPmlzTGluaygpICYmIGZpcnN0VW5pZ25vcmVk
UGFyZW50LT5pc0xpbmsoKQorICAgICAgICAmJiAhKGZpcnN0VW5pZ25vcmVkUGFyZW50LT5yZW5k
ZXJlcigpICYmICFmaXJzdFVuaWdub3JlZFBhcmVudC0+cmVuZGVyZXIoKS0+aXNJbmxpbmUoKSkp
CisgICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgLy8gVGhlIHJlZmVyZW5jZSBvYmplY3QgbXVz
dCBlaXRoZXIgY29pbmNpZGUgd2l0aCB0aGUgZm9jdXNlZAorICAgIC8vIG9iamVjdCBiZWluZyBj
b25zaWRlcmVkLCBvciBiZSBhIGRlc2NlbmRhbnQgb2YgaXQuCisgICAgaWYgKHJlZmVyZW5jZU9i
amVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3QoZmlyc3RVbmlnbm9yZWRQYXJlbnQpKQorICAgICAg
ICByZWZlcmVuY2VPYmplY3QgPSBmaXJzdFVuaWdub3JlZFBhcmVudDsKKworICAgIE5vZGUqIHN0
YXJ0Tm9kZSA9IG51bGxwdHI7CisgICAgaWYgKGZpcnN0VW5pZ25vcmVkUGFyZW50ICE9IHJlZmVy
ZW5jZU9iamVjdCB8fCBmaXJzdFVuaWdub3JlZFBhcmVudC0+aXNUZXh0Q29udHJvbCgpKSB7Cisg
ICAgICAgIC8vIFdlIG5lZWQgdG8gdXNlIHRoZSBmaXJzdCBjaGlsZCdzIG5vZGUgb2YgdGhlIHJl
ZmVyZW5jZQorICAgICAgICAvLyBvYmplY3QgYXMgdGhlIHN0YXJ0IHBvaW50IHRvIGNhbGN1bGF0
ZSB0aGUgY2FyZXQgb2Zmc2V0CisgICAgICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBiZSBy
ZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9mCisgICAgICAgIC8vIHJlZmVyZW5jZSwgbm90IGp1c3Qg
dG8gdGhlIGZvY3VzZWQgb2JqZWN0ICh3aGljaCBjb3VsZCBoYXZlCisgICAgICAgIC8vIHByZXZp
b3VzIHNpYmxpbmdzIHdoaWNoIHNob3VsZCBiZSB0YWtlbiBpbnRvIGFjY291bnQgdG9vKS4KKyAg
ICAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGaXJzdENoaWxkID0gcmVmZXJlbmNlT2JqZWN0
LT5maXJzdENoaWxkKCk7CisgICAgICAgIGlmIChheEZpcnN0Q2hpbGQpCisgICAgICAgICAgICBz
dGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKKyAgICB9CisgICAgLy8gR2V0dGluZyB0
aGUgUG9zaXRpb24gb2YgYSBQc2V1ZG9FbGVtZW50IG5vdyB0cmlnZ2VycyBhbiBhc3NlcnRpb24u
CisgICAgLy8gVGhpcyBjYW4gb2NjdXIgd2hlbiBjbGlja2luZyBvbiBlbXB0eSBzcGFjZSBpbiBh
IHJlbmRlciBibG9jay4KKyAgICBpZiAoIXN0YXJ0Tm9kZSB8fCBzdGFydE5vZGUtPmlzUHNldWRv
RWxlbWVudCgpKQorICAgICAgICBzdGFydE5vZGUgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+bm9k
ZSgpOworCisgICAgLy8gQ2hlY2sgaWYgdGhlIG5vZGUgZm9yIHRoZSBmaXJzdCBwYXJlbnQgb2Jq
ZWN0IG5vdCBpZ25vcmluZworICAgIC8vIGFjY2Vzc2liaWxpdHkgaXMgbnVsbCBhZ2FpbiBiZWZv
cmUgdXNpbmcgaXQuIFRoaXMgbWlnaHQgaGFwcGVuCisgICAgLy8gd2l0aCBjZXJ0YWluIGtpbmQg
b2YgYWNjZXNzaWJpbGl0eSBvYmplY3RzLCBzdWNoIGFzIHRoZSByb290CisgICAgLy8gb25lICh0
aGUgc2Nyb2xsZXIgY29udGFpbmluZyB0aGUgd2ViQXJlYSBvYmplY3QpLgorICAgIGlmICghc3Rh
cnROb2RlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIFZpc2libGVQb3NpdGlvbiBz
dGFydFBvc2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uQmVmb3JlTm9kZShzdGFydE5v
ZGUpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24gPSBmaXJz
dFVuaWdub3JlZFBhcmVudC0+c2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpOworCisgICAgaWYgKHN0
YXJ0UG9zaXRpb24gPT0gZW5kUG9zaXRpb24pCisgICAgICAgIG9mZnNldCA9IDA7CisgICAgZWxz
ZSBpZiAoIWlzU3RhcnRPZkxpbmUoZW5kUG9zaXRpb24pKSB7CisgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBtYWtlUmFuZ2Uoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24ucHJldmlvdXMo
KSk7CisgICAgICAgIG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0
KCksIHRydWUpICsgMTsKKyAgICB9IGVsc2UgeworICAgICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdl
ID0gbWFrZVJhbmdlKHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uKTsKKyAgICAgICAgb2Zmc2V0
ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1ZSk7CisgICAgfQor
CisgICAgcmV0dXJuIGZpcnN0VW5pZ25vcmVkUGFyZW50OworfQorCiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL1dlYktpdEFjY2Vzc2libGVVdGls
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRp
bC5oCmluZGV4IGE5NDYwMDFmNGM2Li5hODk2OWNmMTM4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9hdGsvV2ViS2l0QWNjZXNzaWJsZVV0aWwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9XZWJLaXRBY2Nlc3NpYmxlVXRpbC5oCkBAIC0z
NSwyOCArMzUsMjYgQEAgY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIC8vIEFuIGV4aXN0aW5nIGFj
Y2Vzc2liaWxpdHkgb2JqZWN0IGlzIGNvbnNpZGVyZWQgdG8gYmUgaW52YWxpZCB3aGV0aGVyIGl0
J3MgYWxyZWFkeQogLy8gZGV0YWNoZWQgb3IgaWYgaXQncyBub3QgYnV0IGp1c3QgdXBkYXRpbmcg
dGhlIGxheW91dCB3aWxsIGRldGFjaCBpdCBhbnl3YXkuCiAjZGVmaW5lIHJldHVybklmV2ViS2l0
QWNjZXNzaWJsZUlzSW52YWxpZCh3ZWJraXRBY2Nlc3NpYmxlKSBHX1NUTVRfU1RBUlQgeyBcCi0g
ICAgaWYgKCF3ZWJraXRBY2Nlc3NpYmxlIHx8IHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVkKHdl
YmtpdEFjY2Vzc2libGUpKSB7IFwKKyAgICBpZiAoIXdlYmtpdEFjY2Vzc2libGUgfHwgd2Via2l0
QWNjZXNzaWJsZUlzRGV0YWNoZWQod2Via2l0QWNjZXNzaWJsZSkpIFwKICAgICAgICAgcmV0dXJu
OyBcCi0gICAgfSBlbHNlIHsgXAotICAgICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBjb3JlT2Jq
ZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vzc2liaWxpdHlPYmplY3Qod2Via2l0QWNjZXNz
aWJsZSk7IFwKLSAgICAgICAgaWYgKCFjb3JlT2JqZWN0IHx8ICFjb3JlT2JqZWN0LT5kb2N1bWVu
dCgpKSBcCi0gICAgICAgICAgICByZXR1cm47IFwKLSAgICAgICAgY29yZU9iamVjdC0+dXBkYXRl
QmFja2luZ1N0b3JlKCk7IFwKLSAgICAgICAgaWYgKHdlYmtpdEFjY2Vzc2libGVJc0RldGFjaGVk
KHdlYmtpdEFjY2Vzc2libGUpKSBcCi0gICAgICAgICAgICByZXR1cm47IFwKLSAgICB9OyB9IEdf
U1RNVF9FTkQKKyAgICBhdXRvJiBjb3JlT2JqZWN0ID0gd2Via2l0QWNjZXNzaWJsZUdldEFjY2Vz
c2liaWxpdHlPYmplY3Qod2Via2l0QWNjZXNzaWJsZSk7IFwKKyAgICBpZiAoIWNvcmVPYmplY3Qu
ZG9jdW1lbnQoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICBjb3JlT2JqZWN0LnVwZGF0ZUJhY2tpbmdTdG9yZSgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAod2Via2l0QWNjZXNzaWJs
ZUlzRGV0YWNoZWQod2Via2l0QWNjZXNzaWJsZSkpICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICA7IH0gR19TVE1UX0VORAogCiAjZGVmaW5lIHJldHVyblZhbElmV2Vi
S2l0QWNjZXNzaWJsZUlzSW52YWxpZCh3ZWJraXRBY2Nlc3NpYmxlLCB2YWwpIEdfU1RNVF9TVEFS
VCB7IFwKLSAgICBpZiAoIXdlYmtpdEFjY2Vzc2libGUgfHwgd2Via2l0QWNjZXNzaWJsZUlzRGV0
YWNoZWQod2Via2l0QWNjZXNzaWJsZSkpIHsgXAotICAgICAgICByZXR1cm4gKHZhbCk7IFwKLSAg
ICB9IGVsc2UgeyBcCi0gICAgICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVPYmplY3QgPSB3
ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVjdCh3ZWJraXRBY2Nlc3NpYmxlKTsg
XAotICAgICAgICBpZiAoIWNvcmVPYmplY3QgfHwgIWNvcmVPYmplY3QtPmRvY3VtZW50KCkpIFwK
LSAgICAgICAgICAgIHJldHVybiAodmFsKTsgXAotICAgICAgICBjb3JlT2JqZWN0LT51cGRhdGVC
YWNraW5nU3RvcmUoKTsgXAotICAgICAgICBpZiAod2Via2l0QWNjZXNzaWJsZUlzRGV0YWNoZWQo
d2Via2l0QWNjZXNzaWJsZSkpIFwKLSAgICAgICAgICAgIHJldHVybiAodmFsKTsgXAotICAgIH07
IH0gR19TVE1UX0VORAorICAgIGlmICghd2Via2l0QWNjZXNzaWJsZSB8fCB3ZWJraXRBY2Nlc3Np
YmxlSXNEZXRhY2hlZCh3ZWJraXRBY2Nlc3NpYmxlKSkgXAorICAgICAgICByZXR1cm4gKHZhbCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IGF1dG8mIGNvcmVPYmplY3QgPSB3ZWJraXRBY2Nlc3NpYmxlR2V0QWNjZXNzaWJpbGl0eU9iamVj
dCh3ZWJraXRBY2Nlc3NpYmxlKTsgXAorICAgIGlmICghY29yZU9iamVjdC5kb2N1bWVudCgpKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4g
KHZhbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIGNvcmVPYmplY3QudXBkYXRlQmFja2luZ1N0b3JlKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIGlmICh3ZWJraXRBY2Nlc3NpYmxlSXNEZXRhY2hlZCh3
ZWJraXRBY2Nlc3NpYmxlKSkgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gKHZh
bCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIDsgfSBHX1NUTVRfRU5ECiAKIEF0a0F0dHJpYnV0ZVNldCogYWRkVG9BdGtBdHRyaWJ1dGVT
ZXQoQXRrQXR0cmlidXRlU2V0KiwgY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogdmFsdWUp
OwogCkBAIC02OCw0ICs2Niw2IEBAIFN0cmluZyBhY2Nlc3NpYmlsaXR5RGVzY3JpcHRpb24oV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCopOwogCiBib29sIHNlbGVjdGlvbkJlbG9uZ3NUb09i
amVjdChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgV2ViQ29yZTo6VmlzaWJsZVNlbGVj
dGlvbiYpOwogCitXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5k
Q2FyZXRPZmZzZXRVbmlnbm9yZWQoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdCosIGludCYg
b2Zmc2V0KTsKKwogI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvYXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAppbmRleCA3ZmYxY2EzYWFh
Zi4uNzk2ZWI1YzZjNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRrL0Zy
YW1lU2VsZWN0aW9uQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFt
ZVNlbGVjdGlvbkF0ay5jcHAKQEAgLTI2LDcgKzI2LDggQEAKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGlzdEl0ZW0uaCIKLSNpbmNs
dWRlICJXZWJLaXRBY2Nlc3NpYmxlV3JhcHBlckF0ay5oIgorI2luY2x1ZGUgIldlYktpdEFjY2Vz
c2libGUuaCIKKyNpbmNsdWRlICJXZWJLaXRBY2Nlc3NpYmxlVXRpbC5oIgogI2luY2x1ZGUgPGds
aWIuaD4KICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Cg==
</data>
<flag name="review"
          id="383177"
          type_id="1"
          status="+"
          setter="mario"
    />
          </attachment>
      

    </bug>

</bugzilla>