<?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>230564</bug_id>
          
          <creation_ts>2021-09-21 10:35:16 -0700</creation_ts>
          <short_desc>Drop makeRefPtr() and use RefPtr { } directly instead</short_desc>
          <delta_ts>2021-09-21 16:04:24 -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>Web Template Framework</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795642</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-21 10:35:16 -0700</bug_when>
    <thetext>Drop makeRefPtr() and use RefPtr { } directly instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795653</commentid>
    <comment_count>1</comment_count>
      <attachid>438834</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2021-09-21 10:59:22 -0700</bug_when>
    <thetext>Created attachment 438834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795654</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-09-21 11:00:20 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See https://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795834</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-09-21 16:03:44 -0700</bug_when>
    <thetext>Committed r282848 (241979@main): &lt;https://commits.webkit.org/241979@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 438834.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795835</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-21 16:04:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/83373402&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438834</attachid>
            <date>2021-09-21 10:59:22 -0700</date>
            <delta_ts>2021-09-21 16:03:46 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230564-20210921105921.patch</filename>
            <type>text/plain</type>
            <size>96203</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyODI1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDVlZDNkZmEwMzc5MGU4ZWE5ODI3MGE5
ODgwNTE2OTE2MDkxYWMwMDUuLmZiNjQ3NDUyYzg5ODFlYzczNzE5NjE1MmJmMmZlZjlhMjBhNjNh
MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIG1ha2VSZWZQdHIoKSBhbmQgdXNlIFJlZlB0ciB7
IH0gZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjMwNTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiB3dGYvUmVmUHRyLmg6CisKIDIwMjEtMDktMjAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSZWR1Y2UgdXNlIG9mIG1ha2VSZWZQdHIoKSBh
bmQgdXNlIFJlZlB0ciB7IH0gZGlyZWN0bHkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggZGE0YTdkYmY4YzE2ZGFiOTU3
YjM2NWJmNDVmMTJkZTQ3ZDQ2MWNhNC4uYWEzZWI4ZTAwYjNjNGFkODk2YTBkZmFlNWNkYWU3MzRj
M2JlNGUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNTUgQEAKKzIwMjEtMDktMjEgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBEcm9wIG1ha2VSZWZQdHIoKSBhbmQg
dXNlIFJlZlB0ciB7IH0gZGlyZWN0bHkgaW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMwNTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBHUFVQcm9jZXNzL2dyYXBoaWNzL1JlbW90ZVJlbmRl
cmluZ0JhY2tlbmQuY3BwOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5k
OjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjp3YWtlVXBBbmRBcHBseURp
c3BsYXlMaXN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2Vy
dmVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCU2VydmVyOjphZGRDb25uZWN0aW9uKToK
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tOgor
ICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNrOmRpZFJl
Y2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICogUGxhdGZvcm0v
SVBDL0Nvbm5lY3Rpb24uY3BwOgorICAgICAgICAoSVBDOjpDb25uZWN0aW9uOjpNZXNzYWdlc1Ro
cm90dGxlcjo6c2NoZWR1bGVNZXNzYWdlc0Rpc3BhdGNoKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
SGl0VGVzdFJlc3VsdERhdGEuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJIaXRUZXN0UmVzdWx0
RGF0YTo6V2ViSGl0VGVzdFJlc3VsdERhdGEpOgorICAgICAgICAqIFNoYXJlZC9tYWMvTWVkaWFG
b3JtYXRSZWFkZXIvTWVkaWFGb3JtYXRSZWFkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YUZvcm1hdFJlYWRlcjo6cGFyc2VCeXRlU291cmNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L2dsaWIvV2ViS2l0V2ViVmlldy5jcHA6CisgICAgICAgICh3ZWJraXRXZWJWaWV3Q3JlYXRlTmV3
UGFnZSk6CisgICAgICAgICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Np
b24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6c2V0V2luZG93
RnJhbWVPZkJyb3dzaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkF1dG9tYXRpb25T
ZXNzaW9uOjptYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViQXV0b21hdGlvblNlc3Npb246OmhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL0NvY29hL1VJRGVsZWdhdGUubW06CisgICAgICAgIChXZWJLaXQ6
OlVJRGVsZWdhdGU6OlVJQ2xpZW50OjpydW5PcGVuUGFuZWwpOgorICAgICAgICAoV2ViS2l0OjpV
SURlbGVnYXRlOjpVSUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6c2NoZWR1bGVBY3Rpdml0eVN0YXRlVXBkYXRlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKC1bV0tQcm9jZXNzUG9v
bFdlYWtPYnNlcnZlciBwb29sXSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6
OnRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Q29udGV4dE1lbnVQcm94eTo6dXNlQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aGFu
ZGxlUHJldmVudGFibGVUb3VjaEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5
OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lU2hhcmVkKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2cpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRBbGVydCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdENvbmZpcm0pOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRQcm9tcHQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
b29sOjpwcm9jZXNzRm9yTmF2aWdhdGlvbik6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXJJT1MubW06CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29u
dHJvbGxlcjo6YmVnaW5Td2lwZUdlc3R1cmUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2Vi
Q29udGV4dE1lbnVQcm94eU1hYy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29udGV4dE1lbnVQ
cm94eU1hYzo6Z2V0Q29udGV4dE1lbnVGcm9tSXRlbXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b250ZXh0TWVudVByb3h5TWFjOjppbnNlcnRPclVwZGF0ZVF1aWNrTG9va0ltYWdlSXRlbSk6Cisg
ICAgICAgICogV2ViUHJvY2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFBy
b3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3
YWl0Rm9yRGlkQ3JlYXRlSW1hZ2VCdWZmZXJCYWNrZW5kKToKKyAgICAgICAgKFdlYktpdDo6UmVt
b3RlUmVuZGVyaW5nQmFja2VuZFByb3h5Ojp3YWl0Rm9yRGlkRmx1c2gpOgorICAgICAgICAoV2Vi
S2l0OjpSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHk6OmZpbmRSZXVzYWJsZURpc3BsYXlMaXN0
SGFuZGxlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnByZXBhcmVGb3JQbGF5YmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90
ZTo6bmV0d29ya1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6c2V0UmVhZHlTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVy
UHJpdmF0ZVJlbW90ZTo6cmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnZvbHVtZUNoYW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpN
ZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om11dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjp0aW1lQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6ZHVyYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdl
YktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyYXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cGxheWJhY2tTdGF0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmVuZ2luZUZhaWxlZFRv
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2hhcmFj
dGVyaXN0aWNDaGFuZ2VkKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjpzaXplQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6Zmlyc3RWaWRlb0ZyYW1lQXZhaWxhYmxlKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpyZW5kZXJpbmdNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJL
aXQ6Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6YWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmFkZFJl
bW90ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1v
dGU6OnJlbW92ZVJlbW90ZUF1ZGlvVHJhY2spOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmFkZFJlbW90ZVRleHRUcmFjayk6CisgICAgICAgIChXZWJLaXQ6Ok1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVtb3RlVGV4dFRyYWNrKToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphZGRSZW1vdGVWaWRlb1RyYWNrKToK
KyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZW1vdmVSZW1vdGVW
aWRlb1RyYWNrKToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpj
dXJyZW50UGxheWJhY2tUYXJnZXRJc1dpcmVsZXNzQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6
Ok1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bWVkaWFQbGF5ZXJLZXlOZWVkZWQpOgorICAgICAg
ICAoV2ViS2l0OjpNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjppbml0aWFsaXph
dGlvbkRhdGFFbmNvdW50ZXJlZCk6CisgICAgICAgIChXZWJLaXQ6Ok1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6cmVzb3VyY2VOb3RTdXBwb3J0ZWQpOgorICAgICAgICAoV2ViS2l0OjpNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKToKKyAgICAgICAg
KFdlYktpdDo6TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpnZXRSYXdDb29raWVzIGNvbnN0KToK
KyAgICAgICAgKiBXZWJQcm9jZXNzL0dQVS93ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpNZWRpYVJlY29yZGVyUHJpdmF0ZTo6c3RhcnRSZWNvcmRpbmcp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxl
UmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFu
ZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6c2No
ZWR1bGVMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxl
TG9hZEZyb21OZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Ob3RpZmljYXRp
b25zL1dlYk5vdGlmaWNhdGlvbk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3Rp
ZmljYXRpb25NYW5hZ2VyOjpkaWREZXN0cm95Tm90aWZpY2F0aW9uKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tOgorICAgICAgICAo
V2ViS2l0OjpXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyk6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJUENUZXN0
aW5nQVBJOjpKU0lQQ1NlbWFwaG9yZTo6c2lnbmFsKToKKyAgICAgICAgKFdlYktpdDo6SVBDVGVz
dGluZ0FQSTo6SlNJUENTZW1hcGhvcmU6OndhaXRGb3IpOgorICAgICAgICAoV2ViS2l0OjpJUENU
ZXN0aW5nQVBJOjpKU1NoYXJlZE1lbW9yeTo6cmVhZEJ5dGVzKToKKyAgICAgICAgKFdlYktpdDo6
SVBDVGVzdGluZ0FQSTo6SlNTaGFyZWRNZW1vcnk6OndyaXRlQnl0ZXMpOgorICAgICAgICAoV2Vi
S2l0OjpJUENUZXN0aW5nQVBJOjpKU0lQQzo6YWRkTWVzc2FnZUxpc3RlbmVyKToKKyAgICAgICAg
KFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6ZW5jb2RlUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0
aW9uUGFyYW1ldGVycyk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmVuY29kZVNo
YXJlZE1lbW9yeSk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmVuY29kZVNlbWFw
aG9yZSk6CisgICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OmVuY29kZUFyZ3VtZW50KToK
KyAgICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OnNlbmRNZXNzYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6SVBDVGVzdGluZ0FQSTo6SlNJUEM6OnNlbmRTeW5jTWVzc2FnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OklQQ1Rlc3RpbmdBUEk6OkpTSVBDOjp2bVBhZ2VTaXplKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURy
YXdpbmdBcmVhLm1tOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YTo6YWRkQ29tbWl0SGFuZGxlcnMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3
R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29tcHV0ZVRleHRMZWdpYmlsaXR5U2NhbGVzKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRldGVjdERhdGFJbkFsbEZyYW1lcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN0YXJ0
VGV4dE1hbmlwdWxhdGlvbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjb21wbGV0ZVRl
eHRNYW5pcHVsYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpyZXF1ZXN0VGV4dFJl
Y29nbml0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6dXBkYXRlV2l0aFRleHRSZWNv
Z25pdGlvblJlc3VsdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNyZWF0ZUFwcEhpZ2hs
aWdodEluU2VsZWN0ZWRSYW5nZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEFwcEhp
Z2hsaWdodHNWaXNpYmlsaXR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dl
YlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmdldFBsYXRmb3JtRWRpdG9y
U3RhdGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjppbnNpZGVJbWFnZU92ZXJsYXkpOgorICAg
ICAgICAoV2ViS2l0OjpleHBhbmRGb3JJbWFnZU92ZXJsYXkpOgorICAgICAgICAoV2ViS2l0Ojpy
YW5nZUZvclBvaW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cm9vdFZpZXdCb3VuZHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjphYnNvbHV0
ZUludGVyYWN0aW9uQm91bmRzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cm9vdFZpZXdJ
bnRlcmFjdGlvbkJvdW5kcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlcXVlc3RFdmFz
aW9uUmVjdHNBYm92ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OmRhdGFEZXRlY3Rvcklt
YWdlT3ZlcmxheVBvc2l0aW9uSW5mb3JtYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpzZWxlY3Rp
b25Qb3NpdGlvbkluZm9ybWF0aW9uKToKKyAgICAgICAgKFdlYktpdDo6cG9wdWxhdGVDYXJldENv
bnRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwb3NpdGlvbkluZm9ybWF0aW9uKToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cGVyZm9ybUFjdGlvbk9uRWxlbWVudCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNocmlua1RvRml0Q29udGVudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmFuaW1hdGlvbkRpZEZpbmlzaEZvckVsZW1lbnQpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAg
ICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGRDb21taXRIYW5k
bGVycyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwZXJmb3JtSW1tZWRpYXRlQWN0aW9uSGl0VGVzdEF0
TG9jYXRpb24pOgorCiAyMDIxLTA5LTIxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2Vu
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXNlIHR5cGVkIGlkZW50aWZpZXIgZm9yIFdlYlNvY2tl
dENoYW5uZWwgaWRlbnRpZmllcnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwppbmRleCBkMDc5
OWI1ZmFkODZjN2I1MDRjMWU3M2RlOTAxNjgwZjJmNzQ4OTk2Li5mYTM4NTJjMjUwNjMwOTBkMTM4
NGY2M2QzOTA3ZDJmZjFkNTA2Y2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21h
Yy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjIgQEAKKzIwMjEtMDktMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBEcm9wIG1ha2VSZWZQdHIoKSBhbmQgdXNlIFJlZlB0ciB7IH0gZGlyZWN0bHkg
aW5zdGVhZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjMwNTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBET00vRE9NLm1tOgorICAgICAgICAoLVtET01SYW5nZSByZW5kZXJlZEltYWdlRm9yY2luZ0Js
YWNrVGV4dDpyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDpdKToKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRN
ZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAg
ICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW06CisgICAgICAgIChXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAqIFdlYlZpZXcvV2Vi
SFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAgICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24g
ZWxlbWVudFdpdGhOYW1lOmluRm9ybTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0
aW9uIGNvbnRyb2xzSW5Gb3JtOl0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAg
ICAgICAgKC1bV2ViVmlldyB1cGRhdGVUZXh0VG91Y2hCYXJdKToKKwogMjAyMS0wOS0yMCAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFN0b3AgdXNpbmcgbWFrZVJl
ZigqdGhpcykgLyBtYWtlUmVmUHRyKHRoaXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9S
ZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCmluZGV4IDcxMTU1ZmI2MzQwNTU4MzRk
NzcxMGM4ZjRlYzM0NTEzMmIyOGE5YmYuLmE2NTkyZmU4ZjI4ZDA3MDBhOWQwNDk2NThhZDE4Y2Rh
MmFkMTY2MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL1JlZlB0ci5oCkBAIC0yNTMsMTYgKzI1Myw2IEBAIGlubGluZSBSZWZQdHI8VCwg
VSwgVj4gYWRvcHRSZWYoVCogcCkKICAgICByZXR1cm4gUmVmUHRyPFQsIFUsIFY+KHAsIFJlZlB0
cjxULCBVLCBWPjo6QWRvcHQpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmVm
UHRyPFQ+IG1ha2VSZWZQdHIoVCogcG9pbnRlcikKLXsKLSAgICByZXR1cm4gcG9pbnRlcjsKLX0K
LQotdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiBtYWtlUmVmUHRyKFQmIHJl
ZmVyZW5jZSkKLXsKLSAgICByZXR1cm4gJnJlZmVyZW5jZTsKLX0KLQogdGVtcGxhdGU8dHlwZW5h
bWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdUeXBlLCB0eXBlbmFtZSBQdHJUcmFpdHMsIHR5
cGVuYW1lIFJlZkRlcmVmVHJhaXRzPgogaW5saW5lIGJvb2wgaXMoUmVmUHRyPEFyZ1R5cGUsIFB0
clRyYWl0cywgUmVmRGVyZWZUcmFpdHM+JiBzb3VyY2UpCiB7CkBAIC0yNzksNSArMjY5LDQgQEAg
aW5saW5lIGJvb2wgaXMoY29uc3QgUmVmUHRyPEFyZ1R5cGUsIFB0clRyYWl0cywgUmVmRGVyZWZU
cmFpdHM+JiBzb3VyY2UpCiAKIHVzaW5nIFdURjo6UmVmUHRyOwogdXNpbmcgV1RGOjphZG9wdFJl
ZjsKLXVzaW5nIFdURjo6bWFrZVJlZlB0cjsKIHVzaW5nIFdURjo6c3RhdGljX3BvaW50ZXJfY2Fz
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9SZW1vdGVS
ZW5kZXJpbmdCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9ncmFwaGljcy9S
ZW1vdGVSZW5kZXJpbmdCYWNrZW5kLmNwcAppbmRleCAwMWUzNGViMjZmMzc4ZmU3ZTg0MWU4NjRk
Y2E1NzcxOWE4NzljMDBlLi4xZTdkZTlmYjFiZjc0NGI2NTEwNDU0NTg5NTlkMGE5N2IyNGNiMjlm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvZ3JhcGhpY3MvUmVtb3RlUmVu
ZGVyaW5nQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL2dyYXBoaWNz
L1JlbW90ZVJlbmRlcmluZ0JhY2tlbmQuY3BwCkBAIC0yMzYsOCArMjM2LDggQEAgRGlzcGxheUxp
c3Q6OlJlcGxheVJlc3VsdCBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpzdWJtaXQoY29uc3QgRGlz
cGxheUxpc3Q6OkRpc3AKIAogUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kOjpuZXh0RGVzdGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHlpbmdEaXNwbGF5TGlzdHMo
SW1hZ2VCdWZmZXImIGluaXRpYWxEZXN0aW5hdGlvbiwgc2l6ZV90IGluaXRpYWxPZmZzZXQsIERp
c3BsYXlMaXN0UmVhZGVySGFuZGxlJiBoYW5kbGUsIEdQVVByb2Nlc3NXYWtldXBSZWFzb24gcmVh
c29uKQogewotICAgIGF1dG8gZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKGluaXRpYWxEZXN0aW5h
dGlvbik7Ci0gICAgYXV0byBoYW5kbGVQcm90ZWN0b3IgPSBtYWtlUmVmKGhhbmRsZSk7CisgICAg
UmVmUHRyIGRlc3RpbmF0aW9uIHsgJmluaXRpYWxEZXN0aW5hdGlvbiB9OworICAgIFJlZiBoYW5k
bGVQcm90ZWN0b3IgeyBoYW5kbGUgfTsKIAogICAgIGF1dG8gb2Zmc2V0ID0gaW5pdGlhbE9mZnNl
dDsKICAgICBzaXplX3Qgc2l6ZVRvUmVhZCA9IDA7CkBAIC0yNjksNyArMjY5LDcgQEAgUmVmUHRy
PEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVzdGluYXRpb25JbWFn
ZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgTUVTU0FHRV9DSEVDS19XSVRIX1JFVFVSTl9WQUxV
RShvZmZzZXQgPD0gaGFuZGxlLnNoYXJlZE1lbW9yeSgpLnNpemUoKSwgbnVsbHB0ciwgIk91dC1v
Zi1ib3VuZHMgb2Zmc2V0IGludG8gc2hhcmVkIGRpc3BsYXkgbGlzdCBoYW5kbGUiKTsKIAogICAg
ICAgICBpZiAocmVzdWx0LnJlYXNvbkZvclN0b3BwaW5nID09IERpc3BsYXlMaXN0OjpTdG9wUmVw
bGF5UmVhc29uOjpDaGFuZ2VEZXN0aW5hdGlvbkltYWdlQnVmZmVyKSB7Ci0gICAgICAgICAgICBk
ZXN0aW5hdGlvbiA9IG1ha2VSZWZQdHIobV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdl
QnVmZmVyKCpyZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpKTsKKyAgICAgICAgICAg
IGRlc3RpbmF0aW9uID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKCpy
ZXN1bHQubmV4dERlc3RpbmF0aW9uSW1hZ2VCdWZmZXIpOwogICAgICAgICAgICAgaWYgKCFkZXN0
aW5hdGlvbikgewogICAgICAgICAgICAgICAgIEFTU0VSVCghbV9wZW5kaW5nV2FrZXVwSW5mbyk7
CiAgICAgICAgICAgICAgICAgbV9wZW5kaW5nV2FrZXVwSW5mbyA9IHt7CkBAIC0zMTEsNyArMzEx
LDcgQEAgUmVmUHRyPEltYWdlQnVmZmVyPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kOjpuZXh0RGVz
dGluYXRpb25JbWFnZUJ1ZmZlckFmdGVyQXBwbHkKICAgICAgICAgICAgIGF1dG8gbmV3RGVzdGlu
YXRpb25JZGVudGlmaWVyID0gbWFrZU9iamVjdElkZW50aWZpZXI8UmVuZGVyaW5nUmVzb3VyY2VJ
ZGVudGlmaWVyVHlwZT4ocmVzdW1lUmVhZGluZ0luZm8tPmRlc3RpbmF0aW9uKTsKICAgICAgICAg
ICAgIE1FU1NBR0VfQ0hFQ0tfV0lUSF9SRVRVUk5fVkFMVUUobmV3RGVzdGluYXRpb25JZGVudGlm
aWVyLmlzVmFsaWQoKSwgbnVsbHB0ciwgIkludmFsaWQgaW1hZ2UgYnVmZmVyIGRlc3RpbmF0aW9u
IHdoZW4gcmVzdW1pbmcgZGlzcGxheSBsaXN0IHByb2Nlc3NpbmciKTsKIAotICAgICAgICAgICAg
ZGVzdGluYXRpb24gPSBtYWtlUmVmUHRyKG1fcmVtb3RlUmVzb3VyY2VDYWNoZS5jYWNoZWRJbWFn
ZUJ1ZmZlcihuZXdEZXN0aW5hdGlvbklkZW50aWZpZXIpKTsKKyAgICAgICAgICAgIGRlc3RpbmF0
aW9uID0gbV9yZW1vdGVSZXNvdXJjZUNhY2hlLmNhY2hlZEltYWdlQnVmZmVyKG5ld0Rlc3RpbmF0
aW9uSWRlbnRpZmllcik7CiAgICAgICAgICAgICBNRVNTQUdFX0NIRUNLX1dJVEhfUkVUVVJOX1ZB
TFVFKGRlc3RpbmF0aW9uLCBudWxscHRyLCAiTWlzc2luZyBpbWFnZSBidWZmZXIgZGVzdGluYXRp
b24gd2hlbiByZXN1bWluZyBkaXNwbGF5IGxpc3QgcHJvY2Vzc2luZyIpOwogCiAgICAgICAgICAg
ICBvZmZzZXQgPSByZXN1bWVSZWFkaW5nSW5mby0+b2Zmc2V0OwpAQCAtMzI5LDcgKzMyOSw3IEBA
IHZvaWQgUmVtb3RlUmVuZGVyaW5nQmFja2VuZDo6d2FrZVVwQW5kQXBwbHlEaXNwbGF5TGlzdChj
b25zdCBHUFVQcm9jZXNzV2FrZXVwTWVzCiAKICAgICB1cGRhdGVMYXN0S25vd25TdGF0ZShSZW1v
dGVSZW5kZXJpbmdCYWNrZW5kU3RhdGU6OkJlZ2FuUmVwbGF5aW5nRGlzcGxheUxpc3QpOwogCi0g
ICAgYXV0byBkZXN0aW5hdGlvbkltYWdlQnVmZmVyID0gbWFrZVJlZlB0cihtX3JlbW90ZVJlc291
cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoYXJndW1lbnRzLmRlc3RpbmF0aW9uSW1hZ2VCdWZm
ZXJJZGVudGlmaWVyKSk7CisgICAgUmVmUHRyIGRlc3RpbmF0aW9uSW1hZ2VCdWZmZXIgPSBtX3Jl
bW90ZVJlc291cmNlQ2FjaGUuY2FjaGVkSW1hZ2VCdWZmZXIoYXJndW1lbnRzLmRlc3RpbmF0aW9u
SW1hZ2VCdWZmZXJJZGVudGlmaWVyKTsKICAgICBNRVNTQUdFX0NIRUNLKGRlc3RpbmF0aW9uSW1h
Z2VCdWZmZXIsICJNaXNzaW5nIGRlc3RpbmF0aW9uIGltYWdlIGJ1ZmZlciIpOwogCiAgICAgYXV0
byBpbml0aWFsSGFuZGxlID0gbV9zaGFyZWREaXNwbGF5TGlzdEhhbmRsZXMuZ2V0KGFyZ3VtZW50
cy5pdGVtQnVmZmVySWRlbnRpZmllcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL0luZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9JbmRleGVkREIvV2ViSURCU2VydmVyLmNwcAppbmRleCAzOWY2NTBhMjhmN2M3
YjFlNzZiNjkzNjgwY2Y1ZmE5OTA4MzNlNDUzLi5jMzYyNTExOTEzOGZhMTNiODZkY2MwOWI1M2Zj
NzQ5MDI5ODE3YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0lu
ZGV4ZWREQi9XZWJJREJTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvSW5kZXhlZERCL1dlYklEQlNlcnZlci5jcHAKQEAgLTM5OSw5ICszOTksOSBAQCB2b2lkIFdl
YklEQlNlcnZlcjo6YWRkQ29ubmVjdGlvbihJUEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24sIFdl
YkNvcmU6OlByb2Nlc3NJZAogewogICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CiAKLSAg
ICBwb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIHByb3RlY3Rl
ZENvbm5lY3Rpb24gPSBtYWtlUmVmUHRyKGNvbm5lY3Rpb24pLCBwcm9jZXNzSWRlbnRpZmllcl0g
eworICAgIHBvc3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gUmVmIHsgKnRoaXMgfSwgcHJv
dGVjdGVkQ29ubmVjdGlvbiA9IFJlZiB7IGNvbm5lY3Rpb24gfSwgcHJvY2Vzc0lkZW50aWZpZXJd
IHsKICAgICAgICAgYXV0b1tpdGVyLCBpc05ld0VudHJ5XSA9IG1fY29ubmVjdGlvbk1hcC5lbnN1
cmUocHJvdGVjdGVkQ29ubmVjdGlvbi0+dW5pcXVlSUQoKSwgWyZdIHsKLSAgICAgICAgICAgIHJl
dHVybiBtYWtlVW5pcXVlPFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD4oKnByb3RlY3RlZENvbm5l
Y3Rpb24sIHByb2Nlc3NJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PFdlYklEQkNvbm5lY3Rpb25Ub0NsaWVudD4ocHJvdGVjdGVkQ29ubmVjdGlvbi5nZXQoKSwgcHJv
Y2Vzc0lkZW50aWZpZXIpOwogICAgICAgICB9KTsKIAogICAgICAgICBBU1NFUlRfVU5VU0VEKGlz
TmV3RW50cnksIGlzTmV3RW50cnkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCmluZGV4IGIyYmRmNTlhMDU3
ODRkMTU4M2ZiNzAyNzY1ZWNiNDM4ZWZjMDdlYWMuLjU2ZGVhOGJkMGRhYTExMGEyZmZmMjlmNGMz
YjlmOTA4NDY1NjU4ODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KQEAgLTc1NCw3ICs3NTQsNyBAQCBB
TExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKICAgICAgICAgICAgICAgICBuZXR3b3Jr
RGF0YVRhc2stPmRpZE5lZ290aWF0ZU1vZGVyblRMUyhVUkwoVVJMKCksIG1ha2VTdHJpbmcoU3Ry
aW5nKHByb3RlY3Rpb25TcGFjZS5wcm90b2NvbCksICI6Ly8iLCBTdHJpbmcocHJvdGVjdGlvblNw
YWNlLmhvc3QpLCAnOicsIHByb3RlY3Rpb25TcGFjZS5wb3J0KSkpOwogICAgICAgICAgICAgfQog
I2lmIEhBVkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVBVEUpCi0gICAg
ICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1NlbGYgPSBX
ZWFrT2JqQ1B0cjxXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU+KHNlbGYpLCBzZXNzaW9uQ29jb2Eg
PSBtYWtlV2Vha1B0cihzZXNzaW9uQ29jb2EpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlciksIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sg
PSBtYWtlUmVmUHRyKG5ldHdvcmtEYXRhVGFzayksIG5lZ290aWF0ZWRMZWdhY3lUTFNdKE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQp
IG11dGFibGUgeworICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoW3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPihzZWxm
KSwgc2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB0YXNrSWRlbnRpZmllciwg
bmV0d29ya0RhdGFUYXNrID0gUmVmUHRyIHsgbmV0d29ya0RhdGFUYXNrIH0sIG5lZ290aWF0ZWRM
ZWdhY3lUTFNdKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0
dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1dG8gc3Ryb25nU2Vs
ZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICAgICAgICAgIGlmICghc3Ryb25nU2VsZikKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmlsKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0Nvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKaW5kZXggN2YyZDgzYjQ4NWE3YzU1MDli
MWQ5MDRlODkyNGVhZDdkM2FmZTc5ZC4uZTZmODMyZDk4YmE0ZTgyYjI1ZGI0Njk5MTQ2ZTY0Y2E2
YzBlMDdiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvQ29ubmVjdGlvbi5jcHAKQEAg
LTExMzUsNyArMTEzNSw3IEBAIHZvaWQgQ29ubmVjdGlvbjo6TWVzc2FnZXNUaHJvdHRsZXI6OnNj
aGVkdWxlTWVzc2FnZXNEaXNwYXRjaCgpCiAgICAgICAgIG1fZGlzcGF0Y2hNZXNzYWdlc1RpbWVy
LnN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIFJ1bkxvb3A6
Om1haW4oKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkQ29ubmVjdGlvbiA9IG1ha2VSZWZQdHIo
Jm1fY29ubmVjdGlvbildKCkgbXV0YWJsZSB7CisgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNo
KFt0aGlzLCBwcm90ZWN0ZWRDb25uZWN0aW9uID0gUmVmUHRyIHsgJm1fY29ubmVjdGlvbiB9XSgp
IG11dGFibGUgewogICAgICAgICAocHJvdGVjdGVkQ29ubmVjdGlvbi5nZXQoKS0+Km1fZGlzcGF0
Y2hNZXNzYWdlcykoKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkhpdFRlc3RSZXN1bHREYXRhLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkhp
dFRlc3RSZXN1bHREYXRhLmNwcAppbmRleCAwMmFmNzNlZjNiNzM2MTc0YTZiZjQ1M2E1ZWM2YmJh
MDczZGNjMDI3Li45ZmYwMjZkM2Q2YzY5NzdhYmU1YjM0Yjc3OWU4ZjBhNTZiNjkyNTk0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJIaXRUZXN0UmVzdWx0RGF0YS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViSGl0VGVzdFJlc3VsdERhdGEuY3BwCkBAIC05Myw3
ICs5Myw3IEBAIFdlYkhpdFRlc3RSZXN1bHREYXRhOjpXZWJIaXRUZXN0UmVzdWx0RGF0YShjb25z
dCBXZWJDb3JlOjpIaXRUZXN0UmVzdWx0JiBoaXRUZXN0CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoYXV0byB0YXJnZXQgPSBtYWtlUmVmUHRyKGhpdFRlc3RSZXN1bHQuaW5uZXJOb25TaGFy
ZWROb2RlKCkpOyB0YXJnZXQgJiYgaXM8UmVuZGVySW1hZ2U+KHRhcmdldC0+cmVuZGVyZXIoKSkp
CisgICAgaWYgKGF1dG8gdGFyZ2V0ID0gUmVmUHRyIHsgaGl0VGVzdFJlc3VsdC5pbm5lck5vblNo
YXJlZE5vZGUoKSB9OyB0YXJnZXQgJiYgaXM8UmVuZGVySW1hZ2U+KHRhcmdldC0+cmVuZGVyZXIo
KSkpCiAgICAgICAgIGltYWdlQml0bWFwID0gY3JlYXRlU2hhcmVhYmxlQml0bWFwKCpkb3duY2Fz
dDxSZW5kZXJJbWFnZT4odGFyZ2V0LT5yZW5kZXJlcigpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1hdFJlYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9tYWMvTWVkaWFGb3JtYXRSZWFkZXIvTWVkaWFG
b3JtYXRSZWFkZXIuY3BwCmluZGV4IGQwNjRlNDIyMTkwNzRlOTEzZDVkZGVkNjkwMDNkZWZmYzA5
NGI1YmYuLmI1MTJiYjVhODg1Y2YwY2FlMzU4YjllMjlmYzJkODM3MzU3MjQ2NGUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL21hYy9NZWRpYUZvcm1hdFJlYWRlci9NZWRpYUZvcm1h
dFJlYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvbWFjL01lZGlhRm9ybWF0UmVh
ZGVyL01lZGlhRm9ybWF0UmVhZGVyLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgTWVkaWFG
b3JtYXRSZWFkZXI6OnBhcnNlQnl0ZVNvdXJjZShSZXRhaW5QdHI8TVRQbHVnaW5CeXRlU291cmNl
UmVmPiYmIGJ5dGVTCiAgICAgfQogCiAgICAgaWYgKCFtX2xvZ2dlcikgewotICAgICAgICBtX2xv
Z2dlciA9IG1ha2VSZWZQdHIoRG9jdW1lbnQ6OnNoYXJlZExvZ2dlcigpKTsKKyAgICAgICAgbV9s
b2dnZXIgPSAmRG9jdW1lbnQ6OnNoYXJlZExvZ2dlcigpOwogICAgICAgICBtX2xvZ0lkZW50aWZp
ZXIgPSBuZXh0TG9nSWRlbnRpZmllcigpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCA1NTQzNGQ4YTA5ZmNm
YWI3OTU0ZjJhN2VkYzI3OTk2ZGU0MDk1NmRkLi5mMDk0ZjUzODkzOTQ0OTU1Zjc5ODM5YzI1ZDlk
ZWU5MjVkZjQ3MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xp
Yi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjQ3Myw3ICsyNDczLDcgQEAgUmVmUHRyPFdlYlBhZ2VQ
cm94eT4gd2Via2l0V2ViVmlld0NyZWF0ZU5ld1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
Y29uc3QgV2kKIAogICAgIHdlYmtpdFdpbmRvd1Byb3BlcnRpZXNVcGRhdGVGcm9tV2ViV2luZG93
RmVhdHVyZXMobmV3V2ViVmlldy0+cHJpdi0+d2luZG93UHJvcGVydGllcy5nZXQoKSwgd2luZG93
RmVhdHVyZXMpOwogCi0gICAgcmV0dXJuIG1ha2VSZWZQdHIoZ2V0UGFnZShuZXdXZWJWaWV3KSk7
CisgICAgcmV0dXJuICZnZXRQYWdlKG5ld1dlYlZpZXcpOwogfQogCiB2b2lkIHdlYmtpdFdlYlZp
ZXdSZWFkeVRvU2hvd1BhZ2UoV2ViS2l0V2ViVmlldyogd2ViVmlldykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKaW5kZXggMDBkZTAzNjVhYTI2MjdkOTIxMzhlZjhlZmZjNTEzMjk4ZDUxOWVjOC4uNDY0
NzBkMDdlNTk4Yjc4OTk0ZWY4MWFkMzdmOTJhNzc3NGMzMWRiZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lv
bi5jcHAKQEAgLTQxNSw3ICs0MTUsNyBAQCB2b2lkIFdlYkF1dG9tYXRpb25TZXNzaW9uOjpzZXRX
aW5kb3dGcmFtZU9mQnJvd3NpbmdDb250ZXh0KGNvbnN0IEluc3BlY3Rvcjo6UHJvdAogICAgIGlm
ICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRIX1BSRURFRklORURfRVJST1IoV2luZG93
Tm90Rm91bmQpOwogCi0gICAgZXhpdEZ1bGxzY3JlZW5XaW5kb3dGb3JQYWdlKCpwYWdlLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0sIGNhbGxiYWNrID0gV1RGTW92ZShjYWxs
YmFjayksIHBhZ2UgPSBtYWtlUmVmUHRyKHBhZ2UpLCB3aWR0aCwgaGVpZ2h0LCB4LCB5XSgpIG11
dGFibGUgeworICAgIGV4aXRGdWxsc2NyZWVuV2luZG93Rm9yUGFnZSgqcGFnZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2sp
LCBwYWdlID0gUmVmUHRyIHsgcGFnZSB9LCB3aWR0aCwgaGVpZ2h0LCB4LCB5XSgpIG11dGFibGUg
ewogICAgICAgICBhdXRvJiB3ZWJQYWdlID0gKnBhZ2U7CiAgICAgICAgIHRoaXMtPnJlc3RvcmVX
aW5kb3dGb3JQYWdlKHdlYlBhZ2UsIFtjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdl
ID0gV1RGTW92ZShwYWdlKSwgd2lkdGgsIGhlaWdodCwgeCwgeV0oKSBtdXRhYmxlIHsKICAgICAg
ICAgICAgIGF1dG8mIHdlYlBhZ2UgPSAqcGFnZTsKQEAgLTU2Myw3ICs1NjMsNyBAQCB2b2lkIFdl
YkF1dG9tYXRpb25TZXNzaW9uOjptYXhpbWl6ZVdpbmRvd09mQnJvd3NpbmdDb250ZXh0KGNvbnN0
IEluc3BlY3Rvcjo6UHJvdAogICAgIGlmICghcGFnZSkKICAgICAgICAgQVNZTkNfRkFJTF9XSVRI
X1BSRURFRklORURfRVJST1IoV2luZG93Tm90Rm91bmQpOwogCi0gICAgZXhpdEZ1bGxzY3JlZW5X
aW5kb3dGb3JQYWdlKCpwYWdlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmUHRyKHBhZ2UpXSgp
IG11dGFibGUgeworICAgIGV4aXRGdWxsc2NyZWVuV2luZG93Rm9yUGFnZSgqcGFnZSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJh
Y2spLCBwYWdlID0gUmVmUHRyIHsgcGFnZSB9XSgpIG11dGFibGUgewogICAgICAgICBhdXRvJiB3
ZWJQYWdlID0gKnBhZ2U7CiAgICAgICAgIHJlc3RvcmVXaW5kb3dGb3JQYWdlKHdlYlBhZ2UsIFt0
aGlzLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBwYWdlID0gV1RGTW92ZShwYWdlKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgICAgIG1heGltaXplV2luZG93Rm9yUGFnZSgqcGFnZSwgW2Nh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKCkgewpAQCAtNTc5LDcgKzU3OSw3IEBAIHZvaWQg
V2ViQXV0b21hdGlvblNlc3Npb246OmhpZGVXaW5kb3dPZkJyb3dzaW5nQ29udGV4dChjb25zdCBJ
bnNwZWN0b3I6OlByb3RvY29sCiAgICAgaWYgKCFwYWdlKQogICAgICAgICBBU1lOQ19GQUlMX1dJ
VEhfUFJFREVGSU5FRF9FUlJPUihXaW5kb3dOb3RGb3VuZCk7CiAgICAgCi0gICAgZXhpdEZ1bGxz
Y3JlZW5XaW5kb3dGb3JQYWdlKCpwYWdlLCBbcHJvdGVjdGVkVGhpcyA9IFJlZiB7ICp0aGlzIH0s
IGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayksIHBhZ2UgPSBtYWtlUmVmUHRyKHBhZ2UpXSgp
IG11dGFibGUgeworICAgIGV4aXRGdWxsc2NyZWVuV2luZG93Rm9yUGFnZSgqcGFnZSwgW3Byb3Rl
Y3RlZFRoaXMgPSBSZWYgeyAqdGhpcyB9LCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spLCBw
YWdlID0gUmVmUHRyIHsgcGFnZSB9XSgpIG11dGFibGUgewogICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5oaWRlV2luZG93Rm9yUGFnZSgqcGFnZSwgW2NhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayld
KCkgbXV0YWJsZSB7CiAgICAgICAgICAgICBjYWxsYmFjay0+c2VuZFN1Y2Nlc3MoKTsKICAgICAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9VSURlbGVn
YXRlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVUlEZWxlZ2F0ZS5tbQppbmRl
eCBiZGQ2YjNhNjgzMzU1YWNlZDNiOWE3MjAyNDdhNjEzMTVlYWU5ZjQxLi5kZGMxNDhiNzVjODU1
MmVjY2QwZmRkYThiOWRkYzgwODk0NGY2YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9VSURlbGVnYXRlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1VJRGVsZWdhdGUubW0KQEAgLTEwMjksNyArMTAyOSw3IEBAIGJvb2wgVUlEZWxlZ2F0
ZTo6VUlDbGllbnQ6OnJ1bk9wZW5QYW5lbChXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkqIHdlYkZyCiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVj
a2VyOjpjcmVhdGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OnJ1bk9wZW5QYW5l
bFdpdGhQYXJhbWV0ZXJzOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6KSk7CiAK
LSAgICBbZGVsZWdhdGUgd2ViVmlldzptX3VpRGVsZWdhdGUtPm1fd2ViVmlldy5nZXQoKS5nZXQo
KSBydW5PcGVuUGFuZWxXaXRoUGFyYW1ldGVyczp3cmFwcGVyKCpvcGVuUGFuZWxQYXJhbWV0ZXJz
KSBpbml0aWF0ZWRCeUZyYW1lOndyYXBwZXIoZnJhbWUpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VC
bG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG9wZW5QYW5lbFBhcmFtZXRlcnMg
PSBtYWtlUmVmKCpvcGVuUGFuZWxQYXJhbWV0ZXJzKSwgbGlzdGVuZXIgPSBtYWtlUmVmUHRyKGxp
c3RlbmVyKV0gKE5TQXJyYXkgKlVSTHMpIG11dGFibGUgeworICAgIFtkZWxlZ2F0ZSB3ZWJWaWV3
Om1fdWlEZWxlZ2F0ZS0+bV93ZWJWaWV3LmdldCgpLmdldCgpIHJ1bk9wZW5QYW5lbFdpdGhQYXJh
bWV0ZXJzOndyYXBwZXIoKm9wZW5QYW5lbFBhcmFtZXRlcnMpIGluaXRpYXRlZEJ5RnJhbWU6d3Jh
cHBlcihmcmFtZSkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2NrUHRyKFtjaGVja2VyID0gV1RG
TW92ZShjaGVja2VyKSwgb3BlblBhbmVsUGFyYW1ldGVycyA9IFJlZiB7ICpvcGVuUGFuZWxQYXJh
bWV0ZXJzIH0sIGxpc3RlbmVyID0gUmVmUHRyIHsgbGlzdGVuZXIgfV0gKE5TQXJyYXkgKlVSTHMp
IG11dGFibGUgewogICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVu
Q2FsbGVkKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNoZWNrZXItPmRpZENhbGxD
b21wbGV0aW9uSGFuZGxlcigpOwpAQCAtMTQ2NSw3ICsxNDY1LDcgQEAgdm9pZCBVSURlbGVnYXRl
OjpVSUNsaWVudDo6cmVxdWVzdFBvaW50ZXJMb2NrKFdlYlBhZ2VQcm94eSogcGFnZSkKICAgICB9
CiAKICAgICBhdXRvIGNoZWNrZXIgPSBDb21wbGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVh
dGUoZGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlld0RpZFJlcXVlc3RQb2ludGVyTG9j
azpjb21wbGV0aW9uSGFuZGxlcjopKTsKLSAgICBbc3RhdGljX2Nhc3Q8aWQgPFdLVUlEZWxlZ2F0
ZVByaXZhdGU+PihkZWxlZ2F0ZSkgX3dlYlZpZXdEaWRSZXF1ZXN0UG9pbnRlckxvY2s6bV91aURl
bGVnYXRlLT5tX3dlYlZpZXcuZ2V0KCkuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6bWFrZUJsb2Nr
UHRyKFtjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgcGFnZSA9IG1ha2VSZWZQdHIocGFnZSld
IChCT09MIGFsbG93KSB7CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS1VJRGVsZWdhdGVQcml2YXRl
Pj4oZGVsZWdhdGUpIF93ZWJWaWV3RGlkUmVxdWVzdFBvaW50ZXJMb2NrOm1fdWlEZWxlZ2F0ZS0+
bV93ZWJWaWV3LmdldCgpLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOm1ha2VCbG9ja1B0cihbY2hl
Y2tlciA9IFdURk1vdmUoY2hlY2tlciksIHBhZ2UgPSBSZWZQdHIgeyBwYWdlIH1dIChCT09MIGFs
bG93KSB7CiAgICAgICAgIGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxs
ZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBs
ZXRpb25IYW5kbGVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDMzMDFlZDQ4ZjA0NWE5ZGQ1NGYzYTg1M2JhZTkwZjEy
ZWRhN2NhNTcuLjQyMzRlMmQyYzFhNTFlMTViODI0YjBjZTI3OGZlNjIxZDQ4NGI4NDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1t
CkBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnNjaGVkdWxlQWN0aXZpdHlT
dGF0ZVVwZGF0ZSgpCiAgICAgICAgICAgICAvLyB0aGF0IG1heSByZXN1bHQgaW4gb3RoZXIgZnJh
bWV3b3JrcyB0cnlpbmcgdG8gaW5zdGFsbCBjb21taXQgaGFuZGxlcnMgZm9yIHRoZSBzYW1lIHBo
YXNlLCB3aGljaCBpcyBub3QgYWxsb3dlZC4KICAgICAgICAgICAgIC8vIFNvLCBkaXNwYXRjaF9h
c3luYyBoZXJlOyB3ZSBvbmx5IGNhcmUgdGhhdCB0aGUgYWN0aXZpdHkgc3RhdGUgY2hhbmdlIGRv
ZXNuJ3QgYXBwbHkgdW50aWwgYWZ0ZXIgdGhlIGFjdGl2ZSBjb21taXQgaXMgY29tcGxldGUuCiAg
ICAgICAgICAgICBXb3JrUXVldWU6Om1haW4oKS5kaXNwYXRjaChbd2Vha1RoaXNdIHsKLSAgICAg
ICAgICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgp
KTsKKyAgICAgICAgICAgICAgICBSZWZQdHIgcHJvdGVjdGVkVGhpcyB7IHdlYWtUaGlzLmdldCgp
IH07CiAgICAgICAgICAgICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29h
L1dlYlByb2Nlc3NQb29sQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9X
ZWJQcm9jZXNzUG9vbENvY29hLm1tCmluZGV4IGUxN2RmZWVhNzc1ODVmNTU2ZWQ3OWIyZThlMmE0
MTE3YjNhM2FmMzUuLjgzNjkyNGYwZTIwZmVhOGVkZGEyMDI3ZTY4NDk3Mjg5YjAzZmE3NGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbQpAQCAtMTU5LDcgKzE1OSw3IEBAIE5TX0RJUkVDVF9NRU1CRVJTCiBAaW1wbGVtZW50
YXRpb24gV0tQcm9jZXNzUG9vbFdlYWtPYnNlcnZlciAoRGlyZWN0KQogLSAoUmVmUHRyPFdlYktp
dDo6V2ViUHJvY2Vzc1Bvb2w+KXBvb2wKIHsKLSAgICByZXR1cm4gbWFrZVJlZlB0cihtX3dlYWtQ
dHIuZ2V0KCkpOworICAgIHJldHVybiBtX3dlYWtQdHIuZ2V0KCk7CiB9CiBAZW5kCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCmluZGV4IDg2MTc3N2VjNmFhMmYwNzkzZDQwZDNjNWZiMjY3NTVkYTUyMDgyY2MuLmU4
ZWE4MGJmODkxMTA2NGU0NGEyM2RiYjdiNDM4MjQyOWQ1OWM1ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApA
QCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6dGVybWluYXRlV2Vi
UHJvY2VzcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciB3ZWJQcm9jCiAKIHZvaWQgTmV0d29y
a1Byb2Nlc3NQcm94eTo6dGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllcikKIHsKLSAgICBp
ZiAoYXV0byBwcm9jZXNzID0gbWFrZVJlZlB0cihXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJ
ZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVyKSkpIHsKKyAgICBpZiAoUmVmUHRyIHByb2Nlc3Mg
PSBXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NGb3JJZGVudGlmaWVyKHByb2Nlc3NJZGVudGlmaWVy
KSkgewogICAgICAgICBwcm9jZXNzLT5kaXNhYmxlU2VydmljZVdvcmtlcnMoKTsKICAgICAgICAg
cHJvY2Vzcy0+cmVxdWVzdFRlcm1pbmF0aW9uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbjo6RXhj
ZWVkZWRDUFVMaW1pdCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQ29udGV4dE1lbnVQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b250ZXh0TWVudVByb3h5LmNwcAppbmRleCA0ODFiNzg2M2E2YWRjYzVjY2I4YTE3ZTM3ZGRkN2Qz
YzViYWRjZjY4Li5jY2JjYzU3NDU1Mjg3YTI1MmU2Y2ZlNDMxN2E3NzI0ZGE3YzUyNTE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudVByb3h5LmNwcApAQCAt
NjEsNyArNjEsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHk6OnVzZUNvbnRleHRNZW51SXRl
bXMoVmVjdG9yPFJlZjxXZWJDb250ZXh0TWVudUl0ZW0+PiYmCiB7CiAgICAgbV9jb250ZXh0TWVu
dUxpc3RlbmVyID0gbnVsbHB0cjsKIAotICAgIGF1dG8gcGFnZSA9IG1ha2VSZWZQdHIodGhpcy0+
cGFnZSgpKTsKKyAgICBSZWZQdHIgcGFnZSA9IHRoaXMtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2Up
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggYjc3YmNiMmZjNTA3ZmEyNzBhZGVmNjY1ZTJlZjU1MTQ4ZmZhZTY3ZC4uNzY2YzA3
ODExYmEyNWM3MmY0MDMyMjIwZjhhMjhhODNjMWI5MTdiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0zMjAzLDcgKzMyMDMsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6aGFuZGxlUHJldmVudGFibGVUb3VjaEV2ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQmIGV2
ZW50KQogICAgICAgICAgICAgKyttX2hhbmRsaW5nUHJldmVudGFibGVUb3VjaEVuZENvdW50Owog
CiAgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6RXZlbnREaXNwYXRjaGVyOjpU
b3VjaEV2ZW50KG1fd2ViUGFnZUlELCBldmVudCksIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgZXZlbnRdIChib29sIGhhbmRsZWQpIHsKLSAgICAgICAgICAgIGF1dG8gcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkpOworICAgICAgICAgICAgUmVm
UHRyIHByb3RlY3RlZFRoaXMgeyB3ZWFrVGhpcy5nZXQoKSB9OwogICAgICAgICAgICAgaWYgKCFw
cm90ZWN0ZWRUaGlzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNDYzNCw3ICs0NjM0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWVT
aGFyZWQoUmVmPFdlYlByb2Nlc3NQcm94eT4mJgogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3Ig
cHJvdGVjdG9yKHBhZ2VDbGllbnQoKSk7CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihw
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKSk7CisgICAgUmVmUHRyIGZyYW1lID0gcHJvY2Vzcy0+
d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhwcm9jZXNzLCBmcmFtZSk7CiAg
ICAgTUVTU0FHRV9DSEVDS19VUkwocHJvY2VzcywgdXJsKTsKIApAQCAtNTQyMCw3ICs1NDIwLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oUmVm
PFdlYlByb2Nlc3NQcm94eT4mJiBwcm9jZXMKICAgICBhdXRvIGxpc3RlbmVyID0gbWFrZVJlZihm
cmFtZS5zZXRVcFBvbGljeUxpc3RlbmVyUHJveHkoW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBSZWYg
eyAqdGhpcyB9LCBmcmFtZSA9IG1ha2VSZWYoZnJhbWUpLCBzZW5kZXIgPSBXVEZNb3ZlKHNlbmRl
ciksIG5hdmlnYXRpb24sIG5hdmlnYXRpb25BY3Rpb24sIGZyYW1lSW5mbywgdXNlckRhdGFPYmpl
Y3QgPSBwcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgp
KS5nZXQoKV0gKFBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KiBwb2xpY2llcywgUHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCBwcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50LCBSZWZQdHI8U2FmZUJyb3dzaW5nV2FybmluZz4mJiBzYWZlQnJvd3NpbmdX
YXJuaW5nLCBzdGQ6Om9wdGlvbmFsPE5hdmlnYXRpbmdUb0FwcEJvdW5kRG9tYWluPiBpc0FwcEJv
dW5kRG9tYWluKSBtdXRhYmxlIHsKICAgICAgICAgV0VCUEFHRVBST1hZX1JFTEVBU0VfTE9HKExv
YWRpbmcsICJkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOiBsaXN0ZW5lciBjYWxsZWQ6
IGZyYW1lSUQ9JWxsdSwgbmF2aWdhdGlvbklEPSVsbHUsIHBvbGljeUFjdGlvbj0ldSwgc2FmZUJy
b3dzaW5nV2FybmluZz0lZCwgaXNBcHBCb3VuZERvbWFpbj0lZCIsIGZyYW1lLT5mcmFtZUlEKCku
dG9VSW50NjQoKSwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDogMCwg
KHVuc2lnbmVkKXBvbGljeUFjdGlvbiwgISFzYWZlQnJvd3NpbmdXYXJuaW5nLCAhIWlzQXBwQm91
bmREb21haW4pOwogCi0gICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBbdGhpcywgcHJv
dGVjdGVkVGhpcywgZnJhbWUsIHNlbmRlciA9IFdURk1vdmUoc2VuZGVyKSwgbmF2aWdhdGlvbiwg
bmF2aWdhdGlvbkFjdGlvbiA9IFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbiksIHByb2Nlc3NTd2Fw
UmVxdWVzdGVkQnlDbGllbnQsIHBvbGljaWVzID0gbWFrZVJlZlB0cihwb2xpY2llcyldIChQb2xp
Y3lBY3Rpb24gcG9saWN5QWN0aW9uKSBtdXRhYmxlIHsKKyAgICAgICAgYXV0byBjb21wbGV0aW9u
SGFuZGxlciA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBmcmFtZSwgc2VuZGVyID0gV1RGTW92ZShz
ZW5kZXIpLCBuYXZpZ2F0aW9uLCBuYXZpZ2F0aW9uQWN0aW9uID0gV1RGTW92ZShuYXZpZ2F0aW9u
QWN0aW9uKSwgcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNsaWVudCwgcG9saWNpZXMgPSBSZWZQdHIg
eyBwb2xpY2llcyB9XSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbikgbXV0YWJsZSB7CiAgICAg
ICAgICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBpZiAo
IXBvbGljaWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBkZWZhdWx0UG9saWNp
ZXMgPSBtX2NvbmZpZ3VyYXRpb24tPmRlZmF1bHRXZWJzaXRlUG9saWNpZXMoKSkKQEAgLTU5MjEs
MTMgKzU5MjEsMTMgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNsb3NlUGFnZSgpCiB2b2lkIFdlYlBh
Z2VQcm94eTo6cnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFJlZlB0cjxXZWJGcmFtZVByb3h5PiYm
IGZyYW1lLCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSogZnJh
bWUsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKT4mJiBydW5EaWFsb2dDYWxsYmFjaykKIHsKICAgICBw
YWdlQ2xpZW50KCkucnVuTW9kYWxKYXZhU2NyaXB0RGlhbG9nKFt3ZWFrVGhpcyA9IG1ha2VXZWFr
UHRyKCp0aGlzKSwgZnJhbWVJbmZvID0gV1RGTW92ZShmcmFtZUluZm8pLCBmcmFtZSA9IFdURk1v
dmUoZnJhbWUpLCBtZXNzYWdlLCBydW5EaWFsb2dDYWxsYmFjayA9IFdURk1vdmUocnVuRGlhbG9n
Q2FsbGJhY2spXSgpIG11dGFibGUgewotICAgICAgICBhdXRvIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmUHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgUmVmUHRyIHByb3RlY3RlZFRoaXMgeyB3
ZWFrVGhpcy5nZXQoKSB9OwogICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgcHJvdGVjdGVkVGhpcy0+bV9pc1J1bm5pbmdNb2RhbEphdmFT
Y3JpcHREaWFsb2cgPSB0cnVlOwogICAgICAgICBydW5EaWFsb2dDYWxsYmFjaygqcHJvdGVjdGVk
VGhpcywgZnJhbWUuZ2V0KCksIFdURk1vdmUoZnJhbWVJbmZvKSwgbWVzc2FnZSwgW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICBpZiAoYXV0byBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSkpCisgICAgICAgICAgICBp
ZiAoUmVmUHRyIHByb3RlY3RlZFRoaXMgPSB3ZWFrVGhpcy5nZXQoKSkKICAgICAgICAgICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT5tX2lzUnVubmluZ01vZGFsSmF2YVNjcmlwdERpYWxvZyA9IGZhbHNl
OwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTU5MzUsNyArNTkzNSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpydW5Nb2RhbEphdmFTY3JpcHREaWFsb2coUmVmUHRyPFdlYkZyYW1lUHJveHk+JiYg
ZnJhbWUsIEZyYW1lCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0QWxlcnQoRnJh
bWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBmcmFtZUluZm8sIGNvbnN0IFN0
cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UnVuSmF2YVNjcmlwdEFsZXJ0
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0ciht
X3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBtX3Byb2Nl
c3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9jZXNzLCBmcmFt
ZSk7CiAKICAgICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CkBAIC01OTU4LDcgKzU5NTgs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEFsZXJ0KEZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBGcmFtZUluZm9EYXRhJiYgZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2
YVNjcmlwdENvbmZpcm0oRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIEZyYW1lSW5mb0RhdGEmJiBm
cmFtZUluZm8sIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
UnVuSmF2YVNjcmlwdENvbmZpcm06OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewotICAgIGF1dG8g
ZnJhbWUgPSBtYWtlUmVmUHRyKG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCkpOworICAgIFJl
ZlB0ciBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9D
SEVDSyhtX3Byb2Nlc3MsIGZyYW1lKTsKIAogICAgIGV4aXRGdWxsc2NyZWVuSW1tZWRpYXRlbHko
KTsKQEAgLTU5ODEsNyArNTk4MSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
Q29uZmlybShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgRnJhbWVJbmZvRGF0YSYmCiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0UHJvbXB0KEZyYW1lSWRlbnRpZmllciBmcmFtZUlE
LCBGcmFtZUluZm9EYXRhJiYgZnJhbWVJbmZvLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0
IFN0cmluZyYgZGVmYXVsdFZhbHVlLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSdW5KYXZhU2Ny
aXB0UHJvbXB0OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFr
ZVJlZlB0cihtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpKTsKKyAgICBSZWZQdHIgZnJhbWUg
PSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0sobV9wcm9j
ZXNzLCBmcmFtZSk7CiAKICAgICBleGl0RnVsbHNjcmVlbkltbWVkaWF0ZWx5KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggYmUyMTJmNGZhYTc3NzEz
ZjFmMzVlY2QwMDFlZGI3Yjc2ZjcwOWFlMi4uYzZhZTc0YzZiODI5ZGUyYjRhYjdiZmJjZmVlYjQ1
ZTBhNTkzYThkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNw
cApAQCAtMTgwNSw3ICsxODA1LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cmVtb3ZlUHJvY2Vz
c0Zyb21PcmlnaW5DYWNoZVNldChXZWJQcm9jZXNzUHJveHkmIHByb2Nlc3MpCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Bvb2w6OnByb2Nlc3NGb3JOYXZpZ2F0aW9uKFdlYlBhZ2VQcm94eSYgcGFnZSwgY29u
c3QgQVBJOjpOYXZpZ2F0aW9uJiBuYXZpZ2F0aW9uLCBSZWY8V2ViUHJvY2Vzc1Byb3h5PiYmIHNv
dXJjZVByb2Nlc3MsIGNvbnN0IFVSTCYgc291cmNlVVJMLCBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5
Q2xpZW50IHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIFJlZjxXZWJzaXRlRGF0YVN0b3Jl
PiYmIGRhdGFTdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZWY8V2ViUHJvY2Vzc1Byb3h5
PiYmLCBTdXNwZW5kZWRQYWdlUHJveHkqLCBjb25zdCBTdHJpbmcmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBwcm9jZXNzRm9yTmF2aWdhdGlvbkludGVybmFsKHBhZ2UsIG5hdmlnYXRp
b24sIHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVz
dGVkQnlDbGllbnQsIFdURk1vdmUoZGF0YVN0b3JlKSwgW3RoaXMsIHBhZ2UgPSBtYWtlUmVmUHRy
KHBhZ2UpLCBuYXZpZ2F0aW9uID0gbWFrZVJlZihuYXZpZ2F0aW9uKSwgc291cmNlUHJvY2VzcyA9
IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBzb3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVk
QnlDbGllbnQsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJvY2VzcywgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNw
ZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikgbXV0YWJsZSB7CisgICAgcHJvY2Vzc0Zv
ck5hdmlnYXRpb25JbnRlcm5hbChwYWdlLCBuYXZpZ2F0aW9uLCBzb3VyY2VQcm9jZXNzLmNvcHlS
ZWYoKSwgc291cmNlVVJMLCBwcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50LCBXVEZNb3ZlKGRh
dGFTdG9yZSksIFt0aGlzLCBwYWdlID0gUmVmIHsgcGFnZSB9LCBuYXZpZ2F0aW9uID0gbWFrZVJl
ZihuYXZpZ2F0aW9uKSwgc291cmNlUHJvY2VzcyA9IHNvdXJjZVByb2Nlc3MuY29weVJlZigpLCBz
b3VyY2VVUkwsIHByb2Nlc3NTd2FwUmVxdWVzdGVkQnlDbGllbnQsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKFJlZjxXZWJQcm9jZXNzUHJveHk+JiYgcHJv
Y2VzcywgU3VzcGVuZGVkUGFnZVByb3h5KiBzdXNwZW5kZWRQYWdlLCBjb25zdCBTdHJpbmcmIHJl
YXNvbikgbXV0YWJsZSB7CiAgICAgICAgIC8vIFdlIGFyZSBwcm9jZXNzLXN3YXBwaW5nIHNvIGF1
dG9tYXRpYyBwcm9jZXNzIHByZXdhcm1pbmcgd291bGQgYmUgYmVuZWZpY2lhbCBpZiB0aGUgY2xp
ZW50IGhhcyBub3QgZXhwbGljaXRseSBlbmFibGVkIC8gZGlzYWJsZWQgaXQuCiAgICAgICAgIGJv
b2wgZG9pbmdBbkF1dG9tYXRpY1Byb2Nlc3NTd2FwID0gcHJvY2Vzc1N3YXBSZXF1ZXN0ZWRCeUNs
aWVudCA9PSBQcm9jZXNzU3dhcFJlcXVlc3RlZEJ5Q2xpZW50OjpObyAmJiBwcm9jZXNzLnB0cigp
ICE9IHNvdXJjZVByb2Nlc3MucHRyKCk7CiAgICAgICAgIGlmIChkb2luZ0FuQXV0b21hdGljUHJv
Y2Vzc1N3YXAgJiYgIWNvbmZpZ3VyYXRpb24oKS53YXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ1Nl
dEJ5Q2xpZW50KCkgJiYgIWNvbmZpZ3VyYXRpb24oKS5jbGllbnRXb3VsZEJlbmVmaXRGcm9tQXV0
b21hdGljUHJvY2Vzc1ByZXdhcm1pbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvaW9zL1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2lvcy9WaWV3R2VzdHVyZUNvbnRyb2xsZXJJT1MubW0KaW5kZXggZDE0ZGQ0Yzcy
YjgxZTQ1N2YxNmMwZDk5OGRiZjcyODRiMjg1ZDM3ZC4uMDNhYjBkNDJhMDdiMDgzZGE1OTZkMGJi
NTU5YmQ4Y2UzMDE0NDQ2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1ZpZXdHZXN0dXJlQ29udHJvbGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvVmlld0dlc3R1cmVDb250cm9sbGVySU9TLm1tCkBAIC0xODMsNyArMTgzLDcgQEAgdm9p
ZCBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmJlZ2luU3dpcGVHZXN0dXJlKF9VSU5hdmlnYXRpb25J
bnRlcmFjdGl2ZVRyYW5zaXRpb24KICAgICBtX3dlYlBhZ2VQcm94eUZvckJhY2tGb3J3YXJkTGlz
dEZvckN1cnJlbnRTd2lwZSA9IGFsdGVybmF0ZUJhY2tGb3J3YXJkTGlzdFNvdXJjZVBhZ2UgPyBh
bHRlcm5hdGVCYWNrRm9yd2FyZExpc3RTb3VyY2VQYWdlLmdldCgpIDogJm1fd2ViUGFnZVByb3h5
OwogCiAgICAgYXV0byYgYmFja0ZvcndhcmRMaXN0ID0gbV93ZWJQYWdlUHJveHlGb3JCYWNrRm9y
d2FyZExpc3RGb3JDdXJyZW50U3dpcGUtPmJhY2tGb3J3YXJkTGlzdCgpOwotICAgIGF1dG8gdGFy
Z2V0SXRlbSA9IG1ha2VSZWZQdHIoZGlyZWN0aW9uID09IFN3aXBlRGlyZWN0aW9uOjpCYWNrID8g
YmFja0ZvcndhcmRMaXN0LmJhY2tJdGVtKCkgOiBiYWNrRm9yd2FyZExpc3QuZm9yd2FyZEl0ZW0o
KSk7CisgICAgUmVmUHRyIHRhcmdldEl0ZW0gPSBkaXJlY3Rpb24gPT0gU3dpcGVEaXJlY3Rpb246
OkJhY2sgPyBiYWNrRm9yd2FyZExpc3QuYmFja0l0ZW0oKSA6IGJhY2tGb3J3YXJkTGlzdC5mb3J3
YXJkSXRlbSgpOwogICAgIGlmICghdGFyZ2V0SXRlbSkgewogICAgICAgICBSRUxFQVNFX0xPR19F
UlJPUihWaWV3R2VzdHVyZXMsICJGYWlsZWQgdG8gZmluZCAlcyBpdGVtIHdoZW4gYmVnaW5uaW5n
IHN3aXBlLiIsIGRpcmVjdGlvbiA9PSBTd2lwZURpcmVjdGlvbjo6QmFjayA/ICJiYWNrIiA6ICJm
b3J3YXJkIik7CiAgICAgICAgIGRpZEVuZEdlc3R1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XZWJDb250ZXh0TWVudVByb3h5TWFjLm1tIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KaW5kZXggM2JjMjUw
MzJmMzU1NmEzMTkyOGUxNWExYTBhODE3OTQyMzFjYTQ2My4uNzE1ZWY2MzNjNTMwODMxMGU5MzRj
ZWI0ZDJhNzE0N2UxODM2ODczYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
bWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvbWFjL1dlYkNvbnRleHRNZW51UHJveHlNYWMubW0KQEAgLTU0Niw3ICs1NDYsNyBAQCB2b2lk
IFdlYkNvbnRleHRNZW51UHJveHlNYWM6OmdldENvbnRleHRNZW51RnJvbUl0ZW1zKGNvbnN0IFZl
Y3RvcjxXZWJDb250ZXh0TWVudQogCiAgICAgICAgIFttZW51IHNldEl0ZW1BcnJheTpbc3BhcnNl
TWVudUl0ZW1zIGFsbE9iamVjdHNdXTsKIAotICAgICAgICBhdXRvIHBhZ2UgPSBtYWtlUmVmUHRy
KHdlYWtQYWdlLmdldCgpKTsKKyAgICAgICAgUmVmUHRyIHBhZ2UgeyB3ZWFrUGFnZS5nZXQoKSB9
OwogICAgICAgICBpZiAocGFnZSAmJiBpbWFnZUJpdG1hcCkgewogI2lmIEVOQUJMRShJTUFHRV9B
TkFMWVNJUykKICAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmluc2VydE9yVXBkYXRlUXVpY2tM
b29rSW1hZ2VJdGVtKGltYWdlVVJMLCBpbWFnZUJpdG1hcC5yZWxlYXNlTm9uTnVsbCgpLCBXVEZN
b3ZlKHF1aWNrTG9va0l0ZW1Ub0luc2VydElmTmVlZGVkKSwgc2hvdWxkVXBkYXRlUXVpY2tMb29r
SXRlbVRpdGxlKTsKQEAgLTU3NSw3ICs1NzUsNyBAQCB2b2lkIFdlYkNvbnRleHRNZW51UHJveHlN
YWM6Omluc2VydE9yVXBkYXRlUXVpY2tMb29rSW1hZ2VJdGVtKGNvbnN0IFVSTCYgaW1hZ2VVUgog
ICAgIGF1dG8gcGFnZSA9IG1ha2VSZWYoKnRoaXMtPnBhZ2UoKSk7CiAgICAgaWYgKHF1aWNrTG9v
a0l0ZW1Ub0luc2VydElmTmVlZGVkKSB7CiAgICAgICAgIHBhZ2UtPmNvbXB1dGVIYXNJbWFnZUFu
YWx5c2lzUmVzdWx0cyhpbWFnZVVSTCwgaW1hZ2VCaXRtYXAuZ2V0KCksIEltYWdlQW5hbHlzaXNU
eXBlOjpWaXN1YWxTZWFyY2gsIFt3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcXVpY2tM
b29rSXRlbVRvSW5zZXJ0SWZOZWVkZWQgPSBXVEZNb3ZlKCpxdWlja0xvb2tJdGVtVG9JbnNlcnRJ
Zk5lZWRlZCldIChib29sIGhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMpIG11dGFibGUgewotICAgICAg
ICAgICAgaWYgKGF1dG8gcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIod2Vha1RoaXMuZ2V0KCkp
OyBwcm90ZWN0ZWRUaGlzICYmIGhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMpIHsKKyAgICAgICAgICAg
IGlmIChSZWZQdHIgcHJvdGVjdGVkVGhpcyA9IHdlYWtUaGlzLmdldCgpOyBwcm90ZWN0ZWRUaGlz
ICYmIGhhc1Zpc3VhbFNlYXJjaFJlc3VsdHMpIHsKICAgICAgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5tX3F1aWNrTG9va1ByZXZpZXdBY3Rpdml0eSA9IFF1aWNrTG9va1ByZXZpZXdBY3Rpdml0
eTo6VmlzdWFsU2VhcmNoOwogICAgICAgICAgICAgICAgIFtwcm90ZWN0ZWRUaGlzLT5tX21lbnUg
YWRkSXRlbTpOU01lbnVJdGVtLnNlcGFyYXRvckl0ZW1dOwogICAgICAgICAgICAgICAgIFtwcm90
ZWN0ZWRUaGlzLT5tX21lbnUgYWRkSXRlbTpjcmVhdGVNZW51QWN0aW9uSXRlbShxdWlja0xvb2tJ
dGVtVG9JbnNlcnRJZk5lZWRlZCkuZ2V0KCldOwpAQCAtNTg2LDExICs1ODYsMTEgQEAgdm9pZCBX
ZWJDb250ZXh0TWVudVByb3h5TWFjOjppbnNlcnRPclVwZGF0ZVF1aWNrTG9va0ltYWdlSXRlbShj
b25zdCBVUkwmIGltYWdlVVIKIAogICAgIGlmIChzaG91bGRVcGRhdGVRdWlja0xvb2tJdGVtVGl0
bGUpIHsKICAgICAgICAgcGFnZS0+Y29tcHV0ZUhhc0ltYWdlQW5hbHlzaXNSZXN1bHRzKGltYWdl
VVJMLCBpbWFnZUJpdG1hcC5nZXQoKSwgSW1hZ2VBbmFseXNpc1R5cGU6OlZpc3VhbFNlYXJjaCwg
W3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCB3ZWFrUGFnZSA9IG1ha2VXZWFrUHRyKHBh
Z2UuZ2V0KCkpLCBpbWFnZVVSTCwgaW1hZ2VCaXRtYXAgPSBXVEZNb3ZlKGltYWdlQml0bWFwKV0g
KGJvb2wgaGFzVmlzdWFsU2VhcmNoUmVzdWx0cykgbXV0YWJsZSB7Ci0gICAgICAgICAgICBhdXRv
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHdlYWtUaGlzLmdldCgpKTsKKyAgICAgICAgICAg
IFJlZlB0ciBwcm90ZWN0ZWRUaGlzIHsgd2Vha1RoaXMuZ2V0KCkgfTsKICAgICAgICAgICAgIGlm
ICghcHJvdGVjdGVkVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAg
IGF1dG8gcGFnZSA9IG1ha2VSZWZQdHIod2Vha1BhZ2UuZ2V0KCkpOworICAgICAgICAgICAgUmVm
UHRyIHBhZ2UgeyB3ZWFrUGFnZS5nZXQoKSB9OwogICAgICAgICAgICAgaWYgKCFwYWdlKQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtNjAxLDExICs2MDEsMTEgQEAgdm9pZCBXZWJDb250
ZXh0TWVudVByb3h5TWFjOjppbnNlcnRPclVwZGF0ZVF1aWNrTG9va0ltYWdlSXRlbShjb25zdCBV
UkwmIGltYWdlVVIKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcGFnZS0+Y29tcHV0ZUhh
c0ltYWdlQW5hbHlzaXNSZXN1bHRzKGltYWdlVVJMLCBpbWFnZUJpdG1hcC5nZXQoKSwgSW1hZ2VB
bmFseXNpc1R5cGU6OlRleHQsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3ZWFrUGFn
ZV0gKGJvb2wgaGFzVGV4dCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgYXV0byBwcm90ZWN0
ZWRUaGlzID0gbWFrZVJlZlB0cih3ZWFrVGhpcy5nZXQoKSk7CisgICAgICAgICAgICAgICAgUmVm
UHRyIHByb3RlY3RlZFRoaXMgeyB3ZWFrVGhpcy5nZXQoKSB9OwogICAgICAgICAgICAgICAgIGlm
ICghcHJvdGVjdGVkVGhpcykKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICAgICAgaWYgKGF1dG8gcGFnZSA9IG1ha2VSZWZQdHIod2Vha1BhZ2UuZ2V0KCkpOyBwYWdl
ICYmIGhhc1RleHQpCisgICAgICAgICAgICAgICAgaWYgKFJlZlB0ciBwYWdlID0gd2Vha1BhZ2Uu
Z2V0KCk7IHBhZ2UgJiYgaGFzVGV4dCkKICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkVGhp
cy0+dXBkYXRlUXVpY2tMb29rQ29udGV4dE1lbnVJdGVtVGl0bGUoY29udGV4dE1lbnVJdGVtVGFn
UXVpY2tMb29rSW1hZ2VGb3JUZXh0U2VsZWN0aW9uKCkpOwogICAgICAgICAgICAgfSk7CiAgICAg
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9ncmFwaGlj
cy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9ncmFwaGljcy9SZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJveHkuY3BwCmluZGV4IDMx
ZmE2YzQzM2JmNjdiM2M1YjI5ZjE2YmEzZmNkODVhZDFhMWFhOTIuLmVjNzkzNDEwNmIxMWIzNjZj
Nzg4YzUzYmQ5YjI0MDk3OTY5YmQ5ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9HUFUvZ3JhcGhpY3MvUmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL2dyYXBoaWNzL1JlbW90ZVJlbmRlcmluZ0JhY2tl
bmRQcm94eS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB1aW50NjRfdCBSZW1vdGVSZW5kZXJpbmdC
YWNrZW5kUHJveHk6Om1lc3NhZ2VTZW5kZXJEZXN0aW5hdGlvbklEKCkgY29uc3QKIAogUmVtb3Rl
UmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRSZWNlaXZlQmFja2VuZENyZWF0aW9uUmVzdWx0IFJl
bW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZENyZWF0ZUltYWdlQnVmZmVyQmFj
a2VuZCgpCiB7Ci0gICAgYXV0byBjb25uZWN0aW9uID0gbWFrZVJlZlB0cihtZXNzYWdlU2VuZGVy
Q29ubmVjdGlvbigpKTsKKyAgICBSZWZQdHIgY29ubmVjdGlvbiA9IG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCk7CiAgICAgaWYgKCFjb25uZWN0aW9uLT53YWl0Rm9yQW5kRGlzcGF0Y2hJbW1lZGlh
dGVseTxNZXNzYWdlczo6UmVtb3RlUmVuZGVyaW5nQmFja2VuZFByb3h5OjpEaWRDcmVhdGVJbWFn
ZUJ1ZmZlckJhY2tlbmQ+KHJlbmRlcmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcywgSVBDOjpX
YWl0Rm9yT3B0aW9uOjpJbnRlcnJ1cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpKQogICAg
ICAgICByZXR1cm4gRGlkUmVjZWl2ZUJhY2tlbmRDcmVhdGlvblJlc3VsdDo6VGltZW91dE9ySVBD
RmFpbHVyZTsKICAgICByZXR1cm4gRGlkUmVjZWl2ZUJhY2tlbmRDcmVhdGlvblJlc3VsdDo6UmVj
ZWl2ZWRBbnlSZXNwb25zZTsKQEAgLTEyNyw3ICsxMjcsNyBAQCBSZW1vdGVSZW5kZXJpbmdCYWNr
ZW5kUHJveHk6OkRpZFJlY2VpdmVCYWNrZW5kQ3JlYXRpb25SZXN1bHQgUmVtb3RlUmVuZGVyaW5n
QmFjawogCiBib29sIFJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6d2FpdEZvckRpZEZsdXNo
KCkKIHsKLSAgICBhdXRvIGNvbm5lY3Rpb24gPSBtYWtlUmVmUHRyKG1lc3NhZ2VTZW5kZXJDb25u
ZWN0aW9uKCkpOworICAgIFJlZlB0ciBjb25uZWN0aW9uID0gbWVzc2FnZVNlbmRlckNvbm5lY3Rp
b24oKTsKICAgICByZXR1cm4gY29ubmVjdGlvbi0+d2FpdEZvckFuZERpc3BhdGNoSW1tZWRpYXRl
bHk8TWVzc2FnZXM6OlJlbW90ZVJlbmRlcmluZ0JhY2tlbmRQcm94eTo6RGlkRmx1c2g+KHJlbmRl
cmluZ0JhY2tlbmRJZGVudGlmaWVyKCksIDFfcywgSVBDOjpXYWl0Rm9yT3B0aW9uOjpJbnRlcnJ1
cHRXYWl0aW5nSWZTeW5jTWVzc2FnZUFycml2ZXMpOwogfQogCkBAIC0zOTcsNyArMzk3LDcgQEAg
UmVmUHRyPERpc3BsYXlMaXN0V3JpdGVySGFuZGxlPiBSZW1vdGVSZW5kZXJpbmdCYWNrZW5kUHJv
eHk6OmZpbmRSZXVzYWJsZURpc3BsYXkKIAogICAgIGF1dG8gbGVhc3RSZWNlbnRseVVzZWRJZGVu
dGlmaWVyID0gbV9pZGVudGlmaWVyc09mUmV1c2FibGVIYW5kbGVzLmZpcnN0KCk7CiAgICAgaWYg
KGxlYXN0UmVjZW50bHlVc2VkSWRlbnRpZmllciAhPSBtb3N0UmVjZW50bHlVc2VkSGFuZGxlLT5p
ZGVudGlmaWVyKCkpIHsKLSAgICAgICAgYXV0byBoYW5kbGUgPSBtYWtlUmVmUHRyKG1fc2hhcmVk
RGlzcGxheUxpc3RIYW5kbGVzLmdldChsZWFzdFJlY2VudGx5VXNlZElkZW50aWZpZXIpKTsKKyAg
ICAgICAgUmVmUHRyIGhhbmRsZSA9IG1fc2hhcmVkRGlzcGxheUxpc3RIYW5kbGVzLmdldChsZWFz
dFJlY2VudGx5VXNlZElkZW50aWZpZXIpOwogICAgICAgICBpZiAoaGFuZGxlLT5tb3ZlV3JpdGFi
bGVPZmZzZXRUb1N0YXJ0SWZQb3NzaWJsZSgpICYmIGhhbmRsZS0+YXZhaWxhYmxlQ2FwYWNpdHko
KSA+PSBjYXBhY2l0eSkKICAgICAgICAgICAgIHJldHVybiBoYW5kbGU7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBs
YXllclByaXZhdGVSZW1vdGUuY3BwCmluZGV4IGUwNmY0ZjdlM2FjODFmMGQ1Y2ZhNzI4Mjk2ZTMz
YWRjZTYyM2MzOTkuLmUyMzk2Y2Y1NWZjZDQ3YjEyMzYxMGE5MGFlYWZkNDRkNmQzZWNkZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQ
cml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlh
L01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBNZWRpYVBs
YXllclByaXZhdGVSZW1vdGU6On5NZWRpYVBsYXllclByaXZhdGVSZW1vdGUoKQogCiB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cHJlcGFyZUZvclBsYXliYWNrKGJvb2wgcHJpdmF0ZU1v
ZGUsIE1lZGlhUGxheWVyOjpQcmVsb2FkIHByZWxvYWQsIGJvb2wgcHJlc2VydmVzUGl0Y2gsIGJv
b2wgcHJlcGFyZSkKIHsKLSAgICBhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0
KCkpOworICAgIFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKTsKICAgICBpZiAoIXBsYXll
cikKICAgICAgICAgcmV0dXJuOwogCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OnByZXBhcmVGb3JQbGF5YmFjayhib29sIHByaXZhdGVNb2RlLCBNZWRp
YVBsYXllcjoKICAgICAgICAgaWYgKCFpbmxpbmVMYXllckhvc3RpbmdDb250ZXh0SWQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRyKG1fcGxh
eWVyLmdldCgpKTsKKyAgICAgICAgUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpOwogICAg
ICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTkyLDcgKzE5Miw3
IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpsb2FkKGNvbnN0IFVSTCYgdXJsLCBj
b25zdCBDb250ZW50VHlwZSYgY29udGVudFR5CiAgICAgICAgIGlmICghY3JlYXRlRXh0ZW5zaW9u
KCkpIHsKICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiVW5hYmxlIHRvIGNyZWF0ZSBzYW5kYm94
IGV4dGVuc2lvbiBoYW5kbGUgZm9yIEdQVVByb2Nlc3MgdXJsLlxuIik7CiAgICAgICAgICAgICBt
X2NhY2hlZFN0YXRlLm5ldHdvcmtTdGF0ZSA9IE1lZGlhUGxheWVyOjpOZXR3b3JrU3RhdGU6OkZv
cm1hdEVycm9yOwotICAgICAgICAgICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3Bs
YXllci5nZXQoKSkpCisgICAgICAgICAgICBpZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdl
dCgpKQogICAgICAgICAgICAgICAgIHBsYXllci0+bmV0d29ya1N0YXRlQ2hhbmdlZCgpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IENvbnRlbnRU
eXBlJiBjb250ZW50VHkKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpOwor
ICAgICAgICBSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCk7CiAgICAgICAgIGlmICghcGxh
eWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0zMzcsMjEgKzMzNywyMSBAQCBNZWRpYVBs
YXllcjo6TW92aWVMb2FkVHlwZSBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om1vdmllTG9hZFR5
cGUoKSBjb25zdAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Om5ldHdvcmtTdGF0ZUNo
YW5nZWQoUmVtb3RlTWVkaWFQbGF5ZXJTdGF0ZSYmIHN0YXRlKQogewogICAgIHVwZGF0ZUNhY2hl
ZFN0YXRlKFdURk1vdmUoc3RhdGUpKTsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRy
KG1fcGxheWVyLmdldCgpKSkKKyAgICBpZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgp
KQogICAgICAgICBwbGF5ZXItPm5ldHdvcmtTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnNldFJlYWR5U3RhdGUoTWVkaWFQbGF5ZXI6OlJlYWR5U3Rh
dGUgcmVhZHlTdGF0ZSkKIHsKICAgICBtX2NhY2hlZFN0YXRlLnJlYWR5U3RhdGUgPSByZWFkeVN0
YXRlOwotICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpKQor
ICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXllci0+
cmVhZHlTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnJlYWR5U3RhdGVDaGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKIHsKICAg
ICB1cGRhdGVDYWNoZWRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7Ci0gICAgaWYgKGF1dG8gcGxheWVy
ID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHBsYXllciA9
IG1fcGxheWVyLmdldCgpKSB7CiAgICAgICAgIHBsYXllci0+cmVhZHlTdGF0ZUNoYW5nZWQoKTsK
ICAgICAgICAgYm9vbCByZW5kZXJpbmdDYW5CZUFjY2VsZXJhdGVkID0gcGxheWVyLT5yZW5kZXJp
bmdDYW5CZUFjY2VsZXJhdGVkKCk7CiAgICAgICAgIGlmIChtX3JlbmRlcmluZ0NhbkJlQWNjZWxl
cmF0ZWQgIT0gcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCkKQEAgLTM2MiwxNCArMzYyLDE0IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZWFkeVN0YXRlQ2hhbmdlZChSZW1vdGVN
ZWRpYVBsYXllclN0YXRlJiYgc3RhdGUpCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6
dm9sdW1lQ2hhbmdlZChkb3VibGUgdm9sdW1lKQogewogICAgIG1fdm9sdW1lID0gdm9sdW1lOwot
ICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpKQorICAgIGlm
IChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXllci0+dm9sdW1l
Q2hhbmdlZCh2b2x1bWUpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bXV0
ZUNoYW5nZWQoYm9vbCBtdXRlZCkKIHsKICAgICBtX211dGVkID0gbXV0ZWQ7Ci0gICAgaWYgKGF1
dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSkpCisgICAgaWYgKFJlZlB0ciBw
bGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKICAgICAgICAgcGxheWVyLT5tdXRlQ2hhbmdlZChtdXRl
ZCk7CiB9CiAKQEAgLTM3NywyMSArMzc3LDIxIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjp0aW1lQ2hhbmdlZChSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYgc3RhdGUpCiB7CiAgICAg
bV9zZWVraW5nID0gZmFsc2U7CiAgICAgdXBkYXRlQ2FjaGVkU3RhdGUoV1RGTW92ZShzdGF0ZSkp
OwotICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpKQorICAg
IGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXllci0+dGlt
ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmR1cmF0aW9u
Q2hhbmdlZChSZW1vdGVNZWRpYVBsYXllclN0YXRlJiYgc3RhdGUpCiB7CiAgICAgdXBkYXRlQ2Fj
aGVkU3RhdGUoV1RGTW92ZShzdGF0ZSkpOwotICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQ
dHIobV9wbGF5ZXIuZ2V0KCkpKQorICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0
KCkpCiAgICAgICAgIHBsYXllci0+ZHVyYXRpb25DaGFuZ2VkKCk7CiB9CiAKIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlOjpyYXRlQ2hhbmdlZChkb3VibGUgcmF0ZSkKIHsKICAgICBtX3Jh
dGUgPSByYXRlOwotICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0
KCkpKQorICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBs
YXllci0+cmF0ZUNoYW5nZWQoKTsKIH0KIApAQCAtNDAwLDI4ICs0MDAsMjggQEAgdm9pZCBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGU6OnBsYXliYWNrU3RhdGVDaGFuZ2VkKGJvb2wgcGF1c2VkLCBN
ZWRpYVRpbWUmJiBtZWQKICAgICBtX2NhY2hlZFN0YXRlLnBhdXNlZCA9IHBhdXNlZDsKICAgICBt
X2NhY2hlZE1lZGlhVGltZSA9IG1lZGlhVGltZTsKICAgICBtX2NhY2hlZE1lZGlhVGltZVF1ZXJ5
VGltZSA9IHdhbGxUaW1lOwotICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5
ZXIuZ2V0KCkpKQorICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAg
ICAgIHBsYXllci0+cGxheWJhY2tTdGF0ZUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXll
clByaXZhdGVSZW1vdGU6OmVuZ2luZUZhaWxlZFRvTG9hZChsb25nIHBsYXRmb3JtRXJyb3JDb2Rl
KQogewogICAgIG1fcGxhdGZvcm1FcnJvckNvZGUgPSBwbGF0Zm9ybUVycm9yQ29kZTsKLSAgICBp
ZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRyKG1fcGxheWVyLmdldCgpKSkKKyAgICBpZiAoUmVm
UHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpKQogICAgICAgICBwbGF5ZXItPnJlbW90ZUVuZ2lu
ZUZhaWxlZFRvTG9hZCgpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y2hh
cmFjdGVyaXN0aWNDaGFuZ2VkKFJlbW90ZU1lZGlhUGxheWVyU3RhdGUmJiBzdGF0ZSkKIHsKICAg
ICB1cGRhdGVDYWNoZWRTdGF0ZShXVEZNb3ZlKHN0YXRlKSk7Ci0gICAgaWYgKGF1dG8gcGxheWVy
ID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSkpCisgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBt
X3BsYXllci5nZXQoKSkKICAgICAgICAgcGxheWVyLT5jaGFyYWN0ZXJpc3RpY0NoYW5nZWQoKTsK
IH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OnNpemVDaGFuZ2VkKFdlYkNvcmU6
OkZsb2F0U2l6ZSBuYXR1cmFsU2l6ZSkKIHsKICAgICBtX2NhY2hlZFN0YXRlLm5hdHVyYWxTaXpl
ID0gbmF0dXJhbFNpemU7Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXll
ci5nZXQoKSkpCisgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKICAgICAg
ICAgcGxheWVyLT5zaXplQ2hhbmdlZCgpOwogfQogCkBAIC00MzUsMTQgKzQzNSwxNCBAQCB2b2lk
IE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6Y3VycmVudFRpbWVDaGFuZ2VkKGNvbnN0IE1lZGlh
VGltZSYgbWVkaWFUaW1lLCBjbwogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OmZpcnN0
VmlkZW9GcmFtZUF2YWlsYWJsZSgpCiB7CiAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUik7Ci0g
ICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSkpCisgICAgaWYg
KFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKICAgICAgICAgcGxheWVyLT5maXJzdFZp
ZGVvRnJhbWVBdmFpbGFibGUoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6
OnJlbmRlcmluZ01vZGVDaGFuZ2VkKCkKIHsKICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSKTsK
LSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRyKG1fcGxheWVyLmdldCgpKSkKKyAgICBp
ZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpKQogICAgICAgICBwbGF5ZXItPnJlbmRl
cmluZ01vZGVDaGFuZ2VkKCk7CiB9CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQCBib29sIE1lZGlhUGxh
eWVyUHJpdmF0ZVJlbW90ZTo6c3VwcG9ydHNBY2NlbGVyYXRlZFJlbmRlcmluZygpIGNvbnN0CiAK
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphY2NlbGVyYXRlZFJlbmRlcmluZ1N0YXRl
Q2hhbmdlZCgpCiB7Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXllci5n
ZXQoKSkpIHsKKyAgICBpZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpKSB7CiAgICAg
ICAgIG1fcmVuZGVyaW5nQ2FuQmVBY2NlbGVyYXRlZCA9IHBsYXllci0+cmVuZGVyaW5nQ2FuQmVB
Y2NlbGVyYXRlZCgpOwogICAgICAgICBjb25uZWN0aW9uKCkuc2VuZChNZXNzYWdlczo6UmVtb3Rl
TWVkaWFQbGF5ZXJQcm94eTo6QWNjZWxlcmF0ZWRSZW5kZXJpbmdTdGF0ZUNoYW5nZWQobV9yZW5k
ZXJpbmdDYW5CZUFjY2VsZXJhdGVkKSwgbV9pZCk7CiAgICAgfQpAQCAtNTczLDcgKzU3Myw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphZGRSZW1vdGVBdWRpb1RyYWNrKFRyYWNr
UHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAKLSAgICBp
ZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRyKG1fcGxheWVyLmdldCgpKSkKKyAgICBpZiAoUmVm
UHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpKQogICAgICAgICBtX3BsYXllci0+YWRkQXVkaW9U
cmFjayhhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlKTsKIH0KIApAQCAtNTgyLDcgKzU4Miw3IEBA
IHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpyZW1vdmVSZW1vdGVBdWRpb1RyYWNrKFRy
YWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpCiAgICAgQVNTRVJUKG1fYXVkaW9UcmFja3MuY29udGFp
bnMoaWRlbnRpZmllcikpOwogCiAgICAgaWYgKGF1dG8qIHRyYWNrID0gbV9hdWRpb1RyYWNrcy5n
ZXQoaWRlbnRpZmllcikpIHsKLSAgICAgICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0ciht
X3BsYXllci5nZXQoKSkpCisgICAgICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0
KCkpCiAgICAgICAgICAgICBwbGF5ZXItPnJlbW92ZUF1ZGlvVHJhY2soKnRyYWNrKTsKICAgICAg
ICAgbV9hdWRpb1RyYWNrcy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQpAQCAtNjExLDcgKzYx
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphZGRSZW1vdGVUZXh0VHJhY2so
VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciBpCiAgICAgICAgIHJldHVybjsKICNlbmRpZgog
Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSkpCisgICAg
aWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKICAgICAgICAgcGxheWVyLT5hZGRU
ZXh0VHJhY2soYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTYyMCw3ICs2MjAs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVtb3RlVGV4dFRyYWNr
KFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZQogICAgIEFTU0VSVChtX3RleHRUcmFja3MuY29u
dGFpbnMoaWRlbnRpZmllcikpOwogCiAgICAgaWYgKGF1dG8qIHRyYWNrID0gbV90ZXh0VHJhY2tz
LmdldChpZGVudGlmaWVyKSkgewotICAgICAgICBpZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRy
KG1fcGxheWVyLmdldCgpKSkKKyAgICAgICAgaWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5n
ZXQoKSkKICAgICAgICAgICAgIHBsYXllci0+cmVtb3ZlVGV4dFRyYWNrKCp0cmFjayk7CiAgICAg
ICAgIG1fdGV4dFRyYWNrcy5yZW1vdmUoaWRlbnRpZmllcik7CiAgICAgfQpAQCAtNzMxLDcgKzcz
MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjphZGRSZW1vdGVWaWRlb1RyYWNr
KFRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIKICAgICAgICAgcmV0dXJuOwogI2VuZGlmCiAK
LSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRyKG1fcGxheWVyLmdldCgpKSkKKyAgICBp
ZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpKQogICAgICAgICBwbGF5ZXItPmFkZFZp
ZGVvVHJhY2soYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSk7CiB9CiAKQEAgLTc0MCw3ICs3NDAs
NyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlUmVtb3RlVmlkZW9UcmFj
ayhUcmFja1ByaXZhdGVSZW1vdGVJZGVudGlmaQogICAgIEFTU0VSVChtX3ZpZGVvVHJhY2tzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKIAogICAgIGlmIChhdXRvKiB0cmFjayA9IG1fdmlkZW9UcmFj
a3MuZ2V0KGlkZW50aWZpZXIpKSB7Ci0gICAgICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQ
dHIobV9wbGF5ZXIuZ2V0KCkpKQorICAgICAgICBpZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVy
LmdldCgpKQogICAgICAgICAgICAgcGxheWVyLT5yZW1vdmVWaWRlb1RyYWNrKCp0cmFjayk7CiAg
ICAgICAgIG1fdmlkZW9UcmFja3MucmVtb3ZlKGlkZW50aWZpZXIpOwogICAgIH0KQEAgLTc2Myw3
ICs3NjMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwm
IHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRUeQogICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIGF1dG8gcGxheWVy
ID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHIgcGxheWVy
ID0gbV9wbGF5ZXIuZ2V0KCk7CiAgICAgICAgICAgICBpZiAoIXBsYXllcikKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTc3OSw3ICs3NzksNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9hZChjb25zdCBVUkwmIHVybCwgY29uc3QgQ29udGVudFR5cGUmIGNvbnRlbnRU
eQogICAgICAgICBpZiAoIXdlYWtUaGlzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSk7CisgICAgICAgIFJlZlB0
ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKTsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKQEAgLTc5Niw3ICs3OTYsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0
ZVJlbW90ZTo6bG9hZChNZWRpYVN0cmVhbVByaXZhdGUmKQogICAgICAgICBpZiAoIXdlYWtUaGlz
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGF1dG8gcGxheWVyID0gbWFrZVJlZlB0
cihtX3BsYXllci5nZXQoKSk7CisgICAgICAgIFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQo
KTsKICAgICAgICAgaWYgKCFwbGF5ZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTEwMjIs
NyArMTAyMiw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjpzZXRXaXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogdm9pZCBNZWRpYVBsYXllclByaXZh
dGVSZW1vdGU6OmN1cnJlbnRQbGF5YmFja1RhcmdldElzV2lyZWxlc3NDaGFuZ2VkKGJvb2wgaXND
dXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVzcykKIHsKICAgICBtX2lzQ3VycmVudFBsYXliYWNr
VGFyZ2V0V2lyZWxlc3MgPSBpc0N1cnJlbnRQbGF5YmFja1RhcmdldFdpcmVsZXNzOwotICAgIGlm
IChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpKQorICAgIGlmIChSZWZQ
dHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXllci0+Y3VycmVudFBsYXli
YWNrVGFyZ2V0SXNXaXJlbGVzc0NoYW5nZWQoaXNDdXJyZW50UGxheWJhY2tUYXJnZXRXaXJlbGVz
cyk7CiB9CiAKQEAgLTExNTYsNyArMTE1Niw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVt
b3RlOjprZXlBZGRlZCgpCiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlOjptZWRpYVBs
YXllcktleU5lZWRlZChJUEM6OkRhdGFSZWZlcmVuY2UmJiBtZXNzYWdlKQogewotICAgIGlmIChh
dXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpKQorICAgIGlmIChSZWZQdHIg
cGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXllci0+a2V5TmVlZGVkKFVpbnQ4
QXJyYXk6OmNyZWF0ZShtZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpLnB0cigpKTsKIH0K
ICNlbmRpZgpAQCAtMTE4MywxNCArMTE4MywxNCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJl
bW90ZTo6YXR0ZW1wdFRvRGVjcnlwdFdpdGhJbnN0YW5jZShDRE1JbnN0YW5jZSYgaW5zdGFuYwog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6OndhaXRpbmdGb3JLZXlDaGFuZ2VkKGJvb2wg
d2FpdGluZ0ZvcktleSkKIHsKICAgICBtX3dhaXRpbmdGb3JLZXkgPSB3YWl0aW5nRm9yS2V5Owot
ICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkpKQorICAgIGlm
IChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXllci0+d2FpdGlu
Z0ZvcktleUNoYW5nZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVSZW1vdGU6Omlu
aXRpYWxpemF0aW9uRGF0YUVuY291bnRlcmVkKGNvbnN0IFN0cmluZyYgaW5pdERhdGFUeXBlLCBJ
UEM6OkRhdGFSZWZlcmVuY2UmJiBpbml0RGF0YSkKIHsKICAgICBhdXRvIGluaXREYXRhQnVmZmVy
ID0gQXJyYXlCdWZmZXI6OmNyZWF0ZShpbml0RGF0YS5kYXRhKCksIGluaXREYXRhLnNpemUoKSk7
Ci0gICAgaWYgKGF1dG8gcGxheWVyID0gbWFrZVJlZlB0cihtX3BsYXllci5nZXQoKSkpCisgICAg
aWYgKFJlZlB0ciBwbGF5ZXIgPSBtX3BsYXllci5nZXQoKSkKICAgICAgICAgcGxheWVyLT5pbml0
aWFsaXphdGlvbkRhdGFFbmNvdW50ZXJlZChpbml0RGF0YVR5cGUsIFdURk1vdmUoaW5pdERhdGFC
dWZmZXIpKTsKIH0KIApAQCAtMTM4MSwyMCArMTM4MSwyMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZTo6cmVtb3ZlUmVzb3VyY2UoUmVtb3RlTWVkaWFSZXNvdXJjZUlkZW50aWZpZXIg
cmVtbwogCiB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZTo6cmVzb3VyY2VOb3RTdXBwb3J0
ZWQoKQogewotICAgIGlmIChhdXRvIHBsYXllciA9IG1ha2VSZWZQdHIobV9wbGF5ZXIuZ2V0KCkp
KQorICAgIGlmIChSZWZQdHIgcGxheWVyID0gbV9wbGF5ZXIuZ2V0KCkpCiAgICAgICAgIHBsYXll
ci0+cmVzb3VyY2VOb3RTdXBwb3J0ZWQoKTsKIH0KIAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVS
ZW1vdGU6OmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFuZ2VkKCkKIHsKLSAgICBpZiAoYXV0byBwbGF5
ZXIgPSBtYWtlUmVmUHRyKG1fcGxheWVyLmdldCgpKSkKKyAgICBpZiAoUmVmUHRyIHBsYXllciA9
IG1fcGxheWVyLmdldCgpKQogICAgICAgICBwbGF5ZXItPmFjdGl2ZVNvdXJjZUJ1ZmZlcnNDaGFu
Z2VkKCk7CiB9CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVSZW1vdGU6OmdldFJhd0Nvb2tpZXMoY29uc3QgVVJMJiB1cmwsIFdlYkNvcmU6Ok1lZGlh
UGxheWVyQ2xpZW50OjpHZXRSYXdDb29raWVzQ2FsbGJhY2smJiBjb21wbGV0aW9uSGFuZGxlcikg
Y29uc3QKIHsKLSAgICBpZiAoYXV0byBwbGF5ZXIgPSBtYWtlUmVmUHRyKG1fcGxheWVyLmdldCgp
KSkKKyAgICBpZiAoUmVmUHRyIHBsYXllciA9IG1fcGxheWVyLmdldCgpKQogICAgICAgICBwbGF5
ZXItPmdldFJhd0Nvb2tpZXModXJsLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAj
ZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2VicnRjL01l
ZGlhUmVjb3JkZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvd2Vi
cnRjL01lZGlhUmVjb3JkZXJQcml2YXRlLmNwcAppbmRleCBhN2RhYWUxZDc4ZmEyMGU1MmViMDQx
ZWUxMjJmYzA4ZjBkNmU2MjkyLi45N2ZlNGE1MTRmMGFjZDc4NDA2Y2QwYjcwNDJhMzUzNzBjZjhk
NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL3dlYnJ0Yy9NZWRp
YVJlY29yZGVyUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS93
ZWJydGMvTWVkaWFSZWNvcmRlclByaXZhdGUuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgTWVk
aWFSZWNvcmRlclByaXZhdGU6OnN0YXJ0UmVjb3JkaW5nKFN0YXJ0UmVjb3JkaW5nQ2FsbGJhY2sm
JiBjYWxsYmFjaykKICAgICBpZiAoc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaykKICAgICAgICAg
bV9yaW5nQnVmZmVyID0gbWFrZVVuaXF1ZTxDQVJpbmdCdWZmZXI+KG1ha2VVbmlxdWVSZWY8U2hh
cmVkUmluZ0J1ZmZlclN0b3JhZ2U+KHN0ZDo6YmluZCgmTWVkaWFSZWNvcmRlclByaXZhdGU6OnN0
b3JhZ2VDaGFuZ2VkLCB0aGlzLCBzdGQ6OnBsYWNlaG9sZGVyczo6XzEsIHN0ZDo6cGxhY2Vob2xk
ZXJzOjpfMiwgc3RkOjpwbGFjZWhvbGRlcnM6Ol8zKSkpOwogCi0gICAgbV9jb25uZWN0aW9uLT5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OlJlbW90ZU1lZGlhUmVjb3JkZXJNYW5hZ2VyOjpD
cmVhdGVSZWNvcmRlciB7IG1faWRlbnRpZmllciwgISFzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNr
LCAhIXNlbGVjdGVkVHJhY2tzLnZpZGVvVHJhY2ssIG1fb3B0aW9ucyB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgYXVkaW9UcmFjayA9IG1ha2VSZWZQdHIoc2VsZWN0ZWRU
cmFja3MuYXVkaW9UcmFjayksIHZpZGVvVHJhY2sgPSBtYWtlUmVmUHRyKHNlbGVjdGVkVHJhY2tz
LnZpZGVvVHJhY2spLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShhdXRvJiYgZXhjZXB0
aW9uLCBTdHJpbmcmJiBtaW1lVHlwZSwgdW5zaWduZWQgYXVkaW9CaXRSYXRlLCB1bnNpZ25lZCB2
aWRlb0JpdFJhdGUpIG11dGFibGUgeworICAgIG1fY29ubmVjdGlvbi0+c2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpSZW1vdGVNZWRpYVJlY29yZGVyTWFuYWdlcjo6Q3JlYXRlUmVjb3JkZXIg
eyBtX2lkZW50aWZpZXIsICEhc2VsZWN0ZWRUcmFja3MuYXVkaW9UcmFjaywgISFzZWxlY3RlZFRy
YWNrcy52aWRlb1RyYWNrLCBtX29wdGlvbnMgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQ
dHIodGhpcyksIGF1ZGlvVHJhY2sgPSBSZWZQdHIgeyBzZWxlY3RlZFRyYWNrcy5hdWRpb1RyYWNr
IH0sIHZpZGVvVHJhY2sgPSBSZWZQdHIgeyBzZWxlY3RlZFRyYWNrcy52aWRlb1RyYWNrIH0sIGNh
bGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8mJiBleGNlcHRpb24sIFN0cmluZyYmIG1p
bWVUeXBlLCB1bnNpZ25lZCBhdWRpb0JpdFJhdGUsIHVuc2lnbmVkIHZpZGVvQml0UmF0ZSkgbXV0
YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH0sIDAsIDApOwogICAgICAgICAgICAgcmV0dXJu
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RP
TS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKaW5kZXgg
NjQ5OTFiYjJkYTI4ZGY3ZWE2MjliMDhlZTFiYzZiNTJhYTE0Y2RkMi4uOTc1MjlmYzFhYzM5MjI5
MzVkOTk1YzJmYzVjYWQ5NGIxYmI2NTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVk
QnVuZGxlUmFuZ2VIYW5kbGUuY3BwCkBAIC0xMTcsOSArMTE3LDkgQEAgUmVmUHRyPFdlYkltYWdl
PiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKFNuYXBzaG90T3B0aW9u
cyBvcHRpb24KIHsKICAgICBhdXRvIHJhbmdlID0gbWFrZVNpbXBsZVJhbmdlKG1fcmFuZ2UpOwog
Ci0gICAgYXV0byBkb2N1bWVudCA9IG1ha2VSZWYocmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKSk7Cisg
ICAgUmVmIGRvY3VtZW50ID0gcmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKTsKIAotICAgIGF1dG8gZnJh
bWUgPSBtYWtlUmVmUHRyKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBk
b2N1bWVudC0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9h
ZGVyU3RyYXRlZ3kuY3BwCmluZGV4IGRhMDhmZGE5NDBhMzRmZjJmYTZhMDA2ZDY1ZGFhMWE2Yzc2
ZDkwOWYuLjdjMGM0NjIyMmNhNmE4MzZmZGM3OWNkMzI5MDhjMmRiZmFiOTUxZDIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVn
eS5jcHAKQEAgLTIzNiw4ICsyMzYsOCBAQCB2b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVs
ZUxvYWQoUmVzb3VyY2VMb2FkZXImIHJlc291cmNlTG9hZGVyLCBDYWNoZWRSZXNvdQogCiAjaWYg
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogICAgICAgICBpZiAoIXJlc291cmNlTG9hZGVyLm9wdGlv
bnMoKS5zZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRlbnRpZmllciAmJiBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25XZWJLaXQ6OnNob3VsZEludGVyY2VwdFJlcXVlc3QocmVzb3VyY2VMb2FkZXIu
ZnJhbWUoKSwgcmVzb3VyY2VMb2FkZXIucmVxdWVzdCgpKSkgewotICAgICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uV2ViS2l0OjppbnRlcmNlcHRSZXF1ZXN0KHJlc291cmNlTG9hZGVy
LCBbdGhpcywgcHJvdGVjdGVkUmVzb3VyY2VMb2FkZXIgPSBtYWtlUmVmUHRyKCZyZXNvdXJjZUxv
YWRlciksIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hU
VFBSZWRpcmVjdCwgcmVzb3VyY2VdKGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgewot
ICAgICAgICAgICAgICAgIHNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcygqcHJvdGVjdGVk
UmVzb3VyY2VMb2FkZXIsIHJlcXVlc3QsIHRyYWNraW5nUGFyYW1ldGVycywgc2hvdWxkQ2xlYXJS
ZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdCwgbWF4aW11bUJ1ZmZlcmluZ1RpbWUocmVzb3Vy
Y2UpKTsKKyAgICAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdDo6aW50ZXJj
ZXB0UmVxdWVzdChyZXNvdXJjZUxvYWRlciwgW3RoaXMsIHByb3RlY3RlZFJlc291cmNlTG9hZGVy
ID0gUmVmIHsgcmVzb3VyY2VMb2FkZXIgfSwgdHJhY2tpbmdQYXJhbWV0ZXJzLCBzaG91bGRDbGVh
clJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0LCByZXNvdXJjZV0oY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KSB7CisgICAgICAgICAgICAgICAgc2NoZWR1bGVMb2FkRnJvbU5ldHdv
cmtQcm9jZXNzKHByb3RlY3RlZFJlc291cmNlTG9hZGVyLCByZXF1ZXN0LCB0cmFja2luZ1BhcmFt
ZXRlcnMsIHNob3VsZENsZWFyUmVmZXJyZXJPbkhUVFBTVG9IVFRQUmVkaXJlY3QsIG1heGltdW1C
dWZmZXJpbmdUaW1lKHJlc291cmNlKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQpAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgV2ViTG9hZGVyU3RyYXRl
Z3k6OnNjaGVkdWxlTG9hZEZyb21OZXR3b3JrUHJvY2VzcyhSZXNvdXJjZUxvYWRlciYgcmVzb3Vy
Y2VMCiAgICAgaWYgKHJlc291cmNlTG9hZGVyLm9wdGlvbnMoKS5tb2RlID09IEZldGNoT3B0aW9u
czo6TW9kZTo6TmF2aWdhdGUpIHsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4+IGZyYW1lQW5jZXN0b3JPcmlnaW5zOwogICAgICAgICBmb3IgKGF1dG8qIGZyYW1lID0gcmVz
b3VyY2VMb2FkZXIuZnJhbWUoKS0+dHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnBhcmVudCgpKQotICAgICAgICAgICAgZnJhbWVBbmNlc3Rvck9yaWdpbnMuYXBw
ZW5kKG1ha2VSZWZQdHIoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKTsKKyAg
ICAgICAgICAgIGZyYW1lQW5jZXN0b3JPcmlnaW5zLmFwcGVuZCgmZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBsb2FkUGFyYW1ldGVycy5mcmFtZUFuY2VzdG9y
T3JpZ2lucyA9IFdURk1vdmUoZnJhbWVBbmNlc3Rvck9yaWdpbnMpOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9X
ZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcAppbmRleCA5M2Y1NWQ1ZjUxZTBmZjdkODBmYjBmZjdm
NDNmMmNlZDk5OTQ4MzA0Li4xODg1MjE2ZTAzNTg5MGMxZDBkMzA2YTY2OTlmMDJhYzMxMGZkNTZj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25NYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMjAzLDcgKzIwMyw3IEBA
IHZvaWQgV2ViTm90aWZpY2F0aW9uTWFuYWdlcjo6Y2xlYXJOb3RpZmljYXRpb25zKFdlYkNvcmU6
OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqCiB2b2lkIFdlYk5vdGlmaWNhdGlvbk1hbmFnZXI6OmRp
ZERlc3Ryb3lOb3RpZmljYXRpb24oTm90aWZpY2F0aW9uKiBub3RpZmljYXRpb24sIFdlYlBhZ2Uq
IHBhZ2UpCiB7CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgYXV0byBwcm90ZWN0ZWRO
b3RpZmljYXRpb24gPSBtYWtlUmVmUHRyKG5vdGlmaWNhdGlvbik7CisgICAgUmVmUHRyIHByb3Rl
Y3RlZE5vdGlmaWNhdGlvbiB7IG5vdGlmaWNhdGlvbiB9OwogCiAgICAgdWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQgPSBtX25vdGlmaWNhdGlvbk1hcC50YWtlKG5vdGlmaWNhdGlvbik7CiAgICAgaWYg
KCFub3RpZmljYXRpb25JRCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRHJhZ0NsaWVudE1hYy5tbQppbmRleCBlOWYy
YjIyMzdiMWQ4YTFiMjFhZDI4ZTBmYTMwOWI4MDI1MmI1ZWJkLi42YTdkNjgzZGNmMDY2ZDdkM2Q1
NjA0ZjQzMjhjYThjZjlhZWY1MGM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkRyYWdDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJEcmFnQ2xpZW50TWFjLm1tCkBA
IC0xODcsNyArMTg3LDcgQEAgdm9pZCBXZWJEcmFnQ2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFn
SW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgRWxlbWUKIAogdm9pZCBXZWJEcmFn
Q2xpZW50OjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgRWxlbWVudCYgZWxlbWVudCwgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFi
ZWwsIEZyYW1lKikKIHsKLSAgICBpZiAoYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIoZWxlbWVudC5k
b2N1bWVudCgpLmZyYW1lKCkpKQorICAgIGlmIChSZWZQdHIgZnJhbWUgPSBlbGVtZW50LmRvY3Vt
ZW50KCkuZnJhbWUoKSkKICAgICAgICAgZnJhbWUtPmVkaXRvcigpLndyaXRlSW1hZ2VUb1Bhc3Rl
Ym9hcmQoKlBhc3RlYm9hcmQ6OmNyZWF0ZUZvckRyYWdBbmREcm9wKFBhZ2VQYXN0ZWJvYXJkQ29u
dGV4dDo6Y3JlYXRlKGZyYW1lLT5wYWdlSUQoKSkpLCBlbGVtZW50LCB1cmwsIGxhYmVsKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCmluZGV4IDMwOWFjMmNjOWY2NTBkYmFmYjc1OGJkMDVlYjFhNGE2OTY5YTIxZjkuLmI3
NzNmMGJlMzQ2NzQ4OTIxNGY5NmY4NmUyZTM5OWE2MjE1YjI0YzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTI5NSw3
ICsyOTUsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBT
dHJpbmcmIHN0cmluZywgT3B0aW9uU2V0PEZpbmRPcHRpbwogICAgICAgICByZXR1cm47CiAKICAg
ICBib29sIGZvdW5kID0gIW1fZmluZE1hdGNoZXMuaXNFbXB0eSgpOwotICAgIG1fd2ViUGFnZS0+
ZHJhd2luZ0FyZWEoKS0+ZGlzcGF0Y2hBZnRlckVuc3VyaW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9u
KFtwcm90ZWN0ZWRXZWJQYWdlID0gbWFrZVJlZlB0cihtX3dlYlBhZ2UpLCBmb3VuZCwgc3RyaW5n
LCBvcHRpb25zLCBtYXhNYXRjaENvdW50XSAoKSB7CisgICAgbV93ZWJQYWdlLT5kcmF3aW5nQXJl
YSgpLT5kaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oW3Byb3RlY3Rl
ZFdlYlBhZ2UgPSBSZWZQdHIgeyBtX3dlYlBhZ2UgfSwgZm91bmQsIHN0cmluZywgb3B0aW9ucywg
bWF4TWF0Y2hDb3VudF0gKCkgewogICAgICAgICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJv
bGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25z
LCBtYXhNYXRjaENvdW50LCBEaWRXcmFwOjpObywgRmluZFVJT3JpZ2luYXRvcjo6RmluZFN0cmlu
Z01hdGNoZXMpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCAzNjZlZmRiOWI1MjZiNGIxMWQwNjQwZGVm
YTU3YmVhNzRlMjAyMmM3Li42NjE0OGFlOGVkNGU1NWVjZDU2MWVjN2JhMDBhZGIyODE5NWFiNGEz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5n
QVBJLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5n
QVBJLmNwcApAQCAtMjg1LDcgKzI4NSw3IEBAIEpTVmFsdWVSZWYgSlNJUENTZW1hcGhvcmU6OnNp
Z25hbChKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYsIEpTT2JqZWN0UmVmCiB7CiAg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjb250ZXh0KTsKICAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgYXV0byBqc0lQQ1NlbWFwaG9yZSA9
IG1ha2VSZWZQdHIodG9XcmFwcGVkKGNvbnRleHQsIHRoaXNPYmplY3QpKTsKKyAgICBSZWZQdHIg
anNJUENTZW1hcGhvcmUgPSB0b1dyYXBwZWQoY29udGV4dCwgdGhpc09iamVjdCk7CiAgICAgaWYg
KCFqc0lQQ1NlbWFwaG9yZSkgewogICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9y
KGNvbnRleHQsICJXcm9uZyB0eXBlIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTVmFsdWVSZWYgSlNJUENTZW1h
cGhvcmU6OndhaXRGb3IoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVj
dFJlCiB7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjb250ZXh0KTsKICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAgYXV0byBqc0lQQ1Nl
bWFwaG9yZSA9IG1ha2VSZWZQdHIodG9XcmFwcGVkKGNvbnRleHQsIHRoaXNPYmplY3QpKTsKKyAg
ICBSZWZQdHIganNJUENTZW1hcGhvcmUgPSB0b1dyYXBwZWQoY29udGV4dCwgdGhpc09iamVjdCk7
CiAgICAgaWYgKCFqc0lQQ1NlbWFwaG9yZSkgewogICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRl
VHlwZUVycm9yKGNvbnRleHQsICJXcm9uZyB0eXBlIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwpAQCAtMzk2LDcgKzM5Niw3IEBAIGNvbnN0IEpTU3Rh
dGljRnVuY3Rpb24qIEpTU2hhcmVkTWVtb3J5OjpzdGF0aWNGdW5jdGlvbnMoKQogCiBKU1ZhbHVl
UmVmIEpTU2hhcmVkTWVtb3J5OjpyZWFkQnl0ZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2Jq
ZWN0UmVmLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAg
IGF1dG8ganNTaGFyZWRNZW1vcnkgPSBtYWtlUmVmUHRyKHRvV3JhcHBlZChjb250ZXh0LCB0aGlz
T2JqZWN0KSk7CisgICAgUmVmUHRyIGpzU2hhcmVkTWVtb3J5ID0gdG9XcmFwcGVkKGNvbnRleHQs
IHRoaXNPYmplY3QpOwogICAgIGlmICghanNTaGFyZWRNZW1vcnkpIHsKICAgICAgICAgKmV4Y2Vw
dGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiV3JvbmcgdHlwZSJfcyk7CiAgICAgICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKQEAgLTQ3NCw3ICs0NzQsNyBA
QCBzdGF0aWMgQXJyYXlCdWZmZXJEYXRhIGFycmF5QnVmZmVyRGF0YUZyb21WYWx1ZVJlZihKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNUeXBlZAogCiBKU1ZhbHVlUmVmIEpTU2hhcmVkTWVtb3J5Ojp3
cml0ZUJ5dGVzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1l
bnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKLSAgICBhdXRvIGpzU2hhcmVkTWVtb3J5
ID0gbWFrZVJlZlB0cih0b1dyYXBwZWQoY29udGV4dCwgdGhpc09iamVjdCkpOworICAgIFJlZlB0
ciBqc1NoYXJlZE1lbW9yeSA9IHRvV3JhcHBlZChjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBp
ZiAoIWpzU2hhcmVkTWVtb3J5KSB7CiAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJy
b3IoY29udGV4dCwgIldyb25nIHR5cGUiX3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CkBAIC02MjIsNyArNjIyLDcgQEAgdm9pZCBKU0lQQzo6YWRkTWVz
c2FnZUxpc3RlbmVyKEpTTWVzc2FnZUxpc3RlbmVyOjpUeXBlIHR5cGUsIEpTQ29udGV4dFJlZiBj
b250ZXgKIHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTKGNvbnRleHQpOwogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICBhdXRvIGpzSVBD
ID0gbWFrZVJlZlB0cih0b1dyYXBwZWQoY29udGV4dCwgdGhpc09iamVjdCkpOworICAgIFJlZlB0
ciBqc0lQQyA9IHRvV3JhcHBlZChjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBpZiAoIWpzSVBD
KSB7CiAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIldyb25n
IHR5cGUiX3MpOwogICAgICAgICByZXR1cm47CkBAIC03NjQsNyArNzY0LDcgQEAgc3RhdGljIGJv
b2wgZW5jb2RlUmVtb3RlUmVuZGVyaW5nQmFja2VuZENyZWF0aW9uUGFyYW1ldGVycyhJUEM6OkVu
Y29kZXImIGVuY29kZXIKICAgICBhdXRvIGpzU2VtYXBob3JlID0ganNPYmplY3QtPmdldChnbG9i
YWxPYmplY3QsIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPnZtKCks
ICJzZW1hcGhvcmUiX3MpKTsKICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBhdXRvIHNlbWFwaG9yZU9iamVjdCA9IG1ha2VSZWZQdHIoSlNJUENT
ZW1hcGhvcmU6OnRvV3JhcHBlZCh0b1JlZihnbG9iYWxPYmplY3QpLCB0b1JlZihqc1NlbWFwaG9y
ZSkpKTsKKyAgICBSZWZQdHIgc2VtYXBob3JlT2JqZWN0ID0gSlNJUENTZW1hcGhvcmU6OnRvV3Jh
cHBlZCh0b1JlZihnbG9iYWxPYmplY3QpLCB0b1JlZihqc1NlbWFwaG9yZSkpOwogICAgIGlmICgh
c2VtYXBob3JlT2JqZWN0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTc4OSw3ICs3ODks
NyBAQCBzdGF0aWMgYm9vbCBlbmNvZGVTaGFyZWRNZW1vcnkoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
LCBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgIGF1dG8ganNTaGFyZWRNZW1vcnlWYWx1
ZSA9IGpzT2JqZWN0LT5nZXQoZ2xvYmFsT2JqZWN0LCBKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcoZ2xvYmFsT2JqZWN0LT52bSgpLCAidmFsdWUiX3MpKTsKICAgICBpZiAoc2NvcGUuZXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIGpzU2hhcmVkTWVtb3J5ID0g
bWFrZVJlZlB0cihKU1NoYXJlZE1lbW9yeTo6dG9XcmFwcGVkKHRvUmVmKGdsb2JhbE9iamVjdCks
IHRvUmVmKGpzU2hhcmVkTWVtb3J5VmFsdWUpKSk7CisgICAgUmVmUHRyIGpzU2hhcmVkTWVtb3J5
ID0gSlNTaGFyZWRNZW1vcnk6OnRvV3JhcHBlZCh0b1JlZihnbG9iYWxPYmplY3QpLCB0b1JlZihq
c1NoYXJlZE1lbW9yeVZhbHVlKSk7CiAgICAgaWYgKCFqc1NoYXJlZE1lbW9yeSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCkBAIC04MjMsNyArODIzLDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlU2hh
cmVkTWVtb3J5KElQQzo6RW5jb2RlciYgZW5jb2RlciwgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmEKIAogc3RhdGljIGJvb2wgZW5jb2RlU2VtYXBob3JlKElQQzo6RW5jb2RlciYgZW5jb2Rlciwg
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUganNWYWx1ZSwg
SlNDOjpDYXRjaFNjb3BlJiBzY29wZSkKIHsKLSAgICBhdXRvIGpzSVBDU2VtYXBob3JlID0gbWFr
ZVJlZlB0cihKU0lQQ1NlbWFwaG9yZTo6dG9XcmFwcGVkKHRvUmVmKGdsb2JhbE9iamVjdCksIHRv
UmVmKGpzVmFsdWUpKSk7CisgICAgUmVmUHRyIGpzSVBDU2VtYXBob3JlID0gSlNJUENTZW1hcGhv
cmU6OnRvV3JhcHBlZCh0b1JlZihnbG9iYWxPYmplY3QpLCB0b1JlZihqc1ZhbHVlKSk7CiAgICAg
aWYgKCFqc0lQQ1NlbWFwaG9yZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC05NjIsNyAr
OTYyLDcgQEAgc3RhdGljIGJvb2wgZW5jb2RlQXJndW1lbnQoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
LCBKU0lQQyYganNJUEMsIEpTQ29udGV4dFJlZiBjb24KICAgICB9CiAKICAgICBpZiAodHlwZSA9
PSAiRnJhbWVJbmZvRGF0YSIpIHsKLSAgICAgICAgYXV0byB3ZWJGcmFtZSA9IG1ha2VSZWZQdHIo
anNJUEMud2ViRnJhbWUoKSk7CisgICAgICAgIFJlZlB0ciB3ZWJGcmFtZSA9IGpzSVBDLndlYkZy
YW1lKCk7CiAgICAgICAgIGlmICghd2ViRnJhbWUpIHsKICAgICAgICAgICAgICpleGNlcHRpb24g
PSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIkZhaWxlZCB0byBnZXQgdGhlIGZyYW1lIl9zKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTExMTQsNyArMTExNCw3IEBAIEpTVmFsdWVS
ZWYgSlNJUEM6OnNlbmRNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwg
SlNPYmplY3RSZWYgdGhpCiB7CiAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjb250ZXh0
KTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKGdsb2JhbE9iamVjdC0+dm0oKSk7Ci0gICAg
YXV0byBqc0lQQyA9IG1ha2VSZWZQdHIodG9XcmFwcGVkKGNvbnRleHQsIHRoaXNPYmplY3QpKTsK
KyAgICBSZWZQdHIganNJUEMgPSB0b1dyYXBwZWQoY29udGV4dCwgdGhpc09iamVjdCk7CiAgICAg
aWYgKCFqc0lQQykgewogICAgICAgICAqZXhjZXB0aW9uID0gY3JlYXRlVHlwZUVycm9yKGNvbnRl
eHQsICJXcm9uZyB0eXBlIl9zKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6c2VuZFN5
bmNNZXNzYWdlKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiwgSlNPYmplY3RSZWYK
IHsKICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSB0b0pTKGNvbnRleHQpOwogICAgIEpTQzo6SlNM
b2NrSG9sZGVyIGxvY2soZ2xvYmFsT2JqZWN0LT52bSgpKTsKLSAgICBhdXRvIGpzSVBDID0gbWFr
ZVJlZlB0cih0b1dyYXBwZWQoY29udGV4dCwgdGhpc09iamVjdCkpOworICAgIFJlZlB0ciBqc0lQ
QyA9IHRvV3JhcHBlZChjb250ZXh0LCB0aGlzT2JqZWN0KTsKICAgICBpZiAoIWpzSVBDKSB7CiAg
ICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVUeXBlRXJyb3IoY29udGV4dCwgIldyb25nIHR5cGUi
X3MpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CkBAIC0x
MjgxLDcgKzEyODEsNyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpjcmVhdGVTaGFyZWRNZW1vcnkoSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmLCBKU09iamVjdAogCiBKU1ZhbHVlUmVmIEpT
SVBDOjp2bVBhZ2VTaXplKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBKU1N0cmluZ1JlZiwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewotICAgIGF1dG8ganNJ
UEMgPSBtYWtlUmVmUHRyKHRvV3JhcHBlZChjb250ZXh0LCB0aGlzT2JqZWN0KSk7CisgICAgUmVm
UHRyIGpzSVBDID0gdG9XcmFwcGVkKGNvbnRleHQsIHRoaXNPYmplY3QpOwogICAgIGlmICghanNJ
UEMpIHsKICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVR5cGVFcnJvcihjb250ZXh0LCAiV3Jv
bmcgdHlwZSJfcyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxh
eWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJlYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1JlbW90ZUxheWVyVHJlZS9SZW1vdGVMYXllclRyZWVEcmF3aW5nQXJl
YS5tbQppbmRleCBkNTlhNDg3OTJkMDFjYTAxNjc1ODMxZTA5NDBmOGZjNzAzOThmZjMyLi44MGFh
NWM5YTI4Nzk0ZDEyMWQxNmE3Mzk2ZDA1NWQxMzJhMGE2NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVl
RHJhd2luZ0FyZWEubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvUmVt
b3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhLm1tCkBAIC0yODgsMTQgKzI4
OCwxNCBAQCB2b2lkIFJlbW90ZUxheWVyVHJlZURyYXdpbmdBcmVhOjphZGRDb21taXRIYW5kbGVy
cygpCiAgICAgaWYgKG1fd2ViUGFnZS5maXJzdEZsdXNoQWZ0ZXJDb21taXQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgW0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbcmV0YWluZWRQ
YWdlID0gbWFrZVJlZlB0cigmbV93ZWJQYWdlKV0geworICAgIFtDQVRyYW5zYWN0aW9uIGFkZENv
bW1pdEhhbmRsZXI6W3JldGFpbmVkUGFnZSA9IFJlZiB7IG1fd2ViUGFnZSB9XSB7CiAgICAgICAg
IGlmIChQYWdlKiBjb3JlUGFnZSA9IHJldGFpbmVkUGFnZS0+Y29yZVBhZ2UoKSkgewogICAgICAg
ICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSByZXRhaW5lZFBhZ2UtPm1haW5GcmFtZSgpKQog
ICAgICAgICAgICAgICAgIGNvcmVQYWdlLT5pbnNwZWN0b3JDb250cm9sbGVyKCkud2lsbENvbXBv
c2l0ZSgqY29yZUZyYW1lKTsKICAgICAgICAgfQogICAgIH0gZm9yUGhhc2U6a0NBVHJhbnNhY3Rp
b25QaGFzZVByZUNvbW1pdF07CiAgICAgCi0gICAgW0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFu
ZGxlcjpbcmV0YWluZWRQYWdlID0gbWFrZVJlZlB0cigmbV93ZWJQYWdlKV0geworICAgIFtDQVRy
YW5zYWN0aW9uIGFkZENvbW1pdEhhbmRsZXI6W3JldGFpbmVkUGFnZSA9IFJlZiB7IG1fd2ViUGFn
ZSB9XSB7CiAgICAgICAgIGlmIChQYWdlKiBjb3JlUGFnZSA9IHJldGFpbmVkUGFnZS0+Y29yZVBh
Z2UoKSkgewogICAgICAgICAgICAgaWYgKEZyYW1lKiBjb3JlRnJhbWUgPSByZXRhaW5lZFBhZ2Ut
Pm1haW5GcmFtZSgpKQogICAgICAgICAgICAgICAgIGNvcmVQYWdlLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkuZGlkQ29tcG9zaXRlKCpjb3JlRnJhbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmNwcAppbmRleCA4MDM4OTgwMjAxYTdlYmFhM2UyMWRmYzI4YjE5ODNmZmQ2NDI5MmYyLi42
YmQ3Mzg2ZmJiOGQ2MmNkMzUzYjNkMmYxYTE2OTk5YmIyYmQxNmNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdl
b21ldHJ5Q29sbGVjdG9yLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHN0ZDo6b3B0aW9uYWw8c3Rk
OjpwYWlyPGRvdWJsZSwgZG91YmxlPj4gVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcjo6Y29t
cHV0ZVRlCiAgICAgaWYgKG1fY2FjaGVkVGV4dExlZ2liaWxpdHlTY2FsZXMpCiAgICAgICAgIHJl
dHVybiBtX2NhY2hlZFRleHRMZWdpYmlsaXR5U2NhbGVzOwogCi0gICAgYXV0byBkb2N1bWVudCA9
IG1ha2VSZWZQdHIobV93ZWJQYWdlLm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQ
dHIgZG9jdW1lbnQgPSBtX3dlYlBhZ2UubWFpbkZyYW1lKCktPmRvY3VtZW50KCk7CiAgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCA4NTBhOWI0NzUyNmQ4MTcy
NDllMzQ0MWQyZTM5ZDQ4MThlOTA2YjM4Li4xYmU3NGIzOWE4ZWVhZTc2OGRjZmM2ZGM1NWQ5OTgy
ZTgwYjA2YTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtMzc1OCw3ICszNzU4LDcgQEAgdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdl
YkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXIKIHZvaWQg
V2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWVJblNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQ
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGcmFtZUlkZW50
aWZpZXI+IGZyYW1lSUQsIGNvbnN0IHN0ZDo6cGFpcjxDb250ZW50V29ybGRJZGVudGlmaWVyLCBT
dHJpbmc+JiB3b3JsZERhdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgSVBDOjpEYXRh
UmVmZXJlbmNlJiwgY29uc3Qgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFdFQlBBR0VfUkVMRUFTRV9MT0coUHJv
Y2VzcywgInJ1bkphdmFTY3JpcHRJbkZyYW1lSW5TY3JpcHRXb3JsZDogZnJhbWVJRD0lIiBQUkl1
NjQsIGZyYW1lSUQudmFsdWVfb3IoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIHsgfSkudG9VSW50
NjQoKSk7Ci0gICAgYXV0byB3ZWJGcmFtZSA9IG1ha2VSZWZQdHIoZnJhbWVJRCA/IFdlYlByb2Nl
c3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKCpmcmFtZUlEKSA6ICZtYWluV2ViRnJhbWUoKSk7Cisg
ICAgUmVmUHRyIHdlYkZyYW1lID0gZnJhbWVJRCA/IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndl
YkZyYW1lKCpmcmFtZUlEKSA6ICZtYWluV2ViRnJhbWUoKTsKIAogICAgIGlmIChhdXRvKiBuZXdX
b3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT5hZGRDb250ZW50V29ybGQod29ybGREYXRh
KSkgewogICAgICAgICBhdXRvJiBjb3JlV29ybGQgPSBuZXdXb3JsZC0+Y29yZVdvcmxkKCk7CkBA
IC0zNzgzLDcgKzM3ODMsNyBAQCB2b2lkIFdlYlBhZ2U6OmdldENvbnRlbnRzQXNTdHJpbmcoQ29u
dGVudEFzU3RyaW5nSW5jbHVkZXNDaGlsZEZyYW1lcyBpbmNsdWRlQ2hpbAogICAgICAgICBicmVh
azsKICAgICBjYXNlIENvbnRlbnRBc1N0cmluZ0luY2x1ZGVzQ2hpbGRGcmFtZXM6OlllczoKICAg
ICAgICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgICAgICBmb3IgKGF1dG8gZnJhbWUgPSBt
YWtlUmVmUHRyKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0UmVuZGVyZWQoKSkgeworICAgICAgICBmb3IgKFJlZlB0ciBm
cmFtZSA9IG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRy
ZWUoKS50cmF2ZXJzZU5leHRSZW5kZXJlZCgpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byB3ZWJG
cmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSkpCiAgICAgICAgICAgICAgICAg
YnVpbGRlci5hcHBlbmQoYnVpbGRlci5pc0VtcHR5KCkgPyAiIiA6ICJcblxuIiwgd2ViRnJhbWUt
PmNvbnRlbnRzQXNTdHJpbmcoKSk7CiAgICAgICAgIH0KQEAgLTQwNzAsOCArNDA3MCw4IEBAIHZv
aWQgV2ViUGFnZTo6c2V0RGF0YURldGVjdGlvblJlc3VsdHMoTlNBcnJheSAqZGV0ZWN0aW9uUmVz
dWx0cykKIAogdm9pZCBXZWJQYWdlOjpyZW1vdmVEYXRhRGV0ZWN0ZWRMaW5rcyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKIHsKLSAgICBmb3IgKGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5G
cmFtZSgpKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewot
ICAgICAgICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7Cisg
ICAgZm9yIChSZWZQdHIgZnJhbWUgPSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgeworICAgICAgICBSZWZQdHIgZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCkBAIC00MDg5LDggKzQwODksOCBAQCB2b2lkIFdlYlBhZ2U6OnJlbW92
ZURhdGFEZXRlY3RlZExpbmtzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgRGF0YURldGVj
dGlvbgogdm9pZCBXZWJQYWdlOjpkZXRlY3REYXRhSW5BbGxGcmFtZXMoT3B0aW9uU2V0PFdlYkNv
cmU6OkRhdGFEZXRlY3RvclR5cGU+IGRhdGFEZXRlY3RvclR5cGVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGNvbnN0IERhdGFEZXRlY3Rpb25SZXN1bHQmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBEYXRhRGV0ZWN0aW9uUmVzdWx0IG1haW5GcmFtZVJlc3VsdDsKLSAgICBmb3IgKGF1
dG8gZnJhbWUgPSBtYWtlUmVmUHRyKCZtX3BhZ2UtPm1haW5GcmFtZSgpKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBhdXRvIGRvY3VtZW50
ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgZm9yIChSZWZQdHIgZnJhbWUg
PSAmbV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2
ZXJzZU5leHQoKSkgeworICAgICAgICBSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICBhdXRvIHJlc3VsdHMgPSByZXRhaW5QdHIoRGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudElu
UmFuZ2UobWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRzKCpkb2N1bWVudCksIGRhdGFEZXRl
Y3RvclR5cGVzLCBtX2RhdGFEZXRlY3Rpb25Db250ZXh0LmdldCgpKSk7CkBAIC03Mjk3LDcgKzcy
OTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnN0YXJ0VGV4dE1hbmlwdWxhdGlvbnMoVmVjdG9yPFdlYkNv
cmU6OlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyOgogICAgIGlmICghbV9wYWdlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5t
YWluRnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgbWFpbkRvY3VtZW50ID0gbV9wYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlmICghbWFpbkRvY3VtZW50KQogICAgICAg
ICByZXR1cm47CiAKQEAgLTczMjcsNyArNzMyNyw3IEBAIHZvaWQgV2ViUGFnZTo6Y29tcGxldGVU
ZXh0TWFuaXB1bGF0aW9uKGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpUZXh0TWFuaXB1bGF0aW9uQ29u
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIG1haW5Eb2N1bWVudCA9IG1ha2VS
ZWZQdHIobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHIgbWFpbkRv
Y3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgIGlmICghbWFpbkRv
Y3VtZW50KSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRydWUsIHsgfSk7CiAgICAgICAg
IHJldHVybjsKQEAgLTc0NzAsNyArNzQ3MCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFRleHRS
ZWNvZ25pdGlvbihXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlCiAg
ICAgICAgIGlmIChjb21wbGV0aW9uKSB7CiAgICAgICAgICAgICBSZWZQdHI8RWxlbWVudD4gaW1h
Z2VPdmVybGF5SG9zdDsKICAgICAgICAgICAgIGlmIChodG1sRWxlbWVudC0+aGFzSW1hZ2VPdmVy
bGF5KCkpCi0gICAgICAgICAgICAgICAgaW1hZ2VPdmVybGF5SG9zdCA9IG1ha2VSZWZQdHIoZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgaW1hZ2VPdmVybGF5SG9zdCA9ICZlbGVtZW50OwogICAg
ICAgICAgICAgY29tcGxldGlvbihXVEZNb3ZlKGltYWdlT3ZlcmxheUhvc3QpKTsKICAgICAgICAg
fQogICAgICAgICByZXR1cm47CkBAIC03NTE3LDcgKzc1MTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnJl
cXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxlbWVudCYgZWxlbWVudCwgQ29tcGxldGlv
bkhhbmRsZQogICAgIGF1dG8gY2FjaGVkSW1hZ2UgPSByZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgp
OwogICAgIGF1dG8gaW1hZ2VVUkwgPSBjYWNoZWRJbWFnZSA/IGVsZW1lbnQuZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChjYWNoZWRJbWFnZS0+dXJsKCkuc3RyaW5nKCkpIDogVVJMIHsgfTsKICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVxdWVzdFRleHRSZWNv
Z25pdGlvbihXVEZNb3ZlKGltYWdlVVJMKSwgV1RGTW92ZShiaXRtYXBIYW5kbGUpKSwgW3dlYlBh
Z2UgPSBtYWtlV2Vha1B0cigqdGhpcyksIHdlYWtFbGVtZW50ID0gbWFrZVdlYWtQdHIoZWxlbWVu
dCldIChhdXRvJiYgcmVzdWx0KSB7Ci0gICAgICAgIGF1dG8gcHJvdGVjdGVkUGFnZSA9IG1ha2VS
ZWZQdHIod2ViUGFnZS5nZXQoKSk7CisgICAgICAgIFJlZlB0ciBwcm90ZWN0ZWRQYWdlIHsgd2Vi
UGFnZS5nZXQoKSB9OwogICAgICAgICBpZiAoIXByb3RlY3RlZFBhZ2UpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKQEAgLTc1MzEsNyArNzUzMSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVxdWVzdFRleHRS
ZWNvZ25pdGlvbihXZWJDb3JlOjpFbGVtZW50JiBlbGVtZW50LCBDb21wbGV0aW9uSGFuZGxlCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgYXV0byBwcm90
ZWN0ZWRFbGVtZW50ID0gbWFrZVJlZlB0cih3ZWFrRWxlbWVudC5nZXQoKSk7CisgICAgICAgIFJl
ZlB0ciBwcm90ZWN0ZWRFbGVtZW50IHsgd2Vha0VsZW1lbnQuZ2V0KCkgfTsKICAgICAgICAgaWYg
KCFwcm90ZWN0ZWRFbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC03NTQ1LDcgKzc1
NDUsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlcXVlc3RUZXh0UmVjb2duaXRpb24oV2ViQ29yZTo6RWxl
bWVudCYgZWxlbWVudCwgQ29tcGxldGlvbkhhbmRsZQogICAgICAgICBpZiAobWF0Y2hJbmRleCA9
PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBhdXRvIGltYWdlT3Zl
cmxheUhvc3QgPSBodG1sRWxlbWVudC5oYXNJbWFnZU92ZXJsYXkoKSA/IG1ha2VSZWZQdHIoaHRt
bEVsZW1lbnQpIDogbnVsbHB0cjsKKyAgICAgICAgUmVmUHRyIGltYWdlT3ZlcmxheUhvc3QgPSBo
dG1sRWxlbWVudC5oYXNJbWFnZU92ZXJsYXkoKSA/ICZodG1sRWxlbWVudCA6IG51bGxwdHI7CiAg
ICAgICAgIGZvciAoYXV0byYgY29tcGxldGlvbkhhbmRsZXIgOiBwcm90ZWN0ZWRQYWdlLT5tX2Vs
ZW1lbnRzUGVuZGluZ1RleHRSZWNvZ25pdGlvblttYXRjaEluZGV4XS5zZWNvbmQpCiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihpbWFnZU92ZXJsYXlIb3N0LmNvcHlSZWYoKSk7CiAKQEAg
LTc1NjgsNyArNzU2OCw3IEBAIHZvaWQgV2ViUGFnZTo6dXBkYXRlV2l0aFRleHRSZWNvZ25pdGlv
blJlc3VsdChjb25zdCBUZXh0UmVjb2duaXRpb25SZXN1bHQmIHJlc3VsCiAgICAgICAgIEhpdFRl
c3RSZXF1ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCiAgICAg
fSk7CiAKLSAgICBhdXRvIG5vZGVBdExvY2F0aW9uID0gbWFrZVJlZlB0cihoaXRUZXN0UmVzdWx0
LmlubmVyTm9uU2hhcmVkTm9kZSgpKTsKKyAgICBSZWZQdHIgbm9kZUF0TG9jYXRpb24gPSBoaXRU
ZXN0UmVzdWx0LmlubmVyTm9uU2hhcmVkTm9kZSgpOwogICAgIGF1dG8gdXBkYXRlUmVzdWx0ID0g
KFsmXSB7CiAgICAgICAgIGlmICghbm9kZUF0TG9jYXRpb24gfHwgbm9kZUF0TG9jYXRpb24tPnNo
YWRvd0hvc3QoKSAhPSBlbGVtZW50VG9VcGRhdGUgfHwgIUhUTUxFbGVtZW50Ojppc0luc2lkZUlt
YWdlT3ZlcmxheSgqbm9kZUF0TG9jYXRpb24pKQogICAgICAgICAgICAgcmV0dXJuIFRleHRSZWNv
Z25pdGlvblVwZGF0ZVJlc3VsdDo6Tm9UZXh0OwpAQCAtNzY1Nyw3ICs3NjU3LDcgQEAgYm9vbCBX
ZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRl
TmV3R3JvdXBGb3JIaWdobGkKIAogICAgIFJlZlB0ciBkb2N1bWVudCA9IENoZWNrZWRSZWYobV9w
YWdlLT5mb2N1c0NvbnRyb2xsZXIoKSktPmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7
CiAKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAg
UmVmUHRyIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCkBAIC03NjkwLDcgKzc2OTAsNyBAQCB2b2lkIFdlYlBhZ2U6OnNl
dEFwcEhpZ2hsaWdodHNWaXNpYmlsaXR5KFdlYkNvcmU6OkhpZ2hsaWdodFZpc2liaWxpdHkgYXBw
SGlnaGxpZwogewogICAgIG1fYXBwSGlnaGxpZ2h0c1Zpc2libGUgPSBhcHBIaWdobGlnaHRWaXNp
YmlsaXR5OwogICAgIGZvciAoUmVmUHRyPEZyYW1lPiBmcmFtZSA9IG1fbWFpbkZyYW1lLT5jb3Jl
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHRSZW5kZXJl
ZCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIGRvY3VtZW50ID0gbWFrZVJlZlB0cihmcmFtZS0+ZG9j
dW1lbnQoKSkpCisgICAgICAgIGlmIChSZWZQdHIgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQo
KSkKICAgICAgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLnNldEhpZ2hs
aWdodFZpc2liaWxpdHkoYXBwSGlnaGxpZ2h0VmlzaWJpbGl0eSk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQppbmRl
eCAzZDFkMmZlMjZiZTlmOWRjYzVlMTI1M2EzNWI1OWE4NGRlZjgxZTg0Li5hNDlhNWRhM2IyNjhh
Y2RkYjUyY2RiMTFjNmZlMGIyMmEyMDk2MTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtMzQzLDcgKzM0Myw3IEBAIHZv
aWQgV2ViUGFnZTo6Z2V0UGxhdGZvcm1FZGl0b3JTdGF0ZShGcmFtZSYgZnJhbWUsIEVkaXRvclN0
YXRlJiByZXN1bHQpIGNvbnN0CiAgICAgICAgICAgICAgICAgcG9zdExheW91dERhdGEuY2FyZXRD
b2xvciA9IENhcmV0QmFzZTo6Y29tcHV0ZUNhcmV0Q29sb3IoZWRpdGFibGVSb290LT5yZW5kZXJl
cigpLT5zdHlsZSgpLCBlZGl0YWJsZVJvb3QuZ2V0KCkpOwogICAgICAgICB9CiAKLSAgICAgICAg
aWYgKGF1dG8gZWRpdGFibGVSb290T3JGb3JtQ29udHJvbCA9IG1ha2VSZWZQdHIoZW5jbG9zaW5n
VGV4dEZvcm1Db250cm9sKHNlbGVjdGlvbi5zdGFydCgpKSA/OiBzZWxlY3Rpb24ucm9vdEVkaXRh
YmxlRWxlbWVudCgpKSkgeworICAgICAgICBpZiAoUmVmUHRyIGVkaXRhYmxlUm9vdE9yRm9ybUNv
bnRyb2wgPSBlbmNsb3NpbmdUZXh0Rm9ybUNvbnRyb2woc2VsZWN0aW9uLnN0YXJ0KCkpID86IHNl
bGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCkpIHsKICAgICAgICAgICAgIHBvc3RMYXlvdXRE
YXRhLnNlbGVjdGlvbkNsaXBSZWN0ID0gcm9vdFZpZXdJbnRlcmFjdGlvbkJvdW5kcygqZWRpdGFi
bGVSb290T3JGb3JtQ29udHJvbCk7CiAgICAgICAgICAgICBwb3N0TGF5b3V0RGF0YS5lZGl0YWJs
ZVJvb3RJc1RyYW5zcGFyZW50T3JGdWxseUNsaXBwZWQgPSByZXN1bHQuaXNDb250ZW50RWRpdGFi
bGUgJiYgaXNUcmFuc3BhcmVudE9yRnVsbHlDbGlwcGVkKCplZGl0YWJsZVJvb3RPckZvcm1Db250
cm9sKTsKICAgICAgICAgfQpAQCAtMTM0NSw3ICsxMzQ1LDcgQEAgc3RhdGljIEludFBvaW50IGNv
bnN0cmFpblBvaW50KGNvbnN0IEludFBvaW50JiBwb2ludCwgY29uc3QgRnJhbWUmIGZyYW1lLCBj
b25zdAogCiBzdGF0aWMgYm9vbCBpbnNpZGVJbWFnZU92ZXJsYXkoY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBwb3NpdGlvbikKIHsKLSAgICBhdXRvIGNvbnRhaW5lciA9IG1ha2VSZWZQdHIocG9zaXRp
b24uZGVlcEVxdWl2YWxlbnQoKS5jb250YWluZXJOb2RlKCkpOworICAgIFJlZlB0ciBjb250YWlu
ZXIgPSBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKTsKICAgICByZXR1
cm4gY29udGFpbmVyICYmIEhUTUxFbGVtZW50Ojppc0luc2lkZUltYWdlT3ZlcmxheSgqY29udGFp
bmVyKTsKIH0KIApAQCAtMTM1NSwxNCArMTM1NSwxNCBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4gZXhwYW5kRm9ySW1hZ2VPdmVybGF5KGNvbnN0IFNpbXBsZVJhbmdlJiByYW5n
ZQogICAgIFZpc2libGVQb3NpdGlvbiBleHBhbmRlZEVuZChtYWtlQ29udGFpbmVyT2Zmc2V0UG9z
aXRpb24oJnJhbmdlLmVuZENvbnRhaW5lcigpLCByYW5nZS5lbmRPZmZzZXQoKSkpOwogCiAgICAg
Zm9yIChhdXRvIHN0YXJ0ID0gZXhwYW5kZWRTdGFydDsgaW5zaWRlSW1hZ2VPdmVybGF5KHN0YXJ0
KTsgc3RhcnQgPSBzdGFydC5wcmV2aW91cygpKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvbnRhaW5l
ciA9IG1ha2VSZWZQdHIoc3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5jb250YWluZXJOb2RlKCkpOyBp
czxUZXh0Pihjb250YWluZXIpKSB7CisgICAgICAgIGlmIChSZWZQdHIgY29udGFpbmVyID0gc3Rh
cnQuZGVlcEVxdWl2YWxlbnQoKS5jb250YWluZXJOb2RlKCk7IGlzPFRleHQ+KGNvbnRhaW5lcikp
IHsKICAgICAgICAgICAgIGV4cGFuZGVkU3RhcnQgPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbnRh
aW5lci5nZXQoKSkuZG93bnN0cmVhbSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
ICAgICB9CiAKICAgICBmb3IgKGF1dG8gZW5kID0gZXhwYW5kZWRFbmQ7IGluc2lkZUltYWdlT3Zl
cmxheShlbmQpOyBlbmQgPSBlbmQubmV4dCgpKSB7Ci0gICAgICAgIGlmIChhdXRvIGNvbnRhaW5l
ciA9IG1ha2VSZWZQdHIoZW5kLmRlZXBFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpKTsgaXM8
VGV4dD4oY29udGFpbmVyKSkgeworICAgICAgICBpZiAoUmVmUHRyIGNvbnRhaW5lciA9IGVuZC5k
ZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKTsgaXM8VGV4dD4oY29udGFpbmVyKSkgewog
ICAgICAgICAgICAgZXhwYW5kZWRFbmQgPSBsYXN0UG9zaXRpb25Jbk5vZGUoY29udGFpbmVyLmdl
dCgpKS51cHN0cmVhbSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTE1NDAs
NyArMTU0MCw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclBv
aW50SW5Sb290Vmlld0Nvb3JkaW5hdGVzKEZyYW1lJiBmcmFtCiAgICAgICAgIEhpdFRlc3RSZXF1
ZXN0OjpUeXBlOjpBbGxvd1Zpc2libGVDaGlsZEZyYW1lQ29udGVudE9ubHksCiAgICAgfSk7CiAK
LSAgICBhdXRvIHRhcmdldE5vZGUgPSBtYWtlUmVmUHRyKGhpdFRlc3QudGFyZ2V0Tm9kZSgpKTsK
KyAgICBSZWZQdHIgdGFyZ2V0Tm9kZSA9IGhpdFRlc3QudGFyZ2V0Tm9kZSgpOwogICAgIGlmICh0
YXJnZXROb2RlICYmICFIVE1MRWxlbWVudDo6c2hvdWxkRXh0ZW5kU2VsZWN0aW9uVG9UYXJnZXRO
b2RlKCp0YXJnZXROb2RlLCBleGlzdGluZ1NlbGVjdGlvbikpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKQEAgLTE1NTUsMTQgKzE1NTUsMTQgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUG9pbnRJblJvb3RWaWV3Q29vcmRpbmF0ZXMoRnJhbWUmIGZy
YW0KICAgICBpZiAoYmFzZUlzU3RhcnQpIHsKICAgICAgICAgaWYgKHJlc3VsdCA8PSBzZWxlY3Rp
b25TdGFydCkKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGVjdGlvblN0YXJ0Lm5leHQoKTsKLSAg
ICAgICAgZWxzZSBpZiAoYXV0byBjb250YWluZXJOb2RlID0gbWFrZVJlZlB0cihzZWxlY3Rpb25T
dGFydC5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKSk7IGNvbnRhaW5lck5vZGUgJiYg
dGFyZ2V0Tm9kZSAmJiAmY29udGFpbmVyTm9kZS0+dHJlZVNjb3BlKCkgIT0gJnRhcmdldE5vZGUt
PnRyZWVTY29wZSgpKQorICAgICAgICBlbHNlIGlmIChSZWZQdHIgY29udGFpbmVyTm9kZSA9IHNl
bGVjdGlvblN0YXJ0LmRlZXBFcXVpdmFsZW50KCkuY29udGFpbmVyTm9kZSgpOyBjb250YWluZXJO
b2RlICYmIHRhcmdldE5vZGUgJiYgJmNvbnRhaW5lck5vZGUtPnRyZWVTY29wZSgpICE9ICZ0YXJn
ZXROb2RlLT50cmVlU2NvcGUoKSkKICAgICAgICAgICAgIHJlc3VsdCA9IFZpc2libGVTZWxlY3Rp
b246OmFkanVzdFBvc2l0aW9uRm9yRW5kKHJlc3VsdC5kZWVwRXF1aXZhbGVudCgpLCBjb250YWlu
ZXJOb2RlLmdldCgpKTsKIAogICAgICAgICByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzZWxlY3Rp
b25TdGFydCwgcmVzdWx0KTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoc2VsZWN0aW9uRW5k
IDw9IHJlc3VsdCkKICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGVjdGlvbkVuZC5wcmV2aW91cygp
OwotICAgICAgICBlbHNlIGlmIChhdXRvIGNvbnRhaW5lck5vZGUgPSBtYWtlUmVmUHRyKHNlbGVj
dGlvbkVuZC5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKSk7IGNvbnRhaW5lck5vZGUg
JiYgdGFyZ2V0Tm9kZSAmJiAmY29udGFpbmVyTm9kZS0+dHJlZVNjb3BlKCkgIT0gJnRhcmdldE5v
ZGUtPnRyZWVTY29wZSgpKQorICAgICAgICBlbHNlIGlmIChSZWZQdHIgY29udGFpbmVyTm9kZSA9
IHNlbGVjdGlvbkVuZC5kZWVwRXF1aXZhbGVudCgpLmNvbnRhaW5lck5vZGUoKTsgY29udGFpbmVy
Tm9kZSAmJiB0YXJnZXROb2RlICYmICZjb250YWluZXJOb2RlLT50cmVlU2NvcGUoKSAhPSAmdGFy
Z2V0Tm9kZS0+dHJlZVNjb3BlKCkpCiAgICAgICAgICAgICByZXN1bHQgPSBWaXNpYmxlU2VsZWN0
aW9uOjphZGp1c3RQb3NpdGlvbkZvclN0YXJ0KHJlc3VsdC5kZWVwRXF1aXZhbGVudCgpLCBjb250
YWluZXJOb2RlLmdldCgpKTsKIAogICAgICAgICByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShyZXN1
bHQsIHNlbGVjdGlvbkVuZCk7CkBAIC0xNjMwLDExICsxNjMwLDExIEBAIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUF0V29yZEJvdW5kYXJ5Rm9yUG9zaXRpb24oRnJhbWUq
IGZyYW1lLCBjCiAKIEludFJlY3QgV2ViUGFnZTo6cm9vdFZpZXdCb3VuZHMoY29uc3QgTm9kZSYg
bm9kZSkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihub2RlLmRvY3VtZW50KCkuZnJh
bWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gbm9kZS5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gdmlldyA9IG1ha2VS
ZWZQdHIoZnJhbWUtPnZpZXcoKSk7CisgICAgUmVmUHRyIHZpZXcgPSBmcmFtZS0+dmlldygpOwog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTY0NywxMSArMTY0Nywx
MSBAQCBJbnRSZWN0IFdlYlBhZ2U6OnJvb3RWaWV3Qm91bmRzKGNvbnN0IE5vZGUmIG5vZGUpCiAK
IEludFJlY3QgV2ViUGFnZTo6YWJzb2x1dGVJbnRlcmFjdGlvbkJvdW5kcyhjb25zdCBOb2RlJiBu
b2RlKQogewotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG5vZGUuZG9jdW1lbnQoKS5mcmFt
ZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSBub2RlLmRvY3VtZW50KCkuZnJhbWUoKTsKICAgICBp
ZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byB2aWV3ID0gbWFrZVJl
ZlB0cihmcmFtZS0+dmlldygpKTsKKyAgICBSZWZQdHIgdmlldyA9IGZyYW1lLT52aWV3KCk7CiAg
ICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4geyB9OwogCkBAIC0xNjgyLDExICsxNjgyLDEx
IEBAIEludFJlY3QgV2ViUGFnZTo6YWJzb2x1dGVJbnRlcmFjdGlvbkJvdW5kcyhjb25zdCBOb2Rl
JiBub2RlKQogCiBJbnRSZWN0IFdlYlBhZ2U6OnJvb3RWaWV3SW50ZXJhY3Rpb25Cb3VuZHMoY29u
c3QgTm9kZSYgbm9kZSkKIHsKLSAgICBhdXRvIGZyYW1lID0gbWFrZVJlZlB0cihub2RlLmRvY3Vt
ZW50KCkuZnJhbWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gbm9kZS5kb2N1bWVudCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8gdmll
dyA9IG1ha2VSZWZQdHIoZnJhbWUtPnZpZXcoKSk7CisgICAgUmVmUHRyIHZpZXcgPSBmcmFtZS0+
dmlldygpOwogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHsgfTsKIApAQCAtMTg5Nyw3
ICsxODk3LDcgQEAgdm9pZCBXZWJQYWdlOjpjYW5jZWxBdXRvc2Nyb2xsKCkKIHZvaWQgV2ViUGFn
ZTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29uc3QgVmVjdG9yPEZsb2F0UmVjdD4mKT4mJiByZXBseSkKIHsKICAgICBSZWYgZnJhbWUg
PSBDaGVja2VkUmVmKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJh
bWUoKTsKLSAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQdHIoZnJhbWUtPnZpZXcoKSk7Cisg
ICAgUmVmUHRyIGZyYW1lVmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCFmcmFtZVZpZXcp
IHsKICAgICAgICAgcmVwbHkoeyB9KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTk3Niw3ICsxOTc2
LDcgQEAgdm9pZCBXZWJQYWdlOjpyZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWMKICAgICB9CiAKICAgICBmb3IgKGF1dG8mIG5v
ZGUgOiBoaXRUZXN0ZWROb2RlcykgewotICAgICAgICBhdXRvIGZyYW1lVmlldyA9IG1ha2VSZWZQ
dHIobm9kZS0+ZG9jdW1lbnQoKS52aWV3KCkpOworICAgICAgICBSZWZQdHIgZnJhbWVWaWV3ID0g
bm9kZS0+ZG9jdW1lbnQoKS52aWV3KCk7CiAgICAgICAgIGF1dG8qIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlciB8fCAhZnJhbWVWaWV3KQogICAgICAg
ICAgICAgY29udGludWU7CkBAIC0yNzIwLDcgKzI3MjAsNyBAQCBzdGF0aWMgdm9pZCBkYXRhRGV0
ZWN0b3JMaW5rUG9zaXRpb25JbmZvcm1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBJbnRlcmFjdGlv
bkluZgogCiBzdGF0aWMgdm9pZCBkYXRhRGV0ZWN0b3JJbWFnZU92ZXJsYXlQb3NpdGlvbkluZm9y
bWF0aW9uKGNvbnN0IEhUTUxFbGVtZW50JiBvdmVybGF5SG9zdCwgY29uc3QgSW50ZXJhY3Rpb25J
bmZvcm1hdGlvblJlcXVlc3QmIHJlcXVlc3QsIEludGVyYWN0aW9uSW5mb3JtYXRpb25BdFBvc2l0
aW9uJiBpbmZvKQogewotICAgIGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKG92ZXJsYXlIb3N0LmRv
Y3VtZW50KCkuZnJhbWUoKSk7CisgICAgUmVmUHRyIGZyYW1lID0gb3ZlcmxheUhvc3QuZG9jdW1l
bnQoKS5mcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjg5
NCw3ICsyODk0LDcgQEAgc3RhdGljIHZvaWQgc2VsZWN0aW9uUG9zaXRpb25JbmZvcm1hdGlvbihX
ZWJQYWdlJiBwYWdlLCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWEKICAgICAgICAgaWYgKGluZm8u
aXNTZWxlY3RhYmxlICYmICFoaXROb2RlLT5pc1RleHROb2RlKCkpCiAgICAgICAgICAgICBpbmZv
LmlzU2VsZWN0YWJsZSA9ICFpc0Fzc2lzdGFibGVFbGVtZW50KCpkb3duY2FzdDxFbGVtZW50Piho
aXROb2RlKSkgJiYgIXJlY3RJc1Rvb0JpZ0ZvclNlbGVjdGlvbihpbmZvLmJvdW5kcywgKnJlc3Vs
dC5pbm5lck5vZGVGcmFtZSgpKTsKICAgICB9Ci0gICAgZm9yIChhdXRvIGN1cnJlbnROb2RlID0g
bWFrZVJlZlB0cihoaXROb2RlKTsgY3VycmVudE5vZGU7IGN1cnJlbnROb2RlID0gY3VycmVudE5v
ZGUtPnBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSkgeworICAgIGZvciAoUmVmUHRyIGN1cnJlbnRO
b2RlID0gaGl0Tm9kZTsgY3VycmVudE5vZGU7IGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUtPnBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSkgewogICAgICAgICBhdXRvKiByZW5kZXJlciA9IGN1cnJl
bnROb2RlLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yOTYwLDExICsyOTYwLDExIEBAIHN0YXRpYyBib29sIGNhbkZvcmNlQ2Fy
ZXRGb3JQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHBvc2l0aW9uKQogCiBzdGF0aWMg
dm9pZCBwb3B1bGF0ZUNhcmV0Q29udGV4dChjb25zdCBIaXRUZXN0UmVzdWx0JiBoaXRUZXN0UmVz
dWx0LCBjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uUmVxdWVzdCYgcmVxdWVzdCwgSW50ZXJh
Y3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRpb24mIGluZm8pCiB7Ci0gICAgYXV0byBmcmFtZSA9IG1h
a2VSZWZQdHIoaGl0VGVzdFJlc3VsdC5pbm5lck5vZGVGcmFtZSgpKTsKKyAgICBSZWZQdHIgZnJh
bWUgPSBoaXRUZXN0UmVzdWx0LmlubmVyTm9kZUZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYXV0byB2aWV3ID0gbWFrZVJlZlB0cihmcmFtZS0+dmlldygp
KTsKKyAgICBSZWZQdHIgdmlldyA9IGZyYW1lLT52aWV3KCk7CiAgICAgaWYgKCF2aWV3KQogICAg
ICAgICByZXR1cm47CiAKQEAgLTMwNTcsNyArMzA1Nyw3IEBAIEludGVyYWN0aW9uSW5mb3JtYXRp
b25BdFBvc2l0aW9uIFdlYlBhZ2U6OnBvc2l0aW9uSW5mb3JtYXRpb24oY29uc3QgSW50ZXJhY3Rp
b25JCiAgICAgaWYgKG1fZm9jdXNlZEVsZW1lbnQpCiAgICAgICAgIGZvY3VzZWRFbGVtZW50UG9z
aXRpb25JbmZvcm1hdGlvbigqdGhpcywgKm1fZm9jdXNlZEVsZW1lbnQsIHJlcXVlc3QsIGluZm8p
OwogCi0gICAgYXV0byBoaXRUZXN0Tm9kZSA9IG1ha2VSZWZQdHIoaGl0VGVzdFJlc3VsdC5pbm5l
ck5vblNoYXJlZE5vZGUoKSk7CisgICAgUmVmUHRyIGhpdFRlc3ROb2RlID0gaGl0VGVzdFJlc3Vs
dC5pbm5lck5vblNoYXJlZE5vZGUoKTsKICAgICBpZiAoaXM8RWxlbWVudD4obm9kZVJlc3BvbmRp
bmdUb0NsaWNrRXZlbnRzKSkgewogICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4oKm5vZGVSZXNwb25kaW5nVG9DbGlja0V2ZW50cyk7CiAgICAgICAgIGVsZW1lbnRQb3Np
dGlvbkluZm9ybWF0aW9uKCp0aGlzLCBlbGVtZW50LCByZXF1ZXN0LCBoaXRUZXN0Tm9kZS5nZXQo
KSwgaW5mbyk7CkBAIC0zMTE3LDcgKzMxMTcsNyBAQCB2b2lkIFdlYlBhZ2U6OnBlcmZvcm1BY3Rp
b25PbkVsZW1lbnQodWludDMyX3QgYWN0aW9uKQogICAgICAgICBpZiAoaXM8UmVuZGVySW1hZ2U+
KCplbGVtZW50LnJlbmRlcmVyKCkpKSB7CiAgICAgICAgICAgICBVUkwgdXJsVG9Db3B5OwogICAg
ICAgICAgICAgU3RyaW5nIHRpdGxlVG9Db3B5OwotICAgICAgICAgICAgaWYgKGF1dG8gbGlua0Vs
ZW1lbnQgPSBtYWtlUmVmUHRyKGNvbnRhaW5pbmdMaW5rQW5jaG9yRWxlbWVudChlbGVtZW50KSkp
IHsKKyAgICAgICAgICAgIGlmIChSZWZQdHIgbGlua0VsZW1lbnQgPSBjb250YWluaW5nTGlua0Fu
Y2hvckVsZW1lbnQoZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICBpZiAoYXV0byB1cmwgPSBs
aW5rRWxlbWVudC0+aHJlZigpOyAhdXJsLmlzRW1wdHkoKSAmJiAhdXJsLnByb3RvY29sSXNKYXZh
U2NyaXB0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgdXJsVG9Db3B5ID0gdXJsOwogICAgICAg
ICAgICAgICAgICAgICB0aXRsZVRvQ29weSA9IGxpbmtFbGVtZW50LT5hdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKEhUTUxOYW1lczo6dGl0bGVBdHRyKTsKQEAgLTM3MjAsMTIgKzM3MjAs
MTIgQEAgdm9pZCBXZWJQYWdlOjpzaHJpbmtUb0ZpdENvbnRlbnQoWm9vbVRvSW5pdGlhbFNjYWxl
IHpvb21Ub0luaXRpYWxTY2FsZSkKICAgICBpZiAobV92aWV3cG9ydENvbmZpZ3VyYXRpb24uY2Fu
SWdub3JlU2NhbGluZ0NvbnN0cmFpbnRzKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8g
bWFpbkZyYW1lID0gbWFrZVJlZlB0cihtX21haW5GcmFtZS0+Y29yZUZyYW1lKCkpOworICAgIFJl
ZlB0ciBtYWluRnJhbWUgPSBtX21haW5GcmFtZS0+Y29yZUZyYW1lKCk7CiAgICAgaWYgKCFtYWlu
RnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gdmlldyA9IG1ha2VSZWZQdHIobWFp
bkZyYW1lLT52aWV3KCkpOwotICAgIGF1dG8gbWFpbkRvY3VtZW50ID0gbWFrZVJlZlB0cihtYWlu
RnJhbWUtPmRvY3VtZW50KCkpOworICAgIFJlZlB0ciB2aWV3ID0gbWFpbkZyYW1lLT52aWV3KCk7
CisgICAgUmVmUHRyIG1haW5Eb2N1bWVudCA9IG1haW5GcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBp
ZiAoIXZpZXcgfHwgIW1haW5Eb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC00MDQ3LDcg
KzQwNDcsNyBAQCB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVZpc2libGVDb250ZW50UmVjdHMoY29uc3Qg
VmlzaWJsZUNvbnRlbnRSZWN0VXBkYXRlSW5mbyYgdmlzaQogICAgICAgICB2aWV3cG9ydENvbmZp
Z3VyYXRpb25DaGFuZ2VkKCk7CiAKICAgICBkb3VibGUgbWluaW11bUVmZmVjdGl2ZURldmljZVdp
ZHRoV2hlbklnbm9yaW5nU2NhbGluZ0NvbnN0cmFpbnRzID0gKFsmXSB7Ci0gICAgICAgIGF1dG8g
ZG9jdW1lbnQgPSBtYWtlUmVmUHRyKGZyYW1lLmRvY3VtZW50KCkpOworICAgICAgICBSZWZQdHIg
ZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50KQogICAg
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTQyOTAsNyArNDI5MCw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwg
Q29tcGxldGlvCiB2b2lkIFdlYlBhZ2U6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90
IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSZWYgZnJhbWUgPSBDaGVja2VkUmVm
KG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkpLT5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBh
dXRvIHJvb3QgPSBtYWtlUmVmUHRyKGZyYW1lLT5zZWxlY3Rpb24oKS5yb290RWRpdGFibGVFbGVt
ZW50T3JEb2N1bWVudEVsZW1lbnQoKSk7CisgICAgUmVmUHRyIHJvb3QgPSBmcmFtZS0+c2VsZWN0
aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KCk7CiAgICAgYXV0byBz
ZWxlY3Rpb25SYW5nZSA9IGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS50b05vcm1hbGl6
ZWRSYW5nZSgpOwogICAgIGlmICghcm9vdCB8fCAhc2VsZWN0aW9uUmFuZ2UpIHsKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoKTsKQEAgLTQzNzIsNyArNDM3Miw3IEBAIHZvaWQgV2ViUGFnZTo6
cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoRG9jdW1lbnRFZGl0aW5nQ29udGV4dFJlcXVl
c3QgcmVxdWVzCiAgICAgfQogCiAgICAgUmVmIGZyYW1lID0gQ2hlY2tlZFJlZihtX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAgbWFrZVJlZlB0cihm
cmFtZS0+ZG9jdW1lbnQoKSktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OworICAgIFJlZlB0ciB7IGZyYW1lLT5kb2N1bWVudCgpIH0tPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBm
cmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAKQEAgLTQ2MzgsMTEgKzQ2MzgsMTEgQEAg
dm9pZCBXZWJQYWdlOjphbmltYXRpb25EaWRGaW5pc2hGb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6
OkVsZW1lbnQmIGFuaW1hdGVkRWxlbWUKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfTsKIAot
ICAgIGF1dG8gc3RhcnRDb250YWluZXIgPSBtYWtlUmVmUHRyKHNlbGVjdGlvbi5zdGFydCgpLmNv
bnRhaW5lck5vZGUoKSk7CisgICAgUmVmUHRyIHN0YXJ0Q29udGFpbmVyID0gc2VsZWN0aW9uLnN0
YXJ0KCkuY29udGFpbmVyTm9kZSgpOwogICAgIGlmIChzY2hlZHVsZUVkaXRvclN0YXRlVXBkYXRl
Rm9yU3RhcnRPckVuZENvbnRhaW5lck5vZGVJZk5lZWRlZChzdGFydENvbnRhaW5lci5nZXQoKSkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gZW5kQ29udGFpbmVyID0gbWFrZVJlZlB0cihz
ZWxlY3Rpb24uZW5kKCkuY29udGFpbmVyTm9kZSgpKTsKKyAgICBSZWZQdHIgZW5kQ29udGFpbmVy
ID0gc2VsZWN0aW9uLmVuZCgpLmNvbnRhaW5lck5vZGUoKTsKICAgICBpZiAoc3RhcnRDb250YWlu
ZXIgIT0gZW5kQ29udGFpbmVyKQogICAgICAgICBzY2hlZHVsZUVkaXRvclN0YXRlVXBkYXRlRm9y
U3RhcnRPckVuZENvbnRhaW5lck5vZGVJZk5lZWRlZChlbmRDb250YWluZXIuZ2V0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29y
ZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCmluZGV4IDU0NDRjZmQ2NTkz
YmRjZTM1NzI2YWExZGUxMjFiN2E3MTE1NTcxNjEuLjFmOTZlMDg0MTRlMjVjN2ExMDlhM2I5ZTI5
ZDgyN2ZmYzdhYTcwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
bW0KQEAgLTQxMywxNCArNDEzLDE0IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0Fy
ZWE6OmFkZENvbW1pdEhhbmRsZXJzKCkKICAgICBpZiAobV93ZWJQYWdlLmZpcnN0Rmx1c2hBZnRl
ckNvbW1pdCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21t
aXRIYW5kbGVyOltyZXRhaW5lZFBhZ2UgPSBtYWtlUmVmUHRyKCZtX3dlYlBhZ2UpXSB7CisgICAg
W0NBVHJhbnNhY3Rpb24gYWRkQ29tbWl0SGFuZGxlcjpbcmV0YWluZWRQYWdlID0gUmVmIHsgbV93
ZWJQYWdlIH1dIHsKICAgICAgICAgaWYgKFBhZ2UqIGNvcmVQYWdlID0gcmV0YWluZWRQYWdlLT5j
b3JlUGFnZSgpKSB7CiAgICAgICAgICAgICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IHJldGFpbmVk
UGFnZS0+bWFpbkZyYW1lKCkpCiAgICAgICAgICAgICAgICAgY29yZVBhZ2UtPmluc3BlY3RvckNv
bnRyb2xsZXIoKS53aWxsQ29tcG9zaXRlKCpjb3JlRnJhbWUpOwogICAgICAgICB9CiAgICAgfSBm
b3JQaGFzZTprQ0FUcmFuc2FjdGlvblBoYXNlUHJlQ29tbWl0XTsKIAotICAgIFtDQVRyYW5zYWN0
aW9uIGFkZENvbW1pdEhhbmRsZXI6W3JldGFpbmVkUGFnZSA9IG1ha2VSZWZQdHIoJm1fd2ViUGFn
ZSldIHsKKyAgICBbQ0FUcmFuc2FjdGlvbiBhZGRDb21taXRIYW5kbGVyOltyZXRhaW5lZFBhZ2Ug
PSBSZWYgeyBtX3dlYlBhZ2UgfV0gewogICAgICAgICBpZiAoUGFnZSogY29yZVBhZ2UgPSByZXRh
aW5lZFBhZ2UtPmNvcmVQYWdlKCkpIHsKICAgICAgICAgICAgIGlmIChGcmFtZSogY29yZUZyYW1l
ID0gcmV0YWluZWRQYWdlLT5tYWluRnJhbWUoKSkKICAgICAgICAgICAgICAgICBjb3JlUGFnZS0+
aW5zcGVjdG9yQ29udHJvbGxlcigpLmRpZENvbXBvc2l0ZSgqY29yZUZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KaW5kZXgg
MTc1MWY2OTRhMGZlMTcyNzFmMTU5NTQxMWRkMDVhZDVmMjE3NzVkNS4uYzI1NWYzOGMzNThhMGM1
YzRlMTdhNjYyMWQ3YjM3ZGRlNDVmNjFlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTg5MSw3ICs4OTEsNyBAQCB2b2lk
IFdlYlBhZ2U6OnBlcmZvcm1JbW1lZGlhdGVBY3Rpb25IaXRUZXN0QXRMb2NhdGlvbihXZWJDb3Jl
OjpGbG9hdFBvaW50IGxvY2F0aQogICAgIH07CiAKICAgICBVUkwgYWJzb2x1dGVMaW5rVVJMID0g
aGl0VGVzdFJlc3VsdC5hYnNvbHV0ZUxpbmtVUkwoKTsKLSAgICBpZiAoYXV0byB1cmxFbGVtZW50
ID0gbWFrZVJlZlB0cihoaXRUZXN0UmVzdWx0LlVSTEVsZW1lbnQoKSk7ICFhYnNvbHV0ZUxpbmtV
UkwuaXNFbXB0eSgpICYmIHVybEVsZW1lbnQpIHsKKyAgICBpZiAoYXV0byB1cmxFbGVtZW50ID0g
UmVmUHRyIHsgaGl0VGVzdFJlc3VsdC5VUkxFbGVtZW50KCkgfTsgIWFic29sdXRlTGlua1VSTC5p
c0VtcHR5KCkgJiYgdXJsRWxlbWVudCkgewogICAgICAgICBhdXRvIGVsZW1lbnRSYW5nZSA9IG1h
a2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqdXJsRWxlbWVudCk7CiAgICAgICAgIGltbWVk
aWF0ZUFjdGlvblJlc3VsdC5saW5rVGV4dEluZGljYXRvciA9IFRleHRJbmRpY2F0b3I6OmNyZWF0
ZVdpdGhSYW5nZShlbGVtZW50UmFuZ2UsIGluZGljYXRvck9wdGlvbnMoZWxlbWVudFJhbmdlKSwg
VGV4dEluZGljYXRvclByZXNlbnRhdGlvblRyYW5zaXRpb246OkZhZGVJbik7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbSBiL1NvdXJjZS9XZWJL
aXRMZWdhY3kvbWFjL0RPTS9ET00ubW0KaW5kZXggMTZlNzdlODEyMDczNDdkYTc4M2NhY2RjMDg4
OWRlNjQyZTg4M2U3Mi4uMzlkODYwYzI5NWE3YzA4ZjBhN2Y5NjgzOTNhMzgzNTViNDBmODQ0NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NLm1tCkBAIC01ODQsNyArNTg0LDcgQEAgLSAoQ0dJ
bWFnZVJlZilyZW5kZXJlZEltYWdlRm9yY2luZ0JsYWNrVGV4dDooQk9PTClmb3JjZUJsYWNrVGV4
dAogI2VuZGlmCiB7CiAgICAgYXV0byByYW5nZSA9IG1ha2VTaW1wbGVSYW5nZSgqY29yZShzZWxm
KSk7Ci0gICAgYXV0byBmcmFtZSA9IG1ha2VSZWZQdHIocmFuZ2Uuc3RhcnQuZG9jdW1lbnQoKS5m
cmFtZSgpKTsKKyAgICBSZWZQdHIgZnJhbWUgPSByYW5nZS5zdGFydC5kb2N1bWVudCgpLmZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGll
bnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0
TWVudUNsaWVudC5tbQppbmRleCA0N2Y4NjE5MjUwNTg0ODcwMWNhYzcwOTk3NWViOWVlMTdjODlk
YjRiLi4xNjVjNWJmMDBhYzZhMWE4MWY4ZTcyMzE1MTQzNDI4MzcwNzgyMTc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNs
aWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
b250ZXh0TWVudUNsaWVudC5tbQpAQCAtMTk4LDExICsxOTgsMTEgQEAgUmV0YWluUHRyPE5TSW1h
Z2U+IFdlYkNvbnRleHRNZW51Q2xpZW50OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBp
Y2tlckl0ZW0KICAgICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRv
IG5vZGUgPSBtYWtlUmVmUHRyKHBhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLmNvbnRleHQo
KS5oaXRUZXN0UmVzdWx0KCkuaW5uZXJOb2RlKCkpOworICAgIFJlZlB0ciBub2RlID0gcGFnZS0+
Y29udGV4dE1lbnVDb250cm9sbGVyKCkuY29udGV4dCgpLmhpdFRlc3RSZXN1bHQoKS5pbm5lck5v
ZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBhdXRvIGZy
YW1lVmlldyA9IG1ha2VSZWZQdHIobm9kZS0+ZG9jdW1lbnQoKS52aWV3KCkpOworICAgIFJlZlB0
ciBmcmFtZVZpZXcgPSBub2RlLT5kb2N1bWVudCgpLnZpZXcoKTsKICAgICBpZiAoIWZyYW1lVmll
dykgewogICAgICAgICAvLyBUaGlzIG1ldGhvZCBzaG91bGRuJ3QgYmUgY2FsbGVkIGluIGNhc2Vz
IHdoZXJlIHRoZSBjb250cm9sbGVkIG5vZGUgaXNuJ3QgaW4gYSByZW5kZXJlZCB2aWV3LgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJEcmFnQ2xpZW50Lm1tCmluZGV4IGQwYTk1ZWI3NGM1
OGJmYTA5MWMxMWQ0MDk5MTNmOGY3ZjM0MjVlYjMuLjI1YWFjMjg1NGJhMGU0Mjc0MGU2M2Q5OTk4
MTAzZjZhYjY4ODlkZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkRyYWdDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRHJhZ0NsaWVudC5tbQpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQg
V2ViRHJhZ0NsaWVudDo6YmVnaW5EcmFnKERyYWdJdGVtLCBGcmFtZSYsIGNvbnN0IEludFBvaW50
JiwgY29uc3QgSW50UG9pbnQmCiAKIHZvaWQgV2ViRHJhZ0NsaWVudDo6ZGVjbGFyZUFuZFdyaXRl
RHJhZ0ltYWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7Ci0gICAgaWYg
KGF1dG8gZnJhbWUgPSBtYWtlUmVmUHRyKGVsZW1lbnQuZG9jdW1lbnQoKS5mcmFtZSgpKSkKKyAg
ICBpZiAoUmVmUHRyIGZyYW1lID0gZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCkpCiAgICAgICAg
IGZyYW1lLT5lZGl0b3IoKS53cml0ZUltYWdlVG9QYXN0ZWJvYXJkKCpQYXN0ZWJvYXJkOjpjcmVh
dGVGb3JEcmFnQW5kRHJvcChQYWdlUGFzdGVib2FyZENvbnRleHQ6OmNyZWF0ZShmcmFtZS0+cGFn
ZUlEKCkpKSwgZWxlbWVudCwgdXJsLCBsYWJlbCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXgg
YjMzY2NkNGJiYTQ2YWIwNDI2MjBiOWUxMGY1Zjg0NTNlOTJhNTk2My4uMWE1ZTFhMzkyODk0YjA0
ODEzOWZhYjAwZWY1YjQ2MGZkNzBiMTk4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTI5MCw4ICsy
OTAsOCBAQCAtIChET01FbGVtZW50ICopZWxlbWVudFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUg
aW5Gb3JtOihET01FbGVtZW50ICopZm9ybQogICAgIFNjcmlwdERpc2FsbG93ZWRTY29wZTo6SW5N
YWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKICAgICBBdG9tU3RyaW5nIHRhcmdldE5h
bWUgPSBuYW1lOwogICAgIGZvciAoYXV0byYgd2Vha0VsZW1lbnQgOiBmb3JtRWxlbWVudC0+dW5z
YWZlQXNzb2NpYXRlZEVsZW1lbnRzKCkpIHsKLSAgICAgICAgYXV0byBlbGVtZW50ID0gbWFrZVJl
ZlB0cih3ZWFrRWxlbWVudC5nZXQoKSk7Ci0gICAgICAgIGlmIChlbGVtZW50LT5hc0Zvcm1Bc3Nv
Y2lhdGVkRWxlbWVudCgpLT5uYW1lKCkgPT0gdGFyZ2V0TmFtZSkKKyAgICAgICAgUmVmUHRyIGVs
ZW1lbnQgeyB3ZWFrRWxlbWVudC5nZXQoKSB9OworICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVt
ZW50LT5hc0Zvcm1Bc3NvY2lhdGVkRWxlbWVudCgpLT5uYW1lKCkgPT0gdGFyZ2V0TmFtZSkKICAg
ICAgICAgICAgIHJldHVybiBraXQoZWxlbWVudC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBu
aWw7CkBAIC0zMzcsOCArMzM3LDggQEAgLSAoTlNBcnJheSAqKWNvbnRyb2xzSW5Gb3JtOihET01F
bGVtZW50ICopZm9ybQogCiAgICAgU2NyaXB0RGlzYWxsb3dlZFNjb3BlOjpJbk1haW5UaHJlYWQg
c2NyaXB0RGlzYWxsb3dlZFNjb3BlOwogICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlTlNBcnJheShm
b3JtRWxlbWVudC0+dW5zYWZlQXNzb2NpYXRlZEVsZW1lbnRzKCksIFtdIChhdXRvJiB3ZWFrRWxl
bWVudCkgLT4gRE9NRWxlbWVudCAqIHsKLSAgICAgICAgYXV0byBjb3JlRWxlbWVudCA9IG1ha2VS
ZWZQdHIod2Vha0VsZW1lbnQuZ2V0KCkpOwotICAgICAgICBpZiAoIWNvcmVFbGVtZW50LT5hc0Zv
cm1Bc3NvY2lhdGVkRWxlbWVudCgpLT5pc0VudW1lcmF0YWJsZSgpKSAvLyBTa2lwIG9wdGlvbiBl
bGVtZW50cywgb3RoZXIgZHVkcworICAgICAgICBSZWZQdHIgY29yZUVsZW1lbnQgeyB3ZWFrRWxl
bWVudC5nZXQoKSB9OworICAgICAgICBpZiAoIWNvcmVFbGVtZW50IHx8ICFjb3JlRWxlbWVudC0+
YXNGb3JtQXNzb2NpYXRlZEVsZW1lbnQoKS0+aXNFbnVtZXJhdGFibGUoKSkgLy8gU2tpcCBvcHRp
b24gZWxlbWVudHMsIG90aGVyIGR1ZHMKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAgICAgICAg
IHJldHVybiBraXQoY29yZUVsZW1lbnQuZ2V0KCkpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDY4N2ZkNDgzY2I4Yjk4Y2IwOTAzZjU0
ZDI3OWU5MzRmMWMxZWE0MDcuLmY5MjNhODk0ZDliMmY4MTc1YjM0ZTg0NzdmODlhNjJlZGQ5NDg3
N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTk1
MTAsNyArOTUxMCw3IEBAIC0gKHZvaWQpdXBkYXRlVGV4dFRvdWNoQmFyCiAKICAgICAgICAgICAg
ICAgICBbX3ByaXZhdGUtPl90ZXh0VG91Y2hCYXJJdGVtQ29udHJvbGxlciBzZXRDdXJyZW50VGV4
dEFsaWdubWVudDpuc1RleHRBbGlnbm1lbnRGcm9tUmVuZGVyU3R5bGUoc3R5bGUpXTsKIAotICAg
ICAgICAgICAgICAgIGF1dG8gZW5jbG9zaW5nTGlzdEVsZW1lbnQgPSBtYWtlUmVmUHRyKGVuY2xv
c2luZ0xpc3Qoc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSkpOworICAgICAgICAg
ICAgICAgIFJlZlB0ciBlbmNsb3NpbmdMaXN0RWxlbWVudCA9IGVuY2xvc2luZ0xpc3Qoc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiAgICAgICAgICAgICAgICAgaWYgKGVuY2xv
c2luZ0xpc3RFbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChpczxIVE1MVUxpc3RF
bGVtZW50PigqZW5jbG9zaW5nTGlzdEVsZW1lbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAg
W1tfcHJpdmF0ZS0+X3RleHRUb3VjaEJhckl0ZW1Db250cm9sbGVyIHdlYlRleHRMaXN0VG91Y2hC
YXJWaWV3Q29udHJvbGxlcl0gc2V0Q3VycmVudExpc3RUeXBlOldlYkxpc3RUeXBlOjpVbm9yZGVy
ZWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDc1ZTExZWI1MzYwNmFlNjBjNzVhZmU5NDk1NjY1ZmZhOTlmMjc0YjcuLjIxYTI1MjVmMWJkYjA5
MTQ0MTQyYzhhNTk4OTcwODc4MDE0MmMzNmUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMS0wOS0yMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERyb3AgbWFrZVJlZlB0cigpIGFu
ZCB1c2UgUmVmUHRyIHsgfSBkaXJlY3RseSBpbnN0ZWFkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzA1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxv
b3AuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDktMjEgIFBo
aWxsaXAgTWF0ZXMgIDxwbWF0ZXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBGaXggSlNDIHRlc3Qg
cnVubmVyIHdhcm5pbmdzIGFuZCBlcnJvcnMgb24gbGludXgKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1J1bkxvb3AuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvUnVuTG9vcC5jcHAKaW5kZXggZDM4OGJmODA1NzJmMDI4M2VmZmRhMDQ2OWRiMDQz
NjlkOTliN2I1Zi4uOTQ4NzRhYWMzMTBiNDZhNWE1OGM4MTYxYjdjYTJkNWMzMGI2MTkzNiAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKKysrIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvUnVuTG9vcC5jcHAKQEAgLTIyMCw3ICsyMjAs
NyBAQCBURVNUKFdURl9SdW5Mb29wLCBUaHJlYWRUZXJtaW5hdGlvblNlbGZSZWZlcmVuY2VDbGVh
bnVwKQogICAgIFJlZlB0cjxSdW5Mb29wPiBydW5Mb29wOwogCiAgICAgVGhyZWFkOjpjcmVhdGUo
IlJ1bkxvb3BUaHJlYWRUZXJtaW5hdGlvblNlbGZSZWZlcmVuY2VDbGVhbnVwIiwgWyZdIHsKLSAg
ICAgICAgcnVuTG9vcCA9IG1ha2VSZWZQdHIoUnVuTG9vcDo6Y3VycmVudCgpKTsKKyAgICAgICAg
cnVuTG9vcCA9ICZSdW5Mb29wOjpjdXJyZW50KCk7CiAKICAgICAgICAgLy8gVGhpcyBzdG9yZXMg
YSBSdW5Mb29wIHJlZmVyZW5jZSBpbiB0aGUgZGlzcGF0Y2ggcXVldWUgdGhhdCB3aWxsIG5vdCBi
ZSByZWxlYXNlZAogICAgICAgICAvLyB2aWEgdGhlIHVzdWFsIGRpc3BhdGNoLCBidXQgc2hvdWxk
IHN0aWxsIGJlIHJlbGVhc2VkIHVwb24gdGhyZWFkIHRlcm1pbmF0aW9uLgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>