<?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>110669</bug_id>
          
          <creation_ts>2013-02-22 17:33:52 -0800</creation_ts>
          <short_desc>[V8] Rename xxxCallback() to xxxMethod(), and xxxCallbackCustom() to xxxMethodCustom()</short_desc>
          <delta_ts>2013-02-25 09:39:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>110667</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>benjamin</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>840162</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-22 17:33:52 -0800</bug_when>
    <thetext>This is one of steps to insert TRACE_EVENT_STATE() macros into DOM bindings. See https://bugs.webkit.org/show_bug.cgi?id=110667#c0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840179</commentid>
    <comment_count>1</comment_count>
      <attachid>189876</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-22 17:43:05 -0800</bug_when>
    <thetext>Created attachment 189876
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840458</commentid>
    <comment_count>2</comment_count>
      <attachid>189876</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 14:25:12 -0800</bug_when>
    <thetext>Comment on attachment 189876
Patch

Clearing flags on attachment: 189876

Committed r143850: &lt;http://trac.webkit.org/changeset/143850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>840459</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-23 14:25:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>189876</attachid>
            <date>2013-02-22 17:43:05 -0800</date>
            <delta_ts>2013-02-23 14:25:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110669-20130222173924.patch</filename>
            <type>text/plain</type>
            <size>173377</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZhZGY3YjVlZDE1ZDZk
MGViN2IyZTEyNTY2OGJlMDZiNjRjMzAzZi4uNmFkYTAyMGIzZGIwNTc1ZWU1NzE0YWM1NGUzMWM2
NTI0NTBjNDExYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDMxOSBAQAogMjAxMy0wMi0yMiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBSZW5hbWUg
eHh4Q2FsbGJhY2soKSB0byB4eHhNZXRob2QoKSwgYW5kIHh4eENhbGxiYWNrQ3VzdG9tKCkgdG8g
eHh4TWV0aG9kQ3VzdG9tKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTExMDY2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFRoaXMgaXMgb25lIG9mIHN0ZXBzIHRvIGluc2VydCBUUkFDRV9FVkVOVF9TVEFU
RSgpCisgICAgICAgIG1hY3JvcyBpbnRvIERPTSBiaW5kaW5ncy4KKyAgICAgICAgU2VlIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA2NjcjYzAKKworICAgICAgICBJ
biB0aGUgbmV3IHdvcmxkLCAiQ2FsbGJhY2siIGlzIHVzZWQgdG8gcmVmZXIgdGhhdCBpdAorICAg
ICAgICBpcyBhIGZ1bmN0aW9uIGNhbGxlZCBiYWNrIGJ5IFY4LiBDdXJyZW50bHkgIkNhbGxiYWNr
IiBpcworICAgICAgICB1c2VkIGZvciBib3RoIFY4IGNhbGxiYWNrcywgRE9NIG1ldGhvZHMgYW5k
IERPTSBjb25zdHJ1Y3RvcnMuCisgICAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGluY29uc2lz
dGVuY3kuCisKKyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAoR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIp
OgorICAgICAgICAoR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFjayk6CisgICAgICAg
IChHZW5lcmF0ZUZ1bmN0aW9uQ2FsbGJhY2spOgorICAgICAgICAoR2VuZXJhdGVOb25TdGFuZGFy
ZEZ1bmN0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGbG9hdDY0QXJyYXlWOEludGVybmFsOjpmb29NZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6RmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6c2V0TWV0aG9kKToKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6
ZXhjaXRpbmdGdW5jdGlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0aXZlRE9N
T2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlQXR0ckdldHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RDdXN0b21OYW1lZEdldHRlclY4SW50ZXJu
YWw6OmFub3RoZXJGdW5jdGlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6aXRlbU1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjphZGRFdmVudExpc3RlbmVy
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OnJl
bW92ZUV2ZW50TGlzdGVuZXJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEV2ZW50VGFy
Z2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1l
dGhvZDFNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6
OnN1cHBsZW1lbnRhbE1ldGhvZDJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVy
ZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDNNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDRNZXRob2Qp
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJ
bnRlcmZhY2VUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJWOEludGVybmFsOjptZXRob2RNZXRob2QpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhvZE1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhvZFdpdGhB
cmdzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nTWV0
aG9kTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25nTWV0
aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
Om9iak1ldGhvZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
b2JqTWV0aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFyZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VNZXRob2QpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OnNl
cmlhbGl6ZWRWYWx1ZU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6b3B0aW9uc09iamVjdE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRl
cm5hbDo6bWV0aG9kV2l0aEV4Y2VwdGlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6Y3VzdG9tTWV0aG9kTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RPYmpWOEludGVybmFsOjpjdXN0b21NZXRob2RXaXRoQXJnc01ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6YWRkRXZlbnRMaXN0ZW5lck1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6cmVtb3ZlRXZlbnRMaXN0ZW5lck1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRl
Vm9pZE1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdFN0YXRlT2JqTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFs
Ojp3aXRoU2NyaXB0U3RhdGVWb2lkRXhjZXB0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25NZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25D
b250ZXh0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNj
cmlwdFN0YXRlT2JqRXhjZXB0aW9uTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlV2l0aFNw
YWNlc01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNj
cmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFsQXJnTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoTm9uT3B0aW9uYWxBcmdBbmRPcHRp
b25hbEFyZ01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0
aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzTWV0aG9kKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzVW5kZWZpbmVkTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmdNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhDYWxsYmFja0Fy
Z01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0
aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9k
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb25kaXRpb25hbE1ldGhv
ZDFNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlv
bmFsTWV0aG9kMk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
Y29uZGl0aW9uYWxNZXRob2QzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOElu
dGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0
T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDJNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QzTWV0aG9kKToKKyAgICAgICAg
KFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kNE1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDVNZXRo
b2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRo
b2Q2TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9h
ZGVkTWV0aG9kN01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6
b3ZlcmxvYWRlZE1ldGhvZDhNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50
ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2Q5TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RP
YmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMTBNZXRob2QpOgorICAgICAgICAoV2ViQ29y
ZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2FkZWRNZXRob2QxMU1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZE1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RNZXRob2QpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9kV2l0aE9wdGlv
bmFsTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjbGFzc01l
dGhvZDJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJs
b2FkZWRNZXRob2QxMk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6Y2xhc3NNZXRob2RXaXRoQ2xhbXBNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9i
alY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxTWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lTWV0aG9kMk1ldGhvZCk6
CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRN
ZXRob2QxTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjplbmFi
bGVkUGVyQ29udGV4dE1ldGhvZDJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4
SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6
VGVzdE9ialY4SW50ZXJuYWw6OmRvbVN0cmluZ0xpc3RGdW5jdGlvbk1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Z2V0U1ZHRG9jdW1lbnRNZXRob2QpOgorICAg
ICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0Mk1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDRNZXRob2QpOgorICAgICAgICAo
V2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ1TWV0aG9kKToKKyAgICAgICAgKFdl
YkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRGdW5jdGlvbk1ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRGdW5jdGlv
bk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3JhbmdlTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpzdHJpY3RGdW5jdGlv
bk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNT
dHJpbmdNZXRob2RNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OnZhcmlhZGljRG91YmxlTWV0aG9kTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RNZXRob2QpOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAg
ICAgICAoVjhUZXN0T2JqKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjphY2NlcHRUcmFu
c2Zlckxpc3RNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6Om11bHRpVHJhbnNmZXJMaXN0TWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RU
eXBlZGVmcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpm
dW5jTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om11
bHRpVHJhbnNmZXJMaXN0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnNldFNoYWRvd01ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRl
ZnNWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2QpOgorICAgICAgICAoV2Vi
Q29yZTo6VGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6bnVsbGFibGVBcnJheUFyZ01ldGhvZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjpmdW5jV2l0aENsYW1wTWV0
aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OmltbXV0YWJs
ZVBvaW50RnVuY3Rpb25NZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXN0VHlwZWRlZnNWOEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uMk1ldGhvZCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXN0VHlwZWRlZnNWOEludGVybmFsOjptZXRob2RXaXRoRXhjZXB0aW9u
TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJl
VjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Q2xpcGJvYXJkQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Q2xpcGJvYXJkOjpjbGVh
ckRhdGFNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhDbGlwYm9hcmQ6OnNldERy
YWdJbWFnZU1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29u
c29sZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnRyYWNlTWV0aG9k
Q3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6YXNzZXJ0TWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4Q29uc29sZTo6cHJvZmlsZU1ldGhvZEN1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOENvbnNvbGU6OnByb2ZpbGVFbmRNZXRob2RDdXN0b20pOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOENyeXB0bzo6Z2V0UmFuZG9tVmFsdWVzTWV0aG9kQ3VzdG9tKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTUZvcm1EYXRhOjphcHBlbmRNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJp
bmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOERPTVdpbmRvdzo6YWRkRXZlbnRMaXN0ZW5lck1ldGhvZEN1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTVdpbmRvdzo6cmVtb3ZlRXZlbnRMaXN0ZW5lck1ldGhvZEN1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VNZXRob2RDdXN0b20pOgor
ICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnRvU3RyaW5nTWV0aG9kQ3VzdG9tKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpyZWxlYXNlRXZlbnRzTWV0aG9kQ3VzdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpjYXB0dXJlRXZlbnRzTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV2luZG93OjpzaG93TW9kYWxEaWFsb2dNZXRob2RD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6Om9wZW5NZXRob2RDdXN0b20p
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnNldFRpbWVvdXRNZXRob2RDdXN0b20p
OgorICAgICAgICAoV2ViQ29yZTo6VjhET01XaW5kb3c6OnNldEludGVydmFsTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOERhdGFWaWV3OjpnZXRJbnQ4TWV0aG9kQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4RGF0YVZpZXc6OmdldFVpbnQ4TWV0aG9kQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4RGF0YVZpZXc6OnNldEludDhNZXRob2RDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6VjhEYXRhVmlldzo6c2V0VWludDhNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZU1ldGhvZEN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRD
dXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEZXZpY2VNb3Rpb25FdmVudDo6aW5pdERl
dmljZU1vdGlvbkV2ZW50TWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlY4RGV2aWNlT3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRNZXRo
b2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmV2YWx1YXRlTWV0aG9kQ3VzdG9t
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4RG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdE1ldGhvZEN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9u
TWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4R2VvbG9jYXRpb246OndhdGNoUG9z
aXRpb25NZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxB
bGxDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTEFsbENvbGxl
Y3Rpb246Oml0ZW1NZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MQWxsQ29s
bGVjdGlvbjo6bmFtZWRJdGVtTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpW
OEhUTUxDYW52YXNFbGVtZW50OjpnZXRDb250ZXh0TWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTE1ldGhvZEN1c3RvbSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SFRNTERvY3VtZW50Ojp3cml0ZU1ldGhvZEN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6d3JpdGVsbk1ldGhvZEN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEhUTUxEb2N1bWVudDo6b3Blbk1ldGhvZEN1c3RvbSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1h
Z2VFbGVtZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6djhIVE1MSW1hZ2VF
bGVtZW50Q29uc3RydWN0b3JNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1M
SW1hZ2VFbGVtZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2VNZXRob2RDdXN0b20pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRJ
dGVtTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0
aW9uOjpyZW1vdmVNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MT3B0aW9u
c0NvbGxlY3Rpb246OmFkZE1ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhI
VE1MU2VsZWN0RWxlbWVudDo6cmVtb3ZlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlz
dG9yeTo6cHVzaFN0YXRlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SGlzdG9y
eTo6cmVwbGFjZVN0YXRlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0
b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJ
bmplY3RlZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdE1ldGhvZEN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWVN
ZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmplY3RlZFNjcmlwdEhvc3Q6Omlz
SFRNTEFsbENvbGxlY3Rpb25NZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnR5cGVNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJ
bmplY3RlZFNjcmlwdEhvc3Q6OmZ1bmN0aW9uRGV0YWlsc01ldGhvZEN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzTWV0
aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRF
dmVudExpc3RlbmVyc01ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVk
U2NyaXB0SG9zdDo6aW5zcGVjdE1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOElu
amVjdGVkU2NyaXB0SG9zdDo6ZGF0YWJhc2VJZE1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6c3RvcmFnZUlkTWV0aG9kQ3VzdG9tKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZU1ldGhvZEN1c3RvbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJp
YWJsZVZhbHVlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhJ
bnNwZWN0b3JGcm9udGVuZEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnNw
ZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0TWV0aG9kQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVNZXRob2RD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlY29y
ZEFjdGlvblRha2VuTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpyZWNvcmRQYW5lbFNob3duTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpyZWNvcmRTZXR0aW5nQ2hhbmdlZE1ldGhv
ZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6
OmV2YWx1YXRlTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4SmF2YVNjcmlwdENh
bGxGcmFtZTo6cmVzdGFydE1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOEphdmFT
Y3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWVNZXRob2RDdXN0b20pOgorICAgICAgICAo
V2ViQ29yZTo6VjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZVR5cGVNZXRob2RDdXN0b20pOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAg
ICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQXR0ckdldHRlckN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhM
b2NhdGlvbjo6dmFsdWVPZk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOExvY2F0
aW9uOjp0b1N0cmluZ01ldGhvZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TWVzc2FnZUV2
ZW50Ojppbml0TWVzc2FnZUV2ZW50TWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
TWVzc2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2FnZUV2ZW50TWV0aG9kQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZU1ldGhvZEN1c3RvbSk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpWOE5vZGU6Omluc2VydEJlZm9yZU1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOE5vZGU6OnJlcGxhY2VDaGlsZE1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpW
OE5vZGU6OnJlbW92ZUNoaWxkTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9k
ZTo6YXBwZW5kQ2hpbGRNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOE5v
dGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb25NZXRob2RDdXN0b20pOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb25NZXRob2RDdXN0b20p
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtTWV0
aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlv
bkN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNRTFRyYW5zYWN0aW9uOjpleGVjdXRl
U3FsTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFu
c2FjdGlvblN5bmNDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhTUUxUcmFuc2FjdGlv
blN5bmM6OmV4ZWN1dGVTcWxNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNWR0xlbmd0
aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHNNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJzTWV0
aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRCdWZmZXJQYXJhbWV0ZXJNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50
UGFyYW1ldGVyTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRQYXJhbWV0ZXJNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXJNZXRob2RDdXN0b20p
OgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFJlbmRlcmJ1
ZmZlclBhcmFtZXRlck1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6Z2V0U2hhZGVyUGFyYW1ldGVyTWV0aG9kQ3VzdG9tKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTdXBwb3J0ZWRFeHRlbnNpb25z
TWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRUZXhQYXJhbWV0ZXJNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1NZXRob2RDdXN0b20pOgorICAgICAgICAoV2Vi
Q29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFZlcnRleEF0dHJpYk1ldGhvZEN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFm
dk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4
dDo6dW5pZm9ybTFpdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJmdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdk1ldGhvZEN1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNmdk1ldGhvZEN1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTNpdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTRmdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdM
UmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTRpdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDJmdk1ldGhvZEN1c3Rv
bSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1h
dHJpeDNmdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliMWZ2TWV0aG9kQ3VzdG9tKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp2ZXJ0ZXhBdHRyaWIy
ZnZNZXRob2RDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYjNmdk1ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdl
YkdMUmVuZGVyaW5nQ29udGV4dDo6dmVydGV4QXR0cmliNGZ2TWV0aG9kQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlY4V29ya2VyQ29udGV4dDo6aW1wb3J0U2NyaXB0c01ldGhvZEN1c3RvbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRNZXRob2RDdXN0
b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhXb3JrZXJDb250ZXh0OjpzZXRJbnRlcnZhbE1ldGhv
ZEN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4V29ya2VyOjpwb3N0TWVzc2FnZU1ldGhvZEN1c3RvbSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6VjhYTUxIdHRwUmVxdWVzdDo6b3Blbk1ldGhvZEN1c3RvbSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFhNTEh0dHBSZXF1ZXN0OjpzZW5kTWV0aG9kQ3VzdG9tKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6c2V0UGFyYW1ldGVyTWV0aG9kQ3Vz
dG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyTWV0
aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WFNMVFByb2Nlc3Nvcjo6cmVtb3ZlUGFy
YW1ldGVyTWV0aG9kQ3VzdG9tKToKKworMjAxMy0wMi0yMiAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIEFkZGVkIG1p
c3NpbmcgI2lmIFBMQVRGT1JNKENIUk9NSVVNKS4KIAogICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCmluZGV4IGZiYWRlYjBhYmYzYjU5YjRlZjgzZmE2M2FkMWE3ODc5MGJmMzAyOGEuLjIy
ZGY2MTNkNDNlZDU1OTY5N2MwMzAyZTQzNmNiOGIxMjllZmFhNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zOTgsNyAr
Mzk4LDcgQEAgRU5ECiAgICAgICAgICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdl
bmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7
CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJp
bmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgICAgICBwdXNoKEBoZWFkZXJD
b250ZW50LCA8PEVORCk7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gJHtuYW1lfU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJik7
CiBFTkQKICAgICAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgfQpAQCAt
NzkxLDcgKzc5MSw3IEBAIHN1YiBHZW5lcmF0ZURvbWFpblNhZmVGdW5jdGlvbkdldHRlcgogICAg
ICAgICAkc2lnbmF0dXJlID0gInY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpIjsKICAgICB9CiAK
LSAgICBteSAkbmV3VGVtcGxhdGVTdHJpbmcgPSAidjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldygk
e2ludGVyZmFjZU5hbWV9VjhJbnRlcm5hbDo6JHtmdW5jTmFtZX1DYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgJHNpZ25hdHVyZSkiOworICAgIG15ICRuZXdUZW1wbGF0ZVN0cmluZyA9ICJ2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke2Z1bmNOYW1l
fU1ldGhvZCwgdjhVbmRlZmluZWQoKSwgJHNpZ25hdHVyZSkiOwogCiAgICAgQWRkVG9JbXBsSW5j
bHVkZXMoIkZyYW1lLmgiKTsKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7CkBA
IC0xNDU3LDcgKzE0NTcsNyBAQCBzdWIgR2VuZXJhdGVPdmVybG9hZGVkRnVuY3Rpb25DYWxsYmFj
awogICAgIG15ICRsZWFzdE51bU1hbmRhdG9yeVBhcmFtcyA9IDI1NTsKICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG5cbiIpIGlmICRjb25kaXRp
b25hbFN0cmluZzsKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCA8PEVORCk7Ci1zdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke25hbWV9TWV0aG9kKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiBFTkQKICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xz
LCBHZW5lcmF0ZUZlYXR1cmVPYnNlcnZhdGlvbigkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57IlY4TWVhc3VyZUFzIn0pKTsKQEAgLTE0NjYsNyArMTQ2Niw3IEBAIEVO
RAogICAgICAgICBteSAoJG51bU1hbmRhdG9yeVBhcmFtcywgJHBhcmFtZXRlcnNDaGVjaykgPSBH
ZW5lcmF0ZUZ1bmN0aW9uUGFyYW1ldGVyc0NoZWNrKCRvdmVybG9hZCk7CiAgICAgICAgICRsZWFz
dE51bU1hbmRhdG9yeVBhcmFtcyA9ICRudW1NYW5kYXRvcnlQYXJhbXMgaWYgKCRudW1NYW5kYXRv
cnlQYXJhbXMgPCAkbGVhc3ROdW1NYW5kYXRvcnlQYXJhbXMpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCAiICAgIGlmICgkcGFyYW1ldGVyc0NoZWNrKVxuIik7Ci0gICAgICAgIHB1
c2goQGltcGxDb250ZW50RGVjbHMsICIgICAgICAgIHJldHVybiAke25hbWV9JG92ZXJsb2FkLT57
b3ZlcmxvYWRJbmRleH1DYWxsYmFjayhhcmdzKTtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudERlY2xzLCAiICAgICAgICByZXR1cm4gJHtuYW1lfSRvdmVybG9hZC0+e292ZXJsb2FkSW5k
ZXh9TWV0aG9kKGFyZ3MpO1xuIik7CiAgICAgfQogICAgIGlmICgkbGVhc3ROdW1NYW5kYXRvcnlQ
YXJhbXMgPj0gMSkgewogICAgICAgICBwdXNoKEBpbXBsQ29udGVudERlY2xzLCAiICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgJGxlYXN0TnVtTWFuZGF0b3J5UGFyYW1zKVxuIik7CkBAIC0xNDk2LDcg
KzE0OTYsNyBAQCBzdWIgR2VuZXJhdGVGdW5jdGlvbkNhbGxiYWNrCiAgICAgbXkgJGNvbmRpdGlv
bmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmcoJGZ1
bmN0aW9uLT5zaWduYXR1cmUpOwogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsICIjaWYgJHtj
b25kaXRpb25hbFN0cmluZ31cblxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgIHB1c2go
QGltcGxDb250ZW50RGVjbHMsIDw8RU5EKTsKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
JHtuYW1lfUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+ICR7bmFtZX1NZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKIEVORAogICAgIHB1c2goQGltcGxDb250ZW50RGVjbHMsIEdlbmVyYXRlRmVhdHVyZU9ic2Vy
dmF0aW9uKCRmdW5jdGlvbi0+c2lnbmF0dXJlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhNZWFz
dXJlQXMifSkpOwpAQCAtMTUwNCw3ICsxNTA0LDcgQEAgRU5ECiAgICAgaWYgKEhhc0N1c3RvbU1l
dGhvZCgkZnVuY3Rpb24tPnNpZ25hdHVyZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzKSkgewogICAgICAg
ICAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudERlY2xzLCA8PEVORCk7Ci0gICAgcmV0dXJuICR7djhJbnRlcmZhY2VOYW1lfTo6JHtu
YW1lfUNhbGxiYWNrQ3VzdG9tKGFyZ3MpOworICAgIHJldHVybiAke3Y4SW50ZXJmYWNlTmFtZX06
OiR7bmFtZX1NZXRob2RDdXN0b20oYXJncyk7CiB9CiAKIEVORApAQCAtMjQxOCw3ICsyNDE4LDcg
QEAgRU5ECiAKICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2Vu
ZXJhdGVDb25kaXRpb25hbFN0cmluZygkZnVuY3Rpb24tPnNpZ25hdHVyZSk7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKLSAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0ZW1w
bGF0ZS0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChcIiRuYW1lXCIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KCR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9Q2FsbGJhY2ss
IHY4VW5kZWZpbmVkKCksICR7c2lnbmF0dXJlfSkkcHJvcGVydHlfYXR0cmlidXRlcyk7XG4iKTsK
KyAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAke2NvbmRpdGlvbmFsfSR0ZW1wbGF0ZS0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChcIiRuYW1lXCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KCR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9TWV0aG9kLCB2OFVuZGVmaW5l
ZCgpLCAke3NpZ25hdHVyZX0pJHByb3BlcnR5X2F0dHJpYnV0ZXMpO1xuIik7CiAgICAgcHVzaChA
aW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25k
aXRpb25hbFN0cmluZzsKIH0KIApAQCAtMjg0Miw3ICsyODQyLDcgQEAgRU5ECiAgICAgICAgIG15
ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFs
U3RyaW5nKCRmdW5jdGlvbi0+c2lnbmF0dXJlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICB7IiRuYW1lIiwgJHtpbnRlcmZh
Y2VOYW1lfVY4SW50ZXJuYWw6OiR7bmFtZX1DYWxsYmFja30sCisgICAgeyIkbmFtZSIsICR7aW50
ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9TWV0aG9kfSwKIEVORAogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiNlbmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAg
ICAkbnVtX2NhbGxiYWNrcysrOwpAQCAtMzE2NCw3ICszMTY0LDcgQEAgRU5ECiAgICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3Vt
ZW50KCkgJiYgJHtlbmFibGVGdW5jdGlvbn0oc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0
KSkpIHtcbiIpOwogICAgICAgICAgICAgbXkgJG5hbWUgPSAkcnVudGltZUZ1bmMtPnNpZ25hdHVy
ZS0+bmFtZTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCIke25hbWV9IiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoJHtpbnRlcmZhY2VOYW1lfVY4SW50ZXJuYWw6OiR7bmFtZX1DYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOworICAg
ICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiJHtuYW1lfSIpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KCR7aW50ZXJmYWNlTmFtZX1WOEludGVybmFsOjoke25hbWV9TWV0
aG9kLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKS0+R2V0RnVuY3Rpb24oKSk7CiBF
TkQKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIp
IGlmICRjb25kaXRpb25hbFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGQ5MmU5YWEw
ZmYxODc3NzI0YTM1ZGNkMjcyNGQzYjdkODAwNDE0YTUuLmFhNjFmMDI2MmIxYTM3Zjc1NTM4ZWRi
YWRiZTcwYmQyNzViN2YzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtODAsNyArODAsNyBA
QCBuYW1lc3BhY2UgRmxvYXQ2NEFycmF5VjhJbnRlcm5hbCB7CiAKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBm
b29DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBmb29NZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTg5LDcgKzg5LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBmb29DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgIHJldHVybiB0b1Y4KGltcC0+Zm9vKGFycmF5KSwgYXJncy5Ib2xkZXIoKSwgYXJncy5H
ZXRJc29sYXRlKCkpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNldENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHNldE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBz
ZXRXZWJHTEFycmF5SGVscGVyPEZsb2F0NjRBcnJheSwgVjhGbG9hdDY0QXJyYXk+KGFyZ3MpOwog
fQpAQCAtMTA2LDcgKzEwNiw3IEBAIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChGbG9hdDY0
QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25DCiB9CiAKIHN0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBWOEZsb2F0NjRBcnJh
eUNhbGxiYWNrc1tdID0gewotICAgIHsic2V0IiwgRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6c2V0
Q2FsbGJhY2t9LAorICAgIHsic2V0IiwgRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6c2V0TWV0aG9k
fSwKIH07CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEZsb2F0NjRBcnJheTo6Y29uc3RydWN0
b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQpAQCAtMTM0LDcgKzEzNCw3IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhG
bG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwogICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4
RmxvYXQzMkFycmF5OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OwogICAgIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gZm9vU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGZv
b0FyZ2MsIGZvb0FyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJm
b28iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhGbG9hdDY0QXJyYXlWOEludGVybmFsOjpm
b29DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZm9vU2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImZvbyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OmZvb01ldGhvZCwgdjhVbmRlZmluZWQoKSwgZm9vU2ln
bmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpj
dXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmpl
Y3QuY3BwCmluZGV4IGYxMjUyOGIyMTdiNjBkOTRiYmY5MjQ2YTc5ZjEyYmQzNzE1YTI5YzkuLjc0
ZGRlZGNiOWQ0NGM4NmRmYTNjMjEzODA3ZjQ5ZGYwNmQ2MmQ2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZXhjaXRpbmdBdHRyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFt
ZSwKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+ZXhjaXRpbmdBdHRyKCksIGluZm8uR2V0SXNv
bGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBleGNpdGluZ0Z1bmN0
aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZXhjaXRpbmdGdW5jdGlvbk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtODksNyArODks
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nRnVuY3Rpb25DYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
fQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcG9z
dE1lc3NhZ2VNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEwMSw3ICsxMDEsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVzc2FnZUF0dHJHZXR0
ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGlu
Zm8pCiB7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBw
cml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5l
dyhpbmZvLkdldElzb2xhdGUoKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0QWN0aXZl
RE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
djg6OlNpZ25hdHVyZTo6TmV3KFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUo
aW5mby5HZXRJc29sYXRlKCkpKSkpOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRlKCksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kLCB2
OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpH
ZXRSYXdUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFp
bihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSk7
CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVhY2gg
aGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQKQEAg
LTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdl
QXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIH0KICAgICBUZXN0
QWN0aXZlRE9NT2JqZWN0KiBpbXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGhv
bGRlcik7CiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFt
ZShCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1
cml0eUVycm9yKSkgewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcoaW5mby5HZXRJc29sYXRlKCksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJh
d1RlbXBsYXRlKGluZm8uR2V0SXNvbGF0ZSgpKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGluZm8uR2V0SXNvbGF0ZSgpLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVz
c2FnZU1ldGhvZCwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4VGVzdEFjdGl2
ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUoaW5mby5HZXRJc29sYXRlKCkpKSkpOwogICAgICAg
ICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogCkBAIC0xNTks
NyArMTU5LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKICAgICBjb25zdCBpbnQgZXhjaXRp
bmdGdW5jdGlvbkFyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IGV4Y2l0aW5nRnVuY3Rpb25Bcmd2W2V4Y2l0aW5nRnVuY3Rpb25BcmdjXSA9IHsgVjhOb2RlOjpH
ZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
ZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBleGNp
dGluZ0Z1bmN0aW9uQXJnYywgZXhjaXRpbmdGdW5jdGlvbkFyZ3YpOwotICAgIHByb3RvLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNpdGluZ0Z1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVuY3Rp
b25DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSkpOwor
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNpdGluZ0Z1bmN0aW9uIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6
OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2QsIHY4VW5kZWZpbmVkKCksIGV4Y2l0aW5nRnVuY3Rpb25T
aWduYXR1cmUpKTsKIAogICAgIC8vIEZ1bmN0aW9uICdwb3N0TWVzc2FnZScgKEV4dEF0dHI6ICdE
b05vdENoZWNrU2VjdXJpdHknKQogICAgIHByb3RvLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woInBvc3RNZXNzYWdlIiksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpw
b3N0TWVzc2FnZUF0dHJHZXR0ZXIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpUZXN0
QWN0aXZlRE9NT2JqZWN0RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyLCB2OFVuZGVmaW5lZCgpLCB2
ODo6QUxMX0NBTl9SRUFELCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpE
b250RGVsZXRlKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCAy
OWY2YTIwMzQzNmIyN2M5YjUzYTk2MWUwMDNiZTVjOWRhNjhkYzA0Li5jMmNhZDVjZWFhODFkZGIw
NjFhNDUzMjE1MGI5MjVkYzEzNGJkZGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgbmFtZXNwYWNlIFRlc3RDdXN0b21OYW1lZEdldHRl
clY4SW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9
CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW5vdGhlckZ1bmN0aW9uQ2FsbGJhY2so
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
YW5vdGhlckZ1bmN0aW9uTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYW5vdGhlckZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIH0gLy8gbmFtZXNwYWNlIFRlc3RDdXN0b21OYW1lZEdldHRlclY4SW50
ZXJuYWwKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNr
IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyQ2FsbGJhY2tzW10gPSB7Ci0gICAgeyJhbm90aGVyRnVu
Y3Rpb24iLCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJWOEludGVybmFsOjphbm90aGVyRnVuY3Rpb25D
YWxsYmFja30sCisgICAgeyJhbm90aGVyRnVuY3Rpb24iLCBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJW
OEludGVybmFsOjphbm90aGVyRnVuY3Rpb25NZXRob2R9LAogfTsKIAogc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdl
dHRlclRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCmluZGV4IDI3NzQw
MGQ1NDdlY2UwMWE2NWFmZjM0OTI3ZTQwNjg0MmNiNDY1YTAuLmVkZmJlZTJlYWRmNGU1Mjk2ZGNi
Nzc4MDE4Yzk5MTUyNmQ2YWRjZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcApAQCAtNzQs
NyArNzQsNyBAQCBuYW1lc3BhY2UgVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbCB7CiAKIHRlbXBs
YXRlIDx0eXBlbmFtZSBUPiB2b2lkIFY4X1VTRShUKSB7IH0KIAotc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBpdGVtQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaXRlbU1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtOTIsNyArOTIs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGl0ZW1DYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhZGRFdmVudExp
c3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYWRkRXZlbnRMaXN0ZW5lck1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9IFY4RXZlbnRM
aXN0ZW5lckxpc3Q6OmdldEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UsIExpc3RlbmVyRmlu
ZE9yQ3JlYXRlKTsKICAgICBpZiAobGlzdGVuZXIpIHsKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFkZEV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHJlbW92ZUV2ZW50TGlzdGVuZXJDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZW1v
dmVFdmVudExpc3RlbmVyTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAg
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gVjhFdmVudExpc3RlbmVyTGlzdDo6Z2V0
RXZlbnRMaXN0ZW5lcihhcmdzWzFdLCBmYWxzZSwgTGlzdGVuZXJGaW5kT25seSk7CiAgICAgaWYg
KGxpc3RlbmVyKSB7CkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiByZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIK
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBkaXNwYXRjaEV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGlzcGF0Y2hFdmVudE1ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpA
QCAtMTM0LDkgKzEzNCw5IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZGlzcGF0Y2hF
dmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB9IC8vIG5hbWVzcGFjZSBU
ZXN0RXZlbnRUYXJnZXRWOEludGVybmFsCiAKIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRp
b246OkJhdGNoZWRDYWxsYmFjayBWOFRlc3RFdmVudFRhcmdldENhbGxiYWNrc1tdID0gewotICAg
IHsiaXRlbSIsIFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6Oml0ZW1DYWxsYmFja30sCi0gICAg
eyJhZGRFdmVudExpc3RlbmVyIiwgVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6YWRkRXZlbnRM
aXN0ZW5lckNhbGxiYWNrfSwKLSAgICB7InJlbW92ZUV2ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRU
YXJnZXRWOEludGVybmFsOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2t9LAorICAgIHsiaXRl
bSIsIFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6Oml0ZW1NZXRob2R9LAorICAgIHsiYWRkRXZl
bnRMaXN0ZW5lciIsIFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OmFkZEV2ZW50TGlzdGVuZXJN
ZXRob2R9LAorICAgIHsicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIFRlc3RFdmVudFRhcmdldFY4SW50
ZXJuYWw6OnJlbW92ZUV2ZW50TGlzdGVuZXJNZXRob2R9LAogfTsKIAogc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRl
bXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKQEAgLTE2MSw3ICsxNjEsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUo
dgogICAgIGNvbnN0IGludCBkaXNwYXRjaEV2ZW50QXJnYyA9IDE7CiAgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hFdmVudEFyZ2Nd
ID0geyBWOEV2ZW50OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OwogICAgIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5l
dyhkZXNjLCBkaXNwYXRjaEV2ZW50QXJnYywgZGlzcGF0Y2hFdmVudEFyZ3YpOwotICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkaXNwYXRjaEV2ZW50IiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7CisgICAgcHJv
dG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRpc3BhdGNoRXZlbnQiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpkaXNwYXRjaEV2ZW50
TWV0aG9kLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7CiAKICAgICAv
LyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3
U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5n
VGVtcGxhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGY5ZjBkYWJlZjZiNjgwZmY5
NzI0MWJmZWFkMWExZmNjZTE5NmIwMWYuLjNlMWM4ZTVmMjg1NWE4YWQ3NmJmNDM1YjAwNzFkZmQx
YWVkNmJjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0xODAsNyArMTgwLDcgQEAgc3Rh
dGljIHZvaWQgc3VwcGxlbWVudGFsTm9kZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+
IG5hbWUsIHY4OjpMb2NhbDx2ODoKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxF
KENvbmRpdGlvbjEyKQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRh
bE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QxTWV0aG9kKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgVGVzdEludGVyZmFjZSogaW1wID0gVjhUZXN0SW50ZXJmYWNl
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBUZXN0U3VwcGxlbWVudGFsOjpzdXBwbGVt
ZW50YWxNZXRob2QxKGltcCk7CkBAIC0xOTEsNyArMTkxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXIKIAogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0yMTQsMTYgKzIxNCwxNiBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJDYWxsYmFj
ayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogCiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc3VwcGxl
bWVudGFsTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDNNZXRob2QoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKLSAgICByZXR1cm4gVjhUZXN0SW50ZXJmYWNlOjpzdXBwbGVt
ZW50YWxNZXRob2QzQ2FsbGJhY2tDdXN0b20oYXJncyk7CisgICAgcmV0dXJuIFY4VGVzdEludGVy
ZmFjZTo6c3VwcGxlbWVudGFsTWV0aG9kM01ldGhvZEN1c3RvbShhcmdzKTsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogCiAjaWYgRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAKLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1l
dGhvZDRNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0U3VwcGxl
bWVudGFsOjpzdXBwbGVtZW50YWxNZXRob2Q0KCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CkBAIC0yNjIsMTAgKzI2MiwxMCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpC
YXRjaGVkQXR0cmlidXRlIFY4VGVzdEludGVyZmFjZUF0dHJzW10gPSB7CiAKIHN0YXRpYyBjb25z
dCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBWOFRlc3RJbnRlcmZhY2VDYWxs
YmFja3NbXSA9IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKLSAgICB7InN1cHBsZW1lbnRhbE1ldGhvZDEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6
c3VwcGxlbWVudGFsTWV0aG9kMUNhbGxiYWNrfSwKKyAgICB7InN1cHBsZW1lbnRhbE1ldGhvZDEi
LCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMU1ldGhvZH0sCiAj
ZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSAg
ICB7InN1cHBsZW1lbnRhbE1ldGhvZDMiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsTWV0aG9kM0NhbGxiYWNrfSwKKyAgICB7InN1cHBsZW1lbnRhbE1ldGhvZDMiLCBUZXN0
SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kM01ldGhvZH0sCiAjZW5kaWYK
IH07CiAKQEAgLTMzNywxMCArMzM3LDEwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3Zb
c3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBzdXBwbGVtZW50YWxNZXRob2QyU2lnbmF0dXJlID0gdjg6OlNp
Z25hdHVyZTo6TmV3KGRlc2MsIHN1cHBsZW1lbnRhbE1ldGhvZDJBcmdjLCBzdXBwbGVtZW50YWxN
ZXRob2QyQXJndik7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9u
MTIpCi0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1l
dGhvZDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5h
bDo6c3VwcGxlbWVudGFsTWV0aG9kMkNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzdXBwbGVtZW50
YWxNZXRob2QyU2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woInN1cHBsZW1lbnRhbE1ldGhvZDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kMk1ldGhvZCwgdjhVbmRlZmlu
ZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSkpOwogI2VuZGlmIC8vIEVOQUJMRShD
b25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInN1cHBsZW1lbnRhbE1ldGhvZDQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhU
ZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kNENhbGxiYWNrLCB2OFVu
ZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOworICAgIGRlc2MtPlNldCh2
ODo6U3RyaW5nOjpOZXdTeW1ib2woInN1cHBsZW1lbnRhbE1ldGhvZDQiKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9k
NE1ldGhvZCwgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKICNl
bmRpZiAvLyBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBW
OERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBW
OFRlc3RJbnRlcmZhY2VDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0SW50ZXJmYWNlQ29u
c3RzKSwgaXNvbGF0ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcAppbmRleCAxOGE0NmM5YmJlYjA4MzMzYjc1ZWFmOGM1M2U2Mjg0ZDA2MjgyZjA2Li4z
ZDg3YjUzNTE4ZGE4MzMwZjM0ZDA1NmIzN2Y3ZTNmMGEwZWJiZWFiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC03MSw3ICs3MSw3IEBAIG5hbWVz
cGFjZSBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWwgewogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gdm9pZCBWOF9VU0UoVCkgeyB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dO
b3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04NCw3ICs4NCw3
IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIH0gLy8gbmFtZXNwYWNlIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyVjhJbnRlcm5hbAogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVk
Q2FsbGJhY2sgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNhbGxiYWNrc1tdID0gewotICAg
IHsibWV0aG9kIiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJWOEludGVybmFsOjptZXRob2RD
YWxsYmFja30sCisgICAgeyJtZXRob2QiLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50
ZXJuYWw6Om1ldGhvZE1ldGhvZH0sCiB9OwogCiBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1w
bGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDI5MzJlZGI1ZDcxMDJmOTlhZjkxZGE4OGZlN2Vl
NTlkOWM1MzRlMGUuLjBlNmQxMTZiOTYwMmM5YzBiYzI4OTk3Yjg3N2I2Y2RlMzk0NzY3ZDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
YmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RPYmouY3BwCkBAIC05OTQsMTQgKzk5NCwxNCBAQCBzdGF0aWMgdm9pZCBUZXN0T2JqUmVwbGFj
ZWFibGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgog
ICAgIGluZm8uVGhpcygpLT5Gb3JjZVNldChuYW1lLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdm9pZE1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZvaWRNZXRob2RNZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGltcC0+dm9pZE1ldGhvZCgpOwogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZv
aWRNZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZvaWRNZXRob2RXaXRoQXJnc01ldGhvZChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMykKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwpAQCAtMTAxMywxMyArMTAxMywxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZv
aWRNZXRob2RXaXRoQXJnc0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGxv
bmdNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBsb25nTWV0aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICByZXR1cm4gdjhJbnRlZ2VyKGltcC0+bG9uZ01ldGhvZCgpLCBhcmdzLkdldElz
b2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ01ldGhvZFdp
dGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xMDMw
LDE0ICsxMDMwLDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbG9uZ01ldGhvZFdp
dGhBcmdzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgcmV0dXJuIHY4SW50
ZWdlcihpbXAtPmxvbmdNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIG9iakFyZyksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpN
ZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBvYmpNZXRob2RNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUoYWN0aXZlRE9NV2luZG93KEJpbmRpbmdT
dGF0ZTo6aW5zdGFuY2UoKSksIEZlYXR1cmVPYnNlcnZlcjo6VGVzdEZlYXR1cmUpOwogICAgIFRl
c3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0
dXJuIHRvVjgoaW1wLT5vYmpNZXRob2QoKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9iak1ldGhvZFdpdGhBcmdz
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDMpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEwNDgsNyArMTA0
OCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb2JqTWV0aG9kV2l0aEFyZ3NDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgcmV0dXJuIHRvVjgoaW1wLT5vYmpN
ZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIG9iakFyZyksIGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRo
b2RXaXRoU2VxdWVuY2VBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKQEAgLTEwNTgsNyArMTA1OCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICBy
ZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
ZXRob2RSZXR1cm5pbmdTZXF1ZW5jZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlTWV0
aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7CkBAIC0xMDY3LDcgKzEwNjcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG1ldGhvZFJldHVybmluZ1NlcXVlbmNlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cwogICAgIHJldHVybiB2OEFycmF5KGltcC0+bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2UobG9uZ0Fy
ZyksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTA4NSw3ICsxMDg1LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdz
QW5kVGhyb3dzQ2FsbGJhY2soY29uc3QgdjgKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
c2VyaWFsaXplZFZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gc2VyaWFsaXplZFZhbHVlTWV0aG9kKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBA
IC0xMDk4LDcgKzEwOTgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNlcmlhbGl6
ZWRWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3B0aW9uc09i
amVjdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG9wdGlvbnNPYmplY3RNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTExMTMsNyArMTEx
Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3B0aW9uc09iamVjdENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFdpdGhFeGNlcHRpb25NZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAtMTEyNywxOCArMTEyNywxOCBAQCBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhFeGNlcHRpb25DYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21N
ZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBjdXN0b21NZXRob2RNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBGZWF0dXJlT2JzZXJ2ZXI6Om9ic2VydmUoYWN0aXZlRE9NV2luZG93KEJpbmRp
bmdTdGF0ZTo6aW5zdGFuY2UoKSksIEZlYXR1cmVPYnNlcnZlcjo6Q3VzdG9tVGVzdEZlYXR1cmUp
OwotICAgIHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZENhbGxiYWNrQ3VzdG9tKGFyZ3Mp
OworICAgIHJldHVybiBWOFRlc3RPYmo6OmN1c3RvbU1ldGhvZE1ldGhvZEN1c3RvbShhcmdzKTsK
IH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjdXN0b21NZXRob2RXaXRoQXJnc0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGN1c3RvbU1ldGhvZFdpdGhBcmdzTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7Ci0gICAgcmV0dXJuIFY4VGVzdE9iajo6Y3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxsYmFj
a0N1c3RvbShhcmdzKTsKKyAgICByZXR1cm4gVjhUZXN0T2JqOjpjdXN0b21NZXRob2RXaXRoQXJn
c01ldGhvZEN1c3RvbShhcmdzKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
ZGRFdmVudExpc3RlbmVyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYWRkRXZlbnRMaXN0ZW5lck1ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBsaXN0ZW5lciA9
IFY4RXZlbnRMaXN0ZW5lckxpc3Q6OmdldEV2ZW50TGlzdGVuZXIoYXJnc1sxXSwgZmFsc2UsIExp
c3RlbmVyRmluZE9yQ3JlYXRlKTsKICAgICBpZiAobGlzdGVuZXIpIHsKQEAgLTExNDksNyArMTE0
OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYWRkRXZlbnRMaXN0ZW5lckNhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7
CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRXZlbnRMaXN0ZW5lckNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHJlbW92ZUV2ZW50TGlzdGVuZXJNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSBWOEV2ZW50TGlzdGVu
ZXJMaXN0OjpnZXRFdmVudExpc3RlbmVyKGFyZ3NbMV0sIGZhbHNlLCBMaXN0ZW5lckZpbmRPbmx5
KTsKICAgICBpZiAobGlzdGVuZXIpIHsKQEAgLTExNjAsNyArMTE2MCw3IEBAIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gcmVtb3ZlRXZlbnRMaXN0ZW5lckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlVm9pZENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRT
dGF0ZVZvaWRNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdFN0
YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwpAQCAtMTE3Niw3ICsx
MTc2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVWb2lk
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gdjhVbmRlZmluZWQo
KTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVPYmpD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB3aXRoU2NyaXB0U3RhdGVPYmpNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3RhdGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVu
dCgpOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
aXRoU2NyaXB0U3RhdGVPYmpDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICBy
ZXR1cm4gdG9WOChyZXN1bHQucmVsZWFzZSgpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xh
dGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRl
Vm9pZEV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRTdGF0ZVZvaWRFeGNlcHRpb25NZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpA
QCAtMTIxNSw3ICsxMjE1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2Ny
aXB0U3RhdGVWb2lkRXhjZXB0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3UKICAgICByZXR1cm4g
c2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0
aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTEyMzgsNyArMTIzOCw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtCiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5H
ZXRJc29sYXRlKCkpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRNZXRo
b2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRl
c3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CkBAIC0xMjQ2
LDcgKzEyNDYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZQogICAgIHJldHVybiB2OFVuZGVm
aW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVj
dXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEFuZFNjcmlwdFN0YXRlTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAg
ICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAg
ICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKQEAg
LTEyNjMsNyArMTI2Myw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxiYWNrKGNvCiAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25NZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwpAQCAt
MTI4Nyw3ICsxMjg3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW8KICAgICByZXR1cm4gc2V0
RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRl
V2l0aFNwYWNlc01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFRlc3RP
YmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgU2NyaXB0
U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CkBAIC0xMzA0LDcg
KzEzMDQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQwogICAgIHJldHVybiB0b1Y4KHJlc3Vs
dC5yZWxlYXNlKCksIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0YWNr
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gd2l0aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja01ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2NyaXB0QXJn
dW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7CkBAIC0xMzEyLDcgKzEzMTIs
NyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRBcmd1bWVudHNBbmRD
YWxsU3RhY2tDYWxsYmFjayhjb25zdCB2ODo6QQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwog
fQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ0Nh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbEFyZ01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xk
ZXIoKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPD0gMCkgewpAQCAtMTMyNCw3ICsxMzI0LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoT3B0aW9uYWxBcmdDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQog
Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0Fu
ZE9wdGlvbmFsQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxB
cmdNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTEzMzksNyArMTMzOSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdDYWxsYmFj
ayhjb25zCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzTWV0aG9kKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQog
ICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xh
dGUoKSk7CkBAIC0xMzU5LDcgKzEzNTksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxiYWNrKAogICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IG1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRpb25hbFN0cmlu
Z01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaWYgKGFyZ3MuTGVuZ3Ro
KCkgPD0gMCkgewpAQCAtMTM3MSw3ICsxMzcxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQK
ICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBtZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdp
dGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVkTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3Vy
Y2U8Piwgc3RyLCBhcmdzWzBdKTsKQEAgLTEzNzksNyArMTM3OSw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNVbmRlZmluZWRDYWxsYmFj
ayhjb25zdCB2CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbWV0aG9kV2l0aE9wdGlvbmFsU3RyaW5nSXNOdWxsU3RyaW5nTWV0aG9kKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4
U3RyaW5nUmVzb3VyY2U8Piwgc3RyLCBhcmd1bWVudE9yTnVsbChhcmdzLCAwKSk7CkBAIC0xMzg3
LDcgKzEzODcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhPcHRp
b25hbFN0cmluZ0lzTnVsbFN0cmluZ0NhbGxiYWNrKGNvbnN0CiAgICAgcmV0dXJuIHY4VW5kZWZp
bmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aENhbGxi
YWNrQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aENhbGxiYWNrQXJnTWV0aG9kKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1
cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0x
Mzk5LDcgKzEzOTksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhD
YWxsYmFja0FyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aE5v
bkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0FyZ01ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTQxMiw3ICsxNDEyLDcgQEAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoTm9uQ2FsbGJhY2tBcmdBbmRDYWxs
YmFja0FyZ0NhbGxiYWNrKGNvbnMKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
Z0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IG1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnTWV0aG9kKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjazsK
QEAgLTE0MjcsNyArMTQyNyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9k
V2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdDYWxsYmFjayhjb25zdCB2ODo6CiAKICNpZiBFTkFC
TEUoQ29uZGl0aW9uMSkKIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25h
bE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbE1ldGhvZDFNZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFy
Z3MuSG9sZGVyKCkpOwogICAgIHJldHVybiB2OFN0cmluZyhpbXAtPmNvbmRpdGlvbmFsTWV0aG9k
MSgpLCBhcmdzLkdldElzb2xhdGUoKSwgUmV0dXJuVW5zYWZlSGFuZGxlKTsKQEAgLTE0MzcsNyAr
MTQzNyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2Qx
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAKICNpZiBFTkFCTEUoQ29uZGl0aW9u
MSkgJiYgRU5BQkxFKENvbmRpdGlvbjIpCiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
Y29uZGl0aW9uYWxNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uZGl0aW9uYWxNZXRob2QyTWV0aG9kKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0
b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpbXAtPmNvbmRpdGlvbmFsTWV0aG9kMigpOwpA
QCAtMTQ0OCw3ICsxNDQ4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRp
b25hbE1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAogI2lmIEVOQUJM
RShDb25kaXRpb24xKSB8fCBFTkFCTEUoQ29uZGl0aW9uMikKIAotc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBjb25kaXRpb25hbE1ldGhvZDNDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25kaXRpb25hbE1ldGhvZDNN
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBW
OFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGltcC0+Y29uZGl0aW9uYWxN
ZXRob2QzKCk7CkBAIC0xNDU3LDcgKzE0NTcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbmRpdGlvbmFsTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwog
CiAjZW5kaWYgLy8gRU5BQkxFKENvbmRpdGlvbjEpIHx8IEVOQUJMRShDb25kaXRpb24yKQogCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxQ2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zl
cmxvYWRlZE1ldGhvZDFNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE0NjgsNyArMTQ2OCw3IEBAIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDJDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kMk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChh
cmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRz
RXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTQ4Myw3ICsxNDgzLDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kM0NhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRN
ZXRob2QzTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJv
cihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xNDkzLDcgKzE0OTMsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhv
ZDRNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE1MDMsNyArMTUwMyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNU1l
dGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgp
IDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5H
ZXRJc29sYXRlKCkpOwpAQCAtMTUxNSw3ICsxNTE1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kNkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q2TWV0aG9k
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAx
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7CkBAIC0xNTI1LDcgKzE1MjUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2Q2Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2Q3Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZDdNZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKQEAgLTE1MzUsNyArMTUzNSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
b3ZlcmxvYWRlZE1ldGhvZDdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
b3ZlcmxvYWRlZE1ldGhvZDhDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kOE1ldGhvZChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwpAQCAtMTU0NSw3ICsxNTQ1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVy
bG9hZGVkTWV0aG9kOENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVy
bG9hZGVkTWV0aG9kOUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2Q5TWV0aG9kKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBA
IC0xNTU1LDcgKzE1NTUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2Fk
ZWRNZXRob2Q5Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiB2
OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2Fk
ZWRNZXRob2QxMENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxME1ldGhvZChjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAt
MTU2NSw3ICsxNTY1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kMTBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFNZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE1
NzUsNDIgKzE1NzUsNDIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICByZXR1cm4gdjhV
bmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gb3ZlcmxvYWRlZE1ldGhvZE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAyICYmIChhcmdzWzBdLT5Jc051
bGwoKSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgp
KSkgJiYgKGFyZ3NbMV0tPklzTnVsbCgpIHx8IGFyZ3NbMV0tPklzVW5kZWZpbmVkKCkgfHwgYXJn
c1sxXS0+SXNTdHJpbmcoKSB8fCBhcmdzWzFdLT5Jc09iamVjdCgpKSkpCi0gICAgICAgIHJldHVy
biBvdmVybG9hZGVkTWV0aG9kMUNhbGxiYWNrKGFyZ3MpOworICAgICAgICByZXR1cm4gb3Zlcmxv
YWRlZE1ldGhvZDFNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYg
KGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCkpKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1swXS0+SXNO
dWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSkpKSkKLSAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QyQ2FsbGJhY2soYXJncyk7Cisg
ICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kMk1ldGhvZChhcmdzKTsKICAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNVbmRl
ZmluZWQoKSB8fCBhcmdzWzBdLT5Jc1N0cmluZygpIHx8IGFyZ3NbMF0tPklzT2JqZWN0KCkpKSkK
LSAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2QzQ2FsbGJhY2soYXJncyk7CisgICAgICAg
IHJldHVybiBvdmVybG9hZGVkTWV0aG9kM01ldGhvZChhcmdzKTsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA9PSAxKQotICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDRDYWxsYmFjayhhcmdz
KTsKKyAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q0TWV0aG9kKGFyZ3MpOwogICAgIGlm
ICgoYXJncy5MZW5ndGgoKSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBhcmdzWzBdLT5J
c0Z1bmN0aW9uKCkpKSkKLSAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q1Q2FsbGJhY2so
YXJncyk7CisgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kNU1ldGhvZChhcmdzKTsKICAg
ICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhET01T
dHJpbmdMaXN0OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSkKLSAg
ICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q2Q2FsbGJhY2soYXJncyk7CisgICAgICAgIHJl
dHVybiBvdmVybG9hZGVkTWV0aG9kNk1ldGhvZChhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNBcnJheSgpKSkpCi0g
ICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kN0NhbGxiYWNrKGFyZ3MpOworICAgICAgICBy
ZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDdNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdzLkxlbmd0
aCgpID09IDEgJiYgKFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29s
YXRlKCkpKSkpCi0gICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kOENhbGxiYWNrKGFyZ3Mp
OworICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDhNZXRob2QoYXJncyk7CiAgICAgaWYg
KChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzQXJyYXkoKSkpKQotICAgICAgICBy
ZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDlDYWxsYmFjayhhcmdzKTsKKyAgICAgICAgcmV0dXJuIG92
ZXJsb2FkZWRNZXRob2Q5TWV0aG9kKGFyZ3MpOwogICAgIGlmICgoYXJncy5MZW5ndGgoKSA9PSAx
ICYmIChhcmdzWzBdLT5Jc0FycmF5KCkpKSkKLSAgICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRo
b2QxMENhbGxiYWNrKGFyZ3MpOworICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDEwTWV0
aG9kKGFyZ3MpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDEpCi0gICAgICAgIHJldHVybiBv
dmVybG9hZGVkTWV0aG9kMTFDYWxsYmFjayhhcmdzKTsKKyAgICAgICAgcmV0dXJuIG92ZXJsb2Fk
ZWRNZXRob2QxMU1ldGhvZChhcmdzKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAg
ICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwogfQog
Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9kQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NN
ZXRob2RNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2JqOjpj
bGFzc01ldGhvZCgpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NN
ZXRob2RXaXRoT3B0aW9uYWxNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7CiAgICAgICAgIHJldHVybiB2OEludGVnZXIoVGVz
dE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoKSwgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAt
MTYxOSwxNCArMTYxOSwxNCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0
aG9kV2l0aE9wdGlvbmFsQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIHJldHVybiB2
OEludGVnZXIoVGVzdE9iajo6Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWwoYXJnKSwgYXJncy5HZXRJ
c29sYXRlKCkpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNsYXNzTWV0aG9k
MkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNsYXNzTWV0aG9kMk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewotICAgIHJldHVybiBWOFRlc3RPYmo6OmNsYXNzTWV0aG9kMkNhbGxiYWNrQ3VzdG9tKGFyZ3Mp
OworICAgIHJldHVybiBWOFRlc3RPYmo6OmNsYXNzTWV0aG9kMk1ldGhvZEN1c3RvbShhcmdzKTsK
IH0KIAogI2lmIEVOQUJMRShDb25kaXRpb24xKQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG92ZXJsb2FkZWRNZXRob2QxMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMU1ldGhvZChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwpAQCAtMTYzOSw3ICsxNjM5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBvdmVybG9hZGVkTWV0aG9kMTFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIAog
I2lmIEVOQUJMRShDb25kaXRpb24xKQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92
ZXJsb2FkZWRNZXRob2QxMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2FkZWRNZXRob2QxMk1ldGhvZChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwpAQCAtMTY1MiwxMiArMTY1MiwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92
ZXJsb2FkZWRNZXRob2QxMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogCiAjaWYg
RU5BQkxFKENvbmRpdGlvbjEpCiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gb3Zlcmxv
YWRlZE1ldGhvZDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMU1ldGhvZChjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpID09IDEpCi0gICAgICAgIHJl
dHVybiBvdmVybG9hZGVkTWV0aG9kMTFDYWxsYmFjayhhcmdzKTsKKyAgICAgICAgcmV0dXJuIG92
ZXJsb2FkZWRNZXRob2QxMU1ldGhvZChhcmdzKTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0g
MSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgYXJnc1swXS0+SXNVbmRlZmluZWQoKSB8fCBhcmdz
WzBdLT5Jc1N0cmluZygpIHx8IGFyZ3NbMF0tPklzT2JqZWN0KCkpKSkKLSAgICAgICAgcmV0dXJu
IG92ZXJsb2FkZWRNZXRob2QxMkNhbGxiYWNrKGFyZ3MpOworICAgICAgICByZXR1cm4gb3Zlcmxv
YWRlZE1ldGhvZDEyTWV0aG9kKGFyZ3MpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRl
KCkpOwogICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CkBA
IC0xNjY1LDcgKzE2NjUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG92ZXJsb2Fk
ZWRNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiAjZW5kaWYgLy8g
RU5BQkxFKENvbmRpdGlvbjEpCiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NN
ZXRob2RXaXRoQ2xhbXBDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhvZFdpdGhDbGFtcE1ldGhvZChjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMikKICAgICAg
ICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkp
OwpAQCAtMTY4Miw3ICsxNjgyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFz
c01ldGhvZFdpdGhDbGFtcENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFi
bGVkQXRSdW50aW1lTWV0aG9kMUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxTWV0aG9k
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAx
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7CkBAIC0xNjkyLDcgKzE2OTIsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwog
ICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhv
ZDJNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE3MDIsNyArMTcwMiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZW5hYmxlZEF0UnVudGltZU1ldGhvZDJDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNvbnRleHRNZXRob2QxQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZW5hYmxlZFBlckNv
bnRleHRNZXRob2QxTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMUNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudAogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMkNhbGxiYWNrKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGVu
YWJsZWRQZXJDb250ZXh0TWV0aG9kMk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTcyMiw3ICsxNzIyLDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBlbmFibGVkUGVyQ29udGV4dE1ldGhvZDJD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnQKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0K
IAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMTczOSw3ICsxNzM5LDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVj
LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uTWV0aG9k
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAx
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7CkBAIC0xNzU2LDcgKzE3NTYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmCiAg
ICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGdldFNWR0RvY3VtZW50Q2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0U1ZH
RG9jdW1lbnRNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwpAQCAtMTc3Miw3ICsxNzcyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBnZXRTVkdEb2N1bWVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwogfQog
Ci1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQxQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDFN
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKQEAgLTE3ODIsNyArMTc4Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29udmVydDFDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAg
IHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGNvbnZlcnQyQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDJNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE3OTIsNyArMTc5
Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDJDYWxsYmFjayhjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQ0Q2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDRNZXRo
b2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKQEAgLTE4MDIsNyArMTgwMiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY29udmVydDRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnZlcnQ1Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gY29udmVydDVNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVu
b3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTE4MTIsMjYgKzE4MTIs
MjYgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0NUNhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9CiAKLXN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJsZVBvaW50RnVuY3Rpb25DYWxsYmFjayhj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBt
dXRhYmxlUG9pbnRGdW5jdGlvbk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIoU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+
OjpjcmVhdGUoaW1wLT5tdXRhYmxlUG9pbnRGdW5jdGlvbigpKSksIGFyZ3MuSG9sZGVyKCksIGFy
Z3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBpbW11
dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRGdW5jdGlvbk1ldGhvZChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIHRvVjgoV1RGOjpnZXRQdHIo
U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9pbnQ+OjpjcmVhdGUoaW1wLT5pbW11dGFibGVQb2lu
dEZ1bmN0aW9uKCkpKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi1z
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9yYW5nZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9yYW5nZU1ldGhvZChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9i
ajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaW1wLT5iYW5hbmEoKTsKICAgICByZXR1
cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJp
Y3RGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZ1bmN0aW9uTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAzKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0xODUw
LDcgKzE4NTAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmljdEZ1bmN0aW9u
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFyaWFkaWNTdHJpbmdNZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YXJpYWRpY1N0cmluZ01ldGhv
ZE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwpAQCAtMTg2MSw3ICsxODYxLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YXJpYWRpY1N0cmluZ01ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGEKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YXJpYWRpY0RvdWJsZU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljRG91YmxlTWV0
aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CkBAIC0xODcyLDcgKzE4NzIsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhcmlhZGljRG91YmxlTWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYQogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhv
ZE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwpAQCAtMjAyNCw1MyArMjAyNCw1MyBAQCBzdGF0aWMgY29uc3QgVjhE
T01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFY4VGVzdE9iakF0dHJzW10gPSB7CiB9
OwogCiBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sgVjhU
ZXN0T2JqQ2FsbGJhY2tzW10gPSB7Ci0gICAgeyJ2b2lkTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJu
YWw6OnZvaWRNZXRob2RDYWxsYmFja30sCi0gICAgeyJsb25nTWV0aG9kIiwgVGVzdE9ialY4SW50
ZXJuYWw6OmxvbmdNZXRob2RDYWxsYmFja30sCi0gICAgeyJvYmpNZXRob2QiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6b2JqTWV0aG9kQ2FsbGJhY2t9LAotICAgIHsibWV0aG9kUmV0dXJuaW5nU2VxdWVu
Y2UiLCBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kUmV0dXJuaW5nU2VxdWVuY2VDYWxsYmFja30s
Ci0gICAgeyJzZXJpYWxpemVkVmFsdWUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6c2VyaWFsaXplZFZh
bHVlQ2FsbGJhY2t9LAotICAgIHsib3B0aW9uc09iamVjdCIsIFRlc3RPYmpWOEludGVybmFsOjpv
cHRpb25zT2JqZWN0Q2FsbGJhY2t9LAotICAgIHsibWV0aG9kV2l0aEV4Y2VwdGlvbiIsIFRlc3RP
YmpWOEludGVybmFsOjptZXRob2RXaXRoRXhjZXB0aW9uQ2FsbGJhY2t9LAotICAgIHsiY3VzdG9t
TWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbU1ldGhvZENhbGxiYWNrfSwKLSAgICB7
ImN1c3RvbU1ldGhvZFdpdGhBcmdzIiwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbU1ldGhvZFdp
dGhBcmdzQ2FsbGJhY2t9LAotICAgIHsiYWRkRXZlbnRMaXN0ZW5lciIsIFRlc3RPYmpWOEludGVy
bmFsOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2t9LAotICAgIHsicmVtb3ZlRXZlbnRMaXN0ZW5l
ciIsIFRlc3RPYmpWOEludGVybmFsOjpyZW1vdmVFdmVudExpc3RlbmVyQ2FsbGJhY2t9LAotICAg
IHsid2l0aFNjcmlwdFN0YXRlVm9pZCIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3Rh
dGVWb2lkQ2FsbGJhY2t9LAotICAgIHsid2l0aFNjcmlwdFN0YXRlT2JqIiwgVGVzdE9ialY4SW50
ZXJuYWw6OndpdGhTY3JpcHRTdGF0ZU9iakNhbGxiYWNrfSwKLSAgICB7IndpdGhTY3JpcHRTdGF0
ZVZvaWRFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlVm9pZEV4
Y2VwdGlvbkNhbGxiYWNrfSwKLSAgICB7IndpdGhTY3JpcHRTdGF0ZU9iakV4Y2VwdGlvbiIsIFRl
c3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25DYWxsYmFja30sCi0g
ICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dENhbGxiYWNrfSwKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRp
b25Db250ZXh0QW5kU2NyaXB0U3RhdGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUNhbGxiYWNrfSwKLSAgICB7IndpdGhTY3JpcHRF
eGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRl
cm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZU9iakV4Y2VwdGlv
bkNhbGxiYWNrfSwKLSAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3Rh
dGVXaXRoU3BhY2VzIiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQ2FsbGJhY2t9LAotICAgIHsid2l0aFNjcmlwdEFy
Z3VtZW50c0FuZENhbGxTdGFjayIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1l
bnRzQW5kQ2FsbFN0YWNrQ2FsbGJhY2t9LAotICAgIHsibWV0aG9kV2l0aE9wdGlvbmFsQXJnIiwg
VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhPcHRpb25hbEFyZ0NhbGxiYWNrfSwKLSAgICB7
Im1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnIiwgVGVzdE9ialY4SW50ZXJu
YWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZE9wdGlvbmFsQXJnQ2FsbGJhY2t9LAotICAg
IHsibWV0aG9kV2l0aE5vbk9wdGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgVGVzdE9ialY4
SW50ZXJuYWw6Om1ldGhvZFdpdGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc0NhbGxi
YWNrfSwKLSAgICB7Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZyIsIFRlc3RPYmpWOEludGVybmFs
OjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdDYWxsYmFja30sCi0gICAgeyJtZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc1VuZGVmaW5lZCIsIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoT3B0
aW9uYWxTdHJpbmdJc1VuZGVmaW5lZENhbGxiYWNrfSwKLSAgICB7Im1ldGhvZFdpdGhPcHRpb25h
bFN0cmluZ0lzTnVsbFN0cmluZyIsIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoT3B0aW9u
YWxTdHJpbmdJc051bGxTdHJpbmdDYWxsYmFja30sCi0gICAgeyJtZXRob2RXaXRoQ2FsbGJhY2tB
cmciLCBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aENhbGxiYWNrQXJnQ2FsbGJhY2t9LAot
ICAgIHsibWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmciLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmdDYWxsYmFja30s
Ci0gICAgeyJtZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIsIFRlc3RPYmpWOEludGVy
bmFsOjptZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZ0NhbGxiYWNrfSwKKyAgICB7InZv
aWRNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhvZE1ldGhvZH0sCisgICAgeyJs
b25nTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OmxvbmdNZXRob2RNZXRob2R9LAorICAgIHsi
b2JqTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6Om9iak1ldGhvZE1ldGhvZH0sCisgICAgeyJt
ZXRob2RSZXR1cm5pbmdTZXF1ZW5jZSIsIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RSZXR1cm5p
bmdTZXF1ZW5jZU1ldGhvZH0sCisgICAgeyJzZXJpYWxpemVkVmFsdWUiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6c2VyaWFsaXplZFZhbHVlTWV0aG9kfSwKKyAgICB7Im9wdGlvbnNPYmplY3QiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6b3B0aW9uc09iamVjdE1ldGhvZH0sCisgICAgeyJtZXRob2RXaXRoRXhj
ZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhFeGNlcHRpb25NZXRob2R9LAor
ICAgIHsiY3VzdG9tTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6OmN1c3RvbU1ldGhvZE1ldGhv
ZH0sCisgICAgeyJjdXN0b21NZXRob2RXaXRoQXJncyIsIFRlc3RPYmpWOEludGVybmFsOjpjdXN0
b21NZXRob2RXaXRoQXJnc01ldGhvZH0sCisgICAgeyJhZGRFdmVudExpc3RlbmVyIiwgVGVzdE9i
alY4SW50ZXJuYWw6OmFkZEV2ZW50TGlzdGVuZXJNZXRob2R9LAorICAgIHsicmVtb3ZlRXZlbnRM
aXN0ZW5lciIsIFRlc3RPYmpWOEludGVybmFsOjpyZW1vdmVFdmVudExpc3RlbmVyTWV0aG9kfSwK
KyAgICB7IndpdGhTY3JpcHRTdGF0ZVZvaWQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlw
dFN0YXRlVm9pZE1ldGhvZH0sCisgICAgeyJ3aXRoU2NyaXB0U3RhdGVPYmoiLCBUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlT2JqTWV0aG9kfSwKKyAgICB7IndpdGhTY3JpcHRTdGF0
ZVZvaWRFeGNlcHRpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlVm9pZEV4
Y2VwdGlvbk1ldGhvZH0sCisgICAgeyJ3aXRoU2NyaXB0U3RhdGVPYmpFeGNlcHRpb24iLCBUZXN0
T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uTWV0aG9kfSwKKyAgICB7
IndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0IiwgVGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0TWV0aG9kfSwKKyAgICB7IndpdGhTY3JpcHRFeGVjdXRpb25Db250
ZXh0QW5kU2NyaXB0U3RhdGUiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZU1ldGhvZH0sCisgICAgeyJ3aXRoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dEFuZFNjcmlwdFN0YXRlT2JqRXhjZXB0aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6Ondp
dGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVPYmpFeGNlcHRpb25NZXRob2R9
LAorICAgIHsid2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdpdGhTcGFj
ZXMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3Jp
cHRTdGF0ZVdpdGhTcGFjZXNNZXRob2R9LAorICAgIHsid2l0aFNjcmlwdEFyZ3VtZW50c0FuZENh
bGxTdGFjayIsIFRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0QXJndW1lbnRzQW5kQ2FsbFN0
YWNrTWV0aG9kfSwKKyAgICB7Im1ldGhvZFdpdGhPcHRpb25hbEFyZyIsIFRlc3RPYmpWOEludGVy
bmFsOjptZXRob2RXaXRoT3B0aW9uYWxBcmdNZXRob2R9LAorICAgIHsibWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kT3B0aW9uYWxBcmciLCBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE5v
bk9wdGlvbmFsQXJnQW5kT3B0aW9uYWxBcmdNZXRob2R9LAorICAgIHsibWV0aG9kV2l0aE5vbk9w
dGlvbmFsQXJnQW5kVHdvT3B0aW9uYWxBcmdzIiwgVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdp
dGhOb25PcHRpb25hbEFyZ0FuZFR3b09wdGlvbmFsQXJnc01ldGhvZH0sCisgICAgeyJtZXRob2RX
aXRoT3B0aW9uYWxTdHJpbmciLCBUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kV2l0aE9wdGlvbmFs
U3RyaW5nTWV0aG9kfSwKKyAgICB7Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVk
IiwgVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzVW5kZWZpbmVk
TWV0aG9kfSwKKyAgICB7Im1ldGhvZFdpdGhPcHRpb25hbFN0cmluZ0lzTnVsbFN0cmluZyIsIFRl
c3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoT3B0aW9uYWxTdHJpbmdJc051bGxTdHJpbmdNZXRo
b2R9LAorICAgIHsibWV0aG9kV2l0aENhbGxiYWNrQXJnIiwgVGVzdE9ialY4SW50ZXJuYWw6Om1l
dGhvZFdpdGhDYWxsYmFja0FyZ01ldGhvZH0sCisgICAgeyJtZXRob2RXaXRoTm9uQ2FsbGJhY2tB
cmdBbmRDYWxsYmFja0FyZyIsIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoTm9uQ2FsbGJh
Y2tBcmdBbmRDYWxsYmFja0FyZ01ldGhvZH0sCisgICAgeyJtZXRob2RXaXRoQ2FsbGJhY2tBbmRP
cHRpb25hbEFyZyIsIFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRp
b25hbEFyZ01ldGhvZH0sCiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi0gICAgeyJjb25kaXRpb25h
bE1ldGhvZDEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxNZXRob2QxQ2FsbGJhY2t9
LAorICAgIHsiY29uZGl0aW9uYWxNZXRob2QxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlv
bmFsTWV0aG9kMU1ldGhvZH0sCiAjZW5kaWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgJiYgRU5B
QkxFKENvbmRpdGlvbjIpCi0gICAgeyJjb25kaXRpb25hbE1ldGhvZDIiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6Y29uZGl0aW9uYWxNZXRob2QyQ2FsbGJhY2t9LAorICAgIHsiY29uZGl0aW9uYWxNZXRo
b2QyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNvbmRpdGlvbmFsTWV0aG9kMk1ldGhvZH0sCiAjZW5k
aWYKICNpZiBFTkFCTEUoQ29uZGl0aW9uMSkgfHwgRU5BQkxFKENvbmRpdGlvbjIpCi0gICAgeyJj
b25kaXRpb25hbE1ldGhvZDMiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Y29uZGl0aW9uYWxNZXRob2Qz
Q2FsbGJhY2t9LAorICAgIHsiY29uZGl0aW9uYWxNZXRob2QzIiwgVGVzdE9ialY4SW50ZXJuYWw6
OmNvbmRpdGlvbmFsTWV0aG9kM01ldGhvZH0sCiAjZW5kaWYKLSAgICB7Im92ZXJsb2FkZWRNZXRo
b2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZENhbGxiYWNrfSwKLSAgICB7
ImNsYXNzTWV0aG9kV2l0aENsYW1wIiwgVGVzdE9ialY4SW50ZXJuYWw6OmNsYXNzTWV0aG9kV2l0
aENsYW1wQ2FsbGJhY2t9LAotICAgIHsiZ2V0U1ZHRG9jdW1lbnQiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6Z2V0U1ZHRG9jdW1lbnRDYWxsYmFja30sCi0gICAgeyJtdXRhYmxlUG9pbnRGdW5jdGlvbiIs
IFRlc3RPYmpWOEludGVybmFsOjptdXRhYmxlUG9pbnRGdW5jdGlvbkNhbGxiYWNrfSwKLSAgICB7
ImltbXV0YWJsZVBvaW50RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9p
bnRGdW5jdGlvbkNhbGxiYWNrfSwKLSAgICB7Im9yYW5nZSIsIFRlc3RPYmpWOEludGVybmFsOjpv
cmFuZ2VDYWxsYmFja30sCi0gICAgeyJzdHJpY3RGdW5jdGlvbiIsIFRlc3RPYmpWOEludGVybmFs
OjpzdHJpY3RGdW5jdGlvbkNhbGxiYWNrfSwKLSAgICB7InZhcmlhZGljU3RyaW5nTWV0aG9kIiwg
VGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljU3RyaW5nTWV0aG9kQ2FsbGJhY2t9LAotICAgIHsi
dmFyaWFkaWNEb3VibGVNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNEb3VibGVN
ZXRob2RDYWxsYmFja30sCisgICAgeyJvdmVybG9hZGVkTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJu
YWw6Om92ZXJsb2FkZWRNZXRob2RNZXRob2R9LAorICAgIHsiY2xhc3NNZXRob2RXaXRoQ2xhbXAi
LCBUZXN0T2JqVjhJbnRlcm5hbDo6Y2xhc3NNZXRob2RXaXRoQ2xhbXBNZXRob2R9LAorICAgIHsi
Z2V0U1ZHRG9jdW1lbnQiLCBUZXN0T2JqVjhJbnRlcm5hbDo6Z2V0U1ZHRG9jdW1lbnRNZXRob2R9
LAorICAgIHsibXV0YWJsZVBvaW50RnVuY3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6bXV0YWJs
ZVBvaW50RnVuY3Rpb25NZXRob2R9LAorICAgIHsiaW1tdXRhYmxlUG9pbnRGdW5jdGlvbiIsIFRl
c3RPYmpWOEludGVybmFsOjppbW11dGFibGVQb2ludEZ1bmN0aW9uTWV0aG9kfSwKKyAgICB7Im9y
YW5nZSIsIFRlc3RPYmpWOEludGVybmFsOjpvcmFuZ2VNZXRob2R9LAorICAgIHsic3RyaWN0RnVu
Y3Rpb24iLCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RnVuY3Rpb25NZXRob2R9LAorICAgIHsi
dmFyaWFkaWNTdHJpbmdNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dmFyaWFkaWNTdHJpbmdN
ZXRob2RNZXRob2R9LAorICAgIHsidmFyaWFkaWNEb3VibGVNZXRob2QiLCBUZXN0T2JqVjhJbnRl
cm5hbDo6dmFyaWFkaWNEb3VibGVNZXRob2RNZXRob2R9LAogfTsKIAogc3RhdGljIGNvbnN0IFY4
RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENvbnN0YW50IFY4VGVzdE9iakNvbnN0c1tdID0gewpA
QCAtMjE2MSw4MyArMjE2MSw4MyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIGNvbnN0
IGludCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3ZvaWRNZXRob2RXaXRoQXJnc0Fy
Z2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUp
IH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywg
dm9pZE1ldGhvZFdpdGhBcmdzQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woInZvaWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2QsIHY4VW5k
ZWZpbmVkKCksIHZvaWRNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9t
IFNpZ25hdHVyZSAnbG9uZ01ldGhvZFdpdGhBcmdzJwogICAgIGNvbnN0IGludCBsb25nTWV0aG9k
V2l0aEFyZ3NBcmdjID0gMzsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBs
b25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CiAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBsb25nTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgbG9uZ01ldGhvZFdpdGhBcmdzQXJnYywgbG9uZ01ldGhvZFdpdGhB
cmdzQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImxvbmdNZXRo
b2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
Ojpsb25nTWV0aG9kV2l0aEFyZ3NDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbG9uZ01ldGhvZFdp
dGhBcmdzU2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
ImxvbmdNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjpsb25nTWV0aG9kV2l0aEFyZ3NNZXRob2QsIHY4VW5kZWZpbmVkKCksIGxvbmdN
ZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnb2Jq
TWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7
CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NB
cmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6
R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+
IG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG9i
ak1ldGhvZFdpdGhBcmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKLSAgICBwcm90by0+
U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFyZ3NDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsKKyAgICBw
cm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFy
Z3NNZXRob2QsIHY4VW5kZWZpbmVkKCksIG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2VxdWVuY2VBcmcnCiAgICAgY29u
c3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNl
cXVlbmNlQXJnQXJnY10gPSB7IFY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OkdldFJhd1RlbXBs
YXRlKGlzb2xhdGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RXaXRo
U2VxdWVuY2VBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQXJnYywgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndik7Ci0gICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhTZXF1ZW5jZUFyZyIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVu
Y2VBcmdDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0
dXJlKSk7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFs
OjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2QsIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhT
ZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9k
VGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cycKICAgICBjb25zdCBpbnQgbWV0aG9kVGhhdFJl
cXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2MgPSAyOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmd2W21ldGhv
ZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0Fu
ZFRocm93c1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnYywgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRo
cm93c0FyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RU
aGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXco
VGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NDYWxs
YmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c1Np
Z25hdHVyZSkpOwotICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNsYXNzTWV0
aG9kIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNsYXNz
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigp
KSk7Ci0gICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY2xhc3NNZXRob2RXaXRo
T3B0aW9uYWwiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6
Y2xhc3NNZXRob2RXaXRoT3B0aW9uYWxDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+KCkpKTsKLSAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJjbGFzc01ldGhvZDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRl
cm5hbDo6Y2xhc3NNZXRob2QyQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6
U2lnbmF0dXJlPigpKSk7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm1l
dGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c01ldGhvZCwgdjhVbmRlZmluZWQoKSwgbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93
c1NpZ25hdHVyZSkpOworICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNsYXNz
TWV0aG9kIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNs
YXNzTWV0aG9kTWV0aG9kLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4o
KSkpOworICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNsYXNzTWV0aG9kV2l0
aE9wdGlvbmFsIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6
OmNsYXNzTWV0aG9kV2l0aE9wdGlvbmFsTWV0aG9kLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8
djg6OlNpZ25hdHVyZT4oKSkpOworICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
ImNsYXNzTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVy
bmFsOjpjbGFzc01ldGhvZDJNZXRob2QsIHY4VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2ln
bmF0dXJlPigpKSk7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCi0gICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgib3ZlcmxvYWRlZE1ldGhvZDEiKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhvZDFDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKKyAgICBkZXNjLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJvdmVybG9hZGVkTWV0aG9kMSIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMU1ldGhvZCwg
djhVbmRlZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKICNlbmRpZiAvLyBF
TkFCTEUoQ29uZGl0aW9uMSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZW5hYmxl
ZEF0UnVudGltZU1ldGhvZDFFbmFibGVkKCkpCi0gICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lTWV0aG9kMUNhbGxi
YWNrLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0U2lnbmF0dXJlKSk7CisgICAgICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJlbmFibGVkQXRSdW50aW1lTWV0aG9kMSIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1l
TWV0aG9kMU1ldGhvZCwgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSkpOwogICAgIGlm
IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoKSkKLSAgICAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRBdFJ1bnRpbWVNZXRob2Qy
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRB
dFJ1bnRpbWVNZXRob2QyQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRlZmF1bHRTaWduYXR1cmUp
KTsKKyAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImVuYWJsZWRBdFJ1
bnRpbWVNZXRob2QyIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJu
YWw6OmVuYWJsZWRBdFJ1bnRpbWVNZXRob2QyTWV0aG9kLCB2OFVuZGVmaW5lZCgpLCBkZWZhdWx0
U2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdzdHJpbmdBcnJheUZ1bmN0
aW9uJwogICAgIGNvbnN0IGludCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYyA9IDE7CiAgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zbc3Ry
aW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOERPTVN0cmluZ1tdOjpHZXRSYXdUZW1wbGF0ZShp
c29sYXRlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5j
dGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0
aW9uQXJnYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25DYWxsYmFjaywg
djhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOworICAgIHByb3Rv
LT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rp
b25NZXRob2QsIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2RvbVN0cmluZ0xpc3RGdW5jdGlvbicKICAgICBj
b25zdCBpbnQgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJnYyA9IDE7CiAgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltkb21TdHJpbmdM
aXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhET01TdHJpbmdMaXN0OjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZG9tU3RyaW5nTGlzdEZ1bmN0
aW9uU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGRvbVN0cmluZ0xpc3RGdW5j
dGlvbkFyZ2MsIGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rpb24iKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSkpOwor
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkb21TdHJpbmdMaXN0RnVuY3Rp
b24iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6ZG9tU3Ry
aW5nTGlzdEZ1bmN0aW9uTWV0aG9kLCB2OFVuZGVmaW5lZCgpLCBkb21TdHJpbmdMaXN0RnVuY3Rp
b25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQxJwogICAg
IGNvbnN0IGludCBjb252ZXJ0MUFyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFyZ2NdID0geyBWOGE6OkdldFJhd1RlbXBs
YXRlKGlzb2xhdGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0MVNp
Z25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0MUFyZ2MsIGNvbnZlcnQx
QXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQxIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQxU2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQxIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kLCB2OFVuZGVmaW5lZCgpLCBj
b252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDIn
CiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJnYyA9IDE7CiAgICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2W2NvbnZlcnQyQXJnY10gPSB7IFY4Yjo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZl
cnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGNvbnZlcnQyQXJnYywgY29u
dmVydDJBcmd2KTsKLSAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVy
dDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVy
dDJDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDJTaWduYXR1cmUpKTsKKyAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDIiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDJNZXRob2QsIHY4VW5kZWZpbmVk
KCksIGNvbnZlcnQyU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252
ZXJ0NCcKICAgICBjb25zdCBpbnQgY29udmVydDRBcmdjID0gMTsKICAgICB2ODo6SGFuZGxlPHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhkOjpH
ZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4g
Y29udmVydDRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDRBcmdj
LCBjb252ZXJ0NEFyZ3YpOwotICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJj
b252ZXJ0NCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpj
b252ZXJ0NENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NFNpZ25hdHVyZSkpOworICAg
IHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NCIpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NE1ldGhvZCwgdjhVbmRl
ZmluZWQoKSwgY29udmVydDRTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUg
J2NvbnZlcnQ1JwogICAgIGNvbnN0IGludCBjb252ZXJ0NUFyZ2MgPSAxOwogICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBW
OGU6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBjb252ZXJ0NVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0
NUFyZ2MsIGNvbnZlcnQ1QXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImNvbnZlcnQ1IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJu
YWw6OmNvbnZlcnQ1Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ1U2lnbmF0dXJlKSk7
CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQ1IiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQ1TWV0aG9kLCB2
OFVuZGVmaW5lZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAndmFyaWFkaWNOb2RlTWV0aG9kJwogICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRo
b2RBcmdjID0gMjsKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRp
Y05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOE5vZGU6OkdldFJh
d1RlbXBsYXRlKGlzb2xhdGUpLCBWOE5vZGU6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CiAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFk
aWNOb2RlTWV0aG9kQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
InZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdmFy
aWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlKSk7CisgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woInZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RNZXRob2QsIHY4VW5kZWZpbmVk
KCksIHZhcmlhZGljTm9kZU1ldGhvZFNpZ25hdHVyZSkpOwogICAgIFY4RE9NQ29uZmlndXJhdGlv
bjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFY4VGVzdE9iakNvbnN0cywg
V1RGX0FSUkFZX0xFTkdUSChWOFRlc3RPYmpDb25zdHMpLCBpc29sYXRlKTsKIAogICAgIC8vIEN1
c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQpAQCAtMjMwNCwxMCArMjMwNCwxMCBAQCB2b2lkIFY4VGVz
dE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gcHJvdAogCiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IHRv
U2NyaXB0RXhlY3V0aW9uQ29udGV4dChwcm90by0+Q3JlYXRpb25Db250ZXh0KCkpOwogICAgIGlm
IChjb250ZXh0ICYmIGNvbnRleHQtPmlzRG9jdW1lbnQoKSAmJiBDb250ZXh0RmVhdHVyZXM6OmVu
YWJsZWRQZXJDb250ZXh0TWV0aG9kMUVuYWJsZWQoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KSkpIHsKLSAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImVuYWJs
ZWRQZXJDb250ZXh0TWV0aG9kMSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDFDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOworICAgICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZW5hYmxlZFBlckNvbnRleHRNZXRob2QxIiksIHY4OjpG
dW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0
TWV0aG9kMU1ldGhvZCwgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0
aW9uKCkpOwogICAgIH0KICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0LT5pc0RvY3VtZW50KCkg
JiYgQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoc3RhdGljX2Nhc3Q8RG9jdW1l
bnQqPihjb250ZXh0KSkpIHsKLSAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImVuYWJsZWRQZXJDb250ZXh0TWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dE1ldGhvZDJDYWxsYmFjaywgdjhV
bmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSktPkdldEZ1bmN0aW9uKCkpOworICAgICAgICBw
cm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZW5hYmxlZFBlckNvbnRleHRNZXRob2Qy
IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQ
ZXJDb250ZXh0TWV0aG9kMk1ldGhvZCwgdjhVbmRlZmluZWQoKSwgZGVmYXVsdFNpZ25hdHVyZSkt
PkdldEZ1bmN0aW9uKCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IDkxMzcyMjhjZjNiMzdkMzY3
YTE1MTIwYWJiZWIzNjZlYjJmM2MwOWQuLmExMTgyNTEwNjJjYzExYTA2NTY4OGMwZWE1ZTc2ZmVh
YWI4ZWI5MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKQEAgLTQzLDkgKzQzLDkgQEAgcHVibGljOgogICAgIH0KICAgICBz
dGF0aWMgdm9pZCBkZXJlZk9iamVjdCh2b2lkKik7CiAgICAgc3RhdGljIFdyYXBwZXJUeXBlSW5m
byBpbmZvOwotICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwotICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kV2l0aEFyZ3NDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJik7Ci0gICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjbGFzc01ldGhv
ZDJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJik7CisgICAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjdXN0b21NZXRob2RNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYpOworICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY3VzdG9tTWV0aG9kV2l0
aEFyZ3NNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYpOworICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY2xhc3NNZXRob2QyTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yQ2Fs
bGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gY3VzdG9tQXR0ckF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5h
bWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKICAgICBzdGF0aWMgdm9pZCBjdXN0b21BdHRy
QXR0clNldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggN2U5NmUwYjRk
N2ZmNWI1MDhjNTdhZTMwNzM1M2QxNGYzY2NhYTQ5OS4uYzczMjgxNzExYTIyYWQ2NzI5ZWZmZGY1
NjJlZDgwMGYxZjRhZDk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IGNhY2hlZFJlYWRvbmx5VmFsdWVBdHRyR2V0dGVyKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPgogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBhY2NlcHRUcmFuc2Zlckxpc3RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhY2NlcHRUcmFuc2Zlckxpc3RN
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgo
KSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3Mu
R2V0SXNvbGF0ZSgpKTsKQEAgLTE2Niw3ICsxNjYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFjY2VwdFRyYW5zZmVyTGlzdENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
ZwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQogCi1zdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG11bHRpVHJhbnNmZXJMaXN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3N0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXVsdGlUcmFuc2Zlckxpc3RNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDApIHsK
QEAgLTIyNSw4ICsyMjUsOCBAQCBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRj
aGVkQXR0cmlidXRlIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludAogfTsKIAogc3RhdGlj
IGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhbGxiYWNrc1tdID0gewotICAgIHsiYWNjZXB0VHJhbnNm
ZXJMaXN0IiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmFj
Y2VwdFRyYW5zZmVyTGlzdENhbGxiYWNrfSwKLSAgICB7Im11bHRpVHJhbnNmZXJMaXN0IiwgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6Om11bHRpVHJhbnNmZXJM
aXN0Q2FsbGJhY2t9LAorICAgIHsiYWNjZXB0VHJhbnNmZXJMaXN0IiwgVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmFjY2VwdFRyYW5zZmVyTGlzdE1ldGhvZH0s
CisgICAgeyJtdWx0aVRyYW5zZmVyTGlzdCIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2VWOEludGVybmFsOjptdWx0aVRyYW5zZmVyTGlzdE1ldGhvZH0sCiB9OwogCiB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpjb25z
dHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZz
LmNwcAppbmRleCBmZWYwYTgwMDE1OTM4NmNkNzFkYmZhMDY3OWNkZjcxNmMyZTJlNWEyLi5lZjU3
NDQwZmNhOWIzZjJkZWM1ZjQxYmQ1NGE2YTE0NTk4N2Y2MjFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5j
cHAKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgdm9pZCBUZXN0VHlwZWRlZnNSZXBsYWNlYWJs
ZUF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMbwogICAgIGluZm8u
VGhpcygpLT5Gb3JjZVNldChuYW1lLCB2YWx1ZSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZnVuY0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmNNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8PSAwKSB7CkBAIC0yMDYsNyAr
MjA2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5jQ2FsbGJhY2soY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtdWx0aVRyYW5zZmVyTGlzdENhbGxiYWNrKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG11bHRp
VHJhbnNmZXJMaXN0TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYg
KGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVu
dHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0yNDcsNyArMjQ3LDcgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBtdWx0aVRyYW5zZmVyTGlzdENhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KIAotc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRTaGFkb3dDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRTaGFkb3dNZXRob2QoY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDMpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKQEAgLTI2OSw3ICsyNjksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHNl
dFNoYWRvd0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0
aFNlcXVlbmNlQXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAg
ICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7
CkBAIC0yNzgsNyArMjc4LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RX
aXRoU2VxdWVuY2VBcmdDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIHJldHVybiB2
ODo6TnVtYmVyOjpOZXcoc3RhdGljX2Nhc3Q8ZG91YmxlPihpbXAtPm1ldGhvZFdpdGhTZXF1ZW5j
ZUFyZyhzZXF1ZW5jZUFyZykpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBu
dWxsYWJsZUFycmF5QXJnQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3N0YXRp
YyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVBcnJheUFyZ01ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpA
QCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbnVsbGFibGVB
cnJheUFyZ0NhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY1dpdGhD
bGFtcENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGZ1bmNXaXRoQ2xhbXBNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTMwOSwxMyArMzA5
LDEzIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY1dpdGhDbGFtcENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gaW1tdXRhYmxlUG9pbnRGdW5jdGlvbkNh
bGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGltbXV0YWJsZVBvaW50RnVuY3Rpb25NZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGltcCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gdG9WOChXVEY6OmdldFB0cihTVkdQcm9wZXJ0
eVRlYXJPZmY8RmxvYXRQb2ludD46OmNyZWF0ZShpbXAtPmltbXV0YWJsZVBvaW50RnVuY3Rpb24o
KSkpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHN0cmluZ0FycmF5
RnVuY3Rpb25NZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJn
cy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN0cmluZ0FycmF5RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKIH0KIAotc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHN0cmluZ0FycmF5RnVuY3Rpb24yTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4g
dGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0zNDks
NyArMzQ5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uMkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGEKICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gbWV0aG9kV2l0aEV4Y2VwdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCitzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZFdpdGhFeGNlcHRpb25N
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBUZXN0VHlwZWRlZnMqIGlt
cCA9IFY4VGVzdFR5cGVkZWZzOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKQEAgLTM4MywxMiArMzgzLDEyIEBAIHN0YXRpYyBjb25zdCBWOERPTUNv
bmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVjhUZXN0VHlwZWRlZnNBdHRyc1tdID0gewog
fTsKIAogc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFY4
VGVzdFR5cGVkZWZzQ2FsbGJhY2tzW10gPSB7Ci0gICAgeyJmdW5jIiwgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6ZnVuY0NhbGxiYWNrfSwKLSAgICB7Im11bHRpVHJhbnNmZXJMaXN0IiwgVGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6bXVsdGlUcmFuc2Zlckxpc3RDYWxsYmFja30sCi0gICAgeyJzZXRT
aGFkb3ciLCBUZXN0VHlwZWRlZnNWOEludGVybmFsOjpzZXRTaGFkb3dDYWxsYmFja30sCi0gICAg
eyJmdW5jV2l0aENsYW1wIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6ZnVuY1dpdGhDbGFtcENh
bGxiYWNrfSwKLSAgICB7ImltbXV0YWJsZVBvaW50RnVuY3Rpb24iLCBUZXN0VHlwZWRlZnNWOElu
dGVybmFsOjppbW11dGFibGVQb2ludEZ1bmN0aW9uQ2FsbGJhY2t9LAotICAgIHsibWV0aG9kV2l0
aEV4Y2VwdGlvbiIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om1ldGhvZFdpdGhFeGNlcHRpb25D
YWxsYmFja30sCisgICAgeyJmdW5jIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6ZnVuY01ldGhv
ZH0sCisgICAgeyJtdWx0aVRyYW5zZmVyTGlzdCIsIFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om11
bHRpVHJhbnNmZXJMaXN0TWV0aG9kfSwKKyAgICB7InNldFNoYWRvdyIsIFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnNldFNoYWRvd01ldGhvZH0sCisgICAgeyJmdW5jV2l0aENsYW1wIiwgVGVzdFR5
cGVkZWZzVjhJbnRlcm5hbDo6ZnVuY1dpdGhDbGFtcE1ldGhvZH0sCisgICAgeyJpbW11dGFibGVQ
b2ludEZ1bmN0aW9uIiwgVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6aW1tdXRhYmxlUG9pbnRGdW5j
dGlvbk1ldGhvZH0sCisgICAgeyJtZXRob2RXaXRoRXhjZXB0aW9uIiwgVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aEV4Y2VwdGlvbk1ldGhvZH0sCiB9OwogCiB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhUZXN0VHlwZWRlZnM6OmNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKQEAgLTQzMywyNSArNDMzLDI1IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2
ODo6CiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwogICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3Zb
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4c2VxdWVuY2U8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpT
aWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6
Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VB
cmdBcmd2KTsKLSAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0
aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJ
bnRlcm5hbDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOworICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxh
dGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRo
b2QsIHY4VW5kZWZpbmVkKCksIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbnVsbGFibGVBcnJheUFyZycKICAgICBjb25zdCBpbnQg
bnVsbGFibGVBcnJheUFyZ0FyZ2MgPSAxOwogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhE
T01TdHJpbmdbXTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgbnVsbGFibGVBcnJheUFyZ0FyZ2MsIG51bGxhYmxlQXJyYXlBcmdBcmd2KTsKLSAg
ICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibnVsbGFibGVBcnJheUFyZyIpLCB2
ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6Om51bGxhYmxl
QXJyYXlBcmdDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbnVsbGFibGVBcnJheUFyZ1NpZ25hdHVy
ZSkpOworICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJudWxsYWJsZUFycmF5
QXJnIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6
bnVsbGFibGVBcnJheUFyZ01ldGhvZCwgdjhVbmRlZmluZWQoKSwgbnVsbGFibGVBcnJheUFyZ1Np
Z25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlv
bicKICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwogICAgIHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmlu
Z0FycmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhET01TdHJpbmdbXTo6R2V0UmF3VGVtcGxhdGUoaXNv
bGF0ZSkgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rp
b25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlv
bkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2KTsKLSAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25DYWxsYmFj
aywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOworICAgIHBy
b3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJy
YXlGdW5jdGlvbk1ldGhvZCwgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25h
dHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjIn
CiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb24yQXJnYyA9IDE7CiAgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmlu
Z0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4RE9NU3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlz
b2xhdGUpIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0
aW9uMkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rpb24yQXJndik7Ci0gICAgcHJvdG8tPlNldCh2ODo6
U3RyaW5nOjpOZXdTeW1ib2woInN0cmluZ0FycmF5RnVuY3Rpb24yIiksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoVGVzdFR5cGVkZWZzVjhJbnRlcm5hbDo6c3RyaW5nQXJyYXlGdW5jdGlvbjJD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUpKTsK
KyAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJyYXlGdW5jdGlv
bjIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpz
dHJpbmdBcnJheUZ1bmN0aW9uMk1ldGhvZCwgdjhVbmRlZmluZWQoKSwgc3RyaW5nQXJyYXlGdW5j
dGlvbjJTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQogICAg
IGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5nIiksIFY4UGVySXNvbGF0
ZURhdGE6OmN1cnJlbnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4
IDIxNGI0YWY5MDFiMmRkMWRlNmMxZDI5NTBiODRhMDQxYzk0Y2IzYmQuLjVkZmE5YjFjNmQzMTQ2
MTgwZWMwYmQ4MmRhNGUwZjYyOGYxYmIzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtNjAsNyArNjAs
NyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnR5cGVzQXR0ckdldHRlckN1
c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6Y2xlYXJEYXRhQ2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBi
b2FyZDo6Y2xlYXJEYXRhTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBWOENsaXBib2FyZDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAKQEAgLTc3LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q2xp
cGJvYXJkOjpjbGVhckRhdGFDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJgogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENs
aXBib2FyZDo6c2V0RHJhZ0ltYWdlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlTWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgQ2xpcGJvYXJkKiBj
bGlwYm9hcmQgPSBWOENsaXBib2FyZDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENvbnNvbGVDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5j
cHAKaW5kZXggODk2YjhhZTQyOGY4MDhmMjVlZDVmNmFkMDg2NWJhN2FhN2IwNjQ4Mi4uYWNlZjBl
MGQ1YzRlNTJiOWM3YWIwNzFmOGVkMGNlOTJkY2YxZjYxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q29uc29sZUN1c3RvbS5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhDb25zb2xlOjp0cmFjZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjp0cmFjZU1ldGhvZEN1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gc2Ny
aXB0QXJndW1lbnRzKGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhhcmdzLCAwKSk7CkBAIC00OCw3ICs0
OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENvbnNvbGU6OnRyYWNlQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsK
IH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOENv
bnNvbGU6OmFzc2VydE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIENvbnNvbGUqIGltcCA9IFY4Q29uc29sZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAg
ICAgYm9vbCBjb25kaXRpb24gPSBhcmdzWzBdLT5Cb29sZWFuVmFsdWUoKTsKQEAgLTU4LDcgKzU4
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6YXNzZXJ0Q2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBU
X0RFQlVHR0VSKQotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q29uc29sZTo6cHJvZmlsZUNhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhDb25zb2xlOjpwcm9maWxlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgQ29uc29sZSogaW1wID0gVjhDb25zb2xlOjp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3Vy
Y2U8V2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrPiwgdGl0bGUsIGFyZ3NbMF0pOwpAQCAtNjYsNyAr
NjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgp
OwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDb25zb2xlOjpwcm9maWxlRW5kQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOENvbnNvbGU6OnByb2ZpbGVFbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKICAgICBDb25zb2xlKiBpbXAgPSBWOENvbnNvbGU6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNv
dXJjZTxXaXRoVW5kZWZpbmVkT3JOdWxsQ2hlY2s+LCB0aXRsZSwgYXJnc1swXSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNwcApp
bmRleCA4MjVmYjJmODY0OTZkZDc4MGVjOGE5OTAxNjdhNjFmNGQwM2E3ZjcyLi42YWMzZWZlNjFj
YTMyNzNiZDg4NmNiM2Y1Y2NhN2YwYjhlYzgxZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHAKQEAgLTM1LDcgKzM1LDcg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDcnlw
dG86OmdldFJhbmRvbVZhbHVlc0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhDcnlwdG86OmdldFJhbmRvbVZhbHVlc01ldGhv
ZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0
aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJn
cy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwCmluZGV4IGEzODc1Njk5N2IzMzQyMzgx
NDZjZWNmMzhkZjM5NDBmNjczMjQ0MDMuLjJmYjE3ZmY2M2NmN2QzMDgzYjI4Zjg4NDQyOGYzMTI5
OGVhMTM5ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OERPTUZvcm1EYXRhQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhET01Gb3JtRGF0YUN1c3RvbS5jcHAKQEAgLTUxLDcgKzUxLDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NRm9ybURhdGE6OmNvbnN0cnVjdG9yQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW4KICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NRm9ybURhdGE6OmFwcGVuZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6YXBwZW5k
TWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3Mu
TGVuZ3RoKCkgPCAyKQogICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih2OFN5bnRheEVycm9yLCAi
Tm90IGVub3VnaCBhcmd1bWVudHMiLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NV2luZG93Q3VzdG9tLmNwcApp
bmRleCAzNzdlODQwNjkyOTY0OGE5NmM0YTVhOTVkMDgwZmE2Njk3MDQ3MmEwLi4xNWQ4YmIxZDZm
MGRlZTg3ZTE3NDhlZDA1MGUzZmE4ZmNhZTE5MmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTVdpbmRvd0N1c3RvbS5jcHAKQEAgLTIyNiw3
ICsyMjYsNyBAQCB2b2lkIFY4RE9NV2luZG93OjpvcGVuZXJBdHRyU2V0dGVyQ3VzdG9tKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8dgogICAgIGluZm8uVGhpcygpLT5TZXQo
bmFtZSwgdmFsdWUpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmFk
ZEV2ZW50TGlzdGVuZXJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjphZGRFdmVudExpc3RlbmVyTWV0aG9k
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgU3RyaW5nIGV2ZW50VHlw
ZSA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKICAgICBib29sIHVzZUNhcHR1cmUgPSBhcmdz
WzJdLT5Cb29sZWFuVmFsdWUoKTsKQEAgLTI1Niw3ICsyNTYsNyBAQCB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhET01XaW5kb3c6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXJndQogfQogCiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cmVtb3Zl
RXZlbnRMaXN0ZW5lckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnJlbW92ZUV2ZW50TGlzdGVuZXJNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBTdHJpbmcgZXZlbnRU
eXBlID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pOwogICAgIGJvb2wgdXNlQ2FwdHVyZSA9IGFy
Z3NbMl0tPkJvb2xlYW5WYWx1ZSgpOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHN0YXRpYyBib29sIGlz
TGVnYWN5VGFyZ2V0T3JpZ2luRGVzaWduYXRpb24odjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
KQogfQogCiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6cG9zdE1lc3NhZ2VD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RE9NV2luZG93Ojpwb3N0TWVzc2FnZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIC8vIE5vbmUgb2YgdGhlc2UgbmVlZCB0byBiZSBSZWZQdHIg
YmVjYXVzZSBhcmdzIGFuZCBjb250ZXh0IGFyZSBndWFyYW50ZWVkCiAgICAgLy8gdG8gaG9sZCBv
biB0byB0aGVtLgpAQCAtMzQyLDcgKzM0Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERP
TVdpbmRvdzo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzCiAv
LyBmaXggdGhpcyBieSBjYWxsaW5nIHRvU3RyaW5nIGZ1bmN0aW9uIG9uIHRoZSByZWNlaXZlci4K
IC8vIEhvd2V2ZXIsIFY4IGltcGxlbWVudHMgdG9TdHJpbmcgaW4gSmF2YVNjcmlwdCwgd2hpY2gg
cmVxdWlyZXMKIC8vIHN3aXRjaGluZyBjb250ZXh0IG9mIHJlY2VpdmVyLiBJIGNvbnNpZGVyIGl0
IGlzIGRhbmdlcm91cy4KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6dG9TdHJp
bmdDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93Ojp0b1N0cmluZ01ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZG9tV3JhcHBlciA9
IGFyZ3MuVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4RE9NV2luZG93OjpH
ZXRUZW1wbGF0ZShhcmdzLkdldElzb2xhdGUoKSkpOwogICAgIGlmIChkb21XcmFwcGVyLklzRW1w
dHkoKSkKQEAgLTM1MCwxMiArMzUwLDEyIEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdp
bmRvdzo6dG9TdHJpbmdDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhCiAgICAg
cmV0dXJuIGRvbVdyYXBwZXItPk9iamVjdFByb3RvVG9TdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpyZWxlYXNlRXZlbnRzQ2FsbGJhY2tDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRv
dzo6cmVsZWFzZUV2ZW50c01ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6Y2FwdHVyZUV2ZW50c0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OmNhcHR1cmVF
dmVudHNNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1
cm4gdjg6OlVuZGVmaW5lZCgpOwogfQpAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIHNl
dFVwRGlhbG9nKERPTVdpbmRvdyogZGlhbG9nLCB2b2lkKiBoYW5kbGVyKQogICAgIHN0YXRpY19j
YXN0PERpYWxvZ0hhbmRsZXIqPihoYW5kbGVyKS0+ZGlhbG9nQ3JlYXRlZChkaWFsb2cpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ0NhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhET01XaW5kb3c6OnNob3dNb2RhbERpYWxvZ01ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIERPTVdpbmRvdyogaW1wbCA9IFY4RE9NV2luZG93Ojp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3RhdGUqIHN0YXRlID0gQmluZGluZ1N0
YXRlOjppbnN0YW5jZSgpOwpAQCAtNDE5LDcgKzQxOSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtCiAgICAgcmV0dXJuIGhhbmRsZXIucmV0dXJuVmFsdWUoKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4RE9NV2luZG93OjpvcGVuQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdpbmRvdzo6b3Blbk1ldGhv
ZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIERPTVdpbmRvdyogaW1w
bCA9IFY4RE9NV2luZG93Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBCaW5kaW5nU3Rh
dGUqIHN0YXRlID0gQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpOwpAQCAtNDk2LDEzICs0OTYsMTMg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpuYW1lZFByb3BlcnR5R2V0dGVy
KHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW0KIH0KIAogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhET01XaW5kb3c6OnNldFRpbWVvdXRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRUaW1lb3V0TWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIFdpbmRv
d1NldFRpbWVvdXRJbXBsKGFyZ3MsIHRydWUpOwogfQogCiAKLXY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERPTVdpbmRvdzo6c2V0SW50ZXJ2YWxDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV2luZG93OjpzZXRJbnRlcnZh
bE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBX
aW5kb3dTZXRUaW1lb3V0SW1wbChhcmdzLCBmYWxzZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKaW5kZXggN2M1
NjM3MzVhZDIzY2IyMGZmMWYwNzE0NzI3MmI3ZTZmMTJkYmJmOS4uYmQyYjhjZjBiYjJkOTYyZTIy
YjI4OWY5YjNlOTZiMDMyNzA0MDZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcApAQCAtNTQsNyArNTQsNyBAQCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoRGF0YVZpZXcqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZQogICAgIHJldHVybiBWOERhdGFWaWV3OjpjcmVhdGVXcmFw
cGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpnZXRJbnQ4TWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVu
Z3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihh
cmdzLkdldElzb2xhdGUoKSk7CkBAIC02OCw3ICs2OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOERhdGFWaWV3OjpnZXRJbnQ4Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJnCiAgICAgcmV0dXJuIHY4SW50ZWdlcihyZXN1bHQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0K
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmdldFVpbnQ4Q2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERh
dGFWaWV3OjpnZXRVaW50OE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtODIsNyArODIsNyBAQCB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEYXRhVmlldzo6Z2V0VWludDhDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiB2OEludGVnZXIocmVzdWx0LCBhcmdz
LkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3Ojpz
ZXRJbnQ4Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRJbnQ4TWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAyKQogICAgICAgICBy
ZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBA
IC05Nyw3ICs5Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRJbnQ4
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgcmV0dXJuIHY4VW5k
ZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERhdGFWaWV3OjpzZXRVaW50
OENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhEYXRhVmlldzo6c2V0VWludDhNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVy
biB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERlZGljYXRlZFdvcmtl
ckNvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggOWM3MmE1OWJlY2FkOTBiNWE3
YTc1Nzc2NjYyNjkwOWU5OGM1OTg5My4uOWNlNTdhMDI5ZmU2OTdhODNhODk1MDJhZmIyZjM4YzYy
MDJkMmMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4RGVkaWNhdGVkV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQx
LDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhEZWRpY2F0ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZUNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEZWRpY2F0
ZWRXb3JrZXJDb250ZXh0Ojpwb3N0TWVzc2FnZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIERlZGljYXRlZFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQg
PSBWOERlZGljYXRlZFdvcmtlckNvbnRleHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IE1lc3NhZ2VQb3J0QXJyYXkgcG9ydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VNb3Rpb25FdmVudEN1c3RvbS5jcHAKaW5k
ZXggZTQ5YTQyMTBjZmY5Mzg3YjA2YmU0N2YzM2FjMDE1YmJhYzQ0NTJjOS4uNjQwZjhkM2IwNGI0
YmM4NWQyOGNmNWQ4NDA0YTJjMjQ5Mzk5MTQyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RGV2aWNlTW90aW9uRXZlbnRDdXN0b20uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU1vdGlvbkV2ZW50Q3VzdG9t
LmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1v
dGlvbkV2ZW50OjppbnRlcnZhbEF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4CiAgICAgcmV0
dXJuIHY4OjpOdW1iZXI6Ok5ldyhpbXAtPmRldmljZU1vdGlvbkRhdGEoKS0+aW50ZXJ2YWwoKSk7
CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERldmljZU1vdGlvbkV2ZW50Ojppbml0RGV2
aWNlTW90aW9uRXZlbnRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlTW90aW9uRXZlbnQ6OmluaXREZXZpY2VNb3Rp
b25FdmVudE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIERl
dmljZU1vdGlvbkV2ZW50KiBpbXAgPSBWOERldmljZU1vdGlvbkV2ZW50Ojp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5n
UmVzb3VyY2U8PiwgdHlwZSwgYXJnc1swXSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhEZXZpY2VPcmllbnRhdGlvbkV2ZW50Q3VzdG9tLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCmluZGV4IDUxN2NiMWE3ZjY5MDY4NmVlZjVhYzQxMDE0Mzc3NmRlYWMyZjQwNzMu
LjQ3MTZjMWVkOTJiMmNjOWEyYTJkNGJmNmYwYzA5MzMxY2ZjYTBmOTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmljZU9yaWVudGF0aW9uRXZlbnRD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERldmlj
ZU9yaWVudGF0aW9uRXZlbnRDdXN0b20uY3BwCkBAIC03MSw3ICs3MSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmFic29sdXRlQXR0ckdldHRlckN1
c3RvbSh2ODo6TG9jCiAgICAgcmV0dXJuIHY4OjpCb29sZWFuOjpOZXcoaW1wLT5vcmllbnRhdGlv
bigpLT5hYnNvbHV0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNlT3Jp
ZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGV2aWNl
T3JpZW50YXRpb25FdmVudDo6aW5pdERldmljZU9yaWVudGF0aW9uRXZlbnRNZXRob2RDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBEZXZpY2VPcmllbnRhdGlvbkV2ZW50
KiBpbXAgPSBWOERldmljZU9yaWVudGF0aW9uRXZlbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkp
OwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNvdXJjZTw+
LCB0eXBlLCBhcmdzWzBdKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCAxZjEyZWUyODZlMDZkMzE0N2JmY2Yx
M2ZiOTQyMjk1YzAwMTgwYTBjLi4yZTBkYWQ4ZDIzMGFkMjM4NTcyNjkyN2U4MDY5ZmVhZGYxYjc2
YTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1
bWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
RG9jdW1lbnRDdXN0b20uY3BwCkBAIC02NCw3ICs2NCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RG9jdW1lbnQ6OmV2YWx1YXRlQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OERvY3VtZW50OjpldmFsdWF0ZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSBWOERvY3VtZW50Ojp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKQEAgLTEwOSw3ICsx
MDksNyBAQCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoRG9jdW1lbnQqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZQogfQogCiAjaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpjcmVhdGVUb3VjaExpc3RD
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4RG9jdW1lbnQ6OmNyZWF0ZVRvdWNoTGlzdE1ldGhvZEN1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogewogICAgIFJlZlB0cjxUb3VjaExpc3Q+IHRvdWNoTGlzdCA9IFRv
dWNoTGlzdDo6Y3JlYXRlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEdlb2xvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCAxYjQ1NDAxMjEwMjVm
NjU1MWYxYTA3MTE4MmZkZDAwZjU1MWY1YjQ2Li5lNzMwNzRmOWI3YmZlZjViNWY4Nzc3ZmNjM2Mz
NzY1YTI2Y2RiZDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhHZW9sb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4R2VvbG9jYXRpb25DdXN0b20uY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgc3Rh
dGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGVQb3NpdGlvbk9wdGlvbnModjg6
OkxvY2FsPHY4OjpWYWx1ZT4gdmEKICAgICByZXR1cm4gb3B0aW9ucy5yZWxlYXNlKCk7CiB9CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb25D
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbk1ldGhvZEN1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CiAK
QEAgLTE1Miw3ICsxNTIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhHZW9sb2NhdGlvbjo6
Z2V0Q3VycmVudFBvc2l0aW9uQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OgogICAgIHJldHVybiB2
ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uTWV0aG9k
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgYm9vbCBzdWNjZWVkZWQg
PSBmYWxzZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IGRmYjA2NGZlNGQ0
MGNmNDJlMTk5ZTM1NDgwM2ZhNDcxMDY0M2I5ZGYuLjE2MWUzMWJkOGUwY2RhODhmZjRhZDQ4Mzdk
MDRiZmQ5ZGE1ZWUyODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEhUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTg1LDEz
ICs4NSwxMyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFt
ZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6OlN0cgogICAgIHJldHVybiBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlQXRvbWljU3RyaW5nKG5hbWUpLCBpbmZvKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Oml0ZW1DYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFs
bENvbGxlY3Rpb246Oml0ZW1NZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBIVE1MQWxsQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MQWxsQ29sbGVjdGlvbjo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgcmV0dXJuIGdldEl0ZW0oaW1wLCBhcmdzWzBdLCBh
cmdzKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTEFsbENvbGxlY3Rpb246Om5h
bWVkSXRlbUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZWRJdGVtTWV0aG9kQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTEFsbENvbGxlY3Rpb24qIGlt
cCA9IFY4SFRNTEFsbENvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0ZW1zKGltcCwgdG9XZWJDb3Jl
U3RyaW5nKGFyZ3NbMF0pLCBhcmdzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxDYW52YXNFbGVtZW50Q3VzdG9tLmNwcAppbmRl
eCA0YTNjNWMyM2E4NGE2MGI5NGY2ZWQ5OWFjNTBkMTViMDE1MDRlMzE4Li44YmJiNDM2ZWIwMDll
ODc1MzI3ZDI1MTdmNGFjOTc0MTJhM2IzYzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhIVE1MQ2FudmFzRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTENhbnZhc0VsZW1lbnRDdXN0b20u
Y3BwCkBAIC00OCw3ICs0OCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9s
ZGVyKCk7CiAgICAgSFRNTENhbnZhc0VsZW1lbnQqIGltcCA9IFY4SFRNTENhbnZhc0VsZW1lbnQ6
OnRvTmF0aXZlKGhvbGRlcik7CkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6OmdldENvbnRleHRDYWxsYmFja0N1c3RvbShjb25zdCB2
ODo6QXIKICAgICByZXR1cm4gdjhOdWxsKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4SFRNTENhbnZhc0VsZW1lbnQ6OnRvRGF0YVVSTENhbGxiYWNrQ3Vz
dG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhI
VE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhv
bGRlcigpOwogICAgIEhUTUxDYW52YXNFbGVtZW50KiBjYW52YXMgPSBWOEhUTUxDYW52YXNFbGVt
ZW50Ojp0b05hdGl2ZShob2xkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggMjE2OTM5Mjlm
YmQ4NjNmODBhYTNhY2U0YTM3NWM4OWVmODY4YzQzNC4uNWMxZjY1ZmY1MTlkYTJlYzU3ODdlNDcy
MDBlNzA2NThmYWNhODIxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhIVE1MRG9jdW1lbnRDdXN0b20uY3BwCkBAIC0xMTUsMjEgKzExNSwy
MSBAQCBzdGF0aWMgU3RyaW5nIHdyaXRlSGVscGVyR2V0U3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50Ojp3cml0ZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6
OndyaXRlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRN
TERvY3VtZW50KiBodG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgaHRtbERvY3VtZW50LT53cml0ZSh3cml0ZUhlbHBlckdldFN0cmluZyhh
cmdzKSwgYWN0aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSktPmRvY3VtZW50
KCkpOwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxEb2N1bWVudDo6d3JpdGVsbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRG9jdW1lbnQ6OndyaXRl
bG5NZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MRG9j
dW1lbnQqIGh0bWxEb2N1bWVudCA9IFY4SFRNTERvY3VtZW50Ojp0b05hdGl2ZShhcmdzLkhvbGRl
cigpKTsKICAgICBodG1sRG9jdW1lbnQtPndyaXRlbG4od3JpdGVIZWxwZXJHZXRTdHJpbmcoYXJn
cyksIGFjdGl2ZURPTVdpbmRvdyhCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCkpLT5kb2N1bWVudCgp
KTsKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MRG9jdW1lbnQ6Om9wZW5DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTERvY3VtZW50OjpvcGVuTWV0aG9k
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTERvY3VtZW50KiBo
dG1sRG9jdW1lbnQgPSBWOEhUTUxEb2N1bWVudDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCA0NTM3
YmM0OGVjN2YwYjAwYmEyYzIyYmIzMWJlNDBmYTY0NjY5ZWQ1Li5hM2E1NDIzZDgwYmJhZWM3ZmU5
ZDhhMDJhNTliODE5Y2RlZDlkMDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTEZvcm1Db250cm9sc0NvbGxl
Y3Rpb25DdXN0b20uY3BwCkBAIC02NSw3ICs2NSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZFByb3BlcnR5R2V0dGVyKHY4OjpMb2Nh
CiAgICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFt
ZSksIGluZm8pOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MRm9ybUNvbnRyb2xz
Q29sbGVjdGlvbjo6bmFtZWRJdGVtQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9u
OjpuYW1lZEl0ZW1NZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiogaW1wID0gVjhIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHJlc3VsdCA9IGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVTdHJpbmcoYXJnc1swXSks
IGFyZ3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYWJjMzA3
MmM3MzFhODI1MTU1YjdjNDg4ODFkNjIyYTczNDNlNTdjNy4uOTM1NWVlM2RmNWYwMGQ2ZWU0MDg1
MTYyYjY1NTVjNWNmNDI4MWMyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3Iu
Y3BwCkBAIC00NSw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV3JhcHBlclR5cGVJ
bmZvIFY4SFRNTEltYWdlRWxlbWVudENvbnN0cnVjdG9yOjppbmZvID0geyBWOEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUsIFY4SFRNTEltYWdlRWxlbWVudDo6ZGVyZWZP
YmplY3QsIDAsIFY4SFRNTEltYWdlRWxlbWVudDo6dG9FdmVudFRhcmdldCwgMCwgVjhIVE1MSW1h
Z2VFbGVtZW50OjppbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMsIDAsIFdyYXBw
ZXJUeXBlT2JqZWN0UHJvdG90eXBlIH07CiAKLXN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhIVE1MSW1hZ2VFbGVtZW50Q29uc3RydWN0b3JDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQorc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OEhUTUxJbWFnZUVs
ZW1lbnRDb25zdHJ1Y3Rvck1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGlmICghYXJncy5Jc0NvbnN0cnVjdENhbGwoKSkKICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKCJET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBm
dW5jdGlvbi4iLCBhcmdzLkdldElzb2xhdGUoKSk7CkBAIC04OCw3ICs4OCw3IEBAIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEhUTUxJbWFnZUVsZW1lbnRDb25zdHJ1Y3Rv
cjo6R2V0VGVtcGxhdGUoCiAgICAgICAgIHJldHVybiBjYWNoZWRUZW1wbGF0ZTsKIAogICAgIHY4
OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHJlc3VsdCA9IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcodjhIVE1MSW1hZ2VFbGVtZW50Q29u
c3RydWN0b3JDYWxsYmFja0N1c3RvbSk7CisgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiByZXN1bHQgPSB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KHY4SFRNTEltYWdlRWxlbWVu
dENvbnN0cnVjdG9yTWV0aG9kQ3VzdG9tKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVt
cGxhdGU+IGluc3RhbmNlID0gcmVzdWx0LT5JbnN0YW5jZVRlbXBsYXRlKCk7CiAgICAgaW5zdGFu
Y2UtPlNldEludGVybmFsRmllbGRDb3VudChWOEhUTUxJbWFnZUVsZW1lbnQ6OmludGVybmFsRmll
bGRDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCmluZGV4IGIwNTg4MzU3ZjYxYmRh
MGU3NTc3YTQwMWI2MGEwMzM2NjQwYmRlNzEuLjZiYWQzYWJlODNlNjk3YzgxYzM3YTBhYjY3YjA0
MTg4YzA0YzZmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEhUTUxJbnB1dEVsZW1lbnRDdXN0b20uY3BwCkBAIC0xMTAsNyArMTEw
LDcgQEAgdm9pZCBWOEhUTUxJbnB1dEVsZW1lbnQ6OnNlbGVjdGlvbkRpcmVjdGlvbkF0dHJTZXR0
ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmcKICAgICBpbXAtPnNldFNlbGVjdGlvbkRpcmVj
dGlvbih0b1dlYkNvcmVTdHJpbmcodmFsdWUpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SFRNTElucHV0RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2VDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTElucHV0
RWxlbWVudDo6c2V0U2VsZWN0aW9uUmFuZ2VNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9s
ZGVyKCk7CiAgICAgSFRNTElucHV0RWxlbWVudCogaW1wID0gVjhIVE1MSW5wdXRFbGVtZW50Ojp0
b05hdGl2ZShob2xkZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5k
ZXggYzNjYmI3YTBmNWUyMmNiMTFkMTg2Y2FkMGE3OWQ1MDNhZTVlMDI2OS4uM2Y3Y2RkNTg4Mzk0
OTZiNmQ2M2Y5MDU3ZGRlMWIxMjg0ODdlNzQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b25DdXN0b20uY3BwCkBAIC03MSw3ICs3MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhU
TUxPcHRpb25zQ29sbGVjdGlvbjo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6CiAg
ICAgcmV0dXJuIGdldE5hbWVkSXRlbXMoaW1wLCB0b1dlYkNvcmVBdG9taWNTdHJpbmcobmFtZSks
IGluZm8pOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b246Om5hbWVkSXRlbUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVkSXRlbU1l
dGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIEhUTUxPcHRpb25z
Q29sbGVjdGlvbiogaW1wID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3Mu
SG9sZGVyKCkpOwogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQgPSBnZXROYW1lZEl0
ZW1zKGltcCwgdG9XZWJDb3JlU3RyaW5nKGFyZ3NbMF0pLCBhcmdzKTsKQEAgLTgyLDE0ICs4Miwx
NCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVk
SXRlbUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEhUTUxPcHRpb25zQ29sbGVjdGlvbjo6cmVtb3ZlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBpbXAgPSBWOEhU
TUxPcHRpb25zQ29sbGVjdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgSFRNTFNl
bGVjdEVsZW1lbnQqIGJhc2UgPSBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVudCo+KGltcC0+
b3duZXJOb2RlKCkpOwogICAgIHJldHVybiByZW1vdmVFbGVtZW50KGJhc2UsIGFyZ3MpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZENhbGxi
YWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OmFkZE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIGlmICghVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKFRZUEVfTUlTTUFUQ0hfRVJSLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MU2VsZWN0
RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggYjQ4ZmQyMGVmNmE0ZDIxMzI4ZTk4OGNmMDE3NzYyMzY0
MGJjNWJlMC4uMTBiMjNjNDZkZTA1NjZiZDQxOTM3YzNhZWVlODczZWExMzkyZjkzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1l
bnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEhU
TUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcApAQCAtNjIsNyArNjIsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhIVE1MU2VsZWN0RWxlbWVudDo6aW5kZXhlZFByb3BlcnR5U2V0dGVyKHVpbnQz
Ml90IGluZGV4LAogICAgIHJldHVybiB0b09wdGlvbnNDb2xsZWN0aW9uU2V0dGVyKGluZGV4LCB2
YWx1ZSwgc2VsZWN0LCBpbmZvLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTFNlbGVjdEVsZW1l
bnQ6OnJlbW92ZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAg
IEhUTUxTZWxlY3RFbGVtZW50KiBpbXAgPSBWOEhUTUxTZWxlY3RFbGVtZW50Ojp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKICAgICByZXR1cm4gcmVtb3ZlRWxlbWVudChpbXAsIGFyZ3MpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SGlzdG9yeUN1c3Rv
bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9t
LmNwcAppbmRleCBmN2Y4ZjE3Mzg4OTNlZDJhNTkyMGFiYmM5ZWNlN2YyMjZhYjllOTkwLi4wN2Y3
Zjk3ZTQwOTljMGY2MTgyNjJiODE0MzU1ZTc5ZDVlZjMxNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIaXN0b3J5Q3VzdG9tLmNwcApAQCAtNTcs
NyArNTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpzdGF0ZUF0dHJHZXR0
ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbQogICAgIHJldHVybiB2YWx1ZTsKIH0K
IAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9yeTo6cHVzaFN0YXRlQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhp
c3Rvcnk6OnB1c2hTdGF0ZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxzZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdz
WzBdLCAwLCAwLCBkaWRUaHJvdywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtNzQsNyArNzQsNyBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhIaXN0b3J5OjpwdXNoU3RhdGVDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMs
IGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SGlzdG9y
eTo6cmVwbGFjZVN0YXRlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
K3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhpc3Rvcnk6OnJlcGxhY2VTdGF0ZU1ldGhvZEN1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGJvb2wgZGlkVGhyb3cgPSBmYWxz
ZTsKICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBoaXN0b3J5U3RhdGUgPSBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6OmNyZWF0ZShhcmdzWzBdLCAwLCAwLCBkaWRUaHJvdywgYXJncy5H
ZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggYjI2MTY0
MTYyYmVkMWU1MDhjOWRlOThhNmYxMDU2ZWFlMzNhNzA1Ny4uMjMyMGYzNmU5MDQ2NWU5MzI1MDM5
NmMzZmU3MmFiNzRmNTRhOTAxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBA
IC03OSw3ICs3OSw3IEBAIFNjcmlwdFZhbHVlIEluamVjdGVkU2NyaXB0SG9zdDo6bm9kZUFzU2Ny
aXB0VmFsdWUoU2NyaXB0U3RhdGUqIHN0YXRlLCBOb2RlKiBub2RlCiAgICAgcmV0dXJuIFNjcmlw
dFZhbHVlKHRvVjgobm9kZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCBjb250ZXh0LT5HZXRJ
c29sYXRlKCkpKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRI
b3N0OjppbnNwZWN0ZWRPYmplY3RDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnNwZWN0
ZWRPYmplY3RNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBA
IC05Miw3ICs5Miw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6aW5zcGVjdGVkT2JqZWN0Q2FsbGJhY2tDdXN0b20oY29uc3QKICAgICByZXR1cm4gb2JqZWN0
LT5nZXQoU2NyaXB0U3RhdGU6OmN1cnJlbnQoKSkudjhWYWx1ZSgpOwogfQogCi12ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmludGVybmFsQ29uc3RydWN0b3JOYW1l
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxDb25zdHJ1Y3Rvck5hbWVNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5n
dGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xMDMsNyArMTAz
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRlcm5h
bENvbnN0cnVjdG9yTmFtZUNhbGxiYWNrQ3VzdG8KICAgICByZXR1cm4gYXJnc1swXS0+VG9PYmpl
Y3QoKS0+R2V0Q29uc3RydWN0b3JOYW1lKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEluamVjdGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbkNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmlzSFRNTEFsbENvbGxlY3Rpb25NZXRob2RDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJl
dHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xMTUsNyArMTE1LDcgQEAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uQ2FsbGJhY2tD
dXN0b20oY28KICAgICByZXR1cm4gdjg6OkJvb2xlYW46Ok5ldyhWOEhUTUxBbGxDb2xsZWN0aW9u
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpOwogfQogCi12ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnR5cGVDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0
ZWRTY3JpcHRIb3N0Ojp0eXBlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwpAQCAtMTUwLDcgKzE1MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVj
dGVkU2NyaXB0SG9zdDo6dHlwZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVuCiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRI
b3N0OjpmdW5jdGlvbkRldGFpbHNNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5k
ZWZpbmVkKCk7CkBAIC0xODksNyArMTg5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpmdW5jdGlvbkRldGFpbHNDYWxsYmFja0N1c3RvbShjb25zdAogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2Ny
aXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwpAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpB
cnJheT4gZ2V0SlNMaXN0ZW5lckZ1bmN0aW9ucyhEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEV2
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0
ZWRTY3JpcHRIb3N0OjpnZXRFdmVudExpc3RlbmVyc0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OmdldEV2ZW50TGlzdGVuZXJzTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdjg6OlVu
ZGVmaW5lZCgpOwpAQCAtMjY5LDcgKzI2OSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
amVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnNDYWxsYmFja0N1c3RvbShjb25zCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRT
Y3JpcHRIb3N0OjppbnNwZWN0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVjdE1l
dGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMikKICAgICAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTI4Miw3ICsy
ODIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6Omluc3Bl
Y3RDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndQogICAgIHJldHVybiB2ODo6VW5kZWZpbmVk
KCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZGF0
YWJhc2VJZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWRNZXRob2RDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8
IDEpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0yOTUsNyArMjk1LDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3JpcHRIb3N0OjpkYXRhYmFzZUlkQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkEKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZENh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZE1ldGhvZEN1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTMwNiw3ICszMDYsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZENhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcgogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFja0N1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0OjpldmFsdWF0ZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHY4
OjpUaHJvd0V4Y2VwdGlvbih2ODo6RXhjZXB0aW9uOjpFcnJvcih2ODo6U3RyaW5nOjpOZXcoIk9u
ZSBhcmd1bWVudCBleHBlY3RlZC4iKSkpOwpAQCAtMzIxLDcgKzMyMSw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJnCiAgICAgcmV0dXJuIHNjcmlwdC0+UnVuKCk7CiB9CiAKLXY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVl
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlTWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGZ1bmN0aW9uVmFsdWUgPSBhcmdzWzBdOwogICAgIGludCBzY29wZUluZGV4ID0g
YXJnc1sxXS0+SW50MzJWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluc3BlY3RvckZyb250ZW5kSG9zdEN1c3RvbS5j
cHAKaW5kZXggMzk5Y2YzYzI5MTZiOGVhODEyMjgyNjJjM2I5NTJjODJmMDE1ODZiZS4uOTVhYWVl
MDRjYmIyMmIyZWRkNTAxZGE3NWJmNDNjNGZhOTZkODg1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Q3VzdG9tLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbnNwZWN0b3JGcm9u
dGVuZEhvc3RDdXN0b20uY3BwCkBAIC00Myw3ICs0Myw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0OjpwbGF0
Zm9ybUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnBsYXRmb3JtTWV0aG9kQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAjaWYgZGVmaW5lZChPU19NQUNPU1gpCiAg
ICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWFjIik7CkBAIC02Miw3ICs2Miw3IEBA
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluc3BlY3RvckZyb250ZW5kSG9zdDo6cGxhdGZvcm1D
YWxsYmFja0N1c3RvbShjb25zdCB2ODo6CiAjZW5kaWYKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0Ojpwb3J0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbnNwZWN0b3JGcm9udGVuZEhv
c3Q6OnBvcnRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYpCiB7CiAgICAgcmV0dXJu
IHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBzdGF0aWMgdm9pZCBwb3B1
bGF0ZUNvbnRleHRNZW51SXRlbXModjg6OkxvY2FsPHY4OjpBcnJheT4mIGl0ZW1BcnJheSwgQ29u
dGV4dE1lbgogICAgIH0KIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJv
bnRlbmRIb3N0OjpzaG93Q29udGV4dE1lbnVDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9yRnJvbnRlbmRIb3N0
OjpzaG93Q29udGV4dE1lbnVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CkBAIC0xNDYsMTcgKzE0NiwxNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGhpc3RvZ3JhbUVudW1lcmF0aW9uKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IHY4OjpBcgogICAg
IHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
c3BlY3RvckZyb250ZW5kSG9zdDo6cmVjb3JkQWN0aW9uVGFrZW5DYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVjdG9y
RnJvbnRlbmRIb3N0OjpyZWNvcmRBY3Rpb25UYWtlbk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBoaXN0b2dyYW1FbnVtZXJhdGlvbigiRGV2VG9v
bHMuQWN0aW9uVGFrZW4iLCBhcmdzLCAxMDApOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlY29yZFBhbmVsU2hvd25DYWxsYmFja0N1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5zcGVj
dG9yRnJvbnRlbmRIb3N0OjpyZWNvcmRQYW5lbFNob3duTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIGhpc3RvZ3JhbUVudW1lcmF0aW9uKCJEZXZU
b29scy5QYW5lbFNob3duIiwgYXJncywgMjApOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OnJlY29yZFNldHRpbmdDaGFuZ2VkQ2FsbGJhY2tDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOElu
c3BlY3RvckZyb250ZW5kSG9zdDo6cmVjb3JkU2V0dGluZ0NoYW5nZWRNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gaGlzdG9ncmFtRW51bWVyYXRp
b24oIkRldlRvb2xzLlNldHRpbmdDaGFuZ2VkIiwgYXJncywgMTAwKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVD
dXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlw
dENhbGxGcmFtZUN1c3RvbS5jcHAKaW5kZXggOTE0ZmFkMTcxNTU2ZDA4YjkwYTQ0OGQ1NDQ1Yzk0
YTA4YjI0ZWYyOC4uNzg1ZjNhNmUzNzRlNDU0MWJkMjI0NTlmMWJiMDJjYmI3ZTIyZDBlMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENh
bGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTM3LDIwICszNywyMCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRD
YWxsRnJhbWU6OmV2YWx1YXRlQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRl
TWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSmF2YVNjcmlw
dENhbGxGcmFtZSogaW1wbCA9IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7CiAgICAgU3RyaW5nIGV4cHJlc3Npb24gPSB0b1dlYkNvcmVTdHJpbmdXaXRoVW5k
ZWZpbmVkT3JOdWxsQ2hlY2soYXJnc1swXSk7CiAgICAgcmV0dXJuIGltcGwtPmV2YWx1YXRlKGV4
cHJlc3Npb24pOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpyZXN0YXJ0Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRNZXRob2RD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBKYXZhU2NyaXB0Q2FsbEZy
YW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICByZXR1cm4gaW1wbC0+cmVzdGFydCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlQ2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFT
Y3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZh
U2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpbnQgc2NvcGVJ
bmRleCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsKQEAgLTY1LDcgKzY1LDcgQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVDaGFpbkF0dHJHZXR0ZXJD
dXN0b20odjg6OkxvY2EKICAgICByZXR1cm4gaW1wbC0+c2NvcGVDaGFpbigpOwogfQogCi12ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29wZVR5cGVDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9IFY4SmF2
YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgaW50IHNjb3Bl
SW5kZXggPSBhcmdzWzBdLT5JbnQzMlZhbHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKaW5kZXggMDI1MWRlYWU3
YzAwZTMzODQ5YTNkYTliYWQ2OTc1MjUyODM4ZDYwZi4uZWM3MTIyZjhkOTM3MjZjYjg5ZmM5YzE1
OGYzYTUzNDQ1OGIwYzJhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
VjhMb2NhdGlvbjo6c2VhcmNoQXR0clNldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4CiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVs
b2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IGluZm8u
R2V0SXNvbGF0ZSgpOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpy
ZWxvYWRDYWxsYmFja0N1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4
TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZWxvYWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCks
IHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkp
KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5k
SW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlzb2xhdGUp
KTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25seSByZWFj
aCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBhc3NlZApA
QCAtMTQ4LDcgKzE0OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxv
YWRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgfQogICAgIExv
Y2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKLSAgICAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUs
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2tDdXN0
b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdU
ZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAgICAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhM
b2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJl
OjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CiAgICAgICAgIHJl
dHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAgICB9CiAgICAgcmV0dXJuIHBy
aXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdldHRlckN1c3RvbSh2ODo6TG9j
YWw8djg6OlN0cmluZz4gbgogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlcGxh
Y2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIHY4OjpJc29sYXRlKiBpc29sYXRlID0gaW5mby5H
ZXRJc29sYXRlKCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBwcml2YXRlVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4TG9jYXRpb246OnJl
cGxhY2VDYWxsYmFja0N1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4
TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgp
LCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkp
KSk7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+Rmlu
ZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRl
KSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKICAgICAgICAgLy8gY2FuIG9ubHkgcmVh
Y2ggaGVyZSBieSAnb2JqZWN0Ll9fcHJvdG9fXy5mdW5jJywgYW5kIGl0IHNob3VsZCBwYXNzZWQK
QEAgLTE2Niw3ICsxNjYsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVw
bGFjZUF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgfQogICAgIExv
Y2F0aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmlu
ZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0
YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKLSAgICAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1w
bGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlzb2xhdGUs
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3
VGVtcGxhdGUoaXNvbGF0ZSkpKSk7CisgICAgICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyhpc29sYXRlLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFY4
TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1
cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKICAgICAgICAg
cmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4g
cHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTc2LDcgKzE3Niw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuCiB7CiAgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSBpbmZvLkdl
dElzb2xhdGUoKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IHByaXZhdGVUZW1wbGF0ZSA9Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPjo6TmV3KGlzb2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVjhMb2Nh
dGlvbjo6YXNzaWduQ2FsbGJhY2tDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKKyAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSkpKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygp
LT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBsYXRlKGlz
b2xhdGUpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewogICAgICAgICAvLyBjYW4gb25s
eSByZWFjaCBoZXJlIGJ5ICdvYmplY3QuX19wcm90b19fLmZ1bmMnLCBhbmQgaXQgc2hvdWxkIHBh
c3NlZApAQCAtMTg1LDEzICsxODUsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRp
b246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICB9
CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAg
aWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3Rh
dGU6Omluc3RhbmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkg
ewotICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
aXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25DYWxs
YmFja0N1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KFY4TG9jYXRpb246
OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSkpOworICAgICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcoaXNvbGF0ZSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpT
aWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSkpKTsKICAg
ICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICBy
ZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogfQogCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpyZWxvYWRNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBMb2NhdGlvbiogaW1w
bCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIEJpbmRpbmdTdGF0
ZSogc3RhdGUgPSBCaW5kaW5nU3RhdGU6Omluc3RhbmNlKCk7CkBAIC0yMDAsNyArMjAwLDcgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZENhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2Nh
dGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKTsKQEAg
LTIxMiw3ICsyMTIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFj
ZUNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZwogICAgIHJldHVybiB2ODo6
VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3Np
Z25DYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQogewogICAgIExvY2F0aW9uKiBpbXBsID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgQmluZGluZ1N0YXRlKiBzdGF0ZSA9IEJpbmRpbmdTdGF0ZTo6
aW5zdGFuY2UoKTsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhM
b2NhdGlvbjo6YXNzaWduQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwog
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjp2YWx1ZU9mQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp2YWx1ZU9mTWV0aG9kQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgLy8gSnVzdCByZXR1cm4gdGhlIHRo
aXMgb2JqZWN0IHRoZSB3YXkgdGhlIG5vcm1hbCB2YWx1ZU9mIGZ1bmN0aW9uCiAgICAgLy8gb24g
dGhlIE9iamVjdCBwcm90b3R5cGUgd291bGQuICBUaGUgdmFsdWVPZiBmdW5jdGlvbiBpcyBvbmx5
CkBAIC0yMzQsNyArMjM0LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnZh
bHVlT2ZDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKICAgICByZXR1cm4g
YXJncy5UaGlzKCk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjp0b1N0
cmluZ0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6dG9TdHJpbmdNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFy
Z3VtZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFy
Z3MuSG9sZGVyKCk7CiAgICAgTG9jYXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhv
bGRlcik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhN
ZXNzYWdlRXZlbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4TWVzc2FnZUV2ZW50Q3VzdG9tLmNwcAppbmRleCAyNGIwNjNiMTlmYTQ0ZTRlMDlkNmEyNmZh
OGYyYTIxMTg5NGRhYWEzLi4zODRjYmE1N2Q2OTBlNmIzOGFlN2JhZDc3M2Y3NjBlMjM4MWI3ZmE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdl
RXZlbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OE1lc3NhZ2VFdmVudEN1c3RvbS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhNZXNzYWdlRXZlbnQ6OnBvcnRzQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8
djg6OlN0cmluZwogICAgIHJldHVybiBwb3J0QXJyYXk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE1lc3NhZ2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrQ3VzdG9tKGNvbnN0
IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlRXZl
bnQ6OmluaXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBNZXNzYWdlRXZlbnQqIGV2ZW50ID0gVjhNZXNzYWdlRXZlbnQ6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwogICAgIFN0cmluZyB0eXBlQXJnID0gdG9XZWJDb3JlU3RyaW5nKGFy
Z3NbMF0pOwpAQCAtMTMxLDkgKzEzMSw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3Nh
Z2VFdmVudDo6aW5pdE1lc3NhZ2VFdmVudENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBCiAgICAg
cmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TWVz
c2FnZUV2ZW50Ojp3ZWJraXRJbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE1lc3NhZ2VFdmVudDo6
d2Via2l0SW5pdE1lc3NhZ2VFdmVudE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIHJldHVybiBpbml0TWVzc2FnZUV2ZW50Q2FsbGJhY2tDdXN0b20oYXJncyk7
CisgICAgcmV0dXJuIGluaXRNZXNzYWdlRXZlbnRNZXRob2RDdXN0b20oYXJncyk7CiB9CiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2FnZVBv
cnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TWVzc2Fn
ZVBvcnRDdXN0b20uY3BwCmluZGV4IGQ5ZWIwMmMxMTVmMzFkYjM5NTFhM2JhZTg3NDk0MzY0MjNh
MTJhMDUuLmRjNmExNGUwOTA3MGI5Mjk3Yzc3ZTY2ODkxNzBmNTU4NjZjZTI5ODUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE1lc3NhZ2VQb3J0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhNZXNzYWdlUG9y
dEN1c3RvbS5jcHAKQEAgLTQwLDcgKzQwLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2VDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gVjhNZXNzYWdlUG9ydDo6
dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CiAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0QXJyYXk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20u
Y3BwCmluZGV4IGQzMjRjYjM2ZWMyNDRiMmU3ZmU3NDQyZWU2MDY3Zjk0MTYxNDljNGYuLmYzYTlj
YzQ5MDM5ZjE0OTJiYzA1NWRkNzhmZGM2ZDc2MjE3ODFkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCkBAIC02MSw3ICs2MSw3
IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIC8vIFRoaXMgZnVuY3Rpb24gaXMgY3VzdG9taXpl
ZCB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgb3B0aW9uYWwgNHRoIGFyZ3VtZW50OiBzaG91bGRM
YXp5QXR0YWNoCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjppbnNlcnRCZWZvcmVDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRl
cigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKQEAgLTc3LDcg
Kzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6aW5zZXJ0QmVmb3JlQ2FsbGJh
Y2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBp
cyBjdXN0b21pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSBvcHRpb25hbCA0dGggYXJndW1l
bnQ6IHNob3VsZExhenlBdHRhY2gKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OnJlcGxh
Y2VDaGlsZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZXBsYWNlQ2hpbGRNZXRob2RDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9
IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhOb2RlOjp0b05hdGl2ZShob2xkZXIp
OwpAQCAtOTIsNyArOTIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZXBsYWNl
Q2hpbGRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiB2
OE51bGwoYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhO
b2RlOjpyZW1vdmVDaGlsZENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZW1vdmVDaGlsZE1ldGhvZEN1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
aG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0aXZl
KGhvbGRlcik7CkBAIC0xMDcsNyArMTA3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9k
ZTo6cmVtb3ZlQ2hpbGRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmcKIH0K
IAogLy8gVGhpcyBmdW5jdGlvbiBpcyBjdXN0b21pemVkIHRvIHRha2UgYWR2YW50YWdlIG9mIHRo
ZSBvcHRpb25hbCA0dGggYXJndW1lbnQ6IHNob3VsZExhenlBdHRhY2gKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6OmFwcGVuZENoaWxkTWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUqIGltcCA9IFY4Tm9k
ZTo6dG9OYXRpdmUoaG9sZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DZW50ZXJDdXN0b20uY3BwCmluZGV4
IDhjMzI5MjM0YTRlMmQ5MjQ4YjkxNjExZTZmZWVkOGUwYTI0MjJkNjkuLjQ1MGQ4ZWMxNzAyMjI5
MmM2ODQxYmVlN2ZlOTQwN2EwZDQzODhhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkNlbnRlckN1c3RvbS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ2VudGVyQ3VzdG9t
LmNwcApAQCAtNDYsNyArNDYsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOE5vdGlmaWNhdGlvbkNlbnRlcjo6cmVxdWVzdFBlcm1pc3Npb25DYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbk1ldGhvZEN1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIE5vdGlmaWNhdGlvbkNlbnRlciogbm90
aWZpY2F0aW9uQ2VudGVyID0gVjhOb3RpZmljYXRpb25DZW50ZXI6OnRvTmF0aXZlKGFyZ3MuSG9s
ZGVyKCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQgPSBub3RpZmljYXRp
b25DZW50ZXItPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb3RpZmljYXRpb25DdXN0b20uY3BwCmlu
ZGV4IDE0NDJkMjc5NDc3ZGE1ZmQzMzU4ZGY4YzAxOGI2MzE1NzU4MjEzNTYuLmUwZTk3ZTFhMDJl
MDU0ZjZkZmE1NDZjMmQ5MzViMzFmOWY1MjZiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vdGlmaWNhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm90aWZpY2F0aW9uQ3VzdG9tLmNwcApAQCAt
MzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOE5vdGlmaWNhdGlvbjo6cmVxdWVzdFBlcm1pc3Npb25DYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm90aWZpY2F0
aW9uOjpyZXF1ZXN0UGVybWlzc2lvbk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7CiAgICAgUmVmUHRyPFY4Tm90aWZp
Y2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25seUNh
bGxiYWNrPFY4Tm90aWZpY2F0aW9uUGVybWlzc2lvbkNhbGxiYWNrPihhcmdzWzBdLCBzdWNjZWVk
ZWQsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOFNRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAK
aW5kZXggZjZiMThlMzQxMTM3MzI2NDMxNjk2Zjk0YThlYWZjNDRkNDRlMDAyZi4uZjA1ZWQ3ZDk5
YWVlNTNlY2JhZDA2NTExZjJmMTQxMTdkNDQ0ODM1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMUmVzdWx0U2V0Um93TGlz
dEN1c3RvbS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxSZXN1bHRTZXRSb3dMaXN0OjppdGVtQ2FsbGJhY2tD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFNRTFJlc3VsdFNldFJvd0xpc3Q6Oml0ZW1NZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIHsKICAgICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d0Vycm9yKHY4U3ludGF4RXJyb3IsICJJdGVtIGluZGV4IGlzIHJlcXVpcmVkLiIsIGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAppbmRleCA2YmE3MWM4MzkwYTY5ZTA4
ZjMwOTk1ZGNkYjgyOTFmMzAwNTEyMDE3Li4xZWY4OWU3ODA3NGJkYWI1MmJkZjVjYzViZWE1OWYw
MmY0OTZlMjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4U1FMVHJhbnNhY3Rpb246OmV4ZWN1dGVTcWxDYWxsYmFja0N1c3RvbShjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4U1FMVHJhbnNh
Y3Rpb246OmV4ZWN1dGVTcWxNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSA9PSAwKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhj
ZXB0aW9uKFNZTlRBWF9FUlIsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhTUUxUcmFuc2FjdGlvblN5
bmNDdXN0b20uY3BwCmluZGV4IGQ3OWY4M2Y1MDk5YjJiZTY1ZTE5MDEyMzBjODI2OWY5ZTJkZmQ0
NDEuLjI2Yjk4MGJjMmZkOTI1MzA1NGVmN2UyMmQ3NzgyZTBhMGQ1ZDljYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5zYWN0aW9uU3luY0N1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4U1FMVHJh
bnNhY3Rpb25TeW5jQ3VzdG9tLmNwcApAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
V1RGOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFNR
TFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0ZVNxbENhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTUUxUcmFuc2FjdGlvblN5bmM6
OmV4ZWN1dGVTcWxNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAg
ICBpZiAoIWFyZ3MuTGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oU1lO
VEFYX0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFNWR0xlbmd0aEN1c3RvbS5jcHAKaW5kZXggODgxMzE3Yjgx
ODRkNThjNDI4Njg3Mjc5OTA4YTAyMDExOGM0N2JhMS4uOTM3NjhjODk0OWVlYjFmYTdhYjJhZjY2
ZmJhMDdmYmJmNzBjN2ZmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4U1ZHTGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhTVkdMZW5ndGhDdXN0b20uY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQg
VjhTVkdMZW5ndGg6OnZhbHVlQXR0clNldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4g
bmFtZSwgdjg6OkxvY2FsPHY4CiAgICAgICAgIHdyYXBwZXItPmNvbW1pdENoYW5nZSgpOwogfQog
Ci12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVu
aXRzQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFNWR0xlbmd0aDo6Y29udmVydFRvU3BlY2lmaWVkVW5pdHNNZXRob2RDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBTVkdQcm9wZXJ0eVRlYXJPZmY8
U1ZHTGVuZ3RoPiogd3JhcHBlciA9IFY4U1ZHTGVuZ3RoOjp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKICAgICBpZiAod3JhcHBlci0+aXNSZWFkT25seSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEN1c3RvbS5jcHAKaW5kZXggY2MyMjFkNjc0M2U3N2FiYTljYjkzYWRmZTY2NzY0ZDU0Njhl
NTNkMi4uZDQzNDIzZjE3ZjczMzE2YjMzOTBhNDlkZjk5ZDg4YWQ3OTg3YzNiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250
ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCkBAIC0yNzAsNyArMjcwLDcgQEAgZW51bSBX
aGljaFByb2dyYW1DYWxsIHsKICAgICBrUHJvZ3JhbVBhcmFtZXRlciwga1VuaWZvcm0KIH07CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNo
ZWRTaGFkZXJzQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpI
YW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFk
ZXJzTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFy
Z3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNF
cnJvcihhcmdzLkdldElzb2xhdGUoKSk7CkBAIC0yOTQsMTIgKzI5NCwxMiBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc0Nh
bGxiYWNrQ3VzdG9tKAogICAgIHJldHVybiBhcnJheTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXJDYWxsYmFja0N1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRCdWZmZXJQYXJhbWV0ZXJNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVy
KGFyZ3MsIGtCdWZmZXIpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldEV4dGVuc2lvbk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogaW1wID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKQEAg
LTMwOSw3ICszMDksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OmdldEV4dGVuc2lvbkNhbGxiYWNrQ3VzdG9tKGNvbnN0CiAgICAgcmV0dXJuIHRvVjhP
YmplY3QoZXh0ZW5zaW9uLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAK
LXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVi
dWZmZXJBdHRhY2htZW50UGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMykKICAgICAgICAg
cmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpA
QCAtMzI1LDcgKzMyNSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6Z2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyCiAgICAgcmV0dXJuIHRv
VjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpOwogfQogCi12
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRl
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlck1ldGhvZEN1c3Rv
bShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9
IDEpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0
SXNvbGF0ZSgpKTsKQEAgLTMzOSw3ICszMzksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhX
ZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0CiAg
ICAgcmV0dXJuIHRvVjhPYmplY3QoaW5mbywgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OmdldFByb2dyYW1QYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQ
cm9ncmFtUGFyYW1ldGVyTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgIT0gMikKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtMzU2LDEyICszNTYsMTIg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQcm9n
cmFtUGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20KICAgICByZXR1cm4gdG9WOE9iamVjdChpbmZvLCBh
cmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyTWV0
aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIGdldE9i
amVjdFBhcmFtZXRlcihhcmdzLCBrUmVuZGVyYnVmZmVyKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJNZXRob2RDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoYXJncy5MZW5ndGgoKSAhPSAy
KQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdldElz
b2xhdGUoKSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbSgKICAg
ICByZXR1cm4gdG9WOE9iamVjdChpbmZvLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUo
KSk7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
Z2V0U3VwcG9ydGVkRXh0ZW5zaW9uc0NhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6Omdl
dFN1cHBvcnRlZEV4dGVuc2lvbnNNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIHsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGltcCA9IFY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICBpZiAoaW1wLT5pc0NvbnRleHRM
b3N0KCkpCkBAIC0zOTEsMTIgKzM5MSwxMiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFN1cHBvcnRlZEV4dGVuc2lvbnNDYWxsYmFja0N1cwogICAg
IHJldHVybiBhcnJheTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpnZXRUZXhQYXJhbWV0ZXJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1l
bnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0
OjpnZXRUZXhQYXJhbWV0ZXJNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICByZXR1cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtUZXh0dXJlKTsKIH0KIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3Jt
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybU1ldGhvZEN1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIGlmIChhcmdzLkxlbmd0aCgpICE9IDIp
CiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNv
bGF0ZSgpKTsKQEAgLTQxOCw3ICs0MTgsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFVuaWZvcm1DYWxsYmFja0N1c3RvbShjb25zdCB2OAogICAg
IHJldHVybiB0b1Y4T2JqZWN0KGluZm8sIGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojpn
ZXRWZXJ0ZXhBdHRyaWJDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQor
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRWZXJ0ZXhB
dHRyaWJNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1
cm4gZ2V0T2JqZWN0UGFyYW1ldGVyKGFyZ3MsIGtWZXJ0ZXhBdHRyaWIpOwogfQpAQCAtNTg4LDQy
ICs1ODgsNDIgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB1bmlmb3JtSGVscGVyaShj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzLAogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTFmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xZnZNZXRob2RDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdmVydGV4QXR0cmli
QW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0xdik7CiB9CiAKLXY4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTFpdkNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0xaXZNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1VuaWZvcm0x
dik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6
dW5pZm9ybTJmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yZnZNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdmVydGV4
QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0ydik7CiB9CiAKLXY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTJpdkNhbGxiYWNr
Q3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0yaXZNZXRob2RDdXN0b20oY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJncywga1Vu
aWZvcm0ydik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29u
dGV4dDo6dW5pZm9ybTNmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0z
ZnZNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4g
dmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm0zdik7CiB9CiAKLXY4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybTNpdkNh
bGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm0zaXZNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBlcmkoYXJn
cywga1VuaWZvcm0zdik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVy
aW5nQ29udGV4dDo6dW5pZm9ybTRmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVu
aWZvcm00ZnZNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBy
ZXR1cm4gdmVydGV4QXR0cmliQW5kVW5pZm9ybUhlbHBlcmYoYXJncywga1VuaWZvcm00dik7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9y
bTRpdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm00aXZNZXRob2RDdXN0
b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gdW5pZm9ybUhlbHBl
cmkoYXJncywga1VuaWZvcm00dik7CiB9CkBAIC02ODksMzcgKzY4OSwzNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHVuaWZvcm1NYXRyaXhIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncywKICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnVuaWZvcm1NYXRyaXgyZnZDYWxsYmFj
a0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4MmZ2TWV0aG9kQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7CiAgICAgcmV0dXJuIHVuaWZvcm1NYXRyaXhIZWxw
ZXIoYXJncywgMik7CiB9CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5n
Q29udGV4dDo6dW5pZm9ybU1hdHJpeDNmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnVuaWZvcm1NYXRyaXgzZnZNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IHsKICAgICByZXR1cm4gdW5pZm9ybU1hdHJpeEhlbHBlcihhcmdzLCAzKTsKIH0KIAotdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp1bmlmb3JtTWF0cml4NGZ2
Q2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6
OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dW5pZm9ybU1hdHJpeDRmdk1ldGhvZEN1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiB1bmlmb3JtTWF0
cml4SGVscGVyKGFyZ3MsIDQpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJl
bmRlcmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjFmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpB
cmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYjFmdk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBr
VmVydGV4QXR0cmliMXYpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OnZlcnRleEF0dHJpYjJmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnZlcnRleEF0dHJpYjJmdk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogewogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVy
dGV4QXR0cmliMnYpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OnZlcnRleEF0dHJpYjNmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6
OnZlcnRleEF0dHJpYjNmdk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
ewogICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4
QXR0cmliM3YpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0Nv
bnRleHQ6OnZlcnRleEF0dHJpYjRmdkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnZl
cnRleEF0dHJpYjRmdk1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewog
ICAgIHJldHVybiB2ZXJ0ZXhBdHRyaWJBbmRVbmlmb3JtSGVscGVyZihhcmdzLCBrVmVydGV4QXR0
cmliNHYpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRleCA4YzhmNzMxMmM1OTg3OGM0YWEx
MTM3OGExNmNmYWRlMGE4YmRiNjMyLi45MDZhMTRkM2FiNzRhYzA3Y2NkMDczMmZjMGE3MzA5MTQ4
MmViOWRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtOTAsNyArOTAsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gU2V0VGltZW91dE9ySW50ZXJ2YWwoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncywgYm9vbCBzaW5nbAogICAgIHJldHVybiB2OEludGVnZXIodGltZXJJZCwgYXJncy5HZXRJ
c29sYXRlKCkpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0Ojpp
bXBvcnRTY3JpcHRzQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4
OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OmltcG9ydFNjcmlwdHNNZXRob2RD
dXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoIWFyZ3MuTGVuZ3Ro
KCkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC0xMTQsMTIgKzExNCwxMiBA
QCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRzQ2Fs
bGJhY2tDdXN0b20oY29uc3Qgdjg6OkFyZwogICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFdvcmtlckNvbnRleHQ6OnNldFRpbWVvdXRDYWxs
YmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4V29ya2VyQ29udGV4dDo6c2V0VGltZW91dE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcmdzKQogewogICAgIHJldHVybiBTZXRUaW1lb3V0T3JJbnRlcnZhbChhcmdzLCB0
cnVlKTsKIH0KIAotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6c2V0SW50
ZXJ2YWxDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4V29ya2VyQ29udGV4dDo6c2V0SW50ZXJ2YWxNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICByZXR1cm4gU2V0VGltZW91dE9ySW50ZXJ2
YWwoYXJncywgZmFsc2UpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4V29ya2VyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFdvcmtlckN1c3RvbS5jcHAKaW5kZXggNDkwZjI5ZDJmODJlZWIyYTgxMTIzOWJl
ZTU2MTBmYTFmNDZjMGQ5YS4uMWNmYzAxNjg4MDVkMDlhMGNjNjJmMzFmODI2NjBmYTc3YjA3NTc2
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V29ya2Vy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXb3Jr
ZXJDdXN0b20uY3BwCkBAIC00NSw3ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V29ya2VyOjpwb3N0TWVzc2FnZUNhbGxiYWNrQ3VzdG9t
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhXb3Jr
ZXI6OnBvc3RNZXNzYWdlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7
CiAgICAgV29ya2VyKiB3b3JrZXIgPSBWOFdvcmtlcjo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7
CiAgICAgTWVzc2FnZVBvcnRBcnJheSBwb3J0czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRl
eCBhZGM1NDgyNzNmZGI1YmE2ZDgwNDY1MmRhNTJjYWMyMWU5NDI0ZGNmLi5lNmZiMmI3OWM0MDVk
NGQ5ZDU1ZjE1YzZmZDlhZDZkY2ViYmUxODQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBA
IC0xMTUsNyArMTE1LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6
OnJlc3BvbnNlQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlMKICAgICByZXR1cm4gdjg6
OlVuZGVmaW5lZCgpOwogfQogCi12ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVz
dDo6b3BlbkNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6b3Blbk1ldGhvZEN1c3RvbShjb25zdCB2
ODo6QXJndW1lbnRzJiBhcmdzKQogewogICAgIC8vIEZvdXIgY2FzZXM6CiAgICAgLy8gb3Blbiht
ZXRob2QsIHVybCkKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGF0aWMgYm9vbCBpc0RvY3VtZW50VHlw
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAg
IHJldHVybiBWOERvY3VtZW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkgfHwgVjhIVE1M
RG9jdW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKTsKIH0KIAotdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6OnNlbmRDYWxsYmFja0N1c3RvbShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0cFJlcXVlc3Q6
OnNlbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBYTUxI
dHRwUmVxdWVzdCogeG1sSHR0cFJlcXVlc3QgPSBWOFhNTEh0dHBSZXF1ZXN0Ojp0b05hdGl2ZShh
cmdzLkhvbGRlcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4WFNMVFByb2Nlc3NvckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAppbmRleCA0MGM1OTAxM2JlMDBh
OGI0Mzk1NjEyY2Y5MzQyNjlkMWY2OTkyZjhlLi5iYTlkZmYwNzk1MzFhZjg2MDg5NmQyYmUxNjlm
NzljNWI5MWQwYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcApAQCAtNDgsNyArNDgsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9j
ZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXJN
ZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoaXNVbmRl
ZmluZWRPck51bGwoYXJnc1sxXSkgfHwgaXNVbmRlZmluZWRPck51bGwoYXJnc1syXSkpCiAgICAg
ICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7CkBAIC02Myw3ICs2Myw3IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlckNhbGxiYWNrQ3VzdG9tKGNv
bnN0IHY4OjpBcmd1CiAgICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KIAotdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20o
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQ
cm9jZXNzb3I6OmdldFBhcmFtZXRlck1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewogICAgIGlmIChpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFdKSkKICAgICAgICAgcmV0
dXJuIHY4OjpVbmRlZmluZWQoKTsKQEAgLTc5LDcgKzc5LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IFY4WFNMVFByb2Nlc3Nvcjo6Z2V0UGFyYW1ldGVyQ2FsbGJhY2tDdXN0b20oY29uc3Qgdjg6
OkFyZ3UKICAgICByZXR1cm4gdjhTdHJpbmcocmVzdWx0LCBhcmdzLkdldElzb2xhdGUoKSk7CiB9
CiAKLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFhTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRl
ckNhbGxiYWNrQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCit2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gVjhYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXJNZXRob2RDdXN0b20oY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBpZiAoaXNVbmRlZmluZWRPck51bGwoYXJn
c1sxXSkpCiAgICAgICAgIHJldHVybiB2ODo6VW5kZWZpbmVkKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>