<?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>157610</bug_id>
          
          <creation_ts>2016-05-11 22:23:38 -0700</creation_ts>
          <short_desc>Rename all protector variables that should be called `protectedThis`</short_desc>
          <delta_ts>2016-05-13 16:41:32 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>http://bugs.webkit.org/show_bug.cgi?id=157591</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=157591</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1192223</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-11 22:23:38 -0700</bug_when>
    <thetext>Rename all protector variables that should be called `protectedThis`

Per the new style guideline implemented in https://bugs.webkit.org/show_bug.cgi?id=157591 this is the most straightforward upgrade to existing code, as &quot;protectedThis&quot; protectors are almost impossible to be confused with something that is not a protector object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192323</commentid>
    <comment_count>1</comment_count>
      <attachid>278732</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-12 06:41:52 -0700</bug_when>
    <thetext>Created attachment 278732
Patch

Not bothering with ChangeLog or running EWS quite yet, as there&apos;s still discussion in 157591 as to whether we&apos;re going forward with this new style guideline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192784</commentid>
    <comment_count>2</comment_count>
      <attachid>278845</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-13 10:15:49 -0700</bug_when>
    <thetext>Created attachment 278845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192785</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 10:17:51 -0700</bug_when>
    <thetext>Attachment 278845 did not pass style-queue:


ERROR: Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1267:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 3 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192798</commentid>
    <comment_count>4</comment_count>
      <attachid>278849</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-13 10:42:19 -0700</bug_when>
    <thetext>Created attachment 278849
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192801</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 10:43:21 -0700</bug_when>
    <thetext>Attachment 278849 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:611:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:741:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:777:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:783:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:911:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1267:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 8 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192808</commentid>
    <comment_count>6</comment_count>
      <attachid>278852</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-13 11:04:13 -0700</bug_when>
    <thetext>Created attachment 278852
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192809</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 11:05:33 -0700</bug_when>
    <thetext>Attachment 278852 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:611:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:741:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:777:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:783:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:911:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1267:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 8 in 90 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192814</commentid>
    <comment_count>8</comment_count>
      <attachid>278854</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-13 11:24:22 -0700</bug_when>
    <thetext>Created attachment 278854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192817</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 11:27:32 -0700</bug_when>
    <thetext>Attachment 278854 did not pass style-queue:


ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:611:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:741:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:777:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:783:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm:911:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp:1267:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:125:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/indexeddb/client/TransactionOperation.h:144:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 8 in 92 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192841</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-05-13 12:14:10 -0700</bug_when>
    <thetext>This version of the patch should be good - Only MacWK1 EWS hasn&apos;t passed yet, and that&apos;s because of a problem in the tree unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192958</commentid>
    <comment_count>11</comment_count>
      <attachid>278854</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 16:41:27 -0700</bug_when>
    <thetext>Comment on attachment 278854
Patch

Clearing flags on attachment: 278854

Committed r200895: &lt;http://trac.webkit.org/changeset/200895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192959</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 16:41:32 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278732</attachid>
            <date>2016-05-12 06:41:52 -0700</date>
            <delta_ts>2016-05-13 10:15:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>152320</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCmluZGV4
IDM1YmUyNDMuLmM1ZmFhZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXNwb25zZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcApAQCAtMjkxLDcgKzI5MSw3IEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IEZldGNoUmVzcG9uc2U6OkJvZHlMb2FkZXI6OnN0YXJ0U3RyZWFtaW5nKCkKIAogdm9pZCBGZXRj
aFJlc3BvbnNlOjpzdG9wKCkKIHsKLSAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcHJvdGVjdCh0
aGlzKTsKKyAgICBSZWZQdHI8RmV0Y2hSZXNwb25zZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBGZXRjaEJvZHlPd25lcjo6c3RvcCgpOwogICAgIGlmIChtX2JvZHlMb2FkZXIpIHsKICAgICAg
ICAgbV9ib2R5TG9hZGVyLT5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
Z2VvbG9jYXRpb24vR2VvTm90aWZpZXIuY3BwCmluZGV4IDEzMTZkMjcuLmNlYzk3Y2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZpZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZpZXIuY3Bw
CkBAIC0xMDYsNyArMTA2LDcgQEAgdm9pZCBHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCgpCiAKICAg
ICAvLyBQcm90ZWN0IHRoaXMgR2VvTm90aWZpZXIgb2JqZWN0LCBzaW5jZSBpdAogICAgIC8vIGNv
dWxkIGJlIGRlbGV0ZWQgYnkgYSBjYWxsIHRvIGNsZWFyV2F0Y2ggaW4gYSBjYWxsYmFjay4KLSAg
ICBSZWY8R2VvTm90aWZpZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxHZW9Ob3RpZmllcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBUZXN0IGZvciBmYXRhbCBlcnJvciBmaXJz
dC4gVGhpcyBpcyByZXF1aXJlZCBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIEZyYW1lIGlzCiAgICAg
Ly8gZGlzY29ubmVjdGVkIGFuZCByZXF1ZXN0cyBhcmUgY2FuY2VsbGVkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcAppbmRleCA3NjNk
NjA1Li4zZWM0MzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb2xvY2F0aW9uLmNwcApAQCAtNDU1LDcgKzQ1NSw3IEBAIHZvaWQgR2VvbG9jYXRpb246
OmNsZWFyV2F0Y2goaW50IHdhdGNoSUQpCiB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQo
Ym9vbCBhbGxvd2VkKQogewogICAgIC8vIFByb3RlY3QgdGhlIEdlb2xvY2F0aW9uIG9iamVjdCBm
cm9tIGdhcmJhZ2UgY29sbGVjdGlvbiBkdXJpbmcgYSBjYWxsYmFjay4KLSAgICBSZWY8R2VvbG9j
YXRpb24+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxHZW9sb2NhdGlvbj4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKICAgICAvLyBUaGlzIG1heSBiZSBkdWUgdG8gZWl0aGVyIGEgbmV3IHBvc2l0
aW9uIGZyb20gdGhlIHNlcnZpY2UsIG9yIGEgY2FjaGVkCiAgICAgLy8gcG9zaXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAK
aW5kZXggMTI5ZjRjNi4uOTVlMGM0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcApAQCAtOTQ3LDkgKzk0Nyw5IEBAIHZvaWQg
SURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9w
ZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8
SURCVHJhbnNhY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8SURCVHJhbnNhY3Rp
b24+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmVmUHRyPElEQkNsaWVudDo6VHJhbnNhY3Rp
b25PcGVyYXRpb24+IG9wZXJhdGlvblJlZigmb3BlcmF0aW9uKTsKLSAgICB2YWx1ZS0+d3JpdGVC
bG9ic1RvRGlza0ZvckluZGV4ZWREQihbcHJvdGVjdG9yLCB0aGlzLCBvcGVyYXRpb25SZWYsIGtl
eSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdKGNvbnN0IElEQlZhbHVlJiBpZGJWYWx1ZSkgeworICAg
IHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0ZWRUaGlzLCB0aGlz
LCBvcGVyYXRpb25SZWYsIGtleSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdKGNvbnN0IElEQlZhbHVl
JiBpZGJWYWx1ZSkgewogICAgICAgICBpZiAoaWRiVmFsdWUuZGF0YSgpLmRhdGEoKSkgewogICAg
ICAgICAgICAgbV9kYXRhYmFzZS0+Y29ubmVjdGlvblByb3h5KCkucHV0T3JBZGQoKm9wZXJhdGlv
blJlZiwga2V5LmdldCgpLCBpZGJWYWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC05NTgsNyArOTU4LDcgQEAgdm9pZCBJREJUcmFuc2FjdGlvbjo6cHV0T3JBZGRP
blNlcnZlcihJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uJiBvcGVyYXRpb24KICAgICAg
ICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhp
bmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0
aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdl
IGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCiAgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6ZXJyb3Iob3BlcmF0aW9uUmVmLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9G
aWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlvblJlZiwgcmVzdWx0XSgpIHsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpcywgdGhpcywgb3BlcmF0aW9u
UmVmLCByZXN1bHRdKCkgewogICAgICAgICAgICAgb3BlcmF0aW9uUmVmLT5jb21wbGV0ZWQocmVz
dWx0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCmlu
ZGV4IDkwY2I2NDguLjY2YmUyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oCkBAIC0x
MTQsMTUgKzExNCwxNSBAQCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsKElE
QlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0
ZU1ldGhvZCkoY29uc3QgSURCUmVzdWx0RGF0YSYpLCB2b2lkIChJREJUcmFuc2FjdGlvbjo6KnBl
cmZvcm1NZXRob2QpKFRyYW5zYWN0aW9uT3BlcmF0aW9uJiwgQXJndW1lbnRzLi4uKSwgQXJndW1l
bnRzJiYuLi4gYXJndW1lbnRzKQogICAgICAgICA6IFRyYW5zYWN0aW9uT3BlcmF0aW9uKHRyYW5z
YWN0aW9uKQogICAgIHsKLSAgICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBzZWxm
KHRoaXMpOworICAgICAgICBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICAgICAgQVNTRVJUKHBlcmZvcm1NZXRob2QpOwotICAgICAgICBtX3Bl
cmZvcm1GdW5jdGlvbiA9IFtzZWxmLCB0aGlzLCBwZXJmb3JtTWV0aG9kLCBhcmd1bWVudHMuLi5d
IHsKKyAgICAgICAgbV9wZXJmb3JtRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcywgdGhpcywgcGVy
Zm9ybU1ldGhvZCwgYXJndW1lbnRzLi4uXSB7CiAgICAgICAgICAgICAoJm1fdHJhbnNhY3Rpb24u
Z2V0KCktPipwZXJmb3JtTWV0aG9kKSgqdGhpcywgYXJndW1lbnRzLi4uKTsKICAgICAgICAgfTsK
IAogICAgICAgICBpZiAoY29tcGxldGVNZXRob2QpIHsKLSAgICAgICAgICAgIG1fY29tcGxldGVG
dW5jdGlvbiA9IFtzZWxmLCB0aGlzLCBjb21wbGV0ZU1ldGhvZF0oY29uc3QgSURCUmVzdWx0RGF0
YSYgcmVzdWx0RGF0YSkgeworICAgICAgICAgICAgbV9jb21wbGV0ZUZ1bmN0aW9uID0gW3Byb3Rl
Y3RlZFRoaXMsIHRoaXMsIGNvbXBsZXRlTWV0aG9kXShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNvbXBsZXRlTWV0aG9kKQogICAgICAgICAg
ICAgICAgICAgICAoJm1fdHJhbnNhY3Rpb24uZ2V0KCktPipjb21wbGV0ZU1ldGhvZCkocmVzdWx0
RGF0YSk7CiAgICAgICAgICAgICB9OwpAQCAtMTMyLDE2ICsxMzIsMTYgQEAgcHVibGljOgogICAg
IFRyYW5zYWN0aW9uT3BlcmF0aW9uSW1wbChJREJUcmFuc2FjdGlvbiYgdHJhbnNhY3Rpb24sIElE
QlJlcXVlc3QmIHJlcXVlc3QsIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqY29tcGxldGVNZXRob2Qp
KElEQlJlcXVlc3QmLCBjb25zdCBJREJSZXN1bHREYXRhJiksIHZvaWQgKElEQlRyYW5zYWN0aW9u
OjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBBcmd1bWVudHMuLi4pLCBB
cmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogVHJhbnNhY3Rpb25PcGVyYXRpb24o
dHJhbnNhY3Rpb24sIHJlcXVlc3QpCiAgICAgewotICAgICAgICBSZWZQdHI8VHJhbnNhY3Rpb25P
cGVyYXRpb24+IHNlbGYodGhpcyk7CisgICAgICAgIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlv
bj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgICAgICBBU1NFUlQocGVyZm9ybU1ldGhvZCk7
Ci0gICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0gW3NlbGYsIHRoaXMsIHBlcmZvcm1NZXRob2Qs
IGFyZ3VtZW50cy4uLl0geworICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IFtwcm90ZWN0ZWRU
aGlzLCB0aGlzLCBwZXJmb3JtTWV0aG9kLCBhcmd1bWVudHMuLi5dIHsKICAgICAgICAgICAgICgm
bV90cmFuc2FjdGlvbi5nZXQoKS0+KnBlcmZvcm1NZXRob2QpKCp0aGlzLCBhcmd1bWVudHMuLi4p
OwogICAgICAgICB9OwogCiAgICAgICAgIGlmIChjb21wbGV0ZU1ldGhvZCkgewogICAgICAgICAg
ICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlZlJlcXVlc3QoJnJlcXVlc3QpOwotICAgICAgICAgICAg
bV9jb21wbGV0ZUZ1bmN0aW9uID0gW3NlbGYsIHRoaXMsIHJlZlJlcXVlc3QsIGNvbXBsZXRlTWV0
aG9kXShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKSB7CisgICAgICAgICAgICBtX2Nv
bXBsZXRlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcywgdGhpcywgcmVmUmVxdWVzdCwgY29tcGxl
dGVNZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpIHsKICAgICAgICAgICAg
ICAgICBpZiAoY29tcGxldGVNZXRob2QpCiAgICAgICAgICAgICAgICAgICAgICgmbV90cmFuc2Fj
dGlvbi5nZXQoKS0+KmNvbXBsZXRlTWV0aG9kKSgqcmVmUmVxdWVzdCwgcmVzdWx0RGF0YSk7CiAg
ICAgICAgICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKaW5kZXggNWIyYWRjYy4uOTdm
OTNmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVy
L1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZTo6aGFuZGxlQ3VycmVudE9wZXJhdGlvbigpCiAKICAgICBBU1NF
UlQobV9jdXJyZW50T3BlbkRCUmVxdWVzdCk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2U+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAKICAgICBpZiAobV9jdXJyZW50T3BlbkRCUmVxdWVzdC0+aXNPcGVu
UmVxdWVzdCgpKQogICAgICAgICBwZXJmb3JtQ3VycmVudE9wZW5PcGVyYXRpb24oKTsKQEAgLTEy
MTcsNyArMTIxNyw3IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2U6Om9wZXJhdGlvbkFuZFRyYW5z
YWN0aW9uVGltZXJGaXJlZCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIihtYWluKSBVbmlxdWVJ
REJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZpcmVkIik7CiAKLSAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICAvLyBUaGlzIFVuaXF1
ZUlEQkRhdGFiYXNlIG1pZ2h0IGJlIG5vIGxvbmdlciBpbiB1c2UgYnkgYW55IHdlYiBwYWdlLgog
ICAgIC8vIEFzc3VtaW5nIGl0IGlzIG5vdCBlcGhlbWVyYWwsIHRoZSBzZXJ2ZXIgc2hvdWxkIG5v
dyBjbG9zZSBpdCB0byBmcmVlIHVwIHJlc291cmNlcy4KQEAgLTEyNjEsMTEgKzEyNjEsMTEgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6YWN0aXZhdGVUcmFuc2FjdGlvbkluQmFja2luZ1N0b3Jl
KFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnMKIHsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVu
aXF1ZUlEQkRhdGFiYXNlOjphY3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUiKTsKIAot
ICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gc2VsZih0aGlzKTsKLSAgICBSZWZQdHI8VW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcmVmVHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKTsK
KyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2U+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRyYW5zYWN0aW9u
KCZ0cmFuc2FjdGlvbik7CiAKLSAgICBhdXRvIGNhbGxiYWNrID0gW3RoaXMsIHNlbGYsIHJlZlRy
YW5zYWN0aW9uXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKLSAgICAgICAgcmVmVHJhbnNhY3Rp
b24tPmRpZEFjdGl2YXRlSW5CYWNraW5nU3RvcmUoZXJyb3IpOworICAgIGF1dG8gY2FsbGJhY2sg
PSBbdGhpcywgcHJvdGVjdGVkVGhpcywgcHJvdGVjdGVkVHJhbnNhY3Rpb25dKGNvbnN0IElEQkVy
cm9yJiBlcnJvcikgeworICAgICAgICBwcm90ZWN0ZWRUcmFuc2FjdGlvbi0+ZGlkQWN0aXZhdGVJ
bkJhY2tpbmdTdG9yZShlcnJvcik7CiAgICAgfTsKIAogICAgIHVpbnQ2NF90IGNhbGxiYWNrSUQg
PSBzdG9yZUNhbGxiYWNrKGNhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5jcHAKaW5kZXggZWQ2ZTkzMy4uNjJlMGZhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAKQEAgLTczLDkgKzczLDkgQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZUNvbm5lY3Rpb246OmFib3J0VHJhbnNhY3Rpb25XaXRob3V0Q2FsbGJhY2so
VW5pcXVlSURCRGF0YWIKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbk1hcC5jb250YWlucyh0cmFu
c2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpKSk7CiAKICAgICBjb25zdCBhdXRvJiB0cmFuc2Fj
dGlvbklkZW50aWZpZXIgPSB0cmFuc2FjdGlvbi5pbmZvKCkuaWRlbnRpZmllcigpOwotICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
Ci0gICAgbV9kYXRhYmFzZS5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcHJv
dGVjdG9yLCB0cmFuc2FjdGlvbklkZW50aWZpZXJdKGNvbnN0IElEQkVycm9yJikgeworICAgIG1f
ZGF0YWJhc2UuYWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbiwgW3RoaXMsIHByb3RlY3RlZFRo
aXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0oY29uc3QgSURCRXJyb3ImKSB7CiAgICAgICAgIEFT
U0VSVChtX3RyYW5zYWN0aW9uTWFwLmNvbnRhaW5zKHRyYW5zYWN0aW9uSWRlbnRpZmllcikpOwog
ICAgICAgICBtX3RyYW5zYWN0aW9uTWFwLnJlbW92ZSh0cmFuc2FjdGlvbklkZW50aWZpZXIpOwog
ICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2Vy
dmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IGQ5NTVhZTYuLjkwMjRlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbi5jcHAKQEAgLTY4LDggKzY4LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjphYm9ydCgpCiB7CiAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OmFib3J0Iik7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJh
c2UoKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywgc2VsZl0oY29uc3QgSURCRXJyb3Im
IGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuYWJv
cnRUcmFuc2FjdGlvbigqdGhpcywgW3RoaXMsIHByb3RlY3RlZFRoaXNdKGNvbnN0IElEQkVycm9y
JiBlcnJvcikgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFu
c2FjdGlvbjo6YWJvcnQgKGNhbGxiYWNrKSIpOwogICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlv
bi0+ZGlkQWJvcnRUcmFuc2FjdGlvbigqdGhpcywgZXJyb3IpOwogICAgIH0pOwpAQCAtOTYsOCAr
OTYsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNvbW1pdCgpCiB7CiAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNvbW1pdCIp
OwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7
Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuY29tbWl0VHJhbnNhY3Rpb24o
KnRoaXMsIFt0aGlzLCBzZWxmXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBt
X2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jb21taXRUcmFuc2FjdGlvbigqdGhpcywg
W3RoaXMsIHByb3RlY3RlZFRoaXNdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0IChjYWxs
YmFjaykiKTsKICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENvbW1pdFRyYW5zYWN0
aW9uKCp0aGlzLCBlcnJvcik7CiAgICAgfSk7CkBAIC0xMTAsOCArMTEwLDggQEAgdm9pZCBVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1
ZXN0RGF0YSYgcmVxdWUKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VS
VChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rp
b25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuY3Jl
YXRlT2JqZWN0U3RvcmUoKnRoaXMsIGluZm8sIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29u
c3QgSURCRXJyb3ImIGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRh
dGFiYXNlKCkuY3JlYXRlT2JqZWN0U3RvcmUoKnRoaXMsIGluZm8sIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJ
bmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjcmVhdGVPYmplY3RTdG9y
ZSAoY2FsbGJhY2spIik7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAg
IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRDcmVhdGVPYmplY3RTdG9yZShJREJSZXN1bHREYXRh
OjpjcmVhdGVPYmplY3RTdG9yZVN1Y2Nlc3MocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIo
KSkpOwpAQCAtMTI3LDggKzEyNyw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlCiAgICAgQVNT
RVJUKGlzVmVyc2lvbkNoYW5nZSgpKTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbkluZm8uaWRl
bnRpZmllcigpID09IHJlcXVlc3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsKIAotICAg
IFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMpOwotICAgIG1f
ZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmRlbGV0ZU9iamVjdFN0b3JlKCp0aGlzLCBv
YmplY3RTdG9yZU5hbWUsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3Im
IGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZGVs
ZXRlT2JqZWN0U3RvcmUoKnRoaXMsIG9iamVjdFN0b3JlTmFtZSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKElu
ZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmRlbGV0ZU9iamVjdFN0b3Jl
IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAg
bV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZERlbGV0ZU9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6
OmRlbGV0ZU9iamVjdFN0b3JlU3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigp
KSk7CkBAIC0xNDMsOCArMTQzLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjpjbGVhck9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXMKIAogICAgIEFT
U0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNh
Y3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCku
Y2xlYXJPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBbdGhpcywgc2Vs
ZiwgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlx
dWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0
YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmNsZWFyT2JqZWN0U3RvcmUoKnRoaXMsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25z
dCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUgKGNhbGxiYWNrKSIpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+
ZGlkQ2xlYXJPYmplY3RTdG9yZShJREJSZXN1bHREYXRhOjpjbGVhck9iamVjdFN0b3JlU3VjY2Vz
cyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xNjAsOCArMTYwLDggQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleChjb25zdCBJREJS
ZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwog
ICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEu
dHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFi
YXNlKCkuY3JlYXRlSW5kZXgoKnRoaXMsIGluZm8sIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0o
Y29uc3QgSURCRXJyb3ImIGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24t
PmRhdGFiYXNlKCkuY3JlYXRlSW5kZXgoKnRoaXMsIGluZm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCAoY2FsbGJh
Y2spIik7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIG1fZGF0YWJh
c2VDb25uZWN0aW9uLT5kaWRDcmVhdGVJbmRleChJREJSZXN1bHREYXRhOjpjcmVhdGVJbmRleFN1
Y2Nlc3MocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSkpOwpAQCAtMTc3LDggKzE3Nyw4
IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6ZGVsZXRlSW5kZXgoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhCiAgICAgQVNTRVJUKGlzVmVyc2lvbkNoYW5nZSgp
KTsKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbkluZm8uaWRlbnRpZmllcigpID09IHJlcXVlc3RE
YXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMpOwotICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5k
YXRhYmFzZSgpLmRlbGV0ZUluZGV4KCp0aGlzLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4
TmFtZSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsK
KyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5kZWxldGVJbmRleCgq
dGhpcywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJ
bmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjcmVhdGVJbmRleCAoY2Fs
bGJhY2spIik7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIG1fZGF0
YWJhc2VDb25uZWN0aW9uLT5kaWREZWxldGVJbmRleChJREJSZXN1bHREYXRhOjpkZWxldGVJbmRl
eFN1Y2Nlc3MocmVxdWVzdERhdGEucmVxdWVzdElkZW50aWZpZXIoKSkpOwpAQCAtMTk0LDggKzE5
NCw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6cHV0T3JBZGQoY29uc3Qg
SURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjCiAgICAgQVNTRVJUKCFpc1JlYWRPbmx5KCkp
OwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRh
dGFiYXNlKCkucHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlLCBbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvciwgY29u
c3QgSURCS2V5RGF0YSYga2V5KSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRh
dGFiYXNlKCkucHV0T3JBZGQocmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3JpdGVN
b2RlLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBl
cnJvciwgY29uc3QgSURCS2V5RGF0YSYga2V5KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJV
bmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpwdXRPckFkZCAoY2FsbGJhY2spIik7CiAKICAg
ICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQpAQCAtMjExLDggKzIxMSw4IEBAIHZvaWQgVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwKIAogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkg
PT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNv
bm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0UmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEs
IFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJ
REJHZXRSZXN1bHQmIHJlc3VsdCkgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5k
YXRhYmFzZSgpLmdldFJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvciwgY29uc3QgSURC
R2V0UmVzdWx0JiByZXN1bHQpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmdldFJlY29yZCAoY2FsbGJhY2spIik7CiAKICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQpAQCAtMjI4LDggKzIyOCw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjCiAKICAgICBBU1NFUlQobV90cmFuc2FjdGlvbkluZm8uaWRlbnRpZmllcigpID09IHJlcXVl
c3REYXRhLnRyYW5zYWN0aW9uSWRlbnRpZmllcigpKTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMpOwotICAgIG1fZGF0YWJhc2VDb25uZWN0aW9u
LT5kYXRhYmFzZSgpLmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFt0aGlzLCBz
ZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCB1aW50NjRfdCBjb3VudCkg
eworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmdldENvdW50KHJl
cXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0
YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCB1aW50NjRfdCBjb3VudCkgewogICAgICAgICBMT0co
SW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0Q291bnQgKGNhbGxi
YWNrKSIpOwogCiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JblByb2Nlc3NJREJTZXJ2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAKaW5kZXggOTNhYzZkNi4uZWRhODc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZl
ci5jcHAKQEAgLTkxLDMzNCArOTEsMzM0IEBAIElEQlNlcnZlcjo6SURCQ29ubmVjdGlvblRvQ2xp
ZW50JiBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbm5lY3Rpb25Ub0NsaWVudCgpIGNvbnN0CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVEYXRhYmFzZShjb25zdCBJREJSZXF1ZXN0RGF0
YSYgcmVxdWVzdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0
aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVl
c3REYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRo
aXMsIHJlcXVlc3REYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVEYXRhYmFzZShyZXF1
ZXN0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxl
dGVEYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZURhdGFiYXNlKHJlc3VsdERhdGEpOwogICAgIH0p
OwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6b3BlbkRhdGFiYXNlKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2Vs
ZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5EYXRhYmFz
ZShyZXF1ZXN0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpk
aWRPcGVuRGF0YWJhc2UoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CiAgICAgICAg
IG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRPcGVuRGF0YWJhc2UocmVzdWx0RGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRBYm9ydFRyYW5zYWN0aW9uKGNv
bnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0
aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHRyYW5z
YWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0gewogICAg
ICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQWJvcnRUcmFuc2FjdGlvbih0cmFuc2FjdGlv
bklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRpZENvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJh
bnNhY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKKyAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rp
b25JZGVudGlmaWVyLCBlcnJvcl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
Q29tbWl0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CiAgICAgfSk7
CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVPYmplY3RTdG9yZShjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZENyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxm
KHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVz
dWx0RGF0YV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxl
dGVPYmplY3RTdG9yZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZENsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHRE
YXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDbGVhck9iamVjdFN0b3Jl
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
Q3JlYXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1f
Y29ubmVjdGlvblRvU2VydmVyLT5kaWRDcmVhdGVJbmRleChyZXN1bHREYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZUluZGV4KGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
c2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYs
IHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
RGVsZXRlSW5kZXgocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRQdXRPckFkZChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewot
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAg
ICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFB1dE9yQWRkKHJlc3VsdERhdGEpOwogICAg
IH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0UmVjb3JkKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNl
bGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkR2V0UmVjb3JkKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkR2V0Q291bnQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CiAg
ICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRDb3VudChyZXN1bHREYXRhKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZVJlY29yZChjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZERlbGV0ZVJlY29yZChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5DdXJzb3IoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHRE
YXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRPcGVuQ3Vyc29yKHJlc3Vs
dERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkSXRlcmF0
ZUN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZEl0ZXJhdGVDdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjphYm9ydFRyYW5zYWN0aW9uKGNvbnN0IElEQlJl
c291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBzZWxmLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAg
ICAgICAgIG1fc2VydmVyLT5hYm9ydFRyYW5zYWN0aW9uKHJlc291cmNlSWRlbnRpZmllcik7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjb21taXRUcmFuc2FjdGlvbihj
b25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlc291cmNlSWRlbnRpZmllcikKIHsKLSAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzb3VyY2VJZGVudGlmaWVyXSB7CisgICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc291cmNlSWRlbnRp
Zmllcl0gewogICAgICAgICBtX3NlcnZlci0+Y29tbWl0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVu
dGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpbmlz
aEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgdHJhbnNhY3Rpb25J
ZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8
SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5k
aWRGaW5pc2hIYW5kbGluZ1ZlcnNpb25DaGFuZ2VUcmFuc2FjdGlvbihkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6Y3JlYXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERh
dGEmIHJlc3VsdERhdGEsIGNvbnN0IElEQk9iamVjdFN0b3JlSW5mbyYgaW5mbykKIHsKLSAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YSwgaW5mb10geworICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhLCBpbmZv
XSB7CiAgICAgICAgIG1fc2VydmVyLT5jcmVhdGVPYmplY3RTdG9yZShyZXN1bHREYXRhLCBpbmZv
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZU9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlz
KTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3RE
YXRhLCBvYmplY3RTdG9yZU5hbWVdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZV0gewogICAgICAg
ICBtX3NlcnZlci0+ZGVsZXRlT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFt
ZSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjbGVhck9iamVjdFN0
b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgdWludDY0X3Qgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhp
cyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0
RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmNsZWFyT2JqZWN0U3RvcmUocmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2Vy
dmVyOjpjcmVhdGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0
IElEQkluZGV4SW5mbyYgaW5mbykKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBz
ZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwg
cmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGluZm9dIHsKICAgICAgICAgbV9zZXJ2ZXItPmNy
ZWF0ZUluZGV4KHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRlbGV0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSwgdWludDY0X3Qgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIG9iamVj
dFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZp
ZXIsIGluZGV4TmFtZV0gewogICAgICAgICBtX3NlcnZlci0+ZGVsZXRlSW5kZXgocmVxdWVzdERh
dGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OnB1dE9yQWRkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5RGF0YSwgY29uc3QgSURCVmFsdWUmIHZhbHVl
LCBjb25zdCBJbmRleGVkREI6Ok9iamVjdFN0b3JlT3ZlcndyaXRlTW9kZSBvdmVyd3JpdGVNb2Rl
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5RGF0
YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtleURhdGEsIHZhbHVlLCBvdmVyd3Jp
dGVNb2RlXSB7CiAgICAgICAgIG1fc2VydmVyLT5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0
YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0UmVjb3JkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwga2V5UmFu
Z2VEYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5nZXRSZWNvcmQocmVxdWVzdERhdGEsIGtleVJh
bmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRDb3Vu
dChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGNvbnN0IElEQktleVJhbmdlRGF0
YSYga2V5UmFuZ2VEYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYo
dGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAg
bV9zZXJ2ZXItPmdldENvdW50KHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEpOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEp
CiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VE
YXRhXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxl
dGVSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuQ3Vyc29yKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1
ZXN0RGF0YSwgY29uc3QgSURCQ3Vyc29ySW5mbyYgaW5mbykKIHsKLSAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBpbmZvXSB7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwgaW5mb10gewogICAg
ICAgICBtX3NlcnZlci0+b3BlbkN1cnNvcihyZXF1ZXN0RGF0YSwgaW5mbyk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjppdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlcXVl
c3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5RGF0YSYga2V5LCB1bnNpZ25lZCBsb25n
IGNvdW50KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Cisg
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIGtl
eSwgY291bnRdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXksIGNvdW50XSB7CiAgICAgICAgIG1fc2VydmVyLT5p
dGVyYXRlQ3Vyc29yKHJlcXVlc3REYXRhLCBrZXksIGNvdW50KTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmVzdGFibGlzaFRyYW5zYWN0aW9uKHVpbnQ2NF90IGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQlRyYW5zYWN0aW9uSW5mbyYgaW5mbykK
IHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIGluZm9dIHsKICAgICAg
ICAgbV9zZXJ2ZXItPmVzdGFibGlzaFRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIGluZm8pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Zmly
ZVZlcnNpb25DaGFuZ2VFdmVudChJREJTZXJ2ZXI6OlVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
biYgY29ubmVjdGlvbiwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXF1ZXN0SWRlbnRp
ZmllciwgdWludDY0X3QgcmVxdWVzdGVkVmVyc2lvbikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgdWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciA9IGNvbm5lY3Rpb24uaWRlbnRpZmllcigpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgc2VsZiwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uXSB7CiAgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5maXJlVmVyc2lvbkNoYW5nZUV2ZW50KGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHJlcXVlc3RJZGVudGlmaWVyLCByZXF1ZXN0ZWRWZXJzaW9uKTsKICAgICB9
KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFN0YXJ0VHJhbnNhY3Rpb24oY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElE
QkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRo
aXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgdHJhbnNh
Y3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAg
ICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRTdGFydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
SWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQoY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVy
JiByZXF1ZXN0SWRlbnRpZmllciwgdWludDY0X3Qgb2xkVmVyc2lvbiwgdWludDY0X3QgbmV3VmVy
c2lvbikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdElkZW50aWZp
ZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb25dIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2Vy
dmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5l
d1ZlcnNpb25dIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPm5vdGlmeU9wZW5EQlJl
cXVlc3RCbG9ja2VkKHJlcXVlc3RJZGVudGlmaWVyLCBvbGRWZXJzaW9uLCBuZXdWZXJzaW9uKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRhdGFiYXNlQ29ubmVjdGlv
bkNsb3NlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKQogewotICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyXSB7
CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRhdGFiYXNlQ29u
bmVjdGlvbkNsb3NlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0K
IAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQodWlu
dDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRp
Zmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXJdIHsK
ICAgICAgICAgbV9zZXJ2ZXItPmFib3J0T3BlbkFuZFVwZ3JhZGVOZWVkZWQoZGF0YWJhc2VDb25u
ZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQodWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXF1ZXN0SWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2Vs
ZiwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXJdIHsKKyAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2
ZXItPmRpZEZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6b3BlbkRCUmVxdWVzdENhbmNlbGxlZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXSB7
CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVl
c3REYXRhXSB7CiAgICAgICAgIG1fc2VydmVyLT5vcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKHJlcXVl
c3REYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldEFsbERh
dGFiYXNlTmFtZXMoY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBtYWluRnJhbWVPcmlnaW4sIGNv
bnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3BlbmluZ09yaWdpbiwgdWludDY0X3QgY2FsbGJhY2tJ
RCkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0b3IodGhpcyk7Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0b3IsIG1haW5GcmFt
ZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRF0geworICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdP
cmlnaW4sIGNhbGxiYWNrSURdIHsKICAgICAgICAgbV9zZXJ2ZXItPmdldEFsbERhdGFiYXNlTmFt
ZXMobV9jb25uZWN0aW9uVG9TZXJ2ZXItPmlkZW50aWZpZXIoKSwgbWFpbkZyYW1lT3JpZ2luLCBv
cGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZEdldEFsbERhdGFiYXNlTmFtZXModWludDY0X3QgY2FsbGJhY2tJRCwgY29u
c3QgVmVjdG9yPFN0cmluZz4mIGRhdGFiYXNlTmFtZXMpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdG9yKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdG9yLCBjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzXSB7CisgICAg
UmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGNhbGxiYWNrSUQs
IGRhdGFiYXNlTmFtZXNdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldEFs
bERhdGFiYXNlTmFtZXMoY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lcyk7CiAgICAgfSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJl
cXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFS
ZXF1ZXN0LmNwcAppbmRleCA3M2IxNDliLi5iYjA4Mzc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKQEAgLTIw
OSw3ICsyMDksNyBAQCB2b2lkIFVzZXJNZWRpYVJlcXVlc3Q6OmZhaWxlZFRvQ3JlYXRlU3RyZWFt
V2l0aFBlcm1pc3Npb25FcnJvcigpCiAKIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6Y29udGV4dERl
c3Ryb3llZCgpCiB7Ci0gICAgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxVc2VyTWVkaWFSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlm
IChtX2NvbnRyb2xsZXIpIHsKICAgICAgICAgbV9jb250cm9sbGVyLT5jYW5jZWxVc2VyTWVkaWFB
Y2Nlc3NSZXF1ZXN0KCp0aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25DZW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKaW5kZXggNjEyZWNkNC4u
ZGI2MWFiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25z
L05vdGlmaWNhdGlvbkNlbnRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lk
IE5vdGlmaWNhdGlvbkNlbnRlcjo6c3RvcCgpCiAgICAgLy8gQ2xlYXIgbV9jbGllbnQgaW1tZWRp
YXRlbHkgdG8gZ3VhcmFudGVlIHJlZW50cmFudCBjYWxscyB0byBOb3RpZmljYXRpb25DZW50ZXIg
ZG8gbm90aGluZy4KICAgICAvLyBBbHNvIHByb3RlY3QgfHRoaXN8IHNvIGl0J3Mgbm90IGluZGly
ZWN0bHkgZGVzdHJveWVkIHVuZGVyIHVzIGJ5IHdvcmsgZG9uZSBieSB0aGUgY2xpZW50LgogICAg
IGF1dG8mIGNsaWVudCA9ICpzdGQ6OmV4Y2hhbmdlKG1fY2xpZW50LCBudWxscHRyKTsKLSAgICBS
ZWY8Tm90aWZpY2F0aW9uQ2VudGVyPiBwcm90ZWN0b3IoKnRoaXMpOworICAgIFJlZjxOb3RpZmlj
YXRpb25DZW50ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKCFtX2NhbGxiYWNr
cy5pc0VtcHR5KCkpCiAgICAgICAgIGRlcmVmKCk7IC8vIEJhbGFuY2VkIGJ5IHRoZSByZWYgaW4g
Tm90aWZpY2F0aW9uQ2VudGVyOjpyZXF1ZXN0UGVybWlzc2lvbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCAzYzhkZjJiLi45ZGNl
ZTE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29u
dGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRl
eHQuY3BwCkBAIC03OTcsOSArNzk3LDkgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnNjaGVkdWxlTm9k
ZURlbGV0aW9uKCkKIAogICAgICAgICBtX2lzRGVsZXRpb25TY2hlZHVsZWQgPSB0cnVlOwogCi0g
ICAgICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3N0cm9uZ1RoaXNdIHsKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMtPmRl
bGV0ZU1hcmtlZE5vZGVzKCk7CisgICAgICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsK
KyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRlbGV0ZU1hcmtlZE5vZGVzKCk7CiAgICAgICAg
IH0pOwogICAgIH0KIH0KQEAgLTgwOSw3ICs4MDksNyBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6ZGVs
ZXRlTWFya2VkTm9kZXMoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAgICAvLyBQ
cm90ZWN0IHRoaXMgb2JqZWN0IGZyb20gYmVpbmcgZGVsZXRlZCBiZWZvcmUgd2UgcmVsZWFzZSB0
aGUgbXV0ZXggbG9ja2VkIGJ5IEF1dG9Mb2NrZXIuCi0gICAgUmVmPEF1ZGlvQ29udGV4dD4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAgICAgewogICAgICAgICBBdXRvTG9ja2VyIGxvY2tlcigqdGhpcyk7CiAKQEAgLTEwMDIsMTAg
KzEwMDIsMTAgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCkK
IHsKICAgICAvLyBNYWtlIHN1cmUgdG8gY2FsbCBEb2N1bWVudDo6dXBkYXRlSXNQbGF5aW5nTWVk
aWEoKSBvbiB0aGUgbWFpbiB0aHJlYWQsIHNpbmNlCiAgICAgLy8gd2UgY291bGQgYmUgb24gdGhl
IGF1ZGlvIEkvTyB0aHJlYWQgaGVyZSBhbmQgdGhlIGNhbGwgaW50byBXZWJDb3JlIGNvdWxkIGJs
b2NrLgotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgY2Fs
bE9uTWFpblRocmVhZChbc3Ryb25nVGhpc10gewotICAgICAgICBpZiAoc3Ryb25nVGhpcy0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgIHN0cm9uZ1RoaXMtPmRvY3VtZW50KCktPnVwZGF0ZUlzUGxh
eWluZ01lZGlhKCk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpKQorICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9j
dW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKICAgICB9KTsKIH0KIApAQCAtMTA2Myw5
ICsxMDYzLDkgQEAgdm9pZCBBdWRpb0NvbnRleHQ6OnN1c3BlbmQoUHJvbWlzZSYmIHByb21pc2Up
CiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbc3Ryb25nVGhp
c10gewotICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6U3VzcGVuZGVkKTsKKyAg
ICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVzdGlu
YXRpb25Ob2RlLT5zdXNwZW5kKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOwogICAgIH0pOwogfQogCkBAIC0xMDkzLDkg
KzEwOTMsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6cmVzdW1lKFByb21pc2UmJiBwcm9taXNlKQog
CiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9u
Z1RoaXModGhpcyk7Ci0gICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbc3Ryb25nVGhpc10g
ewotICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CisgICAgUmVm
UHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9u
Tm9kZS0+cmVzdW1lKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnNl
dFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKICAgICB9KTsKIH0KIApAQCAtMTExNSwxMCArMTExNSwx
MCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6Y2xvc2UoUHJvbWlzZSYmIHByb21pc2UpCiAKICAgICBs
YXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0
aGlzKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3N0cm9uZ1RoaXNdIHsKLSAgICAg
ICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7Ci0gICAgICAgIHN0cm9uZ1Ro
aXMtPnVuaW5pdGlhbGl6ZSgpOworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPmNsb3NlKFtwcm90ZWN0ZWRUaGlzXSB7
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnNldFN0YXRlKFN0YXRlOjpDbG9zZWQpOworICAgICAg
ICBwcm90ZWN0ZWRUaGlzLT51bmluaXRpYWxpemUoKTsKICAgICB9KTsKIH0KIApAQCAtMTEzNiwx
MCArMTEzNiwxMCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZFBsYXliYWNrKCkKIAogICAg
IGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlz
KHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7Ci0g
ICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBzdHJvbmdUaGlzLT5tX21lZGlhU2Vzc2lvbi0+c3Rh
dGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7Ci0gICAgICAgIHN0cm9u
Z1RoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6
OlN1c3BlbmRlZCk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+c3VzcGVuZChbcHJvdGVjdGVkVGhpc10geworICAg
ICAgICBib29sIGludGVycnVwdGVkID0gcHJvdGVjdGVkVGhpcy0+bV9tZWRpYVNlc3Npb24tPnN0
YXRlKCkgPT0gUGxhdGZvcm1NZWRpYVNlc3Npb246OkludGVycnVwdGVkOworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5zZXRTdGF0ZShpbnRlcnJ1cHRlZCA/IFN0YXRlOjpJbnRlcnJ1cHRlZCA6IFN0
YXRlOjpTdXNwZW5kZWQpOwogICAgIH0pOwogfQogCkBAIC0xMTU4LDkgKzExNTgsOSBAQCB2b2lk
IEF1ZGlvQ29udGV4dDo6bWF5UmVzdW1lUGxheWJhY2soYm9vbCBzaG91bGRSZXN1bWUpCiAKICAg
ICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhp
cyh0aGlzKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJvbmdUaGlzXSB7Ci0g
ICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICBSZWZQdHI8
QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2Rl
LT5yZXN1bWUoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0U3Rh
dGUoU3RhdGU6OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCmluZGV4IGEzNmFjNzguLmRhMzhlMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwCkBA
IC0zMzMsNyArMzMzLDcgQEAgdm9pZCBEYXRhYmFzZTo6cGVyZm9ybUNsb3NlKCkKICAgICAvLyB0
byBpdCB3aXRoIGEgbG9jYWwgcG9pbnRlciBoZXJlIGZvciBhIGxpaXRsZSBsb25nZXIsIHNvIHRo
YXQgd2UgY2FuCiAgICAgLy8gdW5zY2hlZHVsZSBhbnkgRGF0YWJhc2VUYXNrcyB0aGF0IHJlZmVy
IHRvIGl0IGJlZm9yZSB0aGUgZGF0YWJhc2UgZ2V0cwogICAgIC8vIGRlbGV0ZWQuCi0gICAgUmVm
PERhdGFiYXNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGF0YWJhc2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT5yZWNv
cmREYXRhYmFzZUNsb3NlZCh0aGlzKTsKICAgICBkYXRhYmFzZUNvbnRleHQoKS0+ZGF0YWJhc2VU
aHJlYWQoKS0+dW5zY2hlZHVsZURhdGFiYXNlVGFza3ModGhpcyk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwCmluZGV4IDlkYWVhNTIuLmE3
MDcwZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwCkBAIC01MDksNyArNTA5LDcgQEAgdm9pZCBXZWJTb2NrZXQ6OnJlc3VtZSgpCiAKIHZv
aWQgV2ViU29ja2V0OjpyZXN1bWVUaW1lckZpcmVkKCkKIHsKLSAgICBSZWY8V2ViU29ja2V0PiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8V2ViU29ja2V0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
IAogICAgIEFTU0VSVCghbV9wZW5kaW5nRXZlbnRzLmlzRW1wdHkoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCAxNWUyN2EwLi45NTA2NDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAg
dm9pZCBXZWJTb2NrZXRDaGFubmVsOjpjbG9zZShpbnQgY29kZSwgY29uc3QgU3RyaW5nJiByZWFz
b24pCiAgICAgQVNTRVJUKCFtX3N1c3BlbmRlZCk7CiAgICAgaWYgKCFtX2hhbmRsZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8g
QW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxs
IGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29j
a2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBj
bG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xv
c2VkIGFuZCBkZXJlZmVyZW5jZWQuCiAgICAgc3RhcnRDbG9zaW5nSGFuZHNoYWtlKGNvZGUsIHJl
YXNvbik7CiAgICAgaWYgKG1fY2xvc2luZyAmJiAhbV9jbG9zaW5nVGltZXIuaXNBY3RpdmUoKSkK
ICAgICAgICAgbV9jbG9zaW5nVGltZXIuc3RhcnRPbmVTaG90KDIgKiBUQ1BNYXhpbXVtU2VnbWVu
dExpZmV0aW1lKTsKQEAgLTIxNCw3ICsyMTQsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmZh
aWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAKICAgICAvLyBIeWJpLTEwIHNwZWNpZmljYXRpb24g
ZXhwbGljaXRseSBzdGF0ZXMgd2UgbXVzdCBub3QgY29udGludWUgdG8gaGFuZGxlIGluY29taW5n
IGRhdGEKICAgICAvLyBvbmNlIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBmYWlsZWQgKHNl
Y3Rpb24gNy4xLjcpLgotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsg
Ly8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5n
IHRoZSBsYXN0IHJlZmVyZW5jZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRp
YWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgbV9zaG91bGREaXNjYXJkUmVj
ZWl2ZWREYXRhID0gdHJ1ZTsKICAgICBpZiAoIW1fYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
c2tpcEJ1ZmZlcihtX2J1ZmZlci5zaXplKCkpOyAvLyBTYXZlIG1lbW9yeS4KQEAgLTMwMSw3ICsz
MDEsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZENsb3NlU29ja2V0U3RyZWFtKFNvY2tl
dFN0cmVhbUhhbmRsZSogaGFuZGxlKQogdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpkaWRSZWNlaXZl
U29ja2V0U3RyZWFtRGF0YShTb2NrZXRTdHJlYW1IYW5kbGUqIGhhbmRsZSwgY29uc3QgY2hhciog
ZGF0YSwgaW50IGxlbikKIHsKICAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAg
ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKSBSZWNlaXZlZCAlZCBieXRlcyIsIHRoaXMsIGxl
bik7Ci0gICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBUaGUgY2xp
ZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3Qg
cmVmZXJlbmNlLgorICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92
aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KICAgICBBU1NFUlQoaGFuZGxlID09IG1faGFuZGxlKTsK
ICAgICBpZiAoIW1fZG9jdW1lbnQpIHsKICAgICAgICAgcmV0dXJuOwpAQCAtNDI4LDcgKzQyOCw3
IEBAIGJvb2wgV2ViU29ja2V0Q2hhbm5lbDo6cHJvY2Vzc0J1ZmZlcigpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCgqdGhp
cyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1v
dmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90
ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgogCiAgICAgaWYgKG1faGFuZHNo
YWtlLT5tb2RlKCkgPT0gV2ViU29ja2V0SGFuZHNoYWtlOjpJbmNvbXBsZXRlKSB7CiAgICAgICAg
IGludCBoZWFkZXJMZW5ndGggPSBtX2hhbmRzaGFrZS0+cmVhZFNlcnZlckhhbmRzaGFrZShtX2J1
ZmZlci5kYXRhKCksIG1fYnVmZmVyLnNpemUoKSk7CkBAIC00NjUsNyArNDY1LDcgQEAgYm9vbCBX
ZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKIAogdm9pZCBXZWJTb2NrZXRDaGFubmVs
OjpyZXN1bWVUaW1lckZpcmVkKCkKIHsKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVj
dCgqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxs
eSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgUmVmPFdlYlNvY2tldENoYW5uZWw+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5l
bCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgogICAgIHdoaWxlICgh
bV9zdXNwZW5kZWQgJiYgbV9jbGllbnQgJiYgIW1fYnVmZmVyLmlzRW1wdHkoKSkKICAgICAgICAg
aWYgKCFwcm9jZXNzQnVmZmVyKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTQ5MCw3ICs0OTAs
NyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnN0YXJ0Q2xvc2luZ0hhbmRzaGFrZShpbnQgY29k
ZSwgY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgICAgIGJ1Zi5hcHBlbmQocmVhc29uLnV0Zjgo
KS5kYXRhKCksIHJlYXNvbi51dGY4KCkubGVuZ3RoKCkpOwogICAgIH0KICAgICBlbnF1ZXVlUmF3
RnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9wQ29kZUNsb3NlLCBidWYuZGF0YSgpLCBidWYuc2l6ZSgp
KTsKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCgqdGhpcyk7IC8vIEFuIGF0dGVt
cHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhl
IGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCisgICAgUmVmPFdlYlNvY2tldENoYW5u
ZWw+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xvc2luZyBo
YW5kc2hha2UgbWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3NlZCBhbmQg
ZGVyZWZlcmVuY2VkLgogICAgIHByb2Nlc3NPdXRnb2luZ0ZyYW1lUXVldWUoKTsKIAogICAgIGlm
IChtX2Nsb3NlZCkgewpAQCAtNzI5LDcgKzcyOSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6
cHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpCiAgICAgaWYgKG1fb3V0Z29pbmdGcmFtZVF1ZXVl
U3RhdHVzID09IE91dGdvaW5nRnJhbWVRdWV1ZUNsb3NlZCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBBbnkgY2FsbCB0byBm
YWlsKCkgd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCisgICAg
UmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBBbnkgY2FsbCB0
byBmYWlsKCkgd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCiAK
ICAgICB3aGlsZSAoIW1fb3V0Z29pbmdGcmFtZVF1ZXVlLmlzRW1wdHkoKSkgewogICAgICAgICBh
dXRvIGZyYW1lID0gbV9vdXRnb2luZ0ZyYW1lUXVldWUudGFrZUZpcnN0KCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcAppbmRleCA4YTNiYzQ3Li4yMjUzYThlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
c29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTM5Nyw3ICsz
OTcsNyBAQCB2b2lkIFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6Omlu
aXRpYWxpemUoKQogewogICAgIEFTU0VSVCghbV9wZWVyKTsKICAgICBzZXRNZXRob2ROb3RDb21w
bGV0ZWQoKTsKLSAgICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdl
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIFdvcmtlckxvYWRlclByb3h5KiBsb2FkZXJQ
cm94eSA9ICZtX2xvYWRlclByb3h5OwogICAgIFJlZlB0cjxUaHJlYWRhYmxlV2ViU29ja2V0Q2hh
bm5lbENsaWVudFdyYXBwZXI+IHdvcmtlckNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXI7CkBAIC00NDcsNyArNDQ3LDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNl
bmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICAg
ICAgcGVlci0+c2VuZChjYXB0dXJlZE1lc3NhZ2Uuc3RyaW5nKCkpOwogICAgIH0pOwogCi0gICAg
UmVmPEJyaWRnZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxl
V2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNs
aWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyKQpAQCAtNDc3LDcgKzQ3
Nyw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVh
ZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIHBlZXItPnNlbmQoKmFycmF5
QnVmZmVyKTsKICAgICB9KTsKIAotICAgIFJlZjxCcmlkZ2U+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHdhaXRGb3JNZXRob2RDb21w
bGV0aW9uKCk7CiAgICAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWxDbGllbnRXcmFwcGVyKiBj
bGllbnRXcmFwcGVyID0gbV93b3JrZXJDbGllbnRXcmFwcGVyLmdldCgpOwogICAgIGlmICghY2xp
ZW50V3JhcHBlcikKQEAgLTUwMyw3ICs1MDMsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5l
bDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgog
ICAgICAgICBwZWVyLT5zZW5kKEJsb2I6OmRlc2VyaWFsaXplKGNhcHR1cmVkVVJMLnVybCgpLCBj
YXB0dXJlZFR5cGUuc3RyaW5nKCksIHNpemUsIHsgfSkpOwogICAgIH0pOwogCi0gICAgUmVmPEJy
aWRnZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29j
a2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdy
YXBwZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyKQpAQCAtNTI2LDcgKzUyNiw3IEBA
IHVuc2lnbmVkIGxvbmcgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6
YnVmZmVyZWRBbW91bnQoKQogICAgICAgICBwZWVyLT5idWZmZXJlZEFtb3VudCgpOwogICAgIH0p
OwogCi0gICAgUmVmPEJyaWRnZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJyaWRnZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBt
X3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKGNsaWVudFdyYXBwZXIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cAppbmRleCBkNmQwNWNlLi5iMDk3MzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKQEAgLTM2MCw3ICszNjAsNyBAQCBT
dHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6Y29tcHV0ZWRMYWJlbCgpCiB7CiAgICAgLy8gVGhp
cyBtZXRob2QgaXMgYmVpbmcgY2FsbGVkIGJ5IFdlYktpdCBpbnNwZWN0b3IsIHdoaWNoIG1heSBo
YXBwZW4gYXQgYW55IHRpbWUsIHNvIHdlIG5lZWQgdG8gdXBkYXRlIG91ciBiYWNraW5nIHN0b3Jl
IG5vdy4KICAgICAvLyBBbHNvIGhvbGQgb250byB0aGlzIG9iamVjdCBpbiBjYXNlIHVwZGF0ZUJh
Y2tpbmdTdG9yZSBkZWxldGVzIHRoaXMgbm9kZS4KLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9i
amVjdD4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIHVwZGF0ZUJhY2tpbmdTdG9yZSgpOwogICAgIFZlY3Rv
cjxBY2Nlc3NpYmlsaXR5VGV4dD4gdGV4dDsKICAgICBhY2Nlc3NpYmlsaXR5VGV4dCh0ZXh0KTsK
QEAgLTE2NzksNyArMTY3OSw3IEBAIHVuc2lnbmVkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvQVhM
aW5lRm9ySW5kZXgodW5zaWduZWQgaW5kZXgpCiB2b2lkIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnVw
ZGF0ZUJhY2tpbmdTdG9yZSgpCiB7CiAgICAgLy8gVXBkYXRpbmcgdGhlIGxheW91dCBtYXkgZGVs
ZXRlIHRoaXMgb2JqZWN0LgotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBwcm90ZWN0
b3IodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAKICAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpcy0+ZG9jdW1lbnQoKSkg
ewogICAgICAgICBpZiAoIWRvY3VtZW50LT52aWV3KCktPmlzSW5SZW5kZXJUcmVlTGF5b3V0KCkp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCAxNDFjMzNjLi44OTFmNmZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdC5jcHAKQEAgLTE2NjIsNyArMTY2Miw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9i
amVjdDo6c2V0Rm9jdXNlZChib29sIG9uKQogICAgIC8vIFdoZW4gYSBub2RlIGlzIHRvbGQgdG8g
c2V0IGZvY3VzLCB0aGF0IGNhbiBjYXVzZSBpdCB0byBiZSBkZWFsbG9jYXRlZCwgd2hpY2ggbWVh
bnMgdGhhdCBkb2luZwogICAgIC8vIGFueXRoaW5nIGVsc2UgaW5zaWRlIHRoaXMgb2JqZWN0IHdp
bGwgY3Jhc2guIFRvIGZpeCB0aGlzLCB3ZSBhZGRlZCBhIFJlZlB0ciB0byBwcm90ZWN0IHRoaXMg
b2JqZWN0CiAgICAgLy8gbG9uZyBlbm91Z2ggZm9yIGR1cmF0aW9uLgotICAgIFJlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIAogICAgIC8vIElmIHRoaXMgbm9kZSBp
cyBhbHJlYWR5IHRoZSBjdXJyZW50bHkgZm9jdXNlZCBub2RlLCB0aGVuIGNhbGxpbmcgZm9jdXMo
KSB3b24ndCBkbyBhbnl0aGluZy4KICAgICAvLyBUaGF0IGlzIGEgcHJvYmxlbSB3aGVuIGZvY3Vz
IGlzIHJlbW92ZWQgZnJvbSB0aGUgd2VicGFnZSB0byBjaHJvbWUsIGFuZCB0aGVuIHJldHVybnMu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9nb2JqZWN0L0dPYmplY3RFdmVu
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2
ZW50TGlzdGVuZXIuY3BwCmluZGV4IDlkMWI4ODEuLmQ0YTFkMTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3Bw
CkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgR09iamVjdEV2ZW50TGlzdGVuZXI6OmdvYmplY3REZXN0
cm95ZWQoKQogICAgIC8vIFByb3RlY3QgJ3RoaXMnIGNsYXNzIGluIGNhc2UgdGhlICdtX2NvcmVU
YXJnZXQnIGhvbGRzIHRoZSBsYXN0IHJlZmVyZW5jZSwKICAgICAvLyB3aGljaCBtYXkgY2F1c2Us
IGluc2lkZSByZW1vdmVFdmVudExpc3RlbmVyKCksIGZyZWUgb2YgdGhpcyBvYmplY3QKICAgICAv
LyBhbmQgbGF0ZXIgdXNlLWFmdGVyLWZyZWUgd2l0aCB0aGUgbV9oYW5kbGVyID0gMDsgYXNzaWdu
bWVudC4KLSAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IHByb3RlY3QodGhpcyk7Cisg
ICAgUmVmUHRyPEdPYmplY3RFdmVudExpc3RlbmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAg
ICAgbV9jb3JlVGFyZ2V0LT5yZW1vdmVFdmVudExpc3RlbmVyKG1fZG9tRXZlbnROYW1lLmRhdGEo
KSwgdGhpcywgbV9jYXB0dXJlKTsKICAgICBtX2NvcmVUYXJnZXQgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAK
aW5kZXggNWQ0YzI2OC4uYzEwZDA1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IFJlZlB0cjxFbGVtZW50PiBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OmNvbnN0cnVjdEVsZW1l
bnQoY29uc3QgQXRvbWljU3RyaW5nJiB0CiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdv
cmxkLT52bSgpKTsKIApAQCAtMTA4LDcgKzEwOCw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgIGlmICghY2FuSW52
b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPEpTQ3VzdG9tRWxlbWVu
dEludGVyZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29s
YXRlZFdvcmxkLT52bSgpKTsKIAogICAgIGlmICghbV9jb25zdHJ1Y3RvcikKQEAgLTE1Niw3ICsx
NTYsNyBAQCB2b2lkIEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6YXR0cmlidXRlQ2hhbmdlZChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBRdWFsaWZpZQogICAgIGlmICghY2FuSW52b2tlQ2FsbGJh
Y2soKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29y
bGQtPnZtKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAppbmRleCAyMDYxZGE5
Li43OTczM2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAKQEAgLTQ1LDcgKzQ1
LDcgQEAgYm9vbCBKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFNRTFRy
YW5zYWN0aW9uKiB0cmFuc2FjdGlvbiwgU1FMRXIKICAgICBpZiAoIW1fZGF0YSB8fCAhbV9kYXRh
LT5nbG9iYWxPYmplY3QoKSB8fCAhY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICBSZWY8SlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8SlNTUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmpl
Y3QoKS0+dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCBlZTlmOTY4Li5jM2FjZjVkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6
bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgICAgICBmdW5jdGlv
biA9IG1fY3VzdG9tUmVzb2x2ZXIuZ2V0KCk7CiAgICAgfQogCi0gICAgUmVmPEpTQ3VzdG9tWFBh
dGhOU1Jlc29sdmVyPiBzZWxmUHJvdGVjdG9yKCp0aGlzKTsKKyAgICBSZWY8SlNDdXN0b21YUGF0
aE5TUmVzb2x2ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTWFya2VkQXJndW1lbnRC
dWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZChqc1N0cmluZ1dpdGhDYWNoZShleGVjLCBwcmVm
aXgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFs
T2JqZWN0VGFzay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9i
amVjdFRhc2suY3BwCmluZGV4IDFmMjFmYzYuLmM2MjMwN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcApAQCAtNDgsNyAr
NDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBSZWY8SlNHbG9iYWxPYmplY3RDYWxsYmFjaz4gcHJv
dGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9nbG9iYWxPYmplY3Qt
PnZtKCkpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNl
LmNwcAppbmRleCBkYWNhMjc3Li45YWZmNDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGNhbGwoKQogICAgIHsKLSAgICAgICAgUmVmPEpTRE9NV2luZG93TWljcm90YXNr
Q2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgICAgICBSZWY8SlNET01XaW5kb3dNaWNyb3Rh
c2tDYWxsYmFjaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgICAgIEpTTG9ja0hvbGRlciBs
b2NrKG1fZ2xvYmFsT2JqZWN0LT52bSgpKTsKIAogICAgICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNFcnJvckhhbmRsZXIuY3BwCmluZGV4IDZlYmE0ZGUuLmRiOTRhNjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKQEAgLTg0LDcgKzg0LDcg
QEAgdm9pZCBKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGpzRnVu
Y3Rpb24tPm1ldGhvZFRhYmxlKCktPmdldENhbGxEYXRhKGpzRnVuY3Rpb24sIGNhbGxEYXRhKTsK
IAogICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBSZWY8SlNF
cnJvckhhbmRsZXI+IHByb3RlY3RlZGN0b3IoKnRoaXMpOworICAgICAgICBSZWY8SlNFcnJvckhh
bmRsZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgICAgIEV2ZW50KiBzYXZlZEV2ZW50
ID0gZ2xvYmFsT2JqZWN0LT5jdXJyZW50RXZlbnQoKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5z
ZXRDdXJyZW50RXZlbnQoZXZlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZGQyODIwNC4uY2M1NGZkNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMTQsNyArMTE0LDcg
QEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICB9CiAKICAgICBpZiAoY2FsbFR5cGUgIT0g
Q2FsbFR5cGU6Ok5vbmUpIHsKLSAgICAgICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gcHJvdGVjdCgq
dGhpcyk7CisgICAgICAgIFJlZjxKU0V2ZW50TGlzdGVuZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgICAgIGFyZ3MuYXBw
ZW5kKHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKaW5kZXggZDBhN2JiMC4uZmVl
OTc2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNh
bGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2Fs
bGJhY2suY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSlNNdXRhdGlvbkNhbGxiYWNrOjpjYWxs
KGNvbnN0IFZlY3RvcjxSZWY8TXV0YXRpb25SZWNvcmQ+PiYgbXV0YXRpb25zLCBNdXRhCiAgICAg
aWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8SlNN
dXRhdGlvbkNhbGxiYWNrPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNNdXRhdGlvbkNhbGxi
YWNrPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNv
bGF0ZWRXb3JsZC0+dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwCmluZGV4IDAxYjUzNjMuLjU0NzU2YjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcApAQCAtNDAs
NyArNDAsNyBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogLy8gYm9vbGVhbi4KIHVpbnQxNl90IEpT
Tm9kZUZpbHRlcjo6YWNjZXB0Tm9kZShOb2RlKiBub2RlKQogewotICAgIFJlZjxKU05vZGVGaWx0
ZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU05vZGVGaWx0ZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+
dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6
ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwCmluZGV4IGY2ZDJmNmUuLmU5MGEyZGMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMjgw
MCw4ICsyODAwLDggQEAgdm9pZCBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OndyaXRlQmxvYnNUb0Rp
c2tGb3JJbmRleGVkREIoc3RkOjpmdW5jdGlvbjx2b2lkIChjb24KICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIEFTU0VSVChoYXNCbG9iVVJMcygpKTsKIAotICAgIFJlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBibG9iUmVnaXN0cnkoKS53
cml0ZUJsb2JzVG9UZW1wb3JhcnlGaWxlcyhtX2Jsb2JVUkxzLCBbY29tcGxldGlvbkhhbmRsZXIs
IHRoaXMsIHByb3RlY3Rvcl0oY29uc3QgVmVjdG9yPFN0cmluZz4mIGJsb2JGaWxlUGF0aHMpIHsK
KyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMs
IFtjb21wbGV0aW9uSGFuZGxlciwgdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3QgVmVjdG9yPFN0
cmluZz4mIGJsb2JGaWxlUGF0aHMpIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAogICAgICAgICBpZiAoYmxvYkZpbGVQYXRocy5pc0VtcHR5KCkpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggZTE1YWU5
NC4uN2Y4N2IwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KQEAgLTQwNTQsNyArNDA1NCw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxi
YWNrSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCBAYXJnc0No
ZWNrKSBpZiBAYXJnc0NoZWNrOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAg
aWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKVxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG5cbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3QoKnRoaXMpO1xuXG4iKTsKKyAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIFJlZjwkY2xhc3NOYW1lPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTtcblxuIik7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTtcblxuIik7
CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBFeGVjU3RhdGUqIHN0YXRlID0g
bV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpO1xuIik7CiAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzO1xuIik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvcnVudGltZV9yb290LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCmluZGV4IGE2MWQxZDMuLmYzMDkyMjAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCkBAIC0yMDAsNyArMjAwLDcg
QEAgdm9pZCBSb290T2JqZWN0OjpmaW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhh
bmRsZSwgdm9pZCopCiB7CiAgICAgUnVudGltZU9iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8
UnVudGltZU9iamVjdCo+KGhhbmRsZS5zbG90KCktPmFzQ2VsbCgpKTsKIAotICAgIFJlZjxSb290
T2JqZWN0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Um9vdE9iamVjdD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgb2JqZWN0LT5pbnZhbGlkYXRlKCk7CiAgICAgd2Vha1JlbW92ZShtX3J1
bnRpbWVPYmplY3RzLCBvYmplY3QsIG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFNlbGVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250
U2VsZWN0b3IuY3BwCmluZGV4IDk3ZTQ0NTAuLmU4YjIxODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0
b3I6OmJlZ2luTG9hZFRpbWVyRmlyZWQoKQogICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcCht
X2ZvbnRzVG9CZWdpbkxvYWRpbmcpOwogCiAgICAgLy8gQ1NTRm9udFNlbGVjdG9yIGNvdWxkIGdl
dCBkZWxldGVkIHZpYSBiZWdpbkxvYWRJZk5lZWRlZCgpIG9yIGxvYWREb25lKCkgdW5sZXNzIHBy
b3RlY3RlZC4KLSAgICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8Q1NTRm9udFNlbGVjdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIENhY2hlZFJl
c291cmNlTG9hZGVyJiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJl
c291cmNlTG9hZGVyKCk7CiAgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2lu
TG9hZGluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRl
eCAzZTMwMTQ5Li5mZjYzNzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVT
aGVldENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRl
bnRzLmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpjaGVj
a0xvYWRlZCgpCiAgICAgLy8gQXZvaWQgfHRoaXN8IGJlaW5nIGRlbGV0ZWQgYnkgc2NyaXB0cyB0
aGF0IHJ1biB2aWEKICAgICAvLyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3Jp
cHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82
NjIyMzAwPi4KLSAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBTdHls
ZVNoZWV0Q29udGVudHMqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOwogICAgIGlm
IChwYXJlbnRTaGVldCkgewogICAgICAgICBwYXJlbnRTaGVldC0+Y2hlY2tMb2FkZWQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA2MTc5NjE3Li4zYzBkMmE4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZvaWQgQ2hh
cmFjdGVyRGF0YTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKG1fZGF0YSA9
PSBub25OdWxsRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPENoYXJhY3RlckRhdGE+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxDaGFyYWN0ZXJEYXRhPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IGxlbmd0aCgpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggOWUyM2Q5Yy4uMGYyZjc2NCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBAIGJvb2wgQ29udGFpbmVy
Tm9kZTo6aW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0NoaWxkLCBOb2RlKiByZWZDaGlsZCwgRXhjZXB0
aW9uQ29kZSYKICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVm
ZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAgICBBU1NFUlQocmVmQ291bnQoKSB8
fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCi0gICAgUmVmPENvbnRhaW5lck5vZGU+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIGVjID0gMDsKIApAQCAtMzg2LDcgKzM4Niw3IEBAIGJvb2wgQ29udGFpbmVyTm9k
ZTo6cmVwbGFjZUNoaWxkKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBvbGRDaGlsZCwgRXhjZXB0aW9u
Q29kZSYKICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVj
dCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAgICBBU1NFUlQocmVmQ291bnQoKSB8fCBw
YXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCi0gICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
IAogICAgIGVjID0gMDsKIApAQCAtNTA0LDcgKzUwNCw3IEBAIGJvb2wgQ29udGFpbmVyTm9kZTo6
cmVtb3ZlQ2hpbGQoTm9kZSYgb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAgIC8vIElm
IGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0
YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9z
dE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMgPSAwOwog
CkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigp
CiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBjb250YWluZXIgbm9kZSBjYW4gYmUgcmVt
b3ZlZCBmcm9tIGV2ZW50IGhhbmRsZXJzLgotICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICAvLyBleGNsdWRlIHRoaXMgbm9kZSB3aGVuIGxvb2tpbmcgZm9yIHJlbW92ZWQgZm9jdXNl
ZE5vZGUgc2luY2Ugb25seSBjaGlsZHJlbiB3aWxsIGJlIHJlbW92ZWQKICAgICBkb2N1bWVudCgp
LnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKHRoaXMsIHRydWUpOwpAQCAtNjQ5LDcgKzY0OSw3
IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4oKQogCiBib29sIENvbnRhaW5l
ck5vZGU6OmFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPENvbnRhaW5l
ck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gQ2hlY2sgdGhhdCB0aGlzIG5v
ZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVk
IGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA1Zjc3MGFlLi4yZWQyNTBmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCkBAIC0yNjk0LDcgKzI2OTQsNyBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdENsb3NlKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ2FsbCB0byBkaXNwYXRjaFdpbmRvd0xvYWRFdmVu
dCBjYW4gYmxvdyB1cyBmcm9tIHVuZGVybmVhdGguCi0gICAgUmVmPERvY3VtZW50PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
bV9wcm9jZXNzaW5nTG9hZEV2ZW50ID0gdHJ1ZTsKIApAQCAtNTkyNyw3ICs1OTI3LDcgQEAgdm9p
ZCBEb2N1bWVudDo6ZnVsbFNjcmVlbkNoYW5nZURlbGF5VGltZXJGaXJlZCgpCiAgICAgLy8gU2lu
Y2Ugd2UgZGlzcGF0Y2ggZXZlbnRzIGluIHRoaXMgZnVuY3Rpb24sIGl0J3MgcG9zc2libGUgdGhh
dCB0aGUKICAgICAvLyBkb2N1bWVudCB3aWxsIGJlIGRldGFjaGVkIGFuZCBHQydkLiBXZSBwcm90
ZWN0IGl0IGhlcmUgdG8gbWFrZSBzdXJlIHdlCiAgICAgLy8gY2FuIGZpbmlzaCB0aGUgZnVuY3Rp
b24gc3VjY2Vzc2Z1bGx5LgotICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPERvY3VtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBEZXF1ZTxSZWZQdHI8Tm9k
ZT4+IGNoYW5nZVF1ZXVlOwogICAgIG1fZnVsbFNjcmVlbkNoYW5nZUV2ZW50VGFyZ2V0UXVldWUu
c3dhcChjaGFuZ2VRdWV1ZSk7CiAgICAgRGVxdWU8UmVmUHRyPE5vZGU+PiBlcnJvclF1ZXVlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggODY5NWM1OS4uZWMyMTA5OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgYm9vbCBFdmVudFRh
cmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCkKICAgICAgICAgCiB2b2lkIEV2
ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMoRXZlbnQmIGV2ZW50LCBFdmVudFRhcmdldERh
dGEqIGQsIEV2ZW50TGlzdGVuZXJWZWN0b3ImIGVudHJ5KQogewotICAgIFJlZjxFdmVudFRhcmdl
dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIC8vIEZpcmUgYWxsIGxpc3RlbmVycyByZWdpc3RlcmVkIGZvciB0aGlzIGV2
ZW50LiBEb24ndCBmaXJlIGxpc3RlbmVycyByZW1vdmVkIGR1cmluZyBldmVudCBkaXNwYXRjaC4K
ICAgICAvLyBBbHNvLCBkb24ndCBmaXJlIGV2ZW50IGxpc3RlbmVycyBhZGRlZCBkdXJpbmcgZXZl
bnQgZGlzcGF0Y2guIENvbnZlbmllbnRseSwgYWxsIG5ldyBldmVudCBsaXN0ZW5lcnMgd2lsbCBi
ZSBhZGRlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDE5YmNmOGUuLmIyMTAwYWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKQEAgLTIyMzMsNyArMjIzMyw3IEBAIGJvb2wgTm9kZTo6ZGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAgICAgaWYgKCFkb2N1bWVudCgpLmhhc0xp
c3RlbmVyVHlwZShEb2N1bWVudDo6QkVGT1JFTE9BRF9MSVNURU5FUikpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCi0gICAgUmVmPE5vZGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOb2RlPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBSZWY8QmVmb3JlTG9hZEV2ZW50PiBiZWZvcmVMb2Fk
RXZlbnQgPSBCZWZvcmVMb2FkRXZlbnQ6OmNyZWF0ZShzb3VyY2VVUkwpOwogICAgIGRpc3BhdGNo
RXZlbnQoYmVmb3JlTG9hZEV2ZW50KTsKICAgICByZXR1cm4gIWJlZm9yZUxvYWRFdmVudC0+ZGVm
YXVsdFByZXZlbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQuY3BwCmluZGV4IDI1ZGEyZDYuLjFkZTk3NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ6OmRpc3BhdGNoTWVzc2FnZVBvcnRFdmVudHMoKQogewogICAg
IGNoZWNrQ29uc2lzdGVuY3koKTsKIAotICAgIFJlZjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAKICAgICAvLyBNYWtlIGEgZnJvemVuIGNvcHkgb2YgdGhlIHBvcnRzIHNv
IHdlIGNhbiBpdGVyYXRlIHdoaWxlIG5ldyBvbmVzIG1pZ2h0IGJlIGFkZGVkIG9yIGRlc3Ryb3ll
ZC4KICAgICBWZWN0b3I8TWVzc2FnZVBvcnQqPiBwb3NzaWJsZU1lc3NhZ2VQb3J0czsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5k
ZXggZmIyOTQ1MS4uZmQ3ZGNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1Njcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCB2b2lkIFNjcmlw
dGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVNjcmlwdGVkQW5pbWF0aW9ucyhkb3VibGUg
bW9ub3RvbmljVGltZQogCiAgICAgLy8gSW52b2tpbmcgY2FsbGJhY2tzIG1heSBkZXRhY2ggZWxl
bWVudHMgZnJvbSBvdXIgZG9jdW1lbnQsIHdoaWNoIGNsZWFycyB0aGUgZG9jdW1lbnQncwogICAg
IC8vIHJlZmVyZW5jZSB0byB1cywgc28gdGFrZSBhIGRlZmVuc2l2ZSByZWZlcmVuY2UuCi0gICAg
UmVmPFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBmb3IgKGF1dG8mIGNhbGxiYWNrIDogY2FsbGJhY2tzKSB7CiAgICAgICAgIGlmICghY2FsbGJh
Y2stPm1fZmlyZWRPckNhbmNlbGxlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0cmluZ0NhbGxiYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5j
cHAKaW5kZXggYjNmOTRjZS4uODI1M2I0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1N0cmluZ0NhbGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJh
Y2suY3BwCkBAIC0zOCw5ICszOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBTdHJp
bmdDYWxsYmFjazo6c2NoZWR1bGVDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGEpCiB7Ci0gICAgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBw
cm90ZWN0b3IodGhpcyk7Ci0gICAgY29udGV4dC0+cG9zdFRhc2soW3Byb3RlY3RvciwgZGF0YV0g
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7Ci0gICAgICAgIHByb3RlY3Rvci0+aGFuZGxlRXZl
bnQoZGF0YSk7CisgICAgUmVmUHRyPFN0cmluZ0NhbGxiYWNrPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgIGNvbnRleHQtPnBvc3RUYXNrKFtwcm90ZWN0ZWRUaGlzLCBkYXRhXSAoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+aGFuZGxlRXZlbnQoZGF0
YSk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVt
YmVkRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3Bw
CmluZGV4IDAxYjU5ZTcuLmIwNmY0OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVtYmVkRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRF
bGVtZW50LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHZvaWQgSFRNTEVtYmVkRWxlbWVudDo6dXBk
YXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAg
IFZlY3RvcjxTdHJpbmc+IHBhcmFtVmFsdWVzOwogICAgIHBhcmFtZXRlcnNGb3JQbHVnaW4ocGFy
YW1OYW1lcywgcGFyYW1WYWx1ZXMpOwogCi0gICAgUmVmPEhUTUxFbWJlZEVsZW1lbnQ+IHByb3Rl
Y3QoKnRoaXMpOyAvLyBMb2FkaW5nIHRoZSBwbHVnaW4gbWlnaHQgcmVtb3ZlIHVzIGZyb20gdGhl
IGRvY3VtZW50LgorICAgIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsgLy8gTG9hZGluZyB0aGUgcGx1Z2luIG1pZ2h0IHJlbW92ZSB1cyBmcm9tIHRoZSBkb2N1bWVu
dC4KICAgICBib29sIGJlZm9yZUxvYWRBbGxvd2VkTG9hZCA9IGd1YXJkZWREaXNwYXRjaEJlZm9y
ZUxvYWRFdmVudChtX3VybCk7CiAgICAgaWYgKCFiZWZvcmVMb2FkQWxsb3dlZExvYWQpIHsKICAg
ICAgICAgaWYgKGlzPFBsdWdpbkRvY3VtZW50Pihkb2N1bWVudCgpKSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggYWE0MGE0Ni4uMWY4
M2Y1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwCkBAIC00ODAsNyArNDgwLDcgQEAgYm9vbCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVj
a1ZhbGlkaXR5KFZlY3RvcjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4KICAgICBpZiAo
IXdpbGxWYWxpZGF0ZSgpIHx8IGlzVmFsaWRGb3JtQ29udHJvbEVsZW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgLy8gQW4gZXZlbnQgaGFuZGxlciBjYW4gZGVyZWYgdGhpcyBvYmpl
Y3QuCi0gICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBS
ZWY8RG9jdW1lbnQ+IG9yaWdpbmFsRG9jdW1lbnQoZG9jdW1lbnQoKSk7CiAgICAgYm9vbCBuZWVk
c0RlZmF1bHRBY3Rpb24gPSBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmludmFsaWRFdmVudCwgZmFsc2UsIHRydWUpKTsKICAgICBpZiAobmVlZHNEZWZhdWx0QWN0aW9u
ICYmIHVuaGFuZGxlZEludmFsaWRDb250cm9scyAmJiBpbkRvY3VtZW50KCkgJiYgb3JpZ2luYWxE
b2N1bWVudC5wdHIoKSA9PSAmZG9jdW1lbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAppbmRleCA4Y2VjZDJlLi44ZGQzNzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCkBAIC0yMzYsNyArMjM2LDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1l
bnQ6OnZhbGlkYXRlSW50ZXJhY3RpdmVseShFdmVudCogZXZlbnQpCiAgICAgLy8gaGFzICFyZW5k
ZXJlcigpLT5uZWVkc0xheW91dCgpIGFzc2VydGlvbi4KICAgICBkb2N1bWVudCgpLnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgUmVmPEhUTUxGb3JtRWxlbWVu
dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKICAgICAvLyBGb2N1cyBvbiB0aGUgZmlyc3QgZm9jdXNhYmxlIGNvbnRyb2wg
YW5kIHNob3cgYSB2YWxpZGF0aW9uIG1lc3NhZ2UuCiAgICAgZm9yIChhdXRvJiBjb250cm9sIDog
dW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKSB7CkBAIC0yODUsNyArMjg1LDcgQEAgdm9pZCBIVE1M
Rm9ybUVsZW1lbnQ6OnByZXBhcmVGb3JTdWJtaXNzaW9uKEV2ZW50KiBldmVudCkKICAgICBSZWZQ
dHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBGb3JtU3RhdGU6OmNyZWF0ZSh0aGlzLCBjb250cm9s
TmFtZXNBbmRWYWx1ZXMsICZkb2N1bWVudCgpLCBOb3RTdWJtaXR0ZWRCeUphdmFTY3JpcHQpOwog
ICAgIGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaFdpbGxTZW5kU3VibWl0RXZlbnQo
Zm9ybVN0YXRlLnJlbGVhc2UoKSk7CiAKLSAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
ICAgICAvLyBFdmVudCBoYW5kbGluZyBjYW4gcmVzdWx0IGluIG1fc2hvdWxkU3VibWl0IGJlY29t
aW5nIHRydWUsIHJlZ2FyZGxlc3Mgb2YgZGlzcGF0Y2hFdmVudCgpIHJldHVybiB2YWx1ZS4KICAg
ICBpZiAoZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5zdWJtaXRFdmVu
dCwgdHJ1ZSwgdHJ1ZSkpKQogICAgICAgICBtX3Nob3VsZFN1Ym1pdCA9IHRydWU7CkBAIC0zNTYs
NyArMzU2LDcgQEAgdm9pZCBIVE1MRm9ybUVsZW1lbnQ6OnN1Ym1pdChFdmVudCogZXZlbnQsIGJv
b2wgYWN0aXZhdGVTdWJtaXRCdXR0b24sIGJvb2wgcHJvY2UKICAgICAgICAgZmlyc3RTdWNjZXNz
ZnVsU3VibWl0QnV0dG9uLT5zZXRBY3RpdmF0ZWRTdWJtaXQodHJ1ZSk7CiAKICAgICBMb2NrSGlz
dG9yeSBsb2NrSGlzdG9yeSA9IHByb2Nlc3NpbmdVc2VyR2VzdHVyZSA/IExvY2tIaXN0b3J5OjpO
byA6IExvY2tIaXN0b3J5OjpZZXM7Ci0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdCgq
dGhpcyk7IC8vIEZvcm0gc3VibWlzc2lvbiBjYW4gZXhlY3V0ZSBhcmJpdGFyeSBKYXZhU2NyaXB0
LgorICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBGb3Jt
IHN1Ym1pc3Npb24gY2FuIGV4ZWN1dGUgYXJiaXRhcnkgSmF2YVNjcmlwdC4KICAgICBmcmFtZS0+
bG9hZGVyKCkuc3VibWl0Rm9ybShGb3JtU3VibWlzc2lvbjo6Y3JlYXRlKHRoaXMsIG1fYXR0cmli
dXRlcywgZXZlbnQsIGxvY2tIaXN0b3J5LCBmb3JtU3VibWlzc2lvblRyaWdnZXIpKTsKIAogICAg
IGlmIChuZWVkQnV0dG9uQWN0aXZhdGlvbiAmJiBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24p
CkBAIC03MjAsNyArNzIwLDcgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmNoZWNrVmFsaWRpdHko
KQogCiBib29sIEhUTUxGb3JtRWxlbWVudDo6Y2hlY2tJbnZhbGlkQ29udHJvbHNBbmRDb2xsZWN0
VW5oYW5kbGVkKFZlY3RvcjxSZWZQdHI8Rm9ybUFzc29jaWF0ZWRFbGVtZW50Pj4mIHVuaGFuZGxl
ZEludmFsaWRDb250cm9scykKIHsKLSAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAg
ICAvLyBDb3B5IG1fYXNzb2NpYXRlZEVsZW1lbnRzIGJlY2F1c2UgZXZlbnQgaGFuZGxlcnMgY2Fs
bGVkIGZyb20KICAgICAvLyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkg
bWlnaHQgY2hhbmdlIG1fYXNzb2NpYXRlZEVsZW1lbnRzLgogICAgIFZlY3RvcjxSZWZQdHI8Rm9y
bUFzc29jaWF0ZWRFbGVtZW50Pj4gZWxlbWVudHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcAppbmRleCA1ZmEyNWY3Li5hYzJlMDMzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKQEAgLTk4OSw3ICs5ODksNyBAQCB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUsIFRleHRGaWVsZEV2ZW50QmVo
YXZpb3IgZXZlbgogICAgIGlmICghbV9pbnB1dFR5cGUtPmNhblNldFZhbHVlKHZhbHVlKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgUmVmPEhUTUxJbnB1dEVsZW1lbnQ+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBF
dmVudFF1ZXVlU2NvcGUgc2NvcGU7CiAgICAgU3RyaW5nIHNhbml0aXplZFZhbHVlID0gc2FuaXRp
emVWYWx1ZSh2YWx1ZSk7CiAgICAgYm9vbCB2YWx1ZUNoYW5nZWQgPSBzYW5pdGl6ZWRWYWx1ZSAh
PSB0aGlzLT52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCmlu
ZGV4IDU4N2NiMDUuLmFlNjI5ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVu
dC5jcHAKQEAgLTM0Miw3ICszNDIsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6c2V0Q1NTU3R5
bGVTaGVldChjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFVSTCYgYmFzZVVSTCwgYwogICAgICAg
ICByZXR1cm47CiAKICAgICAvLyBDb21wbGV0aW5nIHRoZSBzaGVldCBsb2FkIG1heSBjYXVzZSBz
Y3JpcHRzIHRvIGV4ZWN1dGUuCi0gICAgUmVmPEhUTUxMaW5rRWxlbWVudD4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPEhUTUxMaW5rRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQoZG9jdW1lbnQoKSwgYmFzZVVSTCwgY2hh
cnNldCk7CiAgICAgYXV0byBjYWNoZVBvbGljeSA9IGZyYW1lLT5sb2FkZXIoKS5zdWJyZXNvdXJj
ZUNhY2hlUG9saWN5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApp
bmRleCBiODgzZjY3Li5kNDQyMWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKQEAgLTkzNiw3ICs5MzYsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om5vdGlm
eUFib3V0UGxheWluZygpCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGVuZGluZ0FjdGlvblRp
bWVyRmlyZWQoKQogewotICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsg
Ly8gbG9hZE5leHRTb3VyY2VDaGlsZCBtYXkgZmlyZSAnYmVmb3JlbG9hZCcsIHdoaWNoIGNhbiBt
YWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgorICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gbG9hZE5leHRTb3VyY2VDaGlsZCBtYXkgZmlyZSAnYmVm
b3JlbG9hZCcsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIFBl
bmRpbmdBY3Rpb25GbGFncyBwZW5kaW5nQWN0aW9ucyA9IG1fcGVuZGluZ0FjdGlvbkZsYWdzOwog
ICAgIG1fcGVuZGluZ0FjdGlvbkZsYWdzID0gMDsKIApAQCAtMTAzOCw3ICsxMDM4LDcgQEAgZG91
YmxlIEhUTUxNZWRpYUVsZW1lbnQ6OmdldFN0YXJ0RGF0ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTE1l
ZGlhRWxlbWVudDo6bG9hZCgpCiB7Ci0gICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3Qo
KnRoaXMpOyAvLyBsb2FkSW50ZXJuYWwgbWF5IHJlc3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVu
dCwgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCisgICAgUmVmPEhUTUxN
ZWRpYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBsb2FkSW50ZXJuYWwgbWF5IHJl
c3VsdCBpbiBhICdiZWZvcmVsb2FkJyBldmVudCwgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERP
TSBtdXRhdGlvbnMuCiAgICAgCiAgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZCglcCkiLCB0aGlzKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT2JqZWN0RWxlbWVu
dC5jcHAKaW5kZXggNzk0YjEyMy4uMzVhMzNhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
T2JqZWN0RWxlbWVudC5jcHAKQEAgLTMyMCw3ICszMjAsNyBAQCB2b2lkIEhUTUxPYmplY3RFbGVt
ZW50Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24gcGx1Z2luQ3JlYXRpb25PcHRp
b24pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWY8SFRNTE9iamVjdEVsZW1lbnQ+
IHByb3RlY3QoKnRoaXMpOyAvLyBiZWZvcmVsb2FkIGFuZCBwbHVnaW4gbG9hZGluZyBjYW4gbWFr
ZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KKyAgICBSZWY8SFRNTE9iamVjdEVsZW1lbnQ+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBiZWZvcmVsb2FkIGFuZCBwbHVnaW4gbG9hZGluZyBjYW4g
bWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICBib29sIGJlZm9yZUxvYWRBbGxvd2Vk
TG9hZCA9IGd1YXJkZWREaXNwYXRjaEJlZm9yZUxvYWRFdmVudCh1cmwpOwogICAgIGlmICghcmVu
ZGVyZXIoKSkgLy8gRG8gbm90IGxvYWQgdGhlIHBsdWdpbiBpZiBiZWZvcmVsb2FkIHJlbW92ZWQg
dGhpcyBlbGVtZW50IG9yIGl0cyByZW5kZXJlci4KICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAppbmRleCAzNDNhZDQxLi44N2ZiNjc0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcApAQCAtMTA3LDcgKzEw
Nyw3IEBAIFN0cmluZyBIVE1MT3B0aW9uRWxlbWVudDo6dGV4dCgpIGNvbnN0CiAKIHZvaWQgSFRN
TE9wdGlvbkVsZW1lbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nICZ0ZXh0LCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRpb25F
dmVudHMoKnRoaXMpOworICAgIFJlZjxIVE1MT3B0aW9uRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICAvLyBDaGFuZ2luZyB0aGUgdGV4dCBjYXVzZXMgYSByZWNhbGMgb2YgYSBz
ZWxlY3QncyBpdGVtcywgd2hpY2ggd2lsbCByZXNldCB0aGUgc2VsZWN0ZWQKICAgICAvLyBpbmRl
eCB0byB0aGUgZmlyc3QgaXRlbSBpZiB0aGUgc2VsZWN0IGlzIHNpbmdsZSBzZWxlY3Rpb24gd2l0
aCBhIG1lbnUgbGlzdC4gV2UgYXR0ZW1wdCB0bwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcAppbmRleCBkM2EyNjhlLi4zYjEwZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcApAQCAtODEsNyArODEsNyBAQCB2b2lkIEhUTUxTY3Jp
cHRFbGVtZW50OjpmaW5pc2hlZEluc2VydGluZ1N1YnRyZWUoKQogCiB2b2lkIEhUTUxTY3JpcHRF
bGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmPEhUTUxTY3Jp
cHRFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKKyAgICBSZWY8SFRN
TFNjcmlwdEVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKGhhc09uZUNo
aWxkKCkgJiYgaXM8VGV4dD4oKmZpcnN0Q2hpbGQoKSkpIHsKICAgICAgICAgZG93bmNhc3Q8VGV4
dD4oKmZpcnN0Q2hpbGQoKSkuc2V0RGF0YSh2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcAppbmRleCA3NDkwZDlhLi4xZjUyNGZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKQEAgLTIxMSw3ICsyMTEsNyBAQCBSZWZQdHI8SFRN
TEVsZW1lbnQ+IEhUTUxUYWJsZUVsZW1lbnQ6Omluc2VydFJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICBSZWY8SFRNTFRhYmxl
RWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmPEhUTUxU
YWJsZUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgUmVmUHRyPEhUTUxUYWJs
ZVJvd0VsZW1lbnQ+IGxhc3RSb3cgPSAwOwogICAgIFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50
PiByb3cgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
aW5kZXggZDVjZDgyZC4uMjU1YmVkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEFyZWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCkBAIC00MDIsNyArNDAyLDcgQEAgU3RyaW5nIEhUTUxUZXh0QXJlYUVs
ZW1lbnQ6OmRlZmF1bHRWYWx1ZSgpIGNvbnN0CiAKIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6
c2V0RGVmYXVsdFZhbHVlKGNvbnN0IFN0cmluZyYgZGVmYXVsdFZhbHVlKQogewotICAgIFJlZjxI
VE1MVGV4dEFyZWFFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKKyAg
ICBSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAv
LyBUbyBwcmVzZXJ2ZSBjb21tZW50cywgcmVtb3ZlIG9ubHkgdGhlIHRleHQgbm9kZXMsIHRoZW4g
YWRkIGEgc2luZ2xlIHRleHQgbm9kZS4KICAgICBWZWN0b3I8UmVmPFRleHQ+PiB0ZXh0Tm9kZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAppbmRleCA2MjZmMzE5Li5l
MjZmYTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgU3RyaW5nV2l0aERpcmVjdGlvbiBIVE1MVGl0bGVFbGVtZW50Ojpjb21wdXRl
ZFRleHRXaXRoRGlyZWN0aW9uKCkKIAogdm9pZCBIVE1MVGl0bGVFbGVtZW50OjpzZXRUZXh0KGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmPEhUTUxUaXRsZUVsZW1lbnQ+IHByb3RlY3RG
cm9tTXV0YXRpb25FdmVudHMoKnRoaXMpOworICAgIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAKICAgICBpZiAoIXZhbHVlLmlzRW1wdHkoKSAmJiBoYXNP
bmVDaGlsZCgpICYmIGlzPFRleHQ+KCpmaXJzdENoaWxkKCkpKSB7CiAgICAgICAgIGRvd25jYXN0
PFRleHQ+KCpmaXJzdENoaWxkKCkpLnNldERhdGEodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMmU0OGFkNC4uM2Fh
ZDliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQ
YXJzZXIuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnBy
ZXBhcmVUb1N0b3BQYXJzaW5nKCkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRo
aXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3
ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3Vt
ZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE5PVEU6IFRoaXMgcHVtcCBzaG91bGQgb25s
eSBldmVyIGVtaXQgYnVmZmVyZWQgY2hhcmFjdGVyIHRva2VucywKICAgICAvLyBzbyBGb3JjZVN5
bmNocm9ub3VzIHZzLiBBbGxvd1lpZWxkIHNob3VsZCBiZSBtZWFuaW5nbGVzcy4KQEAgLTE3OCw3
ICsxNzgsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyWWll
bGQoKQogewogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJl
IGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3Vy
ZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSBoZXJlIHVubGVzcyB3ZSBjYW4gcHVt
cCBpbW1lZGlhdGVseS4KICAgICAvLyBDYWxsIHB1bXBUb2tlbml6ZXIoKSBkaXJlY3RseSBzbyB0
aGF0IEFTU0VSVFMgd2lsbCBmaXJlIGlmIHdlJ3JlIHdyb25nLgpAQCAtMzQwLDcgKzM0MCw3IEBA
IHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjppbnNlcnQoY29uc3QgU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UpCiAKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBi
ZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1
cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICBTZWdtZW50ZWRTdHJpbmcgZXhjbHVkZWRMaW5lTnVtYmVyU291cmNlKHNv
dXJjZSk7CiAgICAgZXhjbHVkZWRMaW5lTnVtYmVyU291cmNlLnNldEV4Y2x1ZGVMaW5lTnVtYmVy
cygpOwpAQCAtMzY2LDcgKzM2Niw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjphcHBlbmQo
UmVmUHRyPFN0cmluZ0ltcGw+JiYgaW5wdXRTb3VyY2UpCiAKICAgICAvLyBwdW1wVG9rZW5pemVy
IGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwK
ICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAg
UmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1
bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBTdHJpbmcgc291cmNlKFdU
Rk1vdmUoaW5wdXRTb3VyY2UpKTsKIApAQCAtNDkzLDcgKzQ5Myw3IEBAIHZvaWQgSFRNTERvY3Vt
ZW50UGFyc2VyOjpyZXN1bWVQYXJzaW5nQWZ0ZXJTY3JpcHRFeGVjdXRpb24oKQogCiAgICAgLy8g
cHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0
aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0
ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbV9p
bnNlcnRpb25QcmVsb2FkU2Nhbm5lciA9IG51bGxwdHI7CiAgICAgcHVtcFRva2VuaXplcklmUG9z
c2libGUoQWxsb3dZaWVsZCk7CkBAIC01MjUsNyArNTI1LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSkKIHsK
ICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hl
ZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNu
J3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBBU1NFUlQobV9zY3JpcHRSdW5uZXIpOwogICAgIEFTU0VSVCghaXNFeGVjdXRpbmdTY3Jp
cHQoKSk7CkBAIC01NTIsNyArNTUyLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmV4ZWN1
dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIg
Y2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBS
ZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3Vt
ZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBtX3NjcmlwdFJ1bm5lci0+ZXhl
Y3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKTsKICAgICBpZiAoIWlzV2FpdGluZ0Zv
clNjcmlwdHMoKSkKICAgICAgICAgcmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNw
cAppbmRleCBmZWE1ZmQyLi5hNjEwODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKQEAgLTI0Myw3ICsyNDMsNyBAQCBFbGVtZW50
KiBTbGlkZXJUaHVtYkVsZW1lbnQ6OmZvY3VzRGVsZWdhdGUoKQogCiB2b2lkIFNsaWRlclRodW1i
RWxlbWVudDo6ZHJhZ0Zyb20oY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KQogewotICAgIFJlZjxT
bGlkZXJUaHVtYkVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTbGlkZXJUaHVtYkVs
ZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHNldFBvc2l0aW9uRnJvbVBvaW50KHBv
aW50KTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIHN0YXJ0RHJhZ2dpbmcoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAppbmRleCBmODI3
N2EwLi5lY2RiNWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGlu
QnV0dG9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1
dHRvbkVsZW1lbnQuY3BwCkBAIC05NCw3ICs5NCw3IEBAIHZvaWQgU3BpbkJ1dHRvbkVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogICAgICAgICAgICAgLy8gVGhlIGZv
bGxvd2luZyBmdW5jdGlvbnMgb2YgSFRNTElucHV0RWxlbWVudCBtYXkgcnVuIEphdmFTY3JpcHQK
ICAgICAgICAgICAgIC8vIGNvZGUgd2hpY2ggZGV0YWNoZXMgdGhpcyBzaGFkb3cgbm9kZS4gV2Ug
bmVlZCB0byB0YWtlIGEgcmVmZXJlbmNlCiAgICAgICAgICAgICAvLyBhbmQgY2hlY2sgcmVuZGVy
ZXIoKSBhZnRlciBzdWNoIGZ1bmN0aW9uIGNhbGxzLgotICAgICAgICAgICAgUmVmPFNwaW5CdXR0
b25FbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgICAgIFJlZjxTcGluQnV0dG9uRWxl
bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgICAgICAgICBpZiAobV9zcGluQnV0dG9u
T3duZXIpCiAgICAgICAgICAgICAgICAgbV9zcGluQnV0dG9uT3duZXItPmZvY3VzQW5kU2VsZWN0
U3BpbkJ1dHRvbk93bmVyKCk7CiAgICAgICAgICAgICBpZiAocmVuZGVyZXIoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwCmluZGV4IGYzNWZlZDkuLjQ1OWRmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAg
LTk3LDcgKzk3LDcgQEAgcHVibGljOgogCiAgICAgICAgIC8vIERpc3BhdGNoaW5nIGEgbWVzc2Fn
ZSBjYW4gcG9zc2libHkgY2xvc2UgdGhlIGZyb250ZW5kIGFuZCBkZXN0cm95CiAgICAgICAgIC8v
IHRoZSBvd25pbmcgZnJvbnRlbmQgY2xpZW50LCBzbyBrZWVwIGEgcHJvdGVjdG9yIHJlZmVyZW5j
ZSBoZXJlLgotICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFzaz4gcHJvdGVj
dCgqdGhpcyk7CisgICAgICAgIFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hUYXNrPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgICAgICBpZiAoIW1fbWVzc2FnZXMuaXNFbXB0eSgpKQog
ICAgICAgICAgICAgbV9pbnNwZWN0ZWRQYWdlQ29udHJvbGxlci0+ZGlzcGF0Y2hNZXNzYWdlRnJv
bUZyb250ZW5kKG1fbWVzc2FnZXMudGFrZUZpcnN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKaW5kZXggNmYyZGVkZC4uYWZjNDc2YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCkBAIC0yNzYsNyArMjc2LDcgQEAgdm9pZCBEb2N1
bWVudExvYWRlcjo6bWFpblJlY2VpdmVkRXJyb3IoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3Ip
CiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGluZygpCiB7CiAgICAgUmVmUHRyPEZyYW1l
PiBwcm90ZWN0RnJhbWUobV9mcmFtZSk7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0
TG9hZGVyKCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgLy8gSW4gc29tZSByYXJlIGNhc2VzLCBjYWxsaW5nIEZyYW1lTG9hZGVyOjpz
dG9wTG9hZGluZyBjb3VsZCBjYXVzZSBpc0xvYWRpbmcoKSB0byByZXR1cm4gZmFsc2UuCiAgICAg
Ly8gKFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZXJlJ3MgYSBzaW5nbGUgWE1MSHR0cFJlcXVlc3Qg
Y3VycmVudGx5IGxvYWRpbmcgYW5kIHN0b3BMb2FkaW5nIGNhdXNlcyBpdApAQCAtNDAwLDcgKzQw
MCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyhkb3VibGUgZmluaXNo
VGltZSkKICAgICBBU1NFUlQoIW1fZnJhbWUtPnBhZ2UoKS0+ZGVmZXJzTG9hZGluZygpIHx8IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aXNEZWJ1Z2dlclBhdXNlZChtX2ZyYW1lKSk7CiAjZW5k
aWYKIAotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERv
Y3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX2lkZW50aWZp
ZXJGb3JMb2FkV2l0aG91dFJlc291cmNlTG9hZGVyKSB7CiAgICAgICAgIC8vIEEgZGlkRmluaXNo
TG9hZGluZyBkZWxlZ2F0ZSBtaWdodCB0cnkgdG8gY2FuY2VsIHRoZSBsb2FkIChkZXNwaXRlIGl0
CkBAIC02MzcsNyArNjM3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICNlbmRpZgogCiAg
ICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgbV9tYWluUmVzb3VyY2UgPT0gcmVzb3VyY2UpOwot
ICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERvY3VtZW50
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBib29sIHdpbGxMb2FkRmFsbGJhY2sg
PSBtX2FwcGxpY2F0aW9uQ2FjaGVIb3N0LT5tYXliZUxvYWRGYWxsYmFja0Zvck1haW5SZXNwb25z
ZShyZXF1ZXN0KCksIHJlc3BvbnNlKTsKIAogICAgIC8vIFRoZSBtZW1vcnkgY2FjaGUgZG9lc24n
dCB1bmRlcnN0YW5kIHRoZSBhcHBsaWNhdGlvbiBjYWNoZSBvciBpdHMgY2FjaGluZyBydWxlcy4g
U28gaWYgYSBtYWluIHJlc291cmNlIGlzIHNlcnZlZApAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdExvYWQoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCkK
ICAgICAvLyBCb3RoIHVubG9hZGluZyB0aGUgb2xkIHBhZ2UgYW5kIHBhcnNpbmcgdGhlIG5ldyBw
YWdlIG1heSBleGVjdXRlIEphdmFTY3JpcHQgd2hpY2ggZGVzdHJveXMgdGhlIGRhdGFzb3VyY2UK
ICAgICAvLyBieSBzdGFydGluZyBhIG5ldyBsb2FkLCBzbyByZXRhaW4gdGVtcG9yYXJpbHkuCiAg
ICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0RnJhbWUobV9mcmFtZSk7Ci0gICAgUmVmPERvY3VtZW50
TG9hZGVyPiBwcm90ZWN0TG9hZGVyKCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgY29tbWl0SWZSZWFkeSgpOwogICAgIEZyYW1lTG9h
ZGVyKiBmcmFtZUxvYWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigpOwpAQCAtMTAw
MCw3ICsxMDAwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZyYW1lKCkKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZyYW1lLCAiZGV0YWNoRnJvbUZyYW1lKCkgaXMg
YmVpbmcgY2FsbGVkIG9uIGEgRG9jdW1lbnRMb2FkZXIgdGhhdCBoYXMgbmV2ZXIgYXR0YWNoZWQg
dG8gYW55IEZyYW1lIik7CiAjZW5kaWYKICAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RGcmFtZSht
X2ZyYW1lKTsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RMb2FkZXIoKnRoaXMpOwor
ICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBJ
dCBuZXZlciBtYWtlcyBzZW5zZSB0byBoYXZlIGEgZG9jdW1lbnQgbG9hZGVyIHRoYXQgaXMgZGV0
YWNoZWQgZnJvbSBpdHMKICAgICAvLyBmcmFtZSBoYXZlIGFueSBsb2FkcyBhY3RpdmUsIHNvIGtp
bGwgYWxsIHRoZSBsb2Fkcy4KQEAgLTE0NzUsNyArMTQ3NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpCiAgICAgQVNTRVJUKCF0aW1pbmcoKS5mZXRj
aFN0YXJ0KCkpOwogICAgIHRpbWluZygpLm1hcmtGZXRjaFN0YXJ0KCk7CiAKLSAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QoKnRoaXMpOyAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgZGVh
bGxvY2F0ZSB0aGUgcHJvdmlzaW9uYWwgbG9hZGVyICh3aGljaCBtYXkgYmUgdXMpIGlmIGl0IGNh
bmNlbHMgdGhlIGxvYWQuCisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGRlYWxsb2NhdGUgdGhlIHByb3Zpc2lvbmFs
IGxvYWRlciAod2hpY2ggbWF5IGJlIHVzKSBpZiBpdCBjYW5jZWxzIHRoZSBsb2FkLgogICAgIHdp
bGxTZW5kUmVxdWVzdChtX3JlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UoKSk7CiAKICAgICAvLyB3
aWxsU2VuZFJlcXVlc3QoKSBtYXkgbGVhZCB0byBvdXIgRnJhbWUgYmVpbmcgZGV0YWNoZWQgb3Ig
Y2FuY2VsbGluZyB0aGUgbG9hZCB2aWEgbnVsbGluZyB0aGUgUmVzb3VyY2VSZXF1ZXN0LgpAQCAt
MTU1NSw3ICsxNTU1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsUG9saWN5Q2hlY2tJ
Zk5lZWRlZCgpCiAKIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbE1haW5SZXNvdXJjZUxvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYgcmVzb3VyY2VFcnJvcikKIHsKLSAgICBSZWY8RG9jdW1lbnRM
b2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgUmVzb3VyY2VFcnJvciBlcnJvciA9IHJlc291cmNlRXJyb3IuaXNO
dWxsKCkgPyBmcmFtZUxvYWRlcigpLT5jYW5jZWxsZWRFcnJvcihtX3JlcXVlc3QpIDogcmVzb3Vy
Y2VFcnJvcjsKIAogICAgIG1fZGF0YUxvYWRUaW1lci5zdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDVmNWVmZDgu
LjkwZTRiZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuY3BwCkBAIC0xNTUsNyArMTU1LDcgQEAgRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjp+RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKCkKIAogdm9pZCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6OmNhbmNlbCgpCiB7Ci0gICAgUmVmPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBDYW5jZWwgY2FuIHJlLWVudGVyIGFuZCBtX3Jlc291
cmNlIG1pZ2h0IGJlIG51bGwgaGVyZSBhcyBhIHJlc3VsdC4KICAgICBpZiAobV9jbGllbnQgJiYg
bV9yZXNvdXJjZSkgewpAQCAtMTkxLDcgKzE5MSw3IEBAIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgUmVzb3Vy
CiAgICAgQVNTRVJUKG1fY2xpZW50KTsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogICAgIGlmICghaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xp
Y3kocmVxdWVzdC51cmwoKSwgIXJlZGlyZWN0UmVzcG9uc2UuaXNOdWxsKCkpKSB7CiAgICAgICAg
IG1fY2xpZW50LT5kaWRGYWlsUmVkaXJlY3RDaGVjaygpOwogICAgICAgICByZXF1ZXN0ID0gUmVz
b3VyY2VSZXF1ZXN0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxv
YWRlci5jcHAKaW5kZXggMWU4M2IwNC4uYjdmZjM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtMTQwLDcgKzE0MCw3IEBAIHZvaWQgTWVk
aWFSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlUmVzCiAgICAgaWYgKCFtX2xvYWRlci0+ZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAg
UmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKCFtX2xv
YWRlci0+Y3Jvc3NPcmlnaW5Nb2RlKCkuaXNOdWxsKCkgJiYgIXJlc291cmNlLT5wYXNzZXNTYW1l
T3JpZ2luUG9saWN5Q2hlY2soKm1fbG9hZGVyLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBjb25zb2xl
TWVzc2FnZSgiQ3Jvc3Mtb3JpZ2luIG1lZGlhIHJlc291cmNlIGxvYWQgZGVuaWVkIGJ5IENyb3Nz
LU9yaWdpbiBSZXNvdXJjZSBTaGFyaW5nIHBvbGljeS4iKTsKICAgICAgICAgbV9sb2FkZXItPmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBjb25zb2xlTWVzc2FnZS5nZXQoKSk7CkBAIC0xNjAsNyArMTYwLDcg
QEAgYm9vbCBNZWRpYVJlc291cmNlOjpzaG91bGRDYWNoZVJlc3BvbnNlKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2UKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNl
LCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBw
cm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgcmV0dXJuIG1fY2xpZW50LT5zaG91bGRD
YWNoZVJlc3BvbnNlKCp0aGlzLCByZXNwb25zZSk7CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNzAs
NyArMTcwLDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgUmVzb3VyY2VSZXF1ZXN0JgogewogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVz
b3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+cmVkaXJl
Y3RSZWNlaXZlZCgqdGhpcywgcmVxdWVzdCwgcmVzcG9uc2UpOwogfQpAQCAtMTc5LDcgKzE3OSw3
IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVNlbnQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNl
LCB1bnNpZ25lZCBsb25nIGxvbmcgYnl0ZXNTCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJj
ZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4g
cHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhU2VudCgqdGhp
cywgYnl0ZXNTZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQpAQCAtMTg4LDcgKzE4OCw3IEBA
IHZvaWQgTWVkaWFSZXNvdXJjZTo6ZGF0YVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJj
ZSwgY29uc3QgY2hhciogZGF0YSwgaW50CiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwg
cmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJv
dGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1fY2xpZW50LT5kYXRhUmVjZWl2ZWQoKnRo
aXMsIGRhdGEsIGRhdGFMZW5ndGgpOwogfQpAQCAtMTk3LDcgKzE5Nyw3IEBAIHZvaWQgTWVkaWFS
ZXNvdXJjZTo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlKQogewogICAg
IEFTU0VSVChyZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRpYVJlc291
cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkgewogICAgICAgICBpZiAocmVzb3VyY2UtPmxv
YWRGYWlsZWRPckNhbmNlbGVkKCkpCiAgICAgICAgICAgICBtX2NsaWVudC0+bG9hZEZhaWxlZCgq
dGhpcywgcmVzb3VyY2UtPnJlc291cmNlRXJyb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCA3YzE5ZDNkLi5i
ODliNjAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlci5jcHAKQEAgLTkwLDExICs5MCwxMSBAQCBib29sIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjppbml0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKIAogdm9p
ZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVx
dWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlZGlyZWN0UmVzcG9uc2Us
IHN0ZDo6ZnVuY3Rpb248dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY2FsbGJhY2spCiB7Ci0g
ICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0KHRoaXMpOworICAg
IFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
IAotICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3QodGhpcywgV1RGTW92ZShyZXF1ZXN0KSwg
cmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3QsIHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrXShS
ZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkgeworICAgIG1fY2xpZW50LT53aWxsU2VuZFJlcXVlc3Qo
dGhpcywgV1RGTW92ZShyZXF1ZXN0KSwgcmVkaXJlY3RSZXNwb25zZSwgW3Byb3RlY3RlZFRoaXMs
IHJlZGlyZWN0UmVzcG9uc2UsIGNhbGxiYWNrXShSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCkgewog
ICAgICAgICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkpCi0gICAgICAgICAgICBwcm90ZWN0LT53aWxs
U2VuZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKKyAgICAgICAg
ICAgIHByb3RlY3RlZFRoaXMtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOwogCiAgICAgICAgIGNhbGxiYWNrKFdURk1vdmUocmVxdWVzdCkpOwogICAg
IH0pOwpAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6
OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zCiAKIHZvaWQg
TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVJlc3Bv
bnNlKHRoaXMsIHJlc3BvbnNlKTsKIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQgTmV0c2NhcGVQ
bHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVCdWZmZXIoUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGJ1ZmZlCiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVE
YXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0aCwgUGFzc1JlZlB0cjxTaGFy
ZWRCdWZmZXI+IGJ1ZmZlciwgbG9uZyBsb25nIGVuY29kZWREYXRhTGVuZ3RoLCBEYXRhUGF5bG9h
ZFR5cGUgZGF0YVBheWxvYWRUeXBlKQogewotICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZURh
dGEodGhpcywgYnVmZmVyID8gYnVmZmVyLT5kYXRhKCkgOiBkYXRhLCBidWZmZXIgPyBidWZmZXIt
PnNpemUoKSA6IGxlbmd0aCk7CiAKQEAgLTE0OCw3ICsxNDgsNyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEs
IGludCBsZQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2Fk
aW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogewotICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG5vdGlmeURvbmUoKTsKIApAQCAtMTU4LDcg
KzE1OCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZEZpbmlzaExvYWRp
bmcoZG91YmxlIGZpbmlzaFRpbWUpCiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUmVmPE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbm90aWZ5RG9uZSgp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCAxYThiNjMy
Li5iNzhmNDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTk5LDcgKzk5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6cmVsZWFzZVJlc291cmNlcygpCiAg
ICAgLy8gZGVhbGxvY2F0ZWQgYW5kIHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMg
b2JqZWN0LgogICAgIC8vIFdlIG5lZWQgdG8gcmV0YWluIHRvIGF2b2lkIGFjY2Vzc2luZyB0aGUg
b2JqZWN0IGFmdGVyIGl0CiAgICAgLy8gaGFzIGJlZW4gZGVhbGxvY2F0ZWQgYW5kIGFsc28gdG8g
YXZvaWQgcmVlbnRlcmluZyB0aGlzIG1ldGhvZC4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKICAgICBtX2RvY3VtZW50TG9hZGVyID0gbnVs
bHB0cjsKQEAgLTE3MSw3ICsxNzEsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjppbml0KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcikKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGVsaXZlclJlc3Bv
bnNlQW5kRGF0YShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVmUHRyPFNoYXJl
ZEJ1ZmZlcj4mJiBidWZmZXIpCiB7Ci0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAg
ICAgZGlkUmVjZWl2ZVJlc3BvbnNlKHJlc3BvbnNlKTsKICAgICBpZiAocmVhY2hlZFRlcm1pbmFs
U3RhdGUoKSkKQEAgLTI0NywzMiArMjQ3LDMyIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmxvYWRE
YXRhVVJMKCkKICAgICBhdXRvIHVybCA9IG1fcmVxdWVzdC51cmwoKTsKICAgICBBU1NFUlQodXJs
LnByb3RvY29sSXNEYXRhKCkpOwogCi0gICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBsb2FkZXIo
dGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIERhdGFVUkxEZWNvZGVyOjpTY2hlZHVsZUNvbnRleHQgc2NoZWR1bGVDb250ZXh0OwogI2lm
IEhBVkUoUlVOTE9PUF9USU1FUikKICAgICBpZiAoYXV0byogc2NoZWR1bGVkUGFpcnMgPSBtX2Zy
YW1lLT5wYWdlKCktPnNjaGVkdWxlZFJ1bkxvb3BQYWlycygpKQogICAgICAgICBzY2hlZHVsZUNv
bnRleHQuc2NoZWR1bGVkUGFpcnMgPSAqc2NoZWR1bGVkUGFpcnM7CiAjZW5kaWYKLSAgICBEYXRh
VVJMRGVjb2Rlcjo6ZGVjb2RlKHVybCwgc2NoZWR1bGVDb250ZXh0LCBbbG9hZGVyLCB1cmxdIChP
cHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0PiBkZWNvZGVSZXN1bHQpIHsKLSAgICAgICAg
aWYgKGxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKKyAgICBEYXRhVVJMRGVjb2Rlcjo6
ZGVjb2RlKHVybCwgc2NoZWR1bGVDb250ZXh0LCBbcHJvdGVjdGVkVGhpcywgdXJsXSAoT3B0aW9u
YWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4gZGVjb2RlUmVzdWx0KSB7CisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICBpZiAoIWRlY29kZVJlc3VsdCkgewotICAgICAgICAgICAgbG9hZGVyLT5kaWRG
YWlsKFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiRGF0
YSBVUkwgZGVjb2RpbmcgZmFpbGVkIikpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlk
RmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRh
dGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQotICAgICAgICBpZiAobG9hZGVyLT53YXNDYW5jZWxsZWQoKSkKKyAgICAgICAgaWYgKHByb3Rl
Y3RlZFRoaXMtPndhc0NhbmNlbGxlZCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBh
dXRvJiByZXN1bHQgPSBkZWNvZGVSZXN1bHQudmFsdWUoKTsKICAgICAgICAgYXV0byBkYXRhU2l6
ZSA9IHJlc3VsdC5kYXRhLT5zaXplKCk7CiAKICAgICAgICAgUmVzb3VyY2VSZXNwb25zZSBkYXRh
UmVzcG9uc2UgeyB1cmwsIHJlc3VsdC5taW1lVHlwZSwgZGF0YVNpemUsIHJlc3VsdC5jaGFyc2V0
IH07Ci0gICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSk7Cisg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UpOwog
Ci0gICAgICAgIGlmICghbG9hZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYmIGRhdGFTaXpl
KQotICAgICAgICAgICAgbG9hZGVyLT5kaWRSZWNlaXZlQnVmZmVyKHJlc3VsdC5kYXRhLmdldCgp
LCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJlc291cmNlKTsKKyAgICAgICAgaWYgKCFwcm90
ZWN0ZWRUaGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpICYmIGRhdGFTaXplKQorICAgICAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+ZGlkUmVjZWl2ZUJ1ZmZlcihyZXN1bHQuZGF0YS5nZXQoKSwgZGF0
YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CiAKLSAgICAgICAgaWYgKCFsb2FkZXIt
PnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCi0gICAgICAgICAgICBsb2FkZXItPmRpZEZpbmlzaExv
YWRpbmcoY3VycmVudFRpbWUoKSk7CisgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZpbmlzaExv
YWRpbmcoY3VycmVudFRpbWUoKSk7CiAgICAgfSk7CiB9CiAKQEAgLTMyOCw3ICszMjgsNyBAQCB2
b2lkIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIGNvbnN0IFJlcwogewogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRl
bGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAg
IC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBs
ZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgQVNTRVJUKCFtX3JlYWNoZWRUZXJtaW5hbFN0YXRlKTsKICNpZiBFTkFCTEUoQ09O
VEVOVF9FWFRFTlNJT05TKQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByKQogCiAgICAgLy8g
UHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFs
IHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRl
cmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBS
ZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBsb2dSZXNvdXJjZVJlc3BvbnNlU291cmNl
KG1fZnJhbWUuZ2V0KCksIHIuc291cmNlKCkpOwogCkBAIC00NzcsNyArNDc3LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCB1
bnNpZ25lZCBsZW5ndGgsIFAKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRl
IG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFu
eXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0
aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAg
IFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKIAogICAgIGFkZERhdGFP
ckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlci5nZXQoKSwgZGF0YVBheWxvYWRUeXBlKTsKQEAg
LTUyMyw3ICs1MjMsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUg
bWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55
dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRo
aXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBjbGVhbnVwRm9yRXJyb3IoZXJyb3IpOwogICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKQEAgLTU1
Niw3ICs1NTYsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5jZWwoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiAgICAgCiAgICAgLy8gd2lsbENhbmNlbCgpIGFuZCBkaWRGYWlsVG9Mb2Fk
KCkgYm90aCBjYWxsIG91dCB0byBjbGllbnRzIHRoYXQgbWlnaHQgZG8gCiAgICAgLy8gc29tZXRo
aW5nIGNhdXNpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0IHRvIGdvIGF3YXku
Ci0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIAogICAgIC8vIElmIHdlIHJlLWVu
dGVyIGNhbmNlbCgpIGZyb20gaW5zaWRlIHdpbGxDYW5jZWwoKSwgd2Ugd2FudCB0byBwaWNrIHVw
IGZyb20gd2hlcmUgd2UgbGVmdCAKICAgICAvLyBvZmYgd2l0aG91dCByZS1ydW5uaW5nIHdpbGxD
YW5jZWwoKQpAQCAtNjcyLDcgKzY3Miw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OnNob3VsZFVz
ZUNyZWRlbnRpYWxTdG9yYWdlKCkKICAgICBpZiAobV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMo
KSA9PSBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAKLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxS
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgcmV0dXJuIGZyYW1lTG9h
ZGVyKCktPmNsaWVudCgpLnNob3VsZFVzZUNyZWRlbnRpYWxTdG9yYWdlKGRvY3VtZW50TG9hZGVy
KCksIGlkZW50aWZpZXIoKSk7CiB9CiAKQEAgLTY4Nyw3ICs2ODcsNyBAQCB2b2lkIFJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGlj
YXRpb25DaGFsbAogCiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9k
IHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcg
aW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMg
UmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAo
bV9vcHRpb25zLmFsbG93Q3JlZGVudGlhbHMoKSA9PSBBbGxvd1N0b3JlZENyZWRlbnRpYWxzKSB7
CiAgICAgICAgIGlmIChpc0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpKSB7CkBAIC03
MDksNyArNzA5LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGUKIHsKICAgICAvLyBQcm90ZWN0
IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vz
c2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcg
dGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBmcmFtZUxvYWRlcigpLT5ub3RpZmllcigpLmRpZENhbmNl
bEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGNoYWxsZW5nZSk7CiB9CiAKQEAgLTcxNyw3
ICs3MTcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZQogCiBib29sIFJlc291cmNlTG9hZGVy
OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGNvbnN0IFByb3RlY3Rpb25T
cGFjZSYgcHJvdGVjdGlvblNwYWNlKQogewotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
ICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCksIHByb3RlY3Rp
b25TcGFjZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNv
dXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IDc4YzE0MmIuLjdlN2E5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1
YnJlc291cmNlTG9hZGVyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYgbmV3UmVxdWVz
dCwgY29uCiB7CiAgICAgLy8gU3RvcmUgdGhlIHByZXZpb3VzIFVSTCBiZWNhdXNlIHRoZSBjYWxs
IHRvIFJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qgd2lsbCBtb2RpZnkgaXQuCiAgICAg
VVJMIHByZXZpb3VzVVJMID0gcmVxdWVzdCgpLnVybCgpOwotICAgIFJlZjxTdWJyZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICghbmV3UmVxdWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsK
ICAgICAgICAgY2FuY2VsKGNhbm5vdFNob3dVUkxFcnJvcigpKTsKQEAgLTIxNiw3ICsyMTYsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJj
ZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbgogdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkU2Vu
ZERhdGEodW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzU2VudCwgdW5zaWduZWQgbG9uZyBsb25nIHRv
dGFsQnl0ZXNUb0JlU2VudCkKIHsKICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsaXplZCk7
Ci0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3Vi
cmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIG1fcmVzb3VyY2UtPmRp
ZFNlbmREYXRhKGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsKIH0KIApAQCAtMjI3LDcg
KzIyNyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIAogICAgIC8vIFJlZmVyZW5jZSB0aGUgb2Jq
ZWN0IGluIHRoaXMgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRv
CiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0
byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyAzMjY2MjE2LgotICAgIFJlZjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChzaG91bGRJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvKCkpCiAgICAgICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsK
QEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0
YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBhcwogICAgIEFTU0VSVCht
X3N0YXRlID09IEluaXRpYWxpemVkKTsKICAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0
aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8v
IGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBv
YmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWY8U3VicmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gcHJw
QnVmZmVyOwogICAgIAogICAgIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVy
KGRhdGEsIGxlbmd0aCwgYnVmZmVyLCBlbmNvZGVkRGF0YUxlbmd0aCwgZGF0YVBheWxvYWRUeXBl
KTsKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hM
b2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJSZWNl
aXZlZCAnJXMnLiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
CiAgICAgbG9nUmVzb3VyY2VMb2FkZWQobV9mcmFtZS5nZXQoKSwgbV9yZXNvdXJjZS0+dHlwZSgp
KTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVjdFJlc291cmNlKG1fcmVzb3VyY2UpOwog
CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIFN1YnJl
c291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIEFT
U0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
IkZhaWxlZCB0byBsb2FkICclcycuXG4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwogCi0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAg
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBwcm90ZWN0UmVzb3VyY2UobV9y
ZXNvdXJjZSk7CiAgICAgbV9zdGF0ZSA9IEZpbmlzaGluZzsKICAgICBpZiAobV9yZXNvdXJjZS0+
cmVzb3VyY2VUb1JldmFsaWRhdGUoKSkKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIFN1YnJlc291
cmNlTG9hZGVyOjp3aWxsQ2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAgIEFT
U0VSVCghcmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CiAgICAgTE9HKFJlc291cmNlTG9hZGluZywg
IkNhbmNlbGxlZCBsb2FkIG9mICclcycuXG4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwogCi0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
I2lmIFBMQVRGT1JNKElPUykKICAgICBtX3N0YXRlID0gbV9zdGF0ZSA9PSBVbmluaXRpYWxpemVk
ID8gQ2FuY2VsbGVkV2hpbGVJbml0aWFsaXppbmcgOiBGaW5pc2hpbmc7CiAjZWxzZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXgg
ODIxYTg4OC4uYjY2ZDU0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC01OSw3ICs1OSw3IEBAIGNvbnN0IGNoYXIqIENhY2hl
ZFJhd1Jlc291cmNlOjpjYWxjdWxhdGVJbmNyZW1lbnRhbERhdGFDaHVuayhTaGFyZWRCdWZmZXIq
IGRhdGEsCiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGFCdWZmZXIoU2hhcmVkQnVm
ZmVyJiBkYXRhKQogewotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNl
PiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIEFTU0VSVChkYXRhQnVmZmVyaW5nUG9saWN5
KCkgPT0gQnVmZmVyRGF0YSk7CiAgICAgbV9kYXRhID0gJmRhdGE7CiAKQEAgLTg2LDcgKzg2LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YShjb25zdCBjaGFyKiBkYXRhLCB1bnNp
Z25lZCBsZW5ndGgpCiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmZpbmlzaExvYWRpbmcoU2hh
cmVkQnVmZmVyKiBkYXRhKQogewotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kg
ZGF0YUJ1ZmZlcmluZ1BvbGljeSA9IHRoaXMtPmRhdGFCdWZmZXJpbmdQb2xpY3koKTsKICAgICBp
ZiAoZGF0YUJ1ZmZlcmluZ1BvbGljeSA9PSBCdWZmZXJEYXRhKSB7CiAgICAgICAgIG1fZGF0YSA9
IGRhdGE7CkBAIC0xMTMsNyArMTEzLDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6bm90aWZ5
Q2xpZW50c0RhdGFXYXNSZWNlaXZlZChjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZAogICAgIGlm
ICghbGVuZ3RoKQogICAgICAgICByZXR1cm47CiAKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSZXNv
dXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2NsaWVudHMpOwog
ICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQogICAgICAg
ICBjLT5kYXRhUmVjZWl2ZWQodGhpcywgZGF0YSwgbGVuZ3RoKTsKQEAgLTEyNiw3ICsxMjYsNyBA
QCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpkaWRBZGRDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGMpCiAgICAgLy8gVGhlIGNhbGxzIHRvIHRoZSBjbGllbnQgY2FuIHJlc3VsdCBpbiBldmVu
dHMgcnVubmluZywgcG90ZW50aWFsbHkgY2F1c2luZwogICAgIC8vIHRoaXMgcmVzb3VyY2UgdG8g
YmUgZXZpY3RlZCBmcm9tIHRoZSBjYWNoZSBhbmQgYWxsIGNsaWVudHMgdG8gYmUgcmVtb3ZlZCwK
ICAgICAvLyBzbyBhIHByb3RlY3RvciBpcyBuZWNlc3NhcnkuCi0gICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ2Fj
aGVkUmF3UmVzb3VyY2VDbGllbnQqIGNsaWVudCA9IHN0YXRpY19jYXN0PENhY2hlZFJhd1Jlc291
cmNlQ2xpZW50Kj4oYyk7CiAgICAgc2l6ZV90IHJlZGlyZWN0Q291bnQgPSBtX3JlZGlyZWN0Q2hh
aW4uc2l6ZSgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVkaXJlY3RDb3VudDsgaSsr
KSB7CkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWxsQ2xpZW50
c1JlbW92ZWQoKQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3Qo
dGhpcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgaWYgKCFyZXNwb25zZS5pc051bGwoKSkgewogICAgICAgICBD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlcjxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudD4gdyhtX2Ns
aWVudHMpOwogICAgICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5l
eHQoKSkKQEAgLTE3Nyw3ICsxNzcsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVj
dFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyYwogCiB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogewotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291
cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghbV9pZGVudGlmaWVyKQogICAg
ICAgICBtX2lkZW50aWZpZXIgPSBtX2xvYWRlci0+aWRlbnRpZmllcigpOwogICAgIENhY2hlZFJl
c291cmNlOjpyZXNwb25zZVJlY2VpdmVkKHJlc3BvbnNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcAppbmRleCA2OWUyOTk3Li42MGI2OGVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0Yu
Y3BwCkBAIC0zNSw3ICszNSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVE
YXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCiB7CiAgICAgLy8gUmVmZXJlbmNlIHRoZSBv
YmplY3QgaW4gdGhpcyBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4g
ZG8gYW55dGhpbmcgaW5jbHVkaW5nCiAgICAgLy8gcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNl
IHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDxyZGFyOi8vcHJvYmxlbS8z
MjY2MjE2Pi4KLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFBcnJheShkYXRhQXJyYXkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQppbmRleCBiYjliMTRlLi41
NjIwYzkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9h
ZGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJN
YWMubW0KQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURh
dGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKIHsKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4g
dGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4g
ZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25l
IGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKIAogICAgIENGSW5kZXggYXJyYXlDb3VudCA9IENGQXJyYXlHZXRDb3VudChkYXRh
QXJyYXkpOwogICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IGFycmF5Q291bnQ7ICsraSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4IGM5YmNjZjAuLjgzNjM1M2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTE4ODUsNyArMTg4NSw3IEBAIHZvaWQgRE9NV2luZG93
OjpkaXNwYXRjaExvYWRFdmVudCgpCiAKIGJvb2wgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KEV2
ZW50JiBldmVudCwgRXZlbnRUYXJnZXQqIHRhcmdldCkKIHsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKICAgICAvLyBQYXVzaW5nIGEgcGFnZSBtYXkgdHJpZ2dlciBwYWdlaGlkZSBhbmQgcGFn
ZXNob3cgZXZlbnRzLiBXZWJDb3JlIGFsc28gaW1wbGljaXRseSBmaXJlcyB0aGVzZQogICAgIC8v
IGV2ZW50cyB3aGVuIGNsb3NpbmcgYSBXZWJWaWV3LiBIZXJlIHdlIGtlZXAgdHJhY2sgb2YgdGhl
IHN0YXRlIG9mIHRoZSBwYWdlIHRvIHByZXZlbnQgZHVwbGljYXRlLApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCmluZGV4IDBlNjJiMzQuLjljMjVlNWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKQEAgLTQ3LDcgKzQ3LDcg
QEAgdm9pZCBET01XaW5kb3dFeHRlbnNpb246OmRpc2Nvbm5lY3RGcmFtZUZvckRvY3VtZW50U3Vz
cGVuc2lvbigpCiB7CiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1
bHQgaW4gdGhpcyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hp
bGUgdGhlcmUgaXMgc3RpbGwgd29yayB0byBkby4KLSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9u
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICAgICAKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAg
IGZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaFdpbGxEaXNjb25uZWN0RE9NV2luZG93
RXh0ZW5zaW9uRnJvbUdsb2JhbE9iamVjdCh0aGlzKTsKQEAgLTczLDcgKzczLDcgQEAgdm9pZCBE
T01XaW5kb3dFeHRlbnNpb246OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5DYWNoZWRGcmFtZSgp
CiAKICAgICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlz
IERPTVdpbmRvd0V4dGVuc2lvbiBiZWluZyBkZXN0cm95ZWQKICAgICAvLyB3aGlsZSB0aGVyZSBp
cyBzdGlsbCB3b3JrIHRvIGRvLgotICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgbV9kaXNjb25uZWN0ZWRGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hX
aWxsRGVzdHJveUdsb2JhbE9iamVjdEZvckRPTVdpbmRvd0V4dGVuc2lvbih0aGlzKTsKICAgICBt
X2Rpc2Nvbm5lY3RlZEZyYW1lID0gbnVsbHB0cjsKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBET01X
aW5kb3dFeHRlbnNpb246OndpbGxEZXN0cm95R2xvYmFsT2JqZWN0SW5GcmFtZSgpCiAKICAgICAv
LyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERPTVdpbmRv
d0V4dGVuc2lvbiBiZWluZyBkZXN0cm95ZWQKICAgICAvLyB3aGlsZSB0aGVyZSBpcyBzdGlsbCB3
b3JrIHRvIGRvLgotICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
aWYgKCFtX3dhc0RldGFjaGVkKSB7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZyYW1l
KCk7CkBAIC0xMDUsNyArMTA1LDcgQEAgdm9pZCBET01XaW5kb3dFeHRlbnNpb246OndpbGxEZXRh
Y2hHbG9iYWxPYmplY3RGcm9tRnJhbWUoKQogCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNs
aWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJv
eWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3RpbGwgd29yayB0byBkby4KLSAgICBSZWY8RE9N
V2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RE9NV2luZG93RXh0ZW5z
aW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEZyYW1lKiBmcmFtZSA9IHRoaXMtPmZy
YW1lKCk7CiAgICAgQVNTRVJUKGZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRl
eCAyYjdmOTUzLi42ZWJhZTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00NzUs
NyArNDc1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3Qm
IHJlY3QpCiAKIHZvaWQgRnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgbmV3
UmVjdCkKIHsKLSAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RnJh
bWVWaWV3PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBJbnRSZWN0IG9sZFJlY3QgPSBmcmFt
ZVJlY3QoKTsKICAgICBpZiAobmV3UmVjdCA9PSBvbGRSZWN0KQogICAgICAgICByZXR1cm47CkBA
IC0xMjE4LDcgKzEyMTgsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0
cmVlKQogICAgIH0KIAogICAgIC8vIFByb3RlY3QgdGhlIHZpZXcgZnJvbSBiZWluZyBkZWxldGVk
IGR1cmluZyBsYXlvdXQgKGluIHJlY2FsY1N0eWxlKS4KLSAgICBSZWY8RnJhbWVWaWV3PiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAog
ICAgIC8vIE1hbnkgb2YgdGhlIHRhc2tzIHBlcmZvcm1lZCBkdXJpbmcgbGF5b3V0IGNhbiBjYXVz
ZSB0aGlzIGZ1bmN0aW9uIHRvIGJlIHJlLWVudGVyZWQsCiAgICAgLy8gc28gc2F2ZSB0aGUgbGF5
b3V0IHBoYXNlIG5vdyBhbmQgcmVzdG9yZSBpdCBvbiBleGl0LgpAQCAtMzExMyw3ICszMTEzLDcg
QEAgYm9vbCBGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVkT2JqZWN0cygpCiAKIHZvaWQgRnJhbWVW
aWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHNUaW1lckZpcmVkKCkKIHsKLSAgICBSZWZQdHI8RnJh
bWVWaWV3PiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgbV91cGRhdGVFbWJlZGRlZE9iamVjdHNUaW1lci5zdG9wKCk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1heFVwZGF0ZUVtYmVkZGVkT2JqZWN0c0l0ZXJhdGlv
bnM7IGkrKykgewogICAgICAgICBpZiAodXBkYXRlRW1iZWRkZWRPYmplY3RzKCkpCkBAIC0zMTkw
LDcgKzMxOTAsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAK
ICAgICAvLyBsYXlvdXQoKSBwcm90ZWN0cyBGcmFtZVZpZXcsIGJ1dCBpdCBzdGlsbCBjYW4gZ2V0
IGRlc3Ryb3llZCB3aGVuIHVwZGF0ZUVtYmVkZGVkT2JqZWN0cygpCiAgICAgLy8gaXMgY2FsbGVk
IHRocm91Z2ggdGhlIHBvc3QgbGF5b3V0IHRpbWVyLgotICAgIFJlZjxGcmFtZVZpZXc+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxGcmFtZVZpZXc+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAg
ICAgbV91cGRhdGVFbWJlZGRlZE9iamVjdHNUaW1lci5zdGFydE9uZVNob3QoMCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAKaW5kZXggMDEy
ZmEzZS4uY2EyMmZkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24v
QW5pbWF0aW9uQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5p
bWF0aW9uQmFzZS5jcHAKQEAgLTQ3Niw3ICs0NzYsNyBAQCB2b2lkIEFuaW1hdGlvbkJhc2U6OmZp
cmVBbmltYXRpb25FdmVudHNJZk5lZWRlZCgpCiAgICAgLy8gZHVyaW5nIGFuIGFuaW1hdGlvbiBj
YWxsYmFjayB0aGF0IG1pZ2h0IGdldCBjYWxsZWQuIFNpbmNlIHRoZSBvd25lciBpcyBhIENvbXBv
c2l0ZUFuaW1hdGlvbgogICAgIC8vIGFuZCBpdCByZWYgY291bnRzIHRoaXMgb2JqZWN0LCB3ZSB3
aWxsIGtlZXAgYSByZWYgdG8gdGhhdCBpbnN0ZWFkLiBUaGF0IHdheSB0aGUgQW5pbWF0aW9uQmFz
ZQogICAgIC8vIGNhbiBzdGlsbCBhY2Nlc3MgdGhlIHJlc291cmNlcyBvZiBpdHMgQ29tcG9zaXRl
QW5pbWF0aW9uIGFzIG5lZWRlZC4KLSAgICBSZWY8QW5pbWF0aW9uQmFzZT4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPEFuaW1hdGlvbkJhc2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIFJl
ZjxDb21wb3NpdGVBbmltYXRpb24+IHByb3RlY3RDb21wb3NpdGVBbmltYXRpb24oKm1fY29tcG9z
aXRlQW5pbWF0aW9uKTsKICAgICAKICAgICAvLyBDaGVjayBmb3Igc3RhcnQgdGltZW91dApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdU
cmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5n
VHJlZS5jcHAKaW5kZXggNDgzOTg2YS4uMDE1ZTE4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCkBAIC01OSw5
ICs1OSw5IEBAIFNjcm9sbGluZ1RyZWU6OkV2ZW50UmVzdWx0IFRocmVhZGVkU2Nyb2xsaW5nVHJl
ZTo6dHJ5VG9IYW5kbGVXaGVlbEV2ZW50KGNvbnN0IFBsCiAgICAgaWYgKHdpbGxXaGVlbEV2ZW50
U3RhcnRTd2lwZUdlc3R1cmUod2hlZWxFdmVudCkpCiAgICAgICAgIHJldHVybiBEaWROb3RIYW5k
bGVFdmVudDsKIAotICAgIFJlZlB0cjxUaHJlYWRlZFNjcm9sbGluZ1RyZWU+IHRocmVhZGVkU2Ny
b2xsaW5nVHJlZSh0aGlzKTsKLSAgICBTY3JvbGxpbmdUaHJlYWQ6OmRpc3BhdGNoKFt0aHJlYWRl
ZFNjcm9sbGluZ1RyZWUsIHdoZWVsRXZlbnRdIHsKLSAgICAgICAgdGhyZWFkZWRTY3JvbGxpbmdU
cmVlLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOworICAgIFJlZlB0cjxUaHJlYWRlZFNj
cm9sbGluZ1RyZWU+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgU2Nyb2xsaW5nVGhyZWFkOjpk
aXNwYXRjaChbcHJvdGVjdGVkVGhpcywgd2hlZWxFdmVudF0geworICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5oYW5kbGVXaGVlbEV2ZW50KHdoZWVsRXZlbnQpOwogICAgIH0pOwogICAgIAogICAgIHJl
dHVybiBEaWRIYW5kbGVFdmVudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHAK
aW5kZXggZjIyZDZiZi4uYzYyOWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vU2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAKQEAgLTEwMzQsNyArMTAzNCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsYmFy
T3ZlcmxheVN0eWxlKFNjcm9sbGJhck92ZXJsYXlTdHlsZSBvdmVybGF5U3R5bGUpCiAKIHZvaWQg
U2Nyb2xsVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpCiB7Ci0gICAg
UmVmPFNjcm9sbFZpZXc+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTY3JvbGxWaWV3PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBJbnRSZWN0IG9sZFJlY3QgPSBmcmFtZVJlY3QoKTsKICAg
ICAKICAgICBpZiAobmV3UmVjdCA9PSBvbGRSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAKaW5kZXgg
OTBkODAxNS4uZDlhNjIyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCkBAIC0xMDUsNyArMTA1LDcg
QEAgdm9pZCBEaXNwbGF5UmVmcmVzaE1vbml0b3I6OmRpc3BsYXlEaWRSZWZyZXNoKCkKIAogICAg
IC8vIFRoZSBjYWxsIGJhY2sgY2FuIGNhdXNlIGFsbCBvdXIgY2xpZW50cyB0byBiZSB1bnJlZ2lz
dGVyZWQsIHNvIHdlIG5lZWQgdG8gcHJvdGVjdAogICAgIC8vIGFnYWluc3QgZGVsZXRpb24gdW50
aWwgdGhlIGVuZCBvZiB0aGUgbWV0aG9kLgotICAgIFJlZjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEaXNwbGF5UmVmcmVzaE1vbml0b3I+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gQ29weSB0aGUgaGFzaCB0YWJsZSBhbmQgcmVtb3ZlIGNs
aWVudHMgZnJvbSBpdCBvbmUgYnkgb25lIHNvIHdlIGRvbid0IG5vdGlmeQogICAgIC8vIGFueSBj
bGllbnQgdHdpY2UsIGJ1dCBjYW4gcmVzcG9uZCB0byByZW1vdmFsIG9mIGNsaWVudHMgZHVyaW5n
IHRoZSBkZWxpdmVyeSBwcm9jZXNzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYmMz
MjNhMi4uMTE1MzJhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCkBAIC0yODEsNyArMjgx
LDcgQEAgdm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6c2V0U2hvdWxkSW52ZXJ0Q29sb3JzKGJvb2wp
CiB2b2lkIENBQ0ZMYXllclRyZWVIb3N0OjpmbHVzaFBlbmRpbmdMYXllckNoYW5nZXNOb3coKQog
ewogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgY291bGQgY2F1c2Ugb3VyIGxhc3Qg
cmVmZXJlbmNlIHRvIGdvIGF3YXkuCi0gICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBwcm90
ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPENBQ0ZMYXllclRyZWVIb3N0PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogCiAgICAgdXBkYXRlRGVidWdJbmZvTGF5ZXIobV9wYWdlLT5zZXR0aW5ncygpLnNo
b3dUaWxlZFNjcm9sbGluZ0luZGljYXRvcigpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0lu
YmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDRiY2EyNGUuLjAyZDBjNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9J
bmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKQEAgLTc0LDE0ICs3NCwxOCBAQCB2b2lkIEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI6OmhhbmRsZVNhbXBsZShHUmVmUHRyPEdzdFNhbXBsZT4gc2FtcGxlKQogICAgICAgICBt
X3BlbmRpbmdTYW1wbGVzLmFwcGVuZChzYW1wbGUpOwogICAgIH0KIAotICAgIFJlZlB0cjxJbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgbV9ub3Rp
Zmllci5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6TmV3U2FtcGxlLCBbcHJvdGVjdG9y
XSB7IHByb3RlY3Rvci0+bm90aWZ5VHJhY2tPZlNhbXBsZSgpOyB9KTsKKyAgICBSZWZQdHI8SW5i
YW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBt
X25vdGlmaWVyLm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpOZXdTYW1wbGUsIFtwcm90
ZWN0ZWRUaGlzXSB7IAorICAgICAgICBwcm90ZWN0ZWRUaGlzLT5ub3RpZnlUcmFja09mU2FtcGxl
KCk7CisJfSk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3Ry
ZWFtQ2hhbmdlZCgpCiB7Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBtX25vdGlmaWVyLm5vdGlmeShNYWluVGhyZWFkTm90
aWZpY2F0aW9uOjpTdHJlYW1DaGFuZ2VkLCBbcHJvdGVjdG9yXSB7IHByb3RlY3Rvci0+bm90aWZ5
VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsgfSk7CisgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9ub3RpZmllci5ub3Rp
ZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6U3RyZWFtQ2hhbmdlZCwgW3Byb3RlY3RlZFRoaXNd
IHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsK
Kwl9KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlU
cmFja09mU2FtcGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDY4ODk4
OWUuLjVmMWE0MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTU0LDcg
KzE1NCw3IEBAIHByaXZhdGU6CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwot
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhp
cyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNj
cmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CiAgICAgV2ViVGhyZWFk
UnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBb
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2Vi
Q29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVu
KCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICBtX21vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewpAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFu
dXBGdWxsc2NyZWVuKCkKICAgICBtX2ludGVyZmFjZSA9IG51bGxwdHI7CiAgICAgbV92aWRlb0Z1
bGxzY3JlZW5WaWV3ID0gbmlsOwogICAgIAotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKG5pbCk7CiAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZShudWxscHRyKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVlbigpCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJu
VG9JbmxpbmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgIElu
dFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0
KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgdGhpcywgY2xpZW50UmVjdF0gewpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZSgpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXNl
dE1lZGlhU3RhdGUoKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01h
aW5UaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICBp
ZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRl
KCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBBU1NFUlQo
V2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGR1
cmF0aW9uXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJm
YWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0
aW9uKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q3VycmVu
dFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBBU1NF
UlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMs
IGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9y
VGltZSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3UKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3Vi
bGUgYnVmZmVyZWRUaW1lKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlz
KHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgYnVmZmVyZWRUaW1lXSB7CiAgICAgICAgIGlm
IChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUo
YnVmZmVyZWRUaW1lKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFJhdGUoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGlzUGxheWluZywgcGxh
eWJhY2tSYXRlXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50
ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKQEAgLTI2NCw3ICsyNjQs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFjawogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1Ro
aXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodF0g
ewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0
VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTI3NCw3ICsyNzQs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0Rp
bWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJh
bmdlcykKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBwbGF0Zm9ybVRpbWVSYW5n
ZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBwbGF0Zm9ybVRpbWVSYW5nZXNdIHsK
ICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRp
bWVSYW5nZXMmIHRpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7CiAgICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlz
LCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAg
ICAgICAgbV9pbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZShjYW5QbGF5RmFzdFJldmVy
c2UpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0CiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9wdGlvbnNBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25z
LnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpCkBAIC0zMTQsNyArMzE0
LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmUKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIAog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb3B0aW9uc0FycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7CiAg
ICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKGNvbnN0CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUgdHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFN0cmluZ0Nh
cHR1cmUgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lKGxvY2FsaXplZERldmljZU5hbWUpOwog
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzLCBlbmFibGVkLCB0eXBlLCBjYXB0dXJlZExvY2FsaXplZERldmljZU5hbWVdIHsKICAg
ICAgICAgaWYgKG1faW50ZXJmYWNlKQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFi
bGVkLCBFeHRlCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAgIEFTU0VS
VChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywg
ZGlzYWJsZWRdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRl
cmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKQEAgLTM1
Niw3ICszNTYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzVUlU
aHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9u
Z1RoaXMsIHRoaXMsIG1vZGVdIHsKICAgICAgICAgaWYgKG1fbW9kZWwpCiAgICAgICAgICAgICBt
X21vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7CkBAIC0zNjYsNyArMzY2LDcgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnQKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxh
eWVyXTsKICAgICAKICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zv
cm06W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRyYW5zZm9ybV1dOwpAQCAtMzg5LDcgKzM4OSw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJG
cmFtZShGbG9hdFJlY3QgZnJhbWUpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Vmlk
ZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXMo
dGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywg
dmlkZW9HcmF2aXR5XSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2Rl
bC0+c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2aXR5KTsKQEAgLTM5OSw3ICszOTksNyBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVy
R3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwot
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhp
cyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlz
LCBtb2RlXSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2RlbC0+ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9F
bGVtZW50JiB2aWRlCiAgICAgUmV0YWluUHRyPFVJVmlldz4gdmlld1JlZiA9IHZpZXc7CiAgICAg
bV92aWRlb0VsZW1lbnQgPSAmdmlkZW9FbGVtZW50OwogCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpcywgdmlld1JlZiwgbW9kZV0gewogICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsK
IApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgICAgIG1f
aW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgICAgICBX
ZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKICAgICAgICAg
ICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRl
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKS5nZXQoKSk7CiAg
ICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7
CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQo
KSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJl
Y3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAg
ICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNsaWVudFJlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGExNzRjMTUuLmIxN2VkNGYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQubW0KQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgLy8g
SWYgd2UgYXJlIGJvdGggaW4gUGlQIGFuZCBpbiBGdWxsc2NyZWVuIChpLmUuLCB2aWEgYXV0by1Q
aVApLCBhbmQgd2UgZGlkIG5vdCBzdG9wIGZ1bGxzY3JlZW4gdXBvbiByZXR1cm5pbmcsIGl0IG11
c3QgYmUKICAgICAvLyBiZWNhdXNlIHRoZSBvcmlnaW5hdGluZyB2aWV3IGlzIG5vdCB2aXNpYmxl
LCBzbyBoaWRlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdy4KICAgICBpZiAoaXNNb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkIHwgSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkpIHsKLSAgICAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRo
aXMpOworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRG
dWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W3N0cm9uZ1RoaXMsIHRoaXNd
IChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNd
OwogICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpZ
RVNdOwpAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QKIAogICAgIFtD
QVRyYW5zYWN0aW9uIGNvbW1pdF07CiAKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAg
ICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAgIG1fZnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKQEAgLTcyOCw3ICs3Mjgs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlclBpY3R1cmVJ
blBpY3R1cmUoKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJG
dWxsc2NyZWVuU3RhbmRhcmQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCVwKSIsIHRoaXMp
OwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhp
cyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBpZiAoW21fcGxheWVyVmlld0NvbnRyb2xsZXIgaXNQ
aWN0dXJlSW5QaWN0dXJlQWN0aXZlXSkgewogICAgICAgICAvLyBOT1RFOiBUaGUgZnVsbHNjcmVl
biBtb2RlIHdpbGwgYmUgcmVzdG9yZWQgaW4gcHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9w
V2l0aENvbXBsZXRpb25IYW5kbGVyKCkuCkBAIC03NzMsMTMgKzc3MywxMyBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBmaQogICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKICAgICAgICAg
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwogICAgIH0gZWxz
ZSBpZiAoaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBp
Y3R1cmVJblBpY3R1cmUgfCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1v
ZGVTdGFuZGFyZCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgICAgIFttX3BsYXll
clZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRs
ZXI6W3N0cm9uZ1RoaXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgW21f
d2luZG93IHNldEhpZGRlbjpOT107CiAgICAgICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxl
ciBzdG9wUGljdHVyZUluUGljdHVyZV07CiAgICAgICAgIH1dOwogICAgIH0gZWxzZSBpZiAoaXNN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkg
ewotICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9u
Z1RoaXModGhpcyk7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3N0cm9uZ1Ro
aXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgbV9leGl0Q29tcGxldGVk
ID0gdHJ1ZTsKIApAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBpZiAobV9tb2Rl
ICYgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpIHsK
ICAgICAgICAgaWYgKCFbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBwaWN0dXJlSW5QaWN0dXJlV2Fz
U3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdKSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgICAg
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNj
cmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbc3Ryb25nVGhpcywgdGhpc10gKEJP
T0wsIE5TRXJyb3IqKSB7CiAgICAgICAgICAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNd
OwogICAgICAgICAgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRk
ZW46WUVTXTsKQEAgLTk5Niw3ICs5OTYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldAogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8aWQ+
IHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29w
eV0pOwogICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShbc3Ryb25nVGhpcywgc3Ryb25n
Q29tcGxldGlvbkhhbmRsZXJdKGJvb2wgcmVzdG9yZWQpICB7CiAgICAgICAgIExPRyhGdWxsc2Ny
ZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJl
SW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlciBsYW1iZGEoJXApIC0gcmVzdG9yZWQo
JXMpIiwgc3Ryb25nVGhpcy5nZXQoKSwgYm9vbFN0cmluZyhyZXN0b3JlZCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggNWJhMjgyMS4uMGU3Nzg3ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCkBAIC0xNjAsNyArMTYwLDcg
QEAgdm9pZCBXaWRnZXQ6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogCiAgICAg
Ly8gVGFrZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVjYXVzZSBzZW5kaW5nIG1lc3Nh
Z2VzIHRvIG91dGVyVmlldyBjYW4gaW52b2tlIGFyYml0cmFyeQogICAgIC8vIGNvZGUgaW5jbHVk
aW5nIHJlY2FsYyBzdHlsZS9sYXlvdXQsIHdoaWNoIGNhbiBkZXJlZiBpdC4KLSAgICBSZWY8V2lk
Z2V0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8V2lkZ2V0PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIE5TUmVjdCBmcmFtZSA9IHJlY3Q7CiAgICAgaWYgKCFOU0VxdWFsUmVjdHMoZnJh
bWUsIG91dGVyVmlldy5mcmFtZSkpIHsKQEAgLTIwNCw3ICsyMDQsNyBAQCB2b2lkIFdpZGdldDo6
cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0JiByKQogCiAgICAgLy8gVGFr
ZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVjYXVzZSBzZW5kaW5nIG1lc3NhZ2VzIHRv
IHRoZSB2aWV3cyBjYW4gaW52b2tlIGFyYml0cmFyeQogICAgIC8vIGNvZGUsIHdoaWNoIGNhbiBk
ZXJlZiBpdC4KLSAgICBSZWY8V2lkZ2V0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8V2lkZ2V0
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIE5TR3JhcGhpY3NDb250ZXh0ICpjdXJyZW50
Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29udGV4dF07CiAgICAgaWYgKGN1
cnJlbnRDb250ZXh0ID09IFtbdmlldyB3aW5kb3ddIGdyYXBoaWNzQ29udGV4dF0gfHwgIVtjdXJy
ZW50Q29udGV4dCBpc0RyYXdpbmdUb1NjcmVlbl0pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAppbmRleCBjZmFlMjMz
Li41M2ViMjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Js
b2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0xODcsMTEgKzE4NywxMSBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVm
UHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gaGFuZGxlKHRoaXMpOworICAgIFJlZlB0cjxCbG9iUmVz
b3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICAvLyBGaW5pc2ggdGhpcyBh
c3luYyBjYWxsIHF1aWNrbHkgYW5kIHJldHVybi4KLSAgICBjYWxsT25NYWluVGhyZWFkKFtoYW5k
bGVdIHsKLSAgICAgICAgaGFuZGxlLT5kb1N0YXJ0KCk7CisgICAgY2FsbE9uTWFpblRocmVhZChb
cHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb1N0YXJ0KCk7CiAgICAg
fSk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZG9T
dGFydCgpCiAgICAgaWYgKG1fYXN5bmMpCiAgICAgICAgIGdldFNpemVGb3JOZXh0KCk7CiAgICAg
ZWxzZSB7Ci0gICAgICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOyAv
LyBnZXRTaXplRm9yTmV4dCBjYWxscyB0aGUgY2xpZW50CisgICAgICAgIFJlZjxCbG9iUmVzb3Vy
Y2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBnZXRTaXplRm9yTmV4dCBjYWxscyB0
aGUgY2xpZW50CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9ibG9iRGF0YS0+aXRl
bXMoKS5zaXplKCkgJiYgIW1fYWJvcnRlZCAmJiAhbV9lcnJvckNvZGU7ICsraSkKICAgICAgICAg
ICAgIGdldFNpemVGb3JOZXh0KCk7CiAgICAgICAgIG5vdGlmeVJlc3BvbnNlKCk7CkBAIC0yNDQs
NyArMjQ0LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmdldFNpemVGb3JOZXh0KCkKIAog
ICAgICAgICAvLyBTdGFydCByZWFkaW5nIGlmIGluIGFzeW5jaHJvbm91cyBtb2RlLgogICAgICAg
ICBpZiAobV9hc3luYykgewotICAgICAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJv
dGVjdCgqdGhpcyk7CisgICAgICAgICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgICAgIG5vdGlmeVJlc3BvbnNlKCk7CiAgICAgICAgICAg
ICBtX2J1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICByZWFkQXN5bmMoKTsK
QEAgLTMzNiw3ICszMzYsNyBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkU3luYyhjaGFy
KiBidWYsIGludCBsZW5ndGgpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIEFT
U0VSVCghbV9hc3luYyk7Ci0gICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBpbnQgb2Zmc2V0ID0gMDsKICAgICBpbnQgcmVtYWluaW5nID0gbGVuZ3RoOwpAQCAtNDY2
LDcgKzQ2Niw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YUFzeW5jKGNvbnN0
IEJsb2JEYXRhSXRlbSYgaXRlbSkKICAgICBBU1NFUlQobV9hc3luYyk7CiAgICAgQVNTRVJUKGl0
ZW0uZGF0YSgpLmRhdGEoKSk7CiAKLSAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIGxvbmcgbG9uZyBieXRlc1RvUmVhZCA9IGl0ZW0ubGVuZ3RoKCkgLSBtX2N1cnJl
bnRJdGVtUmVhZFNpemU7CiAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3RhbFJlbWFpbmluZ1Np
emUpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmRpZFJlYWQo
aW50IGJ5dGVzUmVhZCkKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpjb25zdW1lRGF0YShjb25z
dCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogewogICAgIEFTU0VSVChtX2FzeW5jKTsKLSAg
ICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJl
c291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fdG90YWxSZW1haW5p
bmdTaXplIC09IGJ5dGVzUmVhZDsKIApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgQmxvYlJlc291
cmNlSGFuZGxlOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQog
dm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmZhaWxlZChpbnQgZXJyb3JDb2RlKQogewogICAgIEFT
U0VSVChtX2FzeW5jKTsKLSAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAog
ICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50LgogICAgIG5vdGlmeUZhaWwoZXJyb3JDb2RlKTsKQEAg
LTU2Nyw3ICs1NjcsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2Uo
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9lcnJvckNvZGUpIHsKLSAgICAgICAgUmVm
PEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxCbG9iUmVz
b3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICBub3RpZnlSZXNwb25z
ZU9uRXJyb3IoKTsKICAgICAgICAgbm90aWZ5RmluaXNoKCk7CiAgICAgfSBlbHNlCkBAIC02NjUs
OSArNjY1LDkgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeUZpbmlzaCgpCiAKICAg
ICAvLyBTY2hlZHVsZSB0byBub3RpZnkgdGhlIGNsaWVudCBmcm9tIGEgc3RhbmRhbG9uZSBmdW5j
dGlvbiBiZWNhdXNlIHRoZSBjbGllbnQgbWlnaHQgZGlzcG9zZSB0aGUgaGFuZGxlIGltbWVkaWF0
ZWx5IGZyb20gdGhlIGNhbGxiYWNrIGZ1bmN0aW9uCiAgICAgLy8gd2hpbGUgd2Ugc3RpbGwgaGF2
ZSBCbG9iUmVzb3VyY2VIYW5kbGUgY2FsbHMgaW4gdGhlIHN0YWNrLgotICAgIFJlZlB0cjxCbG9i
UmVzb3VyY2VIYW5kbGU+IGhhbmRsZSh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtoYW5k
bGVdIHsKLSAgICAgICAgZG9Ob3RpZnlGaW5pc2goKmhhbmRsZSk7CisgICAgUmVmUHRyPEJsb2JS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFk
KFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIGRvTm90aWZ5RmluaXNoKCpwcm90ZWN0ZWRUaGlz
KTsKICAgICB9KTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggYzk1YTY1OC4uOTA2ZTY2
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2Nm
L1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBSZXNvdXJj
ZUhhbmRsZTo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXMKICAgICAgICAgfQogICAgIH0KIAotICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKICAgICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpCiAgICAgICAgIGNsaWVudCgp
LT53aWxsU2VuZFJlcXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsK
ICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDk0ZDVl
OTUuLmRhZjkzZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTA0
LDcgKzEwNCw3IEBAIENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlv
bkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuCiAKICAgICAvLyBGSVhNRTogVGhl
IGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3Rl
ZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5
IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5p
bnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25u
ZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNo
X2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNIYW5kbGUo
KSkgewpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAg
Ly8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3
aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0
dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2
ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhh
bmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3Io
dGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAoIXByb3RlY3Rv
ci0+aGFzSGFuZGxlKCkgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkgewpAQCAtMTcwLDcgKzE3MCw3
IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGEoQ0ZECiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBp
bXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ug
c2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVy
IHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9u
YWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRl
bGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ0ZSZXRhaW4oZGF0YSk7CiAKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewpAQCAtMTg4LDcgKzE4OCw3IEBAIHZv
aWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6ZGlkRmluaXNoTG9hZGluZygpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNp
dGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxk
IGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVl
LCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2Fw
dHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXnsKICAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpIHx8ICFtX2hhbmRsZS0+
Y2xpZW50KCkpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRGYWlsKENGRXJyb3JSZWYKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkg
Y29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVz
dCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFu
ZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJp
bmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBDRlJldGFpbihlcnJvcik7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKHByb3RlY3Rvci0+aGFzSGFuZGxl
KCkgJiYgbV9oYW5kbGUtPmNsaWVudCgpKSB7CkBAIC0yMjAsNyArMjIwLDcgQEAgQ0ZDYWNoZWRV
UkxSZXNwb25zZVJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlOjoKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29w
aWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBj
YWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1
c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcu
Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNIYW5kbGUoKSB8fCAhbV9oYW5kbGUtPmNsaWVu
dCgpKSB7CkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcKIHsKICAg
ICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3Qs
IHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNh
cHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHBy
ZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rv
cih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDRlJldGFpbihj
aGFsbGVuZ2UpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IF57CiAgICAgICAgIGlmIChwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKSB7CkBAIC0yNTcsNyArMjU3
LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJh
dGlvblF1ZXVlOjpkaWRTZW5kQm9keURhdGEoQ0YKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2Nr
IGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBX
ZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50
ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRp
b25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8
UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxlKCkgfHwgIW1f
aGFuZGxlLT5jbGllbnQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3OCw3ICsyNzgsNyBA
QCBCb29sZWFuIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU6OmNhblJlc3BvbmRUb1BybwogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1w
bGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNo
b3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2
YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFs
IGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxl
Z2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKICAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKSB7CkBAIC0z
MDgsNyArMzA4LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlRGF0YUFycmEKIHsKICAgICAvLyBGSVhNRTog
VGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdh
c3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMi
IGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIg
dW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDRlJldGFpbihkYXRhQXJyYXkpOwog
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAg
IGlmIChwcm90ZWN0b3ItPmhhc0hhbmRsZSgpICYmIG1faGFuZGxlLT5jbGllbnQoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9h
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2Fk
LmNwcAppbmRleCA0NzVhNjlhLi5mOTk5ZDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtNDA4LDkgKzQwOCw5
IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVh
ZGVyKQogICAgICAgICAgICAgU3RyaW5nIHN0clVybCh1cmwpOwogICAgICAgICAgICAgU3RyaW5n
Q2FwdHVyZSBjYXB0dXJlZFVybChzdHJVcmwpOwogCi0gICAgICAgICAgICBSZWZQdHI8Q3VybERv
d25sb2FkPiBwcm90ZWN0ZWREb3dubG9hZCh0aGlzKTsKKyAgICAgICAgICAgIFJlZlB0cjxDdXJs
RG93bmxvYWQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWREb3dubG9hZF0geworICAgICAgICAg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY2FwdHVyZWRVcmwsIHByb3RlY3RlZFRoaXNdIHsK
ICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFVSTChVUkwoUGFyc2VkVVJMU3RyaW5nLCBj
YXB0dXJlZFVybC5zdHJpbmcoKSkpOwogCiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRN
aW1lVHlwZShleHRyYWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRl
ckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKQEAgLTQyMiw5ICs0MjIsOSBA
QCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRl
cikKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkSGVhZGVyKGhl
YWRlcik7CiAKLSAgICAgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVjdGVkRG93bmxvYWQo
dGhpcyk7CisgICAgICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZFRoaXModGhpcyk7
CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY2FwdHVyZWRIZWFkZXIsIHByb3Rl
Y3RlZERvd25sb2FkXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVk
SGVhZGVyLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICBpbnQgc3BsaXRQb3MgPSBjYXB0
dXJlZEhlYWRlci5zdHJpbmcoKS5maW5kKCI6Iik7CiAgICAgICAgICAgICBpZiAoc3BsaXRQb3Mg
IT0gLTEpCiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVyRmllbGQoY2Fw
dHVyZWRIZWFkZXIuc3RyaW5nKCkubGVmdChzcGxpdFBvcyksIGNhcHR1cmVkSGVhZGVyLnN0cmlu
ZygpLnN1YnN0cmluZyhzcGxpdFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpKTsKQEAgLTQzNiw5
ICs0MzYsOSBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEodm9pZCogZGF0YSwg
aW50IHNpemUpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CiAKLSAgICBSZWZQ
dHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWREb3dubG9hZCh0aGlzKTsKKyAgICBSZWZQdHI8Q3Vy
bERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgc2l6ZSwgcHJvdGVjdGVkRG93bmxvYWRdIHsKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0
aGlzLCBzaXplLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgIGRpZFJlY2VpdmVEYXRhT2ZMZW5n
dGgoc2l6ZSk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggOGEyNjg4OC4uYmU0MzZk
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIFJlc291cmNlSGFu
ZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlcwogICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNrcykgewogICAgICAgICBjbGll
bnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25z
ZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
ICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKTsKIAogICAgICAgICAvLyBDbGllbnQgY2FsbCBtYXkgbm90IHByZXNlcnZlIHRo
ZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlzIHNlbnQgb3ZlciBJUEMuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3Ry
ZWFtSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
U29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKaW5kZXggOWNjNWQ4Yy4uNWY4M2FmNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9T
b2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgU29ja2V0
U3RyZWFtSGFuZGxlOjpyZWFkQnl0ZXMoc2lnbmVkIGxvbmcgYnl0ZXNSZWFkLCBHRXJyb3IqIGVy
cm9yKQogICAgIH0KIAogICAgIC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBoYW5kbGUsIHBv
dGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KLSAgICBSZWZQdHI8U29ja2V0
U3RyZWFtSGFuZGxlPiBwcm90ZWN0KHRoaXMpOyAKKyAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFu
ZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOyAKICAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVNvY2tl
dFN0cmVhbURhdGEodGhpcywgbV9yZWFkQnVmZmVyLmdldCgpLCBieXRlc1JlYWQpOwogICAgIGlm
IChtX2lucHV0U3RyZWFtKSAvLyBUaGUgY2xpZW50IG1heSBoYXZlIGNsb3NlZCB0aGUgY29ubmVj
dGlvbi4KICAgICAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdl
dCgpLCBtX3JlYWRCdWZmZXIuZ2V0KCksIFJFQURfQlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVG
QVVMVCwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1l
bnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAK
aW5kZXggMGRmOGY1Yy4uZWI4ZmIzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1BvcHVwTWVudVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
L1BvcHVwTWVudVdpbi5jcHAKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6
c2hvdyhjb25zdCBJbnRSZWN0JiByLCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKICAgICBt
X3Nob3dQb3B1cCA9IHRydWU7CiAKICAgICAvLyBQcm90ZWN0IHRoZSBwb3B1cCBtZW51IGluIGNh
c2UgaXRzIG93bmVyIGlzIGRlc3Ryb3llZCB3aGlsZSB3ZSdyZSBydW5uaW5nIHRoZSBtZXNzYWdl
IHB1bXAuCi0gICAgUmVmUHRyPFBvcHVwTWVudT4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8
UG9wdXBNZW51PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgOjpTZXRDYXB0dXJlKGhvc3RX
aW5kb3cpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlw
dExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5j
cHAKaW5kZXggZjczOWUwMi4uOTVlMDczOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyU2NyaXB0TG9hZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdvcmtlclNjcmlw
dExvYWRlcjo6bG9hZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dAogICAgIG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBj
b250ZW50U2VjdXJpdHlQb2xpY3lFbmZvcmNlbWVudDsKIAogICAgIC8vIER1cmluZyBjcmVhdGUs
IGNhbGxiYWNrcyBtYXkgaGFwcGVuIHdoaWNoIHJlbW92ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8g
dGhpcyBvYmplY3QuCi0gICAgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAg
bV90aHJlYWRhYmxlTG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggNmFiMzE1OS4uYzNkNDU4NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBYTUxIdHRw
UmVxdWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmFib3J0KCkKIHsKICAgICAvLyBpbnRlcm5hbEFib3J0KCkgY2FsbHMgZHJvcFByb3Rl
Y3Rpb24oKSwgd2hpY2ggbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgotICAgIFJlZjxY
TUxIdHRwUmVxdWVzdD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICghaW50ZXJuYWxBYm9ydCgpKQogICAgICAg
ICByZXR1cm47CkBAIC0xMTkyLDcgKzExOTIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaXNw
YXRjaEVycm9yRXZlbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZFJlYWNoVGltZW91dCgpCiB7CiAgICAgLy8gaW50ZXJuYWxBYm9ydCgpIGNhbGxz
IGRyb3BQcm90ZWN0aW9uKCksIHdoaWNoIG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZS4K
LSAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxYTUxIdHRw
UmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgaWYgKCFpbnRlcm5hbEFib3J0KCkp
CiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERv
Y3VtZW50UGFyc2VyLmNwcAppbmRleCAzZmQ3ZGJiLi4wOTYxYzRkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjQ2LDcgKzI0Niw3
IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
KiB1bnVzZWRSZXNvdXJjZSkKICAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7CiAKICAgICAvLyBK
YXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhpcyBwYXJzZXIsIG1ha2Ugc3VyZSBpdCdzIGtlcHQgYWxp
dmUgZXZlbiBpZiBkZXRhY2hlZC4KLSAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAgICAgCiAgICAgaWYgKGVycm9yT2NjdXJyZWQpCiAgICAgICAgIHNjcmlwdEVsZW1lbnQtPmRp
c3BhdGNoRXJyb3JFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNl
ci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDZlZWIxMWQuLjdjN2Q5YTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2Vy
TGlieG1sMi5jcHAKQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpk
b1dyaXRlKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcpCiAgICAgaWYgKHBhcnNlU3RyaW5nLmxl
bmd0aCgpKSB7CiAgICAgICAgIC8vIEphdmFTY3JpcHQgbWF5IGNhdXNlIHRoZSBwYXJzZXIgdG8g
ZGV0YWNoIGR1cmluZyB4bWxQYXJzZUNodW5rCiAgICAgICAgIC8vIGtlZXAgdGhpcyBhbGl2ZSB1
bnRpbCB0aGlzIGZ1bmN0aW9uIGlzIGRvbmUuCi0gICAgICAgIFJlZjxYTUxEb2N1bWVudFBhcnNl
cj4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgWE1MRG9jdW1lbnRQYXJzZXJTY29wZSBzY29wZSgm
ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CiAKQEAgLTg3Miw3ICs4NzIsNyBA
QCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQogCiAgICAgLy8gSmF2YVNj
cmlwdCBjYW4gZGV0YWNoIHRoZSBwYXJzZXIuICBNYWtlIHN1cmUgdGhpcyBpcyBub3QgcmVsZWFz
ZWQKICAgICAvLyBiZWZvcmUgdGhlIGVuZCBvZiB0aGlzIG1ldGhvZC4KLSAgICBSZWY8WE1MRG9j
dW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIXVwZGF0ZUxlYWZUZXh0Tm9kZSgpKQog
ICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278845</attachid>
            <date>2016-05-13 10:15:49 -0700</date>
            <delta_ts>2016-05-13 10:42:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157610-20160513101640.patch</filename>
            <type>text/plain</type>
            <size>163758</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VkMjc5NjMwMTY5NmU1
ZTA2ZTM1M2Q1ODliMWRjNjkyYmQyMDcwMi4uZDAwNTA0ZTU0YjYxZGVhYzgyZTNjODY3ZDBmZGZm
MDU3MTIzYTNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNSBAQAorMjAxNi0wNS0xMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVuYW1lIGFsbCBwcm90
ZWN0b3IgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBgcHJvdGVjdGVkVGhpc2AKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzYxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoUmVuYW1pbmcsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisgICAgICAgIAorICAgICAgICBXZWJD
b3JlIGhhcyBzbyBtYW55IGluc3RhbmNlcyBvZiB0aGVzZSBwcm90ZWN0b3JzIGFzIHdlbGwgYXMg
c28gbXVjaCB2YXJpYW5jZSBpbiBuYW1pbmcgdGhlbSwKKyAgICAgICAgdGhhdCBJIHRoaW5rIGl0
IGRlc2VydmVkIGEgbmV3IHN0eWxlIHBhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZp
ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHA6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2suY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cDoKKwogMjAxNi0wNS0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAg
ICAgIEhhdmUgdGhlIFdvcmtlckdsb2JhbFNjb3BlIEFQSSByZXR1cm4gbW9yZSByZWZlcmVuY2Vz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRl
eCA3YzliOWU2MDhhNWE4Y2I4YjcwNzZkZTZjOTg1ZDU2ZDRjZTE5YTg2Li42ZjM4OTAyZGE5M2I0
N2UxOTY4Njc5NDM5ODQxZDRlYWMyYzE1YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI5MSw3ICsyOTEsNyBAQCBSZWZQdHI8U2hh
cmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiAK
IHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RvcCgpCiB7Ci0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+
IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgRmV0Y2hCb2R5T3duZXI6OnN0b3AoKTsKICAgICBpZiAobV9ib2R5TG9hZGVy
KSB7CiAgICAgICAgIG1fYm9keUxvYWRlci0+c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9Ob3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcAppbmRleCAxMzE2ZDI3NDEzYjg4
MTA4NWFlYTc1MWMzMzJmYTk5MjRkZGEyMWRlLi5jZWM5N2NjOTAyZTQ1MDY4OTdmZWZiZDNlYWUy
Zjk3OTA3YWFjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb05vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0
aW9uL0dlb05vdGlmaWVyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHZvaWQgR2VvTm90aWZpZXI6
OnRpbWVyRmlyZWQoKQogCiAgICAgLy8gUHJvdGVjdCB0aGlzIEdlb05vdGlmaWVyIG9iamVjdCwg
c2luY2UgaXQKICAgICAvLyBjb3VsZCBiZSBkZWxldGVkIGJ5IGEgY2FsbCB0byBjbGVhcldhdGNo
IGluIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb05vdGlmaWVyPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8R2VvTm90aWZpZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gVGVzdCBm
b3IgZmF0YWwgZXJyb3IgZmlyc3QuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJl
IHRoZSBGcmFtZSBpcwogICAgIC8vIGRpc2Nvbm5lY3RlZCBhbmQgcmVxdWVzdHMgYXJlIGNhbmNl
bGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2Vv
bG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2Nh
dGlvbi5jcHAKaW5kZXggNzYzZDYwNTkxYjFiZmQwZjE3YjQwZGZmOGYzMzc0MzI1MjFkYzJmZC4u
M2VjNDMxNDM2ZGIyYTVhMTExNGQ2ODFkMWU1M2VmNDU4ODIxMjRlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKQEAgLTQ1NSw3
ICs0NTUsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKGludCB3YXRjaElEKQogdm9p
ZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxsb3dlZCkKIHsKICAgICAvLyBQcm90
ZWN0IHRoZSBHZW9sb2NhdGlvbiBvYmplY3QgZnJvbSBnYXJiYWdlIGNvbGxlY3Rpb24gZHVyaW5n
IGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb2xvY2F0aW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8R2VvbG9jYXRpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gVGhpcyBtYXkg
YmUgZHVlIHRvIGVpdGhlciBhIG5ldyBwb3NpdGlvbiBmcm9tIHRoZSBzZXJ2aWNlLCBvciBhIGNh
Y2hlZAogICAgIC8vIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDEyOWY0YzZmYzUzZmVjMWUyNGY0M2M3
Y2U5MGIzYTZmODA5ZTdlNTEuLjExMmI3NjRkZjEyMWNkOTgyM2NjY2ExZmRkMzcyZTI1MmY0MWJh
ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5z
YWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFu
c2FjdGlvbi5jcHAKQEAgLTk0NywxOSArOTQ3LDE5IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1
dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9u
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHBy
b3RlY3Rvcih0aGlzKTsKLSAgICBSZWZQdHI8SURCQ2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlv
bj4gb3BlcmF0aW9uUmVmKCZvcGVyYXRpb24pOwotICAgIHZhbHVlLT53cml0ZUJsb2JzVG9EaXNr
Rm9ySW5kZXhlZERCKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlvblJlZiwga2V5LCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSB7CisgICAgUmVmUHRyPElE
QlRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJlZlB0cjxJREJDbGllbnQ6
OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRPcGVyYXRpb24oJm9wZXJhdGlvbik7Cisg
ICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVkREIoW3Byb3RlY3RlZFRoaXMsIHRo
aXMsIHByb3RlY3RlZE9wZXJhdGlvbiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3Qg
SURCVmFsdWUmIGlkYlZhbHVlKSB7CiAgICAgICAgIGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgp
KSB7Ci0gICAgICAgICAgICBtX2RhdGFiYXNlLT5jb25uZWN0aW9uUHJveHkoKS5wdXRPckFkZCgq
b3BlcmF0aW9uUmVmLCBrZXkuZ2V0KCksIGlkYlZhbHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICAg
ICAgICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgpLnB1dE9yQWRkKCpwcm90ZWN0ZWRP
cGVyYXRpb24sIGtleS5nZXQoKSwgaWRiVmFsdWUsIG92ZXJ3cml0ZU1vZGUpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNu
J3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhpbmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBi
bG9icyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNz
ZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdlIGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCi0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3Iob3BlcmF0aW9uUmVmLT5p
ZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlM
aXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9i
amVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0b3IsIHRo
aXMsIG9wZXJhdGlvblJlZiwgcmVzdWx0XSgpIHsKLSAgICAgICAgICAgIG9wZXJhdGlvblJlZi0+
Y29tcGxldGVkKHJlc3VsdCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6
ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9G
aWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOworICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24sIHJl
c3VsdF0oKSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRPcGVyYXRpb24tPmNvbXBsZXRlZChyZXN1
bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlvbk9wZXJhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgK
aW5kZXggOTBjYjY0ODZkM2M3NDUyOGM5YmViNWQ3MTZhOTc1ODA5YmM0YmM1MC4uNjZiZTJhNjBj
ODMyZDk5MjM2MmQyOTcwMTFiNDNhNjZlNWY5NmI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0
aW9uLmgKQEAgLTExNCwxNSArMTE0LDE1IEBAIHB1YmxpYzoKICAgICBUcmFuc2FjdGlvbk9wZXJh
dGlvbkltcGwoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9uLCB2b2lkIChJREJUcmFuc2FjdGlv
bjo6KmNvbXBsZXRlTWV0aG9kKShjb25zdCBJREJSZXN1bHREYXRhJiksIHZvaWQgKElEQlRyYW5z
YWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25PcGVyYXRpb24mLCBBcmd1bWVudHMu
Li4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAgICAgIDogVHJhbnNhY3Rpb25PcGVy
YXRpb24odHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICBSZWZQdHI8VHJhbnNhY3Rpb25PcGVy
YXRpb24+IHNlbGYodGhpcyk7CisgICAgICAgIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgICAgICBBU1NFUlQocGVyZm9ybU1ldGhvZCk7Ci0g
ICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0gW3NlbGYsIHRoaXMsIHBlcmZvcm1NZXRob2QsIGFy
Z3VtZW50cy4uLl0geworICAgICAgICBtX3BlcmZvcm1GdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlz
LCB0aGlzLCBwZXJmb3JtTWV0aG9kLCBhcmd1bWVudHMuLi5dIHsKICAgICAgICAgICAgICgmbV90
cmFuc2FjdGlvbi5nZXQoKS0+KnBlcmZvcm1NZXRob2QpKCp0aGlzLCBhcmd1bWVudHMuLi4pOwog
ICAgICAgICB9OwogCiAgICAgICAgIGlmIChjb21wbGV0ZU1ldGhvZCkgewotICAgICAgICAgICAg
bV9jb21wbGV0ZUZ1bmN0aW9uID0gW3NlbGYsIHRoaXMsIGNvbXBsZXRlTWV0aG9kXShjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKSB7CisgICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rp
b24gPSBbcHJvdGVjdGVkVGhpcywgdGhpcywgY29tcGxldGVNZXRob2RdKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpIHsKICAgICAgICAgICAgICAgICBpZiAoY29tcGxldGVNZXRob2Qp
CiAgICAgICAgICAgICAgICAgICAgICgmbV90cmFuc2FjdGlvbi5nZXQoKS0+KmNvbXBsZXRlTWV0
aG9kKShyZXN1bHREYXRhKTsKICAgICAgICAgICAgIH07CkBAIC0xMzIsMTYgKzEzMiwxNiBAQCBw
dWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBsKElEQlRyYW5zYWN0aW9uJiB0cmFu
c2FjdGlvbiwgSURCUmVxdWVzdCYgcmVxdWVzdCwgdm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21w
bGV0ZU1ldGhvZCkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJlc3VsdERhdGEmKSwgdm9pZCAoSURC
VHJhbnNhY3Rpb246OipwZXJmb3JtTWV0aG9kKShUcmFuc2FjdGlvbk9wZXJhdGlvbiYsIEFyZ3Vt
ZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykKICAgICAgICAgOiBUcmFuc2FjdGlv
bk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVzdCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gc2VsZih0aGlzKTsKKyAgICAgICAgUmVmUHRyPFRyYW5zYWN0
aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgICAgIEFTU0VSVChwZXJm
b3JtTWV0aG9kKTsKLSAgICAgICAgbV9wZXJmb3JtRnVuY3Rpb24gPSBbc2VsZiwgdGhpcywgcGVy
Zm9ybU1ldGhvZCwgYXJndW1lbnRzLi4uXSB7CisgICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0g
W3Byb3RlY3RlZFRoaXMsIHRoaXMsIHBlcmZvcm1NZXRob2QsIGFyZ3VtZW50cy4uLl0gewogICAg
ICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qcGVyZm9ybU1ldGhvZCkoKnRoaXMsIGFy
Z3VtZW50cy4uLik7CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKGNvbXBsZXRlTWV0aG9kKSB7
CiAgICAgICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVmUmVxdWVzdCgmcmVxdWVzdCk7Ci0g
ICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbc2VsZiwgdGhpcywgcmVmUmVxdWVzdCwg
Y29tcGxldGVNZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpIHsKKyAgICAg
ICAgICAgIG1fY29tcGxldGVGdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCByZWZSZXF1
ZXN0LCBjb21wbGV0ZU1ldGhvZF0oY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkgewog
ICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZU1ldGhvZCkKICAgICAgICAgICAgICAgICAgICAg
KCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qY29tcGxldGVNZXRob2QpKCpyZWZSZXF1ZXN0LCByZXN1
bHREYXRhKTsKICAgICAgICAgICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA1
YjJhZGNjYmQ1ZTE5NzAyNGIyMjNkOWY0M2RjNjRmZTcyNDJjOGE2Li44Zjg2M2RiMmJmYzYxZDcz
MzlmZjk3YjkzNGUxNDljODEyZWFmYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAg
LTMxNCw3ICszMTQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjpoYW5kbGVDdXJyZW50T3Bl
cmF0aW9uKCkKIAogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0KTsKIAotICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlx
dWVJREJEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIGlmIChtX2N1cnJlbnRP
cGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1ZXN0KCkpCiAgICAgICAgIHBlcmZvcm1DdXJyZW50T3Bl
bk9wZXJhdGlvbigpOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZpcmVkKCkKIHsKICAgICBMT0coSW5kZXhl
ZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVyYXRpb25BbmRUcmFuc2FjdGlvblRp
bWVyRmlyZWQiKTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRo
aXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
IAogICAgIC8vIFRoaXMgVW5pcXVlSURCRGF0YWJhc2UgbWlnaHQgYmUgbm8gbG9uZ2VyIGluIHVz
ZSBieSBhbnkgd2ViIHBhZ2UuCiAgICAgLy8gQXNzdW1pbmcgaXQgaXMgbm90IGVwaGVtZXJhbCwg
dGhlIHNlcnZlciBzaG91bGQgbm93IGNsb3NlIGl0IHRvIGZyZWUgdXAgcmVzb3VyY2VzLgpAQCAt
MTI2MSwxMCArMTI2MSwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlOjphY3RpdmF0ZVRyYW5z
YWN0aW9uSW5CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJhc2VUcmFucwogewogICAgIExPRyhJ
bmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6OmFjdGl2YXRlVHJhbnNhY3Rpb25J
bkJhY2tpbmdTdG9yZSIpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlPiBzZWxmKHRo
aXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcmVmVHJhbnNhY3Rpb24o
JnRyYW5zYWN0aW9uKTsKIAotICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgc2VsZiwgcmVmVHJh
bnNhY3Rpb25dKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVmVHJhbnNhY3Rpb25dKGNvbnN0IElEQkVycm9yJiBlcnJv
cikgewogICAgICAgICByZWZUcmFuc2FjdGlvbi0+ZGlkQWN0aXZhdGVJbkJhY2tpbmdTdG9yZShl
cnJvcik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9u
LmNwcAppbmRleCBlZDZlOTMzNzlmOWU3NTZhMDcwODEzZDFlMDA3ZWFmYWM5NDc4ZTdhLi42MmUw
ZmE1NDhjYzFmMGNhYmQ1MTU4ZTk3OTQ0YzRiYzdjMWJhMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAtNzMsOSArNzMsOSBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6YWJvcnRUcmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhV
bmlxdWVJREJEYXRhYgogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uTWFwLmNvbnRhaW5zKHRyYW5z
YWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKIAogICAgIGNvbnN0IGF1dG8mIHRyYW5zYWN0
aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCk7Ci0gICAgUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJl
ZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CiAK
LSAgICBtX2RhdGFiYXNlLmFib3J0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb24sIFt0aGlzLCBwcm90
ZWN0b3IsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0oY29uc3QgSURCRXJyb3ImKSB7CisgICAgbV9k
YXRhYmFzZS5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uLCBbdGhpcywgcHJvdGVjdGVkVGhp
cywgdHJhbnNhY3Rpb25JZGVudGlmaWVyXShjb25zdCBJREJFcnJvciYpIHsKICAgICAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb25NYXAuY29udGFpbnModHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiAg
ICAgICAgIG1fdHJhbnNhY3Rpb25NYXAucmVtb3ZlKHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5k
ZXggZDk1NWFlNjAyMTg2ZTAxYWQ1NDhjNjI4OGQ4MDBjZjVjODQ4YWI1MC4uOTAyNGUzNjMxMzI4
YjkwMGE2YTUwZjZhYjVmYjIxZDE4MWQxYTU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNjgsOCArNjgsOCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmFib3J0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6YWJvcnQiKTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMpOwotICAgIG1fZGF0YWJhc2VDb25uZWN0aW9u
LT5kYXRhYmFzZSgpLmFib3J0VHJhbnNhY3Rpb24oKnRoaXMsIFt0aGlzLCBzZWxmXShjb25zdCBJ
REJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJh
c2UoKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3Qg
SURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjphYm9ydCAoY2FsbGJhY2spIik7CiAgICAgICAgIG1fZGF0YWJhc2VD
b25uZWN0aW9uLT5kaWRBYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBlcnJvcik7CiAgICAgfSk7CkBA
IC05Niw4ICs5Niw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0
KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6
Y29tbWl0Iik7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2Vs
Zih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jb21taXRUcmFu
c2FjdGlvbigqdGhpcywgW3RoaXMsIHNlbGZdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAg
IFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmNvbW1pdFRyYW5zYWN0aW9u
KCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAg
ICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21t
aXQgKGNhbGxiYWNrKSIpOwogICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGlkQ29tbWl0
VHJhbnNhY3Rpb24oKnRoaXMsIGVycm9yKTsKICAgICB9KTsKQEAgLTExMCw4ICsxMTAsOCBAQCB2
b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0
IElEQlJlcXVlc3REYXRhJiByZXF1ZQogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAg
ICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50
cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJh
c2UoKS5jcmVhdGVPYmplY3RTdG9yZSgqdGhpcywgaW5mbywgW3RoaXMsIHNlbGYsIHJlcXVlc3RE
YXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RTdG9yZSgqdGhpcywgaW5mbywgW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZU9i
amVjdFN0b3JlIChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAg
ICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENyZWF0ZU9iamVjdFN0b3JlKElEQlJl
c3VsdERhdGE6OmNyZWF0ZU9iamVjdFN0b3JlU3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRl
bnRpZmllcigpKSk7CkBAIC0xMjcsOCArMTI3LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWUK
ICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
SW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
OwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7
Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZGVsZXRlT2JqZWN0U3RvcmUo
KnRoaXMsIG9iamVjdFN0b3JlTmFtZSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJ
REJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJh
c2UoKS5kZWxldGVPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0U3RvcmVOYW1lLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6ZGVsZXRlT2Jq
ZWN0U3RvcmUgKGNhbGxiYWNrKSIpOwogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAg
ICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGlkRGVsZXRlT2JqZWN0U3RvcmUoSURCUmVz
dWx0RGF0YTo6ZGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVu
dGlmaWVyKCkpKTsKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlcwog
CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0
YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0
YWJhc2UoKS5jbGVhck9iamVjdFN0b3JlKCp0aGlzLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFt0
aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CisgICAgUmVm
UHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7Cisg
ICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuY2xlYXJPYmplY3RTdG9yZSgqdGhp
cywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERh
dGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmplY3RTdG9yZSAoY2FsbGJhY2spIik7
CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAgICAgICAgIG1fZGF0YWJhc2VDb25u
ZWN0aW9uLT5kaWRDbGVhck9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3Rv
cmVTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKQEAgLTE2MCw4ICsx
NjAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YQogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFu
Z2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1
ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlv
bi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhpcywgaW5mbywgW3RoaXMsIHNlbGYsIHJlcXVl
c3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29u
bmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhpcywgaW5mbywgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAgICAg
TE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4
IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAg
bV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENyZWF0ZUluZGV4KElEQlJlc3VsdERhdGE6OmNyZWF0
ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xNzcs
OCArMTc3LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkZWxldGVJbmRl
eChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEKICAgICBBU1NFUlQoaXNWZXJzaW9u
Q2hhbmdlKCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0g
cmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5l
Y3Rpb24tPmRhdGFiYXNlKCkuZGVsZXRlSW5kZXgoKnRoaXMsIG9iamVjdFN0b3JlSWRlbnRpZmll
ciwgaW5kZXhOYW1lLCBbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBl
cnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmRlbGV0
ZUluZGV4KCp0aGlzLCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGluZGV4TmFtZSwgW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAg
ICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZUlu
ZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAg
ICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZERlbGV0ZUluZGV4KElEQlJlc3VsdERhdGE6OmRl
bGV0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0x
OTQsOCArMTk0LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpwdXRPckFk
ZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKICAgICBBU1NFUlQoIWlzUmVh
ZE9ubHkoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSBy
ZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92
ZXJ3cml0ZU1vZGUsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVy
cm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92
ZXJ3cml0ZU1vZGUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0oY29uc3QgSURC
RXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsKICAgICAgICAgTE9HKEluZGV4
ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OnB1dE9yQWRkIChjYWxsYmFjayki
KTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBAIC0yMTEsOCArMjExLDggQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLAogCiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50
aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5nZXRSZWNvcmQocmVxdWVzdERhdGEsIGtleVJh
bmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3Is
IGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5l
Y3Rpb24tPmRhdGFiYXNlKCkuZ2V0UmVjb3JkKHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBj
b25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3JkIChjYWxsYmFjaykiKTsKIAogICAg
ICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBAIC0yMjgsOCArMjI4LDggQEAgdm9pZCBVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVx
dWVzdERhdGEsIGMKIAogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkg
PT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVu
aXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNv
bm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwg
W3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IsIHVpbnQ2NF90
IGNvdW50KSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0
Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJl
cXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CiAgICAg
ICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3Vu
dCAoY2FsbGJhY2spIik7CiAKICAgICAgICAgaWYgKGVycm9yLmlzTnVsbCgpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNl
cnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9j
ZXNzSURCU2VydmVyLmNwcAppbmRleCA5M2FjNmQ2ZDdkMjlkYTRjNjcwZGZhZGJjNGQ2MThhYzBm
MTU4OGU4Li5lZGE4NzgzMjI4MWRhNzIzMzBkNTVjNjQ1YTllYjIwNzM0ZDRlMzRkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURC
U2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtOTEsMzM0ICs5MSwzMzQgQEAgSURCU2VydmVyOjpJ
REJDb25uZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xp
ZW50KCkgY29uc3QKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRl
bGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERh
dGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0
YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlRGF0YWJhc2UocmVz
dWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0
YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0gewogICAgICAgICBtX3Nl
cnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1
bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7
CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3Vs
dERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShy
ZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFi
b3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklk
ZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgc2VsZiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5z
YWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3IpOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWRDb21taXRUcmFuc2FjdGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0
ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9y
ZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxm
LCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRp
ZENsZWFyT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7Cisg
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERh
dGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENyZWF0ZUluZGV4KHJlc3Vs
dERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRl
SW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlz
KTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERh
dGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywg
cmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkUHV0T3JBZGQo
cmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRH
ZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8
SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29u
bmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRh
JiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhp
cyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHRE
YXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMs
IHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZEdldENvdW50
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
RGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBt
X2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlUmVjb3JkKHJlc3VsdERhdGEpOwogICAgIH0p
OwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJREJS
ZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxm
LCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3Rl
Y3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRp
ZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEp
CiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0g
ewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkSXRlcmF0ZUN1cnNvcihyZXN1bHRE
YXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNh
Y3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc291cmNlSWRlbnRpZmllcl0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXNvdXJj
ZUlkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3Vy
Y2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNv
bW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVu
dGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXNvdXJjZUlkZW50
aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cywgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2Fj
dGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0
X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmll
cl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBk
YXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXJdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9u
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZv
JiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhLCBp
bmZvXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMs
IHJlc3VsdERhdGEsIGluZm9dIHsKICAgICAgICAgbV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3Jl
KHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgc2VsZiwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFtZV0geworICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0
YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1
aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHNlbGYsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlkZW50aWZpZXJdIHsKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9y
ZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiBy
ZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgaW5mb10geworICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwgaW5mb10gewogICAg
ICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERhdGEsIGluZm8pOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNl
bGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWVdIHsKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9i
amVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxl
dGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwog
ICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25z
dCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVN
b2RlIG92ZXJ3cml0ZU1vZGUpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2Vs
Zih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0geworICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YSwga2V5RGF0
YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKICAgICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJl
cXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CiAK
IHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEm
IHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsK
KyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJl
cXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChy
ZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29u
c3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtleVJhbmdl
RGF0YV0gewogICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdl
RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNv
cmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURh
dGEmIGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxm
KHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVl
c3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAg
ICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewot
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3RE
YXRhLCBpbmZvXSB7CiAgICAgICAgIG1fc2VydmVyLT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBp
bmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJz
b3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBr
ZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogCi0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxm
LCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIGtleSwgY291bnRdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVzdERhdGEsIGtleSwgY291bnQpOwog
ICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rp
b24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNh
Y3Rpb25JbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYo
dGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURC
RGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZp
ZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1ZXN0ZWRWZXJzaW9uKQogewotICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUmVmUHRyPEluUHJv
Y2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICB1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5pZGVudGlmaWVyKCk7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rpb25J
ZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVzdGVkVmVyc2lvbl0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25d
IHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQo
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3Rl
ZFZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3Rh
cnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRl
bnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBzZWxmLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CisgICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmll
ciwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZFN0YXJ0VHJhbnNh
Y3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJS
ZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9u
LCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxm
LCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0geworICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0SWRlbnRpZmll
ciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNp
b24sIG5ld1ZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAg
ICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVj
dGlvbklkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3Nl
cnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZp
ZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5k
VXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBS
ZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJl
bnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
dHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0
aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+YWJvcnRPcGVuQW5kVXBncmFkZU5l
ZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIp
OwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJ
REJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0
SWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0g
ewogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2Vs
ZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVl
c3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1h
aW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1
aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHBy
b3RlY3Rvcih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RvciwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7Cisg
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIG1haW5GcmFt
ZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRF0gewogICAgICAgICBtX3NlcnZlci0+
Z2V0QWxsRGF0YWJhc2VOYW1lcyhtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+aWRlbnRpZmllcigpLCBt
YWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxiYWNrSUQpOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRf
dCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZGF0YWJhc2VOYW1lcykKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0b3IodGhpcyk7Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0b3IsIGNhbGxiYWNrSUQsIGRhdGFi
YXNlTmFtZXNdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lc10gewogICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVz
KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDljZTQxOTg0YjgxZDAzZWNmNmZkZTll
MGViNjFhNjFlZWJiNTA3NzMuLmUyNTJhNTVlYTU4MzQ1NjIwZGVlNGI3MjY4OTQ3YTk2N2NhNGY5
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1l
ZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9V
c2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgVXNlck1lZGlhUmVx
dWVzdDo6ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoUGVybWlzc2lvbkVycm9yKCkKIAogdm9pZCBV
c2VyTWVkaWFSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkKIHsKLSAgICBSZWY8VXNlck1lZGlh
UmVxdWVzdD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1fY29udHJvbGxlcikgewogICAgICAgICBtX2Nv
bnRyb2xsZXItPmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVlc3QoKnRoaXMpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcAppbmRleCA2MTJlY2Q0YTkxNmRiM2VjMjJkNTdiMzlhN2FjY2QzYzAyZjRlYjQy
Li5kYjYxYWJmZGM1ZDRkNWJlNDZjYmFhMDk0NmUxNjY4NWE4ZWM5NzRkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9u
Q2VudGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpz
dG9wKCkKICAgICAvLyBDbGVhciBtX2NsaWVudCBpbW1lZGlhdGVseSB0byBndWFyYW50ZWUgcmVl
bnRyYW50IGNhbGxzIHRvIE5vdGlmaWNhdGlvbkNlbnRlciBkbyBub3RoaW5nLgogICAgIC8vIEFs
c28gcHJvdGVjdCB8dGhpc3wgc28gaXQncyBub3QgaW5kaXJlY3RseSBkZXN0cm95ZWQgdW5kZXIg
dXMgYnkgd29yayBkb25lIGJ5IHRoZSBjbGllbnQuCiAgICAgYXV0byYgY2xpZW50ID0gKnN0ZDo6
ZXhjaGFuZ2UobV9jbGllbnQsIG51bGxwdHIpOwotICAgIFJlZjxOb3RpZmljYXRpb25DZW50ZXI+
IHByb3RlY3RvcigqdGhpcyk7CisgICAgUmVmPE5vdGlmaWNhdGlvbkNlbnRlcj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW1fY2FsbGJhY2tzLmlzRW1wdHkoKSkKICAgICAgICAg
ZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgdGhlIHJlZiBpbiBOb3RpZmljYXRpb25DZW50ZXI6OnJl
cXVlc3RQZXJtaXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb0NvbnRleHQuY3BwCmluZGV4IDNjOGRmMmI0YWUzNThlZjJlN2VkMTU3ODFhODMzMzQ2MTEy
MWEzNWUuLjlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5MzgwNGVjMWYwMTk2NTRiY2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5
Nyw5ICs3OTcsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQog
CiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRydWU7CiAKLSAgICAgICAgUmVmUHRy
PEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVh
ZChbc3Ryb25nVGhpc10gewotICAgICAgICAgICAgc3Ryb25nVGhpcy0+ZGVsZXRlTWFya2VkTm9k
ZXMoKTsKKyAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgICAgICAgICAg
cHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQog
fQpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2Rl
cygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIFByb3RlY3QgdGhpcyBv
YmplY3QgZnJvbSBiZWluZyBkZWxldGVkIGJlZm9yZSB3ZSByZWxlYXNlIHRoZSBtdXRleCBsb2Nr
ZWQgYnkgQXV0b0xvY2tlci4KLSAgICBSZWY8QXVkaW9Db250ZXh0PiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICB7CiAgICAg
ICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKIApAQCAtMTAwMiwxMCArMTAwMiwxMCBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRDaGFuZ2UoKQogewogICAgIC8vIE1h
a2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBt
YWluIHRocmVhZCwgc2luY2UKICAgICAvLyB3ZSBjb3VsZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRo
cmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUgY291bGQgYmxvY2suCi0gICAgUmVm
UHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFk
KFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIGlmIChzdHJvbmdUaGlzLT5kb2N1bWVudCgpKQotICAg
ICAgICAgICAgc3Ryb25nVGhpcy0+ZG9jdW1lbnQoKS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsK
KyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxP
bk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMt
PmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRh
dGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwogfQogCkBAIC0xMDYzLDkgKzEwNjMsOSBAQCB2
b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZChQcm9taXNlJiYgcHJvbWlzZSkKIAogICAgIGxhenlJ
bml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMp
OwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtzdHJvbmdUaGlzXSB7Ci0gICAgICAg
IHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5kZWQpOworICAgIFJlZlB0cjxBdWRp
b0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1
c3BlbmQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0U3RhdGUo
U3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTEwOTMsOSArMTA5Myw5IEBAIHZv
aWQgQXVkaW9Db250ZXh0OjpyZXN1bWUoUHJvbWlzZSYmIHByb21pc2UpCiAKICAgICBsYXp5SW5p
dGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
LSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIHN0
cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsKKyAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUo
W3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6
OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCkBAIC0xMTE1LDEwICsxMTE1LDEwIEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpjbG9zZShQcm9taXNlJiYgcHJvbWlzZSkKIAogICAgIGxhenlJbml0aWFsaXpl
KCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIG1f
ZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbc3Ryb25nVGhpc10gewotICAgICAgICBzdHJvbmdUaGlz
LT5zZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKLSAgICAgICAgc3Ryb25nVGhpcy0+dW5pbml0aWFs
aXplKCk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPnVuaW5pdGlhbGl6ZSgpOwogICAgIH0pOwogfQogCkBAIC0xMTM2LDEwICsxMTM2LDEwIEBA
IHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2soKQogCiAgICAgbGF6eUluaXRpYWxp
emUoKTsKIAotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAg
bV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3N0cm9uZ1RoaXNdIHsKLSAgICAgICAgYm9vbCBp
bnRlcnJ1cHRlZCA9IHN0cm9uZ1RoaXMtPm1fbWVkaWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRm
b3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKLSAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3Rh
dGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJydXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsK
KyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVz
dGluYXRpb25Ob2RlLT5zdXNwZW5kKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIGJvb2wgaW50
ZXJydXB0ZWQgPSBwcm90ZWN0ZWRUaGlzLT5tX21lZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0
Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnNl
dFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRl
ZCk7CiAgICAgfSk7CiB9CiAKQEAgLTExNTgsOSArMTE1OCw5IEBAIHZvaWQgQXVkaW9Db250ZXh0
OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3VtZSkKIAogICAgIGxhenlJbml0aWFs
aXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAg
IG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0cm9uZ1RoaXNdIHsKLSAgICAgICAgc3Ryb25n
VGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbcHJv
dGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVu
bmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggYTM2YWM3ODI4Y2JhMWQ3NGU3MDY0NWU0ZmJmYjFjNWUy
MTgzNThiNy4uZGEzOGUxY2ZmODkxNjA1MDA5YWY3NTVjNDcyZGQwZTQ0N2FmMTU2MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTMz
Myw3ICszMzMsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3JtQ2xvc2UoKQogICAgIC8vIHRvIGl0
IHdpdGggYSBsb2NhbCBwb2ludGVyIGhlcmUgZm9yIGEgbGlpdGxlIGxvbmdlciwgc28gdGhhdCB3
ZSBjYW4KICAgICAvLyB1bnNjaGVkdWxlIGFueSBEYXRhYmFzZVRhc2tzIHRoYXQgcmVmZXIgdG8g
aXQgYmVmb3JlIHRoZSBkYXRhYmFzZSBnZXRzCiAgICAgLy8gZGVsZXRlZC4KLSAgICBSZWY8RGF0
YWJhc2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERh
dGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFiYXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVh
ZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggOWRhZWE1MjVlY2FmZjcx
ZjUxODk4Y2Y1YjQ2ZmM2NjA0ZGFkMDZkOC4uYTcwNzBkYzBmNGU2YWI2ZWEzODY5YWRlMzQzMzNh
NzEwMDAyMGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dl
YlNvY2tldC5jcHAKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lkIFdlYlNvY2tldDo6cmVzdW1lKCkK
IAogdm9pZCBXZWJTb2NrZXQ6OnJlc3VtZVRpbWVyRmlyZWQoKQogewotICAgIFJlZjxXZWJTb2Nr
ZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXZWJTb2NrZXQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudHMuaXNFbXB0eSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwu
Y3BwCmluZGV4IDE1ZTI3YTA5NmYzYmIzNzVhNDI1NTYxZWU5NjU2YzRjODcwYTZjZTAuLjk1MDY0
MTc3NDY5YzU1YjZjODQ4OWFjYzEwMmYwYjIwYTE1OWM3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE5
MCw3ICsxOTAsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25z
dCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVkKTsKICAgICBpZiAoIW1f
aGFuZGxlKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3Rl
Y3QoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xvc2luZyBoYW5kc2hha2UgbWF5IGZh
aWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3NlZCBhbmQgZGVyZWZlcmVuY2VkLgor
ICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gQW4gYXR0
ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0
aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KICAgICBzdGFydENsb3NpbmdIYW5k
c2hha2UoY29kZSwgcmVhc29uKTsKICAgICBpZiAobV9jbG9zaW5nICYmICFtX2Nsb3NpbmdUaW1l
ci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Nsb3NpbmdUaW1lci5zdGFydE9uZVNob3QoMiAqIFRD
UE1heGltdW1TZWdtZW50TGlmZXRpbWUpOwpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKIAogICAgIC8vIEh5YmktMTAg
c3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcyB3ZSBtdXN0IG5vdCBjb250aW51ZSB0byBo
YW5kbGUgaW5jb21pbmcgZGF0YQogICAgIC8vIG9uY2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9u
IGlzIGZhaWxlZCAoc2VjdGlvbiA3LjEuNykuCi0gICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHBy
b3RlY3QoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50
aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgorICAgIFJlZjxXZWJTb2NrZXRDaGFu
bmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNo
YW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KICAgICBtX3No
b3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAgIGlmICghbV9idWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyLnNpemUoKSk7IC8vIFNhdmUgbWVtb3J5
LgpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2Nr
ZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUpCiB2b2lkIFdlYlNvY2tldENoYW5u
ZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxl
LCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29j
a2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgpIFJlY2VpdmVkICVkIGJ5
dGVzIiwgdGhpcywgbGVuKTsKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCgqdGhp
cyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1v
dmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90
ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgogICAgIEFTU0VSVChoYW5kbGUg
PT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9kb2N1bWVudCkgewogICAgICAgICByZXR1cm47CkBA
IC00MjgsNyArNDI4LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVs
PiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBv
dGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KKyAgICBSZWY8V2ViU29ja2V0
Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRo
ZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAKICAg
ICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2NrZXRIYW5kc2hha2U6OkluY29tcGxl
dGUpIHsKICAgICAgICAgaW50IGhlYWRlckxlbmd0aCA9IG1faGFuZHNoYWtlLT5yZWFkU2VydmVy
SGFuZHNoYWtlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIuc2l6ZSgpKTsKQEAgLTQ2NSw3ICs0
NjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nlc3NCdWZmZXIoKQogCiB2b2lkIFdl
YlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoKQogewotICAgIFJlZjxXZWJTb2NrZXRD
aGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5u
ZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZS4KKyAgICBSZWY8V2Vi
U29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNs
b3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2Uu
CiAgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVudCAmJiAhbV9idWZmZXIuaXNFbXB0
eSgpKQogICAgICAgICBpZiAoIXByb2Nlc3NCdWZmZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwpA
QCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFu
ZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICAgICAgYnVmLmFwcGVu
ZChyZWFzb24udXRmOCgpLmRhdGEoKSwgcmVhc29uLnV0ZjgoKS5sZW5ndGgoKSk7CiAgICAgfQog
ICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRh
KCksIGJ1Zi5zaXplKCkpOwotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlz
KTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBmYWlsLCB3aGlj
aCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KKyAgICBSZWY8
V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8g
c2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5u
ZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCiAgICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1
ZSgpOwogCiAgICAgaWYgKG1fY2xvc2VkKSB7CkBAIC03MjksNyArNzI5LDcgQEAgdm9pZCBXZWJT
b2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1ZXVlKCkKICAgICBpZiAobV9vdXRn
b2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFtZVF1ZXVlQ2xvc2VkKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdCgqdGhpcyk7IC8v
IEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVm
ZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KIAogICAgIHdoaWxlICghbV9vdXRnb2luZ0ZyYW1lUXVldWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBtX291dGdvaW5nRnJhbWVRdWV1ZS50YWtlRmlyc3Qo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJU
aHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDhhM2Jj
NDdiODhjYmMyMjJiZjA1ZDY5MGYxYmQwNDk3YzY1ZDgxZjcuLjIyNTNhOGVkYjYyN2E5OTI5Njk3
ZjU2NWM0ZGQ5YzAzM2M0M2E2NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiB7CiAgICAgQVNTRVJUKCFtX3BlZXIp
OwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAgIFJlZjxCcmlkZ2U+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgV29y
a2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5ID0gJm1fbG9hZGVyUHJveHk7CiAgICAgUmVmUHRy
PFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKQEAgLTQ0Nyw3ICs0NDcsNyBAQCBUaHJlYWRh
YmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICBwZWVyLT5zZW5kKGNhcHR1cmVkTWVzc2FnZS5zdHJp
bmcoKSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxl
dGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xp
ZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAgICBpZiAoIWNsaWVu
dFdyYXBwZXIpCkBAIC00NzcsNyArNDc3LDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6
OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAg
ICAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIpOwogICAgIH0pOwogCi0gICAgUmVmPEJyaWRn
ZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJyaWRnZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBw
ZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyKQpAQCAtNTAzLDcgKzUwMyw3IEBAIFRo
cmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxp
emUoY2FwdHVyZWRVUkwudXJsKCksIGNhcHR1cmVkVHlwZS5zdHJpbmcoKSwgc2l6ZSwgeyB9KSk7
CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJp
ZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigp
OwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3Jh
cHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBw
ZXIpCkBAIC01MjYsNyArNTI2LDcgQEAgdW5zaWduZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJlZEFtb3VudCgpCiAgICAgICAgIHBlZXItPmJ1
ZmZlcmVkQW1vdW50KCk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICB3YWl0Rm9yTWV0
aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsKICAgICBp
ZiAoY2xpZW50V3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGQ2ZDA1Y2UzMjgxMmY1ZGUyZTk3ZDJmNzcw
MTU2ZGEyNmVkNjkwMjkuLmIwOTczNDBmNDkxODUxYjNmMzBhNDViZmQ3M2U1NjM3NzAyZDI4MTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
T2JqZWN0LmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojpjb21wdXRlZExhYmVsKCkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQg
YnkgV2ViS2l0IGluc3BlY3Rvciwgd2hpY2ggbWF5IGhhcHBlbiBhdCBhbnkgdGltZSwgc28gd2Ug
bmVlZCB0byB1cGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgbm93LgogICAgIC8vIEFsc28gaG9sZCBv
bnRvIHRoaXMgb2JqZWN0IGluIGNhc2UgdXBkYXRlQmFja2luZ1N0b3JlIGRlbGV0ZXMgdGhpcyBu
b2RlLgotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBwcm90ZWN0b3IodGhpcyk7Cisg
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAg
dXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgVmVjdG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0
OwogICAgIGFjY2Vzc2liaWxpdHlUZXh0KHRleHQpOwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAgdW5z
aWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWExpbmVGb3JJbmRleCh1bnNpZ25lZCBpbmRl
eCkKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRlQmFja2luZ1N0b3JlKCkKIHsKICAg
ICAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBkZWxldGUgdGhpcyBvYmplY3QuCi0gICAgUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQt
PnZpZXcoKS0+aXNJblJlbmRlclRyZWVMYXlvdXQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4
IDE0MWMzM2NlMzkxNzdjYjk2NDI4ZGJjZWYwZDU2NTY1ZGViOGIyNjAuLjg5MWY2ZmViMzQ3MDJk
MDU1ZmFkNTYxM2RhMTI0MzJlY2IzNTcyMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTY2
Miw3ICsxNjYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRGb2N1c2Vk
KGJvb2wgb24pCiAgICAgLy8gV2hlbiBhIG5vZGUgaXMgdG9sZCB0byBzZXQgZm9jdXMsIHRoYXQg
Y2FuIGNhdXNlIGl0IHRvIGJlIGRlYWxsb2NhdGVkLCB3aGljaCBtZWFucyB0aGF0IGRvaW5nCiAg
ICAgLy8gYW55dGhpbmcgZWxzZSBpbnNpZGUgdGhpcyBvYmplY3Qgd2lsbCBjcmFzaC4gVG8gZml4
IHRoaXMsIHdlIGFkZGVkIGEgUmVmUHRyIHRvIHByb3RlY3QgdGhpcyBvYmplY3QKICAgICAvLyBs
b25nIGVub3VnaCBmb3IgZHVyYXRpb24uCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBub2RlIGlzIGFscmVhZHkgdGhlIGN1
cnJlbnRseSBmb2N1c2VkIG5vZGUsIHRoZW4gY2FsbGluZyBmb2N1cygpIHdvbid0IGRvIGFueXRo
aW5nLgogICAgIC8vIFRoYXQgaXMgYSBwcm9ibGVtIHdoZW4gZm9jdXMgaXMgcmVtb3ZlZCBmcm9t
IHRoZSB3ZWJwYWdlIHRvIGNocm9tZSwgYW5kIHRoZW4gcmV0dXJucy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVjdEV2ZW50TGlzdGVuZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAK
aW5kZXggOWQxYjg4MWRkOWQzYjg2OGU1YjlmYzYyMjRlZTE4N2IxMjMyODQzNi4uZDRhMWQxODM1
MWNmMWFkNDEzMzJkZTE1N2QwNmIyOTE0MTc4YmFhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTU1
LDcgKzU1LDcgQEAgdm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5lcjo6Z29iamVjdERlc3Ryb3llZCgp
CiAgICAgLy8gUHJvdGVjdCAndGhpcycgY2xhc3MgaW4gY2FzZSB0aGUgJ21fY29yZVRhcmdldCcg
aG9sZHMgdGhlIGxhc3QgcmVmZXJlbmNlLAogICAgIC8vIHdoaWNoIG1heSBjYXVzZSwgaW5zaWRl
IHJlbW92ZUV2ZW50TGlzdGVuZXIoKSwgZnJlZSBvZiB0aGlzIG9iamVjdAogICAgIC8vIGFuZCBs
YXRlciB1c2UtYWZ0ZXItZnJlZSB3aXRoIHRoZSBtX2hhbmRsZXIgPSAwOyBhc3NpZ25tZW50Lgot
ICAgIFJlZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQ
dHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBtX2Nv
cmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlz
LCBtX2NhcHR1cmUpOwogICAgIG1fY29yZVRhcmdldCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAppbmRleCBl
YzAxYmJjNThkMDMyYmFjYWQ4Mjg1YjNjMDlmOTRiYTc2NDdlMThjLi5iZTBiZjg2NDg1MzcxMjE1
Y2QyZDliMDcxNjMwZWIyOWY5YWZkMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKQEAgLTYxLDcgKzYxLDcg
QEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxl
bWVudChjb25zdCBBdG9taWNTdHJpbmcmIHQKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVk
V29ybGQtPnZtKCkpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8SlNDdXN0b21FbGVt
ZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lz
b2xhdGVkV29ybGQtPnZtKCkpOwogCiAgICAgaWYgKCFtX2NvbnN0cnVjdG9yKQpAQCAtMTU2LDcg
KzE1Niw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2Vk
KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllCiAgICAgaWYgKCFjYW5JbnZva2VDYWxs
YmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRX
b3JsZC0+dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCmluZGV4IDIwNjFk
YTlhOTU3YTA4NWMzMDFlOWQ4YTM5YzU3ZGZjYzFkMzllNDAuLjc5NzMzZTU4NjNlMjJjZjA1YzRj
NDdiYTJkMTk2M2Y0ZDkzM2VmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcApA
QCAtNDUsNyArNDUsNyBAQCBib29sIEpTU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxl
RXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBTUUxFcgogICAgIGlmICghbV9kYXRh
IHx8ICFtX2RhdGEtPmdsb2JhbE9iamVjdCgpIHx8ICFjYW5JbnZva2VDYWxsYmFjaygpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEt
Pmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IGVlOWY5Njg5MGFhNzJm
ZTAwZjI5NzExMzg3ZGMzYmU3YTkzYzZkODQuLmMzYWNmNWQ1YjZiZmY4YzYxN2M4ODNhZDZkNmM5
OWI5NDQxOTNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgU3RyaW5nIEpTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVm
aXgpCiAgICAgICAgIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNvbHZlci5nZXQoKTsKICAgICB9CiAK
LSAgICBSZWY8SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI+IHNlbGZQcm90ZWN0b3IoKnRoaXMpOwor
ICAgIFJlZjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5n
V2l0aENhY2hlKGV4ZWMsIHByZWZpeCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKaW5kZXggMWYyMWZjNjZmNTAxZTAwYTQw
NzAyMGZjMzUyNDZiNTQ0NWVhZTc1OS4uYzYyMzA3ZThmZjdhZDgxYTliMDk5YjIzNWMyYjVlMTVk
M2RjYWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9i
YWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUds
b2JhbE9iamVjdFRhc2suY3BwCkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYg
KCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJl
ZjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEpT
R2xvYmFsT2JqZWN0Q2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7CiAKICAgICAgICAgRXhlY1N0YXRl
KiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmluZGV4IDA0YWU4YTMzMmM2YTExMjhk
MTMyOTE4Y2I5Y2IzYzlmZGVhM2RmYTcuLmVmOWU2NzNjNTlhY2UwMDJjNDNhMDE4ZGQwMWNkYTJl
YTE3NTNkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dC
YXNlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgY2FsbCgpCiAg
ICAgewotICAgICAgICBSZWY8SlNET01XaW5kb3dNaWNyb3Rhc2tDYWxsYmFjaz4gcHJvdGVjdCgq
dGhpcyk7CisgICAgICAgIFJlZjxKU0RPTVdpbmRvd01pY3JvdGFza0NhbGxiYWNrPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9nbG9iYWxPYmplY3Qt
PnZtKCkpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9y
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5j
cHAKaW5kZXggNmViYTRkZWE4NDk1ZmM0YmVlNTZmZWQxYjRhZThhMDBjYjljMWNmNS4uZGI5NGE2
MTdkMjE3ZjZjOWMxYTcwMTg4NzIwODVjMjk1ZjkwOTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAtODQsNyArODQsNyBAQCB2b2lkIEpT
RXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LAogICAgIENhbGxUeXBlIGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0
aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwgY2FsbERhdGEpOwogCiAgICAgaWYg
KGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7Ci0gICAgICAgIFJlZjxKU0Vycm9ySGFuZGxl
cj4gcHJvdGVjdGVkY3RvcigqdGhpcyk7CisgICAgICAgIFJlZjxKU0Vycm9ySGFuZGxlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgRXZlbnQqIHNhdmVkRXZlbnQgPSBnbG9iYWxP
YmplY3QtPmN1cnJlbnRFdmVudCgpOwogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRF
dmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAppbmRleCBkZDI4MjA0YjAwZmJlN2FhYzM0NDFjMWYzNjBjZTA0ZTMwZjdlODJiLi5j
YzU0ZmQ0YTgxODQ5NzdhNjA0YjVmOTRhNTg1MjEzMmExZDg2ODdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTExNCw3ICsxMTQsNyBA
QCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIH0KIAogICAgIGlmIChjYWxsVHlwZSAhPSBD
YWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBSZWY8SlNFdmVudExpc3RlbmVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICAgICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICAgICAgYXJncy5hcHBl
bmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcAppbmRleCBkMGE3YmIwOTcyNmNk
ZGYxN2FjOTM0NDRmNWNmODBjZDIxZDc1YjUzLi5mZWU5NzZlMzFhYzc5N2ZjZjZmYmQyMzkyMjJh
ZjdiYjAxNjY4OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011
dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0
YXRpb25DYWxsYmFjay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBKU011dGF0aW9uQ2FsbGJh
Y2s6OmNhbGwoY29uc3QgVmVjdG9yPFJlZjxNdXRhdGlvblJlY29yZD4+JiBtdXRhdGlvbnMsIE11
dGEKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU011dGF0
aW9uQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxv
Y2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKaW5kZXggMDFiNTM2M2YxNTBjZWVhZjU0NDU2
Y2MxYWM4ZTIyMDg2NjgyMmI5MS4uNTQ3NTZiODdhMDc2OThlNDAwMDY3NDdmMzlmNmFjNTYwMWUw
ZDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJD
dXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBib29s
ZWFuLgogdWludDE2X3QgSlNOb2RlRmlsdGVyOjphY2NlcHROb2RlKE5vZGUqIG5vZGUpCiB7Ci0g
ICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEpTTm9kZUZpbHRl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEt
Pmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggZjZkMmY2ZWY4NTQ3YzY4ZjAx
NzUwYjU2NDVjZjFlYzY2Yjk0MzJlNy4uZTkwYTJkYzc2YWI1ZDNjZmJiNjMzZmVhMmMwMDJkZjY2
MTQ2YTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXpl
ZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxp
emVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODAwLDggKzI4MDAsOCBAQCB2b2lkIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4ZWREQihzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGNvbgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JV
UkxzKCkpOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcHJvdGVjdG9yKHRo
aXMpOwotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNUb1RlbXBvcmFyeUZpbGVzKG1fYmxv
YlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciwgdGhpcywgcHJvdGVjdG9yXShjb25zdCBWZWN0b3I8
U3RyaW5nPiYgYmxvYkZpbGVQYXRocykgeworICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgYmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1Rv
VGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBsZXRpb25IYW5kbGVyLCB0aGlzLCBwcm90
ZWN0ZWRUaGlzXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocykgewogICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAgIGlmIChibG9iRmlsZVBhdGhzLmlz
RW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbQppbmRleCA1ZjY1ZDFlYzRlZjIxYjU4MjgwMDQ4YWQ2ZTY0YzE5ZDRkMWI0
Njc3Li5mY2M1NzYyNmU4N2U1NGViNzU5OWRmODgyZDM5NGMyNDE2Yzk5ZThiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAt
NDA0Niw3ICs0MDQ2LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBhcmdzQ2hlY2spIGlmIEBhcmdzQ2hlY2s7CiAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4g
dHJ1ZTtcblxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBSZWY8JGNs
YXNzTmFtZT4gcHJvdGVjdCgqdGhpcyk7XG5cbiIpOworICAgICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3RlZFRoaXMoKnRoaXMpO1xuXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEpTTG9ja0hvbGRlciBsb2NrKG1f
ZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCk7XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRp
bWVfcm9vdC5jcHAKaW5kZXggYTYxZDFkMzQxZTY0OGQ0NTg4MzhhZTQ1NGE4MWU4NGY3MmI5ZjI0
Ny4uZjMwOTIyMDJhMmUxZmJmYzUzZWQ2ZTFjMWQ1MTRjMTZjMGE0ODgxOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFJvb3RP
YmplY3Q6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKikK
IHsKICAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBzdGF0aWNfY2FzdDxSdW50aW1lT2JqZWN0
Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogCi0gICAgUmVmPFJvb3RPYmplY3Q+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxSb290T2JqZWN0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAg
ICBvYmplY3QtPmludmFsaWRhdGUoKTsKICAgICB3ZWFrUmVtb3ZlKG1fcnVudGltZU9iamVjdHMs
IG9iamVjdCwgb2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
b250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAK
aW5kZXggOTdlNDQ1MDY4NGI1YzU3MWY0OTkwOWQ3ODdiZTY0MTM0NzdlNzY4NC4uZThiMjE4NWU2
MDkzNGQyYWUzMjIxMmY3YjliNGEyZmYwNmQwODYwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0Zv
bnRTZWxlY3Rvci5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2b2lkIENTU0ZvbnRTZWxlY3Rvcjo6
YmVnaW5Mb2FkVGltZXJGaXJlZCgpCiAgICAgZm9udHNUb0JlZ2luTG9hZGluZy5zd2FwKG1fZm9u
dHNUb0JlZ2luTG9hZGluZyk7CiAKICAgICAvLyBDU1NGb250U2VsZWN0b3IgY291bGQgZ2V0IGRl
bGV0ZWQgdmlhIGJlZ2luTG9hZElmTmVlZGVkKCkgb3IgbG9hZERvbmUoKSB1bmxlc3MgcHJvdGVj
dGVkLgotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxD
U1NGb250U2VsZWN0b3I+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9kb2N1bWVudC0+Y2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKTsKICAgICBmb3IgKGF1dG8mIGZvbnRIYW5kbGUgOiBmb250c1RvQmVnaW5Mb2Fk
aW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCmluZGV4IDNl
MzAxNDk5YjVmMjQwOTRhYzBhZTdmZTAxMTc5YjNlNTY2Y2QxNmYuLmZmNjM3MzYyYmM4Y2FjNzdi
NDEyMDJmNjAxNzcwZTk2NzE1MTFiYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9pZCBTdHlsZVNoZWV0Q29udGVudHM6
OmNoZWNrTG9hZGVkKCkKICAgICAvLyBBdm9pZCB8dGhpc3wgYmVpbmcgZGVsZXRlZCBieSBzY3Jp
cHRzIHRoYXQgcnVuIHZpYQogICAgIC8vIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcjo6ZXhlY3V0
ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9i
bGVtLzY2MjIzMDA+LgotICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAg
IFN0eWxlU2hlZXRDb250ZW50cyogcGFyZW50U2hlZXQgPSBwYXJlbnRTdHlsZVNoZWV0KCk7CiAg
ICAgaWYgKHBhcmVudFNoZWV0KSB7CiAgICAgICAgIHBhcmVudFNoZWV0LT5jaGVja0xvYWRlZCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmluZGV4IDYxNzk2MTc0MTUzOGNkM2Fk
YjQxOWU3NzVjMmYxNDNlYzZkOTQwMzMuLjNjMGQyYTg0NDQ1NTJkM2U1MDQ0MWU1N2MxNDU3MzZj
ZjY5M2QwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKQEAgLTQzLDcgKzQz
LDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGNvbnN0IFN0cmluZyYgZGF0YSkKICAg
ICBpZiAobV9kYXRhID09IG5vbk51bGxEYXRhKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8
Q2hhcmFjdGVyRGF0YT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPENoYXJhY3RlckRhdGE+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgdW5zaWduZWQgb2xkTGVuZ3RoID0gbGVuZ3RoKCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCA5ZTIzZDljZDM1NmRhNjNk
NDgwZDQwMWVkOTdiODExNTZkYjNhZGFhLi4wZjJmNzY0NTJmMmU5MWI2N2YxNWJhMWJlMmFhMTg4
MWQ0YWJmZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCkBAIC0yMzEsNyAr
MjMxLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRCZWZvcmUoTm9kZSYgbmV3Q2hpbGQs
IE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4g
YmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgog
ICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKLSAg
ICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPENvbnRhaW5lck5v
ZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMgPSAwOwogCkBAIC0zODYsNyArMzg2
LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hpbGQoTm9kZSYgbmV3Q2hpbGQsIE5v
ZGUmIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJgogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUg
ZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgogICAg
IEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKLSAgICBS
ZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPENvbnRhaW5lck5vZGU+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMgPSAwOwogCkBAIC01MDQsNyArNTA0LDcg
QEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChOb2RlJiBvbGRDaGlsZCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lk
ZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMuCiAgICAgQVNTRVJUKHJlZkNvdW50
KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAotICAgIFJlZjxDb250YWluZXJOb2Rl
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICBlYyA9IDA7CiAKQEAgLTYxMSw3ICs2MTEsNyBAQCB2b2lkIENvbnRhaW5l
ck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gVGhlIGNv
bnRhaW5lciBub2RlIGNhbiBiZSByZW1vdmVkIGZyb20gZXZlbnQgaGFuZGxlcnMuCi0gICAgUmVm
PENvbnRhaW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxDb250YWluZXJOb2RlPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIGV4Y2x1ZGUgdGhpcyBub2RlIHdoZW4gbG9v
a2luZyBmb3IgcmVtb3ZlZCBmb2N1c2VkTm9kZSBzaW5jZSBvbmx5IGNoaWxkcmVuIHdpbGwgYmUg
cmVtb3ZlZAogICAgIGRvY3VtZW50KCkucmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUodGhpcywg
dHJ1ZSk7CkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGls
ZHJlbigpCiAKIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5kQ2hpbGQoTm9kZSYgbmV3Q2hpbGQs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZsb2F0aW5nIi4KICAgICAvLyBJZiBp
dCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0
aW9uIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDVmNzcwYWU5N2RhMDdiNGI5
Mzc3MzgzZmQ5MjE3NTZjZTFkZTlmYjguLjJlZDI1MGYxYWQ5YzY3OGFhNzhlYzliM2IyZjBmZjI1
YWYxMDE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjY5NCw3ICsyNjk0LDcgQEAg
dm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8v
IENhbGwgdG8gZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQgY2FuIGJsb3cgdXMgZnJvbSB1bmRlcm5l
YXRoLgotICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERvY3VtZW50
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fcHJvY2Vzc2luZ0xvYWRFdmVudCA9IHRy
dWU7CiAKQEAgLTU5MjcsNyArNTkyNyw3IEBAIHZvaWQgRG9jdW1lbnQ6OmZ1bGxTY3JlZW5DaGFu
Z2VEZWxheVRpbWVyRmlyZWQoKQogICAgIC8vIFNpbmNlIHdlIGRpc3BhdGNoIGV2ZW50cyBpbiB0
aGlzIGZ1bmN0aW9uLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhlCiAgICAgLy8gZG9jdW1lbnQgd2ls
bCBiZSBkZXRhY2hlZCBhbmQgR0MnZC4gV2UgcHJvdGVjdCBpdCBoZXJlIHRvIG1ha2Ugc3VyZSB3
ZQogICAgIC8vIGNhbiBmaW5pc2ggdGhlIGZ1bmN0aW9uIHN1Y2Nlc3NmdWxseS4KLSAgICBSZWY8
RG9jdW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgRGVxdWU8UmVmUHRyPE5vZGU+PiBjaGFuZ2VRdWV1ZTsKICAgICBtX2Z1
bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnN3YXAoY2hhbmdlUXVldWUpOwogICAgIERl
cXVlPFJlZlB0cjxOb2RlPj4gZXJyb3JRdWV1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3Bw
CmluZGV4IDg2OTVjNTk3Y2Y0YzJhNjQzNTU5ZThiYTc3YWZhZmU0ZTU0YzY1YjUuLmVjMjEwOTg2
N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEzY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFy
Z2V0LmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIGJvb2wgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExp
c3RlbmVycyhFdmVudCYgZXZlbnQpCiAgICAgICAgIAogdm9pZCBFdmVudFRhcmdldDo6ZmlyZUV2
ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCwgRXZlbnRUYXJnZXREYXRhKiBkLCBFdmVudExpc3Rl
bmVyVmVjdG9yJiBlbnRyeSkKIHsKLSAgICBSZWY8RXZlbnRUYXJnZXQ+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBG
aXJlIGFsbCBsaXN0ZW5lcnMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBldmVudC4gRG9uJ3QgZmlyZSBs
aXN0ZW5lcnMgcmVtb3ZlZCBkdXJpbmcgZXZlbnQgZGlzcGF0Y2guCiAgICAgLy8gQWxzbywgZG9u
J3QgZmlyZSBldmVudCBsaXN0ZW5lcnMgYWRkZWQgZHVyaW5nIGV2ZW50IGRpc3BhdGNoLiBDb252
ZW5pZW50bHksIGFsbCBuZXcgZXZlbnQgbGlzdGVuZXJzIHdpbGwgYmUgYWRkZWQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmNwcAppbmRleCAxOWJjZjhlYWI4YTY0MThhNzdjY2I5ZTk3NDVlODUzMGE5N2Y2OGI0Li5iMjEw
MGFlMmViNDRjMjgyNTgzMWMxN2EyMmNjNDE2MGFjMTJhNjljIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBA
IC0yMjMzLDcgKzIyMzMsNyBAQCBib29sIE5vZGU6OmRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKQogICAgIGlmICghZG9jdW1lbnQoKS5oYXNMaXN0ZW5lclR5
cGUoRG9jdW1lbnQ6OkJFRk9SRUxPQURfTElTVEVORVIpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
IAotICAgIFJlZjxOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Tm9kZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgUmVmPEJlZm9yZUxvYWRFdmVudD4gYmVmb3JlTG9hZEV2ZW50ID0g
QmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoc291cmNlVVJMKTsKICAgICBkaXNwYXRjaEV2ZW50KGJl
Zm9yZUxvYWRFdmVudCk7CiAgICAgcmV0dXJuICFiZWZvcmVMb2FkRXZlbnQtPmRlZmF1bHRQcmV2
ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25D
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNw
cAppbmRleCAyNWRhMmQ2OTcxODczZDU4NWJiNjA1OThhZWU0MWYyZmI5YzU1MjY3Li4xZGU5NzVk
Y2QzYmM1MDE4YTM0NDEzMTQ5MGFjNTM2ZGYwNmE5ZDllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3NhZ2VQb3J0RXZlbnRzKCkKIHsKICAg
ICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSAgICBSZWY8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSBhIGZyb3plbiBjb3B5IG9mIHRoZSBwb3J0cyBz
byB3ZSBjYW4gaXRlcmF0ZSB3aGlsZSBuZXcgb25lcyBtaWdodCBiZSBhZGRlZCBvciBkZXN0cm95
ZWQuCiAgICAgVmVjdG9yPE1lc3NhZ2VQb3J0Kj4gcG9zc2libGVNZXNzYWdlUG9ydHM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCmlu
ZGV4IGZiMjk0NTE0ZDE2NjUyZGU1ZmYwMzU4YmYxOTIyZDUzYjI2Y2ExODguLmZkN2RjY2U0ZTVm
MzBiYTY1YTI5MTFjYjdhOWU3NmQyNjA3ODYwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAg
dm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNlcnZpY2VTY3JpcHRlZEFuaW1hdGlv
bnMoZG91YmxlIG1vbm90b25pY1RpbWUKIAogICAgIC8vIEludm9raW5nIGNhbGxiYWNrcyBtYXkg
ZGV0YWNoIGVsZW1lbnRzIGZyb20gb3VyIGRvY3VtZW50LCB3aGljaCBjbGVhcnMgdGhlIGRvY3Vt
ZW50J3MKICAgICAvLyByZWZlcmVuY2UgdG8gdXMsIHNvIHRha2UgYSBkZWZlbnNpdmUgcmVmZXJl
bmNlLgotICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNhbGxiYWNrcykgewogICAgICAgICBp
ZiAoIWNhbGxiYWNrLT5tX2ZpcmVkT3JDYW5jZWxsZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3RyaW5n
Q2FsbGJhY2suY3BwCmluZGV4IGIzZjk0Y2VhZDcxZjRhNzcyYWJmY2QyNjBmZTU2YjQwMDdiZjFh
ZjQuLjgyNTNiNGI0NmY0ODlhMDBmNGEyZWYwYzFkN2E1NjBlMjRhODQ0YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtMzgsOSArMzgsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIHZvaWQgU3RyaW5nQ2FsbGJhY2s6OnNjaGVkdWxlQ2FsbGJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBkYXRhKQogewotICAgIFJlZlB0
cjxTdHJpbmdDYWxsYmFjaz4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGNvbnRleHQtPnBvc3RUYXNr
KFtwcm90ZWN0b3IsIGRhdGFdIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewotICAgICAgICBw
cm90ZWN0b3ItPmhhbmRsZUV2ZW50KGRhdGEpOworICAgIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjb250ZXh0LT5wb3N0VGFzayhbcHJvdGVjdGVkVGhp
cywgZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPmhhbmRsZUV2ZW50KGRhdGEpOwogICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAwMWI1OWU3ZGI1MjliNDkyNmIwMzY1MjQ1NjhmNmUx
ODliMDY0MWE5Li5iMDZmNDk5NjA5N2ViNTczMTAzNzlkOWY3MmNhM2FlZjM2ZGFjY2RjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHAKQEAgLTE2Myw3ICsxNjMsNyBA
QCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlv
biBwbHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICBWZWN0b3I8U3RyaW5nPiBwYXJhbVZhbHVlczsK
ICAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFtZXMsIHBhcmFtVmFsdWVzKTsKIAotICAg
IFJlZjxIVE1MRW1iZWRFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gTG9hZGluZyB0aGUgcGx1
Z2luIG1pZ2h0IHJlbW92ZSB1cyBmcm9tIHRoZSBkb2N1bWVudC4KKyAgICBSZWY8SFRNTEVtYmVk
RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIExvYWRpbmcgdGhlIHBsdWdpbiBtaWdo
dCByZW1vdmUgdXMgZnJvbSB0aGUgZG9jdW1lbnQuCiAgICAgYm9vbCBiZWZvcmVMb2FkQWxsb3dl
ZExvYWQgPSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQobV91cmwpOwogICAgIGlmICgh
YmVmb3JlTG9hZEFsbG93ZWRMb2FkKSB7CiAgICAgICAgIGlmIChpczxQbHVnaW5Eb2N1bWVudD4o
ZG9jdW1lbnQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1D
b250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCmluZGV4IGFhNDBhNDYxMTM3YTIxYjliZjVkZThmNDdjZWJkMDRhYWM4NmIxZDku
LjFmODNmNWE3M2RhMDg0NTNjNTNlNmM3YjNlMThiZjUzMDhhZWM0MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcApAQCAtNDgwLDcgKzQ4MCw3
IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eShWZWN0b3I8UmVm
UHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+CiAgICAgaWYgKCF3aWxsVmFsaWRhdGUoKSB8fCBp
c1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIC8v
IEFuIGV2ZW50IGhhbmRsZXIgY2FuIGRlcmVmIHRoaXMgb2JqZWN0LgotICAgIFJlZjxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTEZvcm1Db250cm9s
RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVmPERvY3VtZW50PiBvcmlnaW5h
bERvY3VtZW50KGRvY3VtZW50KCkpOwogICAgIGJvb2wgbmVlZHNEZWZhdWx0QWN0aW9uID0gZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnZhbGlkRXZlbnQsIGZhbHNl
LCB0cnVlKSk7CiAgICAgaWYgKG5lZWRzRGVmYXVsdEFjdGlvbiAmJiB1bmhhbmRsZWRJbnZhbGlk
Q29udHJvbHMgJiYgaW5Eb2N1bWVudCgpICYmIG9yaWdpbmFsRG9jdW1lbnQucHRyKCkgPT0gJmRv
Y3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggOGNl
Y2QyZTNiNDk0NmQ1YTc2N2ViMDUxZTYyZmY4OWZmYzM3MDQwZC4uOGRkMzczMzBlODU4ZjRkZjE4
NTMxNDZlMWZjMzhmYWEwMjUzMTg4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVt
ZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50Ojp2YWxpZGF0
ZUludGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50KQogICAgIC8vIGhhcyAhcmVuZGVyZXIoKS0+bmVl
ZHNMYXlvdXQoKSBhc3NlcnRpb24uCiAgICAgZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQ
ZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgLy8gRm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJsZSBjb250cm9sIGFuZCBzaG93IGEg
dmFsaWRhdGlvbiBtZXNzYWdlLgogICAgIGZvciAoYXV0byYgY29udHJvbCA6IHVuaGFuZGxlZElu
dmFsaWRDb250cm9scykgewpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50
OjpwcmVwYXJlRm9yU3VibWlzc2lvbihFdmVudCogZXZlbnQpCiAgICAgUmVmUHRyPEZvcm1TdGF0
ZT4gZm9ybVN0YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUodGhpcywgY29udHJvbE5hbWVzQW5kVmFs
dWVzLCAmZG9jdW1lbnQoKSwgTm90U3VibWl0dGVkQnlKYXZhU2NyaXB0KTsKICAgICBmcmFtZS0+
bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hXaWxsU2VuZFN1Ym1pdEV2ZW50KGZvcm1TdGF0ZS5y
ZWxlYXNlKCkpOwogCi0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgLy8gRXZl
bnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1Ym1pdCBiZWNvbWluZyB0cnVlLCBy
ZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4gdmFsdWUuCiAgICAgaWYgKGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VibWl0RXZlbnQsIHRydWUsIHRy
dWUpKSkKICAgICAgICAgbV9zaG91bGRTdWJtaXQgPSB0cnVlOwpAQCAtMzU2LDcgKzM1Niw3IEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXQoRXZlbnQqIGV2ZW50LCBib29sIGFjdGl2YXRl
U3VibWl0QnV0dG9uLCBib29sIHByb2NlCiAgICAgICAgIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1
dHRvbi0+c2V0QWN0aXZhdGVkU3VibWl0KHRydWUpOwogCiAgICAgTG9ja0hpc3RvcnkgbG9ja0hp
c3RvcnkgPSBwcm9jZXNzaW5nVXNlckdlc3R1cmUgPyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2NrSGlz
dG9yeTo6WWVzOwotICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOyAvLyBG
b3JtIHN1Ym1pc3Npb24gY2FuIGV4ZWN1dGUgYXJiaXRhcnkgSmF2YVNjcmlwdC4KKyAgICBSZWY8
SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gRm9ybSBzdWJtaXNzaW9u
IGNhbiBleGVjdXRlIGFyYml0YXJ5IEphdmFTY3JpcHQuCiAgICAgZnJhbWUtPmxvYWRlcigpLnN1
Ym1pdEZvcm0oRm9ybVN1Ym1pc3Npb246OmNyZWF0ZSh0aGlzLCBtX2F0dHJpYnV0ZXMsIGV2ZW50
LCBsb2NrSGlzdG9yeSwgZm9ybVN1Ym1pc3Npb25UcmlnZ2VyKSk7CiAKICAgICBpZiAobmVlZEJ1
dHRvbkFjdGl2YXRpb24gJiYgZmlyc3RTdWNjZXNzZnVsU3VibWl0QnV0dG9uKQpAQCAtNzIwLDcg
KzcyMCw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpjaGVja1ZhbGlkaXR5KCkKIAogYm9vbCBI
VE1MRm9ybUVsZW1lbnQ6OmNoZWNrSW52YWxpZENvbnRyb2xzQW5kQ29sbGVjdFVuaGFuZGxlZChW
ZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+JiB1bmhhbmRsZWRJbnZhbGlkQ29u
dHJvbHMpCiB7Ci0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgLy8gQ29weSBt
X2Fzc29jaWF0ZWRFbGVtZW50cyBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNhbGxlZCBmcm9tCiAg
ICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tWYWxpZGl0eSgpIG1pZ2h0IGNoYW5n
ZSBtX2Fzc29jaWF0ZWRFbGVtZW50cy4KICAgICBWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVk
RWxlbWVudD4+IGVsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5j
cHAKaW5kZXggNWZhMjVmNzk4ZTA5MjBlY2YzNGRkYmQ3ZDQ5YmJlZWZiZTFkYWY3YS4uYWMyZTAz
M2QwYWMxMjk3MGE4NzliMWVkYzA5Mzg0MWJkYzllODNiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC05ODksNyArOTg5LDcgQEAgdm9pZCBIVE1MSW5wdXRF
bGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVlLCBUZXh0RmllbGRFdmVudEJlaGF2
aW9yIGV2ZW4KICAgICBpZiAoIW1faW5wdXRUeXBlLT5jYW5TZXRWYWx1ZSh2YWx1ZSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIFJlZjxIVE1MSW5wdXRFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgRXZl
bnRRdWV1ZVNjb3BlIHNjb3BlOwogICAgIFN0cmluZyBzYW5pdGl6ZWRWYWx1ZSA9IHNhbml0aXpl
VmFsdWUodmFsdWUpOwogICAgIGJvb2wgdmFsdWVDaGFuZ2VkID0gc2FuaXRpemVkVmFsdWUgIT0g
dGhpcy0+dmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcAppbmRl
eCA1ODdjYjA1OTI3YTRiYTk2YzY5ZjNiMmJkNzMxMGIyZDQyMjU4YWFlLi5hZTYyOWU5YmY2YWE3
MzJmM2U5OTU4YWE0MTczNGUwNDVjY2VlN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNl
dENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBjb25zdCBVUkwmIGJhc2VVUkwsIGMK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ29tcGxldGluZyB0aGUgc2hlZXQgbG9hZCBtYXkg
Y2F1c2Ugc2NyaXB0cyB0byBleGVjdXRlLgotICAgIFJlZjxIVE1MTGlua0VsZW1lbnQ+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxIVE1MTGlua0VsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KGRvY3VtZW50KCksIGJhc2VV
UkwsIGNoYXJzZXQpOwogICAgIGF1dG8gY2FjaGVQb2xpY3kgPSBmcmFtZS0+bG9hZGVyKCkuc3Vi
cmVzb3VyY2VDYWNoZVBvbGljeSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVu
dC5jcHAKaW5kZXggZDUxMTkwNTMzNmRjODkyMDgwNzcyYmU5MzVkYjQxNjQwZWI1MzI3NC4uMzU5
Yzk1N2ZkYWZlZjNmYzVkNzJiYzdmYjAzNjUwNzY4NzBmNjgwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MzYsNyArOTM2LDcgQEAgdm9pZCBIVE1MTWVk
aWFFbGVtZW50Ojpub3RpZnlBYm91dFBsYXlpbmcoKQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKCkKIHsKLSAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4g
cHJvdGVjdCgqdGhpcyk7IC8vIGxvYWROZXh0U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxv
YWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KKyAgICBSZWY8SFRN
TE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIGxvYWROZXh0U291cmNlQ2hp
bGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11
dGF0aW9ucy4KICAgICBQZW5kaW5nQWN0aW9uRmxhZ3MgcGVuZGluZ0FjdGlvbnMgPSBtX3BlbmRp
bmdBY3Rpb25GbGFnczsKICAgICBtX3BlbmRpbmdBY3Rpb25GbGFncyA9IDA7CiAKQEAgLTEwMzgs
NyArMTAzOCw3IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50OjpnZXRTdGFydERhdGUoKSBjb25z
dAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQogewotICAgIFJlZjxIVE1MTWVkaWFF
bGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZEludGVybmFsIG1heSByZXN1bHQgaW4gYSAn
YmVmb3JlbG9hZCcgZXZlbnQsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25z
LgorICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gbG9h
ZEludGVybmFsIG1heSByZXN1bHQgaW4gYSAnYmVmb3JlbG9hZCcgZXZlbnQsIHdoaWNoIGNhbiBt
YWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIAogICAgIExPRyhNZWRpYSwgIkhUTUxN
ZWRpYUVsZW1lbnQ6OmxvYWQoJXApIiwgdGhpcyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDc5NGIxMjM1MTVkNDg4YjBhMjMwMDhjOTBkZjJl
MmZlYjBkMWUzODYuLjM1YTMzYWU1ZWYwMmMyNTVhNDFmNzNjOTM0YjliNTJhY2Q1ZDY4Y2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCkBAIC0zMjAsNyArMzIw
LDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRlV2lkZ2V0KFBsdWdpbkNyZWF0aW9u
T3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gYmVmb3JlbG9hZCBh
bmQgcGx1Z2luIGxvYWRpbmcgY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCisgICAg
UmVmPEhUTUxPYmplY3RFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gYmVmb3JlbG9h
ZCBhbmQgcGx1Z2luIGxvYWRpbmcgY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCiAg
ICAgYm9vbCBiZWZvcmVMb2FkQWxsb3dlZExvYWQgPSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2Fk
RXZlbnQodXJsKTsKICAgICBpZiAoIXJlbmRlcmVyKCkpIC8vIERvIG5vdCBsb2FkIHRoZSBwbHVn
aW4gaWYgYmVmb3JlbG9hZCByZW1vdmVkIHRoaXMgZWxlbWVudCBvciBpdHMgcmVuZGVyZXIuCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAK
aW5kZXggMzQzYWQ0MTlkNTQ3NWRiMzMzYzljZDc1NzVjODQ4NjE1ODIyZDE0Mi4uODdmYjY3NDkw
MzlkYTQxNWQxMDExNjM2MjI1ZjM4ODkwZmY5MjdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTEwNyw3ICsxMDcsNyBAQCBTdHJpbmcgSFRNTE9wdGlv
bkVsZW1lbnQ6OnRleHQoKSBjb25zdAogCiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjpzZXRUZXh0
KGNvbnN0IFN0cmluZyAmdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgUmVmPEhUTUxP
cHRpb25FbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKKyAgICBSZWY8
SFRNTE9wdGlvbkVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gQ2hhbmdp
bmcgdGhlIHRleHQgY2F1c2VzIGEgcmVjYWxjIG9mIGEgc2VsZWN0J3MgaXRlbXMsIHdoaWNoIHdp
bGwgcmVzZXQgdGhlIHNlbGVjdGVkCiAgICAgLy8gaW5kZXggdG8gdGhlIGZpcnN0IGl0ZW0gaWYg
dGhlIHNlbGVjdCBpcyBzaW5nbGUgc2VsZWN0aW9uIHdpdGggYSBtZW51IGxpc3QuIFdlIGF0dGVt
cHQgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggZDNh
MjY4ZTYzYjc4OTliODhjNDgzNzU1MTUwYjZkMTk5NTQxNWI0Mi4uM2IxMGQ2N2FjMzVlMjQ4Mzhh
Mjk1YzE3NjNlNWZhNmE4NWMzNGEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6Zmlu
aXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkKIAogdm9pZCBIVE1MU2NyaXB0RWxlbWVudDo6c2V0VGV4
dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZjxIVE1MU2NyaXB0RWxlbWVudD4gcHJv
dGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmPEhUTUxTY3JpcHRFbGVtZW50
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChoYXNPbmVDaGlsZCgpICYmIGlzPFRl
eHQ+KCpmaXJzdENoaWxkKCkpKSB7CiAgICAgICAgIGRvd25jYXN0PFRleHQ+KCpmaXJzdENoaWxk
KCkpLnNldERhdGEodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5j
cHAKaW5kZXggNzQ5MGQ5YWM4ZTYyMWFjMDQxNGJlNmFhYzY0NTc2MjBiNTEwZDQzYi4uMWY1MjRm
ZGU4YjdhZjUwMWU4NmQ5NjA5NDQ1OTk1ZjE2ZDUyNzJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjExLDcgQEAgUmVmUHRyPEhUTUxFbGVt
ZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNlcnRSb3coaW50IGluZGV4LCBFeGNlcHRpb25Db2Rl
JiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgUmVmPEhUTUxUYWJsZUVsZW1l
bnQ+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHMoKnRoaXMpOworICAgIFJlZjxIVE1MVGFibGVF
bGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIFJlZlB0cjxIVE1MVGFibGVSb3dF
bGVtZW50PiBsYXN0Um93ID0gMDsKICAgICBSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gcm93
ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4
IGQ1Y2Q4MmRkODkxM2U1ZGE1OTVmYmU3NmVhYzkwNGI2YWIwNzRlM2QuLjI1NWJlZDY3OTcyODQy
ZGUzNDNiMmU2NjBiMTNlM2I1NWM2YmI5N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmNwcApAQCAtNDAyLDcgKzQwMiw3IEBAIFN0cmluZyBIVE1MVGV4dEFy
ZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogCiB2b2lkIEhUTUxUZXh0QXJlYUVsZW1l
bnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKIHsKLSAgICBS
ZWY8SFRNTFRleHRBcmVhRWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7
CisgICAgUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAg
ICAgLy8gVG8gcHJlc2VydmUgY29tbWVudHMsIHJlbW92ZSBvbmx5IHRoZSB0ZXh0IG5vZGVzLCB0
aGVuIGFkZCBhIHNpbmdsZSB0ZXh0IG5vZGUuCiAgICAgVmVjdG9yPFJlZjxUZXh0Pj4gdGV4dE5v
ZGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAKaW5kZXggNjI2ZjMx
OThmMmFhNGQ0OTViMDhlOWVlZGRiN2YwNzUxNTE2N2E1Yy4uZTI2ZmE2ZWI1Y2U3MzY0MGNhOGY3
YzFjMjliY2Y0ODNiNmQ4NjExNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1l
bnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFN0cmluZ1dpdGhEaXJlY3Rpb24gSFRNTFRpdGxlRWxl
bWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigpCiAKIHZvaWQgSFRNTFRpdGxlRWxlbWVu
dDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZjxIVE1MVGl0bGVFbGVt
ZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKKyAgICBSZWY8SFRNTFRpdGxl
RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgCiAgICAgaWYgKCF2YWx1ZS5pc0Vt
cHR5KCkgJiYgaGFzT25lQ2hpbGQoKSAmJiBpczxUZXh0PigqZmlyc3RDaGlsZCgpKSkgewogICAg
ICAgICBkb3duY2FzdDxUZXh0PigqZmlyc3RDaGlsZCgpKS5zZXREYXRhKHZhbHVlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4
IDJlNDhhZDQ3MDM3MTQ1NjJlMGZiOTBhZjVmN2RiNThmZDNlMTcyMjcuLjNhYWQ5YjY1NTI1NTJk
ZjA1ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQg
SFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFyc2luZygpCiAKICAgICAvLyBwdW1w
VG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBE
b2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5
ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBOT1RF
OiBUaGlzIHB1bXAgc2hvdWxkIG9ubHkgZXZlciBlbWl0IGJ1ZmZlcmVkIGNoYXJhY3RlciB0b2tl
bnMsCiAgICAgLy8gc28gRm9yY2VTeW5jaHJvbm91cyB2cy4gQWxsb3dZaWVsZCBzaG91bGQgYmUg
bWVhbmluZ2xlc3MuCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6
OnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCkKIHsKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBj
YXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAv
LyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhU
TUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBh
cnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBXZSBzaG91bGQgbmV2ZXIgYmUg
aGVyZSB1bmxlc3Mgd2UgY2FuIHB1bXAgaW1tZWRpYXRlbHkuCiAgICAgLy8gQ2FsbCBwdW1wVG9r
ZW5pemVyKCkgZGlyZWN0bHkgc28gdGhhdCBBU1NFUlRTIHdpbGwgZmlyZSBpZiB3ZSdyZSB3cm9u
Zy4KQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNv
bnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogCiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4g
Y2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAg
Ly8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxI
VE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRG9jdW1lbnRQ
YXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgU2VnbWVudGVkU3RyaW5nIGV4Y2x1
ZGVkTGluZU51bWJlclNvdXJjZShzb3VyY2UpOwogICAgIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJj
ZS5zZXRFeGNsdWRlTGluZU51bWJlcnMoKTsKQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJbXBsPiYmIGlucHV0U291cmNlKQog
CiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNo
ZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlz
bid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgU3RyaW5nIHNvdXJjZShXVEZNb3ZlKGlucHV0U291cmNlKSk7CiAKQEAgLTQ5Myw3ICs0
OTMsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVzdW1lUGFyc2luZ0FmdGVyU2NyaXB0
RXhlY3V0aW9uKCkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2Vy
IHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3VtZW50UGFyc2Vy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIG1faW5zZXJ0aW9uUHJlbG9hZFNjYW5uZXIgPSBudWxscHRyOwog
ICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEFsbG93WWllbGQpOwpAQCAtNTI1LDcgKzUyNSw3
IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJj
ZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhp
cyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdl
IG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1l
bnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQVNTRVJUKG1fc2NyaXB0UnVubmVyKTsKICAgICBB
U1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwpAQCAtNTUyLDcgKzU1Miw3IEBAIHZvaWQgSFRN
TERvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpCiAK
ICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hl
ZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNu
J3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAg
ICAgbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2FpdGluZ0ZvclN0eWxlc2hlZXRzKCk7
CiAgICAgaWYgKCFpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCiAgICAgICAgIHJlc3VtZVBhcnNpbmdB
ZnRlclNjcmlwdEV4ZWN1dGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9z
aGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93
L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZmVhNWZkMjU4ODA2ZTM4NWZkZmRhMTNkYjg4
YTEwNDQ4MDVmZWM5NS4uYTYxMDg3ZTY2ZjIyOGZkNzA1YTNmOTE1Njk5OTYyYjAyOGZkY2M0YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJUaHVtYkVsZW1lbnQu
Y3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgRWxlbWVudCogU2xpZGVyVGh1bWJFbGVtZW50Ojpmb2N1
c0RlbGVnYXRlKCkKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1lbnQ6OmRyYWdGcm9tKGNvbnN0IExh
eW91dFBvaW50JiBwb2ludCkKIHsKLSAgICBSZWY8U2xpZGVyVGh1bWJFbGVtZW50PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8U2xpZGVyVGh1bWJFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKICAgICBzZXRQb3NpdGlvbkZyb21Qb2ludChwb2ludCk7CiAjaWYgIVBMQVRGT1JNKElPUykK
ICAgICBzdGFydERyYWdnaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9T
cGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjgyNzdhMGZjZjM1Y2IwNGMyMmQyNGM2OGY5NjJm
ODlhOGZkMjc1MC4uZWNkYjVkYWRhZDczYzhlNDhhZTdjMDg4MzMyOWRjYTllMTFhMGNkNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcApA
QCAtOTQsNyArOTQsNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5k
bGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25z
IG9mIEhUTUxJbnB1dEVsZW1lbnQgbWF5IHJ1biBKYXZhU2NyaXB0CiAgICAgICAgICAgICAvLyBj
b2RlIHdoaWNoIGRldGFjaGVzIHRoaXMgc2hhZG93IG5vZGUuIFdlIG5lZWQgdG8gdGFrZSBhIHJl
ZmVyZW5jZQogICAgICAgICAgICAgLy8gYW5kIGNoZWNrIHJlbmRlcmVyKCkgYWZ0ZXIgc3VjaCBm
dW5jdGlvbiBjYWxscy4KLSAgICAgICAgICAgIFJlZjxTcGluQnV0dG9uRWxlbWVudD4gcHJvdGVj
dCgqdGhpcyk7CisgICAgICAgICAgICBSZWY8U3BpbkJ1dHRvbkVsZW1lbnQ+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fc3BpbkJ1dHRvbk93bmVyKQogICAgICAgICAg
ICAgICAgIG1fc3BpbkJ1dHRvbk93bmVyLT5mb2N1c0FuZFNlbGVjdFNwaW5CdXR0b25Pd25lcigp
OwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAppbmRleCBm
MzVmZWQ5NzQyOTcwZjU3ZDQyNTY3MDgxNmExNjQ2Mzk5ZTA1ZjJjLi40NTlkZmU0NDJmNzY5MGJk
MmExMjZhMzNkM2RhNWU2MGEzNjk4MDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBAIC05Nyw3ICs5
Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBEaXNwYXRjaGluZyBhIG1lc3NhZ2UgY2FuIHBv
c3NpYmx5IGNsb3NlIHRoZSBmcm9udGVuZCBhbmQgZGVzdHJveQogICAgICAgICAvLyB0aGUgb3du
aW5nIGZyb250ZW5kIGNsaWVudCwgc28ga2VlcCBhIHByb3RlY3RvciByZWZlcmVuY2UgaGVyZS4K
LSAgICAgICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRhc2s+IHByb3RlY3QoKnRoaXMp
OworICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFzaz4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKICAgICAgICAgaWYgKCFtX21lc3NhZ2VzLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmRpc3BhdGNoTWVzc2FnZUZyb21Gcm9udGVu
ZChtX21lc3NhZ2VzLnRha2VGaXJzdCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCmluZGV4IDZmMmRlZGRhN2QwMTNlODhlMzllM2RkYWNjOTg0OGJiZTljZjUxZDgu
Ljk3Y2JmNjM4NGIzMzBhZmQyOWNjMWI4MDk1ZGY1OWM2ZWZmYzRjZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjc1LDggKzI3NSw4IEBAIHZvaWQgRG9j
dW1lbnRMb2FkZXI6Om1haW5SZWNlaXZlZEVycm9yKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogLy8gYnV0IG5vdCBsb2FkcyBpbml0aWF0ZWQgYnkgY2hpbGQgZnJhbWVzJyBkYXRhIHNvdXJj
ZXMgLS0gdGhhdCdzIHRoZSBXZWJGcmFtZSdzIGpvYi4KIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0
b3BMb2FkaW5nKCkKIHsKLSAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RGcmFtZShtX2ZyYW1lKTsK
LSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RMb2FkZXIoKnRoaXMpOworICAgIFJlZlB0
cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVy
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIEluIHNvbWUgcmFyZSBjYXNlcywgY2Fs
bGluZyBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcgY291bGQgY2F1c2UgaXNMb2FkaW5nKCkgdG8g
cmV0dXJuIGZhbHNlLgogICAgIC8vIChUaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGVyZSdzIGEgc2lu
Z2xlIFhNTEh0dHBSZXF1ZXN0IGN1cnJlbnRseSBsb2FkaW5nIGFuZCBzdG9wTG9hZGluZyBjYXVz
ZXMgaXQKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpmaW5pc2hlZExv
YWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgQVNTRVJUKCFtX2ZyYW1lLT5wYWdlKCktPmRl
ZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmlzRGVidWdnZXJQYXVz
ZWQobV9mcmFtZSkpOwogI2VuZGlmCiAKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRSZXNvdXJjZUxvYWRlcikgewogICAg
ICAgICAvLyBBIGRpZEZpbmlzaExvYWRpbmcgZGVsZWdhdGUgbWlnaHQgdHJ5IHRvIGNhbmNlbCB0
aGUgbG9hZCAoZGVzcGl0ZSBpdApAQCAtNjM3LDcgKzYzNyw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNv
dXJjZVJlCiAjZW5kaWYKIAogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIG1fbWFpblJlc291
cmNlID09IHJlc291cmNlKTsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgYm9v
bCB3aWxsTG9hZEZhbGxiYWNrID0gbV9hcHBsaWNhdGlvbkNhY2hlSG9zdC0+bWF5YmVMb2FkRmFs
bGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByZXNwb25zZSk7CiAKICAgICAvLyBUaGUg
bWVtb3J5IGNhY2hlIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUgYXBwbGljYXRpb24gY2FjaGUgb3Ig
aXRzIGNhY2hpbmcgcnVsZXMuIFNvIGlmIGEgbWFpbiByZXNvdXJjZSBpcyBzZXJ2ZWQKQEAgLTgx
Niw4ICs4MTYsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjb21taXRMb2FkKGNvbnN0IGNoYXIq
IGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1bmxvYWRpbmcgdGhlIG9sZCBwYWdl
IGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0ZSBKYXZhU2NyaXB0IHdoaWNoIGRl
c3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3RhcnRpbmcgYSBuZXcgbG9hZCwgc28g
cmV0YWluIHRlbXBvcmFyaWx5LgotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZnJh
bWUpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdExvYWRlcigqdGhpcyk7CisgICAg
UmVmUHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKKyAgICBSZWY8RG9jdW1lbnRM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgY29tbWl0SWZSZWFkeSgpOwogICAg
IEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IERvY3VtZW50TG9hZGVyOjpmcmFtZUxvYWRlcigp
OwpAQCAtOTk5LDggKzk5OSw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmRldGFjaEZyb21GcmFt
ZSgpCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKG1fZnJhbWUsICJkZXRh
Y2hGcm9tRnJhbWUoKSBpcyBiZWluZyBjYWxsZWQgb24gYSBEb2N1bWVudExvYWRlciB0aGF0IGhh
cyBuZXZlciBhdHRhY2hlZCB0byBhbnkgRnJhbWUiKTsKICNlbmRpZgotICAgIFJlZlB0cjxGcmFt
ZT4gcHJvdGVjdEZyYW1lKG1fZnJhbWUpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVj
dExvYWRlcigqdGhpcyk7CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1l
KTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
Ly8gSXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIGRvY3VtZW50IGxvYWRlciB0aGF0IGlz
IGRldGFjaGVkIGZyb20gaXRzCiAgICAgLy8gZnJhbWUgaGF2ZSBhbnkgbG9hZHMgYWN0aXZlLCBz
byBraWxsIGFsbCB0aGUgbG9hZHMuCkBAIC0xNDc1LDcgKzE0NzUsNyBAQCB2b2lkIERvY3VtZW50
TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgIEFTU0VSVCghdGltaW5nKCku
ZmV0Y2hTdGFydCgpKTsKICAgICB0aW1pbmcoKS5tYXJrRmV0Y2hTdGFydCgpOwogCi0gICAgUmVm
PERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5
IGRlYWxsb2NhdGUgdGhlIHByb3Zpc2lvbmFsIGxvYWRlciAod2hpY2ggbWF5IGJlIHVzKSBpZiBp
dCBjYW5jZWxzIHRoZSBsb2FkLgorICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1heSBkZWFsbG9jYXRlIHRoZSBwcm92aXNp
b25hbCBsb2FkZXIgKHdoaWNoIG1heSBiZSB1cykgaWYgaXQgY2FuY2VscyB0aGUgbG9hZC4KICAg
ICB3aWxsU2VuZFJlcXVlc3QobV9yZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlKCkpOwogCiAgICAg
Ly8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3VyIEZyYW1lIGJlaW5nIGRldGFjaGVk
IG9yIGNhbmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51bGxpbmcgdGhlIFJlc291cmNlUmVxdWVzdC4K
QEAgLTE1NTUsNyArMTU1NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNhbmNlbFBvbGljeUNo
ZWNrSWZOZWVkZWQoKQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxNYWluUmVzb3VyY2VM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJyb3IpCiB7Ci0gICAgUmVmPERvY3Vt
ZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogICAgIFJlc291cmNlRXJyb3IgZXJyb3IgPSByZXNvdXJjZUVycm9y
LmlzTnVsbCgpID8gZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobV9yZXF1ZXN0KSA6IHJl
c291cmNlRXJyb3I7CiAKICAgICBtX2RhdGFMb2FkVGltZXIuc3RvcCgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCA1ZjVl
ZmQ4NDE4YTM3ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1Li45MGU0YmZiYzExMjM4OTNhYjEz
NTI0NWZiNzQ5Nzc4ZDNiNjk5NWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcjo6fkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigpCiAKIHZvaWQgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogewotICAgIFJlZjxEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gQ2FuY2VsIGNhbiByZS1lbnRl
ciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhlcmUgYXMgYSByZXN1bHQuCiAgICAgaWYg
KG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIERvY3Vt
ZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIFJlc291cgogICAgIEFTU0VSVChtX2NsaWVudCk7CiAgICAgQVNTRVJUX1VOVVNFRChy
ZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBSZWY8RG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBpZiAoIWlzQWxsb3dlZEJ5Q29udGVu
dFNlY3VyaXR5UG9saWN5KHJlcXVlc3QudXJsKCksICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgp
KSkgewogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGlyZWN0Q2hlY2soKTsKICAgICAgICAg
cmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01l
ZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFlODNiMDQwZTA0YTMzYjg5MmE1MzA2ZTMwMDk4
MmFlYjc4OWU5MWIuLmI3ZmYzNzg0YjVmYzZjN2MyOTIxMTMzYWE3NTEzNzZjNDgzYzZhODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE0
MCw3ICsxNDAsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVk
UmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmICghbV9sb2FkZXIt
PmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxNZWRpYVJlc291cmNl
PiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIGlmICghbV9sb2FkZXItPmNyb3NzT3JpZ2luTW9kZSgpLmlzTnVsbCgpICYm
ICFyZXNvdXJjZS0+cGFzc2VzU2FtZU9yaWdpblBvbGljeUNoZWNrKCptX2xvYWRlci0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3NzLW9yaWdpbiBtZWRpYSByZXNvdXJj
ZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3kuIik7
CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgY29uc29sZU1lc3NhZ2UuZ2V0
KCkpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgTWVkaWFSZXNvdXJjZTo6c2hvdWxkQ2FjaGVS
ZXNwb25zZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IFJlc291cmNlCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBS
ZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIHJl
dHVybiBtX2NsaWVudC0+c2hvdWxkQ2FjaGVSZXNwb25zZSgqdGhpcywgcmVzcG9uc2UpOwogICAg
IHJldHVybiB0cnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgTWVkaWFSZXNvdXJjZTo6cmVk
aXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cmNlUmVxdWVzdCYK
IHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsK
IAotICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxN
ZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkKICAg
ICAgICAgbV9jbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRoaXMsIHJlcXVlc3QsIHJlc3BvbnNl
KTsKIH0KQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFTZW50KENh
Y2hlZFJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQgbG9uZyBsb25nIGJ5dGVzUwogewogICAg
IEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAg
UmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPE1lZGlhUmVz
b3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBt
X2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwgdG90YWxCeXRlc1RvQmVTZW50KTsK
IH0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OmRhdGFSZWNlaXZlZChD
YWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIqIGRhdGEsIGludAogewogICAgIEFT
U0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVm
UHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPE1lZGlhUmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICBtX2Ns
aWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBkYXRhTGVuZ3RoKTsKIH0KQEAgLTE5Nyw3
ICsxOTcsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291
cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQocmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
LSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8TWVk
aWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpIHsKICAg
ICAgICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5jZWxlZCgpKQogICAgICAgICAgICAg
bV9jbGllbnQtPmxvYWRGYWlsZWQoKnRoaXMsIHJlc291cmNlLT5yZXNvdXJjZUVycm9yKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRl
ci5jcHAKaW5kZXggN2MxOWQzZDMxNWU1MzQwOThhZDE1MDc0ZGFlMWE1OTRmY2VkOTkwNi4uYjg5
YjYwMDI2MzE0MDJjZTViNTBhYjljYWY3NTAxNGViYmJhMWFmMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCkBAIC05MCwx
MSArOTAsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6aW5pdChjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQoUmVzb3Vy
Y2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2NsaWVudC0+d2lsbFNlbmRS
ZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0
LCByZWRpcmVjdFJlc3BvbnNlLCBjYWxsYmFja10oUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpIHsK
KyAgICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIHJl
ZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzLCByZWRpcmVjdFJlc3BvbnNlLCBjYWxsYmFj
a10oUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpIHsKICAgICAgICAgaWYgKCFyZXF1ZXN0LmlzTnVs
bCgpKQotICAgICAgICAgICAgcHJvdGVjdC0+d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwocmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT53aWxsU2Vu
ZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIAogICAgICAgICBj
YWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29ucwogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiB7
Ci0gICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSh0aGlzLCByZXNwb25zZSk7CiAKQEAg
LTEzOSw3ICsxMzksNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNl
aXZlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZQogCiB2b2lkIE5ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRh
dGEsIGludCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIsIGxvbmcgbG9u
ZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBlIGRhdGFQYXlsb2FkVHlwZSkKIHsK
LSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAg
ICAgCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRoaXMsIGJ1ZmZlciA/IGJ1ZmZlci0+
ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXplKCkgOiBsZW5ndGgpOwogCkBAIC0x
NDgsNyArMTQ4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGUKIAogdm9pZCBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIHsK
LSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBub3RpZnlEb25lKCk7CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB2b2lkIE5ldHNjYXBlUGx1
Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogCiB2
b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGYWlsKGNvbnN0IFJlc291cmNlRXJy
b3ImIGVycm9yKQogewotICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIG5vdGlmeURvbmUoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9S
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWE4YjYzMjA3NTdmNTMwY2JkMzRlOGI3MWIwNzYzNTYz
YjI5Y2VmZC4uYjc4ZjQwOWFmMmM3OGUyOWZhZWRlMWUzMzZhM2FlYzk3MDNjZmU4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMoKQogICAgIC8vIGRlYWxsb2NhdGVk
IGFuZCByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdC4KICAgICAvLyBX
ZSBuZWVkIHRvIHJldGFpbiB0byBhdm9pZCBhY2Nlc3NpbmcgdGhlIG9iamVjdCBhZnRlciBpdAog
ICAgIC8vIGhhcyBiZWVuIGRlYWxsb2NhdGVkIGFuZCBhbHNvIHRvIGF2b2lkIHJlZW50ZXJpbmcg
dGhpcyBtZXRob2QuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbV9mcmFt
ZSA9IG51bGxwdHI7CiAgICAgbV9kb2N1bWVudExvYWRlciA9IG51bGxwdHI7CkBAIC0xNzEsNyAr
MTcxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHIpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJSZXNwb25zZUFuZERhdGEoY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
KQogewotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGRpZFJlY2VpdmVSZXNw
b25zZShyZXNwb25zZSk7CiAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCkBAIC0yNDcs
MzIgKzI0NywzMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgYXV0
byB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgQVNTRVJUKHVybC5wcm90b2NvbElzRGF0YSgp
KTsKIAotICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9hZGVyKHRoaXMpOworICAgIFJlZlB0
cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhVVJMRGVjb2Rl
cjo6U2NoZWR1bGVDb250ZXh0IHNjaGVkdWxlQ29udGV4dDsKICNpZiBIQVZFKFJVTkxPT1BfVElN
RVIpCiAgICAgaWYgKGF1dG8qIHNjaGVkdWxlZFBhaXJzID0gbV9mcmFtZS0+cGFnZSgpLT5zY2hl
ZHVsZWRSdW5Mb29wUGFpcnMoKSkKICAgICAgICAgc2NoZWR1bGVDb250ZXh0LnNjaGVkdWxlZFBh
aXJzID0gKnNjaGVkdWxlZFBhaXJzOwogI2VuZGlmCi0gICAgRGF0YVVSTERlY29kZXI6OmRlY29k
ZSh1cmwsIHNjaGVkdWxlQ29udGV4dCwgW2xvYWRlciwgdXJsXSAoT3B0aW9uYWw8RGF0YVVSTERl
Y29kZXI6OlJlc3VsdD4gZGVjb2RlUmVzdWx0KSB7Ci0gICAgICAgIGlmIChsb2FkZXItPnJlYWNo
ZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgRGF0YVVSTERlY29kZXI6OmRlY29kZSh1cmwsIHNjaGVk
dWxlQ29udGV4dCwgW3Byb3RlY3RlZFRoaXMsIHVybF0gKE9wdGlvbmFsPERhdGFVUkxEZWNvZGVy
OjpSZXN1bHQ+IGRlY29kZVJlc3VsdCkgeworICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+cmVh
Y2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgaWYgKCFk
ZWNvZGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkRmFpbChSZXNvdXJjZUVycm9y
KGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29kaW5nIGZh
aWxlZCIpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZEZhaWwoUmVzb3VyY2VFcnJv
cihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGluZyBm
YWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxv
YWRlci0+d2FzQ2FuY2VsbGVkKCkpCisgICAgICAgIGlmIChwcm90ZWN0ZWRUaGlzLT53YXNDYW5j
ZWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgYXV0byYgcmVzdWx0ID0gZGVj
b2RlUmVzdWx0LnZhbHVlKCk7CiAgICAgICAgIGF1dG8gZGF0YVNpemUgPSByZXN1bHQuZGF0YS0+
c2l6ZSgpOwogCiAgICAgICAgIFJlc291cmNlUmVzcG9uc2UgZGF0YVJlc3BvbnNlIHsgdXJsLCBy
ZXN1bHQubWltZVR5cGUsIGRhdGFTaXplLCByZXN1bHQuY2hhcnNldCB9OwotICAgICAgICBsb2Fk
ZXItPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2UpOworICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlKTsKIAotICAgICAgICBpZiAoIWxv
YWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSkKLSAgICAgICAgICAgIGxv
YWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihyZXN1bHQuZGF0YS5nZXQoKSwgZGF0YVNpemUsIERhdGFQ
YXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGlmICghcHJvdGVjdGVkVGhpcy0+cmVhY2hl
ZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSkKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpZFJlY2VpdmVCdWZmZXIocmVzdWx0LmRhdGEuZ2V0KCksIGRhdGFTaXplLCBEYXRhUGF5bG9h
ZFdob2xlUmVzb3VyY2UpOwogCi0gICAgICAgIGlmICghbG9hZGVyLT5yZWFjaGVkVGVybWluYWxT
dGF0ZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5kaWRGaW5pc2hMb2FkaW5nKGN1cnJlbnRUaW1l
KCkpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkp
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRGaW5pc2hMb2FkaW5nKGN1cnJlbnRUaW1l
KCkpOwogICAgIH0pOwogfQogCkBAIC0zMjgsNyArMzI4LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRl
cjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25z
dCBSZXMKIHsKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2lu
Y2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNs
dWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRh
ciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEFTU0VSVCgh
bV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykK
QEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0
aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBk
bwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUg
ZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgbG9nUmVzb3VyY2VSZXNwb25zZVNvdXJjZShtX2ZyYW1lLmdldCgpLCBy
LnNvdXJjZSgpKTsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBQ
CiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhl
IGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcg
cG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2
MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CiAKICAgICBhZGREYXRhT3JCdWZmZXIoZGF0YSwgbGVu
Z3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7CkBAIC01MjMsNyArNTIzLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikK
IAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUg
YWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBw
b3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYy
MTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVz
b3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgY2xlYW51cEZvckVycm9y
KGVycm9yKTsKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CkBAIC01NTYsNyArNTU2LDcgQEAgdm9p
ZCBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogICAg
IAogICAgIC8vIHdpbGxDYW5jZWwoKSBhbmQgZGlkRmFpbFRvTG9hZCgpIGJvdGggY2FsbCBvdXQg
dG8gY2xpZW50cyB0aGF0IG1pZ2h0IGRvIAogICAgIC8vIHNvbWV0aGluZyBjYXVzaW5nIHRoZSBs
YXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCB0byBnbyBhd2F5LgotICAgIFJlZjxSZXNvdXJj
ZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKICAgICAKICAgICAvLyBJZiB3ZSByZS1lbnRlciBjYW5jZWwoKSBmcm9t
IGluc2lkZSB3aWxsQ2FuY2VsKCksIHdlIHdhbnQgdG8gcGljayB1cCBmcm9tIHdoZXJlIHdlIGxl
ZnQgCiAgICAgLy8gb2ZmIHdpdGhvdXQgcmUtcnVubmluZyB3aWxsQ2FuY2VsKCkKQEAgLTY3Miw3
ICs2NzIsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjpzaG91bGRVc2VDcmVkZW50aWFsU3RvcmFn
ZSgpCiAgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCkgPT0gRG9Ob3RBbGxvd1N0
b3JlZENyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCi0gICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHJldHVybiBmcmFtZUxvYWRlcigpLT5jbGllbnQoKS5z
aG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShkb2N1bWVudExvYWRlcigpLCBpZGVudGlmaWVyKCkp
OwogfQogCkBAIC02ODcsNyArNjg3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGwKIAogICAg
IC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRp
b25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJs
eSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0g
ICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0Ny
ZWRlbnRpYWxzKCkgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscykgewogICAgICAgICBpZiAoaXNB
bGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSkgewpAQCAtNzA5LDcgKzcwOSw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0
IEF1dGhlbnRpY2F0aW9uQ2hhbGxlCiB7CiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVs
ZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAg
Ly8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxl
IG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwogfQogCkBAIC03MTcsNyArNzE3LDcgQEAgdm9pZCBS
ZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGUKIAogYm9vbCBSZXNvdXJjZUxvYWRlcjo6Y2FuQXV0aGVudGljYXRl
QWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0aW9uU3BhY2UmIHByb3RlY3Rpb25T
cGFjZSkKIHsKLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgcmV0dXJuIGZyYW1l
TG9hZGVyKCktPmNsaWVudCgpLmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2Uo
ZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBwcm90ZWN0aW9uU3BhY2UpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCA3OGMxNDJi
YTQxYmJhMDk2OTAwMmZkNWQ0MDQ3M2RhN2MyZTkyNTVkLi43ZTdhOWMyYmNhOGU0M2U0OWQ5ODky
YWVhMjJhNWMzNmYwMWY3ZmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbgog
ewogICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyBVUkwgYmVjYXVzZSB0aGUgY2FsbCB0byBSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHdpbGwgbW9kaWZ5IGl0LgogICAgIFVSTCBwcmV2
aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICBpZiAoIW5ld1JlcXVlc3QudXJsKCkuaXNWYWxpZCgpKSB7CiAgICAgICAg
IGNhbmNlbChjYW5ub3RTaG93VVJMRXJyb3IoKSk7CkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0
JiBuZXdSZXF1ZXN0LCBjb24KIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFNlbmREYXRhKHVu
c2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbEJ5dGVz
VG9CZVNlbnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlhbGl6ZWQpOwotICAgIFJl
ZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNl
TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBtX3Jlc291cmNlLT5kaWRTZW5kRGF0
YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICAvLyBSZWZlcmVuY2UgdGhlIG9iamVjdCBpbiB0
aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8v
IGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBv
YmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIxNi4KLSAgICBSZWY8U3VicmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoc2hvdWxkSW5jbHVkZUNlcnRpZmljYXRlSW5m
bygpKQogICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlmaWNhdGVJbmZvKCk7CkBAIC0zMTIs
NyArMzEyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZl
cihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBQYXMKICAgICBBU1NFUlQobV9zdGF0ZSA9
PSBJbml0aWFsaXplZCk7CiAgICAgLy8gUmVmZXJlbmNlIHRoZSBvYmplY3QgaW4gdGhpcyBtZXRo
b2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGlu
ZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBv
bmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGJ1ZmZlciA9IHBycEJ1ZmZlcjsK
ICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihkYXRhLCBs
ZW5ndGgsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRhdGFQYXlsb2FkVHlwZSk7CkBAIC00
MjEsNyArNDIxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhk
b3VibGUgZmluaXNoVGltZSkKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiUmVjZWl2ZWQgJyVz
Jy4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwogICAgIGxv
Z1Jlc291cmNlTG9hZGVkKG1fZnJhbWUuZ2V0KCksIG1fcmVzb3VyY2UtPnR5cGUoKSk7CiAKLSAg
ICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJjZShtX3Jlc291cmNlKTsKIAogICAgIG1f
c3RhdGUgPSBGaW5pc2hpbmc7CkBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBBU1NFUlQoIXJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJGYWlsZWQg
dG8gbG9hZCAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0
YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVjdFJlc291cmNlKG1fcmVzb3VyY2Up
OwogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAgaWYgKG1fcmVzb3VyY2UtPnJlc291cmNl
VG9SZXZhbGlkYXRlKCkpCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICBBU1NFUlQoIXJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5jZWxs
ZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCku
ZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICNpZiBQTEFU
Rk9STShJT1MpCiAgICAgbV9zdGF0ZSA9IG1fc3RhdGUgPT0gVW5pbml0aWFsaXplZCA/IENhbmNl
bGxlZFdoaWxlSW5pdGlhbGl6aW5nIDogRmluaXNoaW5nOwogI2Vsc2UKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCmluZGV4IDgyMWE4ODg1
NzY4MjZlMmU0NTViZTEzMWY4ZThlZWM5ZjkxZTM4YzAuLmI2NmQ1NGZhOWExYzM1NjVkNjgzMTZk
MTI2NTYxNDAyODBiZjc4YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNTksNyArNTksNyBAQCBjb25zdCBjaGFyKiBDYWNo
ZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxEYXRhQ2h1bmsoU2hhcmVkQnVmZmVy
KiBkYXRhLAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhQnVmZmVyKFNoYXJlZEJ1
ZmZlciYgZGF0YSkKIHsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJj
ZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NFUlQoZGF0YUJ1ZmZlcmluZ1BvbGlj
eSgpID09IEJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9ICZkYXRhOwogCkBAIC04Niw3ICs4Niw3
IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGEoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuZ3RoKQogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpmaW5pc2hMb2FkaW5nKFNo
YXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRS
YXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBEYXRhQnVmZmVyaW5nUG9saWN5
IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVmZmVyaW5nUG9saWN5KCk7CiAgICAg
aWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gQnVmZmVyRGF0YSkgewogICAgICAgICBtX2RhdGEg
PSBkYXRhOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6Om5vdGlm
eUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQKICAgICBp
ZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ2FjaGVkUmVz
b3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsK
ICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQqIGMgPSB3Lm5leHQoKSkKICAgICAg
ICAgYy0+ZGF0YVJlY2VpdmVkKHRoaXMsIGRhdGEsIGxlbmd0aCk7CkBAIC0xMjYsNyArMTI2LDcg
QEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xpZW50KENhY2hlZFJlc291cmNlQ2xp
ZW50KiBjKQogICAgIC8vIFRoZSBjYWxscyB0byB0aGUgY2xpZW50IGNhbiByZXN1bHQgaW4gZXZl
bnRzIHJ1bm5pbmcsIHBvdGVudGlhbGx5IGNhdXNpbmcKICAgICAvLyB0aGlzIHJlc291cmNlIHRv
IGJlIGV2aWN0ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGFsbCBjbGllbnRzIHRvIGJlIHJlbW92ZWQs
CiAgICAgLy8gc28gYSBwcm90ZWN0b3IgaXMgbmVjZXNzYXJ5LgotICAgIENhY2hlZFJlc291cmNl
SGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291
cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENh
Y2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjbGllbnQgPSBzdGF0aWNfY2FzdDxDYWNoZWRSYXdSZXNv
dXJjZUNsaWVudCo+KGMpOwogICAgIHNpemVfdCByZWRpcmVjdENvdW50ID0gbV9yZWRpcmVjdENo
YWluLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlZGlyZWN0Q291bnQ7IGkr
KykgewpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFsbENsaWVu
dHNSZW1vdmVkKCkKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNl
KQogewotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghcmVzcG9uc2UuaXNOdWxsKCkpIHsKICAgICAgICAg
Q2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+IHcobV9j
bGllbnRzKTsKICAgICAgICAgd2hpbGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5u
ZXh0KCkpCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJl
Y3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmMKIAogdm9p
ZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSkKIHsKLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNv
dXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdS
ZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAoIW1faWRlbnRpZmllcikKICAg
ICAgICAgbV9pZGVudGlmaWVyID0gbV9sb2FkZXItPmlkZW50aWZpZXIoKTsKICAgICBDYWNoZWRS
ZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAKaW5kZXggNjllMjk5N2Y0ZWNmNWIx
NGMwNTUwZTJhMTllMWE4NjExNmU4ZDFmYi4uNjBiNjhlYmE3MGI2ZTIwMzAxNTQ1ODMwMThhOTk0
YjQzMzY4NWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NmL1N1YnJlc291
cmNlTG9hZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJj
ZUxvYWRlckNGLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogewogICAgIC8vIFJlZmVy
ZW5jZSB0aGUgb2JqZWN0IGluIHRoaXMgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nl
c3NpbmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZwogICAgIC8vIHJlbW92aW5nIHRoZSBsYXN0
IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyA8cmRhcjov
L3Byb2JsZW0vMzI2NjIxNj4uCi0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoZGF0YUFycmF5KTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0KaW5kZXgg
YmI5YjE0ZTgxNGI1YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMyNmYwMy4uNTYyMGM5MDIyMWQ0M2Zi
NGI3OTY1ZWE2YzM5N2Q1ODE1ODdmZTc5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
bWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJlZiBkYXRhQXJyYXkpCiB7CiAgICAg
Ly8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlv
bmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5
IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAg
ICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBDRkluZGV4IGFycmF5Q291bnQgPSBD
RkFycmF5R2V0Q291bnQoZGF0YUFycmF5KTsKICAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkgPCBh
cnJheUNvdW50OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCAyYjU5YTMz
MjRhZjczY2Q2NTU2ZTljNmM3OGRiZTkxOGJmMGMyY2VhLi40MTlhOTcwNmY3Zjk4N2ZjZGJkYzhh
MzFiNDM2MDNkMmMzMTVhZGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0xODg1
LDcgKzE4ODUsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0Y2hMb2FkRXZlbnQoKQogCiBib29s
IERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZlbnQsIEV2ZW50VGFyZ2V0KiB0YXJn
ZXQpCiB7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RXZl
bnRUYXJnZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gUGF1c2luZyBhIHBhZ2Ug
bWF5IHRyaWdnZXIgcGFnZWhpZGUgYW5kIHBhZ2VzaG93IGV2ZW50cy4gV2ViQ29yZSBhbHNvIGlt
cGxpY2l0bHkgZmlyZXMgdGhlc2UKICAgICAvLyBldmVudHMgd2hlbiBjbG9zaW5nIGEgV2ViVmll
dy4gSGVyZSB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBzdGF0ZSBvZiB0aGUgcGFnZSB0byBwcmV2ZW50
IGR1cGxpY2F0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0
ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcApp
bmRleCAwZTYyYjM0MzdhYjhiYjVkZWZlNGMzNmYyNTkyMzkxNjNmNWNkYjBlLi45YzI1ZTVkMTFm
Mzk1YWIwYmIzNGEwYTJjMzM5NzdjYjMwNGVhMTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgRE9NV2luZG93RXh0
ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1c3BlbnNpb24oKQogewogICAgIC8v
IENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93
RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAogICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdv
cmsgdG8gZG8uCi0gICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgCiAg
ICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xp
ZW50KCkuZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRvd0V4dGVuc2lvbkZyb21HbG9iYWxP
YmplY3QodGhpcyk7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3
aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUoKQogCiAgICAgLy8gQ2FsbGluZyBv
dXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01XaW5kb3dFeHRlbnNpb24g
YmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3RpbGwgd29yayB0byBkby4K
LSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RE9N
V2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fZGlzY29ubmVj
dGVkRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNoV2lsbERlc3Ryb3lHbG9iYWxPYmpl
Y3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CiAgICAgbV9kaXNjb25uZWN0ZWRGcmFtZSA9
IG51bGxwdHI7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxs
RGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQogCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhl
IGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVz
dHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3RpbGwgd29yayB0byBkby4KLSAgICBSZWY8
RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RE9NV2luZG93RXh0
ZW5zaW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICghbV93YXNEZXRhY2hlZCkg
ewogICAgICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwpAQCAtMTA1LDcgKzEwNSw3
IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGV0YWNoR2xvYmFsT2JqZWN0RnJvbUZy
YW1lKCkKIAogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWlnaHQgcmVzdWx0IGlu
IHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAogICAgIC8vIHdoaWxlIHRo
ZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFtZSgpOwogICAgIEFTU0VSVChm
cmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5kZXggMmI3Zjk1M2JiZTgzODY5NWI4
Y2ZhMTRhNDMxOGNkYjk2ZGI2NjU5Yi4uNmViYWUyODY4ZTk0OWRkZWM3ZjE4NGY5ZDk0NDdlY2Iy
MjlmMDkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcApAQCAtNDc1LDcgKzQ3NSw3IEBA
IHZvaWQgRnJhbWVWaWV3OjppbnZhbGlkYXRlUmVjdChjb25zdCBJbnRSZWN0JiByZWN0KQogCiB2
b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IEludFJlY3QmIG5ld1JlY3QpCiB7Ci0g
ICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEZyYW1lVmlldz4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgSW50UmVjdCBvbGRSZWN0ID0gZnJhbWVSZWN0KCk7CiAg
ICAgaWYgKG5ld1JlY3QgPT0gb2xkUmVjdCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTIxOCw3ICsx
MjE4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJlZSkKICAgICB9
CiAKICAgICAvLyBQcm90ZWN0IHRoZSB2aWV3IGZyb20gYmVpbmcgZGVsZXRlZCBkdXJpbmcgbGF5
b3V0IChpbiByZWNhbGNTdHlsZSkuCi0gICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBNYW55
IG9mIHRoZSB0YXNrcyBwZXJmb3JtZWQgZHVyaW5nIGxheW91dCBjYW4gY2F1c2UgdGhpcyBmdW5j
dGlvbiB0byBiZSByZS1lbnRlcmVkLAogICAgIC8vIHNvIHNhdmUgdGhlIGxheW91dCBwaGFzZSBu
b3cgYW5kIHJlc3RvcmUgaXQgb24gZXhpdC4KQEAgLTMxMTMsNyArMzExMyw3IEBAIGJvb2wgRnJh
bWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogCiB2b2lkIEZyYW1lVmlldzo6dXBkYXRl
RW1iZWRkZWRPYmplY3RzVGltZXJGaXJlZCgpCiB7Ci0gICAgUmVmUHRyPEZyYW1lVmlldz4gcHJv
dGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIG1fdXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXIuc3RvcCgpOwogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtYXhVcGRhdGVFbWJlZGRlZE9iamVjdHNJdGVyYXRpb25zOyBpKyspIHsK
ICAgICAgICAgaWYgKHVwZGF0ZUVtYmVkZGVkT2JqZWN0cygpKQpAQCAtMzE5MCw3ICszMTkwLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0VGFza3MoKQogCiAgICAgLy8gbGF5
b3V0KCkgcHJvdGVjdHMgRnJhbWVWaWV3LCBidXQgaXQgc3RpbGwgY2FuIGdldCBkZXN0cm95ZWQg
d2hlbiB1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogICAgIC8vIGlzIGNhbGxlZCB0aHJvdWdoIHRo
ZSBwb3N0IGxheW91dCB0aW1lci4KLSAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fdXBkYXRl
RW1iZWRkZWRPYmplY3RzVGltZXIuc3RhcnRPbmVTaG90KDApOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCmluZGV4IDAxMmZhM2U2ZWQ4Mzgy
NTk0YjRiZDA5Nzg0MTIwMjRkZGQyMDZhNGYuLmNhMjJmZDQ2YWNmZGQzMGMxZjQ3MWFlODFjODk3
Yzg3NzlkMjQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0Fu
aW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1h
dGlvbkJhc2UuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9pZCBBbmltYXRpb25CYXNlOjpmaXJl
QW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQoKQogICAgIC8vIGR1cmluZyBhbiBhbmltYXRpb24gY2Fs
bGJhY2sgdGhhdCBtaWdodCBnZXQgY2FsbGVkLiBTaW5jZSB0aGUgb3duZXIgaXMgYSBDb21wb3Np
dGVBbmltYXRpb24KICAgICAvLyBhbmQgaXQgcmVmIGNvdW50cyB0aGlzIG9iamVjdCwgd2Ugd2ls
bCBrZWVwIGEgcmVmIHRvIHRoYXQgaW5zdGVhZC4gVGhhdCB3YXkgdGhlIEFuaW1hdGlvbkJhc2UK
ICAgICAvLyBjYW4gc3RpbGwgYWNjZXNzIHRoZSByZXNvdXJjZXMgb2YgaXRzIENvbXBvc2l0ZUFu
aW1hdGlvbiBhcyBuZWVkZWQuCi0gICAgUmVmPEFuaW1hdGlvbkJhc2U+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxBbmltYXRpb25CYXNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBSZWY8
Q29tcG9zaXRlQW5pbWF0aW9uPiBwcm90ZWN0Q29tcG9zaXRlQW5pbWF0aW9uKCptX2NvbXBvc2l0
ZUFuaW1hdGlvbik7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9yIHN0YXJ0IHRpbWVvdXQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1Ry
ZWUuY3BwCmluZGV4IDQ4Mzk4NmFmNWZiZWZmMTA1ZWY0NGMyNTgxZWVmOGQxNDQwZjZmNWUuLjAx
NWUxODNhMDU5ZThiYmI5NGRjNDE3Y2MxYmNjNzI1YWViYzA1MDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApA
QCAtNTksOSArNTksOSBAQCBTY3JvbGxpbmdUcmVlOjpFdmVudFJlc3VsdCBUaHJlYWRlZFNjcm9s
bGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudChjb25zdCBQbAogICAgIGlmICh3aWxsV2hl
ZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdoZWVsRXZlbnQpKQogICAgICAgICByZXR1cm4gRGlk
Tm90SGFuZGxlRXZlbnQ7CiAKLSAgICBSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiB0aHJl
YWRlZFNjcm9sbGluZ1RyZWUodGhpcyk7Ci0gICAgU2Nyb2xsaW5nVGhyZWFkOjpkaXNwYXRjaChb
dGhyZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50XSB7Ci0gICAgICAgIHRocmVhZGVkU2Ny
b2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKKyAgICBSZWZQdHI8VGhy
ZWFkZWRTY3JvbGxpbmdUcmVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFNjcm9sbGluZ1Ro
cmVhZDo6ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMsIHdoZWVsRXZlbnRdIHsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2ZW50KTsKICAgICB9KTsKICAgICAK
ICAgICByZXR1cm4gRGlkSGFuZGxlRXZlbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuY3BwCmluZGV4IGYyMmQ2YmY4OWNmMmRiNjM5OTI2M2NjOTA5ZjYyODY3NzgxODU3MDUuLmM2
MjlmYjJlOGEzNTRjZWRlM2UyOGQ2MDIwNGFhZjY3YWRiYzcxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMDM0LDcgKzEwMzQsNyBAQCB2b2lkIFNjcm9sbFZp
ZXc6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxiYXJPdmVybGF5U3R5bGUgb3Zlcmxh
eVN0eWxlKQogCiB2b2lkIFNjcm9sbFZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBu
ZXdSZWN0KQogewotICAgIFJlZjxTY3JvbGxWaWV3PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8
U2Nyb2xsVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgSW50UmVjdCBvbGRSZWN0ID0g
ZnJhbWVSZWN0KCk7CiAgICAgCiAgICAgaWYgKG5ld1JlY3QgPT0gb2xkUmVjdCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1v
bml0b3IuY3BwCmluZGV4IDkwZDgwMTVhODJmNzQzZDAwODBkZTc5ZDAyMTZjNzFlMzNlYzllNzQu
LmQ5YTYyMjYwYzMwOWUyMzI1MDU0YWIyOWIxMGI1OWFjYTg5ZTc5OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25p
dG9yLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRGlzcGxheVJlZnJlc2hNb25pdG9yOjpk
aXNwbGF5RGlkUmVmcmVzaCgpCiAKICAgICAvLyBUaGUgY2FsbCBiYWNrIGNhbiBjYXVzZSBhbGwg
b3VyIGNsaWVudHMgdG8gYmUgdW5yZWdpc3RlcmVkLCBzbyB3ZSBuZWVkIHRvIHByb3RlY3QKICAg
ICAvLyBhZ2FpbnN0IGRlbGV0aW9uIHVudGlsIHRoZSBlbmQgb2YgdGhlIG1ldGhvZC4KLSAgICBS
ZWY8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RGlzcGxh
eVJlZnJlc2hNb25pdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIENvcHkgdGhl
IGhhc2ggdGFibGUgYW5kIHJlbW92ZSBjbGllbnRzIGZyb20gaXQgb25lIGJ5IG9uZSBzbyB3ZSBk
b24ndCBub3RpZnkKICAgICAvLyBhbnkgY2xpZW50IHR3aWNlLCBidXQgY2FuIHJlc3BvbmQgdG8g
cmVtb3ZhbCBvZiBjbGllbnRzIGR1cmluZyB0aGUgZGVsaXZlcnkgcHJvY2Vzcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVl
SG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxh
eWVyVHJlZUhvc3QuY3BwCmluZGV4IGJjMzIzYTJmZjQzZDRkODY3YTQwMDIyYjVkNjE3MGUzOWZl
N2YxMTcuLjExNTMyYWQ2ZDkzZWNlMTY4YWM4N2U0OGMyNTdhMGU5ZGM0NWFlMDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJUcmVl
SG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NB
Q0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMjgxLDcgKzI4MSw3IEBAIHZvaWQgQ0FDRkxheWVyVHJl
ZUhvc3Q6OnNldFNob3VsZEludmVydENvbG9ycyhib29sKQogdm9pZCBDQUNGTGF5ZXJUcmVlSG9z
dDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCkKIHsKICAgICAvLyBDYWxsaW5nIG91dCB0
byB0aGUgY2xpZW50IGNvdWxkIGNhdXNlIG91ciBsYXN0IHJlZmVyZW5jZSB0byBnbyBhd2F5Lgot
ICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0
cjxDQUNGTGF5ZXJUcmVlSG9zdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIHVwZGF0ZURl
YnVnSW5mb0xheWVyKG1fcGFnZS0+c2V0dGluZ3MoKS5zaG93VGlsZWRTY3JvbGxpbmdJbmRpY2F0
b3IoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyLmNwcAppbmRleCA0YmNhMjRlZjY3MWZhY2JkNWJmYTkxNjFiNjk1NzBmMjBlNjg3Y2Yy
Li42ODQyOTViMTY0MTkxN2I1MzZkZDA0ZWVjOGIxNTY2MjAyYjY1MTk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNr
UHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC03NCwx
NCArNzQsMTggQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpoYW5kbGVT
YW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKICAgICAgICAgbV9wZW5kaW5nU2FtcGxl
cy5hcHBlbmQoc2FtcGxlKTsKICAgICB9CiAKLSAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJp
dmF0ZUdTdHJlYW1lcj4gcHJvdGVjdG9yKHRoaXMpOwotICAgIG1fbm90aWZpZXIubm90aWZ5KE1h
aW5UaHJlYWROb3RpZmljYXRpb246Ok5ld1NhbXBsZSwgW3Byb3RlY3Rvcl0geyBwcm90ZWN0b3It
Pm5vdGlmeVRyYWNrT2ZTYW1wbGUoKTsgfSk7CisgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9ub3RpZmllci5ub3Rp
ZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6TmV3U2FtcGxlLCBbcHJvdGVjdGVkVGhpc10gewor
ICAgICAgICBwcm90ZWN0ZWRUaGlzLT5ub3RpZnlUcmFja09mU2FtcGxlKCk7CisgICAgfSk7CiB9
CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6c3RyZWFtQ2hhbmdlZCgp
CiB7Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3Rv
cih0aGlzKTsKLSAgICBtX25vdGlmaWVyLm5vdGlmeShNYWluVGhyZWFkTm90aWZpY2F0aW9uOjpT
dHJlYW1DaGFuZ2VkLCBbcHJvdGVjdG9yXSB7IHByb3RlY3Rvci0+bm90aWZ5VHJhY2tPZlN0cmVh
bUNoYW5nZWQoKTsgfSk7CisgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFt
ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9ub3RpZmllci5ub3RpZnkoTWFpblRocmVh
ZE5vdGlmaWNhdGlvbjo6U3RyZWFtQ2hhbmdlZCwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsKKyAgICB9KTsKIH0K
IAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpub3RpZnlUcmFja09mU2Ft
cGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3Mv
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCmluZGV4IDY4ODk4OWUzZTkxNDYw
ZTBiZmExYzIzNmVhMTQ0NDc2MjNjYzY4ODkuLjVmMWE0MzQ3NTI4NjhjZGExODk5YjdiMzZkOTI2
ZDU4ZDc0YTgyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQpAQCAtMTU0LDcg
KzE1NCw3IEBAIHByaXZhdGU6CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwot
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhp
cyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNj
cmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07CiAgICAgV2ViVGhyZWFk
UnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBb
dmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2Vi
Q29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CkBAIC0xNjgsNyArMTY4LDcgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2NyZWVu
KCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICBtX21vZGVsLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewpAQCAtMTg1LDcgKzE4
NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZENsZWFu
dXBGdWxsc2NyZWVuKCkKICAgICBtX2ludGVyZmFjZSA9IG51bGxwdHI7CiAgICAgbV92aWRlb0Z1
bGxzY3JlZW5WaWV3ID0gbmlsOwogICAgIAotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2Vi
VGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVv
RnVsbHNjcmVlbkxheWVyKG5pbCk7CiAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZShudWxscHRyKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVlbigpCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpmdWxsc2NyZWVuTWF5UmV0dXJu
VG9JbmxpbmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAgICAgIElu
dFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1lbnQuZ2V0
KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgdGhpcywgY2xpZW50UmVjdF0gewpAQCAtMjE0LDcgKzIxNCw3IEBAIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5U
b0lubGluZSgpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXNl
dE1lZGlhU3RhdGUoKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01h
aW5UaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10gewogICAgICAgICBp
ZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+cmVzZXRNZWRpYVN0YXRl
KCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBBU1NFUlQo
V2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGR1
cmF0aW9uXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJm
YWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CkBAIC0yMzQsNyArMjM0LDcgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0
aW9uKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q3VycmVu
dFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSkKIHsKICAgICBBU1NF
UlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMs
IGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRDdXJyZW50VGltZShjdXJyZW50VGltZSwgYW5jaG9y
VGltZSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3UKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEJ1ZmZlcmVkVGltZShkb3Vi
bGUgYnVmZmVyZWRUaW1lKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlz
KHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgYnVmZmVyZWRUaW1lXSB7CiAgICAgICAgIGlm
IChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRpbWUo
YnVmZmVyZWRUaW1lKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1ZmZlcmVkVGltZSkK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFJhdGUoYm9vbCBp
c1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXND
dXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGlzUGxheWluZywgcGxh
eWJhY2tSYXRlXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50
ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKQEAgLTI2NCw3ICsyNjQs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRSYXRlKGJv
b2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFjawogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsK
LSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1Ro
aXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodF0g
ewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0
VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KTsKQEAgLTI3NCw3ICsyNzQs
NyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0Rp
bWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJh
bmdlcykKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBwbGF0Zm9ybVRpbWVSYW5n
ZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBwbGF0Zm9ybVRpbWVSYW5nZXNdIHsK
ICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQpAQCAtMjg1LDcgKzI4NSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFNlZWthYmxlUmFuZ2VzKGNvbnN0IFRp
bWVSYW5nZXMmIHRpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFzdFJldmVyc2UpCiB7CiAgICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlz
LCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAg
ICAgICAgbV9pbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZShjYW5QbGF5RmFzdFJldmVy
c2UpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0CiB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJ
bmRleCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG9wdGlvbnNBcnJheSA9
IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpvcHRpb25z
LnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9wdGlvbnMpCkBAIC0zMTQsNyArMzE0
LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0QXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmUKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVj
dG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgQVNT
RVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIAog
ICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb3B0aW9uc0FycmF5ID0gYWRvcHROUyhbW05T
TXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6ZSgpXSk7CiAg
ICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRMZWdpYmxlTWVkaWFTZWxlY3Rp
b25PcHRpb25zKGNvbnN0CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZXJuYWxQbGF5YmFja1Rhcmdl
dFR5cGUgdHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5hbWUpCiB7CiAgICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFN0cmluZ0Nh
cHR1cmUgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lKGxvY2FsaXplZERldmljZU5hbWUpOwog
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlz
LCB0aGlzLCBlbmFibGVkLCB0eXBlLCBjYXB0dXJlZExvY2FsaXplZERldmljZU5hbWVdIHsKICAg
ICAgICAgaWYgKG1faW50ZXJmYWNlKQpAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9vbCBlbmFi
bGVkLCBFeHRlCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRX
aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAgIEFTU0VS
VChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywg
ZGlzYWJsZWRdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRl
cmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKQEAgLTM1
Niw3ICszNTYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sCiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxl
bWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzVUlU
aHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBXZWJUaHJlYWRSdW4oW3N0cm9u
Z1RoaXMsIHRoaXMsIG1vZGVdIHsKICAgICAgICAgaWYgKG1fbW9kZWwpCiAgICAgICAgICAgICBt
X21vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7CkBAIC0zNjYsNyArMzY2LDcgQEAg
dm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3Jl
ZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnQKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8
Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3IGxh
eWVyXTsKICAgICAKICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0U3VibGF5ZXJUcmFuc2Zv
cm06W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRyYW5zZm9ybV1dOwpAQCAtMzg5LDcgKzM4OSw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJG
cmFtZShGbG9hdFJlY3QgZnJhbWUpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6Vmlk
ZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXMo
dGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywg
dmlkZW9HcmF2aXR5XSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2Rl
bC0+c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2aXR5KTsKQEAgLTM5OSw3ICszOTksNyBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVy
R3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwot
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhp
cyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlz
LCBtb2RlXSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9tb2RlbC0+ZnVs
bHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwpAQCAtNDIwLDcgKzQyMCw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9F
bGVtZW50JiB2aWRlCiAgICAgUmV0YWluUHRyPFVJVmlldz4gdmlld1JlZiA9IHZpZXc7CiAgICAg
bV92aWRlb0VsZW1lbnQgPSAmdmlkZW9FbGVtZW50OwogCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpcywgdmlld1JlZiwgbW9kZV0gewogICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsK
IApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgICAgIG1f
aW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAgICAgICAgbV92
aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGlu
aXRdKTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgICAgICBX
ZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKICAgICAgICAg
ICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRl
KFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVhdGUoKS5nZXQoKSk7CiAg
ICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7
CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQo
KSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgSW50UmVjdCBjbGllbnRSZWN0ID0gZWxlbWVudFJl
Y3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKICAg
ICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNsaWVudFJlY3QpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGExNzRjMTViYmE1NDFmZGJiMmZhY2E1YzVlNGVjMzg4
MGZmYzg1M2IuLmIxN2VkNGYwMDAyMmMzMWMzMmYwYmUwNDI4NzJmZDdmNTgzODIyOTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTYwNyw3ICs2MDcsNyBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgp
CiAgICAgLy8gSWYgd2UgYXJlIGJvdGggaW4gUGlQIGFuZCBpbiBGdWxsc2NyZWVuIChpLmUuLCB2
aWEgYXV0by1QaVApLCBhbmQgd2UgZGlkIG5vdCBzdG9wIGZ1bGxzY3JlZW4gdXBvbiByZXR1cm5p
bmcsIGl0IG11c3QgYmUKICAgICAvLyBiZWNhdXNlIHRoZSBvcmlnaW5hdGluZyB2aWV3IGlzIG5v
dCB2aXNpYmxlLCBzbyBoaWRlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdy4KICAgICBpZiAoaXNNb2Rl
KEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkIHwgSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSkp
IHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJv
bmdUaGlzKHRoaXMpOworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9s
bGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W3N0cm9uZ1Ro
aXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgW21fd2luZG93IHNldEhp
ZGRlbjpZRVNdOwogICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNl
dEhpZGRlbjpZRVNdOwpAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnNldHVwRnVsbHNjcmVlbihVSVZpZXcmIHZpZGVvVmlldywgY29uc3QK
IAogICAgIFtDQVRyYW5zYWN0aW9uIGNvbW1pdF07CiAKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlz
XSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgICAg
IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKQEAgLTcy
OCw3ICs3MjgsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRl
clBpY3R1cmVJblBpY3R1cmUoKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiV2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCVw
KSIsIHRoaXMpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4g
c3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBpZiAoW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlXSkgewogICAgICAgICAvLyBOT1RFOiBUaGUg
ZnVsbHNjcmVlbiBtb2RlIHdpbGwgYmUgcmVzdG9yZWQgaW4gcHJlcGFyZUZvclBpY3R1cmVJblBp
Y3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKCkuCkBAIC03NzMsMTMgKzc3MywxMyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBmaQogICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsK
ICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwog
ICAgIH0gZWxzZSBpZiAoaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUgfCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVs
bHNjcmVlbk1vZGVTdGFuZGFyZCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgICAg
IFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxl
dGlvbkhhbmRsZXI6W3N0cm9uZ1RoaXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAg
ICAgICAgW21fd2luZG93IHNldEhpZGRlbjpOT107CiAgICAgICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07CiAgICAgICAgIH1dOwogICAgIH0gZWxz
ZSBpZiAoaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0
YW5kYXJkKSkgewotICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICAgICAgW21fcGxheWVyVmll
d0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6
W3N0cm9uZ1RoaXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgbV9leGl0
Q29tcGxldGVkID0gdHJ1ZTsKIApAQCAtOTA3LDcgKzkwNyw3IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBp
ZiAobV9tb2RlICYgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3Rh
bmRhcmQpIHsKICAgICAgICAgaWYgKCFbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBwaWN0dXJlSW5Q
aWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRdKSB7Ci0gICAgICAgICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7
CisgICAgICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBl
eGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbc3Ryb25nVGhpcywg
dGhpc10gKEJPT0wsIE5TRXJyb3IqKSB7CiAgICAgICAgICAgICAgICAgW21fd2luZG93IHNldEhp
ZGRlbjpZRVNdOwogICAgICAgICAgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3
XSBzZXRIaWRkZW46WUVTXTsKQEAgLTk5Niw3ICs5OTYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29t
cGxldAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZXRh
aW5QdHI8aWQ+IHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhh
bmRsZXIgY29weV0pOwogICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZShbc3Ryb25nVGhp
cywgc3Ryb25nQ29tcGxldGlvbkhhbmRsZXJdKGJvb2wgcmVzdG9yZWQpICB7CiAgICAgICAgIExP
RyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVG
b3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlciBsYW1iZGEoJXApIC0g
cmVzdG9yZWQoJXMpIiwgc3Ryb25nVGhpcy5nZXQoKSwgYm9vbFN0cmluZyhyZXN0b3JlZCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbSBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KaW5kZXggNWJhMjgyMWI3MGI5
YzI1MjRjNjE2MGEyNzk1ZjQ5NDNjYTU0ZjNiMy4uMGU3Nzg3ZDAyMzZmMjYwOWM4NTM5NmFjNGIz
ZDYwYjc3ODJkYWI5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dp
ZGdldE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBXaWRnZXQ6OnNldEZyYW1lUmVjdChjb25zdCBJbnRS
ZWN0JiByZWN0KQogCiAgICAgLy8gVGFrZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVj
YXVzZSBzZW5kaW5nIG1lc3NhZ2VzIHRvIG91dGVyVmlldyBjYW4gaW52b2tlIGFyYml0cmFyeQog
ICAgIC8vIGNvZGUgaW5jbHVkaW5nIHJlY2FsYyBzdHlsZS9sYXlvdXQsIHdoaWNoIGNhbiBkZXJl
ZiBpdC4KLSAgICBSZWY8V2lkZ2V0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8V2lkZ2V0PiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIE5TUmVjdCBmcmFtZSA9IHJlY3Q7CiAgICAgaWYg
KCFOU0VxdWFsUmVjdHMoZnJhbWUsIG91dGVyVmlldy5mcmFtZSkpIHsKQEAgLTIwNCw3ICsyMDQs
NyBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBwLCBjb25zdCBJbnRSZWN0
JiByKQogCiAgICAgLy8gVGFrZSBhIHJlZmVyZW5jZSB0byB0aGlzIFdpZGdldCwgYmVjYXVzZSBz
ZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSB2aWV3cyBjYW4gaW52b2tlIGFyYml0cmFyeQogICAgIC8v
IGNvZGUsIHdoaWNoIGNhbiBkZXJlZiBpdC4KLSAgICBSZWY8V2lkZ2V0PiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8V2lkZ2V0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIE5TR3JhcGhp
Y3NDb250ZXh0ICpjdXJyZW50Q29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBjdXJyZW50Q29u
dGV4dF07CiAgICAgaWYgKGN1cnJlbnRDb250ZXh0ID09IFtbdmlldyB3aW5kb3ddIGdyYXBoaWNz
Q29udGV4dF0gfHwgIVtjdXJyZW50Q29udGV4dCBpc0RyYXdpbmdUb1NjcmVlbl0pIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxl
LmNwcAppbmRleCBjZmFlMjMzODcwOWI3MzQzZWQyOTg3OTM1Y2RiMjZjNGFiNjJmZDcyLi41M2Vi
MjVhMDRkMTE0YmIwY2M1OGRhN2ZlYjE1YmJhMWY3Yzc0NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCkBAIC0x
ODcsMTEgKzE4NywxMSBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6c3RhcnQoKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gaGFuZGxl
KHRoaXMpOworICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAKICAgICAvLyBGaW5pc2ggdGhpcyBhc3luYyBjYWxsIHF1aWNrbHkgYW5kIHJldHVybi4K
LSAgICBjYWxsT25NYWluVGhyZWFkKFtoYW5kbGVdIHsKLSAgICAgICAgaGFuZGxlLT5kb1N0YXJ0
KCk7CisgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kb1N0YXJ0KCk7CiAgICAgfSk7CiB9CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2
b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZG9TdGFydCgpCiAgICAgaWYgKG1fYXN5bmMpCiAgICAg
ICAgIGdldFNpemVGb3JOZXh0KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFJlZjxCbG9iUmVzb3Vy
Y2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOyAvLyBnZXRTaXplRm9yTmV4dCBjYWxscyB0aGUgY2xp
ZW50CisgICAgICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyBnZXRTaXplRm9yTmV4dCBjYWxscyB0aGUgY2xpZW50CiAgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9ibG9iRGF0YS0+aXRlbXMoKS5zaXplKCkgJiYgIW1fYWJvcnRlZCAmJiAh
bV9lcnJvckNvZGU7ICsraSkKICAgICAgICAgICAgIGdldFNpemVGb3JOZXh0KCk7CiAgICAgICAg
IG5vdGlmeVJlc3BvbnNlKCk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VI
YW5kbGU6OmdldFNpemVGb3JOZXh0KCkKIAogICAgICAgICAvLyBTdGFydCByZWFkaW5nIGlmIGlu
IGFzeW5jaHJvbm91cyBtb2RlLgogICAgICAgICBpZiAobV9hc3luYykgewotICAgICAgICAgICAg
UmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgICAgICBSZWY8
QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgICAgIG5v
dGlmeVJlc3BvbnNlKCk7CiAgICAgICAgICAgICBtX2J1ZmZlci5yZXNpemUoYnVmZmVyU2l6ZSk7
CiAgICAgICAgICAgICByZWFkQXN5bmMoKTsKQEAgLTMzNiw3ICszMzYsNyBAQCBpbnQgQmxvYlJl
c291cmNlSGFuZGxlOjpyZWFkU3luYyhjaGFyKiBidWYsIGludCBsZW5ndGgpCiAgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKIAogICAgIEFTU0VSVCghbV9hc3luYyk7Ci0gICAgUmVmPEJsb2JS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRs
ZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpbnQgb2Zmc2V0ID0gMDsKICAgICBpbnQg
cmVtYWluaW5nID0gbGVuZ3RoOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgQmxvYlJlc291cmNl
SGFuZGxlOjpyZWFkRGF0YUFzeW5jKGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSkKICAgICBBU1NF
UlQobV9hc3luYyk7CiAgICAgQVNTRVJUKGl0ZW0uZGF0YSgpLmRhdGEoKSk7CiAKLSAgICBSZWY8
QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJlc291cmNl
SGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGxvbmcgbG9uZyBieXRlc1RvUmVh
ZCA9IGl0ZW0ubGVuZ3RoKCkgLSBtX2N1cnJlbnRJdGVtUmVhZFNpemU7CiAgICAgaWYgKGJ5dGVz
VG9SZWFkID4gbV90b3RhbFJlbWFpbmluZ1NpemUpCkBAIC01MTksNyArNTE5LDcgQEAgdm9pZCBC
bG9iUmVzb3VyY2VIYW5kbGU6OmRpZFJlYWQoaW50IGJ5dGVzUmVhZCkKIHZvaWQgQmxvYlJlc291
cmNlSGFuZGxlOjpjb25zdW1lRGF0YShjb25zdCBjaGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQog
ewogICAgIEFTU0VSVChtX2FzeW5jKTsKLSAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIG1fdG90YWxSZW1haW5pbmdTaXplIC09IGJ5dGVzUmVhZDsKIApAQCAtNTQ5
LDcgKzU0OSw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpjb25zdW1lRGF0YShjb25zdCBj
aGFyKiBkYXRhLCBpbnQgYnl0ZXNSZWFkKQogdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmZhaWxl
ZChpbnQgZXJyb3JDb2RlKQogewogICAgIEFTU0VSVChtX2FzeW5jKTsKLSAgICBSZWY8QmxvYlJl
c291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxl
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgY2xpZW50LgogICAg
IG5vdGlmeUZhaWwoZXJyb3JDb2RlKTsKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5UmVzcG9uc2UoKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAo
bV9lcnJvckNvZGUpIHsKLSAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgq
dGhpcyk7CisgICAgICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogICAgICAgICBub3RpZnlSZXNwb25zZU9uRXJyb3IoKTsKICAgICAgICAgbm90aWZ5Rmlu
aXNoKCk7CiAgICAgfSBlbHNlCkBAIC02NjUsOSArNjY1LDkgQEAgdm9pZCBCbG9iUmVzb3VyY2VI
YW5kbGU6Om5vdGlmeUZpbmlzaCgpCiAKICAgICAvLyBTY2hlZHVsZSB0byBub3RpZnkgdGhlIGNs
aWVudCBmcm9tIGEgc3RhbmRhbG9uZSBmdW5jdGlvbiBiZWNhdXNlIHRoZSBjbGllbnQgbWlnaHQg
ZGlzcG9zZSB0aGUgaGFuZGxlIGltbWVkaWF0ZWx5IGZyb20gdGhlIGNhbGxiYWNrIGZ1bmN0aW9u
CiAgICAgLy8gd2hpbGUgd2Ugc3RpbGwgaGF2ZSBCbG9iUmVzb3VyY2VIYW5kbGUgY2FsbHMgaW4g
dGhlIHN0YWNrLgotICAgIFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSh0aGlzKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtoYW5kbGVdIHsKLSAgICAgICAgZG9Ob3RpZnlGaW5pc2go
KmhhbmRsZSk7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIGRv
Tm90aWZ5RmluaXNoKCpwcm90ZWN0ZWRUaGlzKTsKICAgICB9KTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5l
dC5jcHAKaW5kZXggYzk1YTY1ODIzYWI5NzI2NzljMTY5YjZiZDBiODc1MThjNjE3OGVkMC4uOTA2
ZTY2OTEwN2JjY2I4ZWJkODI1YjJiOGM5YzgwMjRkYTY5ZjMzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQu
Y3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNlbmRSZXF1
ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAgICAgICAg
fQogICAgIH0KIAotICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBpZiAoZC0+bV91
c2VzQXN5bmNDYWxsYmFja3MpCiAgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJlcXVlc3RBc3lu
Yyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICBlbHNlIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVS
TENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCmluZGV4IDk0ZDVlOTU0NzJjYzQ3NWYyZWNkN2IzMzc1
YjExZDM3YTdlNjVlMzcuLmRhZjkzZGM4NDhiYzE1OGQ0N2U3ZWE0YWUwZWJkYzIyNzVkZmEyNjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBA
IENGVVJMUmVxdWVzdFJlZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlOjp3aWxsU2VuCiAKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxp
Y2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91
bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFs
dWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBj
YXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNIYW5kbGUoKSkgewpAQCAtMTMw
LDcgKzEzMCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZVJlc3BvbnNlCiB7CiAgICAgLy8gRklYTUU6IFRo
ZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0
ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBi
eSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVu
aW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxl
KCkgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkgewpAQCAtMTcwLDcgKzE3MCw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
UmVjZWl2ZURhdGEoQ0ZECiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNv
cGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3Qg
Y2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQg
dXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5n
LgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgQ0ZSZXRhaW4oZGF0YSk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewpAQCAtMTg4LDcgKzE4OCw3IEBAIHZvaWQgUmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmluaXNo
TG9hZGluZygpCiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBw
cm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCBy
ZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEg
QysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAg
IFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAg
ICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCiAg
ICAgICAgICAgICByZXR1cm47CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRGYWlsKENGRXJy
b3JSZWYKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3Rl
Y3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigp
LAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysg
bGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVm
UHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBDRlJldGFpbihlcnJvcik7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgXnsKICAgICAgICAgaWYgKHByb3RlY3Rvci0+aGFzSGFuZGxlKCkgJiYgbV9oYW5k
bGUtPmNsaWVudCgpKSB7CkBAIC0yMjAsNyArMjIwLDcgQEAgQ0ZDYWNoZWRVUkxSZXNwb25zZVJl
ZiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjoKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3Rv
ciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAog
ICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFt
YmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRy
PFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+
IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlm
ICghcHJvdGVjdG9yLT5oYXNIYW5kbGUoKSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKSB7CkBAIC0y
NDAsNyArMjQwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlQ2hhbGxlbmcKIHsKICAgICAvLyBGSVhNRTog
VGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdh
c3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMi
IGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIg
dW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxD
b25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDRlJldGFpbihjaGFsbGVuZ2UpOwog
ICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAg
IGlmIChwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKSB7CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpk
aWRTZW5kQm9keURhdGEoQ0YKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkg
Y29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVz
dCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFu
ZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJp
bmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5k
bGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBe
ewogICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxlKCkgfHwgIW1faGFuZGxlLT5jbGll
bnQoKSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTI3OCw3ICsyNzgsNyBAQCBCb29sZWFuIFJl
c291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmNh
blJlc3BvbmRUb1BybwogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3Bp
ZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNh
bGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVz
ZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4K
LSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
ICAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKSB7CkBAIC0zMDgsNyArMzA4LDcg
QEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlv
blF1ZXVlOjpkaWRSZWNlaXZlRGF0YUFycmEKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGlt
cGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBz
aG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIg
dmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25h
bCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBDRlJldGFpbihkYXRhQXJyYXkpOwogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmIChwcm90ZWN0
b3ItPmhhc0hhbmRsZSgpICYmIG1faGFuZGxlLT5jbGllbnQoKSkgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAppbmRleCBh
NGFmNjFlMDk3MGEwMzJjZDU4NjA1MmM5ZmQxYjM1NTUwMjdkNDMzLi5jNmM4Nzk3YmJjYTAyYzk1
OWJkNTMzZTY0OGVjZTRkNzFmNGE0NzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcApAQCAtNDAzLDkgKzQwMyw5IEBA
IHZvaWQgQ3VybERvd25sb2FkOjpkaWRSZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVy
KQogCiAgICAgICAgIGlmIChodHRwQ29kZSA+PSAyMDAgJiYgaHR0cENvZGUgPCAzMDApIHsKICAg
ICAgICAgICAgIFVSTENhcHR1cmUgY2FwdHVyZWRVcmwoZ2V0Q3VybEVmZmVjdGl2ZVVSTChtX2N1
cmxIYW5kbGUpKTsKLSAgICAgICAgICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZERv
d25sb2FkKHRoaXMpOworICAgICAgICAgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKIAotICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY2FwdHVy
ZWRVcmwsIHByb3RlY3RlZERvd25sb2FkXSB7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFk
KFt0aGlzLCBjYXB0dXJlZFVybCwgcHJvdGVjdGVkVGhpc10gewogICAgICAgICAgICAgICAgIG1f
cmVzcG9uc2Uuc2V0VVJMKGNhcHR1cmVkVXJsLnVybCgpKTsKICAgICAgICAgICAgICAgICBtX3Jl
c3BvbnNlLnNldE1pbWVUeXBlKGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUobV9yZXNwb25z
ZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlKSkpOwogICAgICAg
ICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5nTmFtZShleHRyYWN0Q2hhcnNldEZy
b21NZWRpYVR5cGUobV9yZXNwb25zZS5odHRwSGVhZGVyRmllbGQoSFRUUEhlYWRlck5hbWU6OkNv
bnRlbnRUeXBlKSkpOwpAQCAtNDE2LDkgKzQxNiw5IEBAIHZvaWQgQ3VybERvd25sb2FkOjpkaWRS
ZWNlaXZlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgIH0gZWxzZSB7CiAgICAgICAg
IFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRIZWFkZXIoaGVhZGVyKTsKIAotICAgICAgICBSZWZQdHI8
Q3VybERvd25sb2FkPiBwcm90ZWN0ZWREb3dubG9hZCh0aGlzKTsKKyAgICAgICAgUmVmUHRyPEN1
cmxEb3dubG9hZD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgICAgICBjYWxsT25NYWluVGhy
ZWFkKFt0aGlzLCBjYXB0dXJlZEhlYWRlciwgcHJvdGVjdGVkRG93bmxvYWRdIHsKKyAgICAgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgY2FwdHVyZWRIZWFkZXIsIHByb3RlY3RlZFRoaXNdIHsK
ICAgICAgICAgICAgIGludCBzcGxpdFBvcyA9IGNhcHR1cmVkSGVhZGVyLnN0cmluZygpLmZpbmQo
IjoiKTsKICAgICAgICAgICAgIGlmIChzcGxpdFBvcyAhPSAtMSkKICAgICAgICAgICAgICAgICBt
X3Jlc3BvbnNlLnNldEhUVFBIZWFkZXJGaWVsZChjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5sZWZ0
KHNwbGl0UG9zKSwgY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCkuc3Vic3RyaW5nKHNwbGl0UG9zICsg
MSkuc3RyaXBXaGl0ZVNwYWNlKCkpOwpAQCAtNDMwLDkgKzQzMCw5IEBAIHZvaWQgQ3VybERvd25s
b2FkOjpkaWRSZWNlaXZlRGF0YSh2b2lkKiBkYXRhLCBpbnQgc2l6ZSkKIHsKICAgICBMb2NrSG9s
ZGVyIGxvY2tlcihtX211dGV4KTsKIAotICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3Rl
ZERvd25sb2FkKHRoaXMpOworICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAKLSAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBzaXplLCBwcm90ZWN0ZWREb3du
bG9hZF0geworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHNpemUsIHByb3RlY3RlZFRoaXNd
IHsKICAgICAgICAgZGlkUmVjZWl2ZURhdGFPZkxlbmd0aChzaXplKTsKICAgICB9KTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhh
bmRsZU1hYy5tbQppbmRleCA4YTI2ODg4ZTdiMjNkYzQyNGI5OGI1MWU3ODIyN2I5ZWIyZjAxNzI1
Li5iZTQzNmRhZDYxZjRkMDI1MDI0ZDY3YWY0NjdmNDBkZGFiYjc4ZGM5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbQpAQCAtNDkxLDcgKzQ5MSw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVx
dWVzdChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgaWYg
KGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKSB7CiAgICAgICAgIGNsaWVudCgpLT53aWxsU2VuZFJl
cXVlc3RBc3luYyh0aGlzLCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKICAgICB9IGVsc2Ug
ewotICAgICAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgICAgICBS
ZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICBjbGllbnQo
KS0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogCiAg
ICAgICAgIC8vIENsaWVudCBjYWxsIG1heSBub3QgcHJlc2VydmUgdGhlIHNlc3Npb24sIGVzcGVj
aWFsbHkgaWYgdGhlIHJlcXVlc3QgaXMgc2VudCBvdmVyIElQQy4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVTb3VwLmNwcAppbmRleCA5Y2M1ZDhjZTkxODI3M2MwYzM2NzRhNjljZGU0OGVlZTI5ZjAyMjMy
Li41ZjgzYWY0YmJmZWY5MjllMGYyYWQ1NjczOGY3MzY3ZjdkNWViYTE4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZVNvdXAuY3BwCkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGU6OnJlYWRCeXRlcyhzaWduZWQgbG9uZyBieXRlc1JlYWQsIEdFcnJvciogZXJyb3IpCiAg
ICAgfQogCiAgICAgLy8gVGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGhhbmRsZSwgcG90ZW50aWFs
bHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgotICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1I
YW5kbGU+IHByb3RlY3QodGhpcyk7IAorICAgIFJlZlB0cjxTb2NrZXRTdHJlYW1IYW5kbGU+IHBy
b3RlY3RlZFRoaXModGhpcyk7IAogICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlU29ja2V0U3RyZWFt
RGF0YSh0aGlzLCBtX3JlYWRCdWZmZXIuZ2V0KCksIGJ5dGVzUmVhZCk7CiAgICAgaWYgKG1faW5w
dXRTdHJlYW0pIC8vIFRoZSBjbGllbnQgbWF5IGhhdmUgY2xvc2VkIHRoZSBjb25uZWN0aW9uLgog
ICAgICAgICBnX2lucHV0X3N0cmVhbV9yZWFkX2FzeW5jKG1faW5wdXRTdHJlYW0uZ2V0KCksIG1f
cmVhZEJ1ZmZlci5nZXQoKSwgUkVBRF9CVUZGRVJfU0laRSwgR19QUklPUklUWV9ERUZBVUxULCAw
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAppbmRleCAw
ZGY4ZjVjMGQzZmIwYTMyOGZjMjRlZjlhYWQ2ZTI1Mzk2MTBkMTBhLi5lYjhmYjNhZWY3OTk2YTI4
NmE5YjA2NzNjMWMzZTBkOTZjMmRlMWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS93aW4vUG9wdXBNZW51V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUG9wdXBNZW51V2luLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIHZvaWQgUG9wdXBNZW51V2lu
OjpzaG93KGNvbnN0IEludFJlY3QmIHIsIEZyYW1lVmlldyogdmlldywgaW50IGluZGV4KQogICAg
IG1fc2hvd1BvcHVwID0gdHJ1ZTsKIAogICAgIC8vIFByb3RlY3QgdGhlIHBvcHVwIG1lbnUgaW4g
Y2FzZSBpdHMgb3duZXIgaXMgZGVzdHJveWVkIHdoaWxlIHdlJ3JlIHJ1bm5pbmcgdGhlIG1lc3Nh
Z2UgcHVtcC4KLSAgICBSZWZQdHI8UG9wdXBNZW51PiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0
cjxQb3B1cE1lbnU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICA6OlNldENhcHR1cmUoaG9z
dFdpbmRvdyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2Ny
aXB0TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVy
LmNwcAppbmRleCBmNzM5ZTAyMTgxODE0ZTA4OTc2NDcxMTgxNGJmMThhYjVhNGE0N2YzLi45NWUw
NzM4NDU5YzI5YTFhM2RmM2MyMjFlOWQ4MzE3NTQ3ZmJjZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRMb2FkZXIuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQg
V29ya2VyU2NyaXB0TG9hZGVyOjpsb2FkQXN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogc2NyaXB0RXhlY3V0CiAgICAgb3B0aW9ucy5jb250ZW50U2VjdXJpdHlQb2xpY3lFbmZv
cmNlbWVudCA9IGNvbnRlbnRTZWN1cml0eVBvbGljeUVuZm9yY2VtZW50OwogCiAgICAgLy8gRHVy
aW5nIGNyZWF0ZSwgY2FsbGJhY2tzIG1heSBoYXBwZW4gd2hpY2ggcmVtb3ZlIHRoZSBsYXN0IHJl
ZmVyZW5jZSB0byB0aGlzIG9iamVjdC4KLSAgICBSZWY8V29ya2VyU2NyaXB0TG9hZGVyPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8V29ya2VyU2NyaXB0TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKICAgICBtX3RocmVhZGFibGVMb2FkZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUo
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgdGhpcywgKnJlcXVlc3QsIG9wdGlvbnMpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA2YWIzMTU5N2E1NDc0ZGYxOGVh
OWU4NTgyNGI1ZmQwNmE2ZWVjYjU5Li5jM2Q0NTg1NDM5Mjc2YzFiNjI4NTUxMWNkZGM1ZjNjYWQ1
NjNhZTAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTc2MSw3ICs3
NjEsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGVSZXF1ZXN0KEV4Y2VwdGlvbkNvZGUm
IGVjKQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6YWJvcnQoKQogewogICAgIC8vIGludGVybmFsQWJv
cnQoKSBjYWxscyBkcm9wUHJvdGVjdGlvbigpLCB3aGljaCBtYXkgcmVsZWFzZSB0aGUgbGFzdCBy
ZWZlcmVuY2UuCi0gICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKCFpbnRl
cm5hbEFib3J0KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTExOTIsNyArMTE5Miw3IEBAIHZvaWQg
WE1MSHR0cFJlcXVlc3Q6OmRpc3BhdGNoRXJyb3JFdmVudHMoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlKQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkUmVhY2hUaW1lb3V0KCkKIHsKICAgICAvLyBp
bnRlcm5hbEFib3J0KCkgY2FsbHMgZHJvcFByb3RlY3Rpb24oKSwgd2hpY2ggbWF5IHJlbGVhc2Ug
dGhlIGxhc3QgcmVmZXJlbmNlLgotICAgIFJlZjxYTUxIdHRwUmVxdWVzdD4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBp
ZiAoIWludGVybmFsQWJvcnQoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDNmZDdkYmJlZTk3MWFi
MjEzN2U0OWRjYzM3YzE3ZjkwNWQ2ZGY4MTQuLjA5NjFjNGQ4YTVmMDkwNGI3ZDU0MmYyYjIxZjBk
ZjJlYjhkNGFlZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwCkBAIC0yNDYsNyArMjQ2LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHVudXNlZFJlc291cmNlKQogICAgIEFTU0VS
VChzY3JpcHRFbGVtZW50KTsKIAogICAgIC8vIEphdmFTY3JpcHQgY2FuIGRldGFjaCB0aGlzIHBh
cnNlciwgbWFrZSBzdXJlIGl0J3Mga2VwdCBhbGl2ZSBldmVuIGlmIGRldGFjaGVkLgotICAgIFJl
ZjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFhNTERvY3VtZW50
UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAKICAgICBpZiAoZXJyb3JPY2N1cnJl
ZCkKICAgICAgICAgc2NyaXB0RWxlbWVudC0+ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5j
cHAKaW5kZXggNmVlYjExZDVlOTgyNzQ2MDRmZjlmM2YwZmNmZTBkNzVhNDQ0YmU5MC4uN2M3ZDlh
MWE3NWYwZTI1ZDU4OGJiYjIyNjI0NWE4YjhlM2JmY2VhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcApAQCAtNjgw
LDcgKzY4MCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmRvV3JpdGUoY29uc3QgU3RyaW5n
JiBwYXJzZVN0cmluZykKICAgICBpZiAocGFyc2VTdHJpbmcubGVuZ3RoKCkpIHsKICAgICAgICAg
Ly8gSmF2YVNjcmlwdCBtYXkgY2F1c2UgdGhlIHBhcnNlciB0byBkZXRhY2ggZHVyaW5nIHhtbFBh
cnNlQ2h1bmsKICAgICAgICAgLy8ga2VlcCB0aGlzIGFsaXZlIHVudGlsIHRoaXMgZnVuY3Rpb24g
aXMgZG9uZS4KLSAgICAgICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICAgICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAog
ICAgICAgICBYTUxEb2N1bWVudFBhcnNlclNjb3BlIHNjb3BlKCZkb2N1bWVudCgpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpKTsKIApAQCAtODcyLDcgKzg3Miw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQ
YXJzZXI6OmVuZEVsZW1lbnROcygpCiAKICAgICAvLyBKYXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhl
IHBhcnNlci4gIE1ha2Ugc3VyZSB0aGlzIGlzIG5vdCByZWxlYXNlZAogICAgIC8vIGJlZm9yZSB0
aGUgZW5kIG9mIHRoaXMgbWV0aG9kLgotICAgIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIGlmICghdXBkYXRlTGVhZlRleHROb2RlKCkpCiAgICAgICAgIHJldHVybjsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278849</attachid>
            <date>2016-05-13 10:42:19 -0700</date>
            <delta_ts>2016-05-13 11:04:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157610-20160513104310.patch</filename>
            <type>text/plain</type>
            <size>165530</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EyOThmZGU1NDNjNGM1
NzFiNWY1NmMxNjI0NjI4NGRjOTJmNTYwNS4uZWYwMjUxNDEwNGZkMmYwZWViYjdkODU4MWZkZTBi
YjBiMjg3MzU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNyBAQAogMjAxNi0wNS0xMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVuYW1lIGFsbCBwcm90
ZWN0b3IgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBgcHJvdGVjdGVkVGhpc2AKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzYxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoUmVuYW1pbmcsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisgICAgICAgIAorICAgICAgICBXZWJD
b3JlIGhhcyBzbyBtYW55IGluc3RhbmNlcyBvZiB0aGVzZSBwcm90ZWN0b3JzIGFzIHdlbGwgYXMg
c28gbXVjaCB2YXJpYW5jZSBpbiBuYW1pbmcgdGhlbSwKKyAgICAgICAgdGhhdCBJIHRoaW5rIGl0
IGRlc2VydmVkIGEgbmV3IHN0eWxlIHBhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZp
ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHA6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2suY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cDoKKworMjAxNi0wNS0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgR2l2ZSBDcm9zc1RocmVhZENvcGllciBhIGRlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9y
IFZlY3RvcnMgb2Ygb2JqZWN0cy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NzY3NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAppbmRleCA3YzliOWU2MDhhNWE4Y2I4YjcwNzZkZTZjOTg1ZDU2ZDRj
ZTE5YTg2Li42ZjM4OTAyZGE5M2I0N2UxOTY4Njc5NDM5ODQxZDRlYWMyYzE1YWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI5MSw3
ICsyOTEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZygpCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RvcCgpCiB7Ci0gICAg
UmVmUHRyPEZldGNoUmVzcG9uc2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEZldGNoUmVz
cG9uc2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRmV0Y2hCb2R5T3duZXI6OnN0b3AoKTsK
ICAgICBpZiAobV9ib2R5TG9hZGVyKSB7CiAgICAgICAgIG1fYm9keUxvYWRlci0+c3RvcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9Ob3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNw
cAppbmRleCAxMzE2ZDI3NDEzYjg4MTA4NWFlYTc1MWMzMzJmYTk5MjRkZGEyMWRlLi5jZWM5N2Nj
OTAyZTQ1MDY4OTdmZWZiZDNlYWUyZjk3OTA3YWFjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgR2VvTm90aWZpZXI6OnRpbWVyRmlyZWQoKQogCiAgICAgLy8gUHJvdGVjdCB0aGlz
IEdlb05vdGlmaWVyIG9iamVjdCwgc2luY2UgaXQKICAgICAvLyBjb3VsZCBiZSBkZWxldGVkIGJ5
IGEgY2FsbCB0byBjbGVhcldhdGNoIGluIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb05vdGlmaWVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8R2VvTm90aWZpZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgLy8gVGVzdCBmb3IgZmF0YWwgZXJyb3IgZmlyc3QuIFRoaXMgaXMgcmVxdWly
ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBGcmFtZSBpcwogICAgIC8vIGRpc2Nvbm5lY3RlZCBh
bmQgcmVxdWVzdHMgYXJlIGNhbmNlbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggNzYzZDYwNTkxYjFiZmQwZjE3YjQw
ZGZmOGYzMzc0MzI1MjFkYzJmZC4uM2VjNDMxNDM2ZGIyYTVhMTExNGQ2ODFkMWU1M2VmNDU4ODIx
MjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldh
dGNoKGludCB3YXRjaElEKQogdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxs
b3dlZCkKIHsKICAgICAvLyBQcm90ZWN0IHRoZSBHZW9sb2NhdGlvbiBvYmplY3QgZnJvbSBnYXJi
YWdlIGNvbGxlY3Rpb24gZHVyaW5nIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb2xvY2F0aW9uPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8R2VvbG9jYXRpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgLy8gVGhpcyBtYXkgYmUgZHVlIHRvIGVpdGhlciBhIG5ldyBwb3NpdGlvbiBmcm9t
IHRoZSBzZXJ2aWNlLCBvciBhIGNhY2hlZAogICAgIC8vIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDEy
OWY0YzZmYzUzZmVjMWUyNGY0M2M3Y2U5MGIzYTZmODA5ZTdlNTEuLjExMmI3NjRkZjEyMWNkOTgy
M2NjY2ExZmRkMzcyZTI1MmY0MWJhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTk0NywxOSArOTQ3LDE5IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBSZWZQdHI8SURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gb3BlcmF0aW9uUmVmKCZvcGVyYXRpb24pOwotICAgIHZh
bHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJh
dGlvblJlZiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZh
bHVlKSB7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRPcGVy
YXRpb24oJm9wZXJhdGlvbik7CisgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REIoW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiwga2V5LCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSB7CiAgICAgICAgIGlmIChp
ZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7Ci0gICAgICAgICAgICBtX2RhdGFiYXNlLT5jb25uZWN0
aW9uUHJveHkoKS5wdXRPckFkZCgqb3BlcmF0aW9uUmVmLCBrZXkuZ2V0KCksIGlkYlZhbHVlLCBv
dmVyd3JpdGVNb2RlKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgp
LnB1dE9yQWRkKCpwcm90ZWN0ZWRPcGVyYXRpb24sIGtleS5nZXQoKSwgaWRiVmFsdWUsIG92ZXJ3
cml0ZU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
SWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhpbmcgd2Vu
dCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0aGF0IGNh
c2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdlIGNhbGxi
YWNrIHdpdGggYW4gZXJyb3IuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6
ZXJyb3Iob3BlcmF0aW9uUmVmLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRh
dGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlvblJlZiwgcmVzdWx0XSgpIHsKLSAgICAg
ICAgICAgIG9wZXJhdGlvblJlZi0+Y29tcGxldGVkKHJlc3VsdCk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVy
KCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJF
cnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9y
ZSIpIH0pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBw
cm90ZWN0ZWRPcGVyYXRpb24sIHJlc3VsdF0oKSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRPcGVy
YXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlv
bk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXggOTBjYjY0ODZkM2M3NDUyOGM5YmViNWQ3MTZhOTc1
ODA5YmM0YmM1MC4uNjZiZTJhNjBjODMyZDk5MjM2MmQyOTcwMTFiNDNhNjZlNWY5NmI0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKQEAgLTExNCwxNSArMTE0LDE1IEBAIHB1YmxpYzoK
ICAgICBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlTWV0aG9kKShjb25zdCBJREJSZXN1bHRE
YXRhJiksIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBBcmd1bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAg
ICAgIDogVHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICBS
ZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHNlbGYodGhpcyk7CisgICAgICAgIFJlZlB0cjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgICAgICBBU1NF
UlQocGVyZm9ybU1ldGhvZCk7Ci0gICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0gW3NlbGYsIHRo
aXMsIHBlcmZvcm1NZXRob2QsIGFyZ3VtZW50cy4uLl0geworICAgICAgICBtX3BlcmZvcm1GdW5j
dGlvbiA9IFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBwZXJmb3JtTWV0aG9kLCBhcmd1bWVudHMuLi5d
IHsKICAgICAgICAgICAgICgmbV90cmFuc2FjdGlvbi5nZXQoKS0+KnBlcmZvcm1NZXRob2QpKCp0
aGlzLCBhcmd1bWVudHMuLi4pOwogICAgICAgICB9OwogCiAgICAgICAgIGlmIChjb21wbGV0ZU1l
dGhvZCkgewotICAgICAgICAgICAgbV9jb21wbGV0ZUZ1bmN0aW9uID0gW3NlbGYsIHRoaXMsIGNv
bXBsZXRlTWV0aG9kXShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKSB7CisgICAgICAg
ICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcywgdGhpcywgY29tcGxldGVN
ZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY29tcGxldGVNZXRob2QpCiAgICAgICAgICAgICAgICAgICAgICgmbV90cmFuc2FjdGlv
bi5nZXQoKS0+KmNvbXBsZXRlTWV0aG9kKShyZXN1bHREYXRhKTsKICAgICAgICAgICAgIH07CkBA
IC0xMzIsMTYgKzEzMiwxNiBAQCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBs
KElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWVzdCYgcmVxdWVzdCwgdm9pZCAo
SURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZU1ldGhvZCkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJl
c3VsdERhdGEmKSwgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtTWV0aG9kKShUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYsIEFyZ3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
ICAgICAgICAgOiBUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVzdCkKICAg
ICB7Ci0gICAgICAgIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gc2VsZih0aGlzKTsKKyAg
ICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
CiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKLSAgICAgICAgbV9wZXJmb3JtRnVuY3Rp
b24gPSBbc2VsZiwgdGhpcywgcGVyZm9ybU1ldGhvZCwgYXJndW1lbnRzLi4uXSB7CisgICAgICAg
IG1fcGVyZm9ybUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHBlcmZvcm1NZXRob2Qs
IGFyZ3VtZW50cy4uLl0gewogICAgICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qcGVy
Zm9ybU1ldGhvZCkoKnRoaXMsIGFyZ3VtZW50cy4uLik7CiAgICAgICAgIH07CiAKICAgICAgICAg
aWYgKGNvbXBsZXRlTWV0aG9kKSB7CiAgICAgICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVm
UmVxdWVzdCgmcmVxdWVzdCk7Ci0gICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbc2Vs
ZiwgdGhpcywgcmVmUmVxdWVzdCwgY29tcGxldGVNZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpIHsKKyAgICAgICAgICAgIG1fY29tcGxldGVGdW5jdGlvbiA9IFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCByZWZSZXF1ZXN0LCBjb21wbGV0ZU1ldGhvZF0oY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkgewogICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZU1ldGhvZCkK
ICAgICAgICAgICAgICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qY29tcGxldGVNZXRo
b2QpKCpyZWZSZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcAppbmRleCA1YjJhZGNjYmQ1ZTE5NzAyNGIyMjNkOWY0M2RjNjRmZTcyNDJj
OGE2Li44Zjg2M2RiMmJmYzYxZDczMzlmZjk3YjkzNGUxNDljODEyZWFmYTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCkKIAogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVu
REJSZXF1ZXN0KTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRo
aXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
IAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1ZXN0KCkpCiAgICAg
ICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZpcmVk
KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVy
YXRpb25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQiKTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIC8vIFRoaXMgVW5pcXVlSURCRGF0YWJhc2UgbWln
aHQgYmUgbm8gbG9uZ2VyIGluIHVzZSBieSBhbnkgd2ViIHBhZ2UuCiAgICAgLy8gQXNzdW1pbmcg
aXQgaXMgbm90IGVwaGVtZXJhbCwgdGhlIHNlcnZlciBzaG91bGQgbm93IGNsb3NlIGl0IHRvIGZy
ZWUgdXAgcmVzb3VyY2VzLgpAQCAtMTI2MSwxMCArMTI2MSwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphY3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFucwogewogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6
OmFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tpbmdTdG9yZSIpOwogCi0gICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbj4gcmVmVHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKTsKIAotICAgIGF1dG8gY2FsbGJhY2sg
PSBbdGhpcywgc2VsZiwgcmVmVHJhbnNhY3Rpb25dKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVmVHJhbnNhY3Rpb25d
KGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAgICByZWZUcmFuc2FjdGlvbi0+ZGlkQWN0
aXZhdGVJbkJhY2tpbmdTdG9yZShlcnJvcik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAppbmRleCBlZDZlOTMzNzlmOWU3NTZhMDcwODEzZDFl
MDA3ZWFmYWM5NDc4ZTdhLi42MmUwZmE1NDhjYzFmMGNhYmQ1MTU4ZTk3OTQ0YzRiYzdjMWJhMzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAtNzMs
OSArNzMsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6YWJvcnRUcmFuc2Fj
dGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYgogICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uTWFwLmNvbnRhaW5zKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKIAogICAg
IGNvbnN0IGF1dG8mIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCk7Ci0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4gcHJv
dGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2RhdGFiYXNlLmFib3J0VHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24sIFt0aGlzLCBwcm90ZWN0b3IsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0oY29uc3Qg
SURCRXJyb3ImKSB7CisgICAgbV9kYXRhYmFzZS5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
LCBbdGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyXShjb25zdCBJREJF
cnJvciYpIHsKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25NYXAuY29udGFpbnModHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25NYXAucmVtb3ZlKHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggZDk1NWFlNjAyMTg2ZTAxYWQ1NDhjNjI4OGQ4MDBjZjVj
ODQ4YWI1MC4uOTAyNGUzNjMxMzI4YjkwMGE2YTUwZjZhYjVmYjIxZDE4MWQxYTU1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNjgsOCArNjgs
OCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmFib3J0KCkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6YWJvcnQiKTsKIAot
ICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMpOwotICAg
IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmFib3J0VHJhbnNhY3Rpb24oKnRoaXMs
IFt0aGlzLCBzZWxmXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywg
cHJvdGVjdGVkVGhpc10oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjphYm9ydCAoY2FsbGJhY2spIik7
CiAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRBYm9ydFRyYW5zYWN0aW9uKCp0aGlz
LCBlcnJvcik7CiAgICAgfSk7CkBAIC05Niw4ICs5Niw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+
ZGF0YWJhc2UoKS5jb21taXRUcmFuc2FjdGlvbigqdGhpcywgW3RoaXMsIHNlbGZdKGNvbnN0IElE
QkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFz
ZSgpLmNvbW1pdFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3Qg
SURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpjb21taXQgKGNhbGxiYWNrKSIpOwogICAgICAgICBtX2RhdGFiYXNl
Q29ubmVjdGlvbi0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24oKnRoaXMsIGVycm9yKTsKICAgICB9KTsK
QEAgLTExMCw4ICsxMTAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZQogICAgIEFTU0VSVChp
c1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZp
ZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQ
dHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RTdG9yZSgqdGhpcywgaW5mbywg
W3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RTdG9yZSgq
dGhpcywgaW5mbywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlIChjYWxsYmFjaykiKTsKICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENy
ZWF0ZU9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vzcyhy
ZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xMjcsOCArMTI3LDggQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWUKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNl
KCkuZGVsZXRlT2JqZWN0U3RvcmUoKnRoaXMsIG9iamVjdFN0b3JlTmFtZSwgW3RoaXMsIHNlbGYs
IHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5kZWxldGVPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0
U3RvcmVOYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVy
cm9yJiBlcnJvcikgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUgKGNhbGxiYWNrKSIpOwogICAgICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGlkRGVs
ZXRlT2JqZWN0U3RvcmUoSURCUmVzdWx0RGF0YTo6ZGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzKHJl
cXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlcwogCiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50
aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jbGVhck9iamVjdFN0b3JlKCp0aGlzLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJy
b3ImIGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHBy
b3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCku
Y2xlYXJPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmpl
Y3RTdG9yZSAoY2FsbGJhY2spIik7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAg
ICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRDbGVhck9iamVjdFN0b3JlKElEQlJlc3Vs
dERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlm
aWVyKCkpKTsKQEAgLTE2MCw4ICsxNjAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YQogICAg
IEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZv
LmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAK
LSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAg
ICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhpcywgaW5m
bywgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAg
ICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhp
cywgaW5mbywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJv
ciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OmNyZWF0ZUluZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENyZWF0ZUluZGV4
KElEQlJlc3VsdERhdGE6OmNyZWF0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRl
bnRpZmllcigpKSk7CkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEK
ICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
SW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
OwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7
Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZGVsZXRlSW5kZXgoKnRoaXMs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBbdGhpcywgc2VsZiwgcmVxdWVzdERh
dGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0
aW9uLT5kYXRhYmFzZSgpLmRlbGV0ZUluZGV4KCp0aGlzLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4TmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZERlbGV0ZUlu
ZGV4KElEQlJlc3VsdERhdGE6OmRlbGV0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0
SWRlbnRpZmllcigpKSk7CkBAIC0xOTQsOCArMTk0LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGMKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25J
bmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7
CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsK
LSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1ZXN0RGF0
YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0
YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1ZXN0RGF0
YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkp
IHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OnB1dE9yQWRkIChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBA
IC0yMTEsOCArMjExLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogCiAgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4g
c2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5nZXRSZWNv
cmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShj
b25zdCBJREJFcnJvciYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CisgICAg
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0UmVjb3JkKHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGEsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0oY29u
c3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3Jk
IChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBAIC0yMjgsOCAr
MjI4LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKIAogICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhp
cyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVz
dERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5l
Y3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IsIHVp
bnQ2NF90IGNvdW50KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CiAKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA5M2FjNmQ2ZDdkMjlk
YTRjNjcwZGZhZGJjNGQ2MThhYzBmMTU4OGU4Li5lZGE4NzgzMjI4MWRhNzIzMzBkNTVjNjQ1YTll
YjIwNzM0ZDRlMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtOTEsMzM0ICs5
MSwzMzQgQEAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3QKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsK
ICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNl
bGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0
RGF0YV0gewogICAgICAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3Ip
OwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2Vs
ZiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9y
XSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDb21taXRUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFd
IHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVz
dWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlT2JqZWN0
U3RvcmUocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsK
ICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3Vs
dERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleChjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2
ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBz
ZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZENyZWF0ZUluZGV4KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRh
XSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1bHRE
YXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRk
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHRE
YXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0
RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3Vu
dChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZEdldENvdW50KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFd
IHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVz
dWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlUmVjb3Jk
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
T3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
c2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYs
IHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
SXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2Vs
Zih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJl
c291cmNlSWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmFi
b3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2Vy
dmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1f
c2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
UmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHRyYW5zYWN0aW9uSWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2Fj
dGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhLCBpbmZvXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGEsIGluZm9dIHsKICAgICAgICAgbV9zZXJ2
ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFt
ZV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0g
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewogICAgICAgICBtX3Nl
cnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZv
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgaW5mb10g
eworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1
ZXN0RGF0YSwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERh
dGEsIGluZm8pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleE5hbWVdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CiAg
ICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7Ci0gICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRl
TW9kZV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKICAgICAgICAg
bV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRl
TW9kZSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRo
aXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAg
bV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURh
dGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywg
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0gewogICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQo
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2
ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBr
ZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYo
dGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVz
dERhdGEsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBpbmZvXSB7CiAgICAgICAgIG1fc2VydmVyLT5vcGVu
Q3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERh
dGEsIGtleSwgY291bnRdIHsKICAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVz
dERhdGEsIGtleSwgY291bnQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgc2VsZiwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10geworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+ZXN0YWJs
aXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhp
cyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxm
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVz
dGVkVmVyc2lvbl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewot
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVy
cm9yXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMs
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3
VmVyc2lvbl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0gewogICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVz
dElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMp
OwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+
YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCByZXF1ZXN0SWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKICAgICAgICAg
bV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RvciwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luLCBjYWxsYmFja0lEXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRF0g
ewogICAgICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+aWRlbnRpZmllcigpLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxi
YWNrSUQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxs
RGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZGF0YWJhc2VOYW1lcykKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
b3IodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
b3IsIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lc10gewog
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhjYWxs
YmFja0lELCBkYXRhYmFzZU5hbWVzKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDlj
ZTQxOTg0YjgxZDAzZWNmNmZkZTllMGViNjFhNjFlZWJiNTA3NzMuLmUyNTJhNTVlYTU4MzQ1NjIw
ZGVlNGI3MjY4OTQ3YTk2N2NhNGY5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMjA5LDcgKzIwOSw3
IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoUGVybWlz
c2lvbkVycm9yKCkKIAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkK
IHsKLSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFVz
ZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1fY29udHJv
bGxlcikgewogICAgICAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVl
c3QoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA2MTJlY2Q0YTkxNmRiM2VjMjJk
NTdiMzlhN2FjY2QzYzAyZjRlYjQyLi5kYjYxYWJmZGM1ZDRkNWJlNDZjYmFhMDk0NmUxNjY4NWE4
ZWM5NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
Tm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKCkKICAgICAvLyBDbGVhciBtX2NsaWVudCBpbW1lZGlh
dGVseSB0byBndWFyYW50ZWUgcmVlbnRyYW50IGNhbGxzIHRvIE5vdGlmaWNhdGlvbkNlbnRlciBk
byBub3RoaW5nLgogICAgIC8vIEFsc28gcHJvdGVjdCB8dGhpc3wgc28gaXQncyBub3QgaW5kaXJl
Y3RseSBkZXN0cm95ZWQgdW5kZXIgdXMgYnkgd29yayBkb25lIGJ5IHRoZSBjbGllbnQuCiAgICAg
YXV0byYgY2xpZW50ID0gKnN0ZDo6ZXhjaGFuZ2UobV9jbGllbnQsIG51bGxwdHIpOwotICAgIFJl
ZjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3RlY3RvcigqdGhpcyk7CisgICAgUmVmPE5vdGlmaWNh
dGlvbkNlbnRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW1fY2FsbGJhY2tz
LmlzRW1wdHkoKSkKICAgICAgICAgZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgdGhlIHJlZiBpbiBO
b3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDNjOGRmMmI0YWUzNThl
ZjJlN2VkMTU3ODFhODMzMzQ2MTEyMWEzNWUuLjlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5MzgwNGVj
MWYwMTk2NTRiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw5ICs3OTcsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2No
ZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRy
dWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhpc10gewotICAgICAgICAgICAgc3Ryb25n
VGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpc10geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsK
ICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgQXVkaW9Db250
ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBkZWxldGVkIGJlZm9yZSB3ZSBy
ZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xvY2tlci4KLSAgICBSZWY8QXVkaW9Db250
ZXh0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKICAgICB7CiAgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKIApAQCAt
MTAwMiwxMCArMTAwMiwxMCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRD
aGFuZ2UoKQogewogICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1Bs
YXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKICAgICAvLyB3ZSBjb3VsZCBi
ZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUg
Y291bGQgYmxvY2suCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIGlmIChzdHJvbmdU
aGlzLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgc3Ryb25nVGhpcy0+ZG9jdW1lbnQoKS0+dXBk
YXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwogfQogCkBA
IC0xMDYzLDkgKzEwNjMsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZChQcm9taXNlJiYg
cHJvbWlzZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtz
dHJvbmdUaGlzXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5k
ZWQpOworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
bV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CiAKQEAg
LTEwOTMsOSArMTA5Myw5IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpyZXN1bWUoUHJvbWlzZSYmIHBy
b21pc2UpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJv
bmdUaGlzXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsK
KyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVz
dGluYXRpb25Ob2RlLT5yZXN1bWUoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCkBAIC0xMTE1LDEw
ICsxMTE1LDEwIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbG9zZShQcm9taXNlJiYgcHJvbWlzZSkK
IAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJv
bmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbc3Ryb25nVGhpc10g
ewotICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKLSAgICAgICAg
c3Ryb25nVGhpcy0+dW5pbml0aWFsaXplKCk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3Byb3RlY3Rl
ZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnVuaW5pdGlhbGl6ZSgpOwogICAgIH0pOwogfQogCkBA
IC0xMTM2LDEwICsxMTM2LDEwIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2so
KQogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0
cm9uZ1RoaXModGhpcyk7Ci0gICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3N0cm9uZ1Ro
aXNdIHsKLSAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0cm9uZ1RoaXMtPm1fbWVkaWFTZXNz
aW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKLSAgICAg
ICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJydXB0ZWQg
OiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtwcm90ZWN0ZWRUaGlz
XSB7CisgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBwcm90ZWN0ZWRUaGlzLT5tX21lZGlhU2Vz
c2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVw
dGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTExNTgsOSArMTE1OCw5
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3Vt
ZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBz
dHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0cm9uZ1Ro
aXNdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAg
IFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbcHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggYTM2YWM3ODI4Y2Jh
MWQ3NGU3MDY0NWU0ZmJmYjFjNWUyMTgzNThiNy4uZGEzOGUxY2ZmODkxNjA1MDA5YWY3NTVjNDcy
ZGQwZTQ0N2FmMTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3Jt
Q2xvc2UoKQogICAgIC8vIHRvIGl0IHdpdGggYSBsb2NhbCBwb2ludGVyIGhlcmUgZm9yIGEgbGlp
dGxlIGxvbmdlciwgc28gdGhhdCB3ZSBjYW4KICAgICAvLyB1bnNjaGVkdWxlIGFueSBEYXRhYmFz
ZVRhc2tzIHRoYXQgcmVmZXIgdG8gaXQgYmVmb3JlIHRoZSBkYXRhYmFzZSBnZXRzCiAgICAgLy8g
ZGVsZXRlZC4KLSAgICBSZWY8RGF0YWJhc2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRh
YmFzZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
aW5kZXggOWRhZWE1MjVlY2FmZjcxZjUxODk4Y2Y1YjQ2ZmM2NjA0ZGFkMDZkOC4uYTcwNzBkYzBm
NGU2YWI2ZWEzODY5YWRlMzQzMzNhNzEwMDAyMGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lk
IFdlYlNvY2tldDo6cmVzdW1lKCkKIAogdm9pZCBXZWJTb2NrZXQ6OnJlc3VtZVRpbWVyRmlyZWQo
KQogewotICAgIFJlZjxXZWJTb2NrZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXZWJTb2Nr
ZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudHMu
aXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE1ZTI3YTA5NmYzYmIzNzVhNDI1NTYxZWU5
NjU2YzRjODcwYTZjZTAuLjk1MDY0MTc3NDY5YzU1YjZjODQ4OWFjYzEwMmYwYjIwYTE1OWM3ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3Vz
cGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmPFdl
YlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xv
c2luZyBoYW5kc2hha2UgbWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3Nl
ZCBhbmQgZGVyZWZlcmVuY2VkLgorICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBm
YWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4K
ICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoY29kZSwgcmVhc29uKTsKICAgICBpZiAobV9jbG9z
aW5nICYmICFtX2Nsb3NpbmdUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Nsb3NpbmdUaW1l
ci5zdGFydE9uZVNob3QoMiAqIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUpOwpAQCAtMjE0LDcg
KzIxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNv
bikKIAogICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcyB3ZSBt
dXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcgZGF0YQogICAgIC8vIG9uY2UgdGhl
IFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGZhaWxlZCAoc2VjdGlvbiA3LjEuNykuCi0gICAgUmVm
PFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9z
ZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgor
ICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gVGhlIGNs
aWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0
IHJlZmVyZW5jZS4KICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAg
IGlmICghbV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyLnNp
emUoKSk7IC8vIFNhdmUgbWVtb3J5LgpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUp
CiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tl
dFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewogICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0U3RyZWFt
RGF0YSgpIFJlY2VpdmVkICVkIGJ5dGVzIiwgdGhpcywgbGVuKTsKLSAgICBSZWY8V2ViU29ja2V0
Q2hhbm5lbD4gcHJvdGVjdCgqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFu
bmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgUmVmPFdl
YlNvY2tldENoYW5uZWw+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBj
bG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNl
LgogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9kb2N1bWVudCkg
ewogICAgICAgICByZXR1cm47CkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVudCBjYW4g
Y2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5j
ZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIFRo
ZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUg
bGFzdCByZWZlcmVuY2UuCiAKICAgICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2Nr
ZXRIYW5kc2hha2U6OkluY29tcGxldGUpIHsKICAgICAgICAgaW50IGhlYWRlckxlbmd0aCA9IG1f
aGFuZHNoYWtlLT5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIu
c2l6ZSgpKTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NCdWZmZXIoKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoKQog
ewotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVu
dCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJl
ZmVyZW5jZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmlu
ZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVu
dCAmJiAhbV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBpZiAoIXByb2Nlc3NCdWZmZXIoKSkK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bikKICAgICAgICAgYnVmLmFwcGVuZChyZWFzb24udXRmOCgpLmRhdGEoKSwgcmVhc29uLnV0Zjgo
KS5sZW5ndGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwotICAgIFJlZjxXZWJTb2NrZXRD
aGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFu
ZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hp
Y2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCiAgICAgcHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwogCiAgICAgaWYgKG1fY2xvc2VkKSB7CkBAIC03Mjks
NyArNzI5LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1
ZXVlKCkKICAgICBpZiAobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFt
ZVF1ZXVlQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5l
bD4gcHJvdGVjdCgqdGhpcyk7IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0aGUgY2hh
bm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0aGUg
Y2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KIAogICAgIHdoaWxlICghbV9vdXRnb2lu
Z0ZyYW1lUXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBtX291dGdvaW5n
RnJhbWVRdWV1ZS50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDhhM2JjNDdiODhjYmMyMjJiZjA1ZDY5MGYxYmQwNDk3YzY1ZDgxZjcu
LjIyNTNhOGVkYjYyN2E5OTI5Njk3ZjU2NWM0ZGQ5YzAzM2M0M2E2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiB7
CiAgICAgQVNTRVJUKCFtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAg
IFJlZjxCcmlkZ2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgV29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5ID0gJm1fbG9h
ZGVyUHJveHk7CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICBwZWVyLT5zZW5k
KGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5n
ZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBwZXIpCkBAIC00NzcsNyArNDc3LDcgQEAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIpOwogICAg
IH0pOwogCi0gICAgUmVmPEJyaWRnZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJyaWRnZT4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAg
ICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyKQpA
QCAtNTAzLDcgKzUwMyw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIHBlZXIt
PnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY2FwdHVyZWRVUkwudXJsKCksIGNhcHR1cmVkVHlwZS5z
dHJpbmcoKSwgc2l6ZSwgeyB9KSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICB3YWl0
Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsK
ICAgICBpZiAoIWNsaWVudFdyYXBwZXIpCkBAIC01MjYsNyArNTI2LDcgQEAgdW5zaWduZWQgbG9u
ZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJlZEFtb3Vu
dCgpCiAgICAgICAgIHBlZXItPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgfSk7CiAKLSAgICBSZWY8
QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlci5nZXQoKTsKICAgICBpZiAoY2xpZW50V3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGQ2ZDA1
Y2UzMjgxMmY1ZGUyZTk3ZDJmNzcwMTU2ZGEyNmVkNjkwMjkuLmIwOTczNDBmNDkxODUxYjNmMzBh
NDViZmQ3M2U1NjM3NzAyZDI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb21wdXRlZExhYmVsKCkKIHsKICAgICAvLyBUaGlzIG1l
dGhvZCBpcyBiZWluZyBjYWxsZWQgYnkgV2ViS2l0IGluc3BlY3Rvciwgd2hpY2ggbWF5IGhhcHBl
biBhdCBhbnkgdGltZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgbm93
LgogICAgIC8vIEFsc28gaG9sZCBvbnRvIHRoaXMgb2JqZWN0IGluIGNhc2UgdXBkYXRlQmFja2lu
Z1N0b3JlIGRlbGV0ZXMgdGhpcyBub2RlLgotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgVmVjdG9yPEFj
Y2Vzc2liaWxpdHlUZXh0PiB0ZXh0OwogICAgIGFjY2Vzc2liaWxpdHlUZXh0KHRleHQpOwpAQCAt
MTY3OSw3ICsxNjc5LDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWExpbmVG
b3JJbmRleCh1bnNpZ25lZCBpbmRleCkKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRl
QmFja2luZ1N0b3JlKCkKIHsKICAgICAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBkZWxldGUg
dGhpcyBvYmplY3QuCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3Rvcih0
aGlzKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKIAogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CiAg
ICAgICAgIGlmICghZG9jdW1lbnQtPnZpZXcoKS0+aXNJblJlbmRlclRyZWVMYXlvdXQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDE0MWMzM2NlMzkxNzdjYjk2NDI4ZGJjZWYwZDU2NTY1ZGVi
OGIyNjAuLjg5MWY2ZmViMzQ3MDJkMDU1ZmFkNTYxM2RhMTI0MzJlY2IzNTcyMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcApAQCAtMTY2Miw3ICsxNjYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wgb24pCiAgICAgLy8gV2hlbiBhIG5vZGUgaXMgdG9s
ZCB0byBzZXQgZm9jdXMsIHRoYXQgY2FuIGNhdXNlIGl0IHRvIGJlIGRlYWxsb2NhdGVkLCB3aGlj
aCBtZWFucyB0aGF0IGRvaW5nCiAgICAgLy8gYW55dGhpbmcgZWxzZSBpbnNpZGUgdGhpcyBvYmpl
Y3Qgd2lsbCBjcmFzaC4gVG8gZml4IHRoaXMsIHdlIGFkZGVkIGEgUmVmUHRyIHRvIHByb3RlY3Qg
dGhpcyBvYmplY3QKICAgICAvLyBsb25nIGVub3VnaCBmb3IgZHVyYXRpb24uCi0gICAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBu
b2RlIGlzIGFscmVhZHkgdGhlIGN1cnJlbnRseSBmb2N1c2VkIG5vZGUsIHRoZW4gY2FsbGluZyBm
b2N1cygpIHdvbid0IGRvIGFueXRoaW5nLgogICAgIC8vIFRoYXQgaXMgYSBwcm9ibGVtIHdoZW4g
Zm9jdXMgaXMgcmVtb3ZlZCBmcm9tIHRoZSB3ZWJwYWdlIHRvIGNocm9tZSwgYW5kIHRoZW4gcmV0
dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVj
dEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggOWQxYjg4MWRkOWQzYjg2OGU1YjlmYzYyMjRlZTE4
N2IxMjMyODQzNi4uZDRhMWQxODM1MWNmMWFkNDEzMzJkZTE1N2QwNmIyOTE0MTc4YmFhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5l
cjo6Z29iamVjdERlc3Ryb3llZCgpCiAgICAgLy8gUHJvdGVjdCAndGhpcycgY2xhc3MgaW4gY2Fz
ZSB0aGUgJ21fY29yZVRhcmdldCcgaG9sZHMgdGhlIGxhc3QgcmVmZXJlbmNlLAogICAgIC8vIHdo
aWNoIG1heSBjYXVzZSwgaW5zaWRlIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSwgZnJlZSBvZiB0aGlz
IG9iamVjdAogICAgIC8vIGFuZCBsYXRlciB1c2UtYWZ0ZXItZnJlZSB3aXRoIHRoZSBtX2hhbmRs
ZXIgPSAwOyBhc3NpZ25tZW50LgotICAgIFJlZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gcHJv
dGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21F
dmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwogICAgIG1fY29yZVRhcmdldCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmNwcAppbmRleCBlYzAxYmJjNThkMDMyYmFjYWQ4Mjg1YjNjMDlmOTRiYTc2NDdl
MThjLi5iZTBiZjg2NDg1MzcxMjE1Y2QyZDliMDcxNjMwZWIyOWY5YWZkMjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHQKICAgICBpZiAo
IWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
PEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOwogCiAgICAgaWYgKCFtX2Nv
bnN0cnVjdG9yKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllCiAg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwCmluZGV4IDIwNjFkYTlhOTU3YTA4NWMzMDFlOWQ4YTM5YzU3ZGZjYzFkMzllNDAu
Ljc5NzMzZTU4NjNlMjJjZjA1YzRjNDdiYTJkMTk2M2Y0ZDkzM2VmMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29sIEpTU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBT
UUxFcgogICAgIGlmICghbV9kYXRhIHx8ICFtX2RhdGEtPmdsb2JhbE9iamVjdCgpIHx8ICFjYW5J
bnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxKU1NRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU1NRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
CmluZGV4IGVlOWY5Njg5MGFhNzJmZTAwZjI5NzExMzg3ZGMzYmU3YTkzYzZkODQuLmMzYWNmNWQ1
YjZiZmY4YzYxN2M4ODNhZDZkNmM5OWI5NDQxOTNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTg3LDcg
Kzg3LDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgICAgIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNv
bHZlci5nZXQoKTsKICAgICB9CiAKLSAgICBSZWY8SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI+IHNl
bGZQcm90ZWN0b3IoKnRoaXMpOworICAgIFJlZjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAg
IGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHByZWZpeCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKaW5k
ZXggMWYyMWZjNjZmNTAxZTAwYTQwNzAyMGZjMzUyNDZiNTQ0NWVhZTc1OS4uYzYyMzA3ZThmZjdh
ZDgxYTliMDk5YjIzNWMyYjVlMTVkM2RjYWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIFJlZjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICAgICAgUmVmPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7
CiAKICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmlu
ZGV4IDA0YWU4YTMzMmM2YTExMjhkMTMyOTE4Y2I5Y2IzYzlmZGVhM2RmYTcuLmVmOWU2NzNjNTlh
Y2UwMDJjNDNhMDE4ZGQwMWNkYTJlYTE3NTNkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2FsbCgpCiAgICAgewotICAgICAgICBSZWY8SlNET01XaW5kb3dNaWNyb3Rh
c2tDYWxsYmFjaz4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxKU0RPTVdpbmRvd01pY3Jv
dGFza0NhbGxiYWNrPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9nbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKaW5kZXggNmViYTRkZWE4NDk1ZmM0YmVlNTZmZWQxYjRh
ZThhMDBjYjljMWNmNS4uZGI5NGE2MTdkMjE3ZjZjOWMxYTcwMTg4NzIwODVjMjk1ZjkwOTM4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAt
ODQsNyArODQsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENhbGxUeXBlIGNhbGxU
eXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwg
Y2FsbERhdGEpOwogCiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7Ci0gICAg
ICAgIFJlZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkY3RvcigqdGhpcyk7CisgICAgICAgIFJl
ZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgRXZlbnQq
IHNhdmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOwogICAgICAgICBnbG9i
YWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBkZDI4MjA0YjAwZmJlN2FhYzM0NDFj
MWYzNjBjZTA0ZTMwZjdlODJiLi5jYzU0ZmQ0YTgxODQ5NzdhNjA0YjVmOTRhNTg1MjEzMmExZDg2
ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIH0KIAog
ICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBSZWY8SlNFdmVu
dExpc3RlbmVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKICAgICAgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNw
cAppbmRleCBkMGE3YmIwOTcyNmNkZGYxN2FjOTM0NDRmNWNmODBjZDIxZDc1YjUzLi5mZWU5NzZl
MzFhYzc5N2ZjZjZmYmQyMzkyMjJhZjdiYjAxNjY4OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAg
dm9pZCBKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdG9yPFJlZjxNdXRhdGlvblJl
Y29yZD4+JiBtdXRhdGlvbnMsIE11dGEKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKaW5kZXgg
MDFiNTM2M2YxNTBjZWVhZjU0NDU2Y2MxYWM4ZTIyMDg2NjgyMmI5MS4uNTQ3NTZiODdhMDc2OThl
NDAwMDY3NDdmMzlmNmFjNTYwMWUwZDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAvLyBib29sZWFuLgogdWludDE2X3QgSlNOb2RlRmlsdGVyOjphY2NlcHRO
b2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5k
ZXggZjZkMmY2ZWY4NTQ3YzY4ZjAxNzUwYjU2NDVjZjFlYzY2Yjk0MzJlNy4uZTkwYTJkYzc2YWI1
ZDNjZmJiNjMzZmVhMmMwMDJkZjY2MTQ2YTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODAwLDggKzI4MDAs
OCBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4
ZWREQihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciwgdGhpcywgcHJv
dGVjdG9yXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocykgeworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgYmxvYlJl
Z2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBsZXRp
b25IYW5kbGVyLCB0aGlzLCBwcm90ZWN0ZWRUaGlzXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YkZpbGVQYXRocykgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAg
IGlmIChibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1ZjY1ZDFlYzRlZjIxYjU4
MjgwMDQ4YWQ2ZTY0YzE5ZDRkMWI0Njc3Li5mY2M1NzYyNmU4N2U1NGViNzU5OWRmODgyZDM5NGMy
NDE2Yzk5ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDA0Niw3ICs0MDQ2LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBhcmdzQ2hl
Y2spIGlmIEBhcmdzQ2hlY2s7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcblxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBSZWY8JGNsYXNzTmFtZT4gcHJvdGVjdCgqdGhpcyk7XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpO1xuXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBt
X2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKaW5kZXggYTYxZDFkMzQxZTY0OGQ0NTg4
MzhhZTQ1NGE4MWU4NGY3MmI5ZjI0Ny4uZjMwOTIyMDJhMmUxZmJmYzUzZWQ2ZTFjMWQ1MTRjMTZj
MGE0ODgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKQEAgLTIwMCw3
ICsyMDAsNyBAQCB2b2lkIFJvb3RPYmplY3Q6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKikKIHsKICAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBzdGF0
aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogCi0gICAg
UmVmPFJvb3RPYmplY3Q+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSb290T2JqZWN0PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBvYmplY3QtPmludmFsaWRhdGUoKTsKICAgICB3ZWFrUmVt
b3ZlKG1fcnVudGltZU9iamVjdHMsIG9iamVjdCwgb2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggOTdlNDQ1MDY4NGI1YzU3MWY0OTkwOWQ3ODdiZTY0
MTM0NzdlNzY4NC4uZThiMjE4NWU2MDkzNGQyYWUzMjIxMmY3YjliNGEyZmYwNmQwODYwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2
b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkVGltZXJGaXJlZCgpCiAgICAgZm9udHNUb0Jl
Z2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7CiAKICAgICAvLyBDU1NGb250
U2VsZWN0b3IgY291bGQgZ2V0IGRlbGV0ZWQgdmlhIGJlZ2luTG9hZElmTmVlZGVkKCkgb3IgbG9h
ZERvbmUoKSB1bmxlc3MgcHJvdGVjdGVkLgotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9k
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBmb3IgKGF1dG8mIGZvbnRIYW5k
bGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCmluZGV4IDNlMzAxNDk5YjVmMjQwOTRhYzBhZTdmZTAxMTc5YjNlNTY2Y2Qx
NmYuLmZmNjM3MzYyYmM4Y2FjNzdiNDEyMDJmNjAxNzcwZTk2NzE1MTFiYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9p
ZCBTdHlsZVNoZWV0Q29udGVudHM6OmNoZWNrTG9hZGVkKCkKICAgICAvLyBBdm9pZCB8dGhpc3wg
YmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQogICAgIC8vIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KICAg
ICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgotICAgIFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogICAgIFN0eWxlU2hlZXRDb250ZW50cyogcGFyZW50U2hlZXQgPSBw
YXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudFNoZWV0KSB7CiAgICAgICAgIHBhcmVu
dFNoZWV0LT5jaGVja0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmlu
ZGV4IDYxNzk2MTc0MTUzOGNkM2FkYjQxOWU3NzVjMmYxNDNlYzZkOTQwMzMuLjNjMGQyYTg0NDQ1
NTJkM2U1MDQ0MWU1N2MxNDU3MzZjZjY5M2QwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGNv
bnN0IFN0cmluZyYgZGF0YSkKICAgICBpZiAobV9kYXRhID09IG5vbk51bGxEYXRhKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWY8Q2hhcmFjdGVyRGF0YT4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPENoYXJhY3RlckRhdGE+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgdW5zaWduZWQg
b2xkTGVuZ3RoID0gbGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApp
bmRleCA5ZTIzZDljZDM1NmRhNjNkNDgwZDQwMWVkOTdiODExNTZkYjNhZGFhLi4wZjJmNzY0NTJm
MmU5MWI2N2YxNWJhMWJlMmFhMTg4MWQ0YWJmZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRC
ZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJgogICAg
IC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRp
bmcgbXV0YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMg
PSAwOwogCkBAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJgogICAgIC8v
IElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcg
bXV0YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMgPSAw
OwogCkBAIC01MDQsNyArNTA0LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChO
b2RlJiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNh
biBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMu
CiAgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAot
ICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVy
Tm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBlYyA9IDA7CiAKQEAgLTYxMSw3ICs2
MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVGhlIGNvbnRhaW5lciBub2RlIGNhbiBiZSByZW1vdmVkIGZyb20gZXZl
bnQgaGFuZGxlcnMuCi0gICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIGV4Y2x1
ZGUgdGhpcyBub2RlIHdoZW4gbG9va2luZyBmb3IgcmVtb3ZlZCBmb2N1c2VkTm9kZSBzaW5jZSBv
bmx5IGNoaWxkcmVuIHdpbGwgYmUgcmVtb3ZlZAogICAgIGRvY3VtZW50KCkucmVtb3ZlRm9jdXNl
ZE5vZGVPZlN1YnRyZWUodGhpcywgdHJ1ZSk7CkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDb250
YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAKIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5k
Q2hpbGQoTm9kZSYgbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZjxDb250
YWluZXJOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZs
b2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVm
ZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDVmNzcwYWU5N2RhMDdiNGI5Mzc3MzgzZmQ5MjE3NTZjZTFkZTlmYjguLjJlZDI1MGYxYWQ5
YzY3OGFhNzhlYzliM2IyZjBmZjI1YWYxMDE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjY5NCw3ICsyNjk0LDcgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIENhbGwgdG8gZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQgY2Fu
IGJsb3cgdXMgZnJvbSB1bmRlcm5lYXRoLgotICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPERvY3VtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fcHJv
Y2Vzc2luZ0xvYWRFdmVudCA9IHRydWU7CiAKQEAgLTU5MjcsNyArNTkyNyw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQoKQogICAgIC8vIFNpbmNlIHdl
IGRpc3BhdGNoIGV2ZW50cyBpbiB0aGlzIGZ1bmN0aW9uLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhl
CiAgICAgLy8gZG9jdW1lbnQgd2lsbCBiZSBkZXRhY2hlZCBhbmQgR0MnZC4gV2UgcHJvdGVjdCBp
dCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZQogICAgIC8vIGNhbiBmaW5pc2ggdGhlIGZ1bmN0aW9uIHN1
Y2Nlc3NmdWxseS4KLSAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxE
b2N1bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgRGVxdWU8UmVmUHRyPE5vZGU+PiBj
aGFuZ2VRdWV1ZTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnN3YXAo
Y2hhbmdlUXVldWUpOwogICAgIERlcXVlPFJlZlB0cjxOb2RlPj4gZXJyb3JRdWV1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDg2OTVjNTk3Y2Y0YzJhNjQzNTU5ZThiYTc3YWZh
ZmU0ZTU0YzY1YjUuLmVjMjEwOTg2N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEzY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIGJvb2wgRXZl
bnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCYgZXZlbnQpCiAgICAgICAgIAogdm9p
ZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCwgRXZlbnRUYXJn
ZXREYXRhKiBkLCBFdmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSkKIHsKLSAgICBSZWY8RXZlbnRU
YXJnZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKICAgICAvLyBGaXJlIGFsbCBsaXN0ZW5lcnMgcmVnaXN0ZXJlZCBmb3IgdGhp
cyBldmVudC4gRG9uJ3QgZmlyZSBsaXN0ZW5lcnMgcmVtb3ZlZCBkdXJpbmcgZXZlbnQgZGlzcGF0
Y2guCiAgICAgLy8gQWxzbywgZG9uJ3QgZmlyZSBldmVudCBsaXN0ZW5lcnMgYWRkZWQgZHVyaW5n
IGV2ZW50IGRpc3BhdGNoLiBDb252ZW5pZW50bHksIGFsbCBuZXcgZXZlbnQgbGlzdGVuZXJzIHdp
bGwgYmUgYWRkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxOWJjZjhlYWI4YTY0MThhNzdjY2I5ZTk3
NDVlODUzMGE5N2Y2OGI0Li5iMjEwMGFlMmViNDRjMjgyNTgzMWMxN2EyMmNjNDE2MGFjMTJhNjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjMzLDcgKzIyMzMsNyBAQCBib29sIE5vZGU6OmRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogICAgIGlmICghZG9j
dW1lbnQoKS5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkJFRk9SRUxPQURfTElTVEVORVIpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8Tm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVmPEJlZm9yZUxvYWRFdmVu
dD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoc291cmNlVVJMKTsK
ICAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudCk7CiAgICAgcmV0dXJuICFiZWZvcmVM
b2FkRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCAyNWRhMmQ2OTcxODczZDU4NWJiNjA1OThhZWU0
MWYyZmI5YzU1MjY3Li4xZGU5NzVkY2QzYmM1MDE4YTM0NDEzMTQ5MGFjNTM2ZGYwNmE5ZDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3Nh
Z2VQb3J0RXZlbnRzKCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSAgICBSZWY8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSBhIGZyb3pl
biBjb3B5IG9mIHRoZSBwb3J0cyBzbyB3ZSBjYW4gaXRlcmF0ZSB3aGlsZSBuZXcgb25lcyBtaWdo
dCBiZSBhZGRlZCBvciBkZXN0cm95ZWQuCiAgICAgVmVjdG9yPE1lc3NhZ2VQb3J0Kj4gcG9zc2li
bGVNZXNzYWdlUG9ydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGZiMjk0NTE0ZDE2NjUyZGU1ZmYwMzU4YmYxOTIyZDUz
YjI2Y2ExODguLmZkN2RjY2U0ZTVmMzBiYTY1YTI5MTFjYjdhOWU3NmQyNjA3ODYwYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNl
cnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUKIAogICAgIC8vIElu
dm9raW5nIGNhbGxiYWNrcyBtYXkgZGV0YWNoIGVsZW1lbnRzIGZyb20gb3VyIGRvY3VtZW50LCB3
aGljaCBjbGVhcnMgdGhlIGRvY3VtZW50J3MKICAgICAvLyByZWZlcmVuY2UgdG8gdXMsIHNvIHRh
a2UgYSBkZWZlbnNpdmUgcmVmZXJlbmNlLgotICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNh
bGxiYWNrcykgewogICAgICAgICBpZiAoIWNhbGxiYWNrLT5tX2ZpcmVkT3JDYW5jZWxsZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCmluZGV4IGIzZjk0Y2VhZDcxZjRhNzcy
YWJmY2QyNjBmZTU2YjQwMDdiZjFhZjQuLjgyNTNiNGI0NmY0ODlhMDBmNGEyZWYwYzFkN2E1NjBl
MjRhODQ0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtMzgsOSAr
MzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU3RyaW5nQ2FsbGJhY2s6OnNjaGVk
dWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBkYXRhKQogewotICAgIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJvdGVjdG9yKHRoaXMpOwot
ICAgIGNvbnRleHQtPnBvc3RUYXNrKFtwcm90ZWN0b3IsIGRhdGFdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewotICAgICAgICBwcm90ZWN0b3ItPmhhbmRsZUV2ZW50KGRhdGEpOworICAgIFJl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjb250ZXh0LT5w
b3N0VGFzayhbcHJvdGVjdGVkVGhpcywgZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmhhbmRsZUV2ZW50KGRhdGEpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAwMWI1OWU3ZGI1
MjliNDkyNmIwMzY1MjQ1NjhmNmUxODliMDY0MWE5Li5iMDZmNDk5NjA5N2ViNTczMTAzNzlkOWY3
MmNhM2FlZjM2ZGFjY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdl
dChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICBWZWN0b3I8
U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFtZXMs
IHBhcmFtVmFsdWVzKTsKIAotICAgIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBwcm90ZWN0KCp0aGlz
KTsgLy8gTG9hZGluZyB0aGUgcGx1Z2luIG1pZ2h0IHJlbW92ZSB1cyBmcm9tIHRoZSBkb2N1bWVu
dC4KKyAgICBSZWY8SFRNTEVtYmVkRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIExv
YWRpbmcgdGhlIHBsdWdpbiBtaWdodCByZW1vdmUgdXMgZnJvbSB0aGUgZG9jdW1lbnQuCiAgICAg
Ym9vbCBiZWZvcmVMb2FkQWxsb3dlZExvYWQgPSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZl
bnQobV91cmwpOwogICAgIGlmICghYmVmb3JlTG9hZEFsbG93ZWRMb2FkKSB7CiAgICAgICAgIGlm
IChpczxQbHVnaW5Eb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGFhNDBhNDYxMTM3YTIxYjliZjVk
ZThmNDdjZWJkMDRhYWM4NmIxZDkuLjFmODNmNWE3M2RhMDg0NTNjNTNlNmM3YjNlMThiZjUzMDhh
ZWM0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hl
Y2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+CiAgICAgaWYg
KCF3aWxsVmFsaWRhdGUoKSB8fCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIC8vIEFuIGV2ZW50IGhhbmRsZXIgY2FuIGRlcmVmIHRoaXMgb2Jq
ZWN0LgotICAgIFJlZjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAg
UmVmPERvY3VtZW50PiBvcmlnaW5hbERvY3VtZW50KGRvY3VtZW50KCkpOwogICAgIGJvb2wgbmVl
ZHNEZWZhdWx0QWN0aW9uID0gZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5pbnZhbGlkRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAgICAgaWYgKG5lZWRzRGVmYXVsdEFjdGlv
biAmJiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgJiYgaW5Eb2N1bWVudCgpICYmIG9yaWdpbmFs
RG9jdW1lbnQucHRyKCkgPT0gJmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKaW5kZXggOGNlY2QyZTNiNDk0NmQ1YTc2N2ViMDUxZTYyZmY4OWZmYzM3MDQw
ZC4uOGRkMzczMzBlODU4ZjRkZjE4NTMxNDZlMWZjMzhmYWEwMjUzMTg4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgSFRN
TEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50KQogICAgIC8v
IGhhcyAhcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSBhc3NlcnRpb24uCiAgICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFJlZjxIVE1M
Rm9ybUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gRm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJs
ZSBjb250cm9sIGFuZCBzaG93IGEgdmFsaWRhdGlvbiBtZXNzYWdlLgogICAgIGZvciAoYXV0byYg
Y29udHJvbCA6IHVuaGFuZGxlZEludmFsaWRDb250cm9scykgewpAQCAtMjg1LDcgKzI4NSw3IEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlRm9yU3VibWlzc2lvbihFdmVudCogZXZlbnQp
CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUodGhp
cywgY29udHJvbE5hbWVzQW5kVmFsdWVzLCAmZG9jdW1lbnQoKSwgTm90U3VibWl0dGVkQnlKYXZh
U2NyaXB0KTsKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hXaWxsU2VuZFN1
Ym1pdEV2ZW50KGZvcm1TdGF0ZS5yZWxlYXNlKCkpOwogCi0gICAgUmVmPEhUTUxGb3JtRWxlbWVu
dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1
Ym1pdCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4g
dmFsdWUuCiAgICAgaWYgKGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
c3VibWl0RXZlbnQsIHRydWUsIHRydWUpKSkKICAgICAgICAgbV9zaG91bGRTdWJtaXQgPSB0cnVl
OwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXQoRXZlbnQq
IGV2ZW50LCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIHByb2NlCiAgICAgICAgIGZp
cnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZhdGVkU3VibWl0KHRydWUpOwogCiAg
ICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSBwcm9jZXNzaW5nVXNlckdlc3R1cmUgPyBMb2Nr
SGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6WWVzOwotICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+
IHByb3RlY3QoKnRoaXMpOyAvLyBGb3JtIHN1Ym1pc3Npb24gY2FuIGV4ZWN1dGUgYXJiaXRhcnkg
SmF2YVNjcmlwdC4KKyAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsgLy8gRm9ybSBzdWJtaXNzaW9uIGNhbiBleGVjdXRlIGFyYml0YXJ5IEphdmFTY3JpcHQuCiAg
ICAgZnJhbWUtPmxvYWRlcigpLnN1Ym1pdEZvcm0oRm9ybVN1Ym1pc3Npb246OmNyZWF0ZSh0aGlz
LCBtX2F0dHJpYnV0ZXMsIGV2ZW50LCBsb2NrSGlzdG9yeSwgZm9ybVN1Ym1pc3Npb25UcmlnZ2Vy
KSk7CiAKICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRpb24gJiYgZmlyc3RTdWNjZXNzZnVsU3Vi
bWl0QnV0dG9uKQpAQCAtNzIwLDcgKzcyMCw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpjaGVj
a1ZhbGlkaXR5KCkKIAogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmNoZWNrSW52YWxpZENvbnRyb2xz
QW5kQ29sbGVjdFVuaGFuZGxlZChWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+
JiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpCiB7Ci0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgLy8gQ29weSBtX2Fzc29jaWF0ZWRFbGVtZW50cyBiZWNhdXNlIGV2ZW50IGhh
bmRsZXJzIGNhbGxlZCBmcm9tCiAgICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tW
YWxpZGl0eSgpIG1pZ2h0IGNoYW5nZSBtX2Fzc29jaWF0ZWRFbGVtZW50cy4KICAgICBWZWN0b3I8
UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+IGVsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNWZhMjVmNzk4ZTA5MjBlY2YzNGRkYmQ3ZDQ5
YmJlZWZiZTFkYWY3YS4uYWMyZTAzM2QwYWMxMjk3MGE4NzliMWVkYzA5Mzg0MWJkYzllODNiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC05ODksNyArOTg5
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW4KICAgICBpZiAoIW1faW5wdXRUeXBlLT5jYW5T
ZXRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxIVE1MSW5wdXRFbGVt
ZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgRXZlbnRRdWV1ZVNjb3BlIHNjb3BlOwogICAgIFN0cmluZyBzYW5p
dGl6ZWRWYWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwogICAgIGJvb2wgdmFsdWVDaGFuZ2Vk
ID0gc2FuaXRpemVkVmFsdWUgIT0gdGhpcy0+dmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAppbmRleCA1ODdjYjA1OTI3YTRiYTk2YzY5ZjNiMmJkNzMxMGIyZDQy
MjU4YWFlLi5hZTYyOWU5YmY2YWE3MzJmM2U5OTU4YWE0MTczNGUwNDVjY2VlN2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ29tcGxldGlu
ZyB0aGUgc2hlZXQgbG9hZCBtYXkgY2F1c2Ugc2NyaXB0cyB0byBleGVjdXRlLgotICAgIFJlZjxI
VE1MTGlua0VsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MTGlua0VsZW1lbnQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250
ZXh0KGRvY3VtZW50KCksIGJhc2VVUkwsIGNoYXJzZXQpOwogICAgIGF1dG8gY2FjaGVQb2xpY3kg
PSBmcmFtZS0+bG9hZGVyKCkuc3VicmVzb3VyY2VDYWNoZVBvbGljeSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDUxMTkwNTMzNmRjODkyMDgwNzcyYmU5
MzVkYjQxNjQwZWI1MzI3NC4uMzU5Yzk1N2ZkYWZlZjNmYzVkNzJiYzdmYjAzNjUwNzY4NzBmNjgw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MzYsNyAr
OTM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpub3RpZnlBYm91dFBsYXlpbmcoKQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKCkKIHsKLSAgICBS
ZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIGxvYWROZXh0U291cmNlQ2hp
bGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11
dGF0aW9ucy4KKyAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIGxvYWROZXh0U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4g
bWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICBQZW5kaW5nQWN0aW9uRmxhZ3MgcGVu
ZGluZ0FjdGlvbnMgPSBtX3BlbmRpbmdBY3Rpb25GbGFnczsKICAgICBtX3BlbmRpbmdBY3Rpb25G
bGFncyA9IDA7CiAKQEAgLTEwMzgsNyArMTAzOCw3IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50
OjpnZXRTdGFydERhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQog
ewotICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZEludGVy
bmFsIG1heSByZXN1bHQgaW4gYSAnYmVmb3JlbG9hZCcgZXZlbnQsIHdoaWNoIGNhbiBtYWtlIGFy
Yml0cmFyeSBET00gbXV0YXRpb25zLgorICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsgLy8gbG9hZEludGVybmFsIG1heSByZXN1bHQgaW4gYSAnYmVmb3JlbG9h
ZCcgZXZlbnQsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIAog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoJXApIiwgdGhpcyk7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDc5NGIxMjM1
MTVkNDg4YjBhMjMwMDhjOTBkZjJlMmZlYjBkMWUzODYuLjM1YTMzYWU1ZWYwMmMyNTVhNDFmNzNj
OTM0YjliNTJhY2Q1ZDY4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRl
V2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBwcm90ZWN0KCp0
aGlzKTsgLy8gYmVmb3JlbG9hZCBhbmQgcGx1Z2luIGxvYWRpbmcgY2FuIG1ha2UgYXJiaXRyYXJ5
IERPTSBtdXRhdGlvbnMuCisgICAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsgLy8gYmVmb3JlbG9hZCBhbmQgcGx1Z2luIGxvYWRpbmcgY2FuIG1ha2UgYXJiaXRy
YXJ5IERPTSBtdXRhdGlvbnMuCiAgICAgYm9vbCBiZWZvcmVMb2FkQWxsb3dlZExvYWQgPSBndWFy
ZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQodXJsKTsKICAgICBpZiAoIXJlbmRlcmVyKCkpIC8v
IERvIG5vdCBsb2FkIHRoZSBwbHVnaW4gaWYgYmVmb3JlbG9hZCByZW1vdmVkIHRoaXMgZWxlbWVu
dCBvciBpdHMgcmVuZGVyZXIuCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMzQzYWQ0MTlkNTQ3NWRiMzMzYzljZDc1NzVjODQ4
NjE1ODIyZDE0Mi4uODdmYjY3NDkwMzlkYTQxNWQxMDExNjM2MjI1ZjM4ODkwZmY5MjdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHQoKSBjb25zdAogCiB2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgUmVmPEhUTUxPcHRpb25FbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZl
bnRzKCp0aGlzKTsKKyAgICBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgLy8gQ2hhbmdpbmcgdGhlIHRleHQgY2F1c2VzIGEgcmVjYWxjIG9mIGEgc2Vs
ZWN0J3MgaXRlbXMsIHdoaWNoIHdpbGwgcmVzZXQgdGhlIHNlbGVjdGVkCiAgICAgLy8gaW5kZXgg
dG8gdGhlIGZpcnN0IGl0ZW0gaWYgdGhlIHNlbGVjdCBpcyBzaW5nbGUgc2VsZWN0aW9uIHdpdGgg
YSBtZW51IGxpc3QuIFdlIGF0dGVtcHQgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHAKaW5kZXggZDNhMjY4ZTYzYjc4OTliODhjNDgzNzU1MTUwYjZkMTk5NTQxNWI0
Mi4uM2IxMGQ2N2FjMzVlMjQ4MzhhMjk1YzE3NjNlNWZhNmE4NWMzNGEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBI
VE1MU2NyaXB0RWxlbWVudDo6ZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkKIAogdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZjxI
VE1MU2NyaXB0RWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAg
UmVmPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICho
YXNPbmVDaGlsZCgpICYmIGlzPFRleHQ+KCpmaXJzdENoaWxkKCkpKSB7CiAgICAgICAgIGRvd25j
YXN0PFRleHQ+KCpmaXJzdENoaWxkKCkpLnNldERhdGEodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggNzQ5MGQ5YWM4ZTYyMWFjMDQxNGJlNmFhYzY0
NTc2MjBiNTEwZDQzYi4uMWY1MjRmZGU4YjdhZjUwMWU4NmQ5NjA5NDQ1OTk1ZjE2ZDUyNzJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjEx
LDcgQEAgUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNlcnRSb3coaW50
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgUmVmPEhUTUxUYWJsZUVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHMoKnRoaXMp
OworICAgIFJlZjxIVE1MVGFibGVFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAg
IFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBsYXN0Um93ID0gMDsKICAgICBSZWZQdHI8SFRN
TFRhYmxlUm93RWxlbWVudD4gcm93ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1Y2Q4MmRkODkxM2U1ZGE1OTVmYmU3NmVhYzkwNGI2YWIw
NzRlM2QuLjI1NWJlZDY3OTcyODQyZGUzNDNiMmU2NjBiMTNlM2I1NWM2YmI5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtNDAyLDcgKzQwMiw3
IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogCiB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSkKIHsKLSAgICBSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4gcHJvdGVjdEZyb21N
dXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gVG8gcHJlc2VydmUgY29tbWVudHMsIHJlbW92ZSBv
bmx5IHRoZSB0ZXh0IG5vZGVzLCB0aGVuIGFkZCBhIHNpbmdsZSB0ZXh0IG5vZGUuCiAgICAgVmVj
dG9yPFJlZjxUZXh0Pj4gdGV4dE5vZGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5jcHAKaW5kZXggNjI2ZjMxOThmMmFhNGQ0OTViMDhlOWVlZGRiN2YwNzUxNTE2N2E1Yy4u
ZTI2ZmE2ZWI1Y2U3MzY0MGNhOGY3YzFjMjliY2Y0ODNiNmQ4NjExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFN0cmluZ1dpdGhE
aXJlY3Rpb24gSFRNTFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigpCiAK
IHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewot
ICAgIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlz
KTsKKyAgICBSZWY8SFRNTFRpdGxlRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAg
CiAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkgJiYgaGFzT25lQ2hpbGQoKSAmJiBpczxUZXh0Pigq
Zmlyc3RDaGlsZCgpKSkgewogICAgICAgICBkb3duY2FzdDxUZXh0PigqZmlyc3RDaGlsZCgpKS5z
ZXREYXRhKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCmluZGV4IDJlNDhhZDQ3MDM3MTQ1NjJlMGZiOTBhZjVmN2RiNThmZDNl
MTcyMjcuLjNhYWQ5YjY1NTI1NTJkZjA1ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFy
c2luZygpCiAKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBi
ZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1
cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICAvLyBOT1RFOiBUaGlzIHB1bXAgc2hvdWxkIG9ubHkgZXZlciBlbWl0IGJ1
ZmZlcmVkIGNoYXJhY3RlciB0b2tlbnMsCiAgICAgLy8gc28gRm9yY2VTeW5jaHJvbm91cyB2cy4g
QWxsb3dZaWVsZCBzaG91bGQgYmUgbWVhbmluZ2xlc3MuCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCkKIHsKICAgICAv
LyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9t
IHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVs
ZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAv
LyBXZSBzaG91bGQgbmV2ZXIgYmUgaGVyZSB1bmxlc3Mgd2UgY2FuIHB1bXAgaW1tZWRpYXRlbHku
CiAgICAgLy8gQ2FsbCBwdW1wVG9rZW5pemVyKCkgZGlyZWN0bHkgc28gdGhhdCBBU1NFUlRTIHdp
bGwgZmlyZSBpZiB3ZSdyZSB3cm9uZy4KQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogCiAgICAg
Ly8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJv
bSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRl
bGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
U2VnbWVudGVkU3RyaW5nIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZShzb3VyY2UpOwogICAgIGV4
Y2x1ZGVkTGluZU51bWJlclNvdXJjZS5zZXRFeGNsdWRlTGluZU51bWJlcnMoKTsKQEAgLTM2Niw3
ICszNjYsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJ
bXBsPiYmIGlucHV0U291cmNlKQogCiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhp
cyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdl
IG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1l
bnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgU3RyaW5nIHNvdXJjZShXVEZNb3ZlKGlucHV0U291
cmNlKSk7CiAKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVz
dW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIg
Y2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBS
ZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3Vt
ZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1faW5zZXJ0aW9uUHJlbG9h
ZFNjYW5uZXIgPSBudWxscHRyOwogICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEFsbG93WWll
bGQpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgLy8gcHVtcFRv
a2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9j
dW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0
LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxI
VE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQVNTRVJUKG1f
c2NyaXB0UnVubmVyKTsKICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwpAQCAtNTUy
LDcgKzU1Miw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cygpCiAKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlz
IHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2Ug
bmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAgICAgaWYgKCFpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCiAg
ICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZmVhNWZk
MjU4ODA2ZTM4NWZkZmRhMTNkYjg4YTEwNDQ4MDVmZWM5NS4uYTYxMDg3ZTY2ZjIyOGZkNzA1YTNm
OTE1Njk5OTYyYjAyOGZkY2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgRWxlbWVudCogU2xp
ZGVyVGh1bWJFbGVtZW50Ojpmb2N1c0RlbGVnYXRlKCkKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1l
bnQ6OmRyYWdGcm9tKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKIHsKLSAgICBSZWY8U2xpZGVy
VGh1bWJFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U2xpZGVyVGh1bWJFbGVtZW50
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBzZXRQb3NpdGlvbkZyb21Qb2ludChwb2ludCk7
CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBzdGFydERyYWdnaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjgyNzdhMGZj
ZjM1Y2IwNGMyMmQyNGM2OGY5NjJmODlhOGZkMjc1MC4uZWNkYjVkYWRhZDczYzhlNDhhZTdjMDg4
MzMyOWRjYTllMTFhMGNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nw
aW5CdXR0b25FbGVtZW50LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIFRo
ZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQgbWF5IHJ1biBKYXZhU2Ny
aXB0CiAgICAgICAgICAgICAvLyBjb2RlIHdoaWNoIGRldGFjaGVzIHRoaXMgc2hhZG93IG5vZGUu
IFdlIG5lZWQgdG8gdGFrZSBhIHJlZmVyZW5jZQogICAgICAgICAgICAgLy8gYW5kIGNoZWNrIHJl
bmRlcmVyKCkgYWZ0ZXIgc3VjaCBmdW5jdGlvbiBjYWxscy4KLSAgICAgICAgICAgIFJlZjxTcGlu
QnV0dG9uRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgICAgICBSZWY8U3BpbkJ1dHRv
bkVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fc3BpbkJ1
dHRvbk93bmVyKQogICAgICAgICAgICAgICAgIG1fc3BpbkJ1dHRvbk93bmVyLT5mb2N1c0FuZFNl
bGVjdFNwaW5CdXR0b25Pd25lcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcAppbmRleCBmMzVmZWQ5NzQyOTcwZjU3ZDQyNTY3MDgxNmExNjQ2Mzk5ZTA1
ZjJjLi40NTlkZmU0NDJmNzY5MGJkMmExMjZhMzNkM2RhNWU2MGEzNjk4MDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBEaXNwYXRj
aGluZyBhIG1lc3NhZ2UgY2FuIHBvc3NpYmx5IGNsb3NlIHRoZSBmcm9udGVuZCBhbmQgZGVzdHJv
eQogICAgICAgICAvLyB0aGUgb3duaW5nIGZyb250ZW5kIGNsaWVudCwgc28ga2VlcCBhIHByb3Rl
Y3RvciByZWZlcmVuY2UgaGVyZS4KLSAgICAgICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aFRhc2s+IHByb3RlY3QoKnRoaXMpOworICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoVGFzaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgaWYgKCFtX21lc3NhZ2Vz
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChtX21lc3NhZ2VzLnRha2VGaXJzdCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZmMmRlZGRhN2QwMTNlODhlMzll
M2RkYWNjOTg0OGJiZTljZjUxZDguLjk3Y2JmNjM4NGIzMzBhZmQyOWNjMWI4MDk1ZGY1OWM2ZWZm
YzRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjc1
LDggKzI3NSw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1haW5SZWNlaXZlZEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogLy8gYnV0IG5vdCBsb2FkcyBpbml0aWF0ZWQgYnkgY2hp
bGQgZnJhbWVzJyBkYXRhIHNvdXJjZXMgLS0gdGhhdCdzIHRoZSBXZWJGcmFtZSdzIGpvYi4KIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3RGcmFtZShtX2ZyYW1lKTsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RMb2Fk
ZXIoKnRoaXMpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7Cisg
ICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIElu
IHNvbWUgcmFyZSBjYXNlcywgY2FsbGluZyBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcgY291bGQg
Y2F1c2UgaXNMb2FkaW5nKCkgdG8gcmV0dXJuIGZhbHNlLgogICAgIC8vIChUaGlzIGNhbiBoYXBw
ZW4gd2hlbiB0aGVyZSdzIGEgc2luZ2xlIFhNTEh0dHBSZXF1ZXN0IGN1cnJlbnRseSBsb2FkaW5n
IGFuZCBzdG9wTG9hZGluZyBjYXVzZXMgaXQKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgQVNTRVJU
KCFtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZSkpOwogI2VuZGlmCiAKLSAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlcikgewogICAgICAgICAvLyBBIGRpZEZpbmlzaExvYWRpbmcgZGVsZWdhdGUg
bWlnaHQgdHJ5IHRvIGNhbmNlbCB0aGUgbG9hZCAoZGVzcGl0ZSBpdApAQCAtNjM3LDcgKzYzNyw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlCiAjZW5kaWYKIAogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsIG1fbWFpblJlc291cmNlID09IHJlc291cmNlKTsKLSAgICBSZWY8RG9jdW1lbnRM
b2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgYm9vbCB3aWxsTG9hZEZhbGxiYWNrID0gbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByZXNw
b25zZSk7CiAKICAgICAvLyBUaGUgbWVtb3J5IGNhY2hlIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUg
YXBwbGljYXRpb24gY2FjaGUgb3IgaXRzIGNhY2hpbmcgcnVsZXMuIFNvIGlmIGEgbWFpbiByZXNv
dXJjZSBpcyBzZXJ2ZWQKQEAgLTgxNiw4ICs4MTYsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1
bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0
ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3Rh
cnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgotICAgIFJlZlB0cjxGcmFt
ZT4gcHJvdGVjdEZyYW1lKG1fZnJhbWUpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVj
dExvYWRlcigqdGhpcyk7CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1l
KTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
Y29tbWl0SWZSZWFkeSgpOwogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IERvY3VtZW50
TG9hZGVyOjpmcmFtZUxvYWRlcigpOwpAQCAtOTk5LDggKzk5OSw4IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG1fZnJhbWUsICJkZXRhY2hGcm9tRnJhbWUoKSBpcyBiZWluZyBjYWxsZWQgb24gYSBE
b2N1bWVudExvYWRlciB0aGF0IGhhcyBuZXZlciBhdHRhY2hlZCB0byBhbnkgRnJhbWUiKTsKICNl
bmRpZgotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZnJhbWUpOwotICAgIFJlZjxE
b2N1bWVudExvYWRlcj4gcHJvdGVjdExvYWRlcigqdGhpcyk7CisgICAgUmVmUHRyPEZyYW1lPiBw
cm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gSXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIGRv
Y3VtZW50IGxvYWRlciB0aGF0IGlzIGRldGFjaGVkIGZyb20gaXRzCiAgICAgLy8gZnJhbWUgaGF2
ZSBhbnkgbG9hZHMgYWN0aXZlLCBzbyBraWxsIGFsbCB0aGUgbG9hZHMuCkBAIC0xNDc1LDcgKzE0
NzUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQog
ICAgIEFTU0VSVCghdGltaW5nKCkuZmV0Y2hTdGFydCgpKTsKICAgICB0aW1pbmcoKS5tYXJrRmV0
Y2hTdGFydCgpOwogCi0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsgLy8g
d2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGRlYWxsb2NhdGUgdGhlIHByb3Zpc2lvbmFsIGxvYWRlciAo
d2hpY2ggbWF5IGJlIHVzKSBpZiBpdCBjYW5jZWxzIHRoZSBsb2FkLgorICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1heSBk
ZWFsbG9jYXRlIHRoZSBwcm92aXNpb25hbCBsb2FkZXIgKHdoaWNoIG1heSBiZSB1cykgaWYgaXQg
Y2FuY2VscyB0aGUgbG9hZC4KICAgICB3aWxsU2VuZFJlcXVlc3QobV9yZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCkpOwogCiAgICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3Vy
IEZyYW1lIGJlaW5nIGRldGFjaGVkIG9yIGNhbmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51bGxpbmcg
dGhlIFJlc291cmNlUmVxdWVzdC4KQEAgLTE1NTUsNyArMTU1NSw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNhbmNlbFBvbGljeUNoZWNrSWZOZWVkZWQoKQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCiB7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8
RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3IgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgpID8gZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVk
RXJyb3IobV9yZXF1ZXN0KSA6IHJlc291cmNlRXJyb3I7CiAKICAgICBtX2RhdGFMb2FkVGltZXIu
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCA1ZjVlZmQ4NDE4YTM3ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1
Li45MGU0YmZiYzExMjM4OTNhYjEzNTI0NWZiNzQ5Nzc4ZDNiNjk5NWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTU1
LDcgKzE1NSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6fkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcigpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogewot
ICAgIFJlZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
Ly8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhlcmUg
YXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKQEAgLTE5MSw3
ICsxOTEsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cgogICAgIEFTU0VSVChtX2NsaWVudCk7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
LSAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBp
ZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QudXJsKCksICFyZWRp
cmVjdFJlc3BvbnNlLmlzTnVsbCgpKSkgewogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKTsKICAgICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFlODNiMDQw
ZTA0YTMzYjg5MmE1MzA2ZTMwMDk4MmFlYjc4OWU5MWIuLmI3ZmYzNzg0YjVmYzZjN2MyOTIxMTMz
YWE3NTEzNzZjNDgzYzZhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OnJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJl
cwogICAgIGlmICghbV9sb2FkZXItPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghbV9sb2FkZXItPmNyb3NzT3Jp
Z2luTW9kZSgpLmlzTnVsbCgpICYmICFyZXNvdXJjZS0+cGFzc2VzU2FtZU9yaWdpblBvbGljeUNo
ZWNrKCptX2xvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3Nz
LW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3Vy
Y2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgTWVkaWFS
ZXNvdXJjZTo6c2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsK
KyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkQ2FjaGVSZXNwb25zZSgq
dGhpcywgcmVzcG9uc2UpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIFJlc291cmNlUmVxdWVzdCYKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0
KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRo
aXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIE1lZGlh
UmVzb3VyY2U6OmRhdGFTZW50KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzUwogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09
IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7
CisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KTsKIH0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIq
IGRhdGEsIGludAogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1f
cmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7Cisg
ICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQocmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0
aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBpZiAobV9jbGllbnQpIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5j
ZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRGYWlsZWQoKnRoaXMsIHJlc291cmNl
LT5yZXNvdXJjZUVycm9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggN2MxOWQzZDMxNWU1MzQwOThhZDE1MDc0
ZGFlMWE1OTRmY2VkOTkwNi4uYjg5YjYwMDI2MzE0MDJjZTViNTBhYjljYWY3NTAxNGViYmJhMWFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCkBAIC05MCwxMSArOTAsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIHZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQ
dHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAg
ICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFtwcm90ZWN0LCByZWRpcmVjdFJlc3BvbnNlLCBjYWxsYmFja10oUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpIHsKKyAgICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMs
IFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzLCByZWRp
cmVjdFJlc3BvbnNlLCBjYWxsYmFja10oUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpIHsKICAgICAg
ICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcHJvdGVjdC0+d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT53aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKIAogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9KTsK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29ucwogCiB2b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSh0
aGlzLCByZXNwb25zZSk7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGUKIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhk
b3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBub3RpZnlEb25lKCk7CiAKQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRv
dWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJlZjxOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG5vdGlmeURvbmUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWE4YjYzMjA3NTdm
NTMwY2JkMzRlOGI3MWIwNzYzNTYzYjI5Y2VmZC4uYjc4ZjQwOWFmMmM3OGUyOWZhZWRlMWUzMzZh
M2FlYzk3MDNjZmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMo
KQogICAgIC8vIGRlYWxsb2NhdGVkIGFuZCByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0
aGlzIG9iamVjdC4KICAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0byBhdm9pZCBhY2Nlc3Npbmcg
dGhlIG9iamVjdCBhZnRlciBpdAogICAgIC8vIGhhcyBiZWVuIGRlYWxsb2NhdGVkIGFuZCBhbHNv
IHRvIGF2b2lkIHJlZW50ZXJpbmcgdGhpcyBtZXRob2QuCi0gICAgUmVmPFJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgbV9mcmFtZSA9IG51bGxwdHI7CiAgICAgbV9kb2N1bWVudExvYWRlciA9
IG51bGxwdHI7CkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aW5pdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHIpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
IAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAgICAgaWYgKHJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCkBAIC0yNDcsMzIgKzI0NywzMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjps
b2FkRGF0YVVSTCgpCiAgICAgYXV0byB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgQVNTRVJU
KHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAotICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9h
ZGVyKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBEYXRhVVJMRGVjb2Rlcjo6U2NoZWR1bGVDb250ZXh0IHNjaGVkdWxlQ29udGV4dDsK
ICNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCiAgICAgaWYgKGF1dG8qIHNjaGVkdWxlZFBhaXJzID0g
bV9mcmFtZS0+cGFnZSgpLT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkKICAgICAgICAgc2NoZWR1
bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnNjaGVkdWxlZFBhaXJzOwogI2VuZGlmCi0gICAg
RGF0YVVSTERlY29kZXI6OmRlY29kZSh1cmwsIHNjaGVkdWxlQ29udGV4dCwgW2xvYWRlciwgdXJs
XSAoT3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4gZGVjb2RlUmVzdWx0KSB7Ci0gICAg
ICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgRGF0YVVSTERlY29k
ZXI6OmRlY29kZSh1cmwsIHNjaGVkdWxlQ29udGV4dCwgW3Byb3RlY3RlZFRoaXMsIHVybF0gKE9w
dGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+IGRlY29kZVJlc3VsdCkgeworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKCFkZWNvZGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGxvYWRlci0+
ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwg
IkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmws
ICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT53YXNDYW5jZWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgYXV0byYgcmVzdWx0ID0gZGVjb2RlUmVzdWx0LnZhbHVlKCk7CiAgICAgICAgIGF1dG8gZGF0
YVNpemUgPSByZXN1bHQuZGF0YS0+c2l6ZSgpOwogCiAgICAgICAgIFJlc291cmNlUmVzcG9uc2Ug
ZGF0YVJlc3BvbnNlIHsgdXJsLCByZXN1bHQubWltZVR5cGUsIGRhdGFTaXplLCByZXN1bHQuY2hh
cnNldCB9OwotICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2Up
OworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNl
KTsKIAotICAgICAgICBpZiAoIWxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRh
U2l6ZSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihyZXN1bHQuZGF0YS5n
ZXQoKSwgZGF0YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGlmICgh
cHJvdGVjdGVkVGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSkKKyAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFJlY2VpdmVCdWZmZXIocmVzdWx0LmRhdGEuZ2V0KCks
IGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCi0gICAgICAgIGlmICghbG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5kaWRGaW5p
c2hMb2FkaW5nKGN1cnJlbnRUaW1lKCkpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPnJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRGaW5p
c2hMb2FkaW5nKGN1cnJlbnRUaW1lKCkpOwogICAgIH0pOwogfQogCkBAIC0zMjgsNyArMzI4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXMKIHsKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhp
cyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8K
ICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4
YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIEFTU0VSVCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIAogICAg
IC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRp
b25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJs
eSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0g
ICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbG9nUmVzb3VyY2VSZXNwb25zZVNv
dXJjZShtX2ZyYW1lLmdldCgpLCByLnNvdXJjZSgpKTsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBQCiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxl
Z2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAv
LyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUg
b2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CiAKICAgICBhZGRE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7
CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVn
YXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8v
IGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBv
ZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgY2xlYW51cEZvckVycm9yKGVycm9yKTsKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CkBA
IC01NTYsNyArNTU2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIAogICAgIC8vIHdpbGxDYW5jZWwoKSBhbmQgZGlkRmFpbFRv
TG9hZCgpIGJvdGggY2FsbCBvdXQgdG8gY2xpZW50cyB0aGF0IG1pZ2h0IGRvIAogICAgIC8vIHNv
bWV0aGluZyBjYXVzaW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCB0byBnbyBh
d2F5LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAKICAgICAvLyBJZiB3ZSBy
ZS1lbnRlciBjYW5jZWwoKSBmcm9tIGluc2lkZSB3aWxsQ2FuY2VsKCksIHdlIHdhbnQgdG8gcGlj
ayB1cCBmcm9tIHdoZXJlIHdlIGxlZnQgCiAgICAgLy8gb2ZmIHdpdGhvdXQgcmUtcnVubmluZyB3
aWxsQ2FuY2VsKCkKQEAgLTY3Miw3ICs2NzIsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiAgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzKCkgPT0gRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHJldHVybiBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShkb2N1bWVudExv
YWRlcigpLCBpZGVudGlmaWVyKCkpOwogfQogCkBAIC02ODcsNyArNjg3LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGwKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1l
dGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRo
aW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlz
IGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
aWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCkgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFs
cykgewogICAgICAgICBpZiAoaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSkgewpA
QCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlCiB7CiAgICAgLy8gUHJv
dGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHBy
b2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVm
aW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwogfQogCkBAIC03
MTcsNyArNzE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGUKIAogYm9vbCBSZXNvdXJjZUxv
YWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBwcm90
ZWN0aW9uU3BhY2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3OGMxNDJiYTQxYmJhMDk2OTAwMmZkNWQ0MDQ3M2RhN2MyZTkyNTVkLi43
ZTdhOWMyYmNhOGU0M2U0OWQ5ODkyYWVhMjJhNWMzNmYwMWY3ZmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVl
c3QmIG5ld1JlcXVlc3QsIGNvbgogewogICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyBVUkwgYmVj
YXVzZSB0aGUgY2FsbCB0byBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHdpbGwgbW9k
aWZ5IGl0LgogICAgIFVSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKLSAgICBSZWY8
U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW5ld1JlcXVlc3QudXJsKCku
aXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbmNlbChjYW5ub3RTaG93VVJMRXJyb3IoKSk7CkBAIC0y
MTYsNyArMjE2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50
ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb24KIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
SW5pdGlhbGl6ZWQpOwotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBt
X3Jlc291cmNlLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9
CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICAvLyBSZWZl
cmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9j
ZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFz
dCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIx
Ni4KLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoc2hvdWxk
SW5jbHVkZUNlcnRpZmljYXRlSW5mbygpKQogICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlm
aWNhdGVJbmZvKCk7CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBQYXMK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsaXplZCk7CiAgICAgLy8gUmVmZXJlbmNlIHRo
ZSBvYmplY3QgaW4gdGhpcyBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBj
YW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJl
bmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAg
UmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKICAgICBMT0coUmVzb3VyY2VM
b2FkaW5nLCAiUmVjZWl2ZWQgJyVzJy4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwogICAgIGxvZ1Jlc291cmNlTG9hZGVkKG1fZnJhbWUuZ2V0KCksIG1fcmVz
b3VyY2UtPnR5cGUoKSk7CiAKLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJjZSht
X3Jlc291cmNlKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CkBAIC00NDYsNyArNDQ2LDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJGYWlsZWQgdG8gbG9hZCAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVj
dFJlc291cmNlKG1fcmVzb3VyY2UpOwogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAgaWYg
KG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpCkBAIC00NzYsNyArNDc2LDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJDYW5jZWxsZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9zdGF0ZSA9IG1fc3RhdGUgPT0g
VW5pbml0aWFsaXplZCA/IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nIDogRmluaXNoaW5nOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDgyMWE4ODg1NzY4MjZlMmU0NTViZTEzMWY4ZThlZWM5ZjkxZTM4YzAuLmI2
NmQ1NGZhOWExYzM1NjVkNjgzMTZkMTI2NTYxNDAyODBiZjc4YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNTksNyArNTks
NyBAQCBjb25zdCBjaGFyKiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoU2hhcmVkQnVmZmVyKiBkYXRhLAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjph
ZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9ICZk
YXRhOwogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGEo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogCiB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVm
ZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gQnVmZmVyRGF0
YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQq
IGMgPSB3Lm5leHQoKSkKICAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKHRoaXMsIGRhdGEsIGxlbmd0
aCk7CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAgIC8vIFRoZSBjYWxscyB0byB0aGUgY2xp
ZW50IGNhbiByZXN1bHQgaW4gZXZlbnRzIHJ1bm5pbmcsIHBvdGVudGlhbGx5IGNhdXNpbmcKICAg
ICAvLyB0aGlzIHJlc291cmNlIHRvIGJlIGV2aWN0ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGFsbCBj
bGllbnRzIHRvIGJlIHJlbW92ZWQsCiAgICAgLy8gc28gYSBwcm90ZWN0b3IgaXMgbmVjZXNzYXJ5
LgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRo
aXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjbGllbnQgPSBzdGF0
aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCo+KGMpOwogICAgIHNpemVfdCByZWRpcmVj
dENvdW50ID0gbV9yZWRpcmVjdENoYWluLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlZGlyZWN0Q291bnQ7IGkrKykgewpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmFsbENsaWVudHNSZW1vdmVkKCkKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghcmVzcG9uc2Uu
aXNOdWxsKCkpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICAgICAgd2hpbGUgKENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmMKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBp
ZiAoIW1faWRlbnRpZmllcikKICAgICAgICAgbV9pZGVudGlmaWVyID0gbV9sb2FkZXItPmlkZW50
aWZpZXIoKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAK
aW5kZXggNjllMjk5N2Y0ZWNmNWIxNGMwNTUwZTJhMTllMWE4NjExNmU4ZDFmYi4uNjBiNjhlYmE3
MGI2ZTIwMzAxNTQ1ODMwMThhOTk0YjQzMzY4NWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQogewogICAgIC8vIFJlZmVyZW5jZSB0aGUgb2JqZWN0IGluIHRoaXMgbWV0aG9kIHNpbmNl
IHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZwogICAg
IC8vIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1w
bGUgb2YgdGhpcyBpcyA8cmRhcjovL3Byb2JsZW0vMzI2NjIxNj4uCi0gICAgUmVmPFN1YnJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
QXJyYXkoZGF0YUFycmF5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9SZXNvdXJjZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3Vy
Y2VMb2FkZXJNYWMubW0KaW5kZXggYmI5YjE0ZTgxNGI1YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMy
NmYwMy4uNTYyMGM5MDIyMWQ0M2ZiNGI3OTY1ZWE2YzM5N2Q1ODE1ODdmZTc5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJl
ZiBkYXRhQXJyYXkpCiB7CiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0
aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhp
bmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMg
aXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBD
RkluZGV4IGFycmF5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5KTsKICAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBhcnJheUNvdW50OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAppbmRleCAyYjU5YTMzMjRhZjczY2Q2NTU2ZTljNmM3OGRiZTkxOGJmMGMyY2VhLi40
MTlhOTcwNmY3Zjk4N2ZjZGJkYzhhMzFiNDM2MDNkMmMzMTVhZGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCkBAIC0xODg1LDcgKzE4ODUsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogCiBib29sIERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiB7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8RXZlbnRUYXJnZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAg
ICAgLy8gUGF1c2luZyBhIHBhZ2UgbWF5IHRyaWdnZXIgcGFnZWhpZGUgYW5kIHBhZ2VzaG93IGV2
ZW50cy4gV2ViQ29yZSBhbHNvIGltcGxpY2l0bHkgZmlyZXMgdGhlc2UKICAgICAvLyBldmVudHMg
d2hlbiBjbG9zaW5nIGEgV2ViVmlldy4gSGVyZSB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBzdGF0ZSBv
ZiB0aGUgcGFnZSB0byBwcmV2ZW50IGR1cGxpY2F0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCAwZTYyYjM0MzdhYjhiYjVkZWZlNGMzNmYyNTkyMzkx
NjNmNWNkYjBlLi45YzI1ZTVkMTFmMzk1YWIwYmIzNGEwYTJjMzM5NzdjYjMwNGVhMTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1
c3BlbnNpb24oKQogewogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWlnaHQgcmVz
dWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAogICAgIC8vIHdo
aWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERPTVdpbmRvd0V4dGVuc2lv
bj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgCiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAg
ICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QodGhpcyk7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
RE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUo
KQogCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhp
cyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUg
aXMgc3RpbGwgd29yayB0byBkby4KLSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIG1fZGlzY29ubmVjdGVkRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNo
V2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CiAgICAg
bV9kaXNjb25uZWN0ZWRGcmFtZSA9IG51bGxwdHI7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRE9N
V2luZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQogCiAgICAg
Ly8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01XaW5k
b3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3RpbGwg
d29yayB0byBkby4KLSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAg
IGlmICghbV93YXNEZXRhY2hlZCkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKIAogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBj
bGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ry
b3llZAogICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERP
TVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4dGVu
c2lvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggMmI3Zjk1M2JiZTgzODY5NWI4Y2ZhMTRhNDMxOGNkYjk2ZGI2NjU5Yi4uNmViYWUyODY4ZTk0
OWRkZWM3ZjE4NGY5ZDk0NDdlY2IyMjlmMDkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlkYXRlUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KQogCiB2b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmIG5ld1JlY3QpCiB7Ci0gICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgSW50UmVjdCBvbGRS
ZWN0ID0gZnJhbWVSZWN0KCk7CiAgICAgaWYgKG5ld1JlY3QgPT0gb2xkUmVjdCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29s
IGFsbG93U3VidHJlZSkKICAgICB9CiAKICAgICAvLyBQcm90ZWN0IHRoZSB2aWV3IGZyb20gYmVp
bmcgZGVsZXRlZCBkdXJpbmcgbGF5b3V0IChpbiByZWNhbGNTdHlsZSkuCi0gICAgUmVmPEZyYW1l
Vmlldz4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICAvLyBNYW55IG9mIHRoZSB0YXNrcyBwZXJmb3JtZWQgZHVyaW5nIGxheW91
dCBjYW4gY2F1c2UgdGhpcyBmdW5jdGlvbiB0byBiZSByZS1lbnRlcmVkLAogICAgIC8vIHNvIHNh
dmUgdGhlIGxheW91dCBwaGFzZSBub3cgYW5kIHJlc3RvcmUgaXQgb24gZXhpdC4KQEAgLTMxMTMs
NyArMzExMyw3IEBAIGJvb2wgRnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogCiB2
b2lkIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXJGaXJlZCgpCiB7Ci0gICAg
UmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIG1fdXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXIuc3Rv
cCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhVcGRhdGVFbWJlZGRlZE9iamVj
dHNJdGVyYXRpb25zOyBpKyspIHsKICAgICAgICAgaWYgKHVwZGF0ZUVtYmVkZGVkT2JqZWN0cygp
KQpAQCAtMzE5MCw3ICszMTkwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0
VGFza3MoKQogCiAgICAgLy8gbGF5b3V0KCkgcHJvdGVjdHMgRnJhbWVWaWV3LCBidXQgaXQgc3Rp
bGwgY2FuIGdldCBkZXN0cm95ZWQgd2hlbiB1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogICAgIC8v
IGlzIGNhbGxlZCB0aHJvdWdoIHRoZSBwb3N0IGxheW91dCB0aW1lci4KLSAgICBSZWY8RnJhbWVW
aWV3PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIG1fdXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXIuc3RhcnRPbmVTaG90KDAp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3Bw
CmluZGV4IDAxMmZhM2U2ZWQ4MzgyNTk0YjRiZDA5Nzg0MTIwMjRkZGQyMDZhNGYuLmNhMjJmZDQ2
YWNmZGQzMGMxZjQ3MWFlODFjODk3Yzg3NzlkMjQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9p
ZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQoKQogICAgIC8vIGR1
cmluZyBhbiBhbmltYXRpb24gY2FsbGJhY2sgdGhhdCBtaWdodCBnZXQgY2FsbGVkLiBTaW5jZSB0
aGUgb3duZXIgaXMgYSBDb21wb3NpdGVBbmltYXRpb24KICAgICAvLyBhbmQgaXQgcmVmIGNvdW50
cyB0aGlzIG9iamVjdCwgd2Ugd2lsbCBrZWVwIGEgcmVmIHRvIHRoYXQgaW5zdGVhZC4gVGhhdCB3
YXkgdGhlIEFuaW1hdGlvbkJhc2UKICAgICAvLyBjYW4gc3RpbGwgYWNjZXNzIHRoZSByZXNvdXJj
ZXMgb2YgaXRzIENvbXBvc2l0ZUFuaW1hdGlvbiBhcyBuZWVkZWQuCi0gICAgUmVmPEFuaW1hdGlv
bkJhc2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxBbmltYXRpb25CYXNlPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICAgICBSZWY8Q29tcG9zaXRlQW5pbWF0aW9uPiBwcm90ZWN0Q29tcG9zaXRl
QW5pbWF0aW9uKCptX2NvbXBvc2l0ZUFuaW1hdGlvbik7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9y
IHN0YXJ0IHRpbWVvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDQ4Mzk4NmFmNWZiZWZmMTA1ZWY0NGMy
NTgxZWVmOGQxNDQwZjZmNWUuLjAxNWUxODNhMDU5ZThiYmI5NGRjNDE3Y2MxYmNjNzI1YWViYzA1
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNTksOSArNTksOSBAQCBTY3JvbGxpbmdUcmVlOjpFdmVu
dFJlc3VsdCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbAogICAgIGlmICh3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdoZWVsRXZlbnQp
KQogICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7CiAKLSAgICBSZWZQdHI8VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlPiB0aHJlYWRlZFNjcm9sbGluZ1RyZWUodGhpcyk7Ci0gICAgU2Nyb2xs
aW5nVGhyZWFkOjpkaXNwYXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50XSB7
Ci0gICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKKyAgICBSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMsIHdoZWVs
RXZlbnRdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKICAgICB9KTsKICAgICAKICAgICByZXR1cm4gRGlkSGFuZGxlRXZlbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGYyMmQ2YmY4OWNmMmRiNjM5OTI2M2Nj
OTA5ZjYyODY3NzgxODU3MDUuLmM2MjlmYjJlOGEzNTRjZWRlM2UyOGQ2MDIwNGFhZjY3YWRiYzcx
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMDM0LDcgKzEw
MzQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxi
YXJPdmVybGF5U3R5bGUgb3ZlcmxheVN0eWxlKQogCiB2b2lkIFNjcm9sbFZpZXc6OnNldEZyYW1l
UmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0KQogewotICAgIFJlZjxTY3JvbGxWaWV3PiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8U2Nyb2xsVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAg
ICAgSW50UmVjdCBvbGRSZWN0ID0gZnJhbWVSZWN0KCk7CiAgICAgCiAgICAgaWYgKG5ld1JlY3Qg
PT0gb2xkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IDkwZDgwMTVhODJmNzQzZDAwODBk
ZTc5ZDAyMTZjNzFlMzNlYzllNzQuLmQ5YTYyMjYwYzMwOWUyMzI1MDU0YWIyOWIxMGI1OWFjYTg5
ZTc5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAKICAgICAvLyBUaGUgY2Fs
bCBiYWNrIGNhbiBjYXVzZSBhbGwgb3VyIGNsaWVudHMgdG8gYmUgdW5yZWdpc3RlcmVkLCBzbyB3
ZSBuZWVkIHRvIHByb3RlY3QKICAgICAvLyBhZ2FpbnN0IGRlbGV0aW9uIHVudGlsIHRoZSBlbmQg
b2YgdGhlIG1ldGhvZC4KLSAgICBSZWY8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIC8vIENvcHkgdGhlIGhhc2ggdGFibGUgYW5kIHJlbW92ZSBjbGllbnRzIGZyb20g
aXQgb25lIGJ5IG9uZSBzbyB3ZSBkb24ndCBub3RpZnkKICAgICAvLyBhbnkgY2xpZW50IHR3aWNl
LCBidXQgY2FuIHJlc3BvbmQgdG8gcmVtb3ZhbCBvZiBjbGllbnRzIGR1cmluZyB0aGUgZGVsaXZl
cnkgcHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IGJjMzIzYTJmZjQzZDRk
ODY3YTQwMDIyYjVkNjE3MGUzOWZlN2YxMTcuLjExNTMyYWQ2ZDkzZWNlMTY4YWM4N2U0OGMyNTdh
MGU5ZGM0NWFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMjgxLDcgKzI4MSw3
IEBAIHZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OnNldFNob3VsZEludmVydENvbG9ycyhib29sKQog
dm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCkKIHsK
ICAgICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IGNvdWxkIGNhdXNlIG91ciBsYXN0IHJl
ZmVyZW5jZSB0byBnbyBhd2F5LgotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gcHJvdGVj
dG9yKHRoaXMpOworICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKIAogICAgIHVwZGF0ZURlYnVnSW5mb0xheWVyKG1fcGFnZS0+c2V0dGluZ3MoKS5zaG93
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YmNhMjRlZjY3MWZhY2JkNWJm
YTkxNjFiNjk1NzBmMjBlNjg3Y2YyLi42ODQyOTViMTY0MTkxN2I1MzZkZDA0ZWVjOGIxNTY2MjAy
YjY1MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC03NCwxNCArNzQsMTggQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKICAg
ICAgICAgbV9wZW5kaW5nU2FtcGxlcy5hcHBlbmQoc2FtcGxlKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gcHJvdGVjdG9yKHRoaXMpOwotICAg
IG1fbm90aWZpZXIubm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRpb246Ok5ld1NhbXBsZSwgW3By
b3RlY3Rvcl0geyBwcm90ZWN0b3ItPm5vdGlmeVRyYWNrT2ZTYW1wbGUoKTsgfSk7CisgICAgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgbV9ub3RpZmllci5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6TmV3U2FtcGxl
LCBbcHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5ub3RpZnlUcmFja09m
U2FtcGxlKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6c3RyZWFtQ2hhbmdlZCgpCiB7Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBtX25vdGlmaWVyLm5vdGlmeShNYWlu
VGhyZWFkTm90aWZpY2F0aW9uOjpTdHJlYW1DaGFuZ2VkLCBbcHJvdGVjdG9yXSB7IHByb3RlY3Rv
ci0+bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsgfSk7CisgICAgUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9ub3Rp
Zmllci5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6U3RyZWFtQ2hhbmdlZCwgW3Byb3Rl
Y3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mU2FtcGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
CmluZGV4IDY4ODk4OWUzZTkxNDYwZTBiZmExYzIzNmVhMTQ0NDc2MjNjYzY4ODkuLjVmMWE0MzQ3
NTI4NjhjZGExODk5YjdiMzZkOTI2ZDU4ZDc0YTgyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQpAQCAtMTU0LDcgKzE1NCw3IEBAIHByaXZhdGU6CiB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWluUHRy
PENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxheWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBs
YXllcl07CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3Jl
ZW5MYXllcl0gewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFja2dyb3VuZENv
bG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07CkBAIC0xNjgs
NyArMTY4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlk
U2V0dXBGdWxsc2NyZWVuKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OmRpZEV4aXRGdWxsc2NyZWVuKCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXMo
dGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpc10g
ewogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXllcihuaWwpOwogICAgICAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywg
dGhpc10gewpAQCAtMTg1LDcgKzE4NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICBtX2ludGVyZmFjZSA9IG51
bGxwdHI7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gbmlsOwogICAgIAotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
KyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CiAgICAg
ICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCk7CiAgICAgICAgIG1fbW9k
ZWwtPnNldFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKQEAgLTIwMCw3ICsy
MDAsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVh
bnVwRnVsbHNjcmVlbigpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlz
LCB0aGlzXSB7CiAgICAgICAgIEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5k
b3cobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwogICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY2xpZW50UmVjdF0gewpAQCAt
MjE0LDcgKzIxNCw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQogewogICAgIEFTU0VSVChXZWJUaHJl
YWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpc10gewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVy
ZmFjZS0+cmVzZXRNZWRpYVN0YXRlKCk7CkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVzZXRNZWRpYVN0YXRlKCkKIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldER1cmF0aW9uKGRvdWJsZSBkdXJh
dGlvbikKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
W3N0cm9uZ1RoaXMsIHRoaXMsIGR1cmF0aW9uXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkK
ICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CkBAIC0yMzQs
NyArMjM0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0
RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5j
aG9yVGltZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
KyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7CiAgICAgICAg
IGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRDdXJyZW50VGlt
ZShjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7CkBAIC0yNDQsNyArMjQ0LDcgQEAgdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q3VycmVudFRpbWUoZG91YmxlIGN1
cnJlbnRUaW1lLCBkb3UKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6
OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQogewogICAgIEFTU0VSVChXZWJU
aHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgYnVmZmVy
ZWRUaW1lXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJm
YWNlLT5zZXRCdWZmZXJlZFRpbWUoYnVmZmVyZWRUaW1lKTsKQEAgLTI1NCw3ICsyNTQsNyBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAg
ICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMs
IHRoaXMsIGlzUGxheWluZywgcGxheWJhY2tSYXRlXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFj
ZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tS
YXRlKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRSYXRlKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFjawogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJv
b2wgaGFzVmlkZW8sIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgQVNTRVJUKFdl
YlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBoYXNW
aWRlbywgd2lkdGgsIGhlaWdodF0gewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAg
ICAgICBtX2ludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25zKGhhc1ZpZGVvLCB3aWR0aCwgaGVp
Z2h0KTsKQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYQogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29u
c3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
c3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgY29uc3QgUGxhdGZvcm1UaW1lUmFu
Z2VzJiBwbGF0Zm9ybVRpbWVSYW5nZXMgPSB0aW1lUmFuZ2VzLnJhbmdlcygpOwogICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBw
bGF0Zm9ybVRpbWVSYW5nZXNdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQpAQCAtMjg1LDcg
KzI4NSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFNl
ZWthYmxlUmFuZ2VzKGNvbnN0IFRpbWVSYW5nZXMmIHRpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2UoYm9vbCBjYW5QbGF5RmFz
dFJldmVyc2UpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7
CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKICAgICAgICAgaWYg
KG1faW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldENhblBsYXlGYXN0UmV2
ZXJzZShjYW5QbGF5RmFzdFJldmVyc2UpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29s
IGNhblBsYXlGYXN0CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5nPiYgb3B0aW9u
cywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJy
ZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
c3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBSZXRhaW5QdHI8TlNNdXRhYmxl
QXJyYXk+IG9wdGlvbnNBcnJheSA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5p
dFdpdGhDYXBhY2l0eTpvcHRpb25zLnNpemUoKV0pOwogICAgIGZvciAoYXV0byYgbmFtZSA6IG9w
dGlvbnMpCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmUKIHZvaWQg
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVj
dGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVj
dGVkSW5kZXgpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7
CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb3B0aW9u
c0FycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5
Om9wdGlvbnMuc2l6ZSgpXSk7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykKQEAgLTMz
Myw3ICszMzMsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpz
ZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKGNvbnN0CiB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwg
RXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUgdHlwZSwgU3RyaW5nIGxvY2FsaXplZERldmljZU5h
bWUpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOwogICAgIFN0cmluZ0NhcHR1cmUgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lKGxv
Y2FsaXplZERldmljZU5hbWUpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBlbmFibGVkLCB0eXBlLCBjYXB0dXJlZExvY2Fs
aXplZERldmljZU5hbWVdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQpAQCAtMzQ0LDcgKzM0
NCw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVy
bmFsUGxheWJhY2soYm9vbCBlbmFibGVkLCBFeHRlCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRp
c2FibGVkKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwor
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbc3Ryb25nVGhpcywgdGhpcywgZGlzYWJsZWRdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNl
KQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2Fi
bGVkKGRpc2FibGVkKTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29s
CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNj
cmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUp
CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIG1vZGVdIHsKICAgICAgICAgaWYgKG1f
bW9kZWwpCiAgICAgICAgICAgICBtX21vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUobW9kZSk7
CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnQKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJl
Y3QgZnJhbWUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92
aWRlb0Z1bGxzY3JlZW5WaWV3IGxheWVyXTsKICAgICAKICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5
ZXIgc2V0U3VibGF5ZXJUcmFuc2Zvcm06W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRyYW5zZm9ybV1d
OwpAQCAtMzg5LDcgKzM4OSw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUpCiB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IHZpZGVvR3Jhdml0eSkKIHsKICAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFdlYlRocmVhZFJ1
bihbc3Ryb25nVGhpcywgdGhpcywgdmlkZW9HcmF2aXR5XSB7CiAgICAgICAgIGlmIChtX21vZGVs
KQogICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2aXR5
KTsKQEAgLTM5OSw3ICszOTksNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZQogdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgV2ViVGhyZWFk
UnVuKFtzdHJvbmdUaGlzLCB0aGlzLCBtb2RlXSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAg
ICAgICAgICAgbV9tb2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwpAQCAtNDIwLDcg
KzQyMCw3IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVw
RnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgUmV0YWluUHRyPFVJVmlldz4g
dmlld1JlZiA9IHZpZXc7CiAgICAgbV92aWRlb0VsZW1lbnQgPSAmdmlkZW9FbGVtZW50OwogCi0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlz
KHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgdmlld1JlZiwgbW9kZV0gewogICAgICAgICBB
U1NFUlQoaXNVSVRocmVhZCgpKTsKIApAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVt
ZW50JiB2aWRlCiAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCh0aGlzKTsKICAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJ
Vmlld0NsYXNzKCkgYWxsb2NdIGluaXRdKTsKICAgICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdS
ZWYsIG1vZGVdIHsKICAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50
OjpjcmVhdGUoKS5nZXQoKSk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2UodGhpcyk7CkBAIC00NTIsNyArNDUyLDcgQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VS
VChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgSW50UmVjdCBj
bGllbnRSZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlz
KHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICBBU1NF
UlQoaXNVSVRocmVhZCgpKTsKICAgICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNs
aWVudFJlY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGExNzRjMTViYmE1
NDFmZGJiMmZhY2E1YzVlNGVjMzg4MGZmYzg1M2IuLjI2NDczNmIyNjI4NDE2ZjIwZTQ3NTAzNGQx
NTRmMmMyYjMzZjk5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTYwNyw4
ICs2MDcsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgLy8gSWYgd2UgYXJlIGJvdGggaW4gUGlQIGFuZCBp
biBGdWxsc2NyZWVuIChpLmUuLCB2aWEgYXV0by1QaVApLCBhbmQgd2UgZGlkIG5vdCBzdG9wIGZ1
bGxzY3JlZW4gdXBvbiByZXR1cm5pbmcsIGl0IG11c3QgYmUKICAgICAvLyBiZWNhdXNlIHRoZSBv
cmlnaW5hdGluZyB2aWV3IGlzIG5vdCB2aXNpYmxlLCBzbyBoaWRlIHRoZSBmdWxsc2NyZWVuIHdp
bmRvdy4KICAgICBpZiAoaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkIHwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSkpIHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltz
dHJvbmdUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKKyAgICAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBs
ZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKICAg
ICAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKICAgICAgICAgICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKICAgICAgICAgfV07CkBAIC02
OTEsOCArNjkxLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0
dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdAogCiAgICAgW0NBVHJhbnNhY3Rp
b24gY29tbWl0XTsKIAotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10geworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewog
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAgICAgICBtX2Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVuKCk7CiAgICAgfSk7CkBA
IC03MjgsNyArNzI4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwg
IldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFy
ZCglcCkiLCB0aGlzKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgaWYgKFttX3BsYXllclZpZXdD
b250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZV0pIHsKICAgICAgICAgLy8gTk9URTog
VGhlIGZ1bGxzY3JlZW4gbW9kZSB3aWxsIGJlIHJlc3RvcmVkIGluIHByZXBhcmVGb3JQaWN0dXJl
SW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcigpLgpAQCAtNzM4LDcgKzczOCw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0
YW5kYXJkKCkKICAgICB9CiAKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENv
bG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBibGFja0NvbG9yXV07Ci0gICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOlt0
aGlzLCBzdHJvbmdUaGlzXSAoQk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IqKSB7CisgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25I
YW5kbGVyOlt0aGlzLCBwcm90ZWN0ZWRUaGlzXSAoQk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IqKSB7
CiAgICAgICAgIFVOVVNFRF9QQVJBTShzdWNjZWVkZWQpOwogICAgICAgICBMT0coRnVsbHNjcmVl
biwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFu
ZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQoJXMpIiwgdGhpcywgYm9vbFN0cmluZyhzdWNj
ZWVkZWQpKTsKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFj
a0NvbnRyb2xzOllFU107CkBAIC03NzMsMTQgKzc3MywxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBmaQogICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKICAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwogICAgIH0gZWxzZSBpZiAoaXNN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUgfCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBz
dHJvbmdUaGlzKHRoaXMpOwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltzdHJvbmdUaGlzLCB0aGlzXSAo
Qk9PTCwgTlNFcnJvciopIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltwcm90
ZWN0ZWRUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKICAgICAgICAgICAgIFttX3dpbmRv
dyBzZXRIaWRkZW46Tk9dOwogICAgICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3Rv
cFBpY3R1cmVJblBpY3R1cmVdOwogICAgICAgICB9XTsKICAgICB9IGVsc2UgaWYgKGlzTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpIHsKLSAg
ICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlz
KHRoaXMpOwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFu
aW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbc3Ryb25nVGhpcywgdGhpc10gKEJPT0wsIE5T
RXJyb3IqKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
ZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRo
aXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgbV9leGl0Q29tcGxldGVk
ID0gdHJ1ZTsKIAogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwpAQCAtOTA3LDgg
KzkwNyw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0
UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBpZiAobV9tb2RlICYgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpIHsKICAgICAgICAgaWYgKCFbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0Jh
Y2tncm91bmRdKSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbc3Ry
b25nVGhpcywgdGhpc10gKEJPT0wsIE5TRXJyb3IqKSB7CisgICAgICAgICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
ICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllF
UyBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcywgdGhpc10gKEJPT0wsIE5TRXJyb3Iq
KSB7CiAgICAgICAgICAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwogICAgICAgICAg
ICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKICAg
ICAgICAgICAgIH1dOwpAQCAtOTk2LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBs
ZXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWlu
UHRyPGlkPiBzdHJvbmdDb21wbGV0aW9uSGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5k
bGVyIGNvcHldKTsKLSAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoW3N0cm9uZ1RoaXMs
IHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyXShib29sIHJlc3RvcmVkKSAgewotICAgICAgICBMT0co
RnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFtYmRhKCVwKSAtIHJl
c3RvcmVkKCVzKSIsIHN0cm9uZ1RoaXMuZ2V0KCksIGJvb2xTdHJpbmcocmVzdG9yZWQpKTsKKyAg
ICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoW3Byb3RlY3RlZFRoaXMsIHN0cm9uZ0NvbXBs
ZXRpb25IYW5kbGVyXShib29sIHJlc3RvcmVkKSAgeworICAgICAgICBMT0coRnVsbHNjcmVlbiwg
IldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGlj
dHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFtYmRhKCVwKSAtIHJlc3RvcmVkKCVzKSIs
IHByb3RlY3RlZFRoaXMuZ2V0KCksIGJvb2xTdHJpbmcocmVzdG9yZWQpKTsKICAgICAgICAgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MIHJlc3RvcmVkKSA9IHN0cm9uZ0NvbXBsZXRpb25I
YW5kbGVyLmdldCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN0b3JlZCk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA1YmEyODIx
YjcwYjljMjUyNGM2MTYwYTI3OTVmNDk0M2NhNTRmM2IzLi4wZTc3ODdkMDIzNmYyNjA5Yzg1Mzk2
YWM0YjNkNjBiNzc4MmRhYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0
LCBiZWNhdXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gb3V0ZXJWaWV3IGNhbiBpbnZva2UgYXJiaXRy
YXJ5CiAgICAgLy8gY29kZSBpbmNsdWRpbmcgcmVjYWxjIHN0eWxlL2xheW91dCwgd2hpY2ggY2Fu
IGRlcmVmIGl0LgotICAgIFJlZjxXaWRnZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXaWRn
ZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTlNSZWN0IGZyYW1lID0gcmVjdDsKICAg
ICBpZiAoIU5TRXF1YWxSZWN0cyhmcmFtZSwgb3V0ZXJWaWV3LmZyYW1lKSkgewpAQCAtMjA0LDcg
KzIwNCw3IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIpCiAKICAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0LCBiZWNh
dXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIHZpZXdzIGNhbiBpbnZva2UgYXJiaXRyYXJ5CiAg
ICAgLy8gY29kZSwgd2hpY2ggY2FuIGRlcmVmIGl0LgotICAgIFJlZjxXaWRnZXQ+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxXaWRnZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTlNH
cmFwaGljc0NvbnRleHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1cnJl
bnRDb250ZXh0XTsKICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gW1t2aWV3IHdpbmRvd10gZ3Jh
cGhpY3NDb250ZXh0XSB8fCAhW2N1cnJlbnRDb250ZXh0IGlzRHJhd2luZ1RvU2NyZWVuXSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCmluZGV4IGNmYWUyMzM4NzA5YjczNDNlZDI5ODc5MzVjZGIyNmM0YWI2MmZkNzIu
LjUzZWIyNWEwNGQxMTRiYjBjYzU4ZGE3ZmViMTViYmExZjdjNzQ1OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
QEAgLTE4NywxMSArMTg3LDExIEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBo
YW5kbGUodGhpcyk7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKIAogICAgIC8vIEZpbmlzaCB0aGlzIGFzeW5jIGNhbGwgcXVpY2tseSBhbmQgcmV0
dXJuLgotICAgIGNhbGxPbk1haW5UaHJlYWQoW2hhbmRsZV0gewotICAgICAgICBoYW5kbGUtPmRv
U3RhcnQoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRvU3RhcnQoKTsKICAgICB9KTsKIH0KIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpkb1N0YXJ0KCkKICAgICBpZiAobV9hc3luYykK
ICAgICAgICAgZ2V0U2l6ZUZvck5leHQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgUmVmPEJsb2JS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7IC8vIGdldFNpemVGb3JOZXh0IGNhbGxzIHRo
ZSBjbGllbnQKKyAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7IC8vIGdldFNpemVGb3JOZXh0IGNhbGxzIHRoZSBjbGllbnQKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSAmJiAhbV9hYm9ydGVk
ICYmICFtX2Vycm9yQ29kZTsgKytpKQogICAgICAgICAgICAgZ2V0U2l6ZUZvck5leHQoKTsKICAg
ICAgICAgbm90aWZ5UmVzcG9uc2UoKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6Z2V0U2l6ZUZvck5leHQoKQogCiAgICAgICAgIC8vIFN0YXJ0IHJlYWRpbmcg
aWYgaW4gYXN5bmNocm9ub3VzIG1vZGUuCiAgICAgICAgIGlmIChtX2FzeW5jKSB7Ci0gICAgICAg
ICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgICAg
IFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICAg
ICAgbm90aWZ5UmVzcG9uc2UoKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShidWZmZXJT
aXplKTsKICAgICAgICAgICAgIHJlYWRBc3luYygpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIGludCBC
bG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRTeW5jKGNoYXIqIGJ1ZiwgaW50IGxlbmd0aCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUKCFtX2FzeW5jKTsKLSAgICBSZWY8
QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJlc291cmNl
SGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGludCBvZmZzZXQgPSAwOwogICAg
IGludCByZW1haW5pbmcgPSBsZW5ndGg7CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBCbG9iUmVz
b3VyY2VIYW5kbGU6OnJlYWREYXRhQXN5bmMoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtKQogICAg
IEFTU0VSVChtX2FzeW5jKTsKICAgICBBU1NFUlQoaXRlbS5kYXRhKCkuZGF0YSgpKTsKIAotICAg
IFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCbG9iUmVz
b3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbG9uZyBsb25nIGJ5dGVz
VG9SZWFkID0gaXRlbS5sZW5ndGgoKSAtIG1fY3VycmVudEl0ZW1SZWFkU2l6ZTsKICAgICBpZiAo
Ynl0ZXNUb1JlYWQgPiBtX3RvdGFsUmVtYWluaW5nU2l6ZSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2
b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZGlkUmVhZChpbnQgYnl0ZXNSZWFkKQogdm9pZCBCbG9i
UmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1Jl
YWQpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwotICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgbV90b3RhbFJlbWFpbmluZ1NpemUgLT0gYnl0ZXNSZWFkOwogCkBA
IC01NDksNyArNTQ5LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6
ZmFpbGVkKGludCBlcnJvckNvZGUpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwotICAgIFJlZjxC
bG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCbG9iUmVzb3VyY2VI
YW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBjbGllbnQu
CiAgICAgbm90aWZ5RmFpbChlcnJvckNvZGUpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgQmxv
YlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX2Vycm9yQ29kZSkgewotICAgICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgICAgIG5vdGlmeVJlc3BvbnNlT25FcnJvcigpOwogICAgICAgICBub3Rp
ZnlGaW5pc2goKTsKICAgICB9IGVsc2UKQEAgLTY2NSw5ICs2NjUsOSBAQCB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlmeSB0
aGUgY2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVudCBt
aWdodCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sgZnVu
Y3Rpb24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBjYWxs
cyBpbiB0aGUgc3RhY2suCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gaGFuZGxlKHRo
aXMpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2hhbmRsZV0gewotICAgICAgICBkb05vdGlmeUZp
bmlzaCgqaGFuZGxlKTsKKyAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAg
ICAgZG9Ob3RpZnlGaW5pc2goKnByb3RlY3RlZFRoaXMpOwogICAgIH0pOwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAppbmRleCBjOTVhNjU4MjNhYjk3MjY3OWMxNjliNmJkMGI4NzUxOGM2MTc4ZWQw
Li45MDZlNjY5MTA3YmNjYjhlYmQ4MjViMmI4YzljODAyNGRhNjlmMzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIGlmIChk
LT5tX3VzZXNBc3luY0NhbGxiYWNrcykKICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVz
dEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggOTRkNWU5NTQ3MmNjNDc1ZjJlY2Q3
YjMzNzViMTFkMzdhN2U2NWUzNy4uZGFmOTNkYzg0OGJjMTU4ZDQ3ZTdlYTRhZTBlYmRjMjI3NWRm
YTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KIAogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sg
aW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdl
IHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRl
ciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlv
bmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKSB7CkBA
IC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UKIHsKICAgICAvLyBGSVhN
RTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlz
IHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRo
aXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3Ro
ZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsK
KyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNI
YW5kbGUoKSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKSB7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlRGF0YShDRkQKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0
bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQg
anVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUs
IGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0
dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBDRlJldGFpbihkYXRhKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRG
aW5pc2hMb2FkaW5nKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29w
aWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBj
YWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1
c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcu
Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewog
ICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxlKCkgfHwgIW1faGFuZGxlLT5jbGllbnQo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwo
Q0ZFcnJvclJlZgogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMg
cHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwg
cmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBh
IEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIENGUmV0YWluKGVycm9yKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAocHJvdGVjdG9yLT5oYXNIYW5kbGUoKSAmJiBt
X2hhbmRsZS0+Y2xpZW50KCkpIHsKQEAgLTIyMCw3ICsyMjAsNyBAQCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OgogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMgcHJv
dGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwgcmVm
KCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMr
KyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAgICBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAg
ICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpIHsK
QEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZwogewogICAgIC8vIEZJ
WE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2gg
aXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAi
dGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBv
dGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMp
OworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENGUmV0YWluKGNoYWxsZW5n
ZSk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAg
ICAgICAgaWYgKHByb3RlY3Rvci0+aGFzSGFuZGxlKCkpIHsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFNlbmRCb2R5RGF0YShDRgogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGlj
aXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3Vs
ZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1
ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNh
cHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNIYW5kbGUoKSB8fCAhbV9oYW5kbGUt
PmNsaWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc4LDcgKzI3OCw3IEBAIEJvb2xl
YW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6Y2FuUmVzcG9uZFRvUHJvCiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5
IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1
c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBh
bmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVy
aW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewogICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxlKCkpIHsKQEAgLTMwOCw3ICsz
MDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhQXJyYQogewogICAgIC8vIEZJWE1FOiBUaGUgYmxv
Y2sgaW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwu
IFdlIHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9p
bnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVu
dGlvbmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0
cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENGUmV0YWluKGRhdGFBcnJheSk7CiAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKHBy
b3RlY3Rvci0+aGFzSGFuZGxlKCkgJiYgbV9oYW5kbGUtPmNsaWVudCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmlu
ZGV4IGE0YWY2MWUwOTcwYTAzMmNkNTg2MDUyYzlmZDFiMzU1NTAyN2Q0MzMuLmM2Yzg3OTdiYmNh
MDJjOTU5YmQ1MzNlNjQ4ZWNlNGQ3MWY0YTQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC00MDMsOSArNDAz
LDkgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIpCiAKICAgICAgICAgaWYgKGh0dHBDb2RlID49IDIwMCAmJiBodHRwQ29kZSA8IDMwMCkg
ewogICAgICAgICAgICAgVVJMQ2FwdHVyZSBjYXB0dXJlZFVybChnZXRDdXJsRWZmZWN0aXZlVVJM
KG1fY3VybEhhbmRsZSkpOwotICAgICAgICAgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVj
dGVkRG93bmxvYWQodGhpcyk7CisgICAgICAgICAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBj
YXB0dXJlZFVybCwgcHJvdGVjdGVkRG93bmxvYWRdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICAg
ICAgbV9yZXNwb25zZS5zZXRVUkwoY2FwdHVyZWRVcmwudXJsKCkpOwogICAgICAgICAgICAgICAg
IG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7CiAg
ICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFR5cGUpKSk7CkBAIC00MTYsOSArNDE2LDkgQEAgdm9pZCBDdXJsRG93bmxvYWQ6
OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEhlYWRlcihoZWFkZXIpOwogCi0gICAgICAgIFJl
ZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZERvd25sb2FkKHRoaXMpOworICAgICAgICBSZWZQ
dHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkSGVhZGVyLCBwcm90ZWN0ZWREb3dubG9hZF0geworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYXB0dXJlZEhlYWRlciwgcHJvdGVjdGVkVGhp
c10gewogICAgICAgICAgICAgaW50IHNwbGl0UG9zID0gY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCku
ZmluZCgiOiIpOwogICAgICAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0xKQogICAgICAgICAgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGNhcHR1cmVkSGVhZGVyLnN0cmluZygp
LmxlZnQoc3BsaXRQb3MpLCBjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5zdWJzdHJpbmcoc3BsaXRQ
b3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKSk7CkBAIC00MzAsOSArNDMwLDkgQEAgdm9pZCBDdXJs
RG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKHZvaWQqIGRhdGEsIGludCBzaXplKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOwogCi0gICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJv
dGVjdGVkRG93bmxvYWQodGhpcyk7CisgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHNpemUsIHByb3RlY3Rl
ZERvd25sb2FkXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc2l6ZSwgcHJvdGVjdGVk
VGhpc10gewogICAgICAgICBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKHNpemUpOwogICAgIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCmluZGV4IDhhMjY4ODhlN2IyM2RjNDI0Yjk4YjUxZTc4MjI3YjllYjJm
MDE3MjUuLmJlNDM2ZGFkNjFmNGQwMjUwMjRkNjdhZjQ2N2Y0MGRkYWJiNzhkYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAg
ICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKICAgICAgICAgY2xpZW50KCktPndpbGxT
ZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAg
ICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgICAgIGNs
aWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
CiAKICAgICAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwg
ZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZVNvdXAuY3BwCmluZGV4IDljYzVkOGNlOTE4MjczYzBjMzY3NGE2OWNkZTQ4ZWVlMjlm
MDIyMzIuLjVmODNhZjRiYmZlZjkyOWUwZjJhZDU2NzM4ZjczNjdmN2Q1ZWJhMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZTo6cmVhZEJ5dGVzKHNpZ25lZCBsb25nIGJ5dGVzUmVhZCwgR0Vycm9yKiBlcnJv
cikKICAgICB9CiAKICAgICAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgaGFuZGxlLCBwb3Rl
bnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCi0gICAgUmVmUHRyPFNvY2tldFN0
cmVhbUhhbmRsZT4gcHJvdGVjdCh0aGlzKTsgCisgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRs
ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsgCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKHRoaXMsIG1fcmVhZEJ1ZmZlci5nZXQoKSwgYnl0ZXNSZWFkKTsKICAgICBpZiAo
bV9pbnB1dFN0cmVhbSkgLy8gVGhlIGNsaWVudCBtYXkgaGF2ZSBjbG9zZWQgdGhlIGNvbm5lY3Rp
b24uCiAgICAgICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMobV9pbnB1dFN0cmVhbS5nZXQo
KSwgbV9yZWFkQnVmZmVyLmdldCgpLCBSRUFEX0JVRkZFUl9TSVpFLCBHX1BSSU9SSVRZX0RFRkFV
TFQsIDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IDBkZjhmNWMwZDNmYjBhMzI4ZmMyNGVmOWFhZDZlMjUzOTYxMGQxMGEuLmViOGZiM2FlZjc5
OTZhMjg2YTliMDY3M2MxYzNlMGQ5NmMyZGUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBQb3B1cE1l
bnVXaW46OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgp
CiAgICAgbV9zaG93UG9wdXAgPSB0cnVlOwogCiAgICAgLy8gUHJvdGVjdCB0aGUgcG9wdXAgbWVu
dSBpbiBjYXNlIGl0cyBvd25lciBpcyBkZXN0cm95ZWQgd2hpbGUgd2UncmUgcnVubmluZyB0aGUg
bWVzc2FnZSBwdW1wLgotICAgIFJlZlB0cjxQb3B1cE1lbnU+IHByb3RlY3QodGhpcyk7CisgICAg
UmVmUHRyPFBvcHVwTWVudT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIDo6U2V0Q2FwdHVy
ZShob3N0V2luZG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCmluZGV4IGY3MzllMDIxODE4MTRlMDg5NzY0NzExODE0YmYxOGFiNWE0YTQ3ZjMu
Ljk1ZTA3Mzg0NTljMjlhMWEzZGYzYzIyMWU5ZDgzMTc1NDdmYmNkZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXQKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CiAKICAgICAv
LyBEdXJpbmcgY3JlYXRlLCBjYWxsYmFja3MgbWF5IGhhcHBlbiB3aGljaCByZW1vdmUgdGhlIGxh
c3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgotICAgIFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCAqcmVxdWVzdCwgb3B0aW9ucyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDZhYjMxNTk3YTU0NzRk
ZjE4ZWE5ZTg1ODI0YjVmZDA2YTZlZWNiNTkuLmMzZDQ1ODU0MzkyNzZjMWI2Mjg1NTExY2RkYzVm
M2NhZDU2M2FlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzYx
LDcgKzc2MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9u
Q29kZSYgZWMpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjphYm9ydCgpCiB7CiAgICAgLy8gaW50ZXJu
YWxBYm9ydCgpIGNhbGxzIGRyb3BQcm90ZWN0aW9uKCksIHdoaWNoIG1heSByZWxlYXNlIHRoZSBs
YXN0IHJlZmVyZW5jZS4KLSAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxYTUxIdHRwUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAo
IWludGVybmFsQWJvcnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlzcGF0Y2hFcnJvckV2ZW50cyhjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWFjaFRpbWVvdXQoKQogewogICAg
IC8vIGludGVybmFsQWJvcnQoKSBjYWxscyBkcm9wUHJvdGVjdGlvbigpLCB3aGljaCBtYXkgcmVs
ZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UuCi0gICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
ICAgIGlmICghaW50ZXJuYWxBYm9ydCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggM2ZkN2RiYmVl
OTcxYWIyMTM3ZTQ5ZGNjMzdjMTdmOTA1ZDZkZjgxNC4uMDk2MWM0ZDhhNWYwOTA0YjdkNTQyZjJi
MjFmMGRmMmViOGQ0YWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFy
c2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCiAgICAg
QVNTRVJUKHNjcmlwdEVsZW1lbnQpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBjYW4gZGV0YWNoIHRo
aXMgcGFyc2VyLCBtYWtlIHN1cmUgaXQncyBrZXB0IGFsaXZlIGV2ZW4gaWYgZGV0YWNoZWQuCi0g
ICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8WE1MRG9j
dW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIAogICAgIGlmIChlcnJvck9j
Y3VycmVkKQogICAgICAgICBzY3JpcHRFbGVtZW50LT5kaXNwYXRjaEVycm9yRXZlbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAppbmRleCA2ZWViMTFkNWU5ODI3NDYwNGZmOWYzZjBmY2ZlMGQ3NWE0NDRiZTkwLi43
YzdkOWExYTc1ZjBlMjVkNTg4YmJiMjI2MjQ1YThiOGUzYmZjZWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBA
IC02ODAsNyArNjgwLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9Xcml0ZShjb25zdCBT
dHJpbmcmIHBhcnNlU3RyaW5nKQogICAgIGlmIChwYXJzZVN0cmluZy5sZW5ndGgoKSkgewogICAg
ICAgICAvLyBKYXZhU2NyaXB0IG1heSBjYXVzZSB0aGUgcGFyc2VyIHRvIGRldGFjaCBkdXJpbmcg
eG1sUGFyc2VDaHVuawogICAgICAgICAvLyBrZWVwIHRoaXMgYWxpdmUgdW50aWwgdGhpcyBmdW5j
dGlvbiBpcyBkb25lLgotICAgICAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRo
aXMpOworICAgICAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGUgc2NvcGUoJmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCkpOwogCkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKIAogICAgIC8vIEphdmFTY3JpcHQgY2FuIGRldGFj
aCB0aGUgcGFyc2VyLiAgTWFrZSBzdXJlIHRoaXMgaXMgbm90IHJlbGVhc2VkCiAgICAgLy8gYmVm
b3JlIHRoZSBlbmQgb2YgdGhpcyBtZXRob2QuCi0gICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgaWYgKCF1cGRhdGVMZWFmVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJu
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278852</attachid>
            <date>2016-05-13 11:04:13 -0700</date>
            <delta_ts>2016-05-13 11:24:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157610-20160513110504.patch</filename>
            <type>text/plain</type>
            <size>169948</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EyOThmZGU1NDNjNGM1
NzFiNWY1NmMxNjI0NjI4NGRjOTJmNTYwNS4uZWYwMjUxNDEwNGZkMmYwZWViYjdkODU4MWZkZTBi
YjBiMjg3MzU3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNyBAQAogMjAxNi0wNS0xMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVuYW1lIGFsbCBwcm90
ZWN0b3IgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBgcHJvdGVjdGVkVGhpc2AKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzYxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoUmVuYW1pbmcsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisgICAgICAgIAorICAgICAgICBXZWJD
b3JlIGhhcyBzbyBtYW55IGluc3RhbmNlcyBvZiB0aGVzZSBwcm90ZWN0b3JzIGFzIHdlbGwgYXMg
c28gbXVjaCB2YXJpYW5jZSBpbiBuYW1pbmcgdGhlbSwKKyAgICAgICAgdGhhdCBJIHRoaW5rIGl0
IGRlc2VydmVkIGEgbmV3IHN0eWxlIHBhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZp
ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAgICogY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250ZW50cy5j
cHA6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGRvbS9Db250
YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAqIGRv
bS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiBkb20vU2NyaXB0ZWRBbmlt
YXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2suY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxlbWVudC5j
cHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1s
L0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGl0bGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwOgor
ICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwOgorICAg
ICAgICAqIGxvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDoKKyAgICAgICAgKiBsb2Fk
ZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNw
cDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAgICogcGFn
ZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2Uu
Y3BwOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHA6
CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhP
cGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhh
bmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwOgor
ICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJz
ZXIuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNw
cDoKKworMjAxNi0wNS0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKICAg
ICAgICAgR2l2ZSBDcm9zc1RocmVhZENvcGllciBhIGRlZmF1bHQgc3BlY2lhbGl6YXRpb24gZm9y
IFZlY3RvcnMgb2Ygb2JqZWN0cy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE1NzY3NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaFJlc3BvbnNlLmNwcAppbmRleCA3YzliOWU2MDhhNWE4Y2I4YjcwNzZkZTZjOTg1ZDU2ZDRj
ZTE5YTg2Li42ZjM4OTAyZGE5M2I0N2UxOTY4Njc5NDM5ODQxZDRlYWMyYzE1YWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAgLTI5MSw3
ICsyOTEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5TG9hZGVy
OjpzdGFydFN0cmVhbWluZygpCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RvcCgpCiB7Ci0gICAg
UmVmUHRyPEZldGNoUmVzcG9uc2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEZldGNoUmVz
cG9uc2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRmV0Y2hCb2R5T3duZXI6OnN0b3AoKTsK
ICAgICBpZiAobV9ib2R5TG9hZGVyKSB7CiAgICAgICAgIG1fYm9keUxvYWRlci0+c3RvcCgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9Ob3RpZmll
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNw
cAppbmRleCAxMzE2ZDI3NDEzYjg4MTA4NWFlYTc1MWMzMzJmYTk5MjRkZGEyMWRlLi5jZWM5N2Nj
OTAyZTQ1MDY4OTdmZWZiZDNlYWUyZjk3OTA3YWFjYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcApAQCAtMTA2LDcgKzEwNiw3
IEBAIHZvaWQgR2VvTm90aWZpZXI6OnRpbWVyRmlyZWQoKQogCiAgICAgLy8gUHJvdGVjdCB0aGlz
IEdlb05vdGlmaWVyIG9iamVjdCwgc2luY2UgaXQKICAgICAvLyBjb3VsZCBiZSBkZWxldGVkIGJ5
IGEgY2FsbCB0byBjbGVhcldhdGNoIGluIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb05vdGlmaWVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8R2VvTm90aWZpZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgLy8gVGVzdCBmb3IgZmF0YWwgZXJyb3IgZmlyc3QuIFRoaXMgaXMgcmVxdWly
ZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBGcmFtZSBpcwogICAgIC8vIGRpc2Nvbm5lY3RlZCBh
bmQgcmVxdWVzdHMgYXJlIGNhbmNlbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggNzYzZDYwNTkxYjFiZmQwZjE3YjQw
ZGZmOGYzMzc0MzI1MjFkYzJmZC4uM2VjNDMxNDM2ZGIyYTVhMTExNGQ2ODFkMWU1M2VmNDU4ODIx
MjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9s
b2NhdGlvbi5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldh
dGNoKGludCB3YXRjaElEKQogdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJvb2wgYWxs
b3dlZCkKIHsKICAgICAvLyBQcm90ZWN0IHRoZSBHZW9sb2NhdGlvbiBvYmplY3QgZnJvbSBnYXJi
YWdlIGNvbGxlY3Rpb24gZHVyaW5nIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb2xvY2F0aW9uPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8R2VvbG9jYXRpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgLy8gVGhpcyBtYXkgYmUgZHVlIHRvIGVpdGhlciBhIG5ldyBwb3NpdGlvbiBmcm9t
IHRoZSBzZXJ2aWNlLCBvciBhIGNhY2hlZAogICAgIC8vIHBvc2l0aW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmluZGV4IDEy
OWY0YzZmYzUzZmVjMWUyNGY0M2M3Y2U5MGIzYTZmODA5ZTdlNTEuLjExMmI3NjRkZjEyMWNkOTgy
M2NjY2ExZmRkMzcyZTI1MmY0MWJhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTk0NywxOSArOTQ3LDE5IEBAIHZv
aWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFuc2FjdGlv
bk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBSZWZQdHI8SURCQ2xpZW50
OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gb3BlcmF0aW9uUmVmKCZvcGVyYXRpb24pOwotICAgIHZh
bHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJh
dGlvblJlZiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZh
bHVlKSB7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRPcGVy
YXRpb24oJm9wZXJhdGlvbik7CisgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJbmRleGVk
REIoW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiwga2V5LCB2YWx1ZSwg
b3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSB7CiAgICAgICAgIGlmIChp
ZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7Ci0gICAgICAgICAgICBtX2RhdGFiYXNlLT5jb25uZWN0
aW9uUHJveHkoKS5wdXRPckFkZCgqb3BlcmF0aW9uUmVmLCBrZXkuZ2V0KCksIGlkYlZhbHVlLCBv
dmVyd3JpdGVNb2RlKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Qcm94eSgp
LnB1dE9yQWRkKCpwcm90ZWN0ZWRPcGVyYXRpb24sIGtleS5nZXQoKSwgaWRiVmFsdWUsIG92ZXJ3
cml0ZU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgLy8g
SWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhpbmcgd2Vu
dCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0aGF0IGNh
c2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdlIGNhbGxi
YWNrIHdpdGggYW4gZXJyb3IuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6
ZXJyb3Iob3BlcmF0aW9uUmVmLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246
OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRh
dGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlvblJlZiwgcmVzdWx0XSgpIHsKLSAgICAg
ICAgICAgIG9wZXJhdGlvblJlZi0+Y29tcGxldGVkKHJlc3VsdCk7CisgICAgICAgIGF1dG8gcmVz
dWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVudGlmaWVy
KCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJF
cnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9y
ZSIpIH0pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBw
cm90ZWN0ZWRPcGVyYXRpb24sIHJlc3VsdF0oKSB7CisgICAgICAgICAgICBwcm90ZWN0ZWRPcGVy
YXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFuc2FjdGlv
bk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXggOTBjYjY0ODZkM2M3NDUyOGM5YmViNWQ3MTZhOTc1
ODA5YmM0YmM1MC4uNjZiZTJhNjBjODMyZDk5MjM2MmQyOTcwMTFiNDNhNjZlNWY5NmI0OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1RyYW5zYWN0
aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKQEAgLTExNCwxNSArMTE0LDE1IEBAIHB1YmxpYzoK
ICAgICBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwoSURCVHJhbnNhY3Rpb24mIHRyYW5zYWN0aW9u
LCB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlTWV0aG9kKShjb25zdCBJREJSZXN1bHRE
YXRhJiksIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNhY3Rpb25P
cGVyYXRpb24mLCBBcmd1bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMpCiAgICAg
ICAgIDogVHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb24pCiAgICAgewotICAgICAgICBS
ZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHNlbGYodGhpcyk7CisgICAgICAgIFJlZlB0cjxU
cmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgICAgICBBU1NF
UlQocGVyZm9ybU1ldGhvZCk7Ci0gICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0gW3NlbGYsIHRo
aXMsIHBlcmZvcm1NZXRob2QsIGFyZ3VtZW50cy4uLl0geworICAgICAgICBtX3BlcmZvcm1GdW5j
dGlvbiA9IFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBwZXJmb3JtTWV0aG9kLCBhcmd1bWVudHMuLi5d
IHsKICAgICAgICAgICAgICgmbV90cmFuc2FjdGlvbi5nZXQoKS0+KnBlcmZvcm1NZXRob2QpKCp0
aGlzLCBhcmd1bWVudHMuLi4pOwogICAgICAgICB9OwogCiAgICAgICAgIGlmIChjb21wbGV0ZU1l
dGhvZCkgewotICAgICAgICAgICAgbV9jb21wbGV0ZUZ1bmN0aW9uID0gW3NlbGYsIHRoaXMsIGNv
bXBsZXRlTWV0aG9kXShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKSB7CisgICAgICAg
ICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcywgdGhpcywgY29tcGxldGVN
ZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpIHsKICAgICAgICAgICAgICAg
ICBpZiAoY29tcGxldGVNZXRob2QpCiAgICAgICAgICAgICAgICAgICAgICgmbV90cmFuc2FjdGlv
bi5nZXQoKS0+KmNvbXBsZXRlTWV0aG9kKShyZXN1bHREYXRhKTsKICAgICAgICAgICAgIH07CkBA
IC0xMzIsMTYgKzEzMiwxNiBAQCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRpb25JbXBs
KElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWVzdCYgcmVxdWVzdCwgdm9pZCAo
SURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZU1ldGhvZCkoSURCUmVxdWVzdCYsIGNvbnN0IElEQlJl
c3VsdERhdGEmKSwgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtTWV0aG9kKShUcmFuc2Fj
dGlvbk9wZXJhdGlvbiYsIEFyZ3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3VtZW50cykK
ICAgICAgICAgOiBUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVzdCkKICAg
ICB7Ci0gICAgICAgIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gc2VsZih0aGlzKTsKKyAg
ICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
CiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKLSAgICAgICAgbV9wZXJmb3JtRnVuY3Rp
b24gPSBbc2VsZiwgdGhpcywgcGVyZm9ybU1ldGhvZCwgYXJndW1lbnRzLi4uXSB7CisgICAgICAg
IG1fcGVyZm9ybUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHBlcmZvcm1NZXRob2Qs
IGFyZ3VtZW50cy4uLl0gewogICAgICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qcGVy
Zm9ybU1ldGhvZCkoKnRoaXMsIGFyZ3VtZW50cy4uLik7CiAgICAgICAgIH07CiAKICAgICAgICAg
aWYgKGNvbXBsZXRlTWV0aG9kKSB7CiAgICAgICAgICAgICBSZWZQdHI8SURCUmVxdWVzdD4gcmVm
UmVxdWVzdCgmcmVxdWVzdCk7Ci0gICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbc2Vs
ZiwgdGhpcywgcmVmUmVxdWVzdCwgY29tcGxldGVNZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEm
IHJlc3VsdERhdGEpIHsKKyAgICAgICAgICAgIG1fY29tcGxldGVGdW5jdGlvbiA9IFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCByZWZSZXF1ZXN0LCBjb21wbGV0ZU1ldGhvZF0oY29uc3QgSURCUmVzdWx0
RGF0YSYgcmVzdWx0RGF0YSkgewogICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZU1ldGhvZCkK
ICAgICAgICAgICAgICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qY29tcGxldGVNZXRo
b2QpKCpyZWZSZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgICAgIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlE
QkRhdGFiYXNlLmNwcAppbmRleCA1YjJhZGNjYmQ1ZTE5NzAyNGIyMjNkOWY0M2RjNjRmZTcyNDJj
OGE2Li44Zjg2M2RiMmJmYzYxZDczMzlmZjk3YjkzNGUxNDljODEyZWFmYTdlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9Vbmlx
dWVJREJEYXRhYmFzZS5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFi
YXNlOjpoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCkKIAogICAgIEFTU0VSVChtX2N1cnJlbnRPcGVu
REJSZXF1ZXN0KTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRo
aXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
IAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1ZXN0KCkpCiAgICAg
ICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAg
dm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1lckZpcmVk
KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNlOjpvcGVy
YXRpb25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQiKTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIC8vIFRoaXMgVW5pcXVlSURCRGF0YWJhc2UgbWln
aHQgYmUgbm8gbG9uZ2VyIGluIHVzZSBieSBhbnkgd2ViIHBhZ2UuCiAgICAgLy8gQXNzdW1pbmcg
aXQgaXMgbm90IGVwaGVtZXJhbCwgdGhlIHNlcnZlciBzaG91bGQgbm93IGNsb3NlIGl0IHRvIGZy
ZWUgdXAgcmVzb3VyY2VzLgpAQCAtMTI2MSwxMCArMTI2MSwxMCBAQCB2b2lkIFVuaXF1ZUlEQkRh
dGFiYXNlOjphY3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoVW5pcXVlSURCRGF0YWJh
c2VUcmFucwogewogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0YWJhc2U6
OmFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tpbmdTdG9yZSIpOwogCi0gICAgUmVmUHRyPFVuaXF1
ZUlEQkRhdGFiYXNlPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbj4gcmVmVHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKTsKIAotICAgIGF1dG8gY2FsbGJhY2sg
PSBbdGhpcywgc2VsZiwgcmVmVHJhbnNhY3Rpb25dKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVmVHJhbnNhY3Rpb25d
KGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAgICByZWZUcmFuc2FjdGlvbi0+ZGlkQWN0
aXZhdGVJbkJhY2tpbmdTdG9yZShlcnJvcik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNlQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVl
SURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAppbmRleCBlZDZlOTMzNzlmOWU3NTZhMDcwODEzZDFl
MDA3ZWFmYWM5NDc4ZTdhLi42MmUwZmE1NDhjYzFmMGNhYmQ1MTU4ZTk3OTQ0YzRiYzdjMWJhMzJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5p
cXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcApAQCAtNzMs
OSArNzMsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6YWJvcnRUcmFuc2Fj
dGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYgogICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uTWFwLmNvbnRhaW5zKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsKIAogICAg
IGNvbnN0IGF1dG8mIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmluZm8oKS5p
ZGVudGlmaWVyKCk7Ci0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbj4gcHJv
dGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rpb24+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2RhdGFiYXNlLmFib3J0VHJhbnNhY3Rpb24odHJh
bnNhY3Rpb24sIFt0aGlzLCBwcm90ZWN0b3IsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0oY29uc3Qg
SURCRXJyb3ImKSB7CisgICAgbV9kYXRhYmFzZS5hYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9u
LCBbdGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyXShjb25zdCBJREJF
cnJvciYpIHsKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25NYXAuY29udGFpbnModHJhbnNh
Y3Rpb25JZGVudGlmaWVyKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25NYXAucmVtb3ZlKHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggZDk1NWFlNjAyMTg2ZTAxYWQ1NDhjNjI4OGQ4MDBjZjVj
ODQ4YWI1MC4uOTAyNGUzNjMxMzI4YjkwMGE2YTUwZjZhYjVmYjIxZDE4MWQxYTU1MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhl
ZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNjgsOCArNjgs
OCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmFib3J0KCkKIHsKICAgICBM
T0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6YWJvcnQiKTsKIAot
ICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMpOwotICAg
IG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmFib3J0VHJhbnNhY3Rpb24oKnRoaXMs
IFt0aGlzLCBzZWxmXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywg
cHJvdGVjdGVkVGhpc10oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRl
eGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjphYm9ydCAoY2FsbGJhY2spIik7
CiAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRBYm9ydFRyYW5zYWN0aW9uKCp0aGlz
LCBlcnJvcik7CiAgICAgfSk7CkBAIC05Niw4ICs5Niw4IEBAIHZvaWQgVW5pcXVlSURCRGF0YWJh
c2VUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+
ZGF0YWJhc2UoKS5jb21taXRUcmFuc2FjdGlvbigqdGhpcywgW3RoaXMsIHNlbGZdKGNvbnN0IElE
QkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFz
ZSgpLmNvbW1pdFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3Qg
SURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpjb21taXQgKGNhbGxiYWNrKSIpOwogICAgICAgICBtX2RhdGFiYXNl
Q29ubmVjdGlvbi0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24oKnRoaXMsIGVycm9yKTsKICAgICB9KTsK
QEAgLTExMCw4ICsxMTAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNy
ZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZQogICAgIEFTU0VSVChp
c1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZp
ZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQ
dHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RTdG9yZSgqdGhpcywgaW5mbywg
W3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RTdG9yZSgq
dGhpcywgaW5mbywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlIChjYWxsYmFjaykiKTsKICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENy
ZWF0ZU9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmNyZWF0ZU9iamVjdFN0b3JlU3VjY2Vzcyhy
ZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xMjcsOCArMTI3LDggQEAgdm9p
ZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShjb25zdCBJ
REJSZXF1ZXN0RGF0YSYgcmVxdWUKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAg
IEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJh
bnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNl
KCkuZGVsZXRlT2JqZWN0U3RvcmUoKnRoaXMsIG9iamVjdFN0b3JlTmFtZSwgW3RoaXMsIHNlbGYs
IHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2RhdGFi
YXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5kZWxldGVPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0
U3RvcmVOYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVy
cm9yJiBlcnJvcikgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUgKGNhbGxiYWNrKSIpOwogICAgICAgICBpZiAo
ZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGlkRGVs
ZXRlT2JqZWN0U3RvcmUoSURCUmVzdWx0RGF0YTo6ZGVsZXRlT2JqZWN0U3RvcmVTdWNjZXNzKHJl
cXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKQEAgLTE0Myw4ICsxNDMsOCBAQCB2b2lk
IFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlcwogCiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50
aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jbGVhck9iamVjdFN0b3JlKCp0aGlzLCBvYmpl
Y3RTdG9yZUlkZW50aWZpZXIsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJy
b3ImIGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHBy
b3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCku
Y2xlYXJPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xlYXJPYmpl
Y3RTdG9yZSAoY2FsbGJhY2spIik7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkKICAgICAg
ICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRDbGVhck9iamVjdFN0b3JlKElEQlJlc3Vs
dERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlm
aWVyKCkpKTsKQEAgLTE2MCw4ICsxNjAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YQogICAg
IEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZv
LmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAK
LSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAg
ICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhpcywgaW5m
bywgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAg
ICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhp
cywgaW5mbywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJv
ciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJh
bnNhY3Rpb246OmNyZWF0ZUluZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9yLmlz
TnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENyZWF0ZUluZGV4
KElEQlJlc3VsdERhdGE6OmNyZWF0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRl
bnRpZmllcigpKSk7CkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRy
YW5zYWN0aW9uOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEK
ICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9u
SW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkp
OwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7
Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZGVsZXRlSW5kZXgoKnRoaXMs
IG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBbdGhpcywgc2VsZiwgcmVxdWVzdERh
dGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0
aW9uLT5kYXRhYmFzZSgpLmRlbGV0ZUluZGV4KCp0aGlzLCBvYmplY3RTdG9yZUlkZW50aWZpZXIs
IGluZGV4TmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZERlbGV0ZUlu
ZGV4KElEQlJlc3VsdERhdGE6OmRlbGV0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0
SWRlbnRpZmllcigpKSk7CkBAIC0xOTQsOCArMTk0LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEs
IGMKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25J
bmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7
CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsK
LSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1ZXN0RGF0
YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0
YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsKKyAgICBS
ZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1ZXN0RGF0
YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkp
IHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246
OnB1dE9yQWRkIChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBA
IC0yMTEsOCArMjExLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogCiAgICAgQVNTRVJUKG1f
dHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklk
ZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4g
c2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5nZXRSZWNv
cmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShj
b25zdCBJREJFcnJvciYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7CisgICAg
UmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0UmVjb3JkKHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGEsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0YV0oY29u
c3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgewogICAgICAg
ICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0UmVjb3Jk
IChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBAIC0yMjgsOCAr
MjI4LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudChjb25z
dCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKIAogICAgIEFTU0VSVChtX3RyYW5zYWN0
aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlmaWVy
KCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYodGhp
cyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVz
dERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJF
cnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5l
Y3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IsIHVp
bnQ2NF90IGNvdW50KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFz
ZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CiAKICAgICAgICAgaWYgKGVycm9y
LmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIv
c2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA5M2FjNmQ2ZDdkMjlk
YTRjNjcwZGZhZGJjNGQ2MThhYzBmMTU4OGU4Li5lZGE4NzgzMjI4MWRhNzIzMzBkNTVjNjQ1YTll
YjIwNzM0ZDRlMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRk
Yi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtOTEsMzM0ICs5
MSwzMzQgQEAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vzc0lEQlNl
cnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3QKIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2
ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsK
ICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNvbnN0IElE
QlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNl
bGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+
ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9j
ZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3RE
YXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0
RGF0YV0gewogICAgICAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFzZShjb25z
dCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVu
dGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsK
LSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6
OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRv
U2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3Ip
OwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0VHJhbnNh
Y3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2Vs
ZiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9y
XSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDb21taXRUcmFuc2FjdGlvbih0
cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nl
c3NJREJTZXJ2ZXI6OmRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFd
IHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVz
dWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRlT2JqZWN0
U3RvcmUocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQog
ewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9v
cDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsK
ICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZU9iamVjdFN0b3JlKHJlc3Vs
dERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ2xlYXJP
YmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleChjb25zdCBJ
REJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2
ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBz
ZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXIt
PmRpZENyZWF0ZUluZGV4KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0RGF0
YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0geworICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHREYXRh
XSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChyZXN1bHRE
YXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1dE9yQWRk
KGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChb
dGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25U
b1NlcnZlci0+ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVzdWx0
RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0gewor
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1bHRE
YXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQocmVzdWx0
RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRDb3Vu
dChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZEdldENvdW50KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJl
c3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsK
LSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFd
IHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVz
dWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRlUmVjb3Jk
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
T3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9j
b25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9
CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0IElEQlJl
c3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
c2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYs
IHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVj
dGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlk
SXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiBy
ZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2Vs
Zih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJl
c291cmNlSWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmFi
b3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291cmNlSWRl
bnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2Vy
dmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAgICAgIG1f
c2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJzaW9uQ2hh
bmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgY29u
c3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAg
UmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHRyYW5zYWN0aW9uSWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0cmFuc2Fj
dGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRsaW5nVmVy
c2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIsIHRyYW5z
YWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVy
OjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0YSwgY29u
c3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCByZXN1bHREYXRhLCBpbmZvXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGEsIGluZm9dIHsKICAgICAgICAgbV9zZXJ2
ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlTmFt
ZV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVP
YmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURCUmVxdWVz
dERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIpCiB7Ci0g
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBvYmplY3RTdG9yZUlk
ZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewogICAgICAgICBtX3Nl
cnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVy
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUluZGV4KGNv
bnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZvJiBpbmZv
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgaW5mb10g
eworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1
ZXN0RGF0YSwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVxdWVzdERh
dGEsIGluZm8pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRl
SW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RT
dG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBp
bmRleE5hbWVdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lXSB7CiAg
ICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJL
ZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4ZWREQjo6
T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7Ci0gICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRl
TW9kZV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKICAgICAgICAg
bV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3ZlcndyaXRl
TW9kZSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRSZWNvcmQo
Y29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEm
IGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRo
aXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAg
bV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJlcXVlc3RE
YXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURhdGEpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURh
dGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywg
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0gewogICAgICAgICBtX3NlcnZlci0+Z2V0Q291bnQo
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNz
SURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2
ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBr
ZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1ZXN0RGF0
YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6
Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJD
dXJzb3JJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYo
dGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVz
dERhdGEsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBpbmZvXSB7CiAgICAgICAgIG1fc2VydmVyLT5vcGVu
Q3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRh
LCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0geworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERh
dGEsIGtleSwgY291bnRdIHsKICAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3IocmVxdWVz
dERhdGEsIGtleSwgY291bnQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
ZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRj
aChbdGhpcywgc2VsZiwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10geworICAg
IFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJh
c2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+ZXN0YWJs
aXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5nZUV2ZW50
KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBjb25z
dCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRfdCByZXF1
ZXN0ZWRWZXJzaW9uKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhp
cyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVjdGlvbi5p
ZGVudGlmaWVyKCk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxm
LCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwgcmVxdWVz
dGVkVmVyc2lvbl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElkZW50aWZp
ZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmZp
cmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVz
dElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJjZUlkZW50
aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9yKQogewot
ICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6
Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVy
cm9yXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMs
IHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcik7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVuREJSZXF1
ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVy
LCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgp
LmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3
VmVyc2lvbl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0gewogICAgICAg
ICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQocmVxdWVz
dElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2NF90IGRh
dGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRp
Zmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKGRhdGFi
YXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFzZUNvbm5l
Y3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5zYWN0aW9u
SWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMp
OwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgZGF0YWJhc2VD
b25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAgUmVmUHRy
PEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29ubmVjdGlv
bklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+
YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNl
cnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlm
aWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rp
b25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVy
LCByZXF1ZXN0SWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZlcnNpb25D
aGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmll
cik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJSZXF1ZXN0
Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKICAgICAgICAg
bV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RvciwgbWFpbkZyYW1lT3JpZ2luLCBvcGVuaW5nT3Jp
Z2luLCBjYWxsYmFja0lEXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVj
dGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHBy
b3RlY3RlZFRoaXMsIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJhY2tJRF0g
ewogICAgICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+aWRlbnRpZmllcigpLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4sIGNhbGxi
YWNrSUQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkR2V0QWxs
RGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYg
ZGF0YWJhc2VOYW1lcykKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
b3IodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
b3IsIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1lc10gewog
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1lcyhjYWxs
YmFja0lELCBkYXRhYmFzZU5hbWVzKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmluZGV4IDlj
ZTQxOTg0YjgxZDAzZWNmNmZkZTllMGViNjFhNjFlZWJiNTA3NzMuLmUyNTJhNTVlYTU4MzQ1NjIw
ZGVlNGI3MjY4OTQ3YTk2N2NhNGY5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMjA5LDcgKzIwOSw3
IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRoUGVybWlz
c2lvbkVycm9yKCkKIAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb250ZXh0RGVzdHJveWVkKCkK
IHsKLSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFVz
ZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1fY29udHJv
bGxlcikgewogICAgICAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFVzZXJNZWRpYUFjY2Vzc1JlcXVl
c3QoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA2MTJlY2Q0YTkxNmRiM2VjMjJk
NTdiMzlhN2FjY2QzYzAyZjRlYjQyLi5kYjYxYWJmZGM1ZDRkNWJlNDZjYmFhMDk0NmUxNjY4NWE4
ZWM5NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMv
Tm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQg
Tm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKCkKICAgICAvLyBDbGVhciBtX2NsaWVudCBpbW1lZGlh
dGVseSB0byBndWFyYW50ZWUgcmVlbnRyYW50IGNhbGxzIHRvIE5vdGlmaWNhdGlvbkNlbnRlciBk
byBub3RoaW5nLgogICAgIC8vIEFsc28gcHJvdGVjdCB8dGhpc3wgc28gaXQncyBub3QgaW5kaXJl
Y3RseSBkZXN0cm95ZWQgdW5kZXIgdXMgYnkgd29yayBkb25lIGJ5IHRoZSBjbGllbnQuCiAgICAg
YXV0byYgY2xpZW50ID0gKnN0ZDo6ZXhjaGFuZ2UobV9jbGllbnQsIG51bGxwdHIpOwotICAgIFJl
ZjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3RlY3RvcigqdGhpcyk7CisgICAgUmVmPE5vdGlmaWNh
dGlvbkNlbnRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW1fY2FsbGJhY2tz
LmlzRW1wdHkoKSkKICAgICAgICAgZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgdGhlIHJlZiBpbiBO
b3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDNjOGRmMmI0YWUzNThl
ZjJlN2VkMTU3ODFhODMzMzQ2MTEyMWEzNWUuLjlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5MzgwNGVj
MWYwMTk2NTRiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1
ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw5ICs3OTcsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c2No
ZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxlZCA9IHRy
dWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhpc10gewotICAgICAgICAgICAgc3Ryb25n
VGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJvdGVjdGVk
VGhpc10geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsK
ICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgQXVkaW9Db250
ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAog
ICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBkZWxldGVkIGJlZm9yZSB3ZSBy
ZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xvY2tlci4KLSAgICBSZWY8QXVkaW9Db250
ZXh0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKICAgICB7CiAgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsKIApAQCAt
MTAwMiwxMCArMTAwMiwxMCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVkaW9EaWRD
aGFuZ2UoKQogewogICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRhdGVJc1Bs
YXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKICAgICAvLyB3ZSBjb3VsZCBi
ZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdlYkNvcmUg
Y291bGQgYmxvY2suCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsK
LSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIGlmIChzdHJvbmdU
aGlzLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgc3Ryb25nVGhpcy0+ZG9jdW1lbnQoKS0+dXBk
YXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAg
ICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRU
aGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwogfQogCkBA
IC0xMDYzLDkgKzEwNjMsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZChQcm9taXNlJiYg
cHJvbWlzZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtz
dHJvbmdUaGlzXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpTdXNwZW5k
ZWQpOworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
bV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CiAKQEAg
LTEwOTMsOSArMTA5Myw5IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpyZXN1bWUoUHJvbWlzZSYmIHBy
b21pc2UpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1lKFtzdHJv
bmdUaGlzXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5uaW5nKTsK
KyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVz
dGluYXRpb25Ob2RlLT5yZXN1bWUoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVk
VGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCkBAIC0xMTE1LDEw
ICsxMTE1LDEwIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbG9zZShQcm9taXNlJiYgcHJvbWlzZSkK
IAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBzdHJv
bmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbc3Ryb25nVGhpc10g
ewotICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKLSAgICAgICAg
c3Ryb25nVGhpcy0+dW5pbml0aWFsaXplKCk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3Byb3RlY3Rl
ZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNsb3NlZCk7
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnVuaW5pdGlhbGl6ZSgpOwogICAgIH0pOwogfQogCkBA
IC0xMTM2LDEwICsxMTM2LDEwIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxheWJhY2so
KQogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHN0
cm9uZ1RoaXModGhpcyk7Ci0gICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3N0cm9uZ1Ro
aXNdIHsKLSAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0cm9uZ1RoaXMtPm1fbWVkaWFTZXNz
aW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsKLSAgICAg
ICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJydXB0ZWQg
OiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtwcm90ZWN0ZWRUaGlz
XSB7CisgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBwcm90ZWN0ZWRUaGlzLT5tX21lZGlhU2Vz
c2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7CisgICAg
ICAgIHByb3RlY3RlZFRoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6OkludGVycnVw
dGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTExNTgsOSArMTE1OCw5
IEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3VsZFJlc3Vt
ZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBz
dHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0cm9uZ1Ro
aXNdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOworICAg
IFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kZXN0aW5h
dGlvbk5vZGUtPnJlc3VtZShbcHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0ZWRUaGlz
LT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggYTM2YWM3ODI4Y2Jh
MWQ3NGU3MDY0NWU0ZmJmYjFjNWUyMTgzNThiNy4uZGEzOGUxY2ZmODkxNjA1MDA5YWY3NTVjNDcy
ZGQwZTQ0N2FmMTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRh
YmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFz
ZS9EYXRhYmFzZS5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIERhdGFiYXNlOjpwZXJmb3Jt
Q2xvc2UoKQogICAgIC8vIHRvIGl0IHdpdGggYSBsb2NhbCBwb2ludGVyIGhlcmUgZm9yIGEgbGlp
dGxlIGxvbmdlciwgc28gdGhhdCB3ZSBjYW4KICAgICAvLyB1bnNjaGVkdWxlIGFueSBEYXRhYmFz
ZVRhc2tzIHRoYXQgcmVmZXIgdG8gaXQgYmVmb3JlIHRoZSBkYXRhYmFzZSBnZXRzCiAgICAgLy8g
ZGVsZXRlZC4KLSAgICBSZWY8RGF0YWJhc2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEYXRh
YmFzZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgZGF0YWJhc2VDb250ZXh0KCktPmRhdGFi
YXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFiYXNlQ29u
dGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0aGlzKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2Nr
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAK
aW5kZXggOWRhZWE1MjVlY2FmZjcxZjUxODk4Y2Y1YjQ2ZmM2NjA0ZGFkMDZkOC4uYTcwNzBkYzBm
NGU2YWI2ZWEzODY5YWRlMzQzMzNhNzEwMDAyMGMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTUwOSw3ICs1MDksNyBAQCB2b2lk
IFdlYlNvY2tldDo6cmVzdW1lKCkKIAogdm9pZCBXZWJTb2NrZXQ6OnJlc3VtZVRpbWVyRmlyZWQo
KQogewotICAgIFJlZjxXZWJTb2NrZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXZWJTb2Nr
ZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdFdmVudHMu
aXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2Nr
ZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE1ZTI3YTA5NmYzYmIzNzVhNDI1NTYxZWU5
NjU2YzRjODcwYTZjZTAuLjk1MDY0MTc3NDY5YzU1YjZjODQ4OWFjYzEwMmYwYjIwYTE1OWM3ZWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRD
aGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0Q2hhbm5lbC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYlNvY2tldENoYW5uZWw6
OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3Vz
cGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmPFdl
YlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNlbmQgY2xv
c2luZyBoYW5kc2hha2UgbWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVsIGNsb3Nl
ZCBhbmQgZGVyZWZlcmVuY2VkLgorICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtlIG1heSBm
YWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4K
ICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoY29kZSwgcmVhc29uKTsKICAgICBpZiAobV9jbG9z
aW5nICYmICFtX2Nsb3NpbmdUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Nsb3NpbmdUaW1l
ci5zdGFydE9uZVNob3QoMiAqIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUpOwpAQCAtMjE0LDcg
KzIxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNv
bikKIAogICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcyB3ZSBt
dXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcgZGF0YQogICAgIC8vIG9uY2UgdGhl
IFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGZhaWxlZCAoc2VjdGlvbiA3LjEuNykuCi0gICAgUmVm
PFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBjbG9z
ZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlLgor
ICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gVGhlIGNs
aWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0
IHJlZmVyZW5jZS4KICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVlOwogICAg
IGlmICghbV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBza2lwQnVmZmVyKG1fYnVmZmVyLnNp
emUoKSk7IC8vIFNhdmUgbWVtb3J5LgpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgV2ViU29ja2V0
Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBoYW5kbGUp
CiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKFNvY2tl
dFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQogewogICAg
IExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0U3RyZWFt
RGF0YSgpIFJlY2VpdmVkICVkIGJ5dGVzIiwgdGhpcywgbGVuKTsKLSAgICBSZWY8V2ViU29ja2V0
Q2hhbm5lbD4gcHJvdGVjdCgqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFu
bmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAgUmVmPFdl
YlNvY2tldENoYW5uZWw+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNhbiBj
bG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNl
LgogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9kb2N1bWVudCkg
ewogICAgICAgICByZXR1cm47CkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBXZWJTb2NrZXRDaGFu
bmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVudCBjYW4g
Y2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5j
ZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIFRo
ZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUg
bGFzdCByZWZlcmVuY2UuCiAKICAgICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSA9PSBXZWJTb2Nr
ZXRIYW5kc2hha2U6OkluY29tcGxldGUpIHsKICAgICAgICAgaW50IGhlYWRlckxlbmd0aCA9IG1f
aGFuZHNoYWtlLT5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVyLmRhdGEoKSwgbV9idWZmZXIu
c2l6ZSgpKTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6OnByb2Nl
c3NCdWZmZXIoKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmlyZWQoKQog
ewotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVu
dCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJl
ZmVyZW5jZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmlu
ZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBtX2NsaWVu
dCAmJiAhbV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBpZiAoIXByb2Nlc3NCdWZmZXIoKSkK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNv
bikKICAgICAgICAgYnVmLmFwcGVuZChyZWFzb24udXRmOCgpLmRhdGEoKSwgcmVhc29uLnV0Zjgo
KS5sZW5ndGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRGcmFtZTo6
T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwotICAgIFJlZjxXZWJTb2NrZXRD
aGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFu
ZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRl
cmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFpbCwgd2hp
Y2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCiAgICAgcHJv
Y2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwogCiAgICAgaWYgKG1fY2xvc2VkKSB7CkBAIC03Mjks
NyArNzI5LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdGcmFtZVF1
ZXVlKCkKICAgICBpZiAobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29pbmdGcmFt
ZVF1ZXVlQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8V2ViU29ja2V0Q2hhbm5l
bD4gcHJvdGVjdCgqdGhpcyk7IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0aGUgY2hh
bm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0aGUg
Y2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KIAogICAgIHdoaWxlICghbV9vdXRnb2lu
Z0ZyYW1lUXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBtX291dGdvaW5n
RnJhbWVRdWV1ZS50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWwuY3BwCmluZGV4IDhhM2JjNDdiODhjYmMyMjJiZjA1ZDY5MGYxYmQwNDk3YzY1ZDgxZjcu
LjIyNTNhOGVkYjYyN2E5OTI5Njk3ZjU2NWM0ZGQ5YzAzM2M0M2E2NTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0
Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dvcmtl
clRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHZvaWQg
V29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6ZSgpCiB7
CiAgICAgQVNTRVJUKCFtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgpOwotICAg
IFJlZjxCcmlkZ2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCcmlkZ2U+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgV29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5ID0gJm1fbG9h
ZGVyUHJveHk7CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3Jh
cHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsKQEAgLTQ0
Nyw3ICs0NDcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3VsdCBXb3Jr
ZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICBwZWVyLT5zZW5k
KGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5n
ZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBwZXIpCkBAIC00NzcsNyArNDc3LDcgQEAgVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tl
dENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIpOwogICAg
IH0pOwogCi0gICAgUmVmPEJyaWRnZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJyaWRnZT4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24oKTsKICAg
ICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdyYXBwZXIg
PSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFwcGVyKQpA
QCAtNTAzLDcgKzUwMyw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0
IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAgIHBlZXIt
PnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY2FwdHVyZWRVUkwudXJsKCksIGNhcHR1cmVkVHlwZS5z
dHJpbmcoKSwgc2l6ZSwgeyB9KSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICB3YWl0
Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5nZXQoKTsK
ICAgICBpZiAoIWNsaWVudFdyYXBwZXIpCkBAIC01MjYsNyArNTI2LDcgQEAgdW5zaWduZWQgbG9u
ZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJlZEFtb3Vu
dCgpCiAgICAgICAgIHBlZXItPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgfSk7CiAKLSAgICBSZWY8
QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJT
b2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50
V3JhcHBlci5nZXQoKTsKICAgICBpZiAoY2xpZW50V3JhcHBlcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4IGQ2ZDA1
Y2UzMjgxMmY1ZGUyZTk3ZDJmNzcwMTU2ZGEyNmVkNjkwMjkuLmIwOTczNDBmNDkxODUxYjNmMzBh
NDViZmQ3M2U1NjM3NzAyZDI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzYwLDcgKzM2MCw3IEBAIFN0cmlu
ZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb21wdXRlZExhYmVsKCkKIHsKICAgICAvLyBUaGlzIG1l
dGhvZCBpcyBiZWluZyBjYWxsZWQgYnkgV2ViS2l0IGluc3BlY3Rvciwgd2hpY2ggbWF5IGhhcHBl
biBhdCBhbnkgdGltZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgb3VyIGJhY2tpbmcgc3RvcmUgbm93
LgogICAgIC8vIEFsc28gaG9sZCBvbnRvIHRoaXMgb2JqZWN0IGluIGNhc2UgdXBkYXRlQmFja2lu
Z1N0b3JlIGRlbGV0ZXMgdGhpcyBub2RlLgotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0
PiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgVmVjdG9yPEFj
Y2Vzc2liaWxpdHlUZXh0PiB0ZXh0OwogICAgIGFjY2Vzc2liaWxpdHlUZXh0KHRleHQpOwpAQCAt
MTY3OSw3ICsxNjc5LDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9BWExpbmVG
b3JJbmRleCh1bnNpZ25lZCBpbmRleCkKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6dXBkYXRl
QmFja2luZ1N0b3JlKCkKIHsKICAgICAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBkZWxldGUg
dGhpcyBvYmplY3QuCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3Rvcih0
aGlzKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKIAogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgpKSB7CiAg
ICAgICAgIGlmICghZG9jdW1lbnQtPnZpZXcoKS0+aXNJblJlbmRlclRyZWVMYXlvdXQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlS
ZW5kZXJPYmplY3QuY3BwCmluZGV4IDE0MWMzM2NlMzkxNzdjYjk2NDI4ZGJjZWYwZDU2NTY1ZGVi
OGIyNjAuLjg5MWY2ZmViMzQ3MDJkMDU1ZmFkNTYxM2RhMTI0MzJlY2IzNTcyMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcApAQCAtMTY2Miw3ICsxNjYyLDcgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wgb24pCiAgICAgLy8gV2hlbiBhIG5vZGUgaXMgdG9s
ZCB0byBzZXQgZm9jdXMsIHRoYXQgY2FuIGNhdXNlIGl0IHRvIGJlIGRlYWxsb2NhdGVkLCB3aGlj
aCBtZWFucyB0aGF0IGRvaW5nCiAgICAgLy8gYW55dGhpbmcgZWxzZSBpbnNpZGUgdGhpcyBvYmpl
Y3Qgd2lsbCBjcmFzaC4gVG8gZml4IHRoaXMsIHdlIGFkZGVkIGEgUmVmUHRyIHRvIHByb3RlY3Qg
dGhpcyBvYmplY3QKICAgICAvLyBsb25nIGVub3VnaCBmb3IgZHVyYXRpb24uCi0gICAgUmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgCiAgICAgLy8gSWYgdGhpcyBu
b2RlIGlzIGFscmVhZHkgdGhlIGN1cnJlbnRseSBmb2N1c2VkIG5vZGUsIHRoZW4gY2FsbGluZyBm
b2N1cygpIHdvbid0IGRvIGFueXRoaW5nLgogICAgIC8vIFRoYXQgaXMgYSBwcm9ibGVtIHdoZW4g
Zm9jdXMgaXMgcmVtb3ZlZCBmcm9tIHRoZSB3ZWJwYWdlIHRvIGNocm9tZSwgYW5kIHRoZW4gcmV0
dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3QvR09iamVj
dEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggOWQxYjg4MWRkOWQzYjg2OGU1YjlmYzYyMjRlZTE4
N2IxMjMyODQzNi4uZDRhMWQxODM1MWNmMWFkNDEzMzJkZTE1N2QwNmIyOTE0MTc4YmFhYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0
ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBHT2JqZWN0RXZlbnRMaXN0ZW5l
cjo6Z29iamVjdERlc3Ryb3llZCgpCiAgICAgLy8gUHJvdGVjdCAndGhpcycgY2xhc3MgaW4gY2Fz
ZSB0aGUgJ21fY29yZVRhcmdldCcgaG9sZHMgdGhlIGxhc3QgcmVmZXJlbmNlLAogICAgIC8vIHdo
aWNoIG1heSBjYXVzZSwgaW5zaWRlIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSwgZnJlZSBvZiB0aGlz
IG9iamVjdAogICAgIC8vIGFuZCBsYXRlciB1c2UtYWZ0ZXItZnJlZSB3aXRoIHRoZSBtX2hhbmRs
ZXIgPSAwOyBhc3NpZ25tZW50LgotICAgIFJlZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5lcj4gcHJv
dGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIobV9kb21F
dmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwogICAgIG1fY29yZVRhcmdldCA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJ
bnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlLmNwcAppbmRleCBlYzAxYmJjNThkMDMyYmFjYWQ4Mjg1YjNjMDlmOTRiYTc2NDdl
MThjLi5iZTBiZjg2NDg1MzcxMjE1Y2QyZDliMDcxNjMwZWIyOWY5YWZkMjRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFj
ZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHQKICAgICBpZiAo
IWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgUmVm
PEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEpTQ3Vz
dG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tI
b2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1lbnQmIGVs
ZW1lbnQpCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOwogCiAgICAgaWYgKCFtX2Nv
bnN0cnVjdG9yKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxpZmllCiAg
ICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpTTG9ja0hv
bGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2Fs
bGJhY2suY3BwCmluZGV4IDIwNjFkYTlhOTU3YTA4NWMzMDFlOWQ4YTM5YzU3ZGZjYzFkMzllNDAu
Ljc5NzMzZTU4NjNlMjJjZjA1YzRjNDdiYTJkMTk2M2Y0ZDkzM2VmMjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1l
bnRFcnJvckNhbGxiYWNrLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29sIEpTU1FMU3RhdGVtZW50
RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0aW9uLCBT
UUxFcgogICAgIGlmICghbV9kYXRhIHx8ICFtX2RhdGEtPmdsb2JhbE9iamVjdCgpIHx8ICFjYW5J
bnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxKU1NRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU1NRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
CmluZGV4IGVlOWY5Njg5MGFhNzJmZTAwZjI5NzExMzg3ZGMzYmU3YTkzYzZkODQuLmMzYWNmNWQ1
YjZiZmY4YzYxN2M4ODNhZDZkNmM5OWI5NDQxOTNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAgLTg3LDcg
Kzg3LDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VV
UkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgICAgIGZ1bmN0aW9uID0gbV9jdXN0b21SZXNv
bHZlci5nZXQoKTsKICAgICB9CiAKLSAgICBSZWY8SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI+IHNl
bGZQcm90ZWN0b3IoKnRoaXMpOworICAgIFJlZjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAg
IGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHByZWZpeCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5jcHAKaW5k
ZXggMWYyMWZjNjZmNTAxZTAwYTQwNzAyMGZjMzUyNDZiNTQ0NWVhZTc1OS4uYzYyMzA3ZThmZjdh
ZDgxYTliMDk5YjIzNWMyYjVlMTVkM2RjYWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC00OCw3ICs0OCw3IEBA
IHB1YmxpYzoKICAgICAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIFJlZjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICAgICAgUmVmPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+dm0oKSk7
CiAKICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCmlu
ZGV4IDA0YWU4YTMzMmM2YTExMjhkMTMyOTE4Y2I5Y2IzYzlmZGVhM2RmYTcuLmVmOWU2NzNjNTlh
Y2UwMDJjNDNhMDE4ZGQwMWNkYTJlYTE3NTNkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgY2FsbCgpCiAgICAgewotICAgICAgICBSZWY8SlNET01XaW5kb3dNaWNyb3Rh
c2tDYWxsYmFjaz4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxKU0RPTVdpbmRvd01pY3Jv
dGFza0NhbGxiYWNrPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9nbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKaW5kZXggNmViYTRkZWE4NDk1ZmM0YmVlNTZmZWQxYjRh
ZThhMDBjYjljMWNmNS4uZGI5NGE2MTdkMjE3ZjZjOWMxYTcwMTg4NzIwODVjMjk1ZjkwOTM4NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApAQCAt
ODQsNyArODQsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENhbGxUeXBlIGNhbGxU
eXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNGdW5jdGlvbiwg
Y2FsbERhdGEpOwogCiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7Ci0gICAg
ICAgIFJlZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkY3RvcigqdGhpcyk7CisgICAgICAgIFJl
ZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgRXZlbnQq
IHNhdmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOwogICAgICAgICBnbG9i
YWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBkZDI4MjA0YjAwZmJlN2FhYzM0NDFj
MWYzNjBjZTA0ZTMwZjdlODJiLi5jYzU0ZmQ0YTgxODQ5NzdhNjA0YjVmOTRhNTg1MjEzMmExZDg2
ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgIH0KIAog
ICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBSZWY8SlNFdmVu
dExpc3RlbmVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEpTRXZlbnRMaXN0ZW5lcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJn
czsKICAgICAgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2ZW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJh
Y2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNw
cAppbmRleCBkMGE3YmIwOTcyNmNkZGYxN2FjOTM0NDRmNWNmODBjZDIxZDc1YjUzLi5mZWU5NzZl
MzFhYzc5N2ZjZjZmYmQyMzkyMjJhZjdiYjAxNjY4OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTU2LDcgKzU2LDcgQEAg
dm9pZCBKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdG9yPFJlZjxNdXRhdGlvblJl
Y29yZD4+JiBtdXRhdGlvbnMsIE11dGEKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAKaW5kZXgg
MDFiNTM2M2YxNTBjZWVhZjU0NDU2Y2MxYWM4ZTIyMDg2NjgyMmI5MS4uNTQ3NTZiODdhMDc2OThl
NDAwMDY3NDdmMzlmNmFjNTYwMWUwZDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAvLyBib29sZWFuLgogdWludDE2X3QgSlNOb2RlRmlsdGVyOjphY2NlcHRO
b2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xv
Y2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5k
ZXggZjZkMmY2ZWY4NTQ3YzY4ZjAxNzUwYjU2NDVjZjFlYzY2Yjk0MzJlNy4uZTkwYTJkYzc2YWI1
ZDNjZmJiNjMzZmVhMmMwMDJkZjY2MTQ2YTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODAwLDggKzI4MDAs
OCBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0ZvckluZGV4
ZWREQihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbgogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRlQmxvYnNU
b1RlbXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciwgdGhpcywgcHJv
dGVjdG9yXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocykgeworICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgYmxvYlJl
Z2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2NvbXBsZXRp
b25IYW5kbGVyLCB0aGlzLCBwcm90ZWN0ZWRUaGlzXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxv
YkZpbGVQYXRocykgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgICAg
IGlmIChibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1ZjY1ZDFlYzRlZjIxYjU4
MjgwMDQ4YWQ2ZTY0YzE5ZDRkMWI0Njc3Li5mY2M1NzYyNmU4N2U1NGViNzU5OWRmODgyZDM5NGMy
NDE2Yzk5ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDA0Niw3ICs0MDQ2LDcgQEAgc3ViIEdlbmVyYXRlQ2FsbGJh
Y2tJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBhcmdzQ2hl
Y2spIGlmIEBhcmdzQ2hlY2s7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBp
ZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcblxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBSZWY8JGNsYXNzTmFtZT4gcHJvdGVjdCgqdGhpcyk7XG5cbiIpOworICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmPCRjbGFzc05hbWU+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpO1xuXG4iKTsK
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4ZWNTdGF0ZSogc3RhdGUgPSBt
X2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7XG4iKTsKICAgICAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCAiICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4iKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKaW5kZXggYTYxZDFkMzQxZTY0OGQ0NTg4
MzhhZTQ1NGE4MWU4NGY3MmI5ZjI0Ny4uZjMwOTIyMDJhMmUxZmJmYzUzZWQ2ZTFjMWQ1MTRjMTZj
MGE0ODgxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHAKQEAgLTIwMCw3
ICsyMDAsNyBAQCB2b2lkIFJvb3RPYmplY3Q6OmZpbmFsaXplKEpTQzo6SGFuZGxlPEpTQzo6VW5r
bm93bj4gaGFuZGxlLCB2b2lkKikKIHsKICAgICBSdW50aW1lT2JqZWN0KiBvYmplY3QgPSBzdGF0
aWNfY2FzdDxSdW50aW1lT2JqZWN0Kj4oaGFuZGxlLnNsb3QoKS0+YXNDZWxsKCkpOwogCi0gICAg
UmVmPFJvb3RPYmplY3Q+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSb290T2JqZWN0PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBvYmplY3QtPmludmFsaWRhdGUoKTsKICAgICB3ZWFrUmVt
b3ZlKG1fcnVudGltZU9iamVjdHMsIG9iamVjdCwgb2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0ZvbnRTZWxlY3Rvci5jcHAKaW5kZXggOTdlNDQ1MDY4NGI1YzU3MWY0OTkwOWQ3ODdiZTY0
MTM0NzdlNzY4NC4uZThiMjE4NWU2MDkzNGQyYWUzMjIxMmY3YjliNGEyZmYwNmQwODYwZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHAKQEAgLTI5Miw3ICsyOTIsNyBAQCB2
b2lkIENTU0ZvbnRTZWxlY3Rvcjo6YmVnaW5Mb2FkVGltZXJGaXJlZCgpCiAgICAgZm9udHNUb0Jl
Z2luTG9hZGluZy5zd2FwKG1fZm9udHNUb0JlZ2luTG9hZGluZyk7CiAKICAgICAvLyBDU1NGb250
U2VsZWN0b3IgY291bGQgZ2V0IGRlbGV0ZWQgdmlhIGJlZ2luTG9hZElmTmVlZGVkKCkgb3IgbG9h
ZERvbmUoKSB1bmxlc3MgcHJvdGVjdGVkLgotICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxDU1NGb250U2VsZWN0b3I+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXImIGNhY2hlZFJlc291cmNlTG9hZGVyID0gbV9k
b2N1bWVudC0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICBmb3IgKGF1dG8mIGZvbnRIYW5k
bGUgOiBmb250c1RvQmVnaW5Mb2FkaW5nKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0
Q29udGVudHMuY3BwCmluZGV4IDNlMzAxNDk5YjVmMjQwOTRhYzBhZTdmZTAxMTc5YjNlNTY2Y2Qx
NmYuLmZmNjM3MzYyYmM4Y2FjNzdiNDEyMDJmNjAxNzcwZTk2NzE1MTFiYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9p
ZCBTdHlsZVNoZWV0Q29udGVudHM6OmNoZWNrTG9hZGVkKCkKICAgICAvLyBBdm9pZCB8dGhpc3wg
YmVpbmcgZGVsZXRlZCBieSBzY3JpcHRzIHRoYXQgcnVuIHZpYQogICAgIC8vIFNjcmlwdGFibGVE
b2N1bWVudFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKS4KICAg
ICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzY2MjIzMDA+LgotICAgIFJlZjxTdHlsZVNoZWV0Q29u
dGVudHM+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdHlsZVNoZWV0Q29udGVudHM+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogICAgIFN0eWxlU2hlZXRDb250ZW50cyogcGFyZW50U2hlZXQgPSBw
YXJlbnRTdHlsZVNoZWV0KCk7CiAgICAgaWYgKHBhcmVudFNoZWV0KSB7CiAgICAgICAgIHBhcmVu
dFNoZWV0LT5jaGVja0xvYWRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0No
YXJhY3RlckRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCmlu
ZGV4IDYxNzk2MTc0MTUzOGNkM2FkYjQxOWU3NzVjMmYxNDNlYzZkOTQwMzMuLjNjMGQyYTg0NDQ1
NTJkM2U1MDQ0MWU1N2MxNDU3MzZjZjY5M2QwZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVy
RGF0YS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBDaGFyYWN0ZXJEYXRhOjpzZXREYXRhKGNv
bnN0IFN0cmluZyYgZGF0YSkKICAgICBpZiAobV9kYXRhID09IG5vbk51bGxEYXRhKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWY8Q2hhcmFjdGVyRGF0YT4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPENoYXJhY3RlckRhdGE+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgdW5zaWduZWQg
b2xkTGVuZ3RoID0gbGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
b250YWluZXJOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApp
bmRleCA5ZTIzZDljZDM1NmRhNjNkNDgwZDQwMWVkOTdiODExNTZkYjNhZGFhLi4wZjJmNzY0NTJm
MmU5MWI2N2YxNWJhMWJlMmFhMTg4MWQ0YWJmZGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCkBAIC0yMzEsNyArMjMxLDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjppbnNlcnRC
ZWZvcmUoTm9kZSYgbmV3Q2hpbGQsIE5vZGUqIHJlZkNoaWxkLCBFeGNlcHRpb25Db2RlJgogICAg
IC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRp
bmcgbXV0YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hh
ZG93SG9zdE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMg
PSAwOwogCkBAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZXBsYWNlQ2hp
bGQoTm9kZSYgbmV3Q2hpbGQsIE5vZGUmIG9sZENoaWxkLCBFeGNlcHRpb25Db2RlJgogICAgIC8v
IElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0IG9mIHNlbmRpbmcg
bXV0YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBhcmVudE9yU2hhZG93
SG9zdE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZWMgPSAw
OwogCkBAIC01MDQsNyArNTA0LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjpyZW1vdmVDaGlsZChO
b2RlJiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgLy8gSWYgaXQgaXMsIGl0IGNh
biBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVudHMu
CiAgICAgQVNTRVJUKHJlZkNvdW50KCkgfHwgcGFyZW50T3JTaGFkb3dIb3N0Tm9kZSgpKTsKIAot
ICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVy
Tm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBlYyA9IDA7CiAKQEAgLTYxMSw3ICs2
MTEsNyBAQCB2b2lkIENvbnRhaW5lck5vZGU6OnJlbW92ZUNoaWxkcmVuKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gVGhlIGNvbnRhaW5lciBub2RlIGNhbiBiZSByZW1vdmVkIGZyb20gZXZl
bnQgaGFuZGxlcnMuCi0gICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIGV4Y2x1
ZGUgdGhpcyBub2RlIHdoZW4gbG9va2luZyBmb3IgcmVtb3ZlZCBmb2N1c2VkTm9kZSBzaW5jZSBv
bmx5IGNoaWxkcmVuIHdpbGwgYmUgcmVtb3ZlZAogICAgIGRvY3VtZW50KCkucmVtb3ZlRm9jdXNl
ZE5vZGVPZlN1YnRyZWUodGhpcywgdHJ1ZSk7CkBAIC02NDksNyArNjQ5LDcgQEAgdm9pZCBDb250
YWluZXJOb2RlOjpyZW1vdmVDaGlsZHJlbigpCiAKIGJvb2wgQ29udGFpbmVyTm9kZTo6YXBwZW5k
Q2hpbGQoTm9kZSYgbmV3Q2hpbGQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZjxDb250
YWluZXJOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBDaGVjayB0aGF0IHRoaXMgbm9kZSBpcyBub3QgImZs
b2F0aW5nIi4KICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQgYXMgYSBzaWRlIGVm
ZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IDVmNzcwYWU5N2RhMDdiNGI5Mzc3MzgzZmQ5MjE3NTZjZTFkZTlmYjguLjJlZDI1MGYxYWQ5
YzY3OGFhNzhlYzliM2IyZjBmZjI1YWYxMDE4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtMjY5NCw3ICsyNjk0LDcgQEAgdm9pZCBEb2N1bWVudDo6aW1wbGljaXRDbG9zZSgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIC8vIENhbGwgdG8gZGlzcGF0Y2hXaW5kb3dMb2FkRXZlbnQgY2Fu
IGJsb3cgdXMgZnJvbSB1bmRlcm5lYXRoLgotICAgIFJlZjxEb2N1bWVudD4gcHJvdGVjdCgqdGhp
cyk7CisgICAgUmVmPERvY3VtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fcHJv
Y2Vzc2luZ0xvYWRFdmVudCA9IHRydWU7CiAKQEAgLTU5MjcsNyArNTkyNyw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmZ1bGxTY3JlZW5DaGFuZ2VEZWxheVRpbWVyRmlyZWQoKQogICAgIC8vIFNpbmNlIHdl
IGRpc3BhdGNoIGV2ZW50cyBpbiB0aGlzIGZ1bmN0aW9uLCBpdCdzIHBvc3NpYmxlIHRoYXQgdGhl
CiAgICAgLy8gZG9jdW1lbnQgd2lsbCBiZSBkZXRhY2hlZCBhbmQgR0MnZC4gV2UgcHJvdGVjdCBp
dCBoZXJlIHRvIG1ha2Ugc3VyZSB3ZQogICAgIC8vIGNhbiBmaW5pc2ggdGhlIGZ1bmN0aW9uIHN1
Y2Nlc3NmdWxseS4KLSAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxE
b2N1bWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgRGVxdWU8UmVmUHRyPE5vZGU+PiBj
aGFuZ2VRdWV1ZTsKICAgICBtX2Z1bGxTY3JlZW5DaGFuZ2VFdmVudFRhcmdldFF1ZXVlLnN3YXAo
Y2hhbmdlUXVldWUpOwogICAgIERlcXVlPFJlZlB0cjxOb2RlPj4gZXJyb3JRdWV1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDg2OTVjNTk3Y2Y0YzJhNjQzNTU5ZThiYTc3YWZh
ZmU0ZTU0YzY1YjUuLmVjMjEwOTg2N2FjMzBkMGMzMWJlNjkyNjE2MzFjMzI1MTZmZWEzY2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjIyLDcgKzIyMiw3IEBAIGJvb2wgRXZl
bnRUYXJnZXQ6OmZpcmVFdmVudExpc3RlbmVycyhFdmVudCYgZXZlbnQpCiAgICAgICAgIAogdm9p
ZCBFdmVudFRhcmdldDo6ZmlyZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCwgRXZlbnRUYXJn
ZXREYXRhKiBkLCBFdmVudExpc3RlbmVyVmVjdG9yJiBlbnRyeSkKIHsKLSAgICBSZWY8RXZlbnRU
YXJnZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAKICAgICAvLyBGaXJlIGFsbCBsaXN0ZW5lcnMgcmVnaXN0ZXJlZCBmb3IgdGhp
cyBldmVudC4gRG9uJ3QgZmlyZSBsaXN0ZW5lcnMgcmVtb3ZlZCBkdXJpbmcgZXZlbnQgZGlzcGF0
Y2guCiAgICAgLy8gQWxzbywgZG9uJ3QgZmlyZSBldmVudCBsaXN0ZW5lcnMgYWRkZWQgZHVyaW5n
IGV2ZW50IGRpc3BhdGNoLiBDb252ZW5pZW50bHksIGFsbCBuZXcgZXZlbnQgbGlzdGVuZXJzIHdp
bGwgYmUgYWRkZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCAxOWJjZjhlYWI4YTY0MThhNzdjY2I5ZTk3
NDVlODUzMGE5N2Y2OGI0Li5iMjEwMGFlMmViNDRjMjgyNTgzMWMxN2EyMmNjNDE2MGFjMTJhNjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuY3BwCkBAIC0yMjMzLDcgKzIyMzMsNyBAQCBib29sIE5vZGU6OmRpc3Bh
dGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogICAgIGlmICghZG9j
dW1lbnQoKS5oYXNMaXN0ZW5lclR5cGUoRG9jdW1lbnQ6OkJFRk9SRUxPQURfTElTVEVORVIpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8Tm9kZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVmPEJlZm9yZUxvYWRFdmVu
dD4gYmVmb3JlTG9hZEV2ZW50ID0gQmVmb3JlTG9hZEV2ZW50OjpjcmVhdGUoc291cmNlVVJMKTsK
ICAgICBkaXNwYXRjaEV2ZW50KGJlZm9yZUxvYWRFdmVudCk7CiAgICAgcmV0dXJuICFiZWZvcmVM
b2FkRXZlbnQtPmRlZmF1bHRQcmV2ZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcAppbmRleCAyNWRhMmQ2OTcxODczZDU4NWJiNjA1OThhZWU0
MWYyZmI5YzU1MjY3Li4xZGU5NzVkY2QzYmM1MDE4YTM0NDEzMTQ5MGFjNTM2ZGYwNmE5ZDllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgdm9pZCBTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpkaXNwYXRjaE1lc3Nh
Z2VQb3J0RXZlbnRzKCkKIHsKICAgICBjaGVja0NvbnNpc3RlbmN5KCk7CiAKLSAgICBSZWY8U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFrZSBhIGZyb3pl
biBjb3B5IG9mIHRoZSBwb3J0cyBzbyB3ZSBjYW4gaXRlcmF0ZSB3aGlsZSBuZXcgb25lcyBtaWdo
dCBiZSBhZGRlZCBvciBkZXN0cm95ZWQuCiAgICAgVmVjdG9yPE1lc3NhZ2VQb3J0Kj4gcG9zc2li
bGVNZXNzYWdlUG9ydHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1h
dGlvbkNvbnRyb2xsZXIuY3BwCmluZGV4IGZiMjk0NTE0ZDE2NjUyZGU1ZmYwMzU4YmYxOTIyZDUz
YjI2Y2ExODguLmZkN2RjY2U0ZTVmMzBiYTY1YTI5MTFjYjdhOWU3NmQyNjA3ODYwYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXIuY3Bw
CkBAIC0xNDcsNyArMTQ3LDcgQEAgdm9pZCBTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNl
cnZpY2VTY3JpcHRlZEFuaW1hdGlvbnMoZG91YmxlIG1vbm90b25pY1RpbWUKIAogICAgIC8vIElu
dm9raW5nIGNhbGxiYWNrcyBtYXkgZGV0YWNoIGVsZW1lbnRzIGZyb20gb3VyIGRvY3VtZW50LCB3
aGljaCBjbGVhcnMgdGhlIGRvY3VtZW50J3MKICAgICAvLyByZWZlcmVuY2UgdG8gdXMsIHNvIHRh
a2UgYSBkZWZlbnNpdmUgcmVmZXJlbmNlLgotICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgZm9yIChhdXRvJiBjYWxsYmFjayA6IGNh
bGxiYWNrcykgewogICAgICAgICBpZiAoIWNhbGxiYWNrLT5tX2ZpcmVkT3JDYW5jZWxsZWQpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCmluZGV4IGIzZjk0Y2VhZDcxZjRhNzcy
YWJmY2QyNjBmZTU2YjQwMDdiZjFhZjQuLjgyNTNiNGI0NmY0ODlhMDBmNGEyZWYwYzFkN2E1NjBl
MjRhODQ0YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHJpbmdDYWxsYmFjay5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNrLmNwcApAQCAtMzgsOSAr
MzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHZvaWQgU3RyaW5nQ2FsbGJhY2s6OnNjaGVk
dWxlQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5n
JiBkYXRhKQogewotICAgIFJlZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJvdGVjdG9yKHRoaXMpOwot
ICAgIGNvbnRleHQtPnBvc3RUYXNrKFtwcm90ZWN0b3IsIGRhdGFdIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JikgewotICAgICAgICBwcm90ZWN0b3ItPmhhbmRsZUV2ZW50KGRhdGEpOworICAgIFJl
ZlB0cjxTdHJpbmdDYWxsYmFjaz4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBjb250ZXh0LT5w
b3N0VGFzayhbcHJvdGVjdGVkVGhpcywgZGF0YV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPmhhbmRsZUV2ZW50KGRhdGEpOwogICAgIH0pOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAppbmRleCAwMWI1OWU3ZGI1
MjliNDkyNmIwMzY1MjQ1NjhmNmUxODliMDY0MWE5Li5iMDZmNDk5NjA5N2ViNTczMTAzNzlkOWY3
MmNhM2FlZjM2ZGFjY2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbWJl
ZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVkRWxlbWVudC5j
cHAKQEAgLTE2Myw3ICsxNjMsNyBAQCB2b2lkIEhUTUxFbWJlZEVsZW1lbnQ6OnVwZGF0ZVdpZGdl
dChQbHVnaW5DcmVhdGlvbk9wdGlvbiBwbHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICBWZWN0b3I8
U3RyaW5nPiBwYXJhbVZhbHVlczsKICAgICBwYXJhbWV0ZXJzRm9yUGx1Z2luKHBhcmFtTmFtZXMs
IHBhcmFtVmFsdWVzKTsKIAotICAgIFJlZjxIVE1MRW1iZWRFbGVtZW50PiBwcm90ZWN0KCp0aGlz
KTsgLy8gTG9hZGluZyB0aGUgcGx1Z2luIG1pZ2h0IHJlbW92ZSB1cyBmcm9tIHRoZSBkb2N1bWVu
dC4KKyAgICBSZWY8SFRNTEVtYmVkRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIExv
YWRpbmcgdGhlIHBsdWdpbiBtaWdodCByZW1vdmUgdXMgZnJvbSB0aGUgZG9jdW1lbnQuCiAgICAg
Ym9vbCBiZWZvcmVMb2FkQWxsb3dlZExvYWQgPSBndWFyZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZl
bnQobV91cmwpOwogICAgIGlmICghYmVmb3JlTG9hZEFsbG93ZWRMb2FkKSB7CiAgICAgICAgIGlm
IChpczxQbHVnaW5Eb2N1bWVudD4oZG9jdW1lbnQoKSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGFhNDBhNDYxMTM3YTIxYjliZjVk
ZThmNDdjZWJkMDRhYWM4NmIxZDkuLjFmODNmNWE3M2RhMDg0NTNjNTNlNmM3YjNlMThiZjUzMDhh
ZWM0MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50
LmNwcApAQCAtNDgwLDcgKzQ4MCw3IEBAIGJvb2wgSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hl
Y2tWYWxpZGl0eShWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+CiAgICAgaWYg
KCF3aWxsVmFsaWRhdGUoKSB8fCBpc1ZhbGlkRm9ybUNvbnRyb2xFbGVtZW50KCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIC8vIEFuIGV2ZW50IGhhbmRsZXIgY2FuIGRlcmVmIHRoaXMgb2Jq
ZWN0LgotICAgIFJlZjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8SFRNTEZvcm1Db250cm9sRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAg
UmVmPERvY3VtZW50PiBvcmlnaW5hbERvY3VtZW50KGRvY3VtZW50KCkpOwogICAgIGJvb2wgbmVl
ZHNEZWZhdWx0QWN0aW9uID0gZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5pbnZhbGlkRXZlbnQsIGZhbHNlLCB0cnVlKSk7CiAgICAgaWYgKG5lZWRzRGVmYXVsdEFjdGlv
biAmJiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMgJiYgaW5Eb2N1bWVudCgpICYmIG9yaWdpbmFs
RG9jdW1lbnQucHRyKCkgPT0gJmRvY3VtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3Jt
RWxlbWVudC5jcHAKaW5kZXggOGNlY2QyZTNiNDk0NmQ1YTc2N2ViMDUxZTYyZmY4OWZmYzM3MDQw
ZC4uOGRkMzczMzBlODU4ZjRkZjE4NTMxNDZlMWZjMzhmYWEwMjUzMTg4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtMjM2LDcgKzIzNiw3IEBAIGJvb2wgSFRN
TEZvcm1FbGVtZW50Ojp2YWxpZGF0ZUludGVyYWN0aXZlbHkoRXZlbnQqIGV2ZW50KQogICAgIC8v
IGhhcyAhcmVuZGVyZXIoKS0+bmVlZHNMYXlvdXQoKSBhc3NlcnRpb24uCiAgICAgZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFJlZjxIVE1M
Rm9ybUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gRm9jdXMgb24gdGhlIGZpcnN0IGZvY3VzYWJs
ZSBjb250cm9sIGFuZCBzaG93IGEgdmFsaWRhdGlvbiBtZXNzYWdlLgogICAgIGZvciAoYXV0byYg
Y29udHJvbCA6IHVuaGFuZGxlZEludmFsaWRDb250cm9scykgewpAQCAtMjg1LDcgKzI4NSw3IEBA
IHZvaWQgSFRNTEZvcm1FbGVtZW50OjpwcmVwYXJlRm9yU3VibWlzc2lvbihFdmVudCogZXZlbnQp
CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0gRm9ybVN0YXRlOjpjcmVhdGUodGhp
cywgY29udHJvbE5hbWVzQW5kVmFsdWVzLCAmZG9jdW1lbnQoKSwgTm90U3VibWl0dGVkQnlKYXZh
U2NyaXB0KTsKICAgICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hXaWxsU2VuZFN1
Ym1pdEV2ZW50KGZvcm1TdGF0ZS5yZWxlYXNlKCkpOwogCi0gICAgUmVmPEhUTUxGb3JtRWxlbWVu
dD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgLy8gRXZlbnQgaGFuZGxpbmcgY2FuIHJlc3VsdCBpbiBtX3Nob3VsZFN1
Ym1pdCBiZWNvbWluZyB0cnVlLCByZWdhcmRsZXNzIG9mIGRpc3BhdGNoRXZlbnQoKSByZXR1cm4g
dmFsdWUuCiAgICAgaWYgKGRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
c3VibWl0RXZlbnQsIHRydWUsIHRydWUpKSkKICAgICAgICAgbV9zaG91bGRTdWJtaXQgPSB0cnVl
OwpAQCAtMzU2LDcgKzM1Niw3IEBAIHZvaWQgSFRNTEZvcm1FbGVtZW50OjpzdWJtaXQoRXZlbnQq
IGV2ZW50LCBib29sIGFjdGl2YXRlU3VibWl0QnV0dG9uLCBib29sIHByb2NlCiAgICAgICAgIGZp
cnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbi0+c2V0QWN0aXZhdGVkU3VibWl0KHRydWUpOwogCiAg
ICAgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnkgPSBwcm9jZXNzaW5nVXNlckdlc3R1cmUgPyBMb2Nr
SGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6WWVzOwotICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+
IHByb3RlY3QoKnRoaXMpOyAvLyBGb3JtIHN1Ym1pc3Npb24gY2FuIGV4ZWN1dGUgYXJiaXRhcnkg
SmF2YVNjcmlwdC4KKyAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsgLy8gRm9ybSBzdWJtaXNzaW9uIGNhbiBleGVjdXRlIGFyYml0YXJ5IEphdmFTY3JpcHQuCiAg
ICAgZnJhbWUtPmxvYWRlcigpLnN1Ym1pdEZvcm0oRm9ybVN1Ym1pc3Npb246OmNyZWF0ZSh0aGlz
LCBtX2F0dHJpYnV0ZXMsIGV2ZW50LCBsb2NrSGlzdG9yeSwgZm9ybVN1Ym1pc3Npb25UcmlnZ2Vy
KSk7CiAKICAgICBpZiAobmVlZEJ1dHRvbkFjdGl2YXRpb24gJiYgZmlyc3RTdWNjZXNzZnVsU3Vi
bWl0QnV0dG9uKQpAQCAtNzIwLDcgKzcyMCw3IEBAIGJvb2wgSFRNTEZvcm1FbGVtZW50OjpjaGVj
a1ZhbGlkaXR5KCkKIAogYm9vbCBIVE1MRm9ybUVsZW1lbnQ6OmNoZWNrSW52YWxpZENvbnRyb2xz
QW5kQ29sbGVjdFVuaGFuZGxlZChWZWN0b3I8UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+
JiB1bmhhbmRsZWRJbnZhbGlkQ29udHJvbHMpCiB7Ci0gICAgUmVmPEhUTUxGb3JtRWxlbWVudD4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxGb3JtRWxlbWVudD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgLy8gQ29weSBtX2Fzc29jaWF0ZWRFbGVtZW50cyBiZWNhdXNlIGV2ZW50IGhh
bmRsZXJzIGNhbGxlZCBmcm9tCiAgICAgLy8gSFRNTEZvcm1Db250cm9sRWxlbWVudDo6Y2hlY2tW
YWxpZGl0eSgpIG1pZ2h0IGNoYW5nZSBtX2Fzc29jaWF0ZWRFbGVtZW50cy4KICAgICBWZWN0b3I8
UmVmUHRyPEZvcm1Bc3NvY2lhdGVkRWxlbWVudD4+IGVsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggNWZhMjVmNzk4ZTA5MjBlY2YzNGRkYmQ3ZDQ5
YmJlZWZiZTFkYWY3YS4uYWMyZTAzM2QwYWMxMjk3MGE4NzliMWVkYzA5Mzg0MWJkYzllODNiZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC05ODksNyArOTg5
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRWYWx1ZShjb25zdCBTdHJpbmcmIHZhbHVl
LCBUZXh0RmllbGRFdmVudEJlaGF2aW9yIGV2ZW4KICAgICBpZiAoIW1faW5wdXRUeXBlLT5jYW5T
ZXRWYWx1ZSh2YWx1ZSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxIVE1MSW5wdXRFbGVt
ZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgRXZlbnRRdWV1ZVNjb3BlIHNjb3BlOwogICAgIFN0cmluZyBzYW5p
dGl6ZWRWYWx1ZSA9IHNhbml0aXplVmFsdWUodmFsdWUpOwogICAgIGJvb2wgdmFsdWVDaGFuZ2Vk
ID0gc2FuaXRpemVkVmFsdWUgIT0gdGhpcy0+dmFsdWUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TExpbmtFbGVtZW50LmNwcAppbmRleCA1ODdjYjA1OTI3YTRiYTk2YzY5ZjNiMmJkNzMxMGIyZDQy
MjU4YWFlLi5hZTYyOWU5YmY2YWE3MzJmM2U5OTU4YWE0MTczNGUwNDVjY2VlN2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgdm9p
ZCBIVE1MTGlua0VsZW1lbnQ6OnNldENTU1N0eWxlU2hlZXQoY29uc3QgU3RyaW5nJiBocmVmLCBj
b25zdCBVUkwmIGJhc2VVUkwsIGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ29tcGxldGlu
ZyB0aGUgc2hlZXQgbG9hZCBtYXkgY2F1c2Ugc2NyaXB0cyB0byBleGVjdXRlLgotICAgIFJlZjxI
VE1MTGlua0VsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MTGlua0VsZW1lbnQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250
ZXh0KGRvY3VtZW50KCksIGJhc2VVUkwsIGNoYXJzZXQpOwogICAgIGF1dG8gY2FjaGVQb2xpY3kg
PSBmcmFtZS0+bG9hZGVyKCkuc3VicmVzb3VyY2VDYWNoZVBvbGljeSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggZDUxMTkwNTMzNmRjODkyMDgwNzcyYmU5
MzVkYjQxNjQwZWI1MzI3NC4uMzU5Yzk1N2ZkYWZlZjNmYzVkNzJiYzdmYjAzNjUwNzY4NzBmNjgw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC05MzYsNyAr
OTM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpub3RpZnlBYm91dFBsYXlpbmcoKQogCiB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnBlbmRpbmdBY3Rpb25UaW1lckZpcmVkKCkKIHsKLSAgICBS
ZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIGxvYWROZXh0U291cmNlQ2hp
bGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11
dGF0aW9ucy4KKyAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIGxvYWROZXh0U291cmNlQ2hpbGQgbWF5IGZpcmUgJ2JlZm9yZWxvYWQnLCB3aGljaCBjYW4g
bWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICBQZW5kaW5nQWN0aW9uRmxhZ3MgcGVu
ZGluZ0FjdGlvbnMgPSBtX3BlbmRpbmdBY3Rpb25GbGFnczsKICAgICBtX3BlbmRpbmdBY3Rpb25G
bGFncyA9IDA7CiAKQEAgLTEwMzgsNyArMTAzOCw3IEBAIGRvdWJsZSBIVE1MTWVkaWFFbGVtZW50
OjpnZXRTdGFydERhdGUoKSBjb25zdAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoKQog
ewotICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gbG9hZEludGVy
bmFsIG1heSByZXN1bHQgaW4gYSAnYmVmb3JlbG9hZCcgZXZlbnQsIHdoaWNoIGNhbiBtYWtlIGFy
Yml0cmFyeSBET00gbXV0YXRpb25zLgorICAgIFJlZjxIVE1MTWVkaWFFbGVtZW50PiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsgLy8gbG9hZEludGVybmFsIG1heSByZXN1bHQgaW4gYSAnYmVmb3JlbG9h
ZCcgZXZlbnQsIHdoaWNoIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIAog
ICAgIExPRyhNZWRpYSwgIkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWQoJXApIiwgdGhpcyk7CiAgICAg
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDc5NGIxMjM1
MTVkNDg4YjBhMjMwMDhjOTBkZjJlMmZlYjBkMWUzODYuLjM1YTMzYWU1ZWYwMmMyNTVhNDFmNzNj
OTM0YjliNTJhY2Q1ZDY4Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9i
amVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9iamVjdEVsZW1l
bnQuY3BwCkBAIC0zMjAsNyArMzIwLDcgQEAgdm9pZCBIVE1MT2JqZWN0RWxlbWVudDo6dXBkYXRl
V2lkZ2V0KFBsdWdpbkNyZWF0aW9uT3B0aW9uIHBsdWdpbkNyZWF0aW9uT3B0aW9uKQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBwcm90ZWN0KCp0
aGlzKTsgLy8gYmVmb3JlbG9hZCBhbmQgcGx1Z2luIGxvYWRpbmcgY2FuIG1ha2UgYXJiaXRyYXJ5
IERPTSBtdXRhdGlvbnMuCisgICAgUmVmPEhUTUxPYmplY3RFbGVtZW50PiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsgLy8gYmVmb3JlbG9hZCBhbmQgcGx1Z2luIGxvYWRpbmcgY2FuIG1ha2UgYXJiaXRy
YXJ5IERPTSBtdXRhdGlvbnMuCiAgICAgYm9vbCBiZWZvcmVMb2FkQWxsb3dlZExvYWQgPSBndWFy
ZGVkRGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQodXJsKTsKICAgICBpZiAoIXJlbmRlcmVyKCkpIC8v
IERvIG5vdCBsb2FkIHRoZSBwbHVnaW4gaWYgYmVmb3JlbG9hZCByZW1vdmVkIHRoaXMgZWxlbWVu
dCBvciBpdHMgcmVuZGVyZXIuCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MT3B0aW9uRWxlbWVudC5jcHAKaW5kZXggMzQzYWQ0MTlkNTQ3NWRiMzMzYzljZDc1NzVjODQ4
NjE1ODIyZDE0Mi4uODdmYjY3NDkwMzlkYTQxNWQxMDExNjM2MjI1ZjM4ODkwZmY5MjdkNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5jcHAKQEAgLTEwNyw3ICsxMDcs
NyBAQCBTdHJpbmcgSFRNTE9wdGlvbkVsZW1lbnQ6OnRleHQoKSBjb25zdAogCiB2b2lkIEhUTUxP
cHRpb25FbGVtZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyAmdGV4dCwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiB7Ci0gICAgUmVmPEhUTUxPcHRpb25FbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZl
bnRzKCp0aGlzKTsKKyAgICBSZWY8SFRNTE9wdGlvbkVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgLy8gQ2hhbmdpbmcgdGhlIHRleHQgY2F1c2VzIGEgcmVjYWxjIG9mIGEgc2Vs
ZWN0J3MgaXRlbXMsIHdoaWNoIHdpbGwgcmVzZXQgdGhlIHNlbGVjdGVkCiAgICAgLy8gaW5kZXgg
dG8gdGhlIGZpcnN0IGl0ZW0gaWYgdGhlIHNlbGVjdCBpcyBzaW5nbGUgc2VsZWN0aW9uIHdpdGgg
YSBtZW51IGxpc3QuIFdlIGF0dGVtcHQgdG8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0
RWxlbWVudC5jcHAKaW5kZXggZDNhMjY4ZTYzYjc4OTliODhjNDgzNzU1MTUwYjZkMTk5NTQxNWI0
Mi4uM2IxMGQ2N2FjMzVlMjQ4MzhhMjk1YzE3NjNlNWZhNmE4NWMzNGEzZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgdm9pZCBI
VE1MU2NyaXB0RWxlbWVudDo6ZmluaXNoZWRJbnNlcnRpbmdTdWJ0cmVlKCkKIAogdm9pZCBIVE1M
U2NyaXB0RWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewotICAgIFJlZjxI
VE1MU2NyaXB0RWxlbWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAg
UmVmPEhUTUxTY3JpcHRFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICho
YXNPbmVDaGlsZCgpICYmIGlzPFRleHQ+KCpmaXJzdENoaWxkKCkpKSB7CiAgICAgICAgIGRvd25j
YXN0PFRleHQ+KCpmaXJzdENoaWxkKCkpLnNldERhdGEodmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKaW5kZXggNzQ5MGQ5YWM4ZTYyMWFjMDQxNGJlNmFhYzY0
NTc2MjBiNTEwZDQzYi4uMWY1MjRmZGU4YjdhZjUwMWU4NmQ5NjA5NDQ1OTk1ZjE2ZDUyNzJhNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCkBAIC0yMTEsNyArMjEx
LDcgQEAgUmVmUHRyPEhUTUxFbGVtZW50PiBIVE1MVGFibGVFbGVtZW50OjppbnNlcnRSb3coaW50
IGluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0g
ICAgUmVmPEhUTUxUYWJsZUVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHMoKnRoaXMp
OworICAgIFJlZjxIVE1MVGFibGVFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAg
IFJlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBsYXN0Um93ID0gMDsKICAgICBSZWZQdHI8SFRN
TFRhYmxlUm93RWxlbWVudD4gcm93ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCmluZGV4IGQ1Y2Q4MmRkODkxM2U1ZGE1OTVmYmU3NmVhYzkwNGI2YWIw
NzRlM2QuLjI1NWJlZDY3OTcyODQyZGUzNDNiMmU2NjBiMTNlM2I1NWM2YmI5N2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtNDAyLDcgKzQwMiw3
IEBAIFN0cmluZyBIVE1MVGV4dEFyZWFFbGVtZW50OjpkZWZhdWx0VmFsdWUoKSBjb25zdAogCiB2
b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldERlZmF1bHRWYWx1ZShjb25zdCBTdHJpbmcmIGRl
ZmF1bHRWYWx1ZSkKIHsKLSAgICBSZWY8SFRNTFRleHRBcmVhRWxlbWVudD4gcHJvdGVjdEZyb21N
dXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmPEhUTUxUZXh0QXJlYUVsZW1lbnQ+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gVG8gcHJlc2VydmUgY29tbWVudHMsIHJlbW92ZSBv
bmx5IHRoZSB0ZXh0IG5vZGVzLCB0aGVuIGFkZCBhIHNpbmdsZSB0ZXh0IG5vZGUuCiAgICAgVmVj
dG9yPFJlZjxUZXh0Pj4gdGV4dE5vZGVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5jcHAKaW5kZXggNjI2ZjMxOThmMmFhNGQ0OTViMDhlOWVlZGRiN2YwNzUxNTE2N2E1Yy4u
ZTI2ZmE2ZWI1Y2U3MzY0MGNhOGY3YzFjMjliY2Y0ODNiNmQ4NjExNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIFN0cmluZ1dpdGhE
aXJlY3Rpb24gSFRNTFRpdGxlRWxlbWVudDo6Y29tcHV0ZWRUZXh0V2l0aERpcmVjdGlvbigpCiAK
IHZvaWQgSFRNTFRpdGxlRWxlbWVudDo6c2V0VGV4dChjb25zdCBTdHJpbmcmIHZhbHVlKQogewot
ICAgIFJlZjxIVE1MVGl0bGVFbGVtZW50PiBwcm90ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlz
KTsKKyAgICBSZWY8SFRNTFRpdGxlRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAg
CiAgICAgaWYgKCF2YWx1ZS5pc0VtcHR5KCkgJiYgaGFzT25lQ2hpbGQoKSAmJiBpczxUZXh0Pigq
Zmlyc3RDaGlsZCgpKSkgewogICAgICAgICBkb3duY2FzdDxUZXh0PigqZmlyc3RDaGlsZCgpKS5z
ZXREYXRhKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwCmluZGV4IDJlNDhhZDQ3MDM3MTQ1NjJlMGZiOTBhZjVmN2RiNThmZDNl
MTcyMjcuLjNhYWQ5YjY1NTI1NTJkZjA1ZGQyMDZhZWJmNDJhNmRiZjVkNGFlYTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcApAQCAt
MTExLDcgKzExMSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwcmVwYXJlVG9TdG9wUGFy
c2luZygpCiAKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBi
ZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1
cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICAvLyBOT1RFOiBUaGlzIHB1bXAgc2hvdWxkIG9ubHkgZXZlciBlbWl0IGJ1
ZmZlcmVkIGNoYXJhY3RlciB0b2tlbnMsCiAgICAgLy8gc28gRm9yY2VTeW5jaHJvbm91cyB2cy4g
QWxsb3dZaWVsZCBzaG91bGQgYmUgbWVhbmluZ2xlc3MuCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlcllpZWxkKCkKIHsKICAgICAv
LyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9t
IHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVs
ZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAv
LyBXZSBzaG91bGQgbmV2ZXIgYmUgaGVyZSB1bmxlc3Mgd2UgY2FuIHB1bXAgaW1tZWRpYXRlbHku
CiAgICAgLy8gQ2FsbCBwdW1wVG9rZW5pemVyKCkgZGlyZWN0bHkgc28gdGhhdCBBU1NFUlRTIHdp
bGwgZmlyZSBpZiB3ZSdyZSB3cm9uZy4KQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogCiAgICAg
Ly8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJv
bSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRl
bGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
U2VnbWVudGVkU3RyaW5nIGV4Y2x1ZGVkTGluZU51bWJlclNvdXJjZShzb3VyY2UpOwogICAgIGV4
Y2x1ZGVkTGluZU51bWJlclNvdXJjZS5zZXRFeGNsdWRlTGluZU51bWJlcnMoKTsKQEAgLTM2Niw3
ICszNjYsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6YXBwZW5kKFJlZlB0cjxTdHJpbmdJ
bXBsPiYmIGlucHV0U291cmNlKQogCiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhp
cyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdl
IG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1l
bnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgU3RyaW5nIHNvdXJjZShXVEZNb3ZlKGlucHV0U291
cmNlKSk7CiAKQEAgLTQ5Myw3ICs0OTMsNyBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6cmVz
dW1lUGFyc2luZ0FmdGVyU2NyaXB0RXhlY3V0aW9uKCkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIg
Y2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAog
ICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBS
ZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3Vt
ZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1faW5zZXJ0aW9uUHJlbG9h
ZFNjYW5uZXIgPSBudWxscHRyOwogICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEFsbG93WWll
bGQpOwpAQCAtNTI1LDcgKzUyNSw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpub3RpZnlG
aW5pc2hlZChDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyY2UpCiB7CiAgICAgLy8gcHVtcFRv
a2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9j
dW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0
LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxI
VE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQVNTRVJUKG1f
c2NyaXB0UnVubmVyKTsKICAgICBBU1NFUlQoIWlzRXhlY3V0aW5nU2NyaXB0KCkpOwpAQCAtNTUy
LDcgKzU1Miw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpleGVjdXRlU2NyaXB0c1dhaXRp
bmdGb3JTdHlsZXNoZWV0cygpCiAKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlz
IHBhcnNlciB0byBiZSBkZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2Ug
bmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgbV9zY3JpcHRSdW5uZXItPmV4ZWN1dGVTY3JpcHRzV2Fp
dGluZ0ZvclN0eWxlc2hlZXRzKCk7CiAgICAgaWYgKCFpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCiAg
ICAgICAgIHJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlvbigpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKaW5kZXggZmVhNWZk
MjU4ODA2ZTM4NWZkZmRhMTNkYjg4YTEwNDQ4MDVmZWM5NS4uYTYxMDg3ZTY2ZjIyOGZkNzA1YTNm
OTE1Njk5OTYyYjAyOGZkY2M0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFk
b3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9TbGlkZXJUaHVtYkVsZW1lbnQuY3BwCkBAIC0yNDMsNyArMjQzLDcgQEAgRWxlbWVudCogU2xp
ZGVyVGh1bWJFbGVtZW50Ojpmb2N1c0RlbGVnYXRlKCkKIAogdm9pZCBTbGlkZXJUaHVtYkVsZW1l
bnQ6OmRyYWdGcm9tKGNvbnN0IExheW91dFBvaW50JiBwb2ludCkKIHsKLSAgICBSZWY8U2xpZGVy
VGh1bWJFbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U2xpZGVyVGh1bWJFbGVtZW50
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBzZXRQb3NpdGlvbkZyb21Qb2ludChwb2ludCk7
CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBzdGFydERyYWdnaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKaW5kZXggZjgyNzdhMGZj
ZjM1Y2IwNGMyMmQyNGM2OGY5NjJmODlhOGZkMjc1MC4uZWNkYjVkYWRhZDczYzhlNDhhZTdjMDg4
MzMyOWRjYTllMTFhMGNkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
U3BpbkJ1dHRvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Nw
aW5CdXR0b25FbGVtZW50LmNwcApAQCAtOTQsNyArOTQsNyBAQCB2b2lkIFNwaW5CdXR0b25FbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIC8vIFRo
ZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG9mIEhUTUxJbnB1dEVsZW1lbnQgbWF5IHJ1biBKYXZhU2Ny
aXB0CiAgICAgICAgICAgICAvLyBjb2RlIHdoaWNoIGRldGFjaGVzIHRoaXMgc2hhZG93IG5vZGUu
IFdlIG5lZWQgdG8gdGFrZSBhIHJlZmVyZW5jZQogICAgICAgICAgICAgLy8gYW5kIGNoZWNrIHJl
bmRlcmVyKCkgYWZ0ZXIgc3VjaCBmdW5jdGlvbiBjYWxscy4KLSAgICAgICAgICAgIFJlZjxTcGlu
QnV0dG9uRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgICAgICBSZWY8U3BpbkJ1dHRv
bkVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICAgICAgaWYgKG1fc3BpbkJ1
dHRvbk93bmVyKQogICAgICAgICAgICAgICAgIG1fc3BpbkJ1dHRvbk93bmVyLT5mb2N1c0FuZFNl
bGVjdFNwaW5CdXR0b25Pd25lcigpOwogICAgICAgICAgICAgaWYgKHJlbmRlcmVyKCkpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcAppbmRleCBmMzVmZWQ5NzQyOTcwZjU3ZDQyNTY3MDgxNmExNjQ2Mzk5ZTA1
ZjJjLi40NTlkZmU0NDJmNzY5MGJkMmExMjZhMzNkM2RhNWU2MGEzNjk4MDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHB1YmxpYzoKIAogICAgICAgICAvLyBEaXNwYXRj
aGluZyBhIG1lc3NhZ2UgY2FuIHBvc3NpYmx5IGNsb3NlIHRoZSBmcm9udGVuZCBhbmQgZGVzdHJv
eQogICAgICAgICAvLyB0aGUgb3duaW5nIGZyb250ZW5kIGNsaWVudCwgc28ga2VlcCBhIHByb3Rl
Y3RvciByZWZlcmVuY2UgaGVyZS4KLSAgICAgICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRj
aFRhc2s+IHByb3RlY3QoKnRoaXMpOworICAgICAgICBSZWY8SW5zcGVjdG9yQmFja2VuZERpc3Bh
dGNoVGFzaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgaWYgKCFtX21lc3NhZ2Vz
LmlzRW1wdHkoKSkKICAgICAgICAgICAgIG1faW5zcGVjdGVkUGFnZUNvbnRyb2xsZXItPmRpc3Bh
dGNoTWVzc2FnZUZyb21Gcm9udGVuZChtX21lc3NhZ2VzLnRha2VGaXJzdCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDZmMmRlZGRhN2QwMTNlODhlMzll
M2RkYWNjOTg0OGJiZTljZjUxZDguLjk3Y2JmNjM4NGIzMzBhZmQyOWNjMWI4MDk1ZGY1OWM2ZWZm
YzRjZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMjc1
LDggKzI3NSw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6Om1haW5SZWNlaXZlZEVycm9yKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogLy8gYnV0IG5vdCBsb2FkcyBpbml0aWF0ZWQgYnkgY2hp
bGQgZnJhbWVzJyBkYXRhIHNvdXJjZXMgLS0gdGhhdCdzIHRoZSBXZWJGcmFtZSdzIGpvYi4KIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKIHsKLSAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3RGcmFtZShtX2ZyYW1lKTsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RMb2Fk
ZXIoKnRoaXMpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7Cisg
ICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIElu
IHNvbWUgcmFyZSBjYXNlcywgY2FsbGluZyBGcmFtZUxvYWRlcjo6c3RvcExvYWRpbmcgY291bGQg
Y2F1c2UgaXNMb2FkaW5nKCkgdG8gcmV0dXJuIGZhbHNlLgogICAgIC8vIChUaGlzIGNhbiBoYXBw
ZW4gd2hlbiB0aGVyZSdzIGEgc2luZ2xlIFhNTEh0dHBSZXF1ZXN0IGN1cnJlbnRseSBsb2FkaW5n
IGFuZCBzdG9wTG9hZGluZyBjYXVzZXMgaXQKQEAgLTQwMCw3ICs0MDAsNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpmaW5pc2hlZExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiAgICAgQVNTRVJU
KCFtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmlzRGVidWdnZXJQYXVzZWQobV9mcmFtZSkpOwogI2VuZGlmCiAKLSAgICBSZWY8RG9j
dW1lbnRMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAobV9pZGVudGlmaWVyRm9yTG9hZFdpdGhvdXRS
ZXNvdXJjZUxvYWRlcikgewogICAgICAgICAvLyBBIGRpZEZpbmlzaExvYWRpbmcgZGVsZWdhdGUg
bWlnaHQgdHJ5IHRvIGNhbmNlbCB0aGUgbG9hZCAoZGVzcGl0ZSBpdApAQCAtNjM3LDcgKzYzNyw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2Uq
IHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlCiAjZW5kaWYKIAogICAgIEFTU0VSVF9VTlVTRUQo
cmVzb3VyY2UsIG1fbWFpblJlc291cmNlID09IHJlc291cmNlKTsKLSAgICBSZWY8RG9jdW1lbnRM
b2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgYm9vbCB3aWxsTG9hZEZhbGxiYWNrID0gbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+bWF5YmVMb2FkRmFsbGJhY2tGb3JNYWluUmVzcG9uc2UocmVxdWVzdCgpLCByZXNw
b25zZSk7CiAKICAgICAvLyBUaGUgbWVtb3J5IGNhY2hlIGRvZXNuJ3QgdW5kZXJzdGFuZCB0aGUg
YXBwbGljYXRpb24gY2FjaGUgb3IgaXRzIGNhY2hpbmcgcnVsZXMuIFNvIGlmIGEgbWFpbiByZXNv
dXJjZSBpcyBzZXJ2ZWQKQEAgLTgxNiw4ICs4MTYsOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpj
b21taXRMb2FkKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAgLy8gQm90aCB1
bmxvYWRpbmcgdGhlIG9sZCBwYWdlIGFuZCBwYXJzaW5nIHRoZSBuZXcgcGFnZSBtYXkgZXhlY3V0
ZSBKYXZhU2NyaXB0IHdoaWNoIGRlc3Ryb3lzIHRoZSBkYXRhc291cmNlCiAgICAgLy8gYnkgc3Rh
cnRpbmcgYSBuZXcgbG9hZCwgc28gcmV0YWluIHRlbXBvcmFyaWx5LgotICAgIFJlZlB0cjxGcmFt
ZT4gcHJvdGVjdEZyYW1lKG1fZnJhbWUpOwotICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVj
dExvYWRlcigqdGhpcyk7CisgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0ZWRGcmFtZShtX2ZyYW1l
KTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
Y29tbWl0SWZSZWFkeSgpOwogICAgIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlciA9IERvY3VtZW50
TG9hZGVyOjpmcmFtZUxvYWRlcigpOwpAQCAtOTk5LDggKzk5OSw4IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmRldGFjaEZyb21GcmFtZSgpCiAgICAgZWxzZQogICAgICAgICBBU1NFUlRfV0lUSF9N
RVNTQUdFKG1fZnJhbWUsICJkZXRhY2hGcm9tRnJhbWUoKSBpcyBiZWluZyBjYWxsZWQgb24gYSBE
b2N1bWVudExvYWRlciB0aGF0IGhhcyBuZXZlciBhdHRhY2hlZCB0byBhbnkgRnJhbWUiKTsKICNl
bmRpZgotICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdEZyYW1lKG1fZnJhbWUpOwotICAgIFJlZjxE
b2N1bWVudExvYWRlcj4gcHJvdGVjdExvYWRlcigqdGhpcyk7CisgICAgUmVmUHRyPEZyYW1lPiBw
cm90ZWN0ZWRGcmFtZShtX2ZyYW1lKTsKKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gSXQgbmV2ZXIgbWFrZXMgc2Vuc2UgdG8gaGF2ZSBhIGRv
Y3VtZW50IGxvYWRlciB0aGF0IGlzIGRldGFjaGVkIGZyb20gaXRzCiAgICAgLy8gZnJhbWUgaGF2
ZSBhbnkgbG9hZHMgYWN0aXZlLCBzbyBraWxsIGFsbCB0aGUgbG9hZHMuCkBAIC0xNDc1LDcgKzE0
NzUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQog
ICAgIEFTU0VSVCghdGltaW5nKCkuZmV0Y2hTdGFydCgpKTsKICAgICB0aW1pbmcoKS5tYXJrRmV0
Y2hTdGFydCgpOwogCi0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsgLy8g
d2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGRlYWxsb2NhdGUgdGhlIHByb3Zpc2lvbmFsIGxvYWRlciAo
d2hpY2ggbWF5IGJlIHVzKSBpZiBpdCBjYW5jZWxzIHRoZSBsb2FkLgorICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1heSBk
ZWFsbG9jYXRlIHRoZSBwcm92aXNpb25hbCBsb2FkZXIgKHdoaWNoIG1heSBiZSB1cykgaWYgaXQg
Y2FuY2VscyB0aGUgbG9hZC4KICAgICB3aWxsU2VuZFJlcXVlc3QobV9yZXF1ZXN0LCBSZXNvdXJj
ZVJlc3BvbnNlKCkpOwogCiAgICAgLy8gd2lsbFNlbmRSZXF1ZXN0KCkgbWF5IGxlYWQgdG8gb3Vy
IEZyYW1lIGJlaW5nIGRldGFjaGVkIG9yIGNhbmNlbGxpbmcgdGhlIGxvYWQgdmlhIG51bGxpbmcg
dGhlIFJlc291cmNlUmVxdWVzdC4KQEAgLTE1NTUsNyArMTU1NSw3IEBAIHZvaWQgRG9jdW1lbnRM
b2FkZXI6OmNhbmNlbFBvbGljeUNoZWNrSWZOZWVkZWQoKQogCiB2b2lkIERvY3VtZW50TG9hZGVy
OjpjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImIHJlc291cmNlRXJy
b3IpCiB7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8
RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIFJlc291cmNlRXJyb3Ig
ZXJyb3IgPSByZXNvdXJjZUVycm9yLmlzTnVsbCgpID8gZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVk
RXJyb3IobV9yZXF1ZXN0KSA6IHJlc291cmNlRXJyb3I7CiAKICAgICBtX2RhdGFMb2FkVGltZXIu
c3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyLmNwcAppbmRleCA1ZjVlZmQ4NDE4YTM3ZWEwMmRmYWI2MzUzYjAyNWE4YTYwNmZhYmU1
Li45MGU0YmZiYzExMjM4OTNhYjEzNTI0NWZiNzQ5Nzc4ZDNiNjk5NWFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMTU1
LDcgKzE1NSw3IEBAIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6fkRvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlcigpCiAKIHZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjYW5jZWwoKQogewot
ICAgIFJlZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
Ly8gQ2FuY2VsIGNhbiByZS1lbnRlciBhbmQgbV9yZXNvdXJjZSBtaWdodCBiZSBudWxsIGhlcmUg
YXMgYSByZXN1bHQuCiAgICAgaWYgKG1fY2xpZW50ICYmIG1fcmVzb3VyY2UpIHsKQEAgLTE5MSw3
ICsxOTEsNyBAQCB2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6cmVkaXJlY3RSZWNlaXZl
ZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIFJlc291cgogICAgIEFTU0VSVChtX2NsaWVudCk7
CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAK
LSAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBp
ZiAoIWlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHJlcXVlc3QudXJsKCksICFyZWRp
cmVjdFJlc3BvbnNlLmlzTnVsbCgpKSkgewogICAgICAgICBtX2NsaWVudC0+ZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKTsKICAgICAgICAgcmVxdWVzdCA9IFJlc291cmNlUmVxdWVzdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDFlODNiMDQw
ZTA0YTMzYjg5MmE1MzA2ZTMwMDk4MmFlYjc4OWU5MWIuLmI3ZmYzNzg0YjVmYzZjN2MyOTIxMTMz
YWE3NTEzNzZjNDgzYzZhODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OnJl
c3BvbnNlUmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJl
cwogICAgIGlmICghbV9sb2FkZXItPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJl
c291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghbV9sb2FkZXItPmNyb3NzT3Jp
Z2luTW9kZSgpLmlzTnVsbCgpICYmICFyZXNvdXJjZS0+cGFzc2VzU2FtZU9yaWdpblBvbGljeUNo
ZWNrKCptX2xvYWRlci0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gY29uc29sZU1lc3NhZ2UoIkNyb3Nz
LW9yaWdpbiBtZWRpYSByZXNvdXJjZSBsb2FkIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3Vy
Y2UgU2hhcmluZyBwb2xpY3kuIik7CiAgICAgICAgIG1fbG9hZGVyLT5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgY29uc29sZU1lc3NhZ2UuZ2V0KCkpOwpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wgTWVkaWFS
ZXNvdXJjZTo6c2hvdWxkQ2FjaGVSZXNwb25zZShDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNv
bnN0IFJlc291cmNlCiB7CiAgICAgQVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0g
bV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsK
KyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAo
bV9jbGllbnQpCiAgICAgICAgIHJldHVybiBtX2NsaWVudC0+c2hvdWxkQ2FjaGVSZXNwb25zZSgq
dGhpcywgcmVzcG9uc2UpOwogICAgIHJldHVybiB0cnVlOwpAQCAtMTcwLDcgKzE3MCw3IEBAIHZv
aWQgTWVkaWFSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3Vy
Y2UsIFJlc291cmNlUmVxdWVzdCYKIHsKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCByZXNv
dXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0
KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
ICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPnJlZGlyZWN0UmVjZWl2ZWQoKnRo
aXMsIHJlcXVlc3QsIHJlc3BvbnNlKTsKIH0KQEAgLTE3OSw3ICsxNzksNyBAQCB2b2lkIE1lZGlh
UmVzb3VyY2U6OmRhdGFTZW50KENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgdW5zaWduZWQgbG9u
ZyBsb25nIGJ5dGVzUwogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09
IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7
CisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYg
KG1fY2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVNlbnQoKnRoaXMsIGJ5dGVzU2VudCwg
dG90YWxCeXRlc1RvQmVTZW50KTsKIH0KQEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIE1lZGlhUmVz
b3VyY2U6OmRhdGFSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbnN0IGNoYXIq
IGRhdGEsIGludAogewogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1f
cmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7Cisg
ICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1f
Y2xpZW50KQogICAgICAgICBtX2NsaWVudC0+ZGF0YVJlY2VpdmVkKCp0aGlzLCBkYXRhLCBkYXRh
TGVuZ3RoKTsKIH0KQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6Om5vdGlm
eUZpbmlzaGVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSkKIHsKICAgICBBU1NFUlQocmVzb3Vy
Y2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0
aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBpZiAobV9jbGllbnQpIHsKICAgICAgICAgaWYgKHJlc291cmNlLT5sb2FkRmFpbGVkT3JDYW5j
ZWxlZCgpKQogICAgICAgICAgICAgbV9jbGllbnQtPmxvYWRGYWlsZWQoKnRoaXMsIHJlc291cmNl
LT5yZXNvdXJjZUVycm9yKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggN2MxOWQzZDMxNWU1MzQwOThhZDE1MDc0
ZGFlMWE1OTRmY2VkOTkwNi4uYjg5YjYwMDI2MzE0MDJjZTViNTBhYjljYWY3NTAxNGViYmJhMWFm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFt
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXIuY3BwCkBAIC05MCwxMSArOTAsMTEgQEAgYm9vbCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAKIHZvaWQgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3Qm
JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZWRpcmVjdFJlc3BvbnNlLCBzdGQ6
OmZ1bmN0aW9uPHZvaWQoUmVzb3VyY2VSZXF1ZXN0JiYpPiYmIGNhbGxiYWNrKQogewotICAgIFJl
ZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQ
dHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAg
ICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMsIFdURk1vdmUocmVxdWVzdCksIHJlZGly
ZWN0UmVzcG9uc2UsIFtwcm90ZWN0LCByZWRpcmVjdFJlc3BvbnNlLCBjYWxsYmFja10oUmVzb3Vy
Y2VSZXF1ZXN0IHJlcXVlc3QpIHsKKyAgICBtX2NsaWVudC0+d2lsbFNlbmRSZXF1ZXN0KHRoaXMs
IFdURk1vdmUocmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFtwcm90ZWN0ZWRUaGlzLCByZWRp
cmVjdFJlc3BvbnNlLCBjYWxsYmFja10oUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QpIHsKICAgICAg
ICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpKQotICAgICAgICAgICAgcHJvdGVjdC0+d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CisgICAgICAgICAgICBw
cm90ZWN0ZWRUaGlzLT53aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChyZXF1ZXN0LCByZWRpcmVjdFJl
c3BvbnNlKTsKIAogICAgICAgICBjYWxsYmFjayhXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICB9KTsK
QEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29ucwogCiB2b2lkIE5ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UpCiB7Ci0gICAgUmVmPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSh0
aGlzLCByZXNwb25zZSk7CiAKQEAgLTEzOSw3ICsxMzksNyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0lu
U3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlQnVmZmVyKFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBi
dWZmZQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRSZWNlaXZlRGF0YU9y
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgsIFBhc3NSZWZQdHI8U2hhcmVkQnVm
ZmVyPiBidWZmZXIsIGxvbmcgbG9uZyBlbmNvZGVkRGF0YUxlbmd0aCwgRGF0YVBheWxvYWRUeXBl
IGRhdGFQYXlsb2FkVHlwZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVEYXRhKHRo
aXMsIGJ1ZmZlciA/IGJ1ZmZlci0+ZGF0YSgpIDogZGF0YSwgYnVmZmVyID8gYnVmZmVyLT5zaXpl
KCkgOiBsZW5ndGgpOwogCkBAIC0xNDgsNyArMTQ4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGUKIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhk
b3VibGUgZmluaXNoVGltZSkKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBub3RpZnlEb25lKCk7CiAKQEAgLTE1OCw3ICsxNTgs
NyBAQCB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGRv
dWJsZSBmaW5pc2hUaW1lKQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpkaWRG
YWlsKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJlZjxOZXRzY2FwZVBsdWdJ
blN0cmVhbUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5ldHNjYXBlUGx1Z0luU3Ry
ZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG5vdGlmeURvbmUoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggMWE4YjYzMjA3NTdm
NTMwY2JkMzRlOGI3MWIwNzYzNTYzYjI5Y2VmZC4uYjc4ZjQwOWFmMmM3OGUyOWZhZWRlMWUzMzZh
M2FlYzk3MDNjZmU4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
CkBAIC05OSw3ICs5OSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OnJlbGVhc2VSZXNvdXJjZXMo
KQogICAgIC8vIGRlYWxsb2NhdGVkIGFuZCByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0
aGlzIG9iamVjdC4KICAgICAvLyBXZSBuZWVkIHRvIHJldGFpbiB0byBhdm9pZCBhY2Nlc3Npbmcg
dGhlIG9iamVjdCBhZnRlciBpdAogICAgIC8vIGhhcyBiZWVuIGRlYWxsb2NhdGVkIGFuZCBhbHNv
IHRvIGF2b2lkIHJlZW50ZXJpbmcgdGhpcyBtZXRob2QuCi0gICAgUmVmPFJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgbV9mcmFtZSA9IG51bGxwdHI7CiAgICAgbV9kb2N1bWVudExvYWRlciA9
IG51bGxwdHI7CkBAIC0xNzEsNyArMTcxLDcgQEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6aW5pdChj
b25zdCBSZXNvdXJjZVJlcXVlc3QmIHIpCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRlbGl2ZXJS
ZXNwb25zZUFuZERhdGEoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFJlZlB0cjxT
aGFyZWRCdWZmZXI+JiYgYnVmZmVyKQogewotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
IAogICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7CiAgICAgaWYgKHJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCkBAIC0yNDcsMzIgKzI0NywzMiBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjps
b2FkRGF0YVVSTCgpCiAgICAgYXV0byB1cmwgPSBtX3JlcXVlc3QudXJsKCk7CiAgICAgQVNTRVJU
KHVybC5wcm90b2NvbElzRGF0YSgpKTsKIAotICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gbG9h
ZGVyKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKICAgICBEYXRhVVJMRGVjb2Rlcjo6U2NoZWR1bGVDb250ZXh0IHNjaGVkdWxlQ29udGV4dDsK
ICNpZiBIQVZFKFJVTkxPT1BfVElNRVIpCiAgICAgaWYgKGF1dG8qIHNjaGVkdWxlZFBhaXJzID0g
bV9mcmFtZS0+cGFnZSgpLT5zY2hlZHVsZWRSdW5Mb29wUGFpcnMoKSkKICAgICAgICAgc2NoZWR1
bGVDb250ZXh0LnNjaGVkdWxlZFBhaXJzID0gKnNjaGVkdWxlZFBhaXJzOwogI2VuZGlmCi0gICAg
RGF0YVVSTERlY29kZXI6OmRlY29kZSh1cmwsIHNjaGVkdWxlQ29udGV4dCwgW2xvYWRlciwgdXJs
XSAoT3B0aW9uYWw8RGF0YVVSTERlY29kZXI6OlJlc3VsdD4gZGVjb2RlUmVzdWx0KSB7Ci0gICAg
ICAgIGlmIChsb2FkZXItPnJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgRGF0YVVSTERlY29k
ZXI6OmRlY29kZSh1cmwsIHNjaGVkdWxlQ29udGV4dCwgW3Byb3RlY3RlZFRoaXMsIHVybF0gKE9w
dGlvbmFsPERhdGFVUkxEZWNvZGVyOjpSZXN1bHQ+IGRlY29kZVJlc3VsdCkgeworICAgICAgICBp
ZiAocHJvdGVjdGVkVGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgaWYgKCFkZWNvZGVSZXN1bHQpIHsKLSAgICAgICAgICAgIGxvYWRlci0+
ZGlkRmFpbChSZXNvdXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwg
IkRhdGEgVVJMIGRlY29kaW5nIGZhaWxlZCIpKTsKKyAgICAgICAgICAgIHByb3RlY3RlZFRoaXMt
PmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVybmFsLCAwLCB1cmws
ICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KLSAgICAgICAgaWYgKGxvYWRlci0+d2FzQ2FuY2VsbGVkKCkpCisgICAgICAgIGlmIChw
cm90ZWN0ZWRUaGlzLT53YXNDYW5jZWxsZWQoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgYXV0byYgcmVzdWx0ID0gZGVjb2RlUmVzdWx0LnZhbHVlKCk7CiAgICAgICAgIGF1dG8gZGF0
YVNpemUgPSByZXN1bHQuZGF0YS0+c2l6ZSgpOwogCiAgICAgICAgIFJlc291cmNlUmVzcG9uc2Ug
ZGF0YVJlc3BvbnNlIHsgdXJsLCByZXN1bHQubWltZVR5cGUsIGRhdGFTaXplLCByZXN1bHQuY2hh
cnNldCB9OwotICAgICAgICBsb2FkZXItPmRpZFJlY2VpdmVSZXNwb25zZShkYXRhUmVzcG9uc2Up
OworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNl
KTsKIAotICAgICAgICBpZiAoIWxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRh
U2l6ZSkKLSAgICAgICAgICAgIGxvYWRlci0+ZGlkUmVjZWl2ZUJ1ZmZlcihyZXN1bHQuZGF0YS5n
ZXQoKSwgZGF0YVNpemUsIERhdGFQYXlsb2FkV2hvbGVSZXNvdXJjZSk7CisgICAgICAgIGlmICgh
cHJvdGVjdGVkVGhpcy0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSAmJiBkYXRhU2l6ZSkKKyAgICAg
ICAgICAgIHByb3RlY3RlZFRoaXMtPmRpZFJlY2VpdmVCdWZmZXIocmVzdWx0LmRhdGEuZ2V0KCks
IGRhdGFTaXplLCBEYXRhUGF5bG9hZFdob2xlUmVzb3VyY2UpOwogCi0gICAgICAgIGlmICghbG9h
ZGVyLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQotICAgICAgICAgICAgbG9hZGVyLT5kaWRGaW5p
c2hMb2FkaW5nKGN1cnJlbnRUaW1lKCkpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPnJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRGaW5p
c2hMb2FkaW5nKGN1cnJlbnRUaW1lKCkpOwogICAgIH0pOwogfQogCkBAIC0zMjgsNyArMzI4LDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXMKIHsKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhp
cyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8K
ICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4
YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIEFTU0VSVCghbV9yZWFjaGVkVGVybWluYWxTdGF0ZSk7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRVhURU5TSU9OUykKQEAgLTQzNSw3ICs0MzUsNyBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcikKIAogICAg
IC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRp
b25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJs
eSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0g
ICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VM
b2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbG9nUmVzb3VyY2VSZXNwb25zZVNv
dXJjZShtX2ZyYW1lLmdldCgpLCByLnNvdXJjZSgpKTsKIApAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZv
aWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgdW5zaWduZWQgbGVuZ3RoLCBQCiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxl
Z2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAv
LyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUg
b2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
ICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CiAKICAgICBhZGRE
YXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBidWZmZXIuZ2V0KCksIGRhdGFQYXlsb2FkVHlwZSk7
CkBAIC01MjMsNyArNTIzLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBS
ZXNvdXJjZUVycm9yJiBlcnJvcikKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVn
YXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8v
IGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBv
ZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgY2xlYW51cEZvckVycm9yKGVycm9yKTsKICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CkBA
IC01NTYsNyArNTU2LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2FuY2VsKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKQogICAgIAogICAgIC8vIHdpbGxDYW5jZWwoKSBhbmQgZGlkRmFpbFRv
TG9hZCgpIGJvdGggY2FsbCBvdXQgdG8gY2xpZW50cyB0aGF0IG1pZ2h0IGRvIAogICAgIC8vIHNv
bWV0aGluZyBjYXVzaW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdCB0byBnbyBh
d2F5LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAKICAgICAvLyBJZiB3ZSBy
ZS1lbnRlciBjYW5jZWwoKSBmcm9tIGluc2lkZSB3aWxsQ2FuY2VsKCksIHdlIHdhbnQgdG8gcGlj
ayB1cCBmcm9tIHdoZXJlIHdlIGxlZnQgCiAgICAgLy8gb2ZmIHdpdGhvdXQgcmUtcnVubmluZyB3
aWxsQ2FuY2VsKCkKQEAgLTY3Miw3ICs2NzIsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjpzaG91
bGRVc2VDcmVkZW50aWFsU3RvcmFnZSgpCiAgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRp
YWxzKCkgPT0gRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHJldHVybiBmcmFt
ZUxvYWRlcigpLT5jbGllbnQoKS5zaG91bGRVc2VDcmVkZW50aWFsU3RvcmFnZShkb2N1bWVudExv
YWRlcigpLCBpZGVudGlmaWVyKCkpOwogfQogCkBAIC02ODcsNyArNjg3LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGwKIAogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1l
dGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRo
aW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlz
IGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAg
aWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzKCkgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFs
cykgewogICAgICAgICBpZiAoaXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMoKSkgewpA
QCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZENhbmNlbEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlCiB7CiAgICAgLy8gUHJv
dGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHBy
b2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVm
aW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8
UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgZnJhbWVMb2FkZXIoKS0+bm90aWZpZXIoKS5kaWRD
YW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVuZ2UpOwogfQogCkBAIC03
MTcsNyArNzE3LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkQ2FuY2VsQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGUKIAogYm9vbCBSZXNvdXJjZUxv
YWRlcjo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZShjb25zdCBQcm90ZWN0
aW9uU3BhY2UmIHByb3RlY3Rpb25TcGFjZSkKIHsKLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPmNsaWVudCgpLmNhbkF1dGhlbnRpY2F0ZUFn
YWluc3RQcm90ZWN0aW9uU3BhY2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBwcm90
ZWN0aW9uU3BhY2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9h
ZGVyLmNwcAppbmRleCA3OGMxNDJiYTQxYmJhMDk2OTAwMmZkNWQ0MDQ3M2RhN2MyZTkyNTVkLi43
ZTdhOWMyYmNhOGU0M2U0OWQ5ODkyYWVhMjJhNWMzNmYwMWY3ZmE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKQEAgLTE2Niw3ICsxNjYsNyBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVl
c3QmIG5ld1JlcXVlc3QsIGNvbgogewogICAgIC8vIFN0b3JlIHRoZSBwcmV2aW91cyBVUkwgYmVj
YXVzZSB0aGUgY2FsbCB0byBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IHdpbGwgbW9k
aWZ5IGl0LgogICAgIFVSTCBwcmV2aW91c1VSTCA9IHJlcXVlc3QoKS51cmwoKTsKLSAgICBSZWY8
U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW5ld1JlcXVlc3QudXJsKCku
aXNWYWxpZCgpKSB7CiAgICAgICAgIGNhbmNlbChjYW5ub3RTaG93VVJMRXJyb3IoKSk7CkBAIC0y
MTYsNyArMjE2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50
ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb24KIHZvaWQgU3VicmVzb3VyY2VM
b2FkZXI6OmRpZFNlbmREYXRhKHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1NlbnQsIHVuc2lnbmVk
IGxvbmcgbG9uZyB0b3RhbEJ5dGVzVG9CZVNlbnQpCiB7CiAgICAgQVNTRVJUKG1fc3RhdGUgPT0g
SW5pdGlhbGl6ZWQpOwotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBt
X3Jlc291cmNlLT5kaWRTZW5kRGF0YShieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9
CiAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
UmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpCiAKICAgICAvLyBSZWZl
cmVuY2UgdGhlIG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9j
ZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyByZW1vdmluZyB0aGUgbGFz
dCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgMzI2NjIx
Ni4KLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoc2hvdWxk
SW5jbHVkZUNlcnRpZmljYXRlSW5mbygpKQogICAgICAgICByZXNwb25zZS5pbmNsdWRlQ2VydGlm
aWNhdGVJbmZvKCk7CkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoLCBQYXMK
ICAgICBBU1NFUlQobV9zdGF0ZSA9PSBJbml0aWFsaXplZCk7CiAgICAgLy8gUmVmZXJlbmNlIHRo
ZSBvYmplY3QgaW4gdGhpcyBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBj
YW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJl
bmNlIHRvIHRoaXMgb2JqZWN0OyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAg
UmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IHBycEJ1ZmZlcjsKICAgICAKICAgICBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFPckJ1ZmZlcihkYXRhLCBsZW5ndGgsIGJ1ZmZlciwgZW5jb2RlZERhdGFMZW5ndGgsIGRh
dGFQYXlsb2FkVHlwZSk7CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKICAgICBMT0coUmVzb3VyY2VM
b2FkaW5nLCAiUmVjZWl2ZWQgJyVzJy4iLCBtX3Jlc291cmNlLT51cmwoKS5zdHJpbmcoKS5sYXRp
bjEoKS5kYXRhKCkpOwogICAgIGxvZ1Jlc291cmNlTG9hZGVkKG1fZnJhbWUuZ2V0KCksIG1fcmVz
b3VyY2UtPnR5cGUoKSk7CiAKLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJjZSht
X3Jlc291cmNlKTsKIAogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CkBAIC00NDYsNyArNDQ2LDcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJGYWlsZWQgdG8gbG9hZCAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJsKCku
c3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcHJvdGVj
dFJlc291cmNlKG1fcmVzb3VyY2UpOwogICAgIG1fc3RhdGUgPSBGaW5pc2hpbmc7CiAgICAgaWYg
KG1fcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpCkBAIC00NzYsNyArNDc2LDcgQEAg
dm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvcikKICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpOwogICAgIExPRyhSZXNv
dXJjZUxvYWRpbmcsICJDYW5jZWxsZWQgbG9hZCBvZiAnJXMnLlxuIiwgbV9yZXNvdXJjZS0+dXJs
KCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKIAotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRl
cj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgbV9zdGF0ZSA9IG1fc3RhdGUgPT0g
VW5pbml0aWFsaXplZCA/IENhbmNlbGxlZFdoaWxlSW5pdGlhbGl6aW5nIDogRmluaXNoaW5nOwog
I2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdS
ZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3Vy
Y2UuY3BwCmluZGV4IDgyMWE4ODg1NzY4MjZlMmU0NTViZTEzMWY4ZThlZWM5ZjkxZTM4YzAuLmI2
NmQ1NGZhOWExYzM1NjVkNjgzMTZkMTI2NTYxNDAyODBiZjc4YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcApAQCAtNTksNyArNTks
NyBAQCBjb25zdCBjaGFyKiBDYWNoZWRSYXdSZXNvdXJjZTo6Y2FsY3VsYXRlSW5jcmVtZW50YWxE
YXRhQ2h1bmsoU2hhcmVkQnVmZmVyKiBkYXRhLAogCiB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjph
ZGREYXRhQnVmZmVyKFNoYXJlZEJ1ZmZlciYgZGF0YSkKIHsKLSAgICBDYWNoZWRSZXNvdXJjZUhh
bmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBBU1NF
UlQoZGF0YUJ1ZmZlcmluZ1BvbGljeSgpID09IEJ1ZmZlckRhdGEpOwogICAgIG1fZGF0YSA9ICZk
YXRhOwogCkBAIC04Niw3ICs4Niw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OmFkZERhdGEo
Y29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoKQogCiB2b2lkIENhY2hlZFJhd1Jlc291
cmNlOjpmaW5pc2hMb2FkaW5nKFNoYXJlZEJ1ZmZlciogZGF0YSkKIHsKLSAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3kgPSB0aGlzLT5kYXRhQnVm
ZmVyaW5nUG9saWN5KCk7CiAgICAgaWYgKGRhdGFCdWZmZXJpbmdQb2xpY3kgPT0gQnVmZmVyRGF0
YSkgewogICAgICAgICBtX2RhdGEgPSBkYXRhOwpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQgQ2Fj
aGVkUmF3UmVzb3VyY2U6Om5vdGlmeUNsaWVudHNEYXRhV2FzUmVjZWl2ZWQoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQKICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3QodGhpcyk7Cisg
ICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VD
bGllbnQ+IHcobV9jbGllbnRzKTsKICAgICB3aGlsZSAoQ2FjaGVkUmF3UmVzb3VyY2VDbGllbnQq
IGMgPSB3Lm5leHQoKSkKICAgICAgICAgYy0+ZGF0YVJlY2VpdmVkKHRoaXMsIGRhdGEsIGxlbmd0
aCk7CkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZGlkQWRkQ2xp
ZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBjKQogICAgIC8vIFRoZSBjYWxscyB0byB0aGUgY2xp
ZW50IGNhbiByZXN1bHQgaW4gZXZlbnRzIHJ1bm5pbmcsIHBvdGVudGlhbGx5IGNhdXNpbmcKICAg
ICAvLyB0aGlzIHJlc291cmNlIHRvIGJlIGV2aWN0ZWQgZnJvbSB0aGUgY2FjaGUgYW5kIGFsbCBj
bGllbnRzIHRvIGJlIHJlbW92ZWQsCiAgICAgLy8gc28gYSBwcm90ZWN0b3IgaXMgbmVjZXNzYXJ5
LgotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRo
aXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjbGllbnQgPSBzdGF0
aWNfY2FzdDxDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCo+KGMpOwogICAgIHNpemVfdCByZWRpcmVj
dENvdW50ID0gbV9yZWRpcmVjdENoYWluLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlZGlyZWN0Q291bnQ7IGkrKykgewpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OmFsbENsaWVudHNSZW1vdmVkKCkKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJj
ZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghcmVzcG9uc2Uu
aXNOdWxsKCkpIHsKICAgICAgICAgQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3
UmVzb3VyY2VDbGllbnQ+IHcobV9jbGllbnRzKTsKICAgICAgICAgd2hpbGUgKENhY2hlZFJhd1Jl
c291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCkBAIC0xNzcsNyArMTc3LDcgQEAgdm9pZCBDYWNo
ZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmMKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZl
ZChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAgICBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNv
dXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBp
ZiAoIW1faWRlbnRpZmllcikKICAgICAgICAgbV9pZGVudGlmaWVyID0gbV9sb2FkZXItPmlkZW50
aWZpZXIoKTsKICAgICBDYWNoZWRSZXNvdXJjZTo6cmVzcG9uc2VSZWNlaXZlZChyZXNwb25zZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJDRi5jcHAK
aW5kZXggNjllMjk5N2Y0ZWNmNWIxNGMwNTUwZTJhMTllMWE4NjExNmU4ZDFmYi4uNjBiNjhlYmE3
MGI2ZTIwMzAxNTQ1ODMwMThhOTk0YjQzMzY4NWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcApAQCAtMzUsNyArMzUsNyBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFy
cmF5KQogewogICAgIC8vIFJlZmVyZW5jZSB0aGUgb2JqZWN0IGluIHRoaXMgbWV0aG9kIHNpbmNl
IHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvIGFueXRoaW5nIGluY2x1ZGluZwogICAg
IC8vIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1w
bGUgb2YgdGhpcyBpcyA8cmRhcjovL3Byb2JsZW0vMzI2NjIxNj4uCi0gICAgUmVmPFN1YnJlc291
cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRh
QXJyYXkoZGF0YUFycmF5KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21h
Yy9SZXNvdXJjZUxvYWRlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3Vy
Y2VMb2FkZXJNYWMubW0KaW5kZXggYmI5YjE0ZTgxNGI1YjIzOWM3N2U1MWE0ZGJmMTdjZDY1MWMy
NmYwMy4uNTYyMGM5MDIyMWQ0M2ZiNGI3OTY1ZWE2YzM5N2Q1ODE1ODdmZTc5NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNvdXJjZUxvYWRlck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCkBAIC02NCw3ICs2
NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhQXJyYXkoQ0ZBcnJheVJl
ZiBkYXRhQXJyYXkpCiB7CiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0
aG9kIHNpbmNlIHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhp
bmcgaW5jbHVkaW5nIHBvc3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMg
aXMgUmFkYXIgMzI2NjIxNi4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBD
RkluZGV4IGFycmF5Q291bnQgPSBDRkFycmF5R2V0Q291bnQoZGF0YUFycmF5KTsKICAgICBmb3Ig
KENGSW5kZXggaSA9IDA7IGkgPCBhcnJheUNvdW50OyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAppbmRleCAyYjU5YTMzMjRhZjczY2Q2NTU2ZTljNmM3OGRiZTkxOGJmMGMyY2VhLi40
MTlhOTcwNmY3Zjk4N2ZjZGJkYzhhMzFiNDM2MDNkMmMzMTVhZGEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3cuY3BwCkBAIC0xODg1LDcgKzE4ODUsNyBAQCB2b2lkIERPTVdpbmRvdzo6ZGlzcGF0
Y2hMb2FkRXZlbnQoKQogCiBib29sIERPTVdpbmRvdzo6ZGlzcGF0Y2hFdmVudChFdmVudCYgZXZl
bnQsIEV2ZW50VGFyZ2V0KiB0YXJnZXQpCiB7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8RXZlbnRUYXJnZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAg
ICAgLy8gUGF1c2luZyBhIHBhZ2UgbWF5IHRyaWdnZXIgcGFnZWhpZGUgYW5kIHBhZ2VzaG93IGV2
ZW50cy4gV2ViQ29yZSBhbHNvIGltcGxpY2l0bHkgZmlyZXMgdGhlc2UKICAgICAvLyBldmVudHMg
d2hlbiBjbG9zaW5nIGEgV2ViVmlldy4gSGVyZSB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBzdGF0ZSBv
ZiB0aGUgcGFnZSB0byBwcmV2ZW50IGR1cGxpY2F0ZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93RXh0ZW5zaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93RXh0ZW5zaW9uLmNwcAppbmRleCAwZTYyYjM0MzdhYjhiYjVkZWZlNGMzNmYyNTkyMzkx
NjNmNWNkYjBlLi45YzI1ZTVkMTFmMzk1YWIwYmIzNGEwYTJjMzM5NzdjYjMwNGVhMTY3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dFeHRlbnNpb24uY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjpkaXNjb25uZWN0RnJhbWVGb3JEb2N1bWVudFN1
c3BlbnNpb24oKQogewogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQgbWlnaHQgcmVz
dWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAogICAgIC8vIHdo
aWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERPTVdpbmRvd0V4dGVuc2lv
bj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAgICAgCiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAg
ICBmcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0Y2hXaWxsRGlzY29ubmVjdERPTVdpbmRv
d0V4dGVuc2lvbkZyb21HbG9iYWxPYmplY3QodGhpcyk7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQg
RE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluQ2FjaGVkRnJhbWUo
KQogCiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhp
cyBET01XaW5kb3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUg
aXMgc3RpbGwgd29yayB0byBkby4KLSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIG1fZGlzY29ubmVjdGVkRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRpc3BhdGNo
V2lsbERlc3Ryb3lHbG9iYWxPYmplY3RGb3JET01XaW5kb3dFeHRlbnNpb24odGhpcyk7CiAgICAg
bV9kaXNjb25uZWN0ZWRGcmFtZSA9IG51bGxwdHI7CkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgRE9N
V2luZG93RXh0ZW5zaW9uOjp3aWxsRGVzdHJveUdsb2JhbE9iamVjdEluRnJhbWUoKQogCiAgICAg
Ly8gQ2FsbGluZyBvdXQgdG8gdGhlIGNsaWVudCBtaWdodCByZXN1bHQgaW4gdGhpcyBET01XaW5k
b3dFeHRlbnNpb24gYmVpbmcgZGVzdHJveWVkCiAgICAgLy8gd2hpbGUgdGhlcmUgaXMgc3RpbGwg
d29yayB0byBkby4KLSAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8RE9NV2luZG93RXh0ZW5zaW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAg
IGlmICghbV93YXNEZXRhY2hlZCkgewogICAgICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5mcmFt
ZSgpOwpAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRE9NV2luZG93RXh0ZW5zaW9uOjp3aWxsRGV0
YWNoR2xvYmFsT2JqZWN0RnJvbUZyYW1lKCkKIAogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBj
bGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ry
b3llZAogICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERP
TVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4dGVu
c2lvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBGcmFtZSogZnJhbWUgPSB0aGlzLT5m
cmFtZSgpOwogICAgIEFTU0VSVChmcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKaW5k
ZXggMmI3Zjk1M2JiZTgzODY5NWI4Y2ZhMTRhNDMxOGNkYjk2ZGI2NjU5Yi4uNmViYWUyODY4ZTk0
OWRkZWM3ZjE4NGY5ZDk0NDdlY2IyMjlmMDkyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cApAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgRnJhbWVWaWV3OjppbnZhbGlkYXRlUmVjdChjb25z
dCBJbnRSZWN0JiByZWN0KQogCiB2b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmIG5ld1JlY3QpCiB7Ci0gICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgSW50UmVjdCBvbGRS
ZWN0ID0gZnJhbWVSZWN0KCk7CiAgICAgaWYgKG5ld1JlY3QgPT0gb2xkUmVjdCkKICAgICAgICAg
cmV0dXJuOwpAQCAtMTIxOCw3ICsxMjE4LDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29s
IGFsbG93U3VidHJlZSkKICAgICB9CiAKICAgICAvLyBQcm90ZWN0IHRoZSB2aWV3IGZyb20gYmVp
bmcgZGVsZXRlZCBkdXJpbmcgbGF5b3V0IChpbiByZWNhbGNTdHlsZSkuCi0gICAgUmVmPEZyYW1l
Vmlldz4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICAvLyBNYW55IG9mIHRoZSB0YXNrcyBwZXJmb3JtZWQgZHVyaW5nIGxheW91
dCBjYW4gY2F1c2UgdGhpcyBmdW5jdGlvbiB0byBiZSByZS1lbnRlcmVkLAogICAgIC8vIHNvIHNh
dmUgdGhlIGxheW91dCBwaGFzZSBub3cgYW5kIHJlc3RvcmUgaXQgb24gZXhpdC4KQEAgLTMxMTMs
NyArMzExMyw3IEBAIGJvb2wgRnJhbWVWaWV3Ojp1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogCiB2
b2lkIEZyYW1lVmlldzo6dXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXJGaXJlZCgpCiB7Ci0gICAg
UmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIG1fdXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXIuc3Rv
cCgpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXhVcGRhdGVFbWJlZGRlZE9iamVj
dHNJdGVyYXRpb25zOyBpKyspIHsKICAgICAgICAgaWYgKHVwZGF0ZUVtYmVkZGVkT2JqZWN0cygp
KQpAQCAtMzE5MCw3ICszMTkwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBlcmZvcm1Qb3N0TGF5b3V0
VGFza3MoKQogCiAgICAgLy8gbGF5b3V0KCkgcHJvdGVjdHMgRnJhbWVWaWV3LCBidXQgaXQgc3Rp
bGwgY2FuIGdldCBkZXN0cm95ZWQgd2hlbiB1cGRhdGVFbWJlZGRlZE9iamVjdHMoKQogICAgIC8v
IGlzIGNhbGxlZCB0aHJvdWdoIHRoZSBwb3N0IGxheW91dCB0aW1lci4KLSAgICBSZWY8RnJhbWVW
aWV3PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RnJhbWVWaWV3PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIG1fdXBkYXRlRW1iZWRkZWRPYmplY3RzVGltZXIuc3RhcnRPbmVTaG90KDAp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3Bw
CmluZGV4IDAxMmZhM2U2ZWQ4MzgyNTk0YjRiZDA5Nzg0MTIwMjRkZGQyMDZhNGYuLmNhMjJmZDQ2
YWNmZGQzMGMxZjQ3MWFlODFjODk3Yzg3NzlkMjQwNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvYW5pbWF0aW9uL0FuaW1hdGlvbkJhc2UuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgdm9p
ZCBBbmltYXRpb25CYXNlOjpmaXJlQW5pbWF0aW9uRXZlbnRzSWZOZWVkZWQoKQogICAgIC8vIGR1
cmluZyBhbiBhbmltYXRpb24gY2FsbGJhY2sgdGhhdCBtaWdodCBnZXQgY2FsbGVkLiBTaW5jZSB0
aGUgb3duZXIgaXMgYSBDb21wb3NpdGVBbmltYXRpb24KICAgICAvLyBhbmQgaXQgcmVmIGNvdW50
cyB0aGlzIG9iamVjdCwgd2Ugd2lsbCBrZWVwIGEgcmVmIHRvIHRoYXQgaW5zdGVhZC4gVGhhdCB3
YXkgdGhlIEFuaW1hdGlvbkJhc2UKICAgICAvLyBjYW4gc3RpbGwgYWNjZXNzIHRoZSByZXNvdXJj
ZXMgb2YgaXRzIENvbXBvc2l0ZUFuaW1hdGlvbiBhcyBuZWVkZWQuCi0gICAgUmVmPEFuaW1hdGlv
bkJhc2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxBbmltYXRpb25CYXNlPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICAgICBSZWY8Q29tcG9zaXRlQW5pbWF0aW9uPiBwcm90ZWN0Q29tcG9zaXRl
QW5pbWF0aW9uKCptX2NvbXBvc2l0ZUFuaW1hdGlvbik7CiAgICAgCiAgICAgLy8gQ2hlY2sgZm9y
IHN0YXJ0IHRpbWVvdXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCmluZGV4IDQ4Mzk4NmFmNWZiZWZmMTA1ZWY0NGMy
NTgxZWVmOGQxNDQwZjZmNWUuLjAxNWUxODNhMDU5ZThiYmI5NGRjNDE3Y2MxYmNjNzI1YWViYzA1
MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Ny
b2xsaW5nVHJlZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFk
ZWRTY3JvbGxpbmdUcmVlLmNwcApAQCAtNTksOSArNTksOSBAQCBTY3JvbGxpbmdUcmVlOjpFdmVu
dFJlc3VsdCBUaHJlYWRlZFNjcm9sbGluZ1RyZWU6OnRyeVRvSGFuZGxlV2hlZWxFdmVudChjb25z
dCBQbAogICAgIGlmICh3aWxsV2hlZWxFdmVudFN0YXJ0U3dpcGVHZXN0dXJlKHdoZWVsRXZlbnQp
KQogICAgICAgICByZXR1cm4gRGlkTm90SGFuZGxlRXZlbnQ7CiAKLSAgICBSZWZQdHI8VGhyZWFk
ZWRTY3JvbGxpbmdUcmVlPiB0aHJlYWRlZFNjcm9sbGluZ1RyZWUodGhpcyk7Ci0gICAgU2Nyb2xs
aW5nVGhyZWFkOjpkaXNwYXRjaChbdGhyZWFkZWRTY3JvbGxpbmdUcmVlLCB3aGVlbEV2ZW50XSB7
Ci0gICAgICAgIHRocmVhZGVkU2Nyb2xsaW5nVHJlZS0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKKyAgICBSZWZQdHI8VGhyZWFkZWRTY3JvbGxpbmdUcmVlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3Byb3RlY3RlZFRoaXMsIHdoZWVs
RXZlbnRdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+aGFuZGxlV2hlZWxFdmVudCh3aGVlbEV2
ZW50KTsKICAgICB9KTsKICAgICAKICAgICByZXR1cm4gRGlkSGFuZGxlRXZlbnQ7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCmluZGV4IGYyMmQ2YmY4OWNmMmRiNjM5OTI2M2Nj
OTA5ZjYyODY3NzgxODU3MDUuLmM2MjlmYjJlOGEzNTRjZWRlM2UyOGQ2MDIwNGFhZjY3YWRiYzcx
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZpZXcuY3BwCkBAIC0xMDM0LDcgKzEw
MzQsNyBAQCB2b2lkIFNjcm9sbFZpZXc6OnNldFNjcm9sbGJhck92ZXJsYXlTdHlsZShTY3JvbGxi
YXJPdmVybGF5U3R5bGUgb3ZlcmxheVN0eWxlKQogCiB2b2lkIFNjcm9sbFZpZXc6OnNldEZyYW1l
UmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0KQogewotICAgIFJlZjxTY3JvbGxWaWV3PiBwcm90
ZWN0KCp0aGlzKTsKKyAgICBSZWY8U2Nyb2xsVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAg
ICAgSW50UmVjdCBvbGRSZWN0ID0gZnJhbWVSZWN0KCk7CiAgICAgCiAgICAgaWYgKG5ld1JlY3Qg
PT0gb2xkUmVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCmluZGV4IDkwZDgwMTVhODJmNzQzZDAwODBk
ZTc5ZDAyMTZjNzFlMzNlYzllNzQuLmQ5YTYyMjYwYzMwOWUyMzI1MDU0YWIyOWIxMGI1OWFjYTg5
ZTc5OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3Bs
YXlSZWZyZXNoTW9uaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRGlz
cGxheVJlZnJlc2hNb25pdG9yOjpkaXNwbGF5RGlkUmVmcmVzaCgpCiAKICAgICAvLyBUaGUgY2Fs
bCBiYWNrIGNhbiBjYXVzZSBhbGwgb3VyIGNsaWVudHMgdG8gYmUgdW5yZWdpc3RlcmVkLCBzbyB3
ZSBuZWVkIHRvIHByb3RlY3QKICAgICAvLyBhZ2FpbnN0IGRlbGV0aW9uIHVudGlsIHRoZSBlbmQg
b2YgdGhlIG1ldGhvZC4KLSAgICBSZWY8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8RGlzcGxheVJlZnJlc2hNb25pdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAogICAgIC8vIENvcHkgdGhlIGhhc2ggdGFibGUgYW5kIHJlbW92ZSBjbGllbnRzIGZyb20g
aXQgb25lIGJ5IG9uZSBzbyB3ZSBkb24ndCBub3RpZnkKICAgICAvLyBhbnkgY2xpZW50IHR3aWNl
LCBidXQgY2FuIHJlc3BvbmQgdG8gcmVtb3ZhbCBvZiBjbGllbnRzIGR1cmluZyB0aGUgZGVsaXZl
cnkgcHJvY2Vzcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwCmluZGV4IGJjMzIzYTJmZjQzZDRk
ODY3YTQwMDIyYjVkNjE3MGUzOWZlN2YxMTcuLjExNTMyYWQ2ZDkzZWNlMTY4YWM4N2U0OGMyNTdh
MGU5ZGM0NWFlMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhL3dpbi9DQUNGTGF5ZXJUcmVlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVIb3N0LmNwcApAQCAtMjgxLDcgKzI4MSw3
IEBAIHZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OnNldFNob3VsZEludmVydENvbG9ycyhib29sKQog
dm9pZCBDQUNGTGF5ZXJUcmVlSG9zdDo6Zmx1c2hQZW5kaW5nTGF5ZXJDaGFuZ2VzTm93KCkKIHsK
ICAgICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IGNvdWxkIGNhdXNlIG91ciBsYXN0IHJl
ZmVyZW5jZSB0byBnbyBhd2F5LgotICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gcHJvdGVj
dG9yKHRoaXMpOworICAgIFJlZlB0cjxDQUNGTGF5ZXJUcmVlSG9zdD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKIAogICAgIHVwZGF0ZURlYnVnSW5mb0xheWVyKG1fcGFnZS0+c2V0dGluZ3MoKS5zaG93
VGlsZWRTY3JvbGxpbmdJbmRpY2F0b3IoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA0YmNhMjRlZjY3MWZhY2JkNWJm
YTkxNjFiNjk1NzBmMjBlNjg3Y2YyLi42ODQyOTViMTY0MTkxN2I1MzZkZDA0ZWVjOGIxNTY2MjAy
YjY1MTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC03NCwxNCArNzQsMTggQEAgdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2
YXRlR1N0cmVhbWVyOjpoYW5kbGVTYW1wbGUoR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZSkKICAg
ICAgICAgbV9wZW5kaW5nU2FtcGxlcy5hcHBlbmQoc2FtcGxlKTsKICAgICB9CiAKLSAgICBSZWZQ
dHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gcHJvdGVjdG9yKHRoaXMpOwotICAg
IG1fbm90aWZpZXIubm90aWZ5KE1haW5UaHJlYWROb3RpZmljYXRpb246Ok5ld1NhbXBsZSwgW3By
b3RlY3Rvcl0geyBwcm90ZWN0b3ItPm5vdGlmeVRyYWNrT2ZTYW1wbGUoKTsgfSk7CisgICAgUmVm
UHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgbV9ub3RpZmllci5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6TmV3U2FtcGxl
LCBbcHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5ub3RpZnlUcmFja09m
U2FtcGxlKCk7CisgICAgfSk7CiB9CiAKIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJl
YW1lcjo6c3RyZWFtQ2hhbmdlZCgpCiB7Ci0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBtX25vdGlmaWVyLm5vdGlmeShNYWlu
VGhyZWFkTm90aWZpY2F0aW9uOjpTdHJlYW1DaGFuZ2VkLCBbcHJvdGVjdG9yXSB7IHByb3RlY3Rv
ci0+bm90aWZ5VHJhY2tPZlN0cmVhbUNoYW5nZWQoKTsgfSk7CisgICAgUmVmUHRyPEluYmFuZFRl
eHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9ub3Rp
Zmllci5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6U3RyZWFtQ2hhbmdlZCwgW3Byb3Rl
Y3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+bm90aWZ5VHJhY2tPZlN0cmVhbUNo
YW5nZWQoKTsKKyAgICB9KTsKIH0KIAogdm9pZCBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVh
bWVyOjpub3RpZnlUcmFja09mU2FtcGxlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0Lm1t
CmluZGV4IDY4ODk4OWUzZTkxNDYwZTBiZmExYzIzNmVhMTQ0NDc2MjNjYzY4ODkuLjZhNTQ0NjEz
YzNkNmMyNDcwZGJjNDkxOTExY2UzYTU5ZTRjYzMzNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJBVktpdC5tbQpAQCAtMTU0LDEyICsxNTQsMTIgQEAgcHJpdmF0ZToKIHZvaWQgV2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZFNldHVwRnVsbHNjcmVlbigpCiB7CiAgICAg
QVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZXRhaW5Q
dHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxzY3JlZW5WaWV3
IGxheWVyXTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZGVvRnVsbHNj
cmVlbkxheWVyXSB7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRl
b0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0QmFj
a2dyb3VuZENvbG9yOmNhY2hlZENHQ29sb3IoV2ViQ29yZTo6Q29sb3I6OnRyYW5zcGFyZW50KV07
CiAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKHZpZGVvRnVsbHNjcmVl
bkxheWVyLmdldCgpKTsKLSAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXNdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXNdIHsKICAgICAgICAg
ICAgIG1faW50ZXJmYWNlLT5lbnRlckZ1bGxzY3JlZW4oKTsKICAgICAgICAgfSk7CiAgICAgfSk7
CkBAIC0xNjgsMTAgKzE2OCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dDo6ZGlkRXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhy
ZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
c3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXNdIHsK
KyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAg
ICAgICAgIG1fbW9kZWwtPnNldFZpZGVvRnVsbHNjcmVlbkxheWVyKG5pbCk7Ci0gICAgICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlz
XSB7CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtw
cm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51cEZ1
bGxzY3JlZW4oKTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0xODUsOCArMTg1LDggQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3Jl
ZW4oKQogICAgIG1faW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBtX3ZpZGVvRnVsbHNjcmVlblZp
ZXcgPSBuaWw7CiAgICAgCi0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJD
b250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywg
dGhpc10geworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRo
aXNdIHsKICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9GdWxsc2NyZWVuTGF5ZXIobmlsKTsKICAg
ICAgICAgbV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKG51bGxwdHIpOwog
ICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7CkBAIC0yMDAsMTAgKzIw
MCwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVh
bnVwRnVsbHNjcmVlbigpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ry
b25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXNdIHsKKyAg
ICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAg
ICAgIEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92aWRlb0VsZW1l
bnQuZ2V0KCkpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1
ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY2xpZW50UmVjdF0geworICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY2xp
ZW50UmVjdF0gewogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnByZXBhcmVkVG9SZXR1cm5Ub0lu
bGluZSh0cnVlLCBjbGllbnRSZWN0KTsKICAgICAgICAgfSk7CiAgICAgfSk7CkBAIC0yMTQsOCAr
MjE0LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNj
cmVlbk1heVJldHVyblRvSW5saW5lKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3Vy
cmVudCgpIHx8IGlzTWFpblRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXNdIHsKKyAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMsIHRoaXNdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnJlc2V0TWVkaWFTdGF0ZSgpOwogICAgIH0pOwpAQCAtMjI0LDggKzIyNCw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlc2V0TWVkaWFT
dGF0ZSgpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXREdXJh
dGlvbihkb3VibGUgZHVyYXRpb24pCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgp
KTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9u
Z1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGR1cmF0aW9uXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlz
LCBkdXJhdGlvbl0gewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2lu
dGVyZmFjZS0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwogICAgIH0pOwpAQCAtMjM0LDggKzIzNCw4
IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldER1cmF0aW9u
KGRvdWJsZSBkdXJhdGlvbikKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91YmxlIGFuY2hvclRpbWUp
CiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMs
IGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjdXJy
ZW50VGltZSwgYW5jaG9yVGltZV0gewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAg
ICAgICBtX2ludGVyZmFjZS0+c2V0Q3VycmVudFRpbWUoY3VycmVudFRpbWUsIGFuY2hvclRpbWUp
OwogICAgIH0pOwpAQCAtMjQ0LDggKzI0NCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldEN1cnJlbnRUaW1lKGRvdWJsZSBjdXJyZW50VGltZSwgZG91CiB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUo
ZG91YmxlIGJ1ZmZlcmVkVGltZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25n
VGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbc3Ryb25nVGhpcywgdGhpcywgYnVmZmVyZWRUaW1lXSB7CisgICAgUmVmUHRyPFdlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0
aGlzLCBidWZmZXJlZFRpbWVdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAg
ICAgbV9pbnRlcmZhY2UtPnNldEJ1ZmZlcmVkVGltZShidWZmZXJlZFRpbWUpOwogICAgIH0pOwpA
QCAtMjU0LDggKzI1NCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ6OnNldEJ1ZmZlcmVkVGltZShkb3VibGUgYnVmZmVyZWRUaW1lKQogdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0UmF0ZShib29sIGlzUGxheWluZywgZmxvYXQg
cGxheWJhY2tSYXRlKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRo
aXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZV0geworICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAg
ICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhp
cywgdGhpcywgaXNQbGF5aW5nLCBwbGF5YmFja1JhdGVdIHsKICAgICAgICAgaWYgKG1faW50ZXJm
YWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFJhdGUoaXNQbGF5aW5nLCBwbGF5YmFj
a1JhdGUpOwogICAgIH0pOwpAQCAtMjY0LDggKzI2NCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXli
YWNrCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0Rp
bWVuc2lvbnMoYm9vbCBoYXNWaWRlbywgZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCkKIHsKICAg
ICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgaGFzVmlk
ZW8sIHdpZHRoLCBoZWlnaHRdIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGhhc1ZpZGVvLCB3
aWR0aCwgaGVpZ2h0XSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1f
aW50ZXJmYWNlLT5zZXRWaWRlb0RpbWVuc2lvbnMoaGFzVmlkZW8sIHdpZHRoLCBoZWlnaHQpOwog
ICAgIH0pOwpAQCAtMjc0LDkgKzI3NCw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJv
bGxlckNvbnRleHQ6OnNldFZpZGVvRGltZW5zaW9ucyhib29sIGhhc1ZpZGVvLCBmbG9hCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhj
b25zdCBUaW1lUmFuZ2VzJiB0aW1lUmFuZ2VzKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1
cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBjb25zdCBQbGF0Zm9ybVRpbWVS
YW5nZXMmIHBsYXRmb3JtVGltZVJhbmdlcyA9IHRpbWVSYW5nZXMucmFuZ2VzKCk7Ci0gICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMs
IHBsYXRmb3JtVGltZVJhbmdlc10geworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBwbGF0Zm9ybVRpbWVSYW5nZXNdIHsK
ICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFNl
ZWthYmxlUmFuZ2VzKFRpbWVSYW5nZXM6OmNyZWF0ZShwbGF0Zm9ybVRpbWVSYW5nZXMpKTsKICAg
ICB9KTsKQEAgLTI4NSw4ICsyODUsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpzZXRTZWVrYWJsZVJhbmdlcyhjb25zdCBUaW1lUmFuZ2VzJiB0aQogdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNl
KGJvb2wgY2FuUGxheUZhc3RSZXZlcnNlKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJl
bnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBz
dHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjYW5QbGF5RmFzdFJldmVyc2VdIHsKKyAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMsIHRoaXMsIGNhblBsYXlGYXN0UmV2ZXJzZV0gewogICAgICAgICBpZiAobV9pbnRl
cmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGNh
blBsYXlGYXN0UmV2ZXJzZSk7CiAgICAgfSk7CkBAIC0yOTUsMTMgKzI5NSwxMyBAQCB2b2lkIFdl
YlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRDYW5QbGF5RmFzdFJldmVyc2Uo
Ym9vbCBjYW5QbGF5RmFzdAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9w
dGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElz
Q3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgUmV0YWluUHRyPE5TTXV0
YWJsZUFycmF5PiBvcHRpb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkgYWxsb2Nd
IGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9ucy5zaXplKCldKTsKICAgICBmb3IgKGF1dG8mIG5hbWUg
OiBvcHRpb25zKQogICAgICAgICBbb3B0aW9uc0FycmF5IGFkZE9iamVjdDpuYW1lXTsKICAgICAK
LSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhp
cywgdGhpcywgb3B0aW9uc0FycmF5LCBzZWxlY3RlZEluZGV4XSB7CisgICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIG9wdGlv
bnNBcnJheSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICBWZWN0b3I8U3RyaW5nPiBvcHRpb25z
OwogICAgICAgICBmb3IgKE5TU3RyaW5nICpuYW1lIDogb3B0aW9uc0FycmF5LmdldCgpKQogICAg
ICAgICAgICAgb3B0aW9ucy5hcHBlbmQobmFtZSk7CkBAIC0zMTQsMTMgKzMxNCwxMyBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRBdWRpb01lZGlhU2VsZWN0
aW9uT3B0aW9ucyhjb25zdCBWZQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6c2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdCBWZWN0b3I8U3RyaW5n
PiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRleCkKIHsKICAgICBBU1NFUlQoV2ViVGhy
ZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgCiAgICAgUmV0YWlu
UHRyPE5TTXV0YWJsZUFycmF5PiBvcHRpb25zQXJyYXkgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJy
YXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6b3B0aW9ucy5zaXplKCldKTsKICAgICBmb3IgKGF1
dG8mIG5hbWUgOiBvcHRpb25zKQogICAgICAgICBbb3B0aW9uc0FycmF5IGFkZE9iamVjdDpuYW1l
XTsKICAgICAKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgdGhpcywgb3B0aW9uc0FycmF5LCBzZWxlY3RlZEluZGV4XSB7CisgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRo
aXMsIG9wdGlvbnNBcnJheSwgc2VsZWN0ZWRJbmRleF0gewogICAgICAgICBWZWN0b3I8U3RyaW5n
PiBvcHRpb25zOwogICAgICAgICBmb3IgKE5TU3RyaW5nICpuYW1lIDogb3B0aW9uc0FycmF5Lmdl
dCgpKQogICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQobmFtZSk7CkBAIC0zMzMsOSArMzMzLDkg
QEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0TGVnaWJsZU1l
ZGlhU2VsZWN0aW9uT3B0aW9ucyhjb25zdAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0RXh0ZXJuYWxQbGF5YmFjayhib29sIGVuYWJsZWQsIEV4dGVybmFsUGxh
eWJhY2tUYXJnZXRUeXBlIHR5cGUsIFN0cmluZyBsb2NhbGl6ZWREZXZpY2VOYW1lKQogewogICAg
IEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVkTG9jYWxpemVkRGV2aWNlTmFtZShsb2NhbGl6ZWREZXZp
Y2VOYW1lKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
c3Ryb25nVGhpcywgdGhpcywgZW5hYmxlZCwgdHlwZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VO
YW1lXSB7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3By
b3RlY3RlZFRoaXMsIHRoaXMsIGVuYWJsZWQsIHR5cGUsIGNhcHR1cmVkTG9jYWxpemVkRGV2aWNl
TmFtZV0gewogICAgICAgICBpZiAobV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFj
ZS0+c2V0RXh0ZXJuYWxQbGF5YmFjayhlbmFibGVkLCB0eXBlLCBjYXB0dXJlZExvY2FsaXplZERl
dmljZU5hbWUuc3RyaW5nKCkpOwogICAgIH0pOwpAQCAtMzQ0LDggKzM0NCw4IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJhY2soYm9v
bCBlbmFibGVkLCBFeHRlCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpzZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChib29sIGRpc2FibGVkKQogewogICAg
IEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBkaXNhYmxl
ZF0geworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgZGlzYWJsZWRdIHsKICAgICAgICAgaWYgKG1f
aW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdpcmVsZXNzVmlkZW9QbGF5
YmFja0Rpc2FibGVkKGRpc2FibGVkKTsKICAgICB9KTsKQEAgLTM1Niw4ICszNTYsOCBAQCB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRXaXJlbGVzc1ZpZGVvUGxh
eWJhY2tEaXNhYmxlZChib29sCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMp
OwotICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgbW9kZV0geworICAgIFJlZlB0
cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlz
KTsKKyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIG1vZGVdIHsKICAgICAg
ICAgaWYgKG1fbW9kZWwpCiAgICAgICAgICAgICBtX21vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1v
ZGUobW9kZSk7CiAgICAgfSk7CkBAIC0zNjYsMTMgKzM2NiwxMyBAQCB2b2lkIFdlYlZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlh
RWxlbWVudAogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0Vmlk
ZW9MYXllckZyYW1lKEZsb2F0UmVjdCBmcmFtZSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgp
KTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9u
Z1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIFJldGFpblB0cjxDQUxheWVyPiB2aWRlb0Z1
bGxzY3JlZW5MYXllciA9IFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdOwogICAgIAogICAg
IFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRTdWJsYXllclRyYW5zZm9ybTpbdmlkZW9GdWxsc2Ny
ZWVuTGF5ZXIgdHJhbnNmb3JtXV07CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewotICAgICAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMs
IGZyYW1lLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAgICAgICBXZWJUaHJlYWRSdW4oW3By
b3RlY3RlZFRoaXMsIHRoaXMsIGZyYW1lLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0gewogICAgICAg
ICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24g
c2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldEFu
aW1hdGlvbkR1cmF0aW9uOjBdOwpAQCAtMzg5LDggKzM4OSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJh
bWUpCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0xh
eWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5IHZpZGVvR3Jh
dml0eSkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhy
ZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0dyYXZpdHldIHsKKyAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7Cisg
ICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWRlb0dyYXZpdHldIHsKICAg
ICAgICAgaWYgKG1fbW9kZWwpCiAgICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0xheWVyR3Jh
dml0eSh2aWRlb0dyYXZpdHkpOwogICAgIH0pOwpAQCAtMzk5LDggKzM5OSw4IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJHcmF2aXR5KFdl
YlZpZGVvRnVsbHNjcmVlCiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
OjpmdWxsc2NyZWVuTW9kZUNoYW5nZWQoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRy
PFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwot
ICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgbW9kZV0geworICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
KyAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIG1vZGVdIHsKICAgICAgICAg
aWYgKG1fbW9kZWwpCiAgICAgICAgICAgICBtX21vZGVsLT5mdWxsc2NyZWVuTW9kZUNoYW5nZWQo
bW9kZSk7CiAgICAgfSk7CkBAIC00MjAsOCArNDIwLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1lbnQmIHZp
ZGUKICAgICBSZXRhaW5QdHI8VUlWaWV3PiB2aWV3UmVmID0gdmlldzsKICAgICBtX3ZpZGVvRWxl
bWVudCA9ICZ2aWRlb0VsZW1lbnQ7CiAKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlz
cGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVd
IHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKICAgICAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7CiAKICAgICAgICAgbV9pbnRlcmZhY2UgPSBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFW
S2l0OjpjcmVhdGUoKS5nZXQoKSk7CkBAIC00MjksOCArNDI5LDggQEAgdm9pZCBXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxWaWRlb0VsZW1l
bnQmIHZpZGUKICAgICAgICAgbV9pbnRlcmZhY2UtPnNldFdlYlZpZGVvRnVsbHNjcmVlbk1vZGVs
KHRoaXMpOwogICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlblZpZXcgPSBhZG9wdE5TKFtbZ2V0VUlW
aWV3Q2xhc3MoKSBhbGxvY10gaW5pdF0pOwogICAgICAgICAKLSAgICAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgICAg
ICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXMsIHZpZXdSZWYsIG1vZGVdIHsKKyAgICAg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgICAgICBXZWJUaHJlYWRSdW4oW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZp
ZXdSZWYsIG1vZGVdIHsKICAgICAgICAgICAgIG1fbW9kZWwgPSBXZWJWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKFdlYlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50OjpjcmVhdGUoKS5nZXQoKSk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRXZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2UodGhpcyk7CiAgICAgICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Vs
ZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwpAQCAtNDQxLDcgKzQ0MSw3IEBAIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVsbHNjcmVlbihIVE1MVmlk
ZW9FbGVtZW50JiB2aWRlCiAgICAgICAgICAgICBGbG9hdFJlY3QgdmlkZW9MYXllckZyYW1lID0g
RmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdC5zaXplKCkpOwog
ICAgICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckZyYW1lKHZpZGVvTGF5ZXJGcmFtZSk7
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCB2aWRlb0VsZW1lbnRDbGllbnRSZWN0LCB2
aWV3UmVmLCBtb2RlLCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlXSB7CisgICAgICAgICAgICBkaXNw
YXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhp
cywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwgYWxsb3dzUGljdHVyZUlu
UGljdHVyZV0gewogICAgICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXR1cEZ1bGxzY3JlZW4o
Km1fdmlkZW9GdWxsc2NyZWVuVmlldy5nZXQoKSwgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmll
d1JlZi5nZXQoKSwgbW9kZSwgYWxsb3dzUGljdHVyZUluUGljdHVyZSk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CkBAIC00NTIsOCArNDUyLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZXhpdEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChXZWJU
aHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7CiAgICAgSW50UmVjdCBjbGllbnRS
ZWN0ID0gZWxlbWVudFJlY3RJbldpbmRvdyhtX3ZpZGVvRWxlbWVudC5nZXQoKSk7Ci0gICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMp
OwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdU
aGlzLCB0aGlzLCBjbGllbnRSZWN0XSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5j
KGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjbGllbnRS
ZWN0XSB7CiAgICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgICAgICBtX2ludGVyZmFj
ZS0+ZXhpdEZ1bGxzY3JlZW4oY2xpZW50UmVjdCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KaW5kZXggYTE3NGMxNWJiYTU0MWZkYmIyZmFjYTVjNWU0ZWMzODgwZmZjODUz
Yi4uMjY0NzM2YjI2Mjg0MTZmMjBlNDc1MDM0ZDE1NGYyYzJiMzNmOTliZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFW
S2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdC5tbQpAQCAtNjA3LDggKzYwNyw4IEBAIHZvaWQgV2ViVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKICAgICAv
LyBJZiB3ZSBhcmUgYm90aCBpbiBQaVAgYW5kIGluIEZ1bGxzY3JlZW4gKGkuZS4sIHZpYSBhdXRv
LVBpUCksIGFuZCB3ZSBkaWQgbm90IHN0b3AgZnVsbHNjcmVlbiB1cG9uIHJldHVybmluZywgaXQg
bXVzdCBiZQogICAgIC8vIGJlY2F1c2UgdGhlIG9yaWdpbmF0aW5nIHZpZXcgaXMgbm90IHZpc2li
bGUsIHNvIGhpZGUgdGhlIGZ1bGxzY3JlZW4gd2luZG93LgogICAgIGlmIChpc01vZGUoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQgfCBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVQaWN0dXJlSW5QaWN0dXJlKSkgewotICAg
ICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXMo
dGhpcyk7Ci0gICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5p
bWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W3N0cm9uZ1RoaXMsIHRoaXNdIChCT09MLCBOU0Vy
cm9yKikgeworICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4
aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMs
IHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgW21fd2luZG93IHNldEhpZGRl
bjpZRVNdOwogICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhp
ZGRlbjpZRVNdOwogICAgICAgICB9XTsKQEAgLTY5MSw4ICs2OTEsOCBAQCB2b2lkIFdlYlZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oVUlWaWV3JiB2aWRlb1Zp
ZXcsIGNvbnN0CiAKICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRdOwogCi0gICAgUmVmUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRp
c3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlz
XSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlcikKICAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5kaWRT
ZXR1cEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKQEAgLTcyOCw3ICs3MjgsNyBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlclBpY3R1cmVJblBpY3R1cmUoKQogdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRh
cmQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCVwKSIsIHRoaXMpOwotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAKICAgICBpZiAoW21fcGxheWVyVmlld0NvbnRyb2xsZXIgaXNQaWN0dXJlSW5QaWN0dXJl
QWN0aXZlXSkgewogICAgICAgICAvLyBOT1RFOiBUaGUgZnVsbHNjcmVlbiBtb2RlIHdpbGwgYmUg
cmVzdG9yZWQgaW4gcHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25I
YW5kbGVyKCkuCkBAIC03MzgsNyArNzM4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQogICAgIH0KIAogICAgIFttX3Bs
YXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6W2dldFVJQ29sb3JDbGFzcygpIGJsYWNr
Q29sb3JdXTsKLSAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBlbnRlckZ1bGxTY3JlZW5Bbmlt
YXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHN0cm9uZ1RoaXNdIChCT09MIHN1Y2Nl
ZWRlZCwgTlNFcnJvciopIHsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBlbnRlckZ1bGxT
Y3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3RoaXMsIHByb3RlY3RlZFRoaXNd
IChCT09MIHN1Y2NlZWRlZCwgTlNFcnJvciopIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKHN1Y2Nl
ZWRlZCk7CiAgICAgICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkIC0gbGFtYmRhKCVwKSAtIHN1Y2NlZWRl
ZCglcykiLCB0aGlzLCBib29sU3RyaW5nKHN1Y2NlZWRlZCkpOwogICAgICAgICBbbV9wbGF5ZXJW
aWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsKQEAgLTc3MywxNCAr
NzczLDE0IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmV4aXRGdWxs
c2NyZWVuKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGZpCiAgICAgICAgIFttX3dpbmRvdyBzZXRI
aWRkZW46Tk9dOwogICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9wUGljdHVyZUlu
UGljdHVyZV07CiAgICAgfSBlbHNlIGlmIChpc01vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpW
aWRlb0Z1bGxzY3JlZW5Nb2RlUGljdHVyZUluUGljdHVyZSB8IEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgewotICAgICAgICBSZWZQdHI8V2ViVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Tk8gY29tcGxldGlv
bkhhbmRsZXI6W3N0cm9uZ1RoaXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgeworICAgICAgICBS
ZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0
ZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMsIHRoaXNdIChCT09MLCBOU0Vy
cm9yKikgewogICAgICAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpOT107CiAgICAgICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07CiAgICAgICAg
IH1dOwogICAgIH0gZWxzZSBpZiAoaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZVN0YW5kYXJkKSkgewotICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgICAgIFttX3BsYXllclZp
ZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVy
OltzdHJvbmdUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKKyAgICAgICAgUmVmUHRyPFdl
YlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAg
ICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBj
b21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcywgdGhpc10gKEJPT0wsIE5TRXJyb3IqKSB7
CiAgICAgICAgICAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOwogCiAgICAgICAgICAgICBbQ0FU
cmFuc2FjdGlvbiBiZWdpbl07CkBAIC05MDcsOCArOTA3LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGlm
IChtX21vZGUgJiBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFu
ZGFyZCkgewogICAgICAgICBpZiAoIVttX3BsYXllclZpZXdDb250cm9sbGVyIHBpY3R1cmVJblBp
Y3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZF0pIHsKLSAgICAgICAgICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsK
LSAgICAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOltzdHJvbmdUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJv
ciopIHsKKyAgICAgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9s
bGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0
ZWRUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKICAgICAgICAgICAgICAgICBbbV93aW5k
b3cgc2V0SGlkZGVuOllFU107CiAgICAgICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddIHNldEhpZGRlbjpZRVNdOwogICAgICAgICAgICAgfV07CkBAIC05OTYsMTAgKzk5
NiwxMCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldAogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlz
KHRoaXMpOworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZXRhaW5QdHI8aWQ+IHN0cm9uZ0NvbXBsZXRpb25IYW5k
bGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwotICAgIGZ1bGxzY3JlZW5N
YXlSZXR1cm5Ub0lubGluZShbc3Ryb25nVGhpcywgc3Ryb25nQ29tcGxldGlvbkhhbmRsZXJdKGJv
b2wgcmVzdG9yZWQpICB7Ci0gICAgICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21w
bGV0aW9uSGFuZGxlciBsYW1iZGEoJXApIC0gcmVzdG9yZWQoJXMpIiwgc3Ryb25nVGhpcy5nZXQo
KSwgYm9vbFN0cmluZyhyZXN0b3JlZCkpOworICAgIGZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGlu
ZShbcHJvdGVjdGVkVGhpcywgc3Ryb25nQ29tcGxldGlvbkhhbmRsZXJdKGJvb2wgcmVzdG9yZWQp
ICB7CisgICAgICAgIExPRyhGdWxsc2NyZWVuLCAiV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxl
ciBsYW1iZGEoJXApIC0gcmVzdG9yZWQoJXMpIiwgcHJvdGVjdGVkVGhpcy5nZXQoKSwgYm9vbFN0
cmluZyhyZXN0b3JlZCkpOwogICAgICAgICB2b2lkICheY29tcGxldGlvbkhhbmRsZXIpKEJPT0wg
cmVzdG9yZWQpID0gc3Ryb25nQ29tcGxldGlvbkhhbmRsZXIuZ2V0KCk7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKHJlc3RvcmVkKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tCmluZGV4IDViYTI4MjFiNzBiOWMyNTI0YzYxNjBhMjc5NWY0OTQzY2E1
NGYzYjMuLjBlNzc4N2QwMjM2ZjI2MDljODUzOTZhYzRiM2Q2MGI3NzgyZGFiOTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQpAQCAtMTYwLDcgKzE2MCw3IEBAIHZv
aWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIAogICAgIC8vIFRh
a2UgYSByZWZlcmVuY2UgdG8gdGhpcyBXaWRnZXQsIGJlY2F1c2Ugc2VuZGluZyBtZXNzYWdlcyB0
byBvdXRlclZpZXcgY2FuIGludm9rZSBhcmJpdHJhcnkKICAgICAvLyBjb2RlIGluY2x1ZGluZyBy
ZWNhbGMgc3R5bGUvbGF5b3V0LCB3aGljaCBjYW4gZGVyZWYgaXQuCi0gICAgUmVmPFdpZGdldD4g
cHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFdpZGdldD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBOU1JlY3QgZnJhbWUgPSByZWN0OwogICAgIGlmICghTlNFcXVhbFJlY3RzKGZyYW1lLCBv
dXRlclZpZXcuZnJhbWUpKSB7CkBAIC0yMDQsNyArMjA0LDcgQEAgdm9pZCBXaWRnZXQ6OnBhaW50
KEdyYXBoaWNzQ29udGV4dCYgcCwgY29uc3QgSW50UmVjdCYgcikKIAogICAgIC8vIFRha2UgYSBy
ZWZlcmVuY2UgdG8gdGhpcyBXaWRnZXQsIGJlY2F1c2Ugc2VuZGluZyBtZXNzYWdlcyB0byB0aGUg
dmlld3MgY2FuIGludm9rZSBhcmJpdHJhcnkKICAgICAvLyBjb2RlLCB3aGljaCBjYW4gZGVyZWYg
aXQuCi0gICAgUmVmPFdpZGdldD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFdpZGdldD4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBOU0dyYXBoaWNzQ29udGV4dCAqY3VycmVudENvbnRl
eHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogICAgIGlmIChjdXJyZW50
Q29udGV4dCA9PSBbW3ZpZXcgd2luZG93XSBncmFwaGljc0NvbnRleHRdIHx8ICFbY3VycmVudENv
bnRleHQgaXNEcmF3aW5nVG9TY3JlZW5dKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAKaW5kZXggY2ZhZTIzMzg3MDli
NzM0M2VkMjk4NzkzNWNkYjI2YzRhYjYyZmQ3Mi4uNTNlYjI1YTA0ZDExNGJiMGNjNThkYTdmZWIx
NWJiYTFmN2M3NDU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVzb3VyY2VIYW5kbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcApAQCAtMTg3LDExICsxODcsMTEgQEAgdm9pZCBC
bG9iUmVzb3VyY2VIYW5kbGU6OnN0YXJ0KCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFJlZlB0cjxCbG9iUmVzb3VyY2VIYW5kbGU+IGhhbmRsZSh0aGlzKTsKKyAgICBSZWZQdHI8Qmxv
YlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgLy8gRmluaXNoIHRo
aXMgYXN5bmMgY2FsbCBxdWlja2x5IGFuZCByZXR1cm4uCi0gICAgY2FsbE9uTWFpblRocmVhZChb
aGFuZGxlXSB7Ci0gICAgICAgIGhhbmRsZS0+ZG9TdGFydCgpOworICAgIGNhbGxPbk1haW5UaHJl
YWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZG9TdGFydCgpOwog
ICAgIH0pOwogfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6
OmRvU3RhcnQoKQogICAgIGlmIChtX2FzeW5jKQogICAgICAgICBnZXRTaXplRm9yTmV4dCgpOwog
ICAgIGVsc2UgewotICAgICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlz
KTsgLy8gZ2V0U2l6ZUZvck5leHQgY2FsbHMgdGhlIGNsaWVudAorICAgICAgICBSZWY8QmxvYlJl
c291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gZ2V0U2l6ZUZvck5leHQgY2Fs
bHMgdGhlIGNsaWVudAogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYmxvYkRhdGEt
Pml0ZW1zKCkuc2l6ZSgpICYmICFtX2Fib3J0ZWQgJiYgIW1fZXJyb3JDb2RlOyArK2kpCiAgICAg
ICAgICAgICBnZXRTaXplRm9yTmV4dCgpOwogICAgICAgICBub3RpZnlSZXNwb25zZSgpOwpAQCAt
MjQ0LDcgKzI0NCw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpnZXRTaXplRm9yTmV4dCgp
CiAKICAgICAgICAgLy8gU3RhcnQgcmVhZGluZyBpZiBpbiBhc3luY2hyb25vdXMgbW9kZS4KICAg
ICAgICAgaWYgKG1fYXN5bmMpIHsKLSAgICAgICAgICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+
IHByb3RlY3QoKnRoaXMpOworICAgICAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgICAgICAgICBub3RpZnlSZXNwb25zZSgpOwogICAgICAg
ICAgICAgbV9idWZmZXIucmVzaXplKGJ1ZmZlclNpemUpOwogICAgICAgICAgICAgcmVhZEFzeW5j
KCk7CkBAIC0zMzYsNyArMzM2LDcgQEAgaW50IEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZFN5bmMo
Y2hhciogYnVmLCBpbnQgbGVuZ3RoKQogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKICAg
ICBBU1NFUlQoIW1fYXN5bmMpOwotICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgaW50IG9mZnNldCA9IDA7CiAgICAgaW50IHJlbWFpbmluZyA9IGxlbmd0aDsKQEAg
LTQ2Niw3ICs0NjYsNyBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERhdGFBc3luYyhj
b25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0pCiAgICAgQVNTRVJUKG1fYXN5bmMpOwogICAgIEFTU0VS
VChpdGVtLmRhdGEoKS5kYXRhKCkpOwogCi0gICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJv
dGVjdCgqdGhpcyk7CisgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAKICAgICBsb25nIGxvbmcgYnl0ZXNUb1JlYWQgPSBpdGVtLmxlbmd0aCgpIC0gbV9j
dXJyZW50SXRlbVJlYWRTaXplOwogICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5p
bmdTaXplKQpAQCAtNTE5LDcgKzUxOSw3IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpkaWRS
ZWFkKGludCBieXRlc1JlYWQpCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6Y29uc3VtZURhdGEo
Y29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVhZCkKIHsKICAgICBBU1NFUlQobV9hc3luYyk7
Ci0gICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJs
b2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBtX3RvdGFsUmVt
YWluaW5nU2l6ZSAtPSBieXRlc1JlYWQ7CiAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIEJsb2JS
ZXNvdXJjZUhhbmRsZTo6Y29uc3VtZURhdGEoY29uc3QgY2hhciogZGF0YSwgaW50IGJ5dGVzUmVh
ZCkKIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpmYWlsZWQoaW50IGVycm9yQ29kZSkKIHsKICAg
ICBBU1NFUlQobV9hc3luYyk7Ci0gICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgq
dGhpcyk7CisgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
CiAKICAgICAvLyBOb3RpZnkgdGhlIGNsaWVudC4KICAgICBub3RpZnlGYWlsKGVycm9yQ29kZSk7
CkBAIC01NjcsNyArNTY3LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6Om5vdGlmeVJlc3Bv
bnNlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZXJyb3JDb2RlKSB7Ci0gICAgICAg
IFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgICAgICBSZWY8Qmxv
YlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgbm90aWZ5UmVz
cG9uc2VPbkVycm9yKCk7CiAgICAgICAgIG5vdGlmeUZpbmlzaCgpOwogICAgIH0gZWxzZQpAQCAt
NjY1LDkgKzY2NSw5IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpub3RpZnlGaW5pc2goKQog
CiAgICAgLy8gU2NoZWR1bGUgdG8gbm90aWZ5IHRoZSBjbGllbnQgZnJvbSBhIHN0YW5kYWxvbmUg
ZnVuY3Rpb24gYmVjYXVzZSB0aGUgY2xpZW50IG1pZ2h0IGRpc3Bvc2UgdGhlIGhhbmRsZSBpbW1l
ZGlhdGVseSBmcm9tIHRoZSBjYWxsYmFjayBmdW5jdGlvbgogICAgIC8vIHdoaWxlIHdlIHN0aWxs
IGhhdmUgQmxvYlJlc291cmNlSGFuZGxlIGNhbGxzIGluIHRoZSBzdGFjay4KLSAgICBSZWZQdHI8
QmxvYlJlc291cmNlSGFuZGxlPiBoYW5kbGUodGhpcyk7Ci0gICAgY2FsbE9uTWFpblRocmVhZChb
aGFuZGxlXSB7Ci0gICAgICAgIGRvTm90aWZ5RmluaXNoKCpoYW5kbGUpOworICAgIFJlZlB0cjxC
bG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbcHJvdGVjdGVkVGhpc10geworICAgICAgICBkb05vdGlmeUZpbmlzaCgqcHJvdGVjdGVk
VGhpcyk7CiAgICAgfSk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IGM5NWE2NTgyM2Fi
OTcyNjc5YzE2OWI2YmQwYjg3NTE4YzYxNzhlZDAuLjkwNmU2NjkxMDdiY2NiOGViZDgyNWIyYjhj
OWM4MDI0ZGE2OWYzMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcApAQCAtMzE0LDcgKzMxNCw3IEBA
IHZvaWQgUmVzb3VyY2VIYW5kbGU6OndpbGxTZW5kUmVxdWVzdChSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIGNvbnN0IFJlc291cmNlUmVzCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBSZWY8UmVz
b3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJv
dGVjdGVkVGhpcygqdGhpcyk7CiAgICAgaWYgKGQtPm1fdXNlc0FzeW5jQ2FsbGJhY2tzKQogICAg
ICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVzdCwgcmVkaXJl
Y3RSZXNwb25zZSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRo
T3BlcmF0aW9uUXVldWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNw
cAppbmRleCA5NGQ1ZTk1NDcyY2M0NzVmMmVjZDdiMzM3NWIxMWQzN2E3ZTY1ZTM3Li5kYWY5M2Rj
ODQ4YmMxNThkNDdlN2VhNGFlMGViZGMyMjc1ZGZhMjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZS5jcHAKQEAgLTEwNCw3ICsxMDQsNyBAQCBDRlVSTFJlcXVlc3RSZWYgUmVzb3Vy
Y2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6d2lsbFNl
bgogCiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Ig
b2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAg
ICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJk
YSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBw
cm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9u
RGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAo
IXByb3RlY3Rvci0+aGFzSGFuZGxlKCkpIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIFJlc291
cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJl
Y2VpdmVSZXNwb25zZQogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3Bp
ZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNh
bGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVz
ZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4K
LSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNG
VVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
ICAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpIHx8ICFtX2hhbmRsZS0+Y2xpZW50
KCkpIHsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhKENGRAogewogICAg
IC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwg
d2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2Fw
dHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJl
dmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9y
KHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRl
V2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENGUmV0YWluKGRh
dGEpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsK
QEAgLTE4OCw3ICsxODgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZpbmlzaExvYWRpbmcoKQogewogICAgIC8vIEZJ
WE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2gg
aXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAi
dGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBv
dGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMp
OworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNI
YW5kbGUoKSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAt
MjAzLDcgKzIwMyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkRmFpbChDRkVycm9yUmVmCiB7CiAgICAgLy8gRklYTUU6
IFRoZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3
YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlz
IiBieSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVy
IHVuaW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7Cisg
ICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0
aW9uUXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgQ0ZSZXRhaW4oZXJyb3IpOwogICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlm
IChwcm90ZWN0b3ItPmhhc0hhbmRsZSgpICYmIG1faGFuZGxlLT5jbGllbnQoKSkgewpAQCAtMjIw
LDcgKzIyMCw3IEBAIENGQ2FjaGVkVVJMUmVzcG9uc2VSZWYgUmVzb3VyY2VIYW5kbGVDRlVSTENv
bm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6CiB7CiAgICAgLy8gRklYTUU6IFRo
ZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0
ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBi
eSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVu
aW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAg
UmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxl
KCkgfHwgIW1faGFuZGxlLT5jbGllbnQoKSkgewpAQCAtMjQwLDcgKzI0MCw3IEBAIHZvaWQgUmVz
b3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlk
UmVjZWl2ZUNoYWxsZW5nCiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNv
cGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3Qg
Y2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQg
dXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5n
LgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxl
Q0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAgICAgQ0ZSZXRhaW4oY2hhbGxlbmdlKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAocHJvdGVjdG9yLT5oYXNIYW5k
bGUoKSkgewpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5l
Y3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkU2VuZEJvZHlEYXRhKENGCiB7CiAg
ICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0
LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwKICAgICAvLyBj
YXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxhbWJkYSB0byBw
cmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0
b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKCFwcm90ZWN0
b3ItPmhhc0hhbmRsZSgpIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpCiAgICAgICAgICAgICByZXR1
cm47CkBAIC0yNzgsNyArMjc4LDcgQEAgQm9vbGVhbiBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVj
dGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpjYW5SZXNwb25kVG9Qcm8KIHsKICAgICAv
LyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdo
aWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1
cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZl
bnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0
aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdp
dGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9y
LT5oYXNIYW5kbGUoKSkgewpAQCAtMzA4LDcgKzMwOCw3IEBAIHZvaWQgUmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZTo6ZGlkUmVjZWl2ZURhdGFB
cnJhCiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5IGNvcGllcyBwcm90ZWN0
b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1c3QgY2FsbCByZWYoKSwK
ICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBhbmQgdXNlIGEgQysrIGxh
bWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVyaW5nLgotICAgIFJlZlB0
cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
PiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0
aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAg
Q0ZSZXRhaW4oZGF0YUFycmF5KTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAocHJvdGVjdG9yLT5oYXNIYW5kbGUoKSAmJiBtX2hh
bmRsZS0+Y2xpZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0N1cmxEb3dubG9hZC5jcHAKaW5kZXggYTRhZjYxZTA5NzBhMDMyY2Q1ODYwNTJj
OWZkMWIzNTU1MDI3ZDQzMy4uYzZjODc5N2JiY2EwMmM5NTliZDUzM2U2NDhlY2U0ZDcxZjRhNDc4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxE
b3dubG9hZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1
cmxEb3dubG9hZC5jcHAKQEAgLTQwMyw5ICs0MDMsOSBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlk
UmVjZWl2ZUhlYWRlcihjb25zdCBTdHJpbmcmIGhlYWRlcikKIAogICAgICAgICBpZiAoaHR0cENv
ZGUgPj0gMjAwICYmIGh0dHBDb2RlIDwgMzAwKSB7CiAgICAgICAgICAgICBVUkxDYXB0dXJlIGNh
cHR1cmVkVXJsKGdldEN1cmxFZmZlY3RpdmVVUkwobV9jdXJsSGFuZGxlKSk7Ci0gICAgICAgICAg
ICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWREb3dubG9hZCh0aGlzKTsKKyAgICAgICAg
ICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWREb3dubG9h
ZF0geworICAgICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY2FwdHVyZWRVcmwsIHBy
b3RlY3RlZFRoaXNdIHsKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldFVSTChjYXB0dXJl
ZFVybC51cmwoKSk7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRNaW1lVHlwZShleHRy
YWN0TUlNRVR5cGVGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkKEhUVFBI
ZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNl
dFRleHRFbmNvZGluZ05hbWUoZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKG1fcmVzcG9uc2Uu
aHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50VHlwZSkpKTsKQEAgLTQxNiw5
ICs0MTYsOSBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZUhlYWRlcihjb25zdCBTdHJp
bmcmIGhlYWRlcikKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmdDYXB0dXJlIGNhcHR1cmVk
SGVhZGVyKGhlYWRlcik7CiAKLSAgICAgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVjdGVk
RG93bmxvYWQodGhpcyk7CisgICAgICAgIFJlZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgY2FwdHVyZWRIZWFk
ZXIsIHByb3RlY3RlZERvd25sb2FkXSB7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMs
IGNhcHR1cmVkSGVhZGVyLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICBpbnQgc3BsaXRQ
b3MgPSBjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5maW5kKCI6Iik7CiAgICAgICAgICAgICBpZiAo
c3BsaXRQb3MgIT0gLTEpCiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQSGVhZGVy
RmllbGQoY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCkubGVmdChzcGxpdFBvcyksIGNhcHR1cmVkSGVh
ZGVyLnN0cmluZygpLnN1YnN0cmluZyhzcGxpdFBvcyArIDEpLnN0cmlwV2hpdGVTcGFjZSgpKTsK
QEAgLTQzMCw5ICs0MzAsOSBAQCB2b2lkIEN1cmxEb3dubG9hZDo6ZGlkUmVjZWl2ZURhdGEodm9p
ZCogZGF0YSwgaW50IHNpemUpCiB7CiAgICAgTG9ja0hvbGRlciBsb2NrZXIobV9tdXRleCk7CiAK
LSAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWREb3dubG9hZCh0aGlzKTsKKyAgICBS
ZWZQdHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgY2FsbE9uTWFp
blRocmVhZChbdGhpcywgc2l6ZSwgcHJvdGVjdGVkRG93bmxvYWRdIHsKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBzaXplLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgIGRpZFJlY2VpdmVE
YXRhT2ZMZW5ndGgoc2l6ZSk7CiAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5kZXggOGEyNjg4
OGU3YjIzZGM0MjRiOThiNTFlNzgyMjdiOWViMmYwMTcyNS4uYmU0MzZkYWQ2MWY0ZDAyNTAyNGQ2
N2FmNDY3ZjQwZGRhYmI3OGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KQEAgLTQ5MSw3ICs0OTEsNyBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAgIGlmIChkLT5tX3VzZXNBc3luY0NhbGxiYWNr
cykgewogICAgICAgICBjbGllbnQoKS0+d2lsbFNlbmRSZXF1ZXN0QXN5bmModGhpcywgcmVxdWVz
dCwgcmVkaXJlY3RSZXNwb25zZSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgUmVmPFJlc291cmNl
SGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVzdCh0aGlz
LCByZXF1ZXN0LCByZWRpcmVjdFJlc3BvbnNlKTsKIAogICAgICAgICAvLyBDbGllbnQgY2FsbCBt
YXkgbm90IHByZXNlcnZlIHRoZSBzZXNzaW9uLCBlc3BlY2lhbGx5IGlmIHRoZSByZXF1ZXN0IGlz
IHNlbnQgb3ZlciBJUEMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvU29ja2V0U3RyZWFtSGFuZGxlU291cC5jcHAKaW5kZXggOWNjNWQ4
Y2U5MTgyNzNjMGMzNjc0YTY5Y2RlNDhlZWUyOWYwMjIzMi4uNWY4M2FmNGJiZmVmOTI5ZTBmMmFk
NTY3MzhmNzM2N2Y3ZDVlYmExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5kbGVTb3VwLmNwcApAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlOjpyZWFkQnl0ZXMoc2lnbmVk
IGxvbmcgYnl0ZXNSZWFkLCBHRXJyb3IqIGVycm9yKQogICAgIH0KIAogICAgIC8vIFRoZSBjbGll
bnQgY2FuIGNsb3NlIHRoZSBoYW5kbGUsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJl
ZmVyZW5jZS4KLSAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBwcm90ZWN0KHRoaXMpOyAK
KyAgICBSZWZQdHI8U29ja2V0U3RyZWFtSGFuZGxlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOyAKICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZVNvY2tldFN0cmVhbURhdGEodGhpcywgbV9yZWFkQnVmZmVy
LmdldCgpLCBieXRlc1JlYWQpOwogICAgIGlmIChtX2lucHV0U3RyZWFtKSAvLyBUaGUgY2xpZW50
IG1heSBoYXZlIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KICAgICAgICAgZ19pbnB1dF9zdHJlYW1f
cmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdldCgpLCBtX3JlYWRCdWZmZXIuZ2V0KCksIFJFQURf
QlVGRkVSX1NJWkUsIEdfUFJJT1JJVFlfREVGQVVMVCwgMCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKaW5kZXggMGRmOGY1YzBkM2ZiMGEzMjhmYzI0ZWY5
YWFkNmUyNTM5NjEwZDEwYS4uZWI4ZmIzYWVmNzk5NmEyODZhOWIwNjczYzFjM2UwZDk2YzJkZTFk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1BvcHVwTWVudVdpbi5jcHAKQEAg
LTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFBvcHVwTWVudVdpbjo6c2hvdyhjb25zdCBJbnRSZWN0JiBy
LCBGcmFtZVZpZXcqIHZpZXcsIGludCBpbmRleCkKICAgICBtX3Nob3dQb3B1cCA9IHRydWU7CiAK
ICAgICAvLyBQcm90ZWN0IHRoZSBwb3B1cCBtZW51IGluIGNhc2UgaXRzIG93bmVyIGlzIGRlc3Ry
b3llZCB3aGlsZSB3ZSdyZSBydW5uaW5nIHRoZSBtZXNzYWdlIHB1bXAuCi0gICAgUmVmUHRyPFBv
cHVwTWVudT4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8UG9wdXBNZW51PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogCiAgICAgOjpTZXRDYXB0dXJlKGhvc3RXaW5kb3cpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKaW5kZXggZjczOWUwMjE4MTgx
NGUwODk3NjQ3MTE4MTRiZjE4YWI1YTRhNDdmMy4uOTVlMDczODQ1OWMyOWExYTNkZjNjMjIxZTlk
ODMxNzU0N2ZiY2RkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJT
Y3JpcHRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0
TG9hZGVyLmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFdvcmtlclNjcmlwdExvYWRlcjo6bG9h
ZEFzeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dAogICAg
IG9wdGlvbnMuY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQgPSBjb250ZW50U2VjdXJp
dHlQb2xpY3lFbmZvcmNlbWVudDsKIAogICAgIC8vIER1cmluZyBjcmVhdGUsIGNhbGxiYWNrcyBt
YXkgaGFwcGVuIHdoaWNoIHJlbW92ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3Qu
Ci0gICAgUmVmPFdvcmtlclNjcmlwdExvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFdv
cmtlclNjcmlwdExvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgbV90aHJlYWRhYmxl
TG9hZGVyID0gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IHRoaXMsICpyZXF1ZXN0LCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggNmFiMzE1OTdhNTQ3NGRmMThlYTllODU4MjRiNWZkMDZhNmVlY2I1OS4u
YzNkNDU4NTQzOTI3NmMxYjYyODU1MTFjZGRjNWYzY2FkNTYzYWUwMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBYTUxIdHRwUmVx
dWVzdDo6Y3JlYXRlUmVxdWVzdChFeGNlcHRpb25Db2RlJiBlYykKIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmFib3J0KCkKIHsKICAgICAvLyBpbnRlcm5hbEFib3J0KCkgY2FsbHMgZHJvcFByb3RlY3Rp
b24oKSwgd2hpY2ggbWF5IHJlbGVhc2UgdGhlIGxhc3QgcmVmZXJlbmNlLgotICAgIFJlZjxYTUxI
dHRwUmVxdWVzdD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICghaW50ZXJuYWxBYm9ydCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC0xMTkyLDcgKzExOTIsNyBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaXNwYXRj
aEVycm9yRXZlbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIHZvaWQgWE1MSHR0cFJlcXVl
c3Q6OmRpZFJlYWNoVGltZW91dCgpCiB7CiAgICAgLy8gaW50ZXJuYWxBYm9ydCgpIGNhbGxzIGRy
b3BQcm90ZWN0aW9uKCksIHdoaWNoIG1heSByZWxlYXNlIHRoZSBsYXN0IHJlZmVyZW5jZS4KLSAg
ICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxYTUxIdHRwUmVx
dWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgaWYgKCFpbnRlcm5hbEFib3J0KCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCAzZmQ3ZGJiZWU5NzFhYjIxMzdlNDlkY2MzN2MxN2Y5MDVkNmRm
ODE0Li4wOTYxYzRkOGE1ZjA5MDRiN2Q1NDJmMmIyMWYwZGYyZWI4ZDRhZWQ4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyLmNwcApAQCAtMjQ2LDcg
KzI0Niw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlKiB1bnVzZWRSZXNvdXJjZSkKICAgICBBU1NFUlQoc2NyaXB0RWxlbWVudCk7CiAKICAg
ICAvLyBKYXZhU2NyaXB0IGNhbiBkZXRhY2ggdGhpcyBwYXJzZXIsIG1ha2Ugc3VyZSBpdCdzIGtl
cHQgYWxpdmUgZXZlbiBpZiBkZXRhY2hlZC4KLSAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHBy
b3RlY3QoKnRoaXMpOworICAgIFJlZjxYTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgCiAgICAgaWYgKGVycm9yT2NjdXJyZWQpCiAgICAgICAgIHNjcmlwdEVsZW1l
bnQtPmRpc3BhdGNoRXJyb3JFdmVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1s
L3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IDZlZWIxMWQ1ZTk4Mjc0
NjA0ZmY5ZjNmMGZjZmUwZDc1YTQ0NGJlOTAuLjdjN2Q5YTFhNzVmMGUyNWQ1ODhiYmIyMjYyNDVh
OGI4ZTNiZmNlYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9j
dW1lbnRQYXJzZXJMaWJ4bWwyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvcGFyc2VyL1hN
TERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIFhNTERv
Y3VtZW50UGFyc2VyOjpkb1dyaXRlKGNvbnN0IFN0cmluZyYgcGFyc2VTdHJpbmcpCiAgICAgaWYg
KHBhcnNlU3RyaW5nLmxlbmd0aCgpKSB7CiAgICAgICAgIC8vIEphdmFTY3JpcHQgbWF5IGNhdXNl
IHRoZSBwYXJzZXIgdG8gZGV0YWNoIGR1cmluZyB4bWxQYXJzZUNodW5rCiAgICAgICAgIC8vIGtl
ZXAgdGhpcyBhbGl2ZSB1bnRpbCB0aGlzIGZ1bmN0aW9uIGlzIGRvbmUuCi0gICAgICAgIFJlZjxY
TUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxYTUxEb2N1bWVu
dFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgWE1MRG9jdW1lbnRQYXJz
ZXJTY29wZSBzY29wZSgmZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKSk7CiAKQEAg
LTg3Miw3ICs4NzIsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjplbmRFbGVtZW50TnMoKQog
CiAgICAgLy8gSmF2YVNjcmlwdCBjYW4gZGV0YWNoIHRoZSBwYXJzZXIuICBNYWtlIHN1cmUgdGhp
cyBpcyBub3QgcmVsZWFzZWQKICAgICAvLyBiZWZvcmUgdGhlIGVuZCBvZiB0aGlzIG1ldGhvZC4K
LSAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxYTUxE
b2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIXVwZGF0ZUxl
YWZUZXh0Tm9kZSgpKQogICAgICAgICByZXR1cm47Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278854</attachid>
            <date>2016-05-13 11:24:22 -0700</date>
            <delta_ts>2016-05-13 16:41:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157610-20160513112514.patch</filename>
            <type>text/plain</type>
            <size>174422</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2EyOThmZGU1NDNjNGM1
NzFiNWY1NmMxNjI0NjI4NGRjOTJmNTYwNS4uYjc4MTE2YWNjZjk4ZTI1NjExMWM0MTA4MzM1ZTdj
MzAzZjU5MGM1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwOSBAQAogMjAxNi0wNS0xMyAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CiAKKyAgICAgICAgUmVuYW1lIGFsbCBwcm90
ZWN0b3IgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCBgcHJvdGVjdGVkVGhpc2AKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzYxMAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAoUmVuYW1pbmcsIG5vIGJlaGF2aW9yIGNoYW5nZSkuCisgICAgICAgIAorICAgICAgICBXZWJD
b3JlIGhhcyBzbyBtYW55IGluc3RhbmNlcyBvZiB0aGVzZSBwcm90ZWN0b3JzIGFzIHdlbGwgYXMg
c28gbXVjaCB2YXJpYW5jZSBpbiBuYW1pbmcgdGhlbSwKKyAgICAgICAgdGhhdCBJIHRoaW5rIGl0
IGRlc2VydmVkIGEgbmV3IHN0eWxlIHBhc3MuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0Zl
dGNoUmVzcG9uc2UuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvTm90aWZp
ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwOgor
ICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAg
KiBNb2R1bGVzL2luZGV4ZWRkYi9jbGllbnQvVHJhbnNhY3Rpb25PcGVyYXRpb24uaDoKKyAgICAg
ICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2UuY3BwOgorICAg
ICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24uY3BwOgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQv
SW5Qcm9jZXNzSURCU2VydmVyLmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL1Vz
ZXJNZWRpYVJlcXVlc3QuY3BwOgorICAgICAgICAqIE1vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3Rp
ZmljYXRpb25DZW50ZXIuY3BwOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmNwcDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmRhdGFiYXNlL0RhdGFiYXNlLmNwcDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHA6CisgICAgICAgICogTW9kdWxlcy93
ZWJzb2NrZXRzL1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAgICAqIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHA6CisgICAgICAgICogYmluZGlu
Z3MvZ29iamVjdC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0RPTUdsb2JhbE9iamVjdFRhc2suY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxiYWNrLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U05vZGVGaWx0ZXJDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNr
LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbi5jcHA6CisgICAgICAgICogYnJpZGdlL3J1bnRpbWVfcm9vdC5jcHA6CisgICAgICAg
ICogY3NzL0NTU0ZvbnRTZWxlY3Rvci5jcHA6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXRDb250
ZW50cy5jcHA6CisgICAgICAgICogZG9tL0NoYXJhY3RlckRhdGEuY3BwOgorICAgICAgICAqIGRv
bS9Db250YWluZXJOb2RlLmNwcDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAg
ICAqIGRvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0LmNwcDoKKyAgICAgICAgKiBkb20vU2NyaXB0
ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBkb20vU3RyaW5nQ2FsbGJhY2su
Y3BwOgorICAgICAgICAqIGh0bWwvSFRNTEVtYmVkRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGb3JtRWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KiBodG1sL0hUTUxPcHRpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRF
bGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGl0
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIu
Y3BwOgorICAgICAgICAqIGh0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHA6CisgICAg
ICAgICogaHRtbC9zaGFkb3cvU3BpbkJ1dHRvbkVsZW1lbnQuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRocmVhZGFibGVM
b2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKiBsb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAq
IGxvYWRlci9SZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcDoKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
OgorICAgICAgICAqIGxvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRlckNGLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tOgorICAgICAgICAqIHBhZ2UvRE9NV2lu
ZG93LmNwcDoKKyAgICAgICAgKiBwYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHA6CisgICAgICAg
ICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAqIHBhZ2UvYW5pbWF0aW9uL0FuaW1hdGlv
bkJhc2UuY3BwOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJl
ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNwcDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3BwOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVy
LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckFWS2l0Lm1tOgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAg
ICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcDoKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJs
L0N1cmxEb3dubG9hZC5jcHA6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW06CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0
cmVhbUhhbmRsZVNvdXAuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4u
Y3BwOgorICAgICAgICAqIHdvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcDoKKyAgICAgICAg
KiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1l
bnRQYXJzZXIuY3BwOgorICAgICAgICAqIHhtbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcDoKKworMjAxNi0wNS0xMyAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKICAgICAgICAgR2l2ZSBDcm9zc1RocmVhZENvcGllciBhIGRlZmF1bHQgc3BlY2lhbGl6YXRp
b24gZm9yIFZlY3RvcnMgb2Ygb2JqZWN0cy4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1NzY3NQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaFJlc3BvbnNlLmNwcAppbmRleCA3YzliOWU2MDhhNWE4Y2I4YjcwNzZkZTZjOTg1
ZDU2ZDRjZTE5YTg2Li42ZjM4OTAyZGE5M2I0N2UxOTY4Njc5NDM5ODQxZDRlYWMyYzE1YWRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAKQEAg
LTI5MSw3ICsyOTEsNyBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBGZXRjaFJlc3BvbnNlOjpCb2R5
TG9hZGVyOjpzdGFydFN0cmVhbWluZygpCiAKIHZvaWQgRmV0Y2hSZXNwb25zZTo6c3RvcCgpCiB7
Ci0gICAgUmVmUHRyPEZldGNoUmVzcG9uc2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEZl
dGNoUmVzcG9uc2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRmV0Y2hCb2R5T3duZXI6OnN0
b3AoKTsKICAgICBpZiAobV9ib2R5TG9hZGVyKSB7CiAgICAgICAgIG1fYm9keUxvYWRlci0+c3Rv
cCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9O
b3RpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlm
aWVyLmNwcAppbmRleCAxMzE2ZDI3NDEzYjg4MTA4NWFlYTc1MWMzMzJmYTk5MjRkZGEyMWRlLi5j
ZWM5N2NjOTAyZTQ1MDY4OTdmZWZiZDNlYWUyZjk3OTA3YWFjYzE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb05vdGlmaWVyLmNwcApAQCAtMTA2LDcg
KzEwNiw3IEBAIHZvaWQgR2VvTm90aWZpZXI6OnRpbWVyRmlyZWQoKQogCiAgICAgLy8gUHJvdGVj
dCB0aGlzIEdlb05vdGlmaWVyIG9iamVjdCwgc2luY2UgaXQKICAgICAvLyBjb3VsZCBiZSBkZWxl
dGVkIGJ5IGEgY2FsbCB0byBjbGVhcldhdGNoIGluIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb05v
dGlmaWVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8R2VvTm90aWZpZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgLy8gVGVzdCBmb3IgZmF0YWwgZXJyb3IgZmlyc3QuIFRoaXMgaXMg
cmVxdWlyZWQgZm9yIHRoZSBjYXNlIHdoZXJlIHRoZSBGcmFtZSBpcwogICAgIC8vIGRpc2Nvbm5l
Y3RlZCBhbmQgcmVxdWVzdHMgYXJlIGNhbmNlbGxlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5kZXggNzYzZDYwNTkxYjFiZmQw
ZjE3YjQwZGZmOGYzMzc0MzI1MjFkYzJmZC4uM2VjNDMxNDM2ZGIyYTVhMTExNGQ2ODFkMWU1M2Vm
NDU4ODIxMjRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9HZW9sb2NhdGlvbi5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpj
bGVhcldhdGNoKGludCB3YXRjaElEKQogdm9pZCBHZW9sb2NhdGlvbjo6c2V0SXNBbGxvd2VkKGJv
b2wgYWxsb3dlZCkKIHsKICAgICAvLyBQcm90ZWN0IHRoZSBHZW9sb2NhdGlvbiBvYmplY3QgZnJv
bSBnYXJiYWdlIGNvbGxlY3Rpb24gZHVyaW5nIGEgY2FsbGJhY2suCi0gICAgUmVmPEdlb2xvY2F0
aW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8R2VvbG9jYXRpb24+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgLy8gVGhpcyBtYXkgYmUgZHVlIHRvIGVpdGhlciBhIG5ldyBwb3NpdGlv
biBmcm9tIHRoZSBzZXJ2aWNlLCBvciBhIGNhY2hlZAogICAgIC8vIHBvc2l0aW9uLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCVHJhbnNhY3Rpb24uY3BwCmlu
ZGV4IDEyOWY0YzZmYzUzZmVjMWUyNGY0M2M3Y2U5MGIzYTZmODA5ZTdlNTEuLjExMmI3NjRkZjEy
MWNkOTgyM2NjY2ExZmRkMzcyZTI1MmY0MWJhZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQlRyYW5zYWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJUcmFuc2FjdGlvbi5jcHAKQEAgLTk0NywxOSArOTQ3LDE5
IEBAIHZvaWQgSURCVHJhbnNhY3Rpb246OnB1dE9yQWRkT25TZXJ2ZXIoSURCQ2xpZW50OjpUcmFu
c2FjdGlvbk9wZXJhdGlvbiYgb3BlcmF0aW9uCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb24+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBSZWZQdHI8SURC
Q2xpZW50OjpUcmFuc2FjdGlvbk9wZXJhdGlvbj4gb3BlcmF0aW9uUmVmKCZvcGVyYXRpb24pOwot
ICAgIHZhbHVlLT53cml0ZUJsb2JzVG9EaXNrRm9ySW5kZXhlZERCKFtwcm90ZWN0b3IsIHRoaXMs
IG9wZXJhdGlvblJlZiwga2V5LCB2YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUm
IGlkYlZhbHVlKSB7CisgICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIFJlZlB0cjxJREJDbGllbnQ6OlRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0
ZWRPcGVyYXRpb24oJm9wZXJhdGlvbik7CisgICAgdmFsdWUtPndyaXRlQmxvYnNUb0Rpc2tGb3JJ
bmRleGVkREIoW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHByb3RlY3RlZE9wZXJhdGlvbiwga2V5LCB2
YWx1ZSwgb3ZlcndyaXRlTW9kZV0oY29uc3QgSURCVmFsdWUmIGlkYlZhbHVlKSB7CiAgICAgICAg
IGlmIChpZGJWYWx1ZS5kYXRhKCkuZGF0YSgpKSB7Ci0gICAgICAgICAgICBtX2RhdGFiYXNlLT5j
b25uZWN0aW9uUHJveHkoKS5wdXRPckFkZCgqb3BlcmF0aW9uUmVmLCBrZXkuZ2V0KCksIGlkYlZh
bHVlLCBvdmVyd3JpdGVNb2RlKTsKKyAgICAgICAgICAgIG1fZGF0YWJhc2UtPmNvbm5lY3Rpb25Q
cm94eSgpLnB1dE9yQWRkKCpwcm90ZWN0ZWRPcGVyYXRpb24sIGtleS5nZXQoKSwgaWRiVmFsdWUs
IG92ZXJ3cml0ZU1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gSWYgdGhlIElEQlZhbHVlIGRvZXNuJ3QgaGF2ZSBhbnkgZGF0YSwgdGhlbiBzb21ldGhp
bmcgd2VudCB3cm9uZyB3cml0aW5nIHRoZSBibG9icyB0byBkaXNrLgogICAgICAgICAvLyBJbiB0
aGF0IGNhc2UsIHdlIGNhbm5vdCBzdWNjZXNzZnVsbHkgc3RvcmUgdGhpcyByZWNvcmQsIHNvIHdl
IGNhbGxiYWNrIHdpdGggYW4gZXJyb3IuCi0gICAgICAgIGF1dG8gcmVzdWx0ID0gSURCUmVzdWx0
RGF0YTo6ZXJyb3Iob3BlcmF0aW9uUmVmLT5pZGVudGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNl
cHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRlcmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9G
aWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVjdCBzdG9yZSIpIH0pOwotICAgICAgICBjYWxs
T25NYWluVGhyZWFkKFtwcm90ZWN0b3IsIHRoaXMsIG9wZXJhdGlvblJlZiwgcmVzdWx0XSgpIHsK
LSAgICAgICAgICAgIG9wZXJhdGlvblJlZi0+Y29tcGxldGVkKHJlc3VsdCk7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gSURCUmVzdWx0RGF0YTo6ZXJyb3IocHJvdGVjdGVkT3BlcmF0aW9uLT5pZGVu
dGlmaWVyKCksIHsgSURCRGF0YWJhc2VFeGNlcHRpb246OlVua25vd25FcnJvciwgQVNDSUlMaXRl
cmFsKCJFcnJvciBwcmVwYXJpbmcgQmxvYi9GaWxlIGRhdGEgdG8gYmUgc3RvcmVkIGluIG9iamVj
dCBzdG9yZSIpIH0pOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzLCB0
aGlzLCBwcm90ZWN0ZWRPcGVyYXRpb24sIHJlc3VsdF0oKSB7CisgICAgICAgICAgICBwcm90ZWN0
ZWRPcGVyYXRpb24tPmNvbXBsZXRlZChyZXN1bHQpOwogICAgICAgICB9KTsKICAgICB9KTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL2NsaWVudC9UcmFu
c2FjdGlvbk9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xp
ZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKaW5kZXggOTBjYjY0ODZkM2M3NDUyOGM5YmViNWQ3
MTZhOTc1ODA5YmM0YmM1MC4uNjZiZTJhNjBjODMyZDk5MjM2MmQyOTcwMTFiNDNhNjZlNWY5NmI0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvY2xpZW50L1Ry
YW5zYWN0aW9uT3BlcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVk
ZGIvY2xpZW50L1RyYW5zYWN0aW9uT3BlcmF0aW9uLmgKQEAgLTExNCwxNSArMTE0LDE1IEBAIHB1
YmxpYzoKICAgICBUcmFuc2FjdGlvbk9wZXJhdGlvbkltcGwoSURCVHJhbnNhY3Rpb24mIHRyYW5z
YWN0aW9uLCB2b2lkIChJREJUcmFuc2FjdGlvbjo6KmNvbXBsZXRlTWV0aG9kKShjb25zdCBJREJS
ZXN1bHREYXRhJiksIHZvaWQgKElEQlRyYW5zYWN0aW9uOjoqcGVyZm9ybU1ldGhvZCkoVHJhbnNh
Y3Rpb25PcGVyYXRpb24mLCBBcmd1bWVudHMuLi4pLCBBcmd1bWVudHMmJi4uLiBhcmd1bWVudHMp
CiAgICAgICAgIDogVHJhbnNhY3Rpb25PcGVyYXRpb24odHJhbnNhY3Rpb24pCiAgICAgewotICAg
ICAgICBSZWZQdHI8VHJhbnNhY3Rpb25PcGVyYXRpb24+IHNlbGYodGhpcyk7CisgICAgICAgIFJl
ZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgICAg
ICBBU1NFUlQocGVyZm9ybU1ldGhvZCk7Ci0gICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0gW3Nl
bGYsIHRoaXMsIHBlcmZvcm1NZXRob2QsIGFyZ3VtZW50cy4uLl0geworICAgICAgICBtX3BlcmZv
cm1GdW5jdGlvbiA9IFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBwZXJmb3JtTWV0aG9kLCBhcmd1bWVu
dHMuLi5dIHsKICAgICAgICAgICAgICgmbV90cmFuc2FjdGlvbi5nZXQoKS0+KnBlcmZvcm1NZXRo
b2QpKCp0aGlzLCBhcmd1bWVudHMuLi4pOwogICAgICAgICB9OwogCiAgICAgICAgIGlmIChjb21w
bGV0ZU1ldGhvZCkgewotICAgICAgICAgICAgbV9jb21wbGV0ZUZ1bmN0aW9uID0gW3NlbGYsIHRo
aXMsIGNvbXBsZXRlTWV0aG9kXShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKSB7Cisg
ICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcywgdGhpcywgY29t
cGxldGVNZXRob2RdKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpIHsKICAgICAgICAg
ICAgICAgICBpZiAoY29tcGxldGVNZXRob2QpCiAgICAgICAgICAgICAgICAgICAgICgmbV90cmFu
c2FjdGlvbi5nZXQoKS0+KmNvbXBsZXRlTWV0aG9kKShyZXN1bHREYXRhKTsKICAgICAgICAgICAg
IH07CkBAIC0xMzIsMTYgKzEzMiwxNiBAQCBwdWJsaWM6CiAgICAgVHJhbnNhY3Rpb25PcGVyYXRp
b25JbXBsKElEQlRyYW5zYWN0aW9uJiB0cmFuc2FjdGlvbiwgSURCUmVxdWVzdCYgcmVxdWVzdCwg
dm9pZCAoSURCVHJhbnNhY3Rpb246Oipjb21wbGV0ZU1ldGhvZCkoSURCUmVxdWVzdCYsIGNvbnN0
IElEQlJlc3VsdERhdGEmKSwgdm9pZCAoSURCVHJhbnNhY3Rpb246OipwZXJmb3JtTWV0aG9kKShU
cmFuc2FjdGlvbk9wZXJhdGlvbiYsIEFyZ3VtZW50cy4uLiksIEFyZ3VtZW50cyYmLi4uIGFyZ3Vt
ZW50cykKICAgICAgICAgOiBUcmFuc2FjdGlvbk9wZXJhdGlvbih0cmFuc2FjdGlvbiwgcmVxdWVz
dCkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxUcmFuc2FjdGlvbk9wZXJhdGlvbj4gc2VsZih0aGlz
KTsKKyAgICAgICAgUmVmUHRyPFRyYW5zYWN0aW9uT3BlcmF0aW9uPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOwogCiAgICAgICAgIEFTU0VSVChwZXJmb3JtTWV0aG9kKTsKLSAgICAgICAgbV9wZXJmb3Jt
RnVuY3Rpb24gPSBbc2VsZiwgdGhpcywgcGVyZm9ybU1ldGhvZCwgYXJndW1lbnRzLi4uXSB7Cisg
ICAgICAgIG1fcGVyZm9ybUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHBlcmZvcm1N
ZXRob2QsIGFyZ3VtZW50cy4uLl0gewogICAgICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgp
LT4qcGVyZm9ybU1ldGhvZCkoKnRoaXMsIGFyZ3VtZW50cy4uLik7CiAgICAgICAgIH07CiAKICAg
ICAgICAgaWYgKGNvbXBsZXRlTWV0aG9kKSB7CiAgICAgICAgICAgICBSZWZQdHI8SURCUmVxdWVz
dD4gcmVmUmVxdWVzdCgmcmVxdWVzdCk7Ci0gICAgICAgICAgICBtX2NvbXBsZXRlRnVuY3Rpb24g
PSBbc2VsZiwgdGhpcywgcmVmUmVxdWVzdCwgY29tcGxldGVNZXRob2RdKGNvbnN0IElEQlJlc3Vs
dERhdGEmIHJlc3VsdERhdGEpIHsKKyAgICAgICAgICAgIG1fY29tcGxldGVGdW5jdGlvbiA9IFtw
cm90ZWN0ZWRUaGlzLCB0aGlzLCByZWZSZXF1ZXN0LCBjb21wbGV0ZU1ldGhvZF0oY29uc3QgSURC
UmVzdWx0RGF0YSYgcmVzdWx0RGF0YSkgewogICAgICAgICAgICAgICAgIGlmIChjb21wbGV0ZU1l
dGhvZCkKICAgICAgICAgICAgICAgICAgICAgKCZtX3RyYW5zYWN0aW9uLmdldCgpLT4qY29tcGxl
dGVNZXRob2QpKCpyZWZSZXF1ZXN0LCByZXN1bHREYXRhKTsKICAgICAgICAgICAgIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1Vu
aXF1ZUlEQkRhdGFiYXNlLmNwcAppbmRleCA1YjJhZGNjYmQ1ZTE5NzAyNGIyMjNkOWY0M2RjNjRm
ZTcyNDJjOGE2Li44Zjg2M2RiMmJmYzYxZDczMzlmZjk3YjkzNGUxNDljODEyZWFmYTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZl
ci9VbmlxdWVJREJEYXRhYmFzZS5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFVuaXF1ZUlE
QkRhdGFiYXNlOjpoYW5kbGVDdXJyZW50T3BlcmF0aW9uKCkKIAogICAgIEFTU0VSVChtX2N1cnJl
bnRPcGVuREJSZXF1ZXN0KTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVj
dG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKIAogICAgIGlmIChtX2N1cnJlbnRPcGVuREJSZXF1ZXN0LT5pc09wZW5SZXF1ZXN0KCkp
CiAgICAgICAgIHBlcmZvcm1DdXJyZW50T3Blbk9wZXJhdGlvbigpOwpAQCAtMTIxNyw3ICsxMjE3
LDcgQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZTo6b3BlcmF0aW9uQW5kVHJhbnNhY3Rpb25UaW1l
ckZpcmVkKCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiKG1haW4pIFVuaXF1ZUlEQkRhdGFiYXNl
OjpvcGVyYXRpb25BbmRUcmFuc2FjdGlvblRpbWVyRmlyZWQiKTsKIAotICAgIFJlZlB0cjxVbmlx
dWVJREJEYXRhYmFzZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIC8vIFRoaXMgVW5pcXVlSURCRGF0YWJh
c2UgbWlnaHQgYmUgbm8gbG9uZ2VyIGluIHVzZSBieSBhbnkgd2ViIHBhZ2UuCiAgICAgLy8gQXNz
dW1pbmcgaXQgaXMgbm90IGVwaGVtZXJhbCwgdGhlIHNlcnZlciBzaG91bGQgbm93IGNsb3NlIGl0
IHRvIGZyZWUgdXAgcmVzb3VyY2VzLgpAQCAtMTI2MSwxMCArMTI2MSwxMCBAQCB2b2lkIFVuaXF1
ZUlEQkRhdGFiYXNlOjphY3RpdmF0ZVRyYW5zYWN0aW9uSW5CYWNraW5nU3RvcmUoVW5pcXVlSURC
RGF0YWJhc2VUcmFucwogewogICAgIExPRyhJbmRleGVkREIsICIobWFpbikgVW5pcXVlSURCRGF0
YWJhc2U6OmFjdGl2YXRlVHJhbnNhY3Rpb25JbkJhY2tpbmdTdG9yZSIpOwogCi0gICAgUmVmUHRy
PFVuaXF1ZUlEQkRhdGFiYXNlPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRh
YmFzZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VU
cmFuc2FjdGlvbj4gcmVmVHJhbnNhY3Rpb24oJnRyYW5zYWN0aW9uKTsKIAotICAgIGF1dG8gY2Fs
bGJhY2sgPSBbdGhpcywgc2VsZiwgcmVmVHJhbnNhY3Rpb25dKGNvbnN0IElEQkVycm9yJiBlcnJv
cikgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVmVHJhbnNh
Y3Rpb25dKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewogICAgICAgICByZWZUcmFuc2FjdGlvbi0+
ZGlkQWN0aXZhdGVJbkJhY2tpbmdTdG9yZShlcnJvcik7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1ZUlEQkRhdGFiYXNl
Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIv
VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAppbmRleCBlZDZlOTMzNzlmOWU3NTZhMDcw
ODEzZDFlMDA3ZWFmYWM5NDc4ZTdhLi42MmUwZmE1NDhjYzFmMGNhYmQ1MTU4ZTk3OTQ0YzRiYzdj
MWJhMzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2
ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uLmNwcApA
QCAtNzMsOSArNzMsOSBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlvbjo6YWJvcnRU
cmFuc2FjdGlvbldpdGhvdXRDYWxsYmFjayhVbmlxdWVJREJEYXRhYgogICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uTWFwLmNvbnRhaW5zKHRyYW5zYWN0aW9uLmluZm8oKS5pZGVudGlmaWVyKCkpKTsK
IAogICAgIGNvbnN0IGF1dG8mIHRyYW5zYWN0aW9uSWRlbnRpZmllciA9IHRyYW5zYWN0aW9uLmlu
Zm8oKS5pZGVudGlmaWVyKCk7Ci0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlQ29ubmVjdGlv
bj4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZUNvbm5lY3Rp
b24+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBtX2RhdGFiYXNlLmFib3J0VHJhbnNhY3Rp
b24odHJhbnNhY3Rpb24sIFt0aGlzLCBwcm90ZWN0b3IsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0o
Y29uc3QgSURCRXJyb3ImKSB7CisgICAgbV9kYXRhYmFzZS5hYm9ydFRyYW5zYWN0aW9uKHRyYW5z
YWN0aW9uLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgdHJhbnNhY3Rpb25JZGVudGlmaWVyXShjb25z
dCBJREJFcnJvciYpIHsKICAgICAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25NYXAuY29udGFpbnMo
dHJhbnNhY3Rpb25JZGVudGlmaWVyKSk7CiAgICAgICAgIG1fdHJhbnNhY3Rpb25NYXAucmVtb3Zl
KHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbi5jcHAKaW5kZXggZDk1NWFlNjAyMTg2ZTAxYWQ1NDhjNjI4OGQ4
MDBjZjVjODQ4YWI1MC4uOTAyNGUzNjMxMzI4YjkwMGE2YTUwZjZhYjVmYjIxZDE4MWQxYTU1MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1VuaXF1
ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
aW5kZXhlZGRiL3NlcnZlci9VbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uLmNwcApAQCAtNjgs
OCArNjgsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmFib3J0KCkKIHsK
ICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6YWJvcnQi
KTsKIAotICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uPiBzZWxmKHRoaXMp
OwotICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kYXRhYmFzZSgpLmFib3J0VHJhbnNhY3Rpb24o
KnRoaXMsIFt0aGlzLCBzZWxmXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBt
X2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5hYm9ydFRyYW5zYWN0aW9uKCp0aGlzLCBb
dGhpcywgcHJvdGVjdGVkVGhpc10oY29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExP
RyhJbmRleGVkREIsICJVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjphYm9ydCAoY2FsbGJh
Y2spIik7CiAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRBYm9ydFRyYW5zYWN0aW9u
KCp0aGlzLCBlcnJvcik7CiAgICAgfSk7CkBAIC05Niw4ICs5Niw4IEBAIHZvaWQgVW5pcXVlSURC
RGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0KCkKIHsKICAgICBMT0coSW5kZXhlZERCLCAiVW5p
cXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y29tbWl0Iik7CiAKLSAgICBSZWZQdHI8VW5pcXVl
SURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVj
dGlvbi0+ZGF0YWJhc2UoKS5jb21taXRUcmFuc2FjdGlvbigqdGhpcywgW3RoaXMsIHNlbGZdKGNv
bnN0IElEQkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJEYXRhYmFzZVRyYW5z
YWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5k
YXRhYmFzZSgpLmNvbW1pdFRyYW5zYWN0aW9uKCp0aGlzLCBbdGhpcywgcHJvdGVjdGVkVGhpc10o
Y29uc3QgSURCRXJyb3ImIGVycm9yKSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJ
REJEYXRhYmFzZVRyYW5zYWN0aW9uOjpjb21taXQgKGNhbGxiYWNrKSIpOwogICAgICAgICBtX2Rh
dGFiYXNlQ29ubmVjdGlvbi0+ZGlkQ29tbWl0VHJhbnNhY3Rpb24oKnRoaXMsIGVycm9yKTsKICAg
ICB9KTsKQEAgLTExMCw4ICsxMTAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b246OmNyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZQogICAgIEFT
U0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlk
ZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAKLSAg
ICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAgICBt
X2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RTdG9yZSgqdGhpcywg
aW5mbywgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsK
KyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVPYmplY3RT
dG9yZSgqdGhpcywgaW5mbywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25z
dCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZU9iamVjdFN0b3JlIChjYWxsYmFjaykiKTsKICAgICAg
ICAgaWYgKGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24t
PmRpZENyZWF0ZU9iamVjdFN0b3JlKElEQlJlc3VsdERhdGE6OmNyZWF0ZU9iamVjdFN0b3JlU3Vj
Y2VzcyhyZXF1ZXN0RGF0YS5yZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xMjcsOCArMTI3LDgg
QEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpkZWxldGVPYmplY3RTdG9yZShj
b25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWUKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkp
OwogICAgIEFTU0VSVChtX3RyYW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERh
dGEudHJhbnNhY3Rpb25JZGVudGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb24+IHNlbGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRh
dGFiYXNlKCkuZGVsZXRlT2JqZWN0U3RvcmUoKnRoaXMsIG9iamVjdFN0b3JlTmFtZSwgW3RoaXMs
IHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IpIHsKKyAgICBSZWZQdHI8
VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBt
X2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5kZWxldGVPYmplY3RTdG9yZSgqdGhpcywg
b2JqZWN0U3RvcmVOYW1lLCBbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0
IElEQkVycm9yJiBlcnJvcikgewogICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0
YWJhc2VUcmFuc2FjdGlvbjo6ZGVsZXRlT2JqZWN0U3RvcmUgKGNhbGxiYWNrKSIpOwogICAgICAg
ICBpZiAoZXJyb3IuaXNOdWxsKCkpCiAgICAgICAgICAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+
ZGlkRGVsZXRlT2JqZWN0U3RvcmUoSURCUmVzdWx0RGF0YTo6ZGVsZXRlT2JqZWN0U3RvcmVTdWNj
ZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJZGVudGlmaWVyKCkpKTsKQEAgLTE0Myw4ICsxNDMsOCBA
QCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb246OmNsZWFyT2JqZWN0U3RvcmUoY29u
c3QgSURCUmVxdWVzdERhdGEmIHJlcXVlcwogCiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rpb25JbmZv
LmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIoKSk7CiAK
LSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlzKTsKLSAg
ICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jbGVhck9iamVjdFN0b3JlKCp0aGlz
LCBvYmplY3RTdG9yZUlkZW50aWZpZXIsIFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YV0oY29uc3Qg
SURCRXJyb3ImIGVycm9yKSB7CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rp
b24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFi
YXNlKCkuY2xlYXJPYmplY3RTdG9yZSgqdGhpcywgb2JqZWN0U3RvcmVJZGVudGlmaWVyLCBbdGhp
cywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgewog
ICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Y2xl
YXJPYmplY3RTdG9yZSAoY2FsbGJhY2spIik7CiAgICAgICAgIGlmIChlcnJvci5pc051bGwoKSkK
ICAgICAgICAgICAgIG1fZGF0YWJhc2VDb25uZWN0aW9uLT5kaWRDbGVhck9iamVjdFN0b3JlKElE
QlJlc3VsdERhdGE6OmNsZWFyT2JqZWN0U3RvcmVTdWNjZXNzKHJlcXVlc3REYXRhLnJlcXVlc3RJ
ZGVudGlmaWVyKCkpKTsKQEAgLTE2MCw4ICsxNjAsOCBAQCB2b2lkIFVuaXF1ZUlEQkRhdGFiYXNl
VHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YQogICAgIEFTU0VSVChpc1ZlcnNpb25DaGFuZ2UoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNhY3Rp
b25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZpZXIo
KSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0aGlz
KTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRleCgqdGhp
cywgaW5mbywgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJyb3Ip
IHsKKyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5jcmVhdGVJbmRl
eCgqdGhpcywgaW5mbywgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJ
REJFcnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFi
YXNlVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYgKGVy
cm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZENyZWF0
ZUluZGV4KElEQlJlc3VsdERhdGE6OmNyZWF0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5yZXF1
ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xNzcsOCArMTc3LDggQEAgdm9pZCBVbmlxdWVJREJEYXRh
YmFzZVRyYW5zYWN0aW9uOjpkZWxldGVJbmRleChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEKICAgICBBU1NFUlQoaXNWZXJzaW9uQ2hhbmdlKCkpOwogICAgIEFTU0VSVChtX3RyYW5z
YWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVudGlm
aWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNlbGYo
dGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZGVsZXRlSW5kZXgo
KnRoaXMsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1lLCBbdGhpcywgc2VsZiwgcmVx
dWVzdERhdGFdKGNvbnN0IElEQkVycm9yJiBlcnJvcikgeworICAgIFJlZlB0cjxVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGF0YWJhc2VD
b25uZWN0aW9uLT5kYXRhYmFzZSgpLmRlbGV0ZUluZGV4KCp0aGlzLCBvYmplY3RTdG9yZUlkZW50
aWZpZXIsIGluZGV4TmFtZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25z
dCBJREJFcnJvciYgZXJyb3IpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRh
dGFiYXNlVHJhbnNhY3Rpb246OmNyZWF0ZUluZGV4IChjYWxsYmFjaykiKTsKICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQogICAgICAgICAgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRpZERl
bGV0ZUluZGV4KElEQlJlc3VsdERhdGE6OmRlbGV0ZUluZGV4U3VjY2VzcyhyZXF1ZXN0RGF0YS5y
ZXF1ZXN0SWRlbnRpZmllcigpKSk7CkBAIC0xOTQsOCArMTk0LDggQEAgdm9pZCBVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpwdXRPckFkZChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVz
dERhdGEsIGMKICAgICBBU1NFUlQoIWlzUmVhZE9ubHkoKSk7CiAgICAgQVNTRVJUKG1fdHJhbnNh
Y3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2FjdGlvbklkZW50aWZp
ZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gc2VsZih0
aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1
ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCBzZWxmLCByZXF1
ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRhJiBrZXkpIHsK
KyAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbj4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKKyAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5wdXRPckFkZChyZXF1
ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGUsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0RGF0YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJLZXlEYXRh
JiBrZXkpIHsKICAgICAgICAgTE9HKEluZGV4ZWREQiwgIlVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNh
Y3Rpb246OnB1dE9yQWRkIChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxs
KCkpCkBAIC0yMTEsOCArMjExLDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9u
OjpnZXRSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLAogCiAgICAgQVNT
RVJUKG1fdHJhbnNhY3Rpb25JbmZvLmlkZW50aWZpZXIoKSA9PSByZXF1ZXN0RGF0YS50cmFuc2Fj
dGlvbklkZW50aWZpZXIoKSk7CiAKLSAgICBSZWZQdHI8VW5pcXVlSURCRGF0YWJhc2VUcmFuc2Fj
dGlvbj4gc2VsZih0aGlzKTsKLSAgICBtX2RhdGFiYXNlQ29ubmVjdGlvbi0+ZGF0YWJhc2UoKS5n
ZXRSZWNvcmQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3RE
YXRhXShjb25zdCBJREJFcnJvciYgZXJyb3IsIGNvbnN0IElEQkdldFJlc3VsdCYgcmVzdWx0KSB7
CisgICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CisgICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0UmVjb3JkKHJl
cXVlc3REYXRhLCBrZXlSYW5nZURhdGEsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXF1ZXN0RGF0
YV0oY29uc3QgSURCRXJyb3ImIGVycm9yLCBjb25zdCBJREJHZXRSZXN1bHQmIHJlc3VsdCkgewog
ICAgICAgICBMT0coSW5kZXhlZERCLCAiVW5pcXVlSURCRGF0YWJhc2VUcmFuc2FjdGlvbjo6Z2V0
UmVjb3JkIChjYWxsYmFjaykiKTsKIAogICAgICAgICBpZiAoZXJyb3IuaXNOdWxsKCkpCkBAIC0y
MjgsOCArMjI4LDggQEAgdm9pZCBVbmlxdWVJREJEYXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3Vu
dChjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVxdWVzdERhdGEsIGMKIAogICAgIEFTU0VSVChtX3Ry
YW5zYWN0aW9uSW5mby5pZGVudGlmaWVyKCkgPT0gcmVxdWVzdERhdGEudHJhbnNhY3Rpb25JZGVu
dGlmaWVyKCkpOwogCi0gICAgUmVmUHRyPFVuaXF1ZUlEQkRhdGFiYXNlVHJhbnNhY3Rpb24+IHNl
bGYodGhpcyk7Ci0gICAgbV9kYXRhYmFzZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQo
cmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSwgW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhXShjb25z
dCBJREJFcnJvciYgZXJyb3IsIHVpbnQ2NF90IGNvdW50KSB7CisgICAgUmVmUHRyPFVuaXF1ZUlE
QkRhdGFiYXNlVHJhbnNhY3Rpb24+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9kYXRhYmFz
ZUNvbm5lY3Rpb24tPmRhdGFiYXNlKCkuZ2V0Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0
YSwgW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhXShjb25zdCBJREJFcnJvciYgZXJy
b3IsIHVpbnQ2NF90IGNvdW50KSB7CiAgICAgICAgIExPRyhJbmRleGVkREIsICJVbmlxdWVJREJE
YXRhYmFzZVRyYW5zYWN0aW9uOjpnZXRDb3VudCAoY2FsbGJhY2spIik7CiAKICAgICAgICAgaWYg
KGVycm9yLmlzTnVsbCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRl
eGVkZGIvc2hhcmVkL0luUHJvY2Vzc0lEQlNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAppbmRleCA5M2FjNmQ2
ZDdkMjlkYTRjNjcwZGZhZGJjNGQ2MThhYzBmMTU4OGU4Li5lZGE4NzgzMjI4MWRhNzIzMzBkNTVj
NjQ1YTllYjIwNzM0ZDRlMzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2lu
ZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFyZWQvSW5Qcm9jZXNzSURCU2VydmVyLmNwcApAQCAtOTEs
MzM0ICs5MSwzMzQgQEAgSURCU2VydmVyOjpJREJDb25uZWN0aW9uVG9DbGllbnQmIEluUHJvY2Vz
c0lEQlNlcnZlcjo6Y29ubmVjdGlvblRvQ2xpZW50KCkgY29uc3QKIAogdm9pZCBJblByb2Nlc3NJ
REJTZXJ2ZXI6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0
YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERh
dGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZURhdGFiYXNlKHJlcXVlc3REYXRhKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZERlbGV0ZURhdGFiYXNlKGNv
bnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1Nl
cnZlci0+ZGlkRGVsZXRlRGF0YWJhc2UocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQg
SW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuRGF0YWJhc2UoY29uc3QgSURCUmVxdWVzdERhdGEmIHJl
cXVlc3REYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0
YV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXF1ZXN0RGF0YV0gewogICAgICAgICBtX3NlcnZlci0+b3BlbkRhdGFiYXNlKHJlcXVlc3REYXRh
KTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZE9wZW5EYXRhYmFz
ZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9u
VG9TZXJ2ZXItPmRpZE9wZW5EYXRhYmFzZShyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9p
ZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZEFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3Vy
Y2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJv
cikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1
bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgdHJhbnNhY3Rpb25JZGVudGlm
aWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVj
dGlvblRvU2VydmVyLT5kaWRBYm9ydFRyYW5zYWN0aW9uKHRyYW5zYWN0aW9uSWRlbnRpZmllciwg
ZXJyb3IpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkQ29tbWl0
VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50
aWZpZXIsIGNvbnN0IElEQkVycm9yJiBlcnJvcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgc2VsZiwgdHJhbnNhY3Rpb25JZGVudGlmaWVyLCBlcnJvcl0geworICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCB0cmFuc2FjdGlvbklkZW50aWZpZXIs
IGVycm9yXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRDb21taXRUcmFuc2Fj
dGlvbih0cmFuc2FjdGlvbklkZW50aWZpZXIsIGVycm9yKTsKICAgICB9KTsKIH0KIAogdm9pZCBJ
blByb2Nlc3NJREJTZXJ2ZXI6OmRpZENyZWF0ZU9iamVjdFN0b3JlKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0
aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3Vs
dERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkQ3JlYXRl
T2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpkaWREZWxldGVPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHRE
YXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAg
UnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7Cisg
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERh
dGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZERlbGV0ZU9iamVjdFN0b3Jl
KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
Q2xlYXJPYmplY3RTdG9yZShjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAg
ICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZENsZWFyT2JqZWN0U3RvcmUocmVzdWx0RGF0YSk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRDcmVhdGVJbmRleChj
b25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9T
ZXJ2ZXItPmRpZENyZWF0ZUluZGV4KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIElu
UHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlSW5kZXgoY29uc3QgSURCUmVzdWx0RGF0YSYgcmVz
dWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwot
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0YV0g
eworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7Cisg
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXN1
bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWREZWxldGVJbmRleChy
ZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmRpZFB1
dE9yQWRkKGNvbnN0IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURC
U2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNw
YXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5l
Y3Rpb25Ub1NlcnZlci0+ZGlkUHV0T3JBZGQocmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRHZXRSZWNvcmQoY29uc3QgSURCUmVzdWx0RGF0YSYg
cmVzdWx0RGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMp
OwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVzdWx0RGF0
YV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBy
ZXN1bHREYXRhXSB7CiAgICAgICAgIG1fY29ubmVjdGlvblRvU2VydmVyLT5kaWRHZXRSZWNvcmQo
cmVzdWx0RGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRH
ZXRDb3VudChjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAgIFJlZlB0cjxJ
blByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRp
c3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAgICAgbV9jb25u
ZWN0aW9uVG9TZXJ2ZXItPmRpZEdldENvdW50KHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2
b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRGVsZXRlUmVjb3JkKGNvbnN0IElEQlJlc3VsdERh
dGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0
aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlc3Vs
dERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhp
cywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkRGVsZXRl
UmVjb3JkKHJlc3VsdERhdGEpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZl
cjo6ZGlkT3BlbkN1cnNvcihjb25zdCBJREJSZXN1bHREYXRhJiByZXN1bHREYXRhKQogewotICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXN1bHREYXRhXSB7CisgICAgUmVmUHRyPElu
UHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJy
ZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGFdIHsKICAgICAg
ICAgbV9jb25uZWN0aW9uVG9TZXJ2ZXItPmRpZE9wZW5DdXJzb3IocmVzdWx0RGF0YSk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpkaWRJdGVyYXRlQ3Vyc29yKGNvbnN0
IElEQlJlc3VsdERhdGEmIHJlc3VsdERhdGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNl
cnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMs
IHNlbGYsIHJlc3VsdERhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywg
cHJvdGVjdGVkVGhpcywgcmVzdWx0RGF0YV0gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZl
ci0+ZGlkSXRlcmF0ZUN1cnNvcihyZXN1bHREYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6OmFib3J0VHJhbnNhY3Rpb24oY29uc3QgSURCUmVzb3VyY2VJZGVudGlm
aWVyJiByZXNvdXJjZUlkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZl
cj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNl
bGYsIHJlc291cmNlSWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0
aGlzLCBwcm90ZWN0ZWRUaGlzLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2
ZXItPmFib3J0VHJhbnNhY3Rpb24ocmVzb3VyY2VJZGVudGlmaWVyKTsKICAgICB9KTsKIH0KIAog
dm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNvbW1pdFRyYW5zYWN0aW9uKGNvbnN0IElEQlJlc291
cmNlSWRlbnRpZmllciYgcmVzb3VyY2VJZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXNvdXJjZUlkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNz
SURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVzb3VyY2VJZGVudGlmaWVyXSB7CiAgICAg
ICAgIG1fc2VydmVyLT5jb21taXRUcmFuc2FjdGlvbihyZXNvdXJjZUlkZW50aWZpZXIpOwogICAg
IH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkRmluaXNoSGFuZGxpbmdWZXJz
aW9uQ2hhbmdlVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmll
ciwgY29uc3QgSURCUmVzb3VyY2VJZGVudGlmaWVyJiB0cmFuc2FjdGlvbklkZW50aWZpZXIpCiB7
Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29w
OjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50
aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJT
ZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3Bh
dGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCB0
cmFuc2FjdGlvbklkZW50aWZpZXJdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRpZEZpbmlzaEhhbmRs
aW5nVmVyc2lvbkNoYW5nZVRyYW5zYWN0aW9uKGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIs
IHRyYW5zYWN0aW9uSWRlbnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURC
U2VydmVyOjpjcmVhdGVPYmplY3RTdG9yZShjb25zdCBJREJSZXF1ZXN0RGF0YSYgcmVzdWx0RGF0
YSwgY29uc3QgSURCT2JqZWN0U3RvcmVJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nl
c3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNo
KFt0aGlzLCBzZWxmLCByZXN1bHREYXRhLCBpbmZvXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlz
cGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlc3VsdERhdGEsIGluZm9dIHsKICAgICAgICAg
bV9zZXJ2ZXItPmNyZWF0ZU9iamVjdFN0b3JlKHJlc3VsdERhdGEsIGluZm8pOwogICAgIH0pOwog
fQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGVsZXRlT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkK
IHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxv
b3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGEsIG9iamVjdFN0
b3JlTmFtZV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRU
aGlzLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lXSB7CiAgICAgICAgIG1fc2VydmVyLT5k
ZWxldGVPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVOYW1lKTsKICAgICB9KTsK
IH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNsZWFyT2JqZWN0U3RvcmUoY29uc3QgSURC
UmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBvYmplY3RTdG9yZUlkZW50aWZpZXIp
CiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBvYmplY3RT
dG9yZUlkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllcl0gewogICAgICAg
ICBtX3NlcnZlci0+Y2xlYXJPYmplY3RTdG9yZShyZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVu
dGlmaWVyKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmNyZWF0ZUlu
ZGV4KGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCSW5kZXhJbmZv
JiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0g
ICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwg
aW5mb10geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhp
cyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlz
LCByZXF1ZXN0RGF0YSwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+Y3JlYXRlSW5kZXgocmVx
dWVzdERhdGEsIGluZm8pOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6
ZGVsZXRlSW5kZXgoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCB1aW50NjRfdCBv
YmplY3RTdG9yZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewotICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwgb2JqZWN0U3RvcmVJZGVudGlm
aWVyLCBpbmRleE5hbWVdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJv
dGVjdGVkVGhpcywgcmVxdWVzdERhdGEsIG9iamVjdFN0b3JlSWRlbnRpZmllciwgaW5kZXhOYW1l
XSB7CiAgICAgICAgIG1fc2VydmVyLT5kZWxldGVJbmRleChyZXF1ZXN0RGF0YSwgb2JqZWN0U3Rv
cmVJZGVudGlmaWVyLCBpbmRleE5hbWUpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6cHV0T3JBZGQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJLZXlEYXRhJiBrZXlEYXRhLCBjb25zdCBJREJWYWx1ZSYgdmFsdWUsIGNvbnN0IEluZGV4
ZWREQjo6T2JqZWN0U3RvcmVPdmVyd3JpdGVNb2RlIG92ZXJ3cml0ZU1vZGUpCiB7Ci0gICAgUmVm
UHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50
KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zl
cndyaXRlTW9kZV0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRo
aXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0
ZWRUaGlzLCByZXF1ZXN0RGF0YSwga2V5RGF0YSwgdmFsdWUsIG92ZXJ3cml0ZU1vZGVdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPnB1dE9yQWRkKHJlcXVlc3REYXRhLCBrZXlEYXRhLCB2YWx1ZSwgb3Zl
cndyaXRlTW9kZSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpnZXRS
ZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25zdCBJREJLZXlSYW5n
ZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBz
ZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXMo
dGhpcyk7CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJl
cXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0
Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPmdldFJlY29yZChyZXF1ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAg
ICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJTZXJ2ZXI6OmdldENvdW50KGNvbnN0IElEQlJl
cXVlc3REYXRhJiByZXF1ZXN0RGF0YSwgY29uc3QgSURCS2V5UmFuZ2VEYXRhJiBrZXlSYW5nZURh
dGEpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlS
YW5nZURhdGFdIHsKKyAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlz
KHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVk
VGhpcywgcmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YV0gewogICAgICAgICBtX3NlcnZlci0+Z2V0
Q291bnQocmVxdWVzdERhdGEsIGtleVJhbmdlRGF0YSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Q
cm9jZXNzSURCU2VydmVyOjpkZWxldGVSZWNvcmQoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlSYW5nZURhdGEmIGtleVJhbmdlRGF0YSkKIHsKLSAgICBSZWZQ
dHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOworICAgIFJlZlB0cjxJblByb2Nlc3NJ
REJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKLSAgICBSdW5Mb29wOjpjdXJyZW50KCku
ZGlzcGF0Y2goW3RoaXMsIHNlbGYsIHJlcXVlc3REYXRhLCBrZXlSYW5nZURhdGFdIHsKKyAgICBS
dW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3RE
YXRhLCBrZXlSYW5nZURhdGFdIHsKICAgICAgICAgbV9zZXJ2ZXItPmRlbGV0ZVJlY29yZChyZXF1
ZXN0RGF0YSwga2V5UmFuZ2VEYXRhKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblByb2Nlc3NJREJT
ZXJ2ZXI6Om9wZW5DdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVlc3REYXRhLCBjb25z
dCBJREJDdXJzb3JJbmZvJiBpbmZvKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+
IHNlbGYodGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwg
cmVxdWVzdERhdGEsIGluZm9dIHsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIHJlcXVlc3REYXRhLCBpbmZvXSB7CiAgICAgICAgIG1fc2VydmVy
LT5vcGVuQ3Vyc29yKHJlcXVlc3REYXRhLCBpbmZvKTsKICAgICB9KTsKIH0KIAogdm9pZCBJblBy
b2Nlc3NJREJTZXJ2ZXI6Oml0ZXJhdGVDdXJzb3IoY29uc3QgSURCUmVxdWVzdERhdGEmIHJlcXVl
c3REYXRhLCBjb25zdCBJREJLZXlEYXRhJiBrZXksIHVuc2lnbmVkIGxvbmcgY291bnQpCiB7Ci0g
ICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKKyAgICBSZWZQdHI8SW5Q
cm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0RGF0YSwga2V5LCBjb3VudF0gewor
ICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVx
dWVzdERhdGEsIGtleSwgY291bnRdIHsKICAgICAgICAgbV9zZXJ2ZXItPml0ZXJhdGVDdXJzb3Io
cmVxdWVzdERhdGEsIGtleSwgY291bnQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lE
QlNlcnZlcjo6ZXN0YWJsaXNoVHJhbnNhY3Rpb24odWludDY0X3QgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllciwgY29uc3QgSURCVHJhbnNhY3Rpb25JbmZvJiBpbmZvKQogewotICAgIFJlZlB0
cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lE
QlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5k
aXNwYXRjaChbdGhpcywgc2VsZiwgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10g
eworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywg
ZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mb10gewogICAgICAgICBtX3NlcnZlci0+
ZXN0YWJsaXNoVHJhbnNhY3Rpb24oZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgaW5mbyk7
CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpmaXJlVmVyc2lvbkNoYW5n
ZUV2ZW50KElEQlNlcnZlcjo6VW5pcXVlSURCRGF0YWJhc2VDb25uZWN0aW9uJiBjb25uZWN0aW9u
LCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVudGlmaWVyLCB1aW50NjRf
dCByZXF1ZXN0ZWRWZXJzaW9uKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNl
bGYodGhpcyk7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICB1aW50NjRfdCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyID0gY29ubmVj
dGlvbi5pZGVudGlmaWVyKCk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlz
LCBzZWxmLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllciwg
cmVxdWVzdGVkVmVyc2lvbl0geworICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhp
cywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgcmVxdWVzdElk
ZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb25dIHsKICAgICAgICAgbV9jb25uZWN0aW9uVG9TZXJ2
ZXItPmZpcmVWZXJzaW9uQ2hhbmdlRXZlbnQoZGF0YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwg
cmVxdWVzdElkZW50aWZpZXIsIHJlcXVlc3RlZFZlcnNpb24pOwogICAgIH0pOwogfQogCiB2b2lk
IEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlkU3RhcnRUcmFuc2FjdGlvbihjb25zdCBJREJSZXNvdXJj
ZUlkZW50aWZpZXImIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgY29uc3QgSURCRXJyb3ImIGVycm9y
KQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVu
TG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCB0cmFuc2FjdGlvbklkZW50aWZp
ZXIsIGVycm9yXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3Rl
ZFRoaXMsIHRyYW5zYWN0aW9uSWRlbnRpZmllciwgZXJyb3JdIHsKICAgICAgICAgbV9jb25uZWN0
aW9uVG9TZXJ2ZXItPmRpZFN0YXJ0VHJhbnNhY3Rpb24odHJhbnNhY3Rpb25JZGVudGlmaWVyLCBl
cnJvcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpub3RpZnlPcGVu
REJSZXF1ZXN0QmxvY2tlZChjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJZGVu
dGlmaWVyLCB1aW50NjRfdCBvbGRWZXJzaW9uLCB1aW50NjRfdCBuZXdWZXJzaW9uKQogewotICAg
IFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3Vy
cmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lv
biwgbmV3VmVyc2lvbl0geworICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90
ZWN0ZWRUaGlzLCByZXF1ZXN0SWRlbnRpZmllciwgb2xkVmVyc2lvbiwgbmV3VmVyc2lvbl0gewog
ICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+bm90aWZ5T3BlbkRCUmVxdWVzdEJsb2NrZWQo
cmVxdWVzdElkZW50aWZpZXIsIG9sZFZlcnNpb24sIG5ld1ZlcnNpb24pOwogICAgIH0pOwogfQog
CiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2VkKHVpbnQ2
NF90IGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpCiB7Ci0gICAgUmVmUHRyPEluUHJvY2Vz
c0lEQlNlcnZlcj4gc2VsZih0aGlzKTsKLSAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2go
W3RoaXMsIHNlbGYsIGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXJdIHsKKyAgICBSZWZQdHI8
SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgZGF0YWJhc2VDb25uZWN0aW9u
SWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGF0YWJhc2VDb25uZWN0aW9uQ2xvc2Vk
KGRhdGFiYXNlQ29ubmVjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJv
Y2Vzc0lEQlNlcnZlcjo6YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZCh1aW50NjRfdCBkYXRhYmFz
ZUNvbm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHRyYW5z
YWN0aW9uSWRlbnRpZmllcikKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxm
KHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgZGF0
YWJhc2VDb25uZWN0aW9uSWRlbnRpZmllciwgdHJhbnNhY3Rpb25JZGVudGlmaWVyXSB7CisgICAg
UmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5M
b29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RlZFRoaXMsIGRhdGFiYXNlQ29u
bmVjdGlvbklkZW50aWZpZXIsIHRyYW5zYWN0aW9uSWRlbnRpZmllcl0gewogICAgICAgICBtX3Nl
cnZlci0+YWJvcnRPcGVuQW5kVXBncmFkZU5lZWRlZChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlm
aWVyLCB0cmFuc2FjdGlvbklkZW50aWZpZXIpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vz
c0lEQlNlcnZlcjo6ZGlkRmlyZVZlcnNpb25DaGFuZ2VFdmVudCh1aW50NjRfdCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCBjb25zdCBJREJSZXNvdXJjZUlkZW50aWZpZXImIHJlcXVlc3RJ
ZGVudGlmaWVyKQogewotICAgIFJlZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHNlbGYodGhpcyk7
Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBzZWxmLCBkYXRhYmFzZUNv
bm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0geworICAgIFJlZlB0cjxJblBy
b2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgUnVuTG9vcDo6Y3VycmVu
dCgpLmRpc3BhdGNoKFt0aGlzLCBwcm90ZWN0ZWRUaGlzLCBkYXRhYmFzZUNvbm5lY3Rpb25JZGVu
dGlmaWVyLCByZXF1ZXN0SWRlbnRpZmllcl0gewogICAgICAgICBtX3NlcnZlci0+ZGlkRmlyZVZl
cnNpb25DaGFuZ2VFdmVudChkYXRhYmFzZUNvbm5lY3Rpb25JZGVudGlmaWVyLCByZXF1ZXN0SWRl
bnRpZmllcik7CiAgICAgfSk7CiB9CiAKIHZvaWQgSW5Qcm9jZXNzSURCU2VydmVyOjpvcGVuREJS
ZXF1ZXN0Q2FuY2VsbGVkKGNvbnN0IElEQlJlcXVlc3REYXRhJiByZXF1ZXN0RGF0YSkKIHsKLSAg
ICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBzZWxmKHRoaXMpOwotICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgc2VsZiwgcmVxdWVzdERhdGFdIHsKKyAgICBSZWZQdHI8
SW5Qcm9jZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1
cnJlbnQoKS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgcmVxdWVzdERhdGFdIHsKICAg
ICAgICAgbV9zZXJ2ZXItPm9wZW5EQlJlcXVlc3RDYW5jZWxsZWQocmVxdWVzdERhdGEpOwogICAg
IH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6Z2V0QWxsRGF0YWJhc2VOYW1lcyhj
b25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIG1haW5GcmFtZU9yaWdpbiwgY29uc3QgU2VjdXJpdHlP
cmlnaW5EYXRhJiBvcGVuaW5nT3JpZ2luLCB1aW50NjRfdCBjYWxsYmFja0lEKQogewotICAgIFJl
ZlB0cjxJblByb2Nlc3NJREJTZXJ2ZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBSdW5Mb29wOjpj
dXJyZW50KCkuZGlzcGF0Y2goW3RoaXMsIHByb3RlY3RvciwgbWFpbkZyYW1lT3JpZ2luLCBvcGVu
aW5nT3JpZ2luLCBjYWxsYmFja0lEXSB7CisgICAgUmVmUHRyPEluUHJvY2Vzc0lEQlNlcnZlcj4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBSdW5Mb29wOjpjdXJyZW50KCkuZGlzcGF0Y2goW3Ro
aXMsIHByb3RlY3RlZFRoaXMsIG1haW5GcmFtZU9yaWdpbiwgb3BlbmluZ09yaWdpbiwgY2FsbGJh
Y2tJRF0gewogICAgICAgICBtX3NlcnZlci0+Z2V0QWxsRGF0YWJhc2VOYW1lcyhtX2Nvbm5lY3Rp
b25Ub1NlcnZlci0+aWRlbnRpZmllcigpLCBtYWluRnJhbWVPcmlnaW4sIG9wZW5pbmdPcmlnaW4s
IGNhbGxiYWNrSUQpOwogICAgIH0pOwogfQogCiB2b2lkIEluUHJvY2Vzc0lEQlNlcnZlcjo6ZGlk
R2V0QWxsRGF0YWJhc2VOYW1lcyh1aW50NjRfdCBjYWxsYmFja0lELCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgZGF0YWJhc2VOYW1lcykKIHsKLSAgICBSZWZQdHI8SW5Qcm9jZXNzSURCU2VydmVyPiBw
cm90ZWN0b3IodGhpcyk7Ci0gICAgUnVuTG9vcDo6Y3VycmVudCgpLmRpc3BhdGNoKFt0aGlzLCBw
cm90ZWN0b3IsIGNhbGxiYWNrSUQsIGRhdGFiYXNlTmFtZXNdIHsKKyAgICBSZWZQdHI8SW5Qcm9j
ZXNzSURCU2VydmVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFJ1bkxvb3A6OmN1cnJlbnQo
KS5kaXNwYXRjaChbdGhpcywgcHJvdGVjdGVkVGhpcywgY2FsbGJhY2tJRCwgZGF0YWJhc2VOYW1l
c10gewogICAgICAgICBtX2Nvbm5lY3Rpb25Ub1NlcnZlci0+ZGlkR2V0QWxsRGF0YWJhc2VOYW1l
cyhjYWxsYmFja0lELCBkYXRhYmFzZU5hbWVzKTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1VzZXJNZWRpYVJlcXVlc3QuY3BwCmlu
ZGV4IDljZTQxOTg0YjgxZDAzZWNmNmZkZTllMGViNjFhNjFlZWJiNTA3NzMuLmUyNTJhNTVlYTU4
MzQ1NjIwZGVlNGI3MjY4OTQ3YTk2N2NhNGY5NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vVXNlck1lZGlhUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9Vc2VyTWVkaWFSZXF1ZXN0LmNwcApAQCAtMjA5LDcg
KzIwOSw3IEBAIHZvaWQgVXNlck1lZGlhUmVxdWVzdDo6ZmFpbGVkVG9DcmVhdGVTdHJlYW1XaXRo
UGVybWlzc2lvbkVycm9yKCkKIAogdm9pZCBVc2VyTWVkaWFSZXF1ZXN0Ojpjb250ZXh0RGVzdHJv
eWVkKCkKIHsKLSAgICBSZWY8VXNlck1lZGlhUmVxdWVzdD4gcHJvdGVjdCgqdGhpcyk7CisgICAg
UmVmPFVzZXJNZWRpYVJlcXVlc3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYgKG1f
Y29udHJvbGxlcikgewogICAgICAgICBtX2NvbnRyb2xsZXItPmNhbmNlbFVzZXJNZWRpYUFjY2Vz
c1JlcXVlc3QoKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvbkNlbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAppbmRleCA2MTJlY2Q0YTkxNmRi
M2VjMjJkNTdiMzlhN2FjY2QzYzAyZjRlYjQyLi5kYjYxYWJmZGM1ZDRkNWJlNDZjYmFhMDk0NmUx
NjY4NWE4ZWM5NzRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25vdGlmaWNh
dGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uQ2VudGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBA
IHZvaWQgTm90aWZpY2F0aW9uQ2VudGVyOjpzdG9wKCkKICAgICAvLyBDbGVhciBtX2NsaWVudCBp
bW1lZGlhdGVseSB0byBndWFyYW50ZWUgcmVlbnRyYW50IGNhbGxzIHRvIE5vdGlmaWNhdGlvbkNl
bnRlciBkbyBub3RoaW5nLgogICAgIC8vIEFsc28gcHJvdGVjdCB8dGhpc3wgc28gaXQncyBub3Qg
aW5kaXJlY3RseSBkZXN0cm95ZWQgdW5kZXIgdXMgYnkgd29yayBkb25lIGJ5IHRoZSBjbGllbnQu
CiAgICAgYXV0byYgY2xpZW50ID0gKnN0ZDo6ZXhjaGFuZ2UobV9jbGllbnQsIG51bGxwdHIpOwot
ICAgIFJlZjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3RlY3RvcigqdGhpcyk7CisgICAgUmVmPE5v
dGlmaWNhdGlvbkNlbnRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW1fY2Fs
bGJhY2tzLmlzRW1wdHkoKSkKICAgICAgICAgZGVyZWYoKTsgLy8gQmFsYW5jZWQgYnkgdGhlIHJl
ZiBpbiBOb3RpZmljYXRpb25DZW50ZXI6OnJlcXVlc3RQZXJtaXNzaW9uLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDNjOGRmMmI0
YWUzNThlZjJlN2VkMTU3ODFhODMzMzQ2MTEyMWEzNWUuLjlkY2VlMTlmMzI2MzkxOWRjNTRjZjg5
MzgwNGVjMWYwMTk2NTRiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTc5Nyw5ICs3OTcsOSBAQCB2b2lkIEF1ZGlvQ29udGV4
dDo6c2NoZWR1bGVOb2RlRGVsZXRpb24oKQogCiAgICAgICAgIG1faXNEZWxldGlvblNjaGVkdWxl
ZCA9IHRydWU7CiAKLSAgICAgICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlz
KTsKLSAgICAgICAgY2FsbE9uTWFpblRocmVhZChbc3Ryb25nVGhpc10gewotICAgICAgICAgICAg
c3Ryb25nVGhpcy0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICAgICAgUmVmUHRyPEF1ZGlvQ29u
dGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcHJv
dGVjdGVkVGhpc10geworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGVsZXRlTWFya2VkTm9k
ZXMoKTsKICAgICAgICAgfSk7CiAgICAgfQogfQpAQCAtODA5LDcgKzgwOSw3IEBAIHZvaWQgQXVk
aW9Db250ZXh0OjpkZWxldGVNYXJrZWROb2RlcygpCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIAogICAgIC8vIFByb3RlY3QgdGhpcyBvYmplY3QgZnJvbSBiZWluZyBkZWxldGVkIGJlZm9y
ZSB3ZSByZWxlYXNlIHRoZSBtdXRleCBsb2NrZWQgYnkgQXV0b0xvY2tlci4KLSAgICBSZWY8QXVk
aW9Db250ZXh0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QXVkaW9Db250ZXh0PiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKICAgICB7CiAgICAgICAgIEF1dG9Mb2NrZXIgbG9ja2VyKCp0aGlzKTsK
IApAQCAtMTAwMiwxMCArMTAwMiwxMCBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6aXNQbGF5aW5nQXVk
aW9EaWRDaGFuZ2UoKQogewogICAgIC8vIE1ha2Ugc3VyZSB0byBjYWxsIERvY3VtZW50Ojp1cGRh
dGVJc1BsYXlpbmdNZWRpYSgpIG9uIHRoZSBtYWluIHRocmVhZCwgc2luY2UKICAgICAvLyB3ZSBj
b3VsZCBiZSBvbiB0aGUgYXVkaW8gSS9PIHRocmVhZCBoZXJlIGFuZCB0aGUgY2FsbCBpbnRvIFdl
YkNvcmUgY291bGQgYmxvY2suCi0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gc3Ryb25nVGhpcyh0
aGlzKTsKLSAgICBjYWxsT25NYWluVGhyZWFkKFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIGlmIChz
dHJvbmdUaGlzLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgc3Ryb25nVGhpcy0+ZG9jdW1lbnQo
KS0+dXBkYXRlSXNQbGF5aW5nTWVkaWEoKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsK
KyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPmRvY3VtZW50KCkpCisgICAgICAgICAgICBwcm90
ZWN0ZWRUaGlzLT5kb2N1bWVudCgpLT51cGRhdGVJc1BsYXlpbmdNZWRpYSgpOwogICAgIH0pOwog
fQogCkBAIC0xMDYzLDkgKzEwNjMsOSBAQCB2b2lkIEF1ZGlvQ29udGV4dDo6c3VzcGVuZChQcm9t
aXNlJiYgcHJvbWlzZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVk
aW9Db250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNw
ZW5kKFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpT
dXNwZW5kZWQpOworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7
CisgICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAg
ICAgcHJvdGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9
CiAKQEAgLTEwOTMsOSArMTA5Myw5IEBAIHZvaWQgQXVkaW9Db250ZXh0OjpyZXN1bWUoUHJvbWlz
ZSYmIHByb21pc2UpCiAKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPEF1ZGlv
Q29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+cmVzdW1l
KFtzdHJvbmdUaGlzXSB7Ci0gICAgICAgIHN0cm9uZ1RoaXMtPnNldFN0YXRlKFN0YXRlOjpSdW5u
aW5nKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAg
IG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJv
dGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcpOwogICAgIH0pOwogfQogCkBAIC0x
MTE1LDEwICsxMTE1LDEwIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpjbG9zZShQcm9taXNlJiYgcHJv
bWlzZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5jbG9zZShbc3Ryb25n
VGhpc10gewotICAgICAgICBzdHJvbmdUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6Q2xvc2VkKTsKLSAg
ICAgICAgc3Ryb25nVGhpcy0+dW5pbml0aWFsaXplKCk7CisgICAgUmVmUHRyPEF1ZGlvQ29udGV4
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBtX2Rlc3RpbmF0aW9uTm9kZS0+Y2xvc2UoW3By
b3RlY3RlZFRoaXNdIHsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+c2V0U3RhdGUoU3RhdGU6OkNs
b3NlZCk7CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnVuaW5pdGlhbGl6ZSgpOwogICAgIH0pOwog
fQogCkBAIC0xMTM2LDEwICsxMTM2LDEwIEBAIHZvaWQgQXVkaW9Db250ZXh0OjpzdXNwZW5kUGxh
eWJhY2soKQogCiAgICAgbGF6eUluaXRpYWxpemUoKTsKIAotICAgIFJlZlB0cjxBdWRpb0NvbnRl
eHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgbV9kZXN0aW5hdGlvbk5vZGUtPnN1c3BlbmQoW3N0
cm9uZ1RoaXNdIHsKLSAgICAgICAgYm9vbCBpbnRlcnJ1cHRlZCA9IHN0cm9uZ1RoaXMtPm1fbWVk
aWFTZXNzaW9uLT5zdGF0ZSgpID09IFBsYXRmb3JtTWVkaWFTZXNzaW9uOjpJbnRlcnJ1cHRlZDsK
LSAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoaW50ZXJydXB0ZWQgPyBTdGF0ZTo6SW50ZXJy
dXB0ZWQgOiBTdGF0ZTo6U3VzcGVuZGVkKTsKKyAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fZGVzdGluYXRpb25Ob2RlLT5zdXNwZW5kKFtwcm90ZWN0
ZWRUaGlzXSB7CisgICAgICAgIGJvb2wgaW50ZXJydXB0ZWQgPSBwcm90ZWN0ZWRUaGlzLT5tX21l
ZGlhU2Vzc2lvbi0+c3RhdGUoKSA9PSBQbGF0Zm9ybU1lZGlhU2Vzc2lvbjo6SW50ZXJydXB0ZWQ7
CisgICAgICAgIHByb3RlY3RlZFRoaXMtPnNldFN0YXRlKGludGVycnVwdGVkID8gU3RhdGU6Oklu
dGVycnVwdGVkIDogU3RhdGU6OlN1c3BlbmRlZCk7CiAgICAgfSk7CiB9CiAKQEAgLTExNTgsOSAr
MTE1OCw5IEBAIHZvaWQgQXVkaW9Db250ZXh0OjptYXlSZXN1bWVQbGF5YmFjayhib29sIHNob3Vs
ZFJlc3VtZSkKIAogICAgIGxhenlJbml0aWFsaXplKCk7CiAKLSAgICBSZWZQdHI8QXVkaW9Db250
ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIG1fZGVzdGluYXRpb25Ob2RlLT5yZXN1bWUoW3N0
cm9uZ1RoaXNdIHsKLSAgICAgICAgc3Ryb25nVGhpcy0+c2V0U3RhdGUoU3RhdGU6OlJ1bm5pbmcp
OworICAgIFJlZlB0cjxBdWRpb0NvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgbV9k
ZXN0aW5hdGlvbk5vZGUtPnJlc3VtZShbcHJvdGVjdGVkVGhpc10geworICAgICAgICBwcm90ZWN0
ZWRUaGlzLT5zZXRTdGF0ZShTdGF0ZTo6UnVubmluZyk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViZGF0YWJhc2UvRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKaW5kZXggYTM2YWM3
ODI4Y2JhMWQ3NGU3MDY0NWU0ZmJmYjFjNWUyMTgzNThiNy4uZGEzOGUxY2ZmODkxNjA1MDA5YWY3
NTVjNDcyZGQwZTQ0N2FmMTU2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJkYXRhYmFzZS9EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJk
YXRhYmFzZS9EYXRhYmFzZS5jcHAKQEAgLTMzMyw3ICszMzMsNyBAQCB2b2lkIERhdGFiYXNlOjpw
ZXJmb3JtQ2xvc2UoKQogICAgIC8vIHRvIGl0IHdpdGggYSBsb2NhbCBwb2ludGVyIGhlcmUgZm9y
IGEgbGlpdGxlIGxvbmdlciwgc28gdGhhdCB3ZSBjYW4KICAgICAvLyB1bnNjaGVkdWxlIGFueSBE
YXRhYmFzZVRhc2tzIHRoYXQgcmVmZXIgdG8gaXQgYmVmb3JlIHRoZSBkYXRhYmFzZSBnZXRzCiAg
ICAgLy8gZGVsZXRlZC4KLSAgICBSZWY8RGF0YWJhc2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxEYXRhYmFzZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgZGF0YWJhc2VDb250ZXh0KCkt
PmRhdGFiYXNlVGhyZWFkKCktPnJlY29yZERhdGFiYXNlQ2xvc2VkKHRoaXMpOwogICAgIGRhdGFi
YXNlQ29udGV4dCgpLT5kYXRhYmFzZVRocmVhZCgpLT51bnNjaGVkdWxlRGF0YWJhc2VUYXNrcyh0
aGlzKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKaW5kZXggOWRhZWE1MjVlY2FmZjcxZjUxODk4Y2Y1YjQ2ZmM2NjA0ZGFkMDZkOC4uYTcw
NzBkYzBmNGU2YWI2ZWEzODY5YWRlMzQzMzNhNzEwMDAyMGMyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKQEAgLTUwOSw3ICs1MDksNyBA
QCB2b2lkIFdlYlNvY2tldDo6cmVzdW1lKCkKIAogdm9pZCBXZWJTb2NrZXQ6OnJlc3VtZVRpbWVy
RmlyZWQoKQogewotICAgIFJlZjxXZWJTb2NrZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxX
ZWJTb2NrZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQVNTRVJUKCFtX3BlbmRpbmdF
dmVudHMuaXNFbXB0eSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCmluZGV4IDE1ZTI3YTA5NmYzYmIzNzVhNDI1
NTYxZWU5NjU2YzRjODcwYTZjZTAuLjk1MDY0MTc3NDY5YzU1YjZjODQ4OWFjYzEwMmYwYjIwYTE1
OWM3ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0Q2hhbm5lbC5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCB2b2lkIFdlYlNvY2tldENo
YW5uZWw6OmNsb3NlKGludCBjb2RlLCBjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQo
IW1fc3VzcGVuZGVkKTsKICAgICBpZiAoIW1faGFuZGxlKQogICAgICAgICByZXR1cm47Ci0gICAg
UmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBBbiBhdHRlbXB0IHRvIHNl
bmQgY2xvc2luZyBoYW5kc2hha2UgbWF5IGZhaWwsIHdoaWNoIHdpbGwgZ2V0IHRoZSBjaGFubmVs
IGNsb3NlZCBhbmQgZGVyZWZlcmVuY2VkLgorICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3NpbmcgaGFuZHNoYWtl
IG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJl
bmNlZC4KICAgICBzdGFydENsb3NpbmdIYW5kc2hha2UoY29kZSwgcmVhc29uKTsKICAgICBpZiAo
bV9jbG9zaW5nICYmICFtX2Nsb3NpbmdUaW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX2Nsb3Np
bmdUaW1lci5zdGFydE9uZVNob3QoMiAqIFRDUE1heGltdW1TZWdtZW50TGlmZXRpbWUpOwpAQCAt
MjE0LDcgKzIxNCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hhbm5lbDo6ZmFpbChjb25zdCBTdHJpbmcm
IHJlYXNvbikKIAogICAgIC8vIEh5YmktMTAgc3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRl
cyB3ZSBtdXN0IG5vdCBjb250aW51ZSB0byBoYW5kbGUgaW5jb21pbmcgZGF0YQogICAgIC8vIG9u
Y2UgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGlzIGZhaWxlZCAoc2VjdGlvbiA3LjEuNykuCi0g
ICAgUmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3QoKnRoaXMpOyAvLyBUaGUgY2xpZW50IGNh
biBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJl
bmNlLgorICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsgLy8g
VGhlIGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRo
ZSBsYXN0IHJlZmVyZW5jZS4KICAgICBtX3Nob3VsZERpc2NhcmRSZWNlaXZlZERhdGEgPSB0cnVl
OwogICAgIGlmICghbV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBza2lwQnVmZmVyKG1fYnVm
ZmVyLnNpemUoKSk7IC8vIFNhdmUgbWVtb3J5LgpAQCAtMzAxLDcgKzMwMSw3IEBAIHZvaWQgV2Vi
U29ja2V0Q2hhbm5lbDo6ZGlkQ2xvc2VTb2NrZXRTdHJlYW0oU29ja2V0U3RyZWFtSGFuZGxlKiBo
YW5kbGUpCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OmRpZFJlY2VpdmVTb2NrZXRTdHJlYW1EYXRh
KFNvY2tldFN0cmVhbUhhbmRsZSogaGFuZGxlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuKQog
ewogICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBkaWRSZWNlaXZlU29ja2V0
U3RyZWFtRGF0YSgpIFJlY2VpdmVkICVkIGJ5dGVzIiwgdGhpcywgbGVuKTsKLSAgICBSZWY8V2Vi
U29ja2V0Q2hhbm5lbD4gcHJvdGVjdCgqdGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRo
ZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCisgICAg
UmVmPFdlYlNvY2tldENoYW5uZWw+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBUaGUgY2xpZW50
IGNhbiBjbG9zZSB0aGUgY2hhbm5lbCwgcG90ZW50aWFsbHkgcmVtb3ZpbmcgdGhlIGxhc3QgcmVm
ZXJlbmNlLgogICAgIEFTU0VSVChoYW5kbGUgPT0gbV9oYW5kbGUpOwogICAgIGlmICghbV9kb2N1
bWVudCkgewogICAgICAgICByZXR1cm47CkBAIC00MjgsNyArNDI4LDcgQEAgYm9vbCBXZWJTb2Nr
ZXRDaGFubmVsOjpwcm9jZXNzQnVmZmVyKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhlIGNsaWVu
dCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBsYXN0IHJl
ZmVyZW5jZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7
IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSByZW1vdmlu
ZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAKICAgICBpZiAobV9oYW5kc2hha2UtPm1vZGUoKSA9PSBX
ZWJTb2NrZXRIYW5kc2hha2U6OkluY29tcGxldGUpIHsKICAgICAgICAgaW50IGhlYWRlckxlbmd0
aCA9IG1faGFuZHNoYWtlLT5yZWFkU2VydmVySGFuZHNoYWtlKG1fYnVmZmVyLmRhdGEoKSwgbV9i
dWZmZXIuc2l6ZSgpKTsKQEAgLTQ2NSw3ICs0NjUsNyBAQCBib29sIFdlYlNvY2tldENoYW5uZWw6
OnByb2Nlc3NCdWZmZXIoKQogCiB2b2lkIFdlYlNvY2tldENoYW5uZWw6OnJlc3VtZVRpbWVyRmly
ZWQoKQogewotICAgIFJlZjxXZWJTb2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gVGhl
IGNsaWVudCBjYW4gY2xvc2UgdGhlIGNoYW5uZWwsIHBvdGVudGlhbGx5IHJlbW92aW5nIHRoZSBs
YXN0IHJlZmVyZW5jZS4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7IC8vIFRoZSBjbGllbnQgY2FuIGNsb3NlIHRoZSBjaGFubmVsLCBwb3RlbnRpYWxseSBy
ZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCiAgICAgd2hpbGUgKCFtX3N1c3BlbmRlZCAmJiBt
X2NsaWVudCAmJiAhbV9idWZmZXIuaXNFbXB0eSgpKQogICAgICAgICBpZiAoIXByb2Nlc3NCdWZm
ZXIoKSkKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIHZvaWQgV2ViU29j
a2V0Q2hhbm5lbDo6c3RhcnRDbG9zaW5nSGFuZHNoYWtlKGludCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikKICAgICAgICAgYnVmLmFwcGVuZChyZWFzb24udXRmOCgpLmRhdGEoKSwgcmVhc29u
LnV0ZjgoKS5sZW5ndGgoKSk7CiAgICAgfQogICAgIGVucXVldWVSYXdGcmFtZShXZWJTb2NrZXRG
cmFtZTo6T3BDb2RlQ2xvc2UsIGJ1Zi5kYXRhKCksIGJ1Zi5zaXplKCkpOwotICAgIFJlZjxXZWJT
b2NrZXRDaGFubmVsPiBwcm90ZWN0KCp0aGlzKTsgLy8gQW4gYXR0ZW1wdCB0byBzZW5kIGNsb3Np
bmcgaGFuZHNoYWtlIG1heSBmYWlsLCB3aGljaCB3aWxsIGdldCB0aGUgY2hhbm5lbCBjbG9zZWQg
YW5kIGRlcmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hhbm5lbD4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7IC8vIEFuIGF0dGVtcHQgdG8gc2VuZCBjbG9zaW5nIGhhbmRzaGFrZSBtYXkgZmFp
bCwgd2hpY2ggd2lsbCBnZXQgdGhlIGNoYW5uZWwgY2xvc2VkIGFuZCBkZXJlZmVyZW5jZWQuCiAg
ICAgcHJvY2Vzc091dGdvaW5nRnJhbWVRdWV1ZSgpOwogCiAgICAgaWYgKG1fY2xvc2VkKSB7CkBA
IC03MjksNyArNzI5LDcgQEAgdm9pZCBXZWJTb2NrZXRDaGFubmVsOjpwcm9jZXNzT3V0Z29pbmdG
cmFtZVF1ZXVlKCkKICAgICBpZiAobV9vdXRnb2luZ0ZyYW1lUXVldWVTdGF0dXMgPT0gT3V0Z29p
bmdGcmFtZVF1ZXVlQ2xvc2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWY8V2ViU29ja2V0
Q2hhbm5lbD4gcHJvdGVjdCgqdGhpcyk7IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdldCB0
aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KKyAgICBSZWY8V2ViU29ja2V0Q2hh
bm5lbD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEFueSBjYWxsIHRvIGZhaWwoKSB3aWxsIGdl
dCB0aGUgY2hhbm5lbCBjbG9zZWQgYW5kIGRlcmVmZXJlbmNlZC4KIAogICAgIHdoaWxlICghbV9v
dXRnb2luZ0ZyYW1lUXVldWUuaXNFbXB0eSgpKSB7CiAgICAgICAgIGF1dG8gZnJhbWUgPSBtX291
dGdvaW5nRnJhbWVRdWV1ZS50YWtlRmlyc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV29ya2VyVGhyZWFkYWJsZVdlYlNv
Y2tldENoYW5uZWwuY3BwCmluZGV4IDhhM2JjNDdiODhjYmMyMjJiZjA1ZDY5MGYxYmQwNDk3YzY1
ZDgxZjcuLjIyNTNhOGVkYjYyN2E5OTI5Njk3ZjU2NWM0ZGQ5YzAzM2M0M2E2NTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9Xb3JrZXJUaHJlYWRhYmxlV2Vi
U29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRz
L1dvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBA
IHZvaWQgV29ya2VyVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OkJyaWRnZTo6aW5pdGlhbGl6
ZSgpCiB7CiAgICAgQVNTRVJUKCFtX3BlZXIpOwogICAgIHNldE1ldGhvZE5vdENvbXBsZXRlZCgp
OwotICAgIFJlZjxCcmlkZ2U+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCcmlkZ2U+IHByb3Rl
Y3RlZFRoaXMoKnRoaXMpOwogCiAgICAgV29ya2VyTG9hZGVyUHJveHkqIGxvYWRlclByb3h5ID0g
Jm1fbG9hZGVyUHJveHk7CiAgICAgUmVmUHRyPFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsQ2xp
ZW50V3JhcHBlcj4gd29ya2VyQ2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlcjsK
QEAgLTQ0Nyw3ICs0NDcsNyBAQCBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6U2VuZFJlc3Vs
dCBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOgogICAgICAgICBwZWVy
LT5zZW5kKGNhcHR1cmVkTWVzc2FnZS5zdHJpbmcoKSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJp
ZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2Nr
ZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3Jh
cHBlci5nZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBwZXIpCkBAIC00NzcsNyArNDc3LDcgQEAg
VGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV29ya2VyVGhyZWFkYWJsZVdl
YlNvY2tldENoYW5uZWw6OkJyaWRnZToKICAgICAgICAgcGVlci0+c2VuZCgqYXJyYXlCdWZmZXIp
OwogICAgIH0pOwogCi0gICAgUmVmPEJyaWRnZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEJy
aWRnZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgd2FpdEZvck1ldGhvZENvbXBsZXRpb24o
KTsKICAgICBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbENsaWVudFdyYXBwZXIqIGNsaWVudFdy
YXBwZXIgPSBtX3dvcmtlckNsaWVudFdyYXBwZXIuZ2V0KCk7CiAgICAgaWYgKCFjbGllbnRXcmFw
cGVyKQpAQCAtNTAzLDcgKzUwMyw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5k
UmVzdWx0IFdvcmtlclRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpCcmlkZ2U6CiAgICAgICAg
IHBlZXItPnNlbmQoQmxvYjo6ZGVzZXJpYWxpemUoY2FwdHVyZWRVUkwudXJsKCksIGNhcHR1cmVk
VHlwZS5zdHJpbmcoKSwgc2l6ZSwgeyB9KSk7CiAgICAgfSk7CiAKLSAgICBSZWY8QnJpZGdlPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAg
ICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2VyQ2xpZW50V3JhcHBlci5n
ZXQoKTsKICAgICBpZiAoIWNsaWVudFdyYXBwZXIpCkBAIC01MjYsNyArNTI2LDcgQEAgdW5zaWdu
ZWQgbG9uZyBXb3JrZXJUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbDo6QnJpZGdlOjpidWZmZXJl
ZEFtb3VudCgpCiAgICAgICAgIHBlZXItPmJ1ZmZlcmVkQW1vdW50KCk7CiAgICAgfSk7CiAKLSAg
ICBSZWY8QnJpZGdlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QnJpZGdlPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICAgICB3YWl0Rm9yTWV0aG9kQ29tcGxldGlvbigpOwogICAgIFRocmVhZGFi
bGVXZWJTb2NrZXRDaGFubmVsQ2xpZW50V3JhcHBlciogY2xpZW50V3JhcHBlciA9IG1fd29ya2Vy
Q2xpZW50V3JhcHBlci5nZXQoKTsKICAgICBpZiAoY2xpZW50V3JhcHBlcikKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4
IGQ2ZDA1Y2UzMjgxMmY1ZGUyZTk3ZDJmNzcwMTU2ZGEyNmVkNjkwMjkuLmIwOTczNDBmNDkxODUx
YjNmMzBhNDViZmQ3M2U1NjM3NzAyZDI4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzYwLDcgKzM2MCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpjb21wdXRlZExhYmVsKCkKIHsKICAgICAvLyBU
aGlzIG1ldGhvZCBpcyBiZWluZyBjYWxsZWQgYnkgV2ViS2l0IGluc3BlY3Rvciwgd2hpY2ggbWF5
IGhhcHBlbiBhdCBhbnkgdGltZSwgc28gd2UgbmVlZCB0byB1cGRhdGUgb3VyIGJhY2tpbmcgc3Rv
cmUgbm93LgogICAgIC8vIEFsc28gaG9sZCBvbnRvIHRoaXMgb2JqZWN0IGluIGNhc2UgdXBkYXRl
QmFja2luZ1N0b3JlIGRlbGV0ZXMgdGhpcyBub2RlLgotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgdXBkYXRlQmFja2luZ1N0b3JlKCk7CiAgICAgVmVj
dG9yPEFjY2Vzc2liaWxpdHlUZXh0PiB0ZXh0OwogICAgIGFjY2Vzc2liaWxpdHlUZXh0KHRleHQp
OwpAQCAtMTY3OSw3ICsxNjc5LDcgQEAgdW5zaWduZWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6ZG9B
WExpbmVGb3JJbmRleCh1bnNpZ25lZCBpbmRleCkKIHZvaWQgQWNjZXNzaWJpbGl0eU9iamVjdDo6
dXBkYXRlQmFja2luZ1N0b3JlKCkKIHsKICAgICAvLyBVcGRhdGluZyB0aGUgbGF5b3V0IG1heSBk
ZWxldGUgdGhpcyBvYmplY3QuCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3Rl
Y3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKIAogICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzLT5kb2N1bWVudCgp
KSB7CiAgICAgICAgIGlmICghZG9jdW1lbnQtPnZpZXcoKS0+aXNJblJlbmRlclRyZWVMYXlvdXQo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QuY3BwCmluZGV4IDE0MWMzM2NlMzkxNzdjYjk2NDI4ZGJjZWYwZDU2
NTY1ZGViOGIyNjAuLjg5MWY2ZmViMzQ3MDJkMDU1ZmFkNTYxM2RhMTI0MzJlY2IzNTcyMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcApAQCAtMTY2Miw3ICsxNjYyLDcgQEAgdm9pZCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjpzZXRGb2N1c2VkKGJvb2wgb24pCiAgICAgLy8gV2hlbiBhIG5vZGUg
aXMgdG9sZCB0byBzZXQgZm9jdXMsIHRoYXQgY2FuIGNhdXNlIGl0IHRvIGJlIGRlYWxsb2NhdGVk
LCB3aGljaCBtZWFucyB0aGF0IGRvaW5nCiAgICAgLy8gYW55dGhpbmcgZWxzZSBpbnNpZGUgdGhp
cyBvYmplY3Qgd2lsbCBjcmFzaC4gVG8gZml4IHRoaXMsIHdlIGFkZGVkIGEgUmVmUHRyIHRvIHBy
b3RlY3QgdGhpcyBvYmplY3QKICAgICAvLyBsb25nIGVub3VnaCBmb3IgZHVyYXRpb24uCi0gICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgCiAgICAgLy8gSWYg
dGhpcyBub2RlIGlzIGFscmVhZHkgdGhlIGN1cnJlbnRseSBmb2N1c2VkIG5vZGUsIHRoZW4gY2Fs
bGluZyBmb2N1cygpIHdvbid0IGRvIGFueXRoaW5nLgogICAgIC8vIFRoYXQgaXMgYSBwcm9ibGVt
IHdoZW4gZm9jdXMgaXMgcmVtb3ZlZCBmcm9tIHRoZSB3ZWJwYWdlIHRvIGNocm9tZSwgYW5kIHRo
ZW4gcmV0dXJucy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2dvYmplY3Qv
R09iamVjdEV2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVj
dC9HT2JqZWN0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggOWQxYjg4MWRkOWQzYjg2OGU1YjlmYzYy
MjRlZTE4N2IxMjMyODQzNi4uZDRhMWQxODM1MWNmMWFkNDEzMzJkZTE1N2QwNmIyOTE0MTc4YmFh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2JqZWN0RXZl
bnRMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvZ29iamVjdC9HT2Jq
ZWN0RXZlbnRMaXN0ZW5lci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBHT2JqZWN0RXZlbnRM
aXN0ZW5lcjo6Z29iamVjdERlc3Ryb3llZCgpCiAgICAgLy8gUHJvdGVjdCAndGhpcycgY2xhc3Mg
aW4gY2FzZSB0aGUgJ21fY29yZVRhcmdldCcgaG9sZHMgdGhlIGxhc3QgcmVmZXJlbmNlLAogICAg
IC8vIHdoaWNoIG1heSBjYXVzZSwgaW5zaWRlIHJlbW92ZUV2ZW50TGlzdGVuZXIoKSwgZnJlZSBv
ZiB0aGlzIG9iamVjdAogICAgIC8vIGFuZCBsYXRlciB1c2UtYWZ0ZXItZnJlZSB3aXRoIHRoZSBt
X2hhbmRsZXIgPSAwOyBhc3NpZ25tZW50LgotICAgIFJlZlB0cjxHT2JqZWN0RXZlbnRMaXN0ZW5l
cj4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8R09iamVjdEV2ZW50TGlzdGVuZXI+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAKICAgICBtX2NvcmVUYXJnZXQtPnJlbW92ZUV2ZW50TGlzdGVuZXIo
bV9kb21FdmVudE5hbWUuZGF0YSgpLCB0aGlzLCBtX2NhcHR1cmUpOwogICAgIG1fY29yZVRhcmdl
dCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVs
ZW1lbnRJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21F
bGVtZW50SW50ZXJmYWNlLmNwcAppbmRleCBlYzAxYmJjNThkMDMyYmFjYWQ4Mjg1YjNjMDlmOTRi
YTc2NDdlMThjLi5iZTBiZjg2NDg1MzcxMjE1Y2QyZDliMDcxNjMwZWIyOWY5YWZkMjRlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudElu
dGVyZmFjZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEpTQ3VzdG9tRWxl
bWVudEludGVyZmFjZTo6Y29uc3RydWN0RWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIHQKICAg
ICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0g
ICAgUmVmPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBK
U0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOwogCkBAIC0xMDgsNyArMTA4
LDcgQEAgdm9pZCBKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6OnVwZ3JhZGVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2lzb2xhdGVkV29ybGQtPnZtKCkpOwogCiAgICAgaWYg
KCFtX2NvbnN0cnVjdG9yKQpAQCAtMTU2LDcgKzE1Niw3IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50
SW50ZXJmYWNlOjphdHRyaWJ1dGVDaGFuZ2VkKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFF1YWxp
ZmllCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBSZWY8SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKG1faXNvbGF0ZWRXb3JsZC0+dm0oKSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFj
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVy
cm9yQ2FsbGJhY2suY3BwCmluZGV4IDIwNjFkYTlhOTU3YTA4NWMzMDFlOWQ4YTM5YzU3ZGZjYzFk
MzllNDAuLjc5NzMzZTU4NjNlMjJjZjA1YzRjNDdiYTJkMTk2M2Y0ZDkzM2VmMjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JD
YWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcApAQCAtNDUsNyArNDUsNyBAQCBib29sIEpTU1FMU3Rh
dGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRyYW5zYWN0
aW9uLCBTUUxFcgogICAgIGlmICghbV9kYXRhIHx8ICFtX2RhdGEtPmdsb2JhbE9iamVjdCgpIHx8
ICFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxK
U1NRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU1NR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXIuY3BwCmluZGV4IGVlOWY5Njg5MGFhNzJmZTAwZjI5NzExMzg3ZGMzYmU3YTkzYzZkODQuLmMz
YWNmNWQ1YjZiZmY4YzYxN2M4ODNhZDZkNmM5OWI5NDQxOTNlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKQEAg
LTg3LDcgKzg3LDcgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1l
c3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgICAgIGZ1bmN0aW9uID0gbV9jdXN0
b21SZXNvbHZlci5nZXQoKTsKICAgICB9CiAKLSAgICBSZWY8SlNDdXN0b21YUGF0aE5TUmVzb2x2
ZXI+IHNlbGZQcm90ZWN0b3IoKnRoaXMpOworICAgIFJlZjxKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdz
OwogICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIHByZWZpeCkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNr
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NR2xvYmFsT2JqZWN0VGFzay5j
cHAKaW5kZXggMWYyMWZjNjZmNTAxZTAwYTQwNzAyMGZjMzUyNDZiNTQ0NWVhZTc1OS4uYzYyMzA3
ZThmZjdhZDgxYTliMDk5YjIzNWMyYjVlMTVkM2RjYWJjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01HbG9iYWxPYmplY3RUYXNrLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVjdFRhc2suY3BwCkBAIC00OCw3ICs0
OCw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIFJlZjxKU0dsb2JhbE9iamVjdENhbGxiYWNrPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEpTR2xvYmFsT2JqZWN0Q2FsbGJhY2s+IHByb3RlY3Rl
ZFRoaXMoKnRoaXMpOwogICAgICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2dsb2JhbE9iamVjdC0+
dm0oKSk7CiAKICAgICAgICAgRXhlY1N0YXRlKiBleGVjID0gbV9nbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2lu
ZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2Uu
Y3BwCmluZGV4IDA0YWU4YTMzMmM2YTExMjhkMTMyOTE4Y2I5Y2IzYzlmZGVhM2RmYTcuLmVmOWU2
NzNjNTlhY2UwMDJjNDNhMDE4ZGQwMWNkYTJlYTE3NTNkN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgY2FsbCgpCiAgICAgewotICAgICAgICBSZWY8SlNET01XaW5kb3dN
aWNyb3Rhc2tDYWxsYmFjaz4gcHJvdGVjdCgqdGhpcyk7CisgICAgICAgIFJlZjxKU0RPTVdpbmRv
d01pY3JvdGFza0NhbGxiYWNrPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICAgICAgSlNMb2Nr
SG9sZGVyIGxvY2sobV9nbG9iYWxPYmplY3QtPnZtKCkpOwogCiAgICAgICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKaW5kZXggNmViYTRkZWE4NDk1ZmM0YmVlNTZm
ZWQxYjRhZThhMDBjYjljMWNmNS4uZGI5NGE2MTdkMjE3ZjZjOWMxYTcwMTg4NzIwODVjMjk1Zjkw
OTM4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNw
cApAQCAtODQsNyArODQsNyBAQCB2b2lkIEpTRXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudChTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LAogICAgIENhbGxUeXBl
IGNhbGxUeXBlID0ganNGdW5jdGlvbi0+bWV0aG9kVGFibGUoKS0+Z2V0Q2FsbERhdGEoanNGdW5j
dGlvbiwgY2FsbERhdGEpOwogCiAgICAgaWYgKGNhbGxUeXBlICE9IENhbGxUeXBlOjpOb25lKSB7
Ci0gICAgICAgIFJlZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkY3RvcigqdGhpcyk7CisgICAg
ICAgIFJlZjxKU0Vycm9ySGFuZGxlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAg
RXZlbnQqIHNhdmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgpOwogICAgICAg
ICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChldmVudCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBkZDI4MjA0YjAwZmJlN2Fh
YzM0NDFjMWYzNjBjZTA0ZTMwZjdlODJiLi5jYzU0ZmQ0YTgxODQ5NzdhNjA0YjVmOTRhNTg1MjEz
MmExZDg2ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0
ZW5lci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
IH0KIAogICAgIGlmIChjYWxsVHlwZSAhPSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICBSZWY8
SlNFdmVudExpc3RlbmVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEpTRXZlbnRMaXN0
ZW5lcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZm
ZXIgYXJnczsKICAgICAgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnbG9iYWxPYmplY3QsIGV2
ZW50KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
Q2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbkNhbGxi
YWNrLmNwcAppbmRleCBkMGE3YmIwOTcyNmNkZGYxN2FjOTM0NDRmNWNmODBjZDIxZDc1YjUzLi5m
ZWU5NzZlMzFhYzc5N2ZjZjZmYmQyMzkyMjJhZjdiYjAxNjY4OGYwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTU2LDcgKzU2
LDcgQEAgdm9pZCBKU011dGF0aW9uQ2FsbGJhY2s6OmNhbGwoY29uc3QgVmVjdG9yPFJlZjxNdXRh
dGlvblJlY29yZD4+JiBtdXRhdGlvbnMsIE11dGEKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNr
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3Rl
Y3QoKnRoaXMpOworICAgIFJlZjxKU011dGF0aW9uQ2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9pc29sYXRlZFdvcmxkLT52bSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUZpbHRlckN1c3RvbS5jcHAK
aW5kZXggMDFiNTM2M2YxNTBjZWVhZjU0NDU2Y2MxYWM4ZTIyMDg2NjgyMmI5MS4uNTQ3NTZiODdh
MDc2OThlNDAwMDY3NDdmMzlmNmFjNTYwMWUwZDcxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNOb2RlRmlsdGVyQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVGaWx0ZXJDdXN0b20uY3BwCkBAIC00MCw3ICs0MCw3IEBAIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAvLyBib29sZWFuLgogdWludDE2X3QgSlNOb2RlRmlsdGVyOjph
Y2NlcHROb2RlKE5vZGUqIG5vZGUpCiB7Ci0gICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdCgq
dGhpcyk7CisgICAgUmVmPEpTTm9kZUZpbHRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAg
ICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5j
cHAKaW5kZXggZjZkMmY2ZWY4NTQ3YzY4ZjAxNzUwYjU2NDVjZjFlYzY2Yjk0MzJlNy4uZTkwYTJk
Yzc2YWI1ZDNjZmJiNjMzZmVhMmMwMDJkZjY2MTQ2YTY2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0yODAwLDgg
KzI4MDAsOCBAQCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6d3JpdGVCbG9ic1RvRGlza0Zv
ckluZGV4ZWREQihzdGQ6OmZ1bmN0aW9uPHZvaWQgKGNvbgogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAgICAgQVNTRVJUKGhhc0Jsb2JVUkxzKCkpOwogCi0gICAgUmVmUHRyPFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4gcHJvdGVjdG9yKHRoaXMpOwotICAgIGJsb2JSZWdpc3RyeSgpLndyaXRl
QmxvYnNUb1RlbXBvcmFyeUZpbGVzKG1fYmxvYlVSTHMsIFtjb21wbGV0aW9uSGFuZGxlciwgdGhp
cywgcHJvdGVjdG9yXShjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYkZpbGVQYXRocykgeworICAg
IFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
YmxvYlJlZ2lzdHJ5KCkud3JpdGVCbG9ic1RvVGVtcG9yYXJ5RmlsZXMobV9ibG9iVVJMcywgW2Nv
bXBsZXRpb25IYW5kbGVyLCB0aGlzLCBwcm90ZWN0ZWRUaGlzXShjb25zdCBWZWN0b3I8U3RyaW5n
PiYgYmxvYkZpbGVQYXRocykgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAg
ICAgICAgIGlmIChibG9iRmlsZVBhdGhzLmlzRW1wdHkoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1ZjY1ZDFlYzRl
ZjIxYjU4MjgwMDQ4YWQ2ZTY0YzE5ZDRkMWI0Njc3Li5mY2M1NzYyNmU4N2U1NGViNzU5OWRmODgy
ZDM5NGMyNDE2Yzk5ZThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtNDA0Niw3ICs0MDQ2LDcgQEAgc3ViIEdlbmVyYXRl
Q2FsbGJhY2tJbXBsZW1lbnRhdGlvbgogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIEBh
cmdzQ2hlY2spIGlmIEBhcmdzQ2hlY2s7CiAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpXG4iKTsKICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcblxuIik7Ci0gICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBSZWY8JGNsYXNzTmFtZT4gcHJvdGVjdCgqdGhpcyk7XG5cbiIp
OworICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgUmVmPCRjbGFzc05hbWU+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpO1xuXG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpO1xu
XG4iKTsKICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIEV4ZWNTdGF0ZSogc3Rh
dGUgPSBtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCk7XG4iKTsKICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7XG4i
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsYmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbGJhY2suY3BwCmluZGV4IGJmYjI3OWViMTI3YzU1NzAzZmZjMjdlMjBmMjRj
MjUzZGJhZGU5MDQuLmVjYjdkM2ExZGZlN2QwODU4YWQ4YWRmMjhkNmY5ZWFiNDcwMzc4N2YgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxiYWNrLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJh
Y2s6OmNhbGxiYWNrV2l0aE5vUGFyYW0oKQogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSZWY8SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApA
QCAtMTIwLDcgKzEyMCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aEFycmF5
UGFyYW0oUmVmUHRyPEZsb2F0MzJBcnJheT4gYXJyYXlQYXJhbSkKICAgICBpZiAoIWNhbkludm9r
ZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmPEpTVGVzdENhbGxi
YWNrPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgSlNMb2NrSG9sZGVyIGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3Qo
KS0+dm0oKSk7CiAKQEAgLTE0MCw3ICsxNDAsNyBAQCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxs
YmFja1dpdGhTZXJpYWxpemVkU2NyaXB0VmFsdWVQYXJhbShQYXNzUmVmUHRyPFNlcmlhbGl6ZQog
ICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAg
ICBSZWY8SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU1Rlc3RDYWxs
YmFjaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2Rh
dGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApAQCAtMTYxLDcgKzE2MSw3IEBAIGJvb2wgSlNU
ZXN0Q2FsbGJhY2s6OmNhbGxiYWNrV2l0aFN0cmluZ0xpc3QoUGFzc1JlZlB0cjxET01TdHJpbmdM
aXN0PiBsaXN0UGFyYW0pCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPEpTVGVzdENhbGxiYWNrPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpTTG9j
a0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOwogCkBAIC0xODEsNyAr
MTgxLDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFjazo6Y2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJv
b2xQYXJhbSkKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCi0gICAgUmVmPEpTVGVzdENhbGxiYWNrPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8
SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgSlNMb2NrSG9sZGVy
IGxvY2sobV9kYXRhLT5nbG9iYWxPYmplY3QoKS0+dm0oKSk7CiAKQEAgLTIwMSw3ICsyMDEsNyBA
QCBib29sIEpTVGVzdENhbGxiYWNrOjpjYWxsYmFja1JlcXVpcmVzVGhpc1RvUGFzcyhpbnQzMl90
IGxvbmdQYXJhbSwgVGVzdE5vZGUqIHRlcwogICAgIGlmICghY2FuSW52b2tlQ2FsbGJhY2soKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBSZWY8SlNUZXN0Q2FsbGJhY2s+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxKU1Rlc3RDYWxsYmFjaz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dENhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IGNlYWNiM2M0Y2FiNjFiMjFj
OGYyZjgyZmExMzYxMWEzMGFjNzY2ZGQuLmY4ZDA4NDQwZWYyYmYzMzMyZTk0NjhiMWQ3OWZjMzgy
NjUzMjA3MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTY1LDcg
KzY1LDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1dpdGhOb1BhcmFt
KCkKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOwogCkBAIC04NSw3
ICs4NSw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbGJhY2tXaXRoQXJyYXlQ
YXJhbShSZWZQdHI8RmxvYXQzMkFycmF5PiBhcnJheVBhCiAgICAgaWYgKCFjYW5JbnZva2VDYWxs
YmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1
bmN0aW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmds
b2JhbE9iamVjdCgpLT52bSgpKTsKIApAQCAtMTA2LDcgKzEwNiw3IEBAIGJvb2wgSlNUZXN0Q2Fs
bGJhY2tGdW5jdGlvbjo6Y2FsbGJhY2tXaXRoU2VyaWFsaXplZFNjcmlwdFZhbHVlUGFyYW0oUGFz
c1JlZlB0cjxTCiAgICAgaWYgKCFjYW5JbnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAotICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAK
ICAgICBKU0xvY2tIb2xkZXIgbG9jayhtX2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApA
QCAtMTI4LDcgKzEyOCw3IEBAIGJvb2wgSlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbGJhY2tX
aXRoU3RyaW5nTGlzdChQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGxpCiAgICAgaWYgKCFjYW5J
bnZva2VDYWxsYmFjaygpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFJlZjxKU1Rlc3RD
YWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SlNUZXN0Q2FsbGJhY2tG
dW5jdGlvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBKU0xvY2tIb2xkZXIgbG9jayht
X2RhdGEtPmdsb2JhbE9iamVjdCgpLT52bSgpKTsKIApAQCAtMTQ5LDcgKzE0OSw3IEBAIGJvb2wg
SlNUZXN0Q2FsbGJhY2tGdW5jdGlvbjo6Y2FsbGJhY2tXaXRoQm9vbGVhbihib29sIGJvb2xQYXJh
bSkKICAgICBpZiAoIWNhbkludm9rZUNhbGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgUmVmPEpTVGVzdENhbGxiYWNrRnVuY3Rpb24+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpT
TG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+Z2xvYmFsT2JqZWN0KCktPnZtKCkpOwogCkBAIC0xNzAs
NyArMTcwLDcgQEAgYm9vbCBKU1Rlc3RDYWxsYmFja0Z1bmN0aW9uOjpjYWxsYmFja1JlcXVpcmVz
VGhpc1RvUGFzcyhpbnQzMl90IGxvbmdQYXJhbSwgVGVzdE4KICAgICBpZiAoIWNhbkludm9rZUNh
bGxiYWNrKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgUmVmPEpTVGVzdENhbGxiYWNr
RnVuY3Rpb24+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxKU1Rlc3RDYWxsYmFja0Z1bmN0aW9u
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIEpTTG9ja0hvbGRlciBsb2NrKG1fZGF0YS0+
Z2xvYmFsT2JqZWN0KCktPnZtKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvcnVudGltZV9yb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3Qu
Y3BwCmluZGV4IGE2MWQxZDM0MWU2NDhkNDU4ODM4YWU0NTRhODFlODRmNzJiOWYyNDcuLmYzMDky
MjAyYTJlMWZiZmM1M2VkNmUxYzFkNTE0YzE2YzBhNDg4MTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JyaWRnZS9ydW50aW1lX3Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRn
ZS9ydW50aW1lX3Jvb3QuY3BwCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9pZCBSb290T2JqZWN0Ojpm
aW5hbGl6ZShKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+IGhhbmRsZSwgdm9pZCopCiB7CiAgICAg
UnVudGltZU9iamVjdCogb2JqZWN0ID0gc3RhdGljX2Nhc3Q8UnVudGltZU9iamVjdCo+KGhhbmRs
ZS5zbG90KCktPmFzQ2VsbCgpKTsKIAotICAgIFJlZjxSb290T2JqZWN0PiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8Um9vdE9iamVjdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgb2JqZWN0
LT5pbnZhbGlkYXRlKCk7CiAgICAgd2Vha1JlbW92ZShtX3J1bnRpbWVPYmplY3RzLCBvYmplY3Qs
IG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFNlbGVj
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0b3IuY3BwCmluZGV4IDk3
ZTQ0NTA2ODRiNWM1NzFmNDk5MDlkNzg3YmU2NDEzNDc3ZTc2ODQuLmU4YjIxODVlNjA5MzRkMmFl
MzIyMTJmN2I5YjRhMmZmMDZkMDg2MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NGb250U2VsZWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250U2VsZWN0
b3IuY3BwCkBAIC0yOTIsNyArMjkyLDcgQEAgdm9pZCBDU1NGb250U2VsZWN0b3I6OmJlZ2luTG9h
ZFRpbWVyRmlyZWQoKQogICAgIGZvbnRzVG9CZWdpbkxvYWRpbmcuc3dhcChtX2ZvbnRzVG9CZWdp
bkxvYWRpbmcpOwogCiAgICAgLy8gQ1NTRm9udFNlbGVjdG9yIGNvdWxkIGdldCBkZWxldGVkIHZp
YSBiZWdpbkxvYWRJZk5lZWRlZCgpIG9yIGxvYWREb25lKCkgdW5sZXNzIHByb3RlY3RlZC4KLSAg
ICBSZWY8Q1NTRm9udFNlbGVjdG9yPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q1NTRm9udFNl
bGVjdG9yPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIENhY2hlZFJlc291cmNlTG9hZGVy
JiBjYWNoZWRSZXNvdXJjZUxvYWRlciA9IG1fZG9jdW1lbnQtPmNhY2hlZFJlc291cmNlTG9hZGVy
KCk7CiAgICAgZm9yIChhdXRvJiBmb250SGFuZGxlIDogZm9udHNUb0JlZ2luTG9hZGluZykgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAppbmRleCAzZTMwMTQ5OWI1
ZjI0MDk0YWMwYWU3ZmUwMTE3OWIzZTU2NmNkMTZmLi5mZjYzNzM2MmJjOGNhYzc3YjQxMjAyZjYw
MTc3MGU5NjcxNTExYmI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVl
dENvbnRlbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRz
LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgU3R5bGVTaGVldENvbnRlbnRzOjpjaGVja0xv
YWRlZCgpCiAgICAgLy8gQXZvaWQgfHRoaXN8IGJlaW5nIGRlbGV0ZWQgYnkgc2NyaXB0cyB0aGF0
IHJ1biB2aWEKICAgICAvLyBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXI6OmV4ZWN1dGVTY3JpcHRz
V2FpdGluZ0ZvclN0eWxlc2hlZXRzKCkuCiAgICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS82NjIy
MzAwPi4KLSAgICBSZWY8U3R5bGVTaGVldENvbnRlbnRzPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8U3R5bGVTaGVldENvbnRlbnRzPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKICAgICBTdHlsZVNo
ZWV0Q29udGVudHMqIHBhcmVudFNoZWV0ID0gcGFyZW50U3R5bGVTaGVldCgpOwogICAgIGlmIChw
YXJlbnRTaGVldCkgewogICAgICAgICBwYXJlbnRTaGVldC0+Y2hlY2tMb2FkZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9DaGFyYWN0ZXJEYXRhLmNwcAppbmRleCA2MTc5NjE3NDE1MzhjZDNhZGI0MTllNzc1
YzJmMTQzZWM2ZDk0MDMzLi4zYzBkMmE4NDQ0NTUyZDNlNTA0NDFlNTdjMTQ1NzM2Y2Y2OTNkMGU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ2hhcmFjdGVyRGF0YS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuY3BwCkBAIC00Myw3ICs0Myw3IEBAIHZv
aWQgQ2hhcmFjdGVyRGF0YTo6c2V0RGF0YShjb25zdCBTdHJpbmcmIGRhdGEpCiAgICAgaWYgKG1f
ZGF0YSA9PSBub25OdWxsRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmPENoYXJhY3Rl
ckRhdGE+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxDaGFyYWN0ZXJEYXRhPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIHVuc2lnbmVkIG9sZExlbmd0aCA9IGxlbmd0aCgpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggOWUyM2Q5Y2QzNTZkYTYzZDQ4MGQ0MDFl
ZDk3YjgxMTU2ZGIzYWRhYS4uMGYyZjc2NDUyZjJlOTFiNjdmMTViYTFiZTJhYTE4ODFkNGFiZmRm
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtMjMxLDcgKzIzMSw3IEBA
IGJvb2wgQ29udGFpbmVyTm9kZTo6aW5zZXJ0QmVmb3JlKE5vZGUmIG5ld0NoaWxkLCBOb2RlKiBy
ZWZDaGlsZCwgRXhjZXB0aW9uQ29kZSYKICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0
ZWQgYXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAgICBBU1NF
UlQocmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCi0gICAgUmVmPENv
bnRhaW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90
ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGVjID0gMDsKIApAQCAtMzg2LDcgKzM4Niw3IEBAIGJv
b2wgQ29udGFpbmVyTm9kZTo6cmVwbGFjZUNoaWxkKE5vZGUmIG5ld0NoaWxkLCBOb2RlJiBvbGRD
aGlsZCwgRXhjZXB0aW9uQ29kZSYKICAgICAvLyBJZiBpdCBpcywgaXQgY2FuIGJlIGRlbGV0ZWQg
YXMgYSBzaWRlIGVmZmVjdCBvZiBzZW5kaW5nIG11dGF0aW9uIGV2ZW50cy4KICAgICBBU1NFUlQo
cmVmQ291bnQoKSB8fCBwYXJlbnRPclNoYWRvd0hvc3ROb2RlKCkpOwogCi0gICAgUmVmPENvbnRh
aW5lck5vZGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxDb250YWluZXJOb2RlPiBwcm90ZWN0
ZWRUaGlzKCp0aGlzKTsKIAogICAgIGVjID0gMDsKIApAQCAtNTA0LDcgKzUwNCw3IEBAIGJvb2wg
Q29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGQoTm9kZSYgb2xkQ2hpbGQsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogICAgIC8vIElmIGl0IGlzLCBpdCBjYW4gYmUgZGVsZXRlZCBhcyBhIHNpZGUgZWZmZWN0
IG9mIHNlbmRpbmcgbXV0YXRpb24gZXZlbnRzLgogICAgIEFTU0VSVChyZWZDb3VudCgpIHx8IHBh
cmVudE9yU2hhZG93SG9zdE5vZGUoKSk7CiAKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgZWMgPSAwOwogCkBAIC02MTEsNyArNjExLDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjpy
ZW1vdmVDaGlsZHJlbigpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFRoZSBjb250YWluZXIg
bm9kZSBjYW4gYmUgcmVtb3ZlZCBmcm9tIGV2ZW50IGhhbmRsZXJzLgotICAgIFJlZjxDb250YWlu
ZXJOb2RlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdGVk
VGhpcygqdGhpcyk7CiAKICAgICAvLyBleGNsdWRlIHRoaXMgbm9kZSB3aGVuIGxvb2tpbmcgZm9y
IHJlbW92ZWQgZm9jdXNlZE5vZGUgc2luY2Ugb25seSBjaGlsZHJlbiB3aWxsIGJlIHJlbW92ZWQK
ICAgICBkb2N1bWVudCgpLnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKHRoaXMsIHRydWUpOwpA
QCAtNjQ5LDcgKzY0OSw3IEBAIHZvaWQgQ29udGFpbmVyTm9kZTo6cmVtb3ZlQ2hpbGRyZW4oKQog
CiBib29sIENvbnRhaW5lck5vZGU6OmFwcGVuZENoaWxkKE5vZGUmIG5ld0NoaWxkLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBSZWY8Q29udGFpbmVyTm9kZT4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPENvbnRhaW5lck5vZGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGlzIG5vZGUgaXMgbm90ICJmbG9hdGluZyIuCiAgICAgLy8gSWYgaXQgaXMsIGl0
IGNhbiBiZSBkZWxldGVkIGFzIGEgc2lkZSBlZmZlY3Qgb2Ygc2VuZGluZyBtdXRhdGlvbiBldmVu
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA1Zjc3MGFlOTdkYTA3YjRiOTM3NzM4M2Zk
OTIxNzU2Y2UxZGU5ZmI4Li4yZWQyNTBmMWFkOWM2NzhhYTc4ZWM5YjNiMmYwZmYyNWFmMTAxODAw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2OTQsNyArMjY5NCw3IEBAIHZvaWQgRG9j
dW1lbnQ6OmltcGxpY2l0Q2xvc2UoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDYWxsIHRv
IGRpc3BhdGNoV2luZG93TG9hZEV2ZW50IGNhbiBibG93IHVzIGZyb20gdW5kZXJuZWF0aC4KLSAg
ICBSZWY8RG9jdW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxEb2N1bWVudD4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICBtX3Byb2Nlc3NpbmdMb2FkRXZlbnQgPSB0cnVlOwogCkBA
IC01OTI3LDcgKzU5MjcsNyBAQCB2b2lkIERvY3VtZW50OjpmdWxsU2NyZWVuQ2hhbmdlRGVsYXlU
aW1lckZpcmVkKCkKICAgICAvLyBTaW5jZSB3ZSBkaXNwYXRjaCBldmVudHMgaW4gdGhpcyBmdW5j
dGlvbiwgaXQncyBwb3NzaWJsZSB0aGF0IHRoZQogICAgIC8vIGRvY3VtZW50IHdpbGwgYmUgZGV0
YWNoZWQgYW5kIEdDJ2QuIFdlIHByb3RlY3QgaXQgaGVyZSB0byBtYWtlIHN1cmUgd2UKICAgICAv
LyBjYW4gZmluaXNoIHRoZSBmdW5jdGlvbiBzdWNjZXNzZnVsbHkuCi0gICAgUmVmPERvY3VtZW50
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogICAgIERlcXVlPFJlZlB0cjxOb2RlPj4gY2hhbmdlUXVldWU7CiAgICAgbV9mdWxsU2NyZWVu
Q2hhbmdlRXZlbnRUYXJnZXRRdWV1ZS5zd2FwKGNoYW5nZVF1ZXVlKTsKICAgICBEZXF1ZTxSZWZQ
dHI8Tm9kZT4+IGVycm9yUXVldWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCA4
Njk1YzU5N2NmNGMyYTY0MzU1OWU4YmE3N2FmYWZlNGU1NGM2NWI1Li5lYzIxMDk4NjdhYzMwZDBj
MzFiZTY5MjYxNjMxYzMyNTE2ZmVhM2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
QEAgLTIyMiw3ICsyMjIsNyBAQCBib29sIEV2ZW50VGFyZ2V0OjpmaXJlRXZlbnRMaXN0ZW5lcnMo
RXZlbnQmIGV2ZW50KQogICAgICAgICAKIHZvaWQgRXZlbnRUYXJnZXQ6OmZpcmVFdmVudExpc3Rl
bmVycyhFdmVudCYgZXZlbnQsIEV2ZW50VGFyZ2V0RGF0YSogZCwgRXZlbnRMaXN0ZW5lclZlY3Rv
ciYgZW50cnkpCiB7Ci0gICAgUmVmPEV2ZW50VGFyZ2V0PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8RXZlbnRUYXJnZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gRmlyZSBhbGwg
bGlzdGVuZXJzIHJlZ2lzdGVyZWQgZm9yIHRoaXMgZXZlbnQuIERvbid0IGZpcmUgbGlzdGVuZXJz
IHJlbW92ZWQgZHVyaW5nIGV2ZW50IGRpc3BhdGNoLgogICAgIC8vIEFsc28sIGRvbid0IGZpcmUg
ZXZlbnQgbGlzdGVuZXJzIGFkZGVkIGR1cmluZyBldmVudCBkaXNwYXRjaC4gQ29udmVuaWVudGx5
LCBhbGwgbmV3IGV2ZW50IGxpc3RlbmVycyB3aWxsIGJlIGFkZGVkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5k
ZXggMTliY2Y4ZWFiOGE2NDE4YTc3Y2NiOWU5NzQ1ZTg1MzBhOTdmNjhiNC4uYjIxMDBhZTJlYjQ0
YzI4MjU4MzFjMTdhMjJjYzQxNjBhYzEyYTY5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL05vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtMjIzMyw3
ICsyMjMzLDcgQEAgYm9vbCBOb2RlOjpkaXNwYXRjaEJlZm9yZUxvYWRFdmVudChjb25zdCBTdHJp
bmcmIHNvdXJjZVVSTCkKICAgICBpZiAoIWRvY3VtZW50KCkuaGFzTGlzdGVuZXJUeXBlKERvY3Vt
ZW50OjpCRUZPUkVMT0FEX0xJU1RFTkVSKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBS
ZWY8Tm9kZT4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5vZGU+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogICAgIFJlZjxCZWZvcmVMb2FkRXZlbnQ+IGJlZm9yZUxvYWRFdmVudCA9IEJlZm9yZUxv
YWRFdmVudDo6Y3JlYXRlKHNvdXJjZVVSTCk7CiAgICAgZGlzcGF0Y2hFdmVudChiZWZvcmVMb2Fk
RXZlbnQpOwogICAgIHJldHVybiAhYmVmb3JlTG9hZEV2ZW50LT5kZWZhdWx0UHJldmVudGVkKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5jcHAKaW5kZXgg
MjVkYTJkNjk3MTg3M2Q1ODViYjYwNTk4YWVlNDFmMmZiOWM1NTI2Ny4uMWRlOTc1ZGNkM2JjNTAx
OGEzNDQxMzE0OTBhYzUzNmRmMDZhOWQ5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFeGVjdXRpb25Db250ZXh0LmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHZvaWQgU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6ZGlzcGF0Y2hNZXNzYWdlUG9ydEV2ZW50cygpCiB7CiAgICAgY2hlY2tD
b25zaXN0ZW5jeSgpOwogCi0gICAgUmVmPFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxTY3JpcHRFeGVjdXRpb25Db250ZXh0PiBwcm90ZWN0ZWRUaGlzKCp0
aGlzKTsKIAogICAgIC8vIE1ha2UgYSBmcm96ZW4gY29weSBvZiB0aGUgcG9ydHMgc28gd2UgY2Fu
IGl0ZXJhdGUgd2hpbGUgbmV3IG9uZXMgbWlnaHQgYmUgYWRkZWQgb3IgZGVzdHJveWVkLgogICAg
IFZlY3RvcjxNZXNzYWdlUG9ydCo+IHBvc3NpYmxlTWVzc2FnZVBvcnRzOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBmYjI5
NDUxNGQxNjY1MmRlNWZmMDM1OGJmMTkyMmQ1M2IyNmNhMTg4Li5mZDdkY2NlNGU1ZjMwYmE2NWEy
OTExY2I3YTllNzZkMjYwNzg2MGE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIHZvaWQgU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyOjpzZXJ2aWNlU2NyaXB0ZWRBbmltYXRpb25zKGRvdWJs
ZSBtb25vdG9uaWNUaW1lCiAKICAgICAvLyBJbnZva2luZyBjYWxsYmFja3MgbWF5IGRldGFjaCBl
bGVtZW50cyBmcm9tIG91ciBkb2N1bWVudCwgd2hpY2ggY2xlYXJzIHRoZSBkb2N1bWVudCdzCiAg
ICAgLy8gcmVmZXJlbmNlIHRvIHVzLCBzbyB0YWtlIGEgZGVmZW5zaXZlIHJlZmVyZW5jZS4KLSAg
ICBSZWY8U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAog
ICAgIGZvciAoYXV0byYgY2FsbGJhY2sgOiBjYWxsYmFja3MpIHsKICAgICAgICAgaWYgKCFjYWxs
YmFjay0+bV9maXJlZE9yQ2FuY2VsbGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3RyaW5nQ2FsbGJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0cmluZ0NhbGxiYWNr
LmNwcAppbmRleCBiM2Y5NGNlYWQ3MWY0YTc3MmFiZmNkMjYwZmU1NmI0MDA3YmYxYWY0Li44MjUz
YjRiNDZmNDg5YTAwZjRhMmVmMGMxZDdhNTYwZTI0YTg0NGE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3RyaW5nQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
dHJpbmdDYWxsYmFjay5jcHAKQEAgLTM4LDkgKzM4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiB2b2lkIFN0cmluZ0NhbGxiYWNrOjpzY2hlZHVsZUNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIHsKLSAgICBSZWZQdHI8U3RyaW5n
Q2FsbGJhY2s+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBjb250ZXh0LT5wb3N0VGFzayhbcHJvdGVj
dG9yLCBkYXRhXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpIHsKLSAgICAgICAgcHJvdGVjdG9y
LT5oYW5kbGVFdmVudChkYXRhKTsKKyAgICBSZWZQdHI8U3RyaW5nQ2FsbGJhY2s+IHByb3RlY3Rl
ZFRoaXModGhpcyk7CisgICAgY29udGV4dC0+cG9zdFRhc2soW3Byb3RlY3RlZFRoaXMsIGRhdGFd
IChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgeworICAgICAgICBwcm90ZWN0ZWRUaGlzLT5oYW5k
bGVFdmVudChkYXRhKTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVtYmVk
RWxlbWVudC5jcHAKaW5kZXggMDFiNTllN2RiNTI5YjQ5MjZiMDM2NTI0NTY4ZjZlMTg5YjA2NDFh
OS4uYjA2ZjQ5OTYwOTdlYjU3MzEwMzc5ZDlmNzJjYTNhZWYzNmRhY2NkYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRW1iZWRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbWJlZEVsZW1lbnQuY3BwCkBAIC0xNjMsNyArMTYzLDcgQEAgdm9pZCBI
VE1MRW1iZWRFbGVtZW50Ojp1cGRhdGVXaWRnZXQoUGx1Z2luQ3JlYXRpb25PcHRpb24gcGx1Z2lu
Q3JlYXRpb25PcHRpb24pCiAgICAgVmVjdG9yPFN0cmluZz4gcGFyYW1WYWx1ZXM7CiAgICAgcGFy
YW1ldGVyc0ZvclBsdWdpbihwYXJhbU5hbWVzLCBwYXJhbVZhbHVlcyk7CiAKLSAgICBSZWY8SFRN
TEVtYmVkRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIExvYWRpbmcgdGhlIHBsdWdpbiBtaWdo
dCByZW1vdmUgdXMgZnJvbSB0aGUgZG9jdW1lbnQuCisgICAgUmVmPEhUTUxFbWJlZEVsZW1lbnQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBMb2FkaW5nIHRoZSBwbHVnaW4gbWlnaHQgcmVtb3Zl
IHVzIGZyb20gdGhlIGRvY3VtZW50LgogICAgIGJvb2wgYmVmb3JlTG9hZEFsbG93ZWRMb2FkID0g
Z3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KG1fdXJsKTsKICAgICBpZiAoIWJlZm9yZUxv
YWRBbGxvd2VkTG9hZCkgewogICAgICAgICBpZiAoaXM8UGx1Z2luRG9jdW1lbnQ+KGRvY3VtZW50
KCkpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAppbmRleCBhYTQwYTQ2MTEzN2EyMWI5YmY1ZGU4ZjQ3Y2ViZDA0YWFjODZiMWQ5Li4xZjgzZjVh
NzNkYTA4NDUzYzUzZTZjN2IzZTE4YmY1MzA4YWVjNDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBAQCBib29s
IEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoVmVjdG9yPFJlZlB0cjxGb3Jt
QXNzb2NpYXRlZEVsZW1lbnQ+PgogICAgIGlmICghd2lsbFZhbGlkYXRlKCkgfHwgaXNWYWxpZEZv
cm1Db250cm9sRWxlbWVudCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAvLyBBbiBldmVu
dCBoYW5kbGVyIGNhbiBkZXJlZiB0aGlzIG9iamVjdC4KLSAgICBSZWY8SFRNTEZvcm1Db250cm9s
RWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIFJlZjxEb2N1bWVudD4gb3JpZ2luYWxEb2N1bWVu
dChkb2N1bWVudCgpKTsKICAgICBib29sIG5lZWRzRGVmYXVsdEFjdGlvbiA9IGRpc3BhdGNoRXZl
bnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuaW52YWxpZEV2ZW50LCBmYWxzZSwgdHJ1ZSkp
OwogICAgIGlmIChuZWVkc0RlZmF1bHRBY3Rpb24gJiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xz
ICYmIGluRG9jdW1lbnQoKSAmJiBvcmlnaW5hbERvY3VtZW50LnB0cigpID09ICZkb2N1bWVudCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDhjZWNkMmUzYjQ5
NDZkNWE3NjdlYjA1MWU2MmZmODlmZmMzNzA0MGQuLjhkZDM3MzMwZTg1OGY0ZGYxODUzMTQ2ZTFm
YzM4ZmFhMDI1MzE4OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAK
QEAgLTIzNiw3ICsyMzYsNyBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6dmFsaWRhdGVJbnRlcmFj
dGl2ZWx5KEV2ZW50KiBldmVudCkKICAgICAvLyBoYXMgIXJlbmRlcmVyKCktPm5lZWRzTGF5b3V0
KCkgYXNzZXJ0aW9uLgogICAgIGRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAKLSAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8v
IEZvY3VzIG9uIHRoZSBmaXJzdCBmb2N1c2FibGUgY29udHJvbCBhbmQgc2hvdyBhIHZhbGlkYXRp
b24gbWVzc2FnZS4KICAgICBmb3IgKGF1dG8mIGNvbnRyb2wgOiB1bmhhbmRsZWRJbnZhbGlkQ29u
dHJvbHMpIHsKQEAgLTI4NSw3ICsyODUsNyBAQCB2b2lkIEhUTUxGb3JtRWxlbWVudDo6cHJlcGFy
ZUZvclN1Ym1pc3Npb24oRXZlbnQqIGV2ZW50KQogICAgIFJlZlB0cjxGb3JtU3RhdGU+IGZvcm1T
dGF0ZSA9IEZvcm1TdGF0ZTo6Y3JlYXRlKHRoaXMsIGNvbnRyb2xOYW1lc0FuZFZhbHVlcywgJmRv
Y3VtZW50KCksIE5vdFN1Ym1pdHRlZEJ5SmF2YVNjcmlwdCk7CiAgICAgZnJhbWUtPmxvYWRlcigp
LmNsaWVudCgpLmRpc3BhdGNoV2lsbFNlbmRTdWJtaXRFdmVudChmb3JtU3RhdGUucmVsZWFzZSgp
KTsKIAotICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxI
VE1MRm9ybUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIC8vIEV2ZW50IGhhbmRs
aW5nIGNhbiByZXN1bHQgaW4gbV9zaG91bGRTdWJtaXQgYmVjb21pbmcgdHJ1ZSwgcmVnYXJkbGVz
cyBvZiBkaXNwYXRjaEV2ZW50KCkgcmV0dXJuIHZhbHVlLgogICAgIGlmIChkaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnN1Ym1pdEV2ZW50LCB0cnVlLCB0cnVlKSkpCiAg
ICAgICAgIG1fc2hvdWxkU3VibWl0ID0gdHJ1ZTsKQEAgLTM1Niw3ICszNTYsNyBAQCB2b2lkIEhU
TUxGb3JtRWxlbWVudDo6c3VibWl0KEV2ZW50KiBldmVudCwgYm9vbCBhY3RpdmF0ZVN1Ym1pdEJ1
dHRvbiwgYm9vbCBwcm9jZQogICAgICAgICBmaXJzdFN1Y2Nlc3NmdWxTdWJtaXRCdXR0b24tPnNl
dEFjdGl2YXRlZFN1Ym1pdCh0cnVlKTsKIAogICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0g
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlID8gTG9ja0hpc3Rvcnk6Ok5vIDogTG9ja0hpc3Rvcnk6Olll
czsKLSAgICBSZWY8SFRNTEZvcm1FbGVtZW50PiBwcm90ZWN0KCp0aGlzKTsgLy8gRm9ybSBzdWJt
aXNzaW9uIGNhbiBleGVjdXRlIGFyYml0YXJ5IEphdmFTY3JpcHQuCisgICAgUmVmPEhUTUxGb3Jt
RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIEZvcm0gc3VibWlzc2lvbiBjYW4gZXhl
Y3V0ZSBhcmJpdGFyeSBKYXZhU2NyaXB0LgogICAgIGZyYW1lLT5sb2FkZXIoKS5zdWJtaXRGb3Jt
KEZvcm1TdWJtaXNzaW9uOjpjcmVhdGUodGhpcywgbV9hdHRyaWJ1dGVzLCBldmVudCwgbG9ja0hp
c3RvcnksIGZvcm1TdWJtaXNzaW9uVHJpZ2dlcikpOwogCiAgICAgaWYgKG5lZWRCdXR0b25BY3Rp
dmF0aW9uICYmIGZpcnN0U3VjY2Vzc2Z1bFN1Ym1pdEJ1dHRvbikKQEAgLTcyMCw3ICs3MjAsNyBA
QCBib29sIEhUTUxGb3JtRWxlbWVudDo6Y2hlY2tWYWxpZGl0eSgpCiAKIGJvb2wgSFRNTEZvcm1F
bGVtZW50OjpjaGVja0ludmFsaWRDb250cm9sc0FuZENvbGxlY3RVbmhhbmRsZWQoVmVjdG9yPFJl
ZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+PiYgdW5oYW5kbGVkSW52YWxpZENvbnRyb2xzKQog
ewotICAgIFJlZjxIVE1MRm9ybUVsZW1lbnQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1M
Rm9ybUVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIC8vIENvcHkgbV9hc3NvY2lh
dGVkRWxlbWVudHMgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYWxsZWQgZnJvbQogICAgIC8vIEhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OmNoZWNrVmFsaWRpdHkoKSBtaWdodCBjaGFuZ2UgbV9hc3Nv
Y2lhdGVkRWxlbWVudHMuCiAgICAgVmVjdG9yPFJlZlB0cjxGb3JtQXNzb2NpYXRlZEVsZW1lbnQ+
PiBlbGVtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4
IDVmYTI1Zjc5OGUwOTIwZWNmMzRkZGJkN2Q0OWJiZWVmYmUxZGFmN2EuLmFjMmUwMzNkMGFjMTI5
NzBhODc5YjFlZGMwOTM4NDFiZGM5ZTgzYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5w
dXRFbGVtZW50LmNwcApAQCAtOTg5LDcgKzk4OSw3IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6
c2V0VmFsdWUoY29uc3QgU3RyaW5nJiB2YWx1ZSwgVGV4dEZpZWxkRXZlbnRCZWhhdmlvciBldmVu
CiAgICAgaWYgKCFtX2lucHV0VHlwZS0+Y2FuU2V0VmFsdWUodmFsdWUpKQogICAgICAgICByZXR1
cm47CiAKLSAgICBSZWY8SFRNTElucHV0RWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PEhUTUxJbnB1dEVsZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIEV2ZW50UXVldWVT
Y29wZSBzY29wZTsKICAgICBTdHJpbmcgc2FuaXRpemVkVmFsdWUgPSBzYW5pdGl6ZVZhbHVlKHZh
bHVlKTsKICAgICBib29sIHZhbHVlQ2hhbmdlZCA9IHNhbml0aXplZFZhbHVlICE9IHRoaXMtPnZh
bHVlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKaW5kZXggNTg3Y2Iw
NTkyN2E0YmE5NmM2OWYzYjJiZDczMTBiMmQ0MjI1OGFhZS4uYWU2MjllOWJmNmFhNzMyZjNlOTk1
OGFhNDE3MzRlMDQ1Y2NlZTdmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTExpbmtFbGVtZW50
LmNwcApAQCAtMzQyLDcgKzM0Miw3IEBAIHZvaWQgSFRNTExpbmtFbGVtZW50OjpzZXRDU1NTdHls
ZVNoZWV0KGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgVVJMJiBiYXNlVVJMLCBjCiAgICAgICAg
IHJldHVybjsKIAogICAgIC8vIENvbXBsZXRpbmcgdGhlIHNoZWV0IGxvYWQgbWF5IGNhdXNlIHNj
cmlwdHMgdG8gZXhlY3V0ZS4KLSAgICBSZWY8SFRNTExpbmtFbGVtZW50PiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8SFRNTExpbmtFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAg
IENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dChkb2N1bWVudCgpLCBiYXNlVVJMLCBjaGFy
c2V0KTsKICAgICBhdXRvIGNhY2hlUG9saWN5ID0gZnJhbWUtPmxvYWRlcigpLnN1YnJlc291cmNl
Q2FjaGVQb2xpY3koKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmlu
ZGV4IGQ1MTE5MDUzMzZkYzg5MjA4MDc3MmJlOTM1ZGI0MTY0MGViNTMyNzQuLjM1OWM5NTdmZGFm
ZWYzZmM1ZDcyYmM3ZmIwMzY1MDc2ODcwZjY4MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWVkaWFFbGVtZW50LmNwcApAQCAtOTM2LDcgKzkzNiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6bm90aWZ5QWJvdXRQbGF5aW5nKCkKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwZW5kaW5n
QWN0aW9uVGltZXJGaXJlZCgpCiB7Ci0gICAgUmVmPEhUTUxNZWRpYUVsZW1lbnQ+IHByb3RlY3Qo
KnRoaXMpOyAvLyBsb2FkTmV4dFNvdXJjZUNoaWxkIG1heSBmaXJlICdiZWZvcmVsb2FkJywgd2hp
Y2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMuCisgICAgUmVmPEhUTUxNZWRpYUVs
ZW1lbnQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOyAvLyBsb2FkTmV4dFNvdXJjZUNoaWxkIG1heSBm
aXJlICdiZWZvcmVsb2FkJywgd2hpY2ggY2FuIG1ha2UgYXJiaXRyYXJ5IERPTSBtdXRhdGlvbnMu
CiAgICAgUGVuZGluZ0FjdGlvbkZsYWdzIHBlbmRpbmdBY3Rpb25zID0gbV9wZW5kaW5nQWN0aW9u
RmxhZ3M7CiAgICAgbV9wZW5kaW5nQWN0aW9uRmxhZ3MgPSAwOwogCkBAIC0xMDM4LDcgKzEwMzgs
NyBAQCBkb3VibGUgSFRNTE1lZGlhRWxlbWVudDo6Z2V0U3RhcnREYXRlKCkgY29uc3QKIAogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojpsb2FkKCkKIHsKLSAgICBSZWY8SFRNTE1lZGlhRWxlbWVudD4g
cHJvdGVjdCgqdGhpcyk7IC8vIGxvYWRJbnRlcm5hbCBtYXkgcmVzdWx0IGluIGEgJ2JlZm9yZWxv
YWQnIGV2ZW50LCB3aGljaCBjYW4gbWFrZSBhcmJpdHJhcnkgRE9NIG11dGF0aW9ucy4KKyAgICBS
ZWY8SFRNTE1lZGlhRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIGxvYWRJbnRlcm5h
bCBtYXkgcmVzdWx0IGluIGEgJ2JlZm9yZWxvYWQnIGV2ZW50LCB3aGljaCBjYW4gbWFrZSBhcmJp
dHJhcnkgRE9NIG11dGF0aW9ucy4KICAgICAKICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50Ojpsb2FkKCVwKSIsIHRoaXMpOwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmpl
Y3RFbGVtZW50LmNwcAppbmRleCA3OTRiMTIzNTE1ZDQ4OGIwYTIzMDA4YzkwZGYyZTJmZWIwZDFl
Mzg2Li4zNWEzM2FlNWVmMDJjMjU1YTQxZjczYzkzNGI5YjUyYWNkNWQ2OGNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxPYmplY3RFbGVtZW50LmNwcApAQCAtMzIwLDcgKzMyMCw3IEBAIHZv
aWQgSFRNTE9iamVjdEVsZW1lbnQ6OnVwZGF0ZVdpZGdldChQbHVnaW5DcmVhdGlvbk9wdGlvbiBw
bHVnaW5DcmVhdGlvbk9wdGlvbikKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZjxI
VE1MT2JqZWN0RWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7IC8vIGJlZm9yZWxvYWQgYW5kIHBsdWdp
biBsb2FkaW5nIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgorICAgIFJlZjxIVE1M
T2JqZWN0RWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7IC8vIGJlZm9yZWxvYWQgYW5kIHBs
dWdpbiBsb2FkaW5nIGNhbiBtYWtlIGFyYml0cmFyeSBET00gbXV0YXRpb25zLgogICAgIGJvb2wg
YmVmb3JlTG9hZEFsbG93ZWRMb2FkID0gZ3VhcmRlZERpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KHVy
bCk7CiAgICAgaWYgKCFyZW5kZXJlcigpKSAvLyBEbyBub3QgbG9hZCB0aGUgcGx1Z2luIGlmIGJl
Zm9yZWxvYWQgcmVtb3ZlZCB0aGlzIGVsZW1lbnQgb3IgaXRzIHJlbmRlcmVyLgogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCmluZGV4IDM0
M2FkNDE5ZDU0NzVkYjMzM2M5Y2Q3NTc1Yzg0ODYxNTgyMmQxNDIuLjg3ZmI2NzQ5MDM5ZGE0MTVk
MTAxMTYzNjIyNWYzODg5MGZmOTI3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlv
bkVsZW1lbnQuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgU3RyaW5nIEhUTUxPcHRpb25FbGVtZW50
Ojp0ZXh0KCkgY29uc3QKIAogdm9pZCBIVE1MT3B0aW9uRWxlbWVudDo6c2V0VGV4dChjb25zdCBT
dHJpbmcgJnRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIFJlZjxIVE1MT3B0aW9uRWxl
bWVudD4gcHJvdGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmPEhUTUxPcHRp
b25FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIENoYW5naW5nIHRoZSB0
ZXh0IGNhdXNlcyBhIHJlY2FsYyBvZiBhIHNlbGVjdCdzIGl0ZW1zLCB3aGljaCB3aWxsIHJlc2V0
IHRoZSBzZWxlY3RlZAogICAgIC8vIGluZGV4IHRvIHRoZSBmaXJzdCBpdGVtIGlmIHRoZSBzZWxl
Y3QgaXMgc2luZ2xlIHNlbGVjdGlvbiB3aXRoIGEgbWVudSBsaXN0LiBXZSBhdHRlbXB0IHRvCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCmluZGV4IGQzYTI2OGU2M2I3
ODk5Yjg4YzQ4Mzc1NTE1MGI2ZDE5OTU0MTViNDIuLjNiMTBkNjdhYzM1ZTI0ODM4YTI5NWMxNzYz
ZTVmYTZhODVjMzRhM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQu
Y3BwCkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OmZpbmlzaGVkSW5z
ZXJ0aW5nU3VidHJlZSgpCiAKIHZvaWQgSFRNTFNjcmlwdEVsZW1lbnQ6OnNldFRleHQoY29uc3Qg
U3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWY8SFRNTFNjcmlwdEVsZW1lbnQ+IHByb3RlY3RGcm9t
TXV0YXRpb25FdmVudHMoKnRoaXMpOworICAgIFJlZjxIVE1MU2NyaXB0RWxlbWVudD4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoaGFzT25lQ2hpbGQoKSAmJiBpczxUZXh0PigqZmly
c3RDaGlsZCgpKSkgewogICAgICAgICBkb3duY2FzdDxUZXh0PigqZmlyc3RDaGlsZCgpKS5zZXRE
YXRhKHZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwCmluZGV4
IDc0OTBkOWFjOGU2MjFhYzA0MTRiZTZhYWM2NDU3NjIwYjUxMGQ0M2IuLjFmNTI0ZmRlOGI3YWY1
MDFlODZkOTYwOTQ0NTk5NWYxNmQ1MjcyYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRhYmxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFi
bGVFbGVtZW50LmNwcApAQCAtMjExLDcgKzIxMSw3IEBAIFJlZlB0cjxIVE1MRWxlbWVudD4gSFRN
TFRhYmxlRWxlbWVudDo6aW5zZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiAg
ICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIFJlZjxIVE1MVGFibGVFbGVtZW50PiBwcm90
ZWN0RnJvbU11dGF0aW9uRXZlbnRzKCp0aGlzKTsKKyAgICBSZWY8SFRNTFRhYmxlRWxlbWVudD4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4g
bGFzdFJvdyA9IDA7CiAgICAgUmVmUHRyPEhUTUxUYWJsZVJvd0VsZW1lbnQ+IHJvdyA9IDA7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCBkNWNkODJk
ZDg5MTNlNWRhNTk1ZmJlNzZlYWM5MDRiNmFiMDc0ZTNkLi4yNTViZWQ2Nzk3Mjg0MmRlMzQzYjJl
NjYwYjEzZTNiNTVjNmJiOTdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxU
ZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVh
RWxlbWVudC5jcHAKQEAgLTQwMiw3ICs0MDIsNyBAQCBTdHJpbmcgSFRNTFRleHRBcmVhRWxlbWVu
dDo6ZGVmYXVsdFZhbHVlKCkgY29uc3QKIAogdm9pZCBIVE1MVGV4dEFyZWFFbGVtZW50OjpzZXRE
ZWZhdWx0VmFsdWUoY29uc3QgU3RyaW5nJiBkZWZhdWx0VmFsdWUpCiB7Ci0gICAgUmVmPEhUTUxU
ZXh0QXJlYUVsZW1lbnQ+IHByb3RlY3RGcm9tTXV0YXRpb25FdmVudHMoKnRoaXMpOworICAgIFJl
ZjxIVE1MVGV4dEFyZWFFbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIFRv
IHByZXNlcnZlIGNvbW1lbnRzLCByZW1vdmUgb25seSB0aGUgdGV4dCBub2RlcywgdGhlbiBhZGQg
YSBzaW5nbGUgdGV4dCBub2RlLgogICAgIFZlY3RvcjxSZWY8VGV4dD4+IHRleHROb2RlczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuY3BwCmluZGV4IDYyNmYzMTk4ZjJhYTRk
NDk1YjA4ZTllZWRkYjdmMDc1MTUxNjdhNWMuLmUyNmZhNmViNWNlNzM2NDBjYThmN2MxYzI5YmNm
NDgzYjZkODYxMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRpdGxlRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGl0bGVFbGVtZW50LmNwcApA
QCAtOTAsNyArOTAsNyBAQCBTdHJpbmdXaXRoRGlyZWN0aW9uIEhUTUxUaXRsZUVsZW1lbnQ6OmNv
bXB1dGVkVGV4dFdpdGhEaXJlY3Rpb24oKQogCiB2b2lkIEhUTUxUaXRsZUVsZW1lbnQ6OnNldFRl
eHQoY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAgICBSZWY8SFRNTFRpdGxlRWxlbWVudD4gcHJv
dGVjdEZyb21NdXRhdGlvbkV2ZW50cygqdGhpcyk7CisgICAgUmVmPEhUTUxUaXRsZUVsZW1lbnQ+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIAogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpICYm
IGhhc09uZUNoaWxkKCkgJiYgaXM8VGV4dD4oKmZpcnN0Q2hpbGQoKSkpIHsKICAgICAgICAgZG93
bmNhc3Q8VGV4dD4oKmZpcnN0Q2hpbGQoKSkuc2V0RGF0YSh2YWx1ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAppbmRleCAyZTQ4YWQ0
NzAzNzE0NTYyZTBmYjkwYWY1ZjdkYjU4ZmQzZTE3MjI3Li4zYWFkOWI2NTUyNTUyZGYwNWRkMjA2
YWViZjQyYTZkYmY1ZDRhZWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6cHJlcGFyZVRvU3RvcFBhcnNpbmcoKQogCiAgICAgLy8gcHVtcFRva2VuaXpl
ciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQs
CiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAg
IFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRG9j
dW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTk9URTogVGhpcyBw
dW1wIHNob3VsZCBvbmx5IGV2ZXIgZW1pdCBidWZmZXJlZCBjaGFyYWN0ZXIgdG9rZW5zLAogICAg
IC8vIHNvIEZvcmNlU3luY2hyb25vdXMgdnMuIEFsbG93WWllbGQgc2hvdWxkIGJlIG1lYW5pbmds
ZXNzLgpAQCAtMTc4LDcgKzE3OCw3IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpyZXN1bWVQ
YXJzaW5nQWZ0ZXJZaWVsZCgpCiB7CiAgICAgLy8gcHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhp
cyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdl
IG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1l
bnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gV2Ugc2hvdWxkIG5ldmVyIGJlIGhlcmUgdW5s
ZXNzIHdlIGNhbiBwdW1wIGltbWVkaWF0ZWx5LgogICAgIC8vIENhbGwgcHVtcFRva2VuaXplcigp
IGRpcmVjdGx5IHNvIHRoYXQgQVNTRVJUUyB3aWxsIGZpcmUgaWYgd2UncmUgd3JvbmcuCkBAIC0z
NDAsNyArMzQwLDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2VydChjb25zdCBTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSkKIAogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRo
aXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3
ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3Vt
ZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIFNlZ21lbnRlZFN0cmluZyBleGNsdWRlZExpbmVO
dW1iZXJTb3VyY2Uoc291cmNlKTsKICAgICBleGNsdWRlZExpbmVOdW1iZXJTb3VyY2Uuc2V0RXhj
bHVkZUxpbmVOdW1iZXJzKCk7CkBAIC0zNjYsNyArMzY2LDcgQEAgdm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmFwcGVuZChSZWZQdHI8U3RyaW5nSW1wbD4mJiBpbnB1dFNvdXJjZSkKIAogICAgIC8v
IHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2VyIHRvIGJlIGRldGFjaGVkIGZyb20g
dGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRvIGVuc3VyZSBpdCBpc24ndCBkZWxl
dGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAg
ICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIFN0
cmluZyBzb3VyY2UoV1RGTW92ZShpbnB1dFNvdXJjZSkpOwogCkBAIC00OTMsNyArNDkzLDcgQEAg
dm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnJlc3VtZVBhcnNpbmdBZnRlclNjcmlwdEV4ZWN1dGlv
bigpCiAKICAgICAvLyBwdW1wVG9rZW5pemVyIGNhbiBjYXVzZSB0aGlzIHBhcnNlciB0byBiZSBk
ZXRhY2hlZCBmcm9tIHRoZSBEb2N1bWVudCwKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUg
aXQgaXNuJ3QgZGVsZXRlZCB5ZXQuCi0gICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKICAgICBtX2luc2VydGlvblByZWxvYWRTY2FubmVyID0gbnVsbHB0cjsKICAgICBwdW1w
VG9rZW5pemVySWZQb3NzaWJsZShBbGxvd1lpZWxkKTsKQEAgLTUyNSw3ICs1MjUsNyBAQCB2b2lk
IEhUTUxEb2N1bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hl
ZFJlc291cmNlKQogewogICAgIC8vIHB1bXBUb2tlbml6ZXIgY2FuIGNhdXNlIHRoaXMgcGFyc2Vy
IHRvIGJlIGRldGFjaGVkIGZyb20gdGhlIERvY3VtZW50LAogICAgIC8vIGJ1dCB3ZSBuZWVkIHRv
IGVuc3VyZSBpdCBpc24ndCBkZWxldGVkIHlldC4KLSAgICBSZWY8SFRNTERvY3VtZW50UGFyc2Vy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8SFRNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKIAogICAgIEFTU0VSVChtX3NjcmlwdFJ1bm5lcik7CiAgICAgQVNTRVJUKCFp
c0V4ZWN1dGluZ1NjcmlwdCgpKTsKQEAgLTU1Miw3ICs1NTIsNyBAQCB2b2lkIEhUTUxEb2N1bWVu
dFBhcnNlcjo6ZXhlY3V0ZVNjcmlwdHNXYWl0aW5nRm9yU3R5bGVzaGVldHMoKQogCiAgICAgLy8g
cHVtcFRva2VuaXplciBjYW4gY2F1c2UgdGhpcyBwYXJzZXIgdG8gYmUgZGV0YWNoZWQgZnJvbSB0
aGUgRG9jdW1lbnQsCiAgICAgLy8gYnV0IHdlIG5lZWQgdG8gZW5zdXJlIGl0IGlzbid0IGRlbGV0
ZWQgeWV0LgotICAgIFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRoaXMpOworICAg
IFJlZjxIVE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIG1fc2Ny
aXB0UnVubmVyLT5leGVjdXRlU2NyaXB0c1dhaXRpbmdGb3JTdHlsZXNoZWV0cygpOwogICAgIGlm
ICghaXNXYWl0aW5nRm9yU2NyaXB0cygpKQogICAgICAgICByZXN1bWVQYXJzaW5nQWZ0ZXJTY3Jp
cHRFeGVjdXRpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1Ns
aWRlclRodW1iRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TbGlkZXJU
aHVtYkVsZW1lbnQuY3BwCmluZGV4IGZlYTVmZDI1ODgwNmUzODVmZGZkYTEzZGI4OGExMDQ0ODA1
ZmVjOTUuLmE2MTA4N2U2NmYyMjhmZDcwNWEzZjkxNTY5OTk2MmIwMjhmZGNjNGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NsaWRlclRodW1iRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU2xpZGVyVGh1bWJFbGVtZW50LmNwcApAQCAt
MjQzLDcgKzI0Myw3IEBAIEVsZW1lbnQqIFNsaWRlclRodW1iRWxlbWVudDo6Zm9jdXNEZWxlZ2F0
ZSgpCiAKIHZvaWQgU2xpZGVyVGh1bWJFbGVtZW50OjpkcmFnRnJvbShjb25zdCBMYXlvdXRQb2lu
dCYgcG9pbnQpCiB7Ci0gICAgUmVmPFNsaWRlclRodW1iRWxlbWVudD4gcHJvdGVjdCgqdGhpcyk7
CisgICAgUmVmPFNsaWRlclRodW1iRWxlbWVudD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAg
c2V0UG9zaXRpb25Gcm9tUG9pbnQocG9pbnQpOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgc3Rh
cnREcmFnZ2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3Bp
bkJ1dHRvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvU3BpbkJ1dHRv
bkVsZW1lbnQuY3BwCmluZGV4IGY4Mjc3YTBmY2YzNWNiMDRjMjJkMjRjNjhmOTYyZjg5YThmZDI3
NTAuLmVjZGI1ZGFkYWQ3M2M4ZTQ4YWU3YzA4ODMzMjlkY2E5ZTExYTBjZDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L1NwaW5CdXR0b25FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9TcGluQnV0dG9uRWxlbWVudC5jcHAKQEAgLTk0LDcg
Kzk0LDcgQEAgdm9pZCBTcGluQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVu
dCogZXZlbnQpCiAgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBvZiBIVE1M
SW5wdXRFbGVtZW50IG1heSBydW4gSmF2YVNjcmlwdAogICAgICAgICAgICAgLy8gY29kZSB3aGlj
aCBkZXRhY2hlcyB0aGlzIHNoYWRvdyBub2RlLiBXZSBuZWVkIHRvIHRha2UgYSByZWZlcmVuY2UK
ICAgICAgICAgICAgIC8vIGFuZCBjaGVjayByZW5kZXJlcigpIGFmdGVyIHN1Y2ggZnVuY3Rpb24g
Y2FsbHMuCi0gICAgICAgICAgICBSZWY8U3BpbkJ1dHRvbkVsZW1lbnQ+IHByb3RlY3QoKnRoaXMp
OworICAgICAgICAgICAgUmVmPFNwaW5CdXR0b25FbGVtZW50PiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKICAgICAgICAgICAgIGlmIChtX3NwaW5CdXR0b25Pd25lcikKICAgICAgICAgICAgICAgICBt
X3NwaW5CdXR0b25Pd25lci0+Zm9jdXNBbmRTZWxlY3RTcGluQnV0dG9uT3duZXIoKTsKICAgICAg
ICAgICAgIGlmIChyZW5kZXJlcigpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggZjM1ZmVkOTc0
Mjk3MGY1N2Q0MjU2NzA4MTZhMTY0NjM5OWUwNWYyYy4uNDU5ZGZlNDQyZjc2OTBiZDJhMTI2YTMz
ZDNkYTVlNjBhMzY5ODA4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtOTcsNyArOTcsNyBAQCBw
dWJsaWM6CiAKICAgICAgICAgLy8gRGlzcGF0Y2hpbmcgYSBtZXNzYWdlIGNhbiBwb3NzaWJseSBj
bG9zZSB0aGUgZnJvbnRlbmQgYW5kIGRlc3Ryb3kKICAgICAgICAgLy8gdGhlIG93bmluZyBmcm9u
dGVuZCBjbGllbnQsIHNvIGtlZXAgYSBwcm90ZWN0b3IgcmVmZXJlbmNlIGhlcmUuCi0gICAgICAg
IFJlZjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hUYXNrPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAg
ICAgUmVmPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRhc2s+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgICAgIGlmICghbV9tZXNzYWdlcy5pc0VtcHR5KCkpCiAgICAgICAgICAgICBtX2lu
c3BlY3RlZFBhZ2VDb250cm9sbGVyLT5kaXNwYXRjaE1lc3NhZ2VGcm9tRnJvbnRlbmQobV9tZXNz
YWdlcy50YWtlRmlyc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAppbmRleCA2ZjJkZWRkYTdkMDEzZTg4ZTM5ZTNkZGFjYzk4NDhiYmU5Y2Y1MWQ4Li45N2NiZjYz
ODRiMzMwYWZkMjljYzFiODA5NWRmNTljNmVmZmM0Y2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTI3NSw4ICsyNzUsOCBAQCB2b2lkIERvY3VtZW50TG9h
ZGVyOjptYWluUmVjZWl2ZWRFcnJvcihjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIC8vIGJ1
dCBub3QgbG9hZHMgaW5pdGlhdGVkIGJ5IGNoaWxkIGZyYW1lcycgZGF0YSBzb3VyY2VzIC0tIHRo
YXQncyB0aGUgV2ViRnJhbWUncyBqb2IuCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzdG9wTG9hZGlu
ZygpCiB7Ci0gICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0RnJhbWUobV9mcmFtZSk7Ci0gICAgUmVm
PERvY3VtZW50TG9hZGVyPiBwcm90ZWN0TG9hZGVyKCp0aGlzKTsKKyAgICBSZWZQdHI8RnJhbWU+
IHByb3RlY3RlZEZyYW1lKG1fZnJhbWUpOworICAgIFJlZjxEb2N1bWVudExvYWRlcj4gcHJvdGVj
dGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBJbiBzb21lIHJhcmUgY2FzZXMsIGNhbGxpbmcgRnJh
bWVMb2FkZXI6OnN0b3BMb2FkaW5nIGNvdWxkIGNhdXNlIGlzTG9hZGluZygpIHRvIHJldHVybiBm
YWxzZS4KICAgICAvLyAoVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlcmUncyBhIHNpbmdsZSBYTUxI
dHRwUmVxdWVzdCBjdXJyZW50bHkgbG9hZGluZyBhbmQgc3RvcExvYWRpbmcgY2F1c2VzIGl0CkBA
IC00MDAsNyArNDAwLDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6ZmluaXNoZWRMb2FkaW5nKGRv
dWJsZSBmaW5pc2hUaW1lKQogICAgIEFTU0VSVCghbV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNMb2Fk
aW5nKCkgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppc0RlYnVnZ2VyUGF1c2VkKG1fZnJh
bWUpKTsKICNlbmRpZgogCi0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgaWYg
KG1faWRlbnRpZmllckZvckxvYWRXaXRob3V0UmVzb3VyY2VMb2FkZXIpIHsKICAgICAgICAgLy8g
QSBkaWRGaW5pc2hMb2FkaW5nIGRlbGVnYXRlIG1pZ2h0IHRyeSB0byBjYW5jZWwgdGhlIGxvYWQg
KGRlc3BpdGUgaXQKQEAgLTYzNyw3ICs2MzcsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpyZXNw
b25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZQog
I2VuZGlmCiAKICAgICBBU1NFUlRfVU5VU0VEKHJlc291cmNlLCBtX21haW5SZXNvdXJjZSA9PSBy
ZXNvdXJjZSk7Ci0gICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIGJvb2wgd2lsbExv
YWRGYWxsYmFjayA9IG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPm1heWJlTG9hZEZhbGxiYWNrRm9y
TWFpblJlc3BvbnNlKHJlcXVlc3QoKSwgcmVzcG9uc2UpOwogCiAgICAgLy8gVGhlIG1lbW9yeSBj
YWNoZSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlIGFwcGxpY2F0aW9uIGNhY2hlIG9yIGl0cyBjYWNo
aW5nIHJ1bGVzLiBTbyBpZiBhIG1haW4gcmVzb3VyY2UgaXMgc2VydmVkCkBAIC04MTYsOCArODE2
LDggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0TG9hZChjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQogewogICAgIC8vIEJvdGggdW5sb2FkaW5nIHRoZSBvbGQgcGFnZSBhbmQgcGFy
c2luZyB0aGUgbmV3IHBhZ2UgbWF5IGV4ZWN1dGUgSmF2YVNjcmlwdCB3aGljaCBkZXN0cm95cyB0
aGUgZGF0YXNvdXJjZQogICAgIC8vIGJ5IHN0YXJ0aW5nIGEgbmV3IGxvYWQsIHNvIHJldGFpbiB0
ZW1wb3JhcmlseS4KLSAgICBSZWZQdHI8RnJhbWU+IHByb3RlY3RGcmFtZShtX2ZyYW1lKTsKLSAg
ICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RMb2FkZXIoKnRoaXMpOworICAgIFJlZlB0cjxG
cmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGNvbW1pdElmUmVhZHkoKTsKICAgICBGcmFtZUxv
YWRlciogZnJhbWVMb2FkZXIgPSBEb2N1bWVudExvYWRlcjo6ZnJhbWVMb2FkZXIoKTsKQEAgLTk5
OSw4ICs5OTksOCBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpkZXRhY2hGcm9tRnJhbWUoKQogICAg
IGVsc2UKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShtX2ZyYW1lLCAiZGV0YWNoRnJvbUZy
YW1lKCkgaXMgYmVpbmcgY2FsbGVkIG9uIGEgRG9jdW1lbnRMb2FkZXIgdGhhdCBoYXMgbmV2ZXIg
YXR0YWNoZWQgdG8gYW55IEZyYW1lIik7CiAjZW5kaWYKLSAgICBSZWZQdHI8RnJhbWU+IHByb3Rl
Y3RGcmFtZShtX2ZyYW1lKTsKLSAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RMb2FkZXIo
KnRoaXMpOworICAgIFJlZlB0cjxGcmFtZT4gcHJvdGVjdGVkRnJhbWUobV9mcmFtZSk7CisgICAg
UmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIEl0IG5l
dmVyIG1ha2VzIHNlbnNlIHRvIGhhdmUgYSBkb2N1bWVudCBsb2FkZXIgdGhhdCBpcyBkZXRhY2hl
ZCBmcm9tIGl0cwogICAgIC8vIGZyYW1lIGhhdmUgYW55IGxvYWRzIGFjdGl2ZSwgc28ga2lsbCBh
bGwgdGhlIGxvYWRzLgpAQCAtMTQ3NSw3ICsxNDc1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCkKICAgICBBU1NFUlQoIXRpbWluZygpLmZldGNoU3Rh
cnQoKSk7CiAgICAgdGltaW5nKCkubWFya0ZldGNoU3RhcnQoKTsKIAotICAgIFJlZjxEb2N1bWVu
dExvYWRlcj4gcHJvdGVjdCgqdGhpcyk7IC8vIHdpbGxTZW5kUmVxdWVzdCgpIG1heSBkZWFsbG9j
YXRlIHRoZSBwcm92aXNpb25hbCBsb2FkZXIgKHdoaWNoIG1heSBiZSB1cykgaWYgaXQgY2FuY2Vs
cyB0aGUgbG9hZC4KKyAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OyAvLyB3aWxsU2VuZFJlcXVlc3QoKSBtYXkgZGVhbGxvY2F0ZSB0aGUgcHJvdmlzaW9uYWwgbG9h
ZGVyICh3aGljaCBtYXkgYmUgdXMpIGlmIGl0IGNhbmNlbHMgdGhlIGxvYWQuCiAgICAgd2lsbFNl
bmRSZXF1ZXN0KG1fcmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSgpKTsKIAogICAgIC8vIHdpbGxT
ZW5kUmVxdWVzdCgpIG1heSBsZWFkIHRvIG91ciBGcmFtZSBiZWluZyBkZXRhY2hlZCBvciBjYW5j
ZWxsaW5nIHRoZSBsb2FkIHZpYSBudWxsaW5nIHRoZSBSZXNvdXJjZVJlcXVlc3QuCkBAIC0xNTU1
LDcgKzE1NTUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjYW5jZWxQb2xpY3lDaGVja0lmTmVl
ZGVkKCkKIAogdm9pZCBEb2N1bWVudExvYWRlcjo6Y2FuY2VsTWFpblJlc291cmNlTG9hZChjb25z
dCBSZXNvdXJjZUVycm9yJiByZXNvdXJjZUVycm9yKQogewotICAgIFJlZjxEb2N1bWVudExvYWRl
cj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERvY3VtZW50TG9hZGVyPiBwcm90ZWN0ZWRUaGlz
KCp0aGlzKTsKICAgICBSZXNvdXJjZUVycm9yIGVycm9yID0gcmVzb3VyY2VFcnJvci5pc051bGwo
KSA/IGZyYW1lTG9hZGVyKCktPmNhbmNlbGxlZEVycm9yKG1fcmVxdWVzdCkgOiByZXNvdXJjZUVy
cm9yOwogCiAgICAgbV9kYXRhTG9hZFRpbWVyLnN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggNWY1ZWZkODQxOGEz
N2VhMDJkZmFiNjM1M2IwMjVhOGE2MDZmYWJlNS4uOTBlNGJmYmMxMTIzODkzYWIxMzUyNDVmYjc0
OTc3OGQzYjY5OTVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBEb2N1bWVudFRocmVhZGFi
bGVMb2FkZXI6On5Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKQogCiB2b2lkIERvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlcjo6Y2FuY2VsKCkKIHsKLSAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIENhbmNlbCBjYW4gcmUtZW50ZXIgYW5kIG1f
cmVzb3VyY2UgbWlnaHQgYmUgbnVsbCBoZXJlIGFzIGEgcmVzdWx0LgogICAgIGlmIChtX2NsaWVu
dCAmJiBtX3Jlc291cmNlKSB7CkBAIC0xOTEsNyArMTkxLDcgQEAgdm9pZCBEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI6OnJlZGlyZWN0UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBS
ZXNvdXIKICAgICBBU1NFUlQobV9jbGllbnQpOwogICAgIEFTU0VSVF9VTlVTRUQocmVzb3VyY2Us
IHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmPERvY3VtZW50VGhyZWFkYWJsZUxv
YWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgaWYgKCFpc0FsbG93ZWRCeUNvbnRlbnRTZWN1cml0
eVBvbGljeShyZXF1ZXN0LnVybCgpLCAhcmVkaXJlY3RSZXNwb25zZS5pc051bGwoKSkpIHsKICAg
ICAgICAgbV9jbGllbnQtPmRpZEZhaWxSZWRpcmVjdENoZWNrKCk7CiAgICAgICAgIHJlcXVlc3Qg
PSBSZXNvdXJjZVJlcXVlc3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9N
ZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291
cmNlTG9hZGVyLmNwcAppbmRleCAxZTgzYjA0MGUwNGEzM2I4OTJhNTMwNmUzMDA5ODJhZWI3ODll
OTFiLi5iN2ZmMzc4NGI1ZmM2YzdjMjkyMTEzM2FhNzUxMzc2YzQ4M2M2YTgzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xNDAsNyArMTQw
LDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJlc291cmNl
KiByZXNvdXJjZSwgY29uc3QgUmVzb3VyY2VSZXMKICAgICBpZiAoIW1fbG9hZGVyLT5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVj
dCh0aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsK
ICAgICBpZiAoIW1fbG9hZGVyLT5jcm9zc09yaWdpbk1vZGUoKS5pc051bGwoKSAmJiAhcmVzb3Vy
Y2UtPnBhc3Nlc1NhbWVPcmlnaW5Qb2xpY3lDaGVjaygqbV9sb2FkZXItPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxjb25zdCBT
dHJpbmc+IGNvbnNvbGVNZXNzYWdlKCJDcm9zcy1vcmlnaW4gbWVkaWEgcmVzb3VyY2UgbG9hZCBk
ZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJlc291cmNlIFNoYXJpbmcgcG9saWN5LiIpOwogICAgICAg
ICBtX2xvYWRlci0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGNvbnNvbGVNZXNzYWdlLmdldCgpKTsKQEAg
LTE2MCw3ICsxNjAsNyBAQCBib29sIE1lZGlhUmVzb3VyY2U6OnNob3VsZENhY2hlUmVzcG9uc2Uo
Q2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZQogewogICAgIEFTU0VSVF9V
TlVTRUQocmVzb3VyY2UsIHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVmUHRyPE1l
ZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPE1lZGlhUmVzb3VyY2U+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KQogICAgICAgICByZXR1cm4gbV9j
bGllbnQtPnNob3VsZENhY2hlUmVzcG9uc2UoKnRoaXMsIHJlc3BvbnNlKTsKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE3MCw3ICsxNzAsNyBAQCB2b2lkIE1lZGlhUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBSZXNvdXJjZVJlcXVlc3QmCiB7CiAgICAg
QVNTRVJUX1VOVVNFRChyZXNvdXJjZSwgcmVzb3VyY2UgPT0gbV9yZXNvdXJjZSk7CiAKLSAgICBS
ZWZQdHI8TWVkaWFSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBSZWZQdHI8TWVkaWFSZXNv
dXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAobV9jbGllbnQpCiAgICAgICAgIG1f
Y2xpZW50LT5yZWRpcmVjdFJlY2VpdmVkKCp0aGlzLCByZXF1ZXN0LCByZXNwb25zZSk7CiB9CkBA
IC0xNzksNyArMTc5LDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhU2VudChDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UsIHVuc2lnbmVkIGxvbmcgbG9uZyBieXRlc1MKIHsKICAgICBBU1NFUlRf
VU5VU0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxN
ZWRpYVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQt
PmRhdGFTZW50KCp0aGlzLCBieXRlc1NlbnQsIHRvdGFsQnl0ZXNUb0JlU2VudCk7CiB9CkBAIC0x
ODgsNyArMTg4LDcgQEAgdm9pZCBNZWRpYVJlc291cmNlOjpkYXRhUmVjZWl2ZWQoQ2FjaGVkUmVz
b3VyY2UqIHJlc291cmNlLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQKIHsKICAgICBBU1NFUlRfVU5V
U0VEKHJlc291cmNlLCByZXNvdXJjZSA9PSBtX3Jlc291cmNlKTsKIAotICAgIFJlZlB0cjxNZWRp
YVJlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIFJlZlB0cjxNZWRpYVJlc291cmNlPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmIChtX2NsaWVudCkKICAgICAgICAgbV9jbGllbnQtPmRh
dGFSZWNlaXZlZCgqdGhpcywgZGF0YSwgZGF0YUxlbmd0aCk7CiB9CkBAIC0xOTcsNyArMTk3LDcg
QEAgdm9pZCBNZWRpYVJlc291cmNlOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UpCiB7CiAgICAgQVNTRVJUKHJlc291cmNlID09IG1fcmVzb3VyY2UpOwogCi0gICAgUmVm
UHRyPE1lZGlhUmVzb3VyY2U+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPE1lZGlhUmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKG1fY2xpZW50KSB7CiAgICAgICAgIGlm
IChyZXNvdXJjZS0+bG9hZEZhaWxlZE9yQ2FuY2VsZWQoKSkKICAgICAgICAgICAgIG1fY2xpZW50
LT5sb2FkRmFpbGVkKCp0aGlzLCByZXNvdXJjZS0+cmVzb3VyY2VFcnJvcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmlu
ZGV4IDdjMTlkM2QzMTVlNTM0MDk4YWQxNTA3NGRhZTFhNTk0ZmNlZDk5MDYuLmI4OWI2MDAyNjMx
NDAyY2U1YjUwYWI5Y2FmNzUwMTRlYmJiYTFhZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtOTAsMTEgKzkwLDEx
IEBAIGJvb2wgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogCiB2b2lkIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjp3aWxs
U2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYgcmVkaXJlY3RSZXNwb25zZSwgc3RkOjpmdW5jdGlvbjx2b2lkKFJlc291cmNlUmVxdWVz
dCYmKT4mJiBjYWxsYmFjaykKIHsKLSAgICBSZWZQdHI8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXI+IHByb3RlY3QodGhpcyk7CisgICAgUmVmUHRyPE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgbV9jbGllbnQtPndpbGxTZW5kUmVxdWVzdCh0
aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbcHJvdGVjdCwgcmVkaXJl
Y3RSZXNwb25zZSwgY2FsbGJhY2tdKFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KSB7CisgICAgbV9j
bGllbnQtPndpbGxTZW5kUmVxdWVzdCh0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpLCByZWRpcmVjdFJl
c3BvbnNlLCBbcHJvdGVjdGVkVGhpcywgcmVkaXJlY3RSZXNwb25zZSwgY2FsbGJhY2tdKFJlc291
cmNlUmVxdWVzdCByZXF1ZXN0KSB7CiAgICAgICAgIGlmICghcmVxdWVzdC5pc051bGwoKSkKLSAg
ICAgICAgICAgIHByb3RlY3QtPndpbGxTZW5kUmVxdWVzdEludGVybmFsKHJlcXVlc3QsIHJlZGly
ZWN0UmVzcG9uc2UpOworICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+d2lsbFNlbmRSZXF1ZXN0
SW50ZXJuYWwocmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7CiAKICAgICAgICAgY2FsbGJhY2so
V1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgfSk7CkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnMKIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVj
ZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogewotICAgIFJl
ZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPE5l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1f
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UodGhpcywgcmVzcG9uc2UpOwogCkBAIC0xMzksNyAr
MTM5LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZUJ1ZmZl
cihQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmUKIAogdm9pZCBOZXRzY2FwZVBsdWdJblN0
cmVhbUxvYWRlcjo6ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBpbnQg
bGVuZ3RoLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyLCBsb25nIGxvbmcgZW5jb2Rl
ZERhdGFMZW5ndGgsIERhdGFQYXlsb2FkVHlwZSBkYXRhUGF5bG9hZFR5cGUpCiB7Ci0gICAgUmVm
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIAogICAg
IG1fY2xpZW50LT5kaWRSZWNlaXZlRGF0YSh0aGlzLCBidWZmZXIgPyBidWZmZXItPmRhdGEoKSA6
IGRhdGEsIGJ1ZmZlciA/IGJ1ZmZlci0+c2l6ZSgpIDogbGVuZ3RoKTsKIApAQCAtMTQ4LDcgKzE0
OCw3IEBAIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgaW50IGxlCiAKIHZvaWQgTmV0c2NhcGVQbHVnSW5TdHJl
YW1Mb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZpbmlzaFRpbWUpCiB7Ci0gICAgUmVm
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbm90
aWZ5RG9uZSgpOwogCkBAIC0xNTgsNyArMTU4LDcgQEAgdm9pZCBOZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKIAogdm9pZCBOZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJv
cikKIHsKLSAgICBSZWY8TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI+IHByb3RlY3QoKnRoaXMp
OworICAgIFJlZjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhp
cyk7CiAKICAgICBub3RpZnlEb25lKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDFhOGI2MzIwNzU3ZjUzMGNiZDM0ZThiNzFiMDc2MzU2M2IyOWNlZmQu
LmI3OGY0MDlhZjJjNzhlMjlmYWVkZTFlMzM2YTNhZWM5NzAzY2ZlODMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtOTksNyArOTksNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpyZWxlYXNlUmVzb3VyY2VzKCkKICAgICAvLyBkZWFsbG9jYXRlZCBhbmQgcmVs
ZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhpcyBvYmplY3QuCiAgICAgLy8gV2UgbmVlZCB0
byByZXRhaW4gdG8gYXZvaWQgYWNjZXNzaW5nIHRoZSBvYmplY3QgYWZ0ZXIgaXQKICAgICAvLyBo
YXMgYmVlbiBkZWFsbG9jYXRlZCBhbmQgYWxzbyB0byBhdm9pZCByZWVudGVyaW5nIHRoaXMgbWV0
aG9kLgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIG1fZnJhbWUgPSBudWxs
cHRyOwogICAgIG1fZG9jdW1lbnRMb2FkZXIgPSBudWxscHRyOwpAQCAtMTcxLDcgKzE3MSw3IEBA
IGJvb2wgUmVzb3VyY2VMb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByKQogCiB2
b2lkIFJlc291cmNlTG9hZGVyOjpkZWxpdmVyUmVzcG9uc2VBbmREYXRhKGNvbnN0IFJlc291cmNl
UmVzcG9uc2UmIHJlc3BvbnNlLCBSZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKIHsKLSAg
ICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBkaWRSZWNlaXZlUmVzcG9uc2UocmVz
cG9uc2UpOwogICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQpAQCAtMjQ3LDMyICsyNDcs
MzIgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6bG9hZERhdGFVUkwoKQogICAgIGF1dG8gdXJsID0g
bV9yZXF1ZXN0LnVybCgpOwogICAgIEFTU0VSVCh1cmwucHJvdG9jb2xJc0RhdGEoKSk7CiAKLSAg
ICBSZWZQdHI8UmVzb3VyY2VMb2FkZXI+IGxvYWRlcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YVVSTERlY29kZXI6OlNjaGVk
dWxlQ29udGV4dCBzY2hlZHVsZUNvbnRleHQ7CiAjaWYgSEFWRShSVU5MT09QX1RJTUVSKQogICAg
IGlmIChhdXRvKiBzY2hlZHVsZWRQYWlycyA9IG1fZnJhbWUtPnBhZ2UoKS0+c2NoZWR1bGVkUnVu
TG9vcFBhaXJzKCkpCiAgICAgICAgIHNjaGVkdWxlQ29udGV4dC5zY2hlZHVsZWRQYWlycyA9ICpz
Y2hlZHVsZWRQYWlyczsKICNlbmRpZgotICAgIERhdGFVUkxEZWNvZGVyOjpkZWNvZGUodXJsLCBz
Y2hlZHVsZUNvbnRleHQsIFtsb2FkZXIsIHVybF0gKE9wdGlvbmFsPERhdGFVUkxEZWNvZGVyOjpS
ZXN1bHQ+IGRlY29kZVJlc3VsdCkgewotICAgICAgICBpZiAobG9hZGVyLT5yZWFjaGVkVGVybWlu
YWxTdGF0ZSgpKQorICAgIERhdGFVUkxEZWNvZGVyOjpkZWNvZGUodXJsLCBzY2hlZHVsZUNvbnRl
eHQsIFtwcm90ZWN0ZWRUaGlzLCB1cmxdIChPcHRpb25hbDxEYXRhVVJMRGVjb2Rlcjo6UmVzdWx0
PiBkZWNvZGVSZXN1bHQpIHsKKyAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPnJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVz
dWx0KSB7Ci0gICAgICAgICAgICBsb2FkZXItPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7
CisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRGYWlsKFJlc291cmNlRXJyb3IoZXJyb3JE
b21haW5XZWJLaXRJbnRlcm5hbCwgMCwgdXJsLCAiRGF0YSBVUkwgZGVjb2RpbmcgZmFpbGVkIikp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGlmIChsb2FkZXItPndh
c0NhbmNlbGxlZCgpKQorICAgICAgICBpZiAocHJvdGVjdGVkVGhpcy0+d2FzQ2FuY2VsbGVkKCkp
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGF1dG8mIHJlc3VsdCA9IGRlY29kZVJlc3Vs
dC52YWx1ZSgpOwogICAgICAgICBhdXRvIGRhdGFTaXplID0gcmVzdWx0LmRhdGEtPnNpemUoKTsK
IAogICAgICAgICBSZXNvdXJjZVJlc3BvbnNlIGRhdGFSZXNwb25zZSB7IHVybCwgcmVzdWx0Lm1p
bWVUeXBlLCBkYXRhU2l6ZSwgcmVzdWx0LmNoYXJzZXQgfTsKLSAgICAgICAgbG9hZGVyLT5kaWRS
ZWNlaXZlUmVzcG9uc2UoZGF0YVJlc3BvbnNlKTsKKyAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlk
UmVjZWl2ZVJlc3BvbnNlKGRhdGFSZXNwb25zZSk7CiAKLSAgICAgICAgaWYgKCFsb2FkZXItPnJl
YWNoZWRUZXJtaW5hbFN0YXRlKCkgJiYgZGF0YVNpemUpCi0gICAgICAgICAgICBsb2FkZXItPmRp
ZFJlY2VpdmVCdWZmZXIocmVzdWx0LmRhdGEuZ2V0KCksIGRhdGFTaXplLCBEYXRhUGF5bG9hZFdo
b2xlUmVzb3VyY2UpOworICAgICAgICBpZiAoIXByb3RlY3RlZFRoaXMtPnJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkgJiYgZGF0YVNpemUpCisgICAgICAgICAgICBwcm90ZWN0ZWRUaGlzLT5kaWRSZWNl
aXZlQnVmZmVyKHJlc3VsdC5kYXRhLmdldCgpLCBkYXRhU2l6ZSwgRGF0YVBheWxvYWRXaG9sZVJl
c291cmNlKTsKIAotICAgICAgICBpZiAoIWxvYWRlci0+cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkK
LSAgICAgICAgICAgIGxvYWRlci0+ZGlkRmluaXNoTG9hZGluZyhjdXJyZW50VGltZSgpKTsKKyAg
ICAgICAgaWYgKCFwcm90ZWN0ZWRUaGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQorICAgICAg
ICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmluaXNoTG9hZGluZyhjdXJyZW50VGltZSgpKTsKICAg
ICB9KTsKIH0KIApAQCAtMzI4LDcgKzMyOCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzCiB7
CiAgICAgLy8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBh
ZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBv
c3NpYmx5IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIx
Ni4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNv
dXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBBU1NFUlQoIW1fcmVhY2hl
ZFRlcm1pbmFsU3RhdGUpOwogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCkBAIC00MzUs
NyArNDM1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0
IFJlc291cmNlUmVzcG9uc2UmIHIpCiAKICAgICAvLyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxl
Z2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAv
LyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUg
b2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsK
IAogICAgIGxvZ1Jlc291cmNlUmVzcG9uc2VTb3VyY2UobV9mcmFtZS5nZXQoKSwgci5zb3VyY2Uo
KSk7CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZl
RGF0YU9yQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbmd0aCwgUAogCiAgICAg
Ly8gUHJvdGVjdCB0aGlzIGluIHRoaXMgZGVsZWdhdGUgbWV0aG9kIHNpbmNlIHRoZSBhZGRpdGlv
bmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVkaW5nIHBvc3NpYmx5
IGRlcmVmaW5nIHRoaXM7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgUmFkYXIgMzI2NjIxNi4KLSAg
ICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVm
ZmVyID0gcHJwQnVmZmVyOwogCiAgICAgYWRkRGF0YU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgYnVm
ZmVyLmdldCgpLCBkYXRhUGF5bG9hZFR5cGUpOwpAQCAtNTIzLDcgKzUyMyw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAKICAgICAv
LyBQcm90ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9u
YWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkg
ZGVyZWZpbmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAg
IFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9h
ZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGNsZWFudXBGb3JFcnJvcihlcnJvcik7
CiAgICAgcmVsZWFzZVJlc291cmNlcygpOwpAQCAtNTU2LDcgKzU1Niw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmNhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAKICAgICAv
LyB3aWxsQ2FuY2VsKCkgYW5kIGRpZEZhaWxUb0xvYWQoKSBib3RoIGNhbGwgb3V0IHRvIGNsaWVu
dHMgdGhhdCBtaWdodCBkbyAKICAgICAvLyBzb21ldGhpbmcgY2F1c2luZyB0aGUgbGFzdCByZWZl
cmVuY2UgdG8gdGhpcyBvYmplY3QgdG8gZ28gYXdheS4KLSAgICBSZWY8UmVzb3VyY2VMb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7CiAgICAgCiAgICAgLy8gSWYgd2UgcmUtZW50ZXIgY2FuY2VsKCkgZnJvbSBpbnNpZGUg
d2lsbENhbmNlbCgpLCB3ZSB3YW50IHRvIHBpY2sgdXAgZnJvbSB3aGVyZSB3ZSBsZWZ0IAogICAg
IC8vIG9mZiB3aXRob3V0IHJlLXJ1bm5pbmcgd2lsbENhbmNlbCgpCkBAIC02NzIsNyArNjcyLDcg
QEAgYm9vbCBSZXNvdXJjZUxvYWRlcjo6c2hvdWxkVXNlQ3JlZGVudGlhbFN0b3JhZ2UoKQogICAg
IGlmIChtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFscygpID09IERvTm90QWxsb3dTdG9yZWRDcmVk
ZW50aWFscykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAotICAgIFJlZjxSZXNvdXJjZUxv
YWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRU
aGlzKCp0aGlzKTsKICAgICByZXR1cm4gZnJhbWVMb2FkZXIoKS0+Y2xpZW50KCkuc2hvdWxkVXNl
Q3JlZGVudGlhbFN0b3JhZ2UoZG9jdW1lbnRMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKIH0KIApA
QCAtNjg3LDcgKzY4Nyw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsCiAKICAgICAvLyBQcm90
ZWN0IHRoaXMgaW4gdGhpcyBkZWxlZ2F0ZSBtZXRob2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJv
Y2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGluZyBpbmNsdWRpbmcgcG9zc2libHkgZGVyZWZp
bmcgdGhpczsgb25lIGV4YW1wbGUgb2YgdGhpcyBpcyBSYWRhciAzMjY2MjE2LgotICAgIFJlZjxS
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFJlc291cmNlTG9hZGVyPiBw
cm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmIChtX29wdGlvbnMuYWxsb3dDcmVkZW50aWFs
cygpID09IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMpIHsKICAgICAgICAgaWYgKGlzQWxsb3dlZFRv
QXNrVXNlckZvckNyZWRlbnRpYWxzKCkpIHsKQEAgLTcwOSw3ICs3MDksNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjpkaWRDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjb25zdCBBdXRoZW50
aWNhdGlvbkNoYWxsZQogewogICAgIC8vIFByb3RlY3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1l
dGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRo
aW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmluZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlz
IGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlz
KTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIGZy
YW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dGhpcywgY2hhbGxlbmdlKTsKIH0KIApAQCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZENhbmNlbEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhlbnRpY2F0
aW9uQ2hhbGxlCiAKIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQ
cm90ZWN0aW9uU3BhY2UoY29uc3QgUHJvdGVjdGlvblNwYWNlJiBwcm90ZWN0aW9uU3BhY2UpCiB7
Ci0gICAgUmVmPFJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3Vy
Y2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIHJldHVybiBmcmFtZUxvYWRlcigp
LT5jbGllbnQoKS5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlKGRvY3VtZW50
TG9hZGVyKCksIGlkZW50aWZpZXIoKSwgcHJvdGVjdGlvblNwYWNlKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNzhjMTQyYmE0MWJiYTA5
NjkwMDJmZDVkNDA0NzNkYTdjMmU5MjU1ZC4uN2U3YTljMmJjYThlNDNlNDlkOTg5MmFlYTIyYTVj
MzZmMDFmN2ZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb24KIHsKICAgICAv
LyBTdG9yZSB0aGUgcHJldmlvdXMgVVJMIGJlY2F1c2UgdGhlIGNhbGwgdG8gUmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdCB3aWxsIG1vZGlmeSBpdC4KICAgICBVUkwgcHJldmlvdXNVUkwg
PSByZXF1ZXN0KCkudXJsKCk7Ci0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0
aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgaWYgKCFuZXdSZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSkgewogICAgICAgICBjYW5jZWwo
Y2Fubm90U2hvd1VSTEVycm9yKCkpOwpAQCAtMjE2LDcgKzIxNiw3IEBAIHZvaWQgU3VicmVzb3Vy
Y2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYgbmV3UmVx
dWVzdCwgY29uCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRTZW5kRGF0YSh1bnNpZ25lZCBs
b25nIGxvbmcgYnl0ZXNTZW50LCB1bnNpZ25lZCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50
KQogewogICAgIEFTU0VSVChtX3N0YXRlID09IEluaXRpYWxpemVkKTsKLSAgICBSZWY8U3VicmVz
b3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgbV9yZXNvdXJjZS0+ZGlkU2VuZERhdGEoYnl0ZXNT
ZW50LCB0b3RhbEJ5dGVzVG9CZVNlbnQpOwogfQogCkBAIC0yMjcsNyArMjI3LDcgQEAgdm9pZCBT
dWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9u
c2UmIHJlc3BvbnNlKQogCiAgICAgLy8gUmVmZXJlbmNlIHRoZSBvYmplY3QgaW4gdGhpcyBtZXRo
b2Qgc2luY2UgdGhlIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBjYW4gZG8KICAgICAvLyBhbnl0aGlu
ZyBpbmNsdWRpbmcgcmVtb3ZpbmcgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0OyBv
bmUgZXhhbXBsZSBvZiB0aGlzIGlzIDMyNjYyMTYuCi0gICAgUmVmPFN1YnJlc291cmNlTG9hZGVy
PiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgaWYgKHNob3VsZEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKSkKICAg
ICAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOwpAQCAtMzEyLDcgKzMxMiw3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoY29uc3Qg
Y2hhciogZGF0YSwgaW50IGxlbmd0aCwgUGFzCiAgICAgQVNTRVJUKG1fc3RhdGUgPT0gSW5pdGlh
bGl6ZWQpOwogICAgIC8vIFJlZmVyZW5jZSB0aGUgb2JqZWN0IGluIHRoaXMgbWV0aG9kIHNpbmNl
IHRoZSBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgY2FuIGRvCiAgICAgLy8gYW55dGhpbmcgaW5jbHVk
aW5nIHJlbW92aW5nIHRoZSBsYXN0IHJlZmVyZW5jZSB0byB0aGlzIG9iamVjdDsgb25lIGV4YW1w
bGUgb2YgdGhpcyBpcyAzMjY2MjE2LgotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVj
dCgqdGhpcyk7CisgICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXIgPSBwcnBCdWZmZXI7CiAgICAgCiAg
ICAgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZmZXIoZGF0YSwgbGVuZ3RoLCBi
dWZmZXIsIGVuY29kZWREYXRhTGVuZ3RoLCBkYXRhUGF5bG9hZFR5cGUpOwpAQCAtNDIxLDcgKzQy
MSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoZG91YmxlIGZp
bmlzaFRpbWUpCiAgICAgTE9HKFJlc291cmNlTG9hZGluZywgIlJlY2VpdmVkICclcycuIiwgbV9y
ZXNvdXJjZS0+dXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsKICAgICBsb2dSZXNvdXJj
ZUxvYWRlZChtX2ZyYW1lLmdldCgpLCBtX3Jlc291cmNlLT50eXBlKCkpOwogCi0gICAgUmVmPFN1
YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8U3VicmVzb3VyY2VMb2Fk
ZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJlc291cmNlPiBwcm90ZWN0UmVzb3VyY2UobV9yZXNvdXJjZSk7CiAKICAgICBtX3N0YXRlID0g
RmluaXNoaW5nOwpAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgQVNTRVJUKCFyZWFjaGVkVGVy
bWluYWxTdGF0ZSgpKTsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiRmFpbGVkIHRvIGxvYWQg
JyVzJy5cbiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7CiAK
LSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxTdWJy
ZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VI
YW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHByb3RlY3RSZXNvdXJjZShtX3Jlc291cmNlKTsKICAgICBt
X3N0YXRlID0gRmluaXNoaW5nOwogICAgIGlmIChtX3Jlc291cmNlLT5yZXNvdXJjZVRvUmV2YWxp
ZGF0ZSgpKQpAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxD
YW5jZWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgQVNTRVJUKCFyZWFjaGVkVGVy
bWluYWxTdGF0ZSgpKTsKICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FuY2VsbGVkIGxvYWQg
b2YgJyVzJy5cbiIsIG1fcmVzb3VyY2UtPnVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7
CiAKLSAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxT
dWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIG1fc3RhdGUgPSBtX3N0YXRlID09IFVuaW5pdGlhbGl6ZWQgPyBDYW5jZWxsZWRXaGls
ZUluaXRpYWxpemluZyA6IEZpbmlzaGluZzsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCA4MjFhODg4NTc2ODI2ZTJl
NDU1YmUxMzFmOGU4ZWVjOWY5MWUzOGMwLi5iNjZkNTRmYTlhMWMzNTY1ZDY4MzE2ZDEyNjU2MTQw
MjgwYmY3OGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmF3UmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
YXdSZXNvdXJjZS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgY29uc3QgY2hhciogQ2FjaGVkUmF3UmVz
b3VyY2U6OmNhbGN1bGF0ZUluY3JlbWVudGFsRGF0YUNodW5rKFNoYXJlZEJ1ZmZlciogZGF0YSwK
IAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6YWRkRGF0YUJ1ZmZlcihTaGFyZWRCdWZmZXImIGRh
dGEpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHByb3Rl
Y3QodGhpcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHBy
b3RlY3RlZFRoaXModGhpcyk7CiAgICAgQVNTRVJUKGRhdGFCdWZmZXJpbmdQb2xpY3koKSA9PSBC
dWZmZXJEYXRhKTsKICAgICBtX2RhdGEgPSAmZGF0YTsKIApAQCAtODYsNyArODYsNyBAQCB2b2lk
IENhY2hlZFJhd1Jlc291cmNlOjphZGREYXRhKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
bmd0aCkKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6ZmluaXNoTG9hZGluZyhTaGFyZWRCdWZm
ZXIqIGRhdGEpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3QodGhpcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3Vy
Y2U+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVm
ZmVyaW5nUG9saWN5ID0gdGhpcy0+ZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOwogICAgIGlmIChkYXRh
QnVmZmVyaW5nUG9saWN5ID09IEJ1ZmZlckRhdGEpIHsKICAgICAgICAgbV9kYXRhID0gZGF0YTsK
QEAgLTExMyw3ICsxMTMsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjpub3RpZnlDbGllbnRz
RGF0YVdhc1JlY2VpdmVkKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkCiAgICAgaWYgKCFsZW5n
dGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJh
d1Jlc291cmNlPiBwcm90ZWN0KHRoaXMpOworICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hl
ZFJhd1Jlc291cmNlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENhY2hlZFJlc291cmNlQ2xp
ZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7CiAgICAgd2hp
bGUgKENhY2hlZFJhd1Jlc291cmNlQ2xpZW50KiBjID0gdy5uZXh0KCkpCiAgICAgICAgIGMtPmRh
dGFSZWNlaXZlZCh0aGlzLCBkYXRhLCBsZW5ndGgpOwpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQg
Q2FjaGVkUmF3UmVzb3VyY2U6OmRpZEFkZENsaWVudChDYWNoZWRSZXNvdXJjZUNsaWVudCogYykK
ICAgICAvLyBUaGUgY2FsbHMgdG8gdGhlIGNsaWVudCBjYW4gcmVzdWx0IGluIGV2ZW50cyBydW5u
aW5nLCBwb3RlbnRpYWxseSBjYXVzaW5nCiAgICAgLy8gdGhpcyByZXNvdXJjZSB0byBiZSBldmlj
dGVkIGZyb20gdGhlIGNhY2hlIGFuZCBhbGwgY2xpZW50cyB0byBiZSByZW1vdmVkLAogICAgIC8v
IHNvIGEgcHJvdGVjdG9yIGlzIG5lY2Vzc2FyeS4KLSAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxD
YWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsKKyAgICBDYWNoZWRSZXNvdXJjZUhhbmRs
ZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBDYWNoZWRSYXdS
ZXNvdXJjZUNsaWVudCogY2xpZW50ID0gc3RhdGljX2Nhc3Q8Q2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQqPihjKTsKICAgICBzaXplX3QgcmVkaXJlY3RDb3VudCA9IG1fcmVkaXJlY3RDaGFpbi5zaXpl
KCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWRpcmVjdENvdW50OyBpKyspIHsKQEAg
LTE2NSw3ICsxNjUsNyBAQCB2b2lkIENhY2hlZFJhd1Jlc291cmNlOjphbGxDbGllbnRzUmVtb3Zl
ZCgpCiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKIHsKLSAg
ICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdCh0aGlzKTsK
KyAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSYXdSZXNvdXJjZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKICAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKSB7CiAgICAgICAgIENhY2hlZFJl
c291cmNlQ2xpZW50V2Fsa2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiB3KG1fY2xpZW50cyk7
CiAgICAgICAgIHdoaWxlIChDYWNoZWRSYXdSZXNvdXJjZUNsaWVudCogYyA9IHcubmV4dCgpKQpA
QCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6OnJlZGlyZWN0UmVjZWl2
ZWQoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjCiAKIHZvaWQgQ2FjaGVk
UmF3UmVzb3VyY2U6OnJlc3BvbnNlUmVjZWl2ZWQoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+IHBy
b3RlY3QodGhpcyk7CisgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmF3UmVzb3VyY2U+
IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYgKCFtX2lkZW50aWZpZXIpCiAgICAgICAgIG1f
aWRlbnRpZmllciA9IG1fbG9hZGVyLT5pZGVudGlmaWVyKCk7CiAgICAgQ2FjaGVkUmVzb3VyY2U6
OnJlc3BvbnNlUmVjZWl2ZWQocmVzcG9uc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NmL1N1YnJlc291cmNlTG9hZGVyQ0YuY3BwCmluZGV4IDY5ZTI5OTdmNGVjZjViMTRjMDU1MGUy
YTE5ZTFhODYxMTZlOGQxZmIuLjYwYjY4ZWJhNzBiNmUyMDMwMTU0NTgzMDE4YTk5NGI0MzM2ODVm
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jZi9TdWJyZXNvdXJjZUxvYWRl
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2YvU3VicmVzb3VyY2VMb2FkZXJD
Ri5jcHAKQEAgLTM1LDcgKzM1LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkUmVjZWl2
ZURhdGFBcnJheShDRkFycmF5UmVmIGRhdGFBcnJheSkKIHsKICAgICAvLyBSZWZlcmVuY2UgdGhl
IG9iamVjdCBpbiB0aGlzIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9jZXNzaW5nIGNh
biBkbyBhbnl0aGluZyBpbmNsdWRpbmcKICAgICAvLyByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVu
Y2UgdG8gdGhpcyBvYmplY3Q7IG9uZSBleGFtcGxlIG9mIHRoaXMgaXMgPHJkYXI6Ly9wcm9ibGVt
LzMyNjYyMTY+LgotICAgIFJlZjxTdWJyZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7Cisg
ICAgUmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIFJl
c291cmNlTG9hZGVyOjpkaWRSZWNlaXZlRGF0YUFycmF5KGRhdGFBcnJheSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMvUmVzb3VyY2VMb2FkZXJNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvbWFjL1Jlc291cmNlTG9hZGVyTWFjLm1tCmluZGV4IGJiOWIxNGU4
MTRiNWIyMzljNzdlNTFhNGRiZjE3Y2Q2NTFjMjZmMDMuLjU2MjBjOTAyMjFkNDNmYjRiNzk2NWVh
NmMzOTdkNTgxNTg3ZmU3OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9tYWMv
UmVzb3VyY2VMb2FkZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL21hYy9SZXNv
dXJjZUxvYWRlck1hYy5tbQpAQCAtNjQsNyArNjQsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlRGF0YUFycmF5KENGQXJyYXlSZWYgZGF0YUFycmF5KQogewogICAgIC8vIFByb3Rl
Y3QgdGhpcyBpbiB0aGlzIGRlbGVnYXRlIG1ldGhvZCBzaW5jZSB0aGUgYWRkaXRpb25hbCBwcm9j
ZXNzaW5nIGNhbiBkbwogICAgIC8vIGFueXRoaW5nIGluY2x1ZGluZyBwb3NzaWJseSBkZXJlZmlu
ZyB0aGlzOyBvbmUgZXhhbXBsZSBvZiB0aGlzIGlzIFJhZGFyIDMyNjYyMTYuCi0gICAgUmVmPFJl
c291cmNlTG9hZGVyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHBy
b3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgQ0ZJbmRleCBhcnJheUNvdW50ID0gQ0ZBcnJheUdl
dENvdW50KGRhdGFBcnJheSk7CiAgICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgYXJyYXlDb3Vu
dDsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMmI1OWEzMzI0YWY3M2Nk
NjU1NmU5YzZjNzhkYmU5MThiZjBjMmNlYS4uNDE5YTk3MDZmN2Y5ODdmY2RiZGM4YTMxYjQzNjAz
ZDJjMzE1YWRhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTg4NSw3ICsxODg1
LDcgQEAgdm9pZCBET01XaW5kb3c6OmRpc3BhdGNoTG9hZEV2ZW50KCkKIAogYm9vbCBET01XaW5k
b3c6OmRpc3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50LCBFdmVudFRhcmdldCogdGFyZ2V0KQogewot
ICAgIFJlZjxFdmVudFRhcmdldD4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPEV2ZW50VGFyZ2V0
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIC8vIFBhdXNpbmcgYSBwYWdlIG1heSB0cmln
Z2VyIHBhZ2VoaWRlIGFuZCBwYWdlc2hvdyBldmVudHMuIFdlYkNvcmUgYWxzbyBpbXBsaWNpdGx5
IGZpcmVzIHRoZXNlCiAgICAgLy8gZXZlbnRzIHdoZW4gY2xvc2luZyBhIFdlYlZpZXcuIEhlcmUg
d2Uga2VlcCB0cmFjayBvZiB0aGUgc3RhdGUgb2YgdGhlIHBhZ2UgdG8gcHJldmVudCBkdXBsaWNh
dGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd0V4dGVuc2lvbi5jcHAKaW5kZXggMGU2
MmIzNDM3YWI4YmI1ZGVmZTRjMzZmMjU5MjM5MTYzZjVjZGIwZS4uOWMyNWU1ZDExZjM5NWFiMGJi
MzRhMGEyYzMzOTc3Y2IzMDRlYTE2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dFeHRlbnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93
RXh0ZW5zaW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6
ZGlzY29ubmVjdEZyYW1lRm9yRG9jdW1lbnRTdXNwZW5zaW9uKCkKIHsKICAgICAvLyBDYWxsaW5n
IG91dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERPTVdpbmRvd0V4dGVuc2lv
biBiZWluZyBkZXN0cm95ZWQKICAgICAvLyB3aGlsZSB0aGVyZSBpcyBzdGlsbCB3b3JrIHRvIGRv
LgotICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxE
T01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIAogICAgIEZyYW1l
KiBmcmFtZSA9IHRoaXMtPmZyYW1lKCk7CiAgICAgZnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLmRp
c3BhdGNoV2lsbERpc2Nvbm5lY3RET01XaW5kb3dFeHRlbnNpb25Gcm9tR2xvYmFsT2JqZWN0KHRo
aXMpOwpAQCAtNzMsNyArNzMsNyBAQCB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERlc3Ry
b3lHbG9iYWxPYmplY3RJbkNhY2hlZEZyYW1lKCkKIAogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRo
ZSBjbGllbnQgbWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRl
c3Ryb3llZAogICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVm
PERPTVdpbmRvd0V4dGVuc2lvbj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4
dGVuc2lvbj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBtX2Rpc2Nvbm5lY3RlZEZyYW1l
LT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaFdpbGxEZXN0cm95R2xvYmFsT2JqZWN0Rm9yRE9N
V2luZG93RXh0ZW5zaW9uKHRoaXMpOwogICAgIG1fZGlzY29ubmVjdGVkRnJhbWUgPSBudWxscHRy
OwpAQCAtODcsNyArODcsNyBAQCB2b2lkIERPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERlc3Ryb3lH
bG9iYWxPYmplY3RJbkZyYW1lKCkKIAogICAgIC8vIENhbGxpbmcgb3V0IHRvIHRoZSBjbGllbnQg
bWlnaHQgcmVzdWx0IGluIHRoaXMgRE9NV2luZG93RXh0ZW5zaW9uIGJlaW5nIGRlc3Ryb3llZAog
ICAgIC8vIHdoaWxlIHRoZXJlIGlzIHN0aWxsIHdvcmsgdG8gZG8uCi0gICAgUmVmPERPTVdpbmRv
d0V4dGVuc2lvbj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERPTVdpbmRvd0V4dGVuc2lvbj4g
cHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAoIW1fd2FzRGV0YWNoZWQpIHsKICAgICAg
ICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lk
IERPTVdpbmRvd0V4dGVuc2lvbjo6d2lsbERldGFjaEdsb2JhbE9iamVjdEZyb21GcmFtZSgpCiAK
ICAgICAvLyBDYWxsaW5nIG91dCB0byB0aGUgY2xpZW50IG1pZ2h0IHJlc3VsdCBpbiB0aGlzIERP
TVdpbmRvd0V4dGVuc2lvbiBiZWluZyBkZXN0cm95ZWQKICAgICAvLyB3aGlsZSB0aGVyZSBpcyBz
dGlsbCB3b3JrIHRvIGRvLgotICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3QoKnRo
aXMpOworICAgIFJlZjxET01XaW5kb3dFeHRlbnNpb24+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
CiAgICAgRnJhbWUqIGZyYW1lID0gdGhpcy0+ZnJhbWUoKTsKICAgICBBU1NFUlQoZnJhbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCmluZGV4IDJiN2Y5NTNiYmU4Mzg2OTViOGNmYTE0YTQz
MThjZGI5NmRiNjY1OWIuLjZlYmFlMjg2OGU5NDlkZGVjN2YxODRmOWQ5NDQ3ZWNiMjI5ZjA5Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIEZy
YW1lVmlldzo6aW52YWxpZGF0ZVJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkKIAogdm9pZCBGcmFt
ZVZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0KQogewotICAgIFJlZjxG
cmFtZVZpZXc+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxGcmFtZVZpZXc+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgIEludFJlY3Qgb2xkUmVjdCA9IGZyYW1lUmVjdCgpOwogICAgIGlmIChu
ZXdSZWN0ID09IG9sZFJlY3QpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMTgsNyArMTIxOCw3IEBA
IHZvaWQgRnJhbWVWaWV3OjpsYXlvdXQoYm9vbCBhbGxvd1N1YnRyZWUpCiAgICAgfQogCiAgICAg
Ly8gUHJvdGVjdCB0aGUgdmlldyBmcm9tIGJlaW5nIGRlbGV0ZWQgZHVyaW5nIGxheW91dCAoaW4g
cmVjYWxjU3R5bGUpLgotICAgIFJlZjxGcmFtZVZpZXc+IHByb3RlY3QoKnRoaXMpOworICAgIFJl
ZjxGcmFtZVZpZXc+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTWFueSBvZiB0aGUg
dGFza3MgcGVyZm9ybWVkIGR1cmluZyBsYXlvdXQgY2FuIGNhdXNlIHRoaXMgZnVuY3Rpb24gdG8g
YmUgcmUtZW50ZXJlZCwKICAgICAvLyBzbyBzYXZlIHRoZSBsYXlvdXQgcGhhc2Ugbm93IGFuZCBy
ZXN0b3JlIGl0IG9uIGV4aXQuCkBAIC0zMTEzLDcgKzMxMTMsNyBAQCBib29sIEZyYW1lVmlldzo6
dXBkYXRlRW1iZWRkZWRPYmplY3RzKCkKIAogdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZUVtYmVkZGVk
T2JqZWN0c1RpbWVyRmlyZWQoKQogewotICAgIFJlZlB0cjxGcmFtZVZpZXc+IHByb3RlY3QodGhp
cyk7CisgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBtX3Vw
ZGF0ZUVtYmVkZGVkT2JqZWN0c1RpbWVyLnN0b3AoKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgbWF4VXBkYXRlRW1iZWRkZWRPYmplY3RzSXRlcmF0aW9uczsgaSsrKSB7CiAgICAgICAg
IGlmICh1cGRhdGVFbWJlZGRlZE9iamVjdHMoKSkKQEAgLTMxOTAsNyArMzE5MCw3IEBAIHZvaWQg
RnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKIAogICAgIC8vIGxheW91dCgpIHBy
b3RlY3RzIEZyYW1lVmlldywgYnV0IGl0IHN0aWxsIGNhbiBnZXQgZGVzdHJveWVkIHdoZW4gdXBk
YXRlRW1iZWRkZWRPYmplY3RzKCkKICAgICAvLyBpcyBjYWxsZWQgdGhyb3VnaCB0aGUgcG9zdCBs
YXlvdXQgdGltZXIuCi0gICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVm
PEZyYW1lVmlldz4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBtX3VwZGF0ZUVtYmVkZGVk
T2JqZWN0c1RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2FuaW1hdGlvbi9BbmltYXRpb25CYXNlLmNwcAppbmRleCAwMTJmYTNlNmVkODM4MjU5NGI0YmQw
OTc4NDEyMDI0ZGRkMjA2YTRmLi5jYTIyZmQ0NmFjZmRkMzBjMWY0NzFhZTgxYzg5N2M4Nzc5ZDI0
MDVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25C
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25CYXNl
LmNwcApAQCAtNDc2LDcgKzQ3Niw3IEBAIHZvaWQgQW5pbWF0aW9uQmFzZTo6ZmlyZUFuaW1hdGlv
bkV2ZW50c0lmTmVlZGVkKCkKICAgICAvLyBkdXJpbmcgYW4gYW5pbWF0aW9uIGNhbGxiYWNrIHRo
YXQgbWlnaHQgZ2V0IGNhbGxlZC4gU2luY2UgdGhlIG93bmVyIGlzIGEgQ29tcG9zaXRlQW5pbWF0
aW9uCiAgICAgLy8gYW5kIGl0IHJlZiBjb3VudHMgdGhpcyBvYmplY3QsIHdlIHdpbGwga2VlcCBh
IHJlZiB0byB0aGF0IGluc3RlYWQuIFRoYXQgd2F5IHRoZSBBbmltYXRpb25CYXNlCiAgICAgLy8g
Y2FuIHN0aWxsIGFjY2VzcyB0aGUgcmVzb3VyY2VzIG9mIGl0cyBDb21wb3NpdGVBbmltYXRpb24g
YXMgbmVlZGVkLgotICAgIFJlZjxBbmltYXRpb25CYXNlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBS
ZWY8QW5pbWF0aW9uQmFzZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgUmVmPENvbXBvc2l0
ZUFuaW1hdGlvbj4gcHJvdGVjdENvbXBvc2l0ZUFuaW1hdGlvbigqbV9jb21wb3NpdGVBbmltYXRp
b24pOwogICAgIAogICAgIC8vIENoZWNrIGZvciBzdGFydCB0aW1lb3V0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvVGhyZWFkZWRTY3JvbGxpbmdUcmVlLmNwcApp
bmRleCA0ODM5ODZhZjVmYmVmZjEwNWVmNDRjMjU4MWVlZjhkMTQ0MGY2ZjVlLi4wMTVlMTgzYTA1
OWU4YmJiOTRkYzQxN2NjMWJjYzcyNWFlYmMwNTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9UaHJlYWRlZFNjcm9sbGluZ1RyZWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1RocmVhZGVkU2Nyb2xsaW5nVHJlZS5jcHAKQEAgLTU5LDkg
KzU5LDkgQEAgU2Nyb2xsaW5nVHJlZTo6RXZlbnRSZXN1bHQgVGhyZWFkZWRTY3JvbGxpbmdUcmVl
Ojp0cnlUb0hhbmRsZVdoZWVsRXZlbnQoY29uc3QgUGwKICAgICBpZiAod2lsbFdoZWVsRXZlbnRT
dGFydFN3aXBlR2VzdHVyZSh3aGVlbEV2ZW50KSkKICAgICAgICAgcmV0dXJuIERpZE5vdEhhbmRs
ZUV2ZW50OwogCi0gICAgUmVmUHRyPFRocmVhZGVkU2Nyb2xsaW5nVHJlZT4gdGhyZWFkZWRTY3Jv
bGxpbmdUcmVlKHRoaXMpOwotICAgIFNjcm9sbGluZ1RocmVhZDo6ZGlzcGF0Y2goW3RocmVhZGVk
U2Nyb2xsaW5nVHJlZSwgd2hlZWxFdmVudF0gewotICAgICAgICB0aHJlYWRlZFNjcm9sbGluZ1Ry
ZWUtPmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CisgICAgUmVmUHRyPFRocmVhZGVkU2Ny
b2xsaW5nVHJlZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBTY3JvbGxpbmdUaHJlYWQ6OmRp
c3BhdGNoKFtwcm90ZWN0ZWRUaGlzLCB3aGVlbEV2ZW50XSB7CisgICAgICAgIHByb3RlY3RlZFRo
aXMtPmhhbmRsZVdoZWVsRXZlbnQod2hlZWxFdmVudCk7CiAgICAgfSk7CiAgICAgCiAgICAgcmV0
dXJuIERpZEhhbmRsZUV2ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
U2Nyb2xsVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcApp
bmRleCBmMjJkNmJmODljZjJkYjYzOTkyNjNjYzkwOWY2Mjg2Nzc4MTg1NzA1Li5jNjI5ZmIyZThh
MzU0Y2VkZTNlMjhkNjAyMDRhYWY2N2FkYmM3MTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
Y3JvbGxWaWV3LmNwcApAQCAtMTAzNCw3ICsxMDM0LDcgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRT
Y3JvbGxiYXJPdmVybGF5U3R5bGUoU2Nyb2xsYmFyT3ZlcmxheVN0eWxlIG92ZXJsYXlTdHlsZSkK
IAogdm9pZCBTY3JvbGxWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYgbmV3UmVjdCkK
IHsKLSAgICBSZWY8U2Nyb2xsVmlldz4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPFNjcm9sbFZp
ZXc+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIEludFJlY3Qgb2xkUmVjdCA9IGZyYW1lUmVj
dCgpOwogICAgIAogICAgIGlmIChuZXdSZWN0ID09IG9sZFJlY3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRGlzcGxheVJlZnJlc2hNb25pdG9yLmNw
cAppbmRleCA5MGQ4MDE1YTgyZjc0M2QwMDgwZGU3OWQwMjE2YzcxZTMzZWM5ZTc0Li5kOWE2MjI2
MGMzMDllMjMyNTA1NGFiMjliMTBiNTlhY2E4OWU3OTk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9EaXNwbGF5UmVmcmVzaE1vbml0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Rpc3BsYXlSZWZyZXNoTW9uaXRvci5jcHAK
QEAgLTEwNSw3ICsxMDUsNyBAQCB2b2lkIERpc3BsYXlSZWZyZXNoTW9uaXRvcjo6ZGlzcGxheURp
ZFJlZnJlc2goKQogCiAgICAgLy8gVGhlIGNhbGwgYmFjayBjYW4gY2F1c2UgYWxsIG91ciBjbGll
bnRzIHRvIGJlIHVucmVnaXN0ZXJlZCwgc28gd2UgbmVlZCB0byBwcm90ZWN0CiAgICAgLy8gYWdh
aW5zdCBkZWxldGlvbiB1bnRpbCB0aGUgZW5kIG9mIHRoZSBtZXRob2QuCi0gICAgUmVmPERpc3Bs
YXlSZWZyZXNoTW9uaXRvcj4gcHJvdGVjdCgqdGhpcyk7CisgICAgUmVmPERpc3BsYXlSZWZyZXNo
TW9uaXRvcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICAvLyBDb3B5IHRoZSBoYXNoIHRh
YmxlIGFuZCByZW1vdmUgY2xpZW50cyBmcm9tIGl0IG9uZSBieSBvbmUgc28gd2UgZG9uJ3Qgbm90
aWZ5CiAgICAgLy8gYW55IGNsaWVudCB0d2ljZSwgYnV0IGNhbiByZXNwb25kIHRvIHJlbW92YWwg
b2YgY2xpZW50cyBkdXJpbmcgdGhlIGRlbGl2ZXJ5IHByb2Nlc3MuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Evd2luL0NBQ0ZMYXllclRyZWVI
b3N0LmNwcAppbmRleCBiYzMyM2EyZmY0M2Q0ZDg2N2E0MDAyMmI1ZDYxNzBlMzlmZTdmMTE3Li4x
MTUzMmFkNmQ5M2VjZTE2OGFjODdlNDhjMjU3YTBlOWRjNDVhZTA2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS93aW4vQ0FDRkxheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL3dpbi9DQUNGTGF5ZXJU
cmVlSG9zdC5jcHAKQEAgLTI4MSw3ICsyODEsNyBAQCB2b2lkIENBQ0ZMYXllclRyZWVIb3N0Ojpz
ZXRTaG91bGRJbnZlcnRDb2xvcnMoYm9vbCkKIHZvaWQgQ0FDRkxheWVyVHJlZUhvc3Q6OmZsdXNo
UGVuZGluZ0xheWVyQ2hhbmdlc05vdygpCiB7CiAgICAgLy8gQ2FsbGluZyBvdXQgdG8gdGhlIGNs
aWVudCBjb3VsZCBjYXVzZSBvdXIgbGFzdCByZWZlcmVuY2UgdG8gZ28gYXdheS4KLSAgICBSZWZQ
dHI8Q0FDRkxheWVyVHJlZUhvc3Q+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8Q0FDRkxh
eWVyVHJlZUhvc3Q+IHByb3RlY3RlZFRoaXModGhpcyk7CiAKICAgICB1cGRhdGVEZWJ1Z0luZm9M
YXllcihtX3BhZ2UtPnNldHRpbmdzKCkuc2hvd1RpbGVkU2Nyb2xsaW5nSW5kaWNhdG9yKCkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lci5j
cHAKaW5kZXggNGJjYTI0ZWY2NzFmYWNiZDViZmE5MTYxYjY5NTcwZjIwZTY4N2NmMi4uNjg0Mjk1
YjE2NDE5MTdiNTM2ZGQwNGVlYzhiMTU2NjIwMmI2NTE5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0luYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9JbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtNzQsMTQgKzc0LDE4
IEBAIHZvaWQgSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6aGFuZGxlU2FtcGxlKEdS
ZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGUpCiAgICAgICAgIG1fcGVuZGluZ1NhbXBsZXMuYXBwZW5k
KHNhbXBsZSk7CiAgICAgfQogCi0gICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3Ry
ZWFtZXI+IHByb3RlY3Rvcih0aGlzKTsKLSAgICBtX25vdGlmaWVyLm5vdGlmeShNYWluVGhyZWFk
Tm90aWZpY2F0aW9uOjpOZXdTYW1wbGUsIFtwcm90ZWN0b3JdIHsgcHJvdGVjdG9yLT5ub3RpZnlU
cmFja09mU2FtcGxlKCk7IH0pOworICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0
cmVhbWVyPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fbm90aWZpZXIubm90aWZ5KE1haW5U
aHJlYWROb3RpZmljYXRpb246Ok5ld1NhbXBsZSwgW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAgICAg
cHJvdGVjdGVkVGhpcy0+bm90aWZ5VHJhY2tPZlNhbXBsZSgpOworICAgIH0pOwogfQogCiB2b2lk
IEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI6OnN0cmVhbUNoYW5nZWQoKQogewotICAg
IFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBwcm90ZWN0b3IodGhpcyk7
Ci0gICAgbV9ub3RpZmllci5ub3RpZnkoTWFpblRocmVhZE5vdGlmaWNhdGlvbjo6U3RyZWFtQ2hh
bmdlZCwgW3Byb3RlY3Rvcl0geyBwcm90ZWN0b3ItPm5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2Vk
KCk7IH0pOworICAgIFJlZlB0cjxJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOworICAgIG1fbm90aWZpZXIubm90aWZ5KE1haW5UaHJlYWROb3RpZmlj
YXRpb246OlN0cmVhbUNoYW5nZWQsIFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAgIHByb3RlY3Rl
ZFRoaXMtPm5vdGlmeVRyYWNrT2ZTdHJlYW1DaGFuZ2VkKCk7CisgICAgfSk7CiB9CiAKIHZvaWQg
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6bm90aWZ5VHJhY2tPZlNhbXBsZSgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVu
Q29udHJvbGxlckFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQppbmRleCA2ODg5ODllM2U5MTQ2MGUwYmZhMWMy
MzZlYTE0NDQ3NjIzY2M2ODg5Li42YTU0NDYxM2MzZDZjMjQ3MGRiYzQ5MTkxMWNlM2E1OWU0Y2Mz
MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckFWS2l0Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KQEAgLTE1NCwxMiArMTU0LDEy
IEBAIHByaXZhdGU6CiB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpk
aWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlz
KTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3Rl
Y3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWluUHRyPENBTGF5ZXI+IHZpZGVvRnVsbHNjcmVlbkxh
eWVyID0gW21fdmlkZW9GdWxsc2NyZWVuVmlldyBsYXllcl07Ci0gICAgV2ViVGhyZWFkUnVuKFtz
dHJvbmdUaGlzLCB0aGlzLCB2aWRlb0Z1bGxzY3JlZW5MYXllcl0geworICAgIFdlYlRocmVhZFJ1
bihbcHJvdGVjdGVkVGhpcywgdGhpcywgdmlkZW9GdWxsc2NyZWVuTGF5ZXJdIHsKICAgICAgICAg
W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHNldEJhY2tncm91bmRDb2xvcjpjYWNoZWRDR0NvbG9yKFdl
YkNvcmU6OkNvbG9yOjp0cmFuc3BhcmVudCldOwogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1
bGxzY3JlZW5MYXllcih2aWRlb0Z1bGxzY3JlZW5MYXllci5nZXQoKSk7Ci0gICAgICAgIGRpc3Bh
dGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzXSB7
CisgICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+ZW50ZXJGdWxsc2Ny
ZWVuKCk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMTY4LDEwICsxNjgsMTAgQEAgdm9pZCBX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkU2V0dXBGdWxsc2NyZWVuKCkK
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEV4aXRGdWxsc2Ny
ZWVuKCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhy
ZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFdlYlRocmVhZFJ1
bihbcHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICBtX21vZGVsLT5zZXRWaWRlb0Z1bGxz
Y3JlZW5MYXllcihuaWwpOwotICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10geworICAgICAgICBkaXNwYXRjaF9hc3luYyhk
aXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAg
ICAgICAgbV9pbnRlcmZhY2UtPmNsZWFudXBGdWxsc2NyZWVuKCk7CiAgICAgICAgIH0pOwogICAg
IH0pOwpAQCAtMTg1LDggKzE4NSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ6OmRpZENsZWFudXBGdWxsc2NyZWVuKCkKICAgICBtX2ludGVyZmFjZSA9IG51bGxw
dHI7CiAgICAgbV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gbmlsOwogICAgIAotICAgIFJlZlB0cjxX
ZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAg
ICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMsIHRoaXNdIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgV2Vi
VGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgIG1fbW9kZWwtPnNldFZp
ZGVvRnVsbHNjcmVlbkxheWVyKG5pbCk7CiAgICAgICAgIG1fbW9kZWwtPnNldFdlYlZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZShudWxscHRyKTsKICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9FbGVt
ZW50KG51bGxwdHIpOwpAQCAtMjAwLDEwICsyMDAsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKQogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1heVJldHVyblRvSW5saW5l
KCkKIHsKICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgV2ViVGhyZWFk
UnVuKFtzdHJvbmdUaGlzLCB0aGlzXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFdlYlRocmVhZFJ1bihb
cHJvdGVjdGVkVGhpcywgdGhpc10gewogICAgICAgICBJbnRSZWN0IGNsaWVudFJlY3QgPSBlbGVt
ZW50UmVjdEluV2luZG93KG1fdmlkZW9FbGVtZW50LmdldCgpKTsKLSAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGNsaWVu
dFJlY3RdIHsKKyAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGNsaWVudFJlY3RdIHsKICAgICAgICAgICAgIG1faW50
ZXJmYWNlLT5wcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUodHJ1ZSwgY2xpZW50UmVjdCk7CiAgICAg
ICAgIH0pOwogICAgIH0pOwpAQCAtMjE0LDggKzIxNCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgpCiB2b2lk
IFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQog
ewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSB8fCBpc01haW5UaHJlYWQoKSk7Ci0g
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlz
KHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtz
dHJvbmdUaGlzLCB0aGlzXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzXSB7CiAgICAgICAgIGlm
IChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5yZXNldE1lZGlhU3RhdGUo
KTsKICAgICB9KTsKQEAgLTIyNCw4ICsyMjQsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXNldE1lZGlhU3RhdGUoKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6c2V0RHVyYXRpb24oZG91YmxlIGR1cmF0aW9uKQogewogICAg
IEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2Fz
eW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBkdXJhdGlv
bl0geworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgZHVyYXRpb25dIHsKICAgICAgICAgaWYgKG1f
aW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldER1cmF0aW9uKGR1cmF0aW9u
KTsKICAgICB9KTsKQEAgLTIzNCw4ICsyMzQsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpzZXREdXJhdGlvbihkb3VibGUgZHVyYXRpb24pCiB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRDdXJyZW50VGltZShkb3VibGUgY3Vy
cmVudFRpbWUsIGRvdWJsZSBhbmNob3JUaW1lKQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1
cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBjdXJyZW50VGltZSwgYW5jaG9yVGltZV0gewor
ICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcywgdGhpcywgY3VycmVudFRpbWUsIGFuY2hvclRpbWVdIHsKICAgICAg
ICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEN1cnJlbnRU
aW1lKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKICAgICB9KTsKQEAgLTI0NCw4ICsyNDQsOCBA
QCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRDdXJyZW50VGlt
ZShkb3VibGUgY3VycmVudFRpbWUsIGRvdQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dDo6c2V0QnVmZmVyZWRUaW1lKGRvdWJsZSBidWZmZXJlZFRpbWUpCiB7CiAgICAg
QVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5
bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGJ1ZmZlcmVk
VGltZV0geworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4g
cHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpcywgYnVmZmVyZWRUaW1lXSB7CiAgICAgICAg
IGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRCdWZmZXJlZFRp
bWUoYnVmZmVyZWRUaW1lKTsKICAgICB9KTsKQEAgLTI1NCw4ICsyNTQsOCBAQCB2b2lkIFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRCdWZmZXJlZFRpbWUoZG91YmxlIGJ1
ZmZlcmVkVGltZSkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFJhdGUoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKICAgICBBU1NFUlQo
V2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250
cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgaXNQbGF5aW5nLCBwbGF5
YmFja1JhdGVdIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIGlzUGxheWluZywgcGxheWJhY2tS
YXRlXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50ZXJmYWNl
LT5zZXRSYXRlKGlzUGxheWluZywgcGxheWJhY2tSYXRlKTsKICAgICB9KTsKQEAgLTI2NCw4ICsy
NjQsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRSYXRl
KGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFjawogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9EaW1lbnNpb25zKGJvb2wgaGFzVmlkZW8sIGZsb2F0
IHdpZHRoLCBmbG9hdCBoZWlnaHQpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgp
KTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9u
Z1RoaXModGhpcyk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0XSB7CisgICAgUmVm
UHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRo
aXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90
ZWN0ZWRUaGlzLCB0aGlzLCBoYXNWaWRlbywgd2lkdGgsIGhlaWdodF0gewogICAgICAgICBpZiAo
bV9pbnRlcmZhY2UpCiAgICAgICAgICAgICBtX2ludGVyZmFjZS0+c2V0VmlkZW9EaW1lbnNpb25z
KGhhc1ZpZGVvLCB3aWR0aCwgaGVpZ2h0KTsKICAgICB9KTsKQEAgLTI3NCw5ICsyNzQsOSBAQCB2
b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRWaWRlb0RpbWVuc2lv
bnMoYm9vbCBoYXNWaWRlbywgZmxvYQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMoY29uc3QgVGltZVJhbmdlcyYgdGltZVJhbmdlcykK
IHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQ
dHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhp
cyk7CiAgICAgY29uc3QgUGxhdGZvcm1UaW1lUmFuZ2VzJiBwbGF0Zm9ybVRpbWVSYW5nZXMgPSB0
aW1lUmFuZ2VzLnJhbmdlcygpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtzdHJvbmdUaGlzLCB0aGlzLCBwbGF0Zm9ybVRpbWVSYW5nZXNdIHsKKyAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywg
dGhpcywgcGxhdGZvcm1UaW1lUmFuZ2VzXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT5zZXRTZWVrYWJsZVJhbmdlcyhUaW1lUmFuZ2VzOjpjcmVh
dGUocGxhdGZvcm1UaW1lUmFuZ2VzKSk7CiAgICAgfSk7CkBAIC0yODUsOCArMjg1LDggQEAgdm9p
ZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0U2Vla2FibGVSYW5nZXMo
Y29uc3QgVGltZVJhbmdlcyYgdGkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ6OnNldENhblBsYXlGYXN0UmV2ZXJzZShib29sIGNhblBsYXlGYXN0UmV2ZXJzZSkKIHsK
ICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1
bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRj
aF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY2Fu
UGxheUZhc3RSZXZlcnNlXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3Bh
dGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBjYW5QbGF5RmFzdFJl
dmVyc2VdIHsKICAgICAgICAgaWYgKG1faW50ZXJmYWNlKQogICAgICAgICAgICAgbV9pbnRlcmZh
Y2UtPnNldENhblBsYXlGYXN0UmV2ZXJzZShjYW5QbGF5RmFzdFJldmVyc2UpOwogICAgIH0pOwpA
QCAtMjk1LDEzICsyOTUsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6c2V0Q2FuUGxheUZhc3RSZXZlcnNlKGJvb2wgY2FuUGxheUZhc3QKIHZvaWQgV2ViVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRp
b25zKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBvcHRpb25zLCB1aW50NjRfdCBzZWxlY3RlZEluZGV4
KQogewogICAgIEFTU0VSVChXZWJUaHJlYWRJc0N1cnJlbnQoKSk7Ci0gICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJl
ZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb3B0aW9uc0FycmF5ID0gYWRv
cHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9wdGlvbnMuc2l6
ZSgpXSk7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykKICAgICAgICAgW29wdGlvbnNB
cnJheSBhZGRPYmplY3Q6bmFtZV07CiAgICAgCi0gICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIG9wdGlvbnNBcnJheSwgc2VsZWN0
ZWRJbmRleF0geworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBvcHRpb25zQXJyYXksIHNlbGVjdGVkSW5kZXhdIHsKICAg
ICAgICAgVmVjdG9yPFN0cmluZz4gb3B0aW9uczsKICAgICAgICAgZm9yIChOU1N0cmluZyAqbmFt
ZSA6IG9wdGlvbnNBcnJheS5nZXQoKSkKICAgICAgICAgICAgIG9wdGlvbnMuYXBwZW5kKG5hbWUp
OwpAQCAtMzE0LDEzICszMTQsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QgVmUKIHZvaWQgV2Vi
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlv
bk9wdGlvbnMoY29uc3QgVmVjdG9yPFN0cmluZz4mIG9wdGlvbnMsIHVpbnQ2NF90IHNlbGVjdGVk
SW5kZXgpCiB7CiAgICAgQVNTRVJUKFdlYlRocmVhZElzQ3VycmVudCgpKTsKLSAgICBSZWZQdHI8
V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHN0cm9uZ1RoaXModGhpcyk7Cisg
ICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOwogICAgIAogICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheT4gb3B0aW9uc0Fy
cmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5Om9w
dGlvbnMuc2l6ZSgpXSk7CiAgICAgZm9yIChhdXRvJiBuYW1lIDogb3B0aW9ucykKICAgICAgICAg
W29wdGlvbnNBcnJheSBhZGRPYmplY3Q6bmFtZV07CiAgICAgCi0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIG9wdGlvbnNBcnJh
eSwgc2VsZWN0ZWRJbmRleF0geworICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWlu
X3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBvcHRpb25zQXJyYXksIHNlbGVjdGVkSW5k
ZXhdIHsKICAgICAgICAgVmVjdG9yPFN0cmluZz4gb3B0aW9uczsKICAgICAgICAgZm9yIChOU1N0
cmluZyAqbmFtZSA6IG9wdGlvbnNBcnJheS5nZXQoKSkKICAgICAgICAgICAgIG9wdGlvbnMuYXBw
ZW5kKG5hbWUpOwpAQCAtMzMzLDkgKzMzMyw5IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29u
dHJvbGxlckNvbnRleHQ6OnNldExlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoY29uc3QKIHZv
aWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldEV4dGVybmFsUGxheWJh
Y2soYm9vbCBlbmFibGVkLCBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0eXBlLCBTdHJpbmcg
bG9jYWxpemVkRGV2aWNlTmFtZSkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25n
VGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRl
eHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZExvY2Fs
aXplZERldmljZU5hbWUobG9jYWxpemVkRGV2aWNlTmFtZSk7Ci0gICAgZGlzcGF0Y2hfYXN5bmMo
ZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3N0cm9uZ1RoaXMsIHRoaXMsIGVuYWJsZWQsIHR5
cGUsIGNhcHR1cmVkTG9jYWxpemVkRGV2aWNlTmFtZV0geworICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBlbmFibGVkLCB0
eXBlLCBjYXB0dXJlZExvY2FsaXplZERldmljZU5hbWVdIHsKICAgICAgICAgaWYgKG1faW50ZXJm
YWNlKQogICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnNldEV4dGVybmFsUGxheWJhY2soZW5hYmxl
ZCwgdHlwZSwgY2FwdHVyZWRMb2NhbGl6ZWREZXZpY2VOYW1lLnN0cmluZygpKTsKICAgICB9KTsK
QEAgLTM0NCw4ICszNDQsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRFeHRlcm5hbFBsYXliYWNrKGJvb2wgZW5hYmxlZCwgRXh0ZQogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlz
YWJsZWQoYm9vbCBkaXNhYmxlZCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkp
OwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gc3Ryb25n
VGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbc3Ryb25nVGhpcywgdGhpcywgZGlzYWJsZWRdIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgZGlzcGF0
Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMs
IGRpc2FibGVkXSB7CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSkKICAgICAgICAgICAgIG1faW50
ZXJmYWNlLT5zZXRXaXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZChkaXNhYmxlZCk7CiAgICAg
fSk7CkBAIC0zNTYsOCArMzU2LDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6c2V0V2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoYm9vbAogdm9pZCBXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhU
TUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFT
U0VSVChpc1VJVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1Ro
aXMsIHRoaXMsIG1vZGVdIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxl
ckNvbnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0
ZWRUaGlzLCB0aGlzLCBtb2RlXSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAg
bV9tb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKG1vZGUpOwogICAgIH0pOwpAQCAtMzY2LDEz
ICszNjYsMTMgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6cmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnQKIHZvaWQgV2ViVmlkZW9GdWxsc2Ny
ZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFZpZGVvTGF5ZXJGcmFtZShGbG9hdFJlY3QgZnJhbWUp
CiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRoaXMpOworICAgIFJlZlB0cjxXZWJW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAg
ICBSZXRhaW5QdHI8Q0FMYXllcj4gdmlkZW9GdWxsc2NyZWVuTGF5ZXIgPSBbbV92aWRlb0Z1bGxz
Y3JlZW5WaWV3IGxheWVyXTsKICAgICAKICAgICBbdmlkZW9GdWxsc2NyZWVuTGF5ZXIgc2V0U3Vi
bGF5ZXJUcmFuc2Zvcm06W3ZpZGVvRnVsbHNjcmVlbkxheWVyIHRyYW5zZm9ybV1dOwogCiAgICAg
ZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKLSAgICAgICAgV2Vi
VGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0aGlzLCBmcmFtZSwgdmlkZW9GdWxsc2NyZWVuTGF5ZXJd
IHsKKyAgICAgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCBmcmFtZSwgdmlk
ZW9GdWxsc2NyZWVuTGF5ZXJdIHsKICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsK
ICAgICAgICAgICAgIFtDQVRyYW5zYWN0aW9uIHNldERpc2FibGVBY3Rpb25zOllFU107CiAgICAg
ICAgICAgICBbQ0FUcmFuc2FjdGlvbiBzZXRBbmltYXRpb25EdXJhdGlvbjowXTsKQEAgLTM4OSw4
ICszODksOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpzZXRW
aWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0IGZyYW1lKQogdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dDo6c2V0VmlkZW9MYXllckdyYXZpdHkoV2ViVmlkZW9GdWxsc2NyZWVu
TW9kZWw6OlZpZGVvR3Jhdml0eSB2aWRlb0dyYXZpdHkpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJl
YWQoKSk7Ci0gICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBz
dHJvbmdUaGlzKHRoaXMpOwotICAgIFdlYlRocmVhZFJ1bihbc3Ryb25nVGhpcywgdGhpcywgdmlk
ZW9HcmF2aXR5XSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhp
cywgdGhpcywgdmlkZW9HcmF2aXR5XSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAg
ICAgbV9tb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHkodmlkZW9HcmF2aXR5KTsKICAgICB9KTsK
QEAgLTM5OSw4ICszOTksOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRWaWRlb0xheWVyR3Jhdml0eShXZWJWaWRlb0Z1bGxzY3JlZQogdm9pZCBXZWJWaWRl
b0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKEhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBtb2RlKQogewogICAgIEFTU0VS
VChpc1VJVGhyZWFkKCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBXZWJUaHJlYWRSdW4oW3N0cm9uZ1RoaXMs
IHRoaXMsIG1vZGVdIHsKKyAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAgV2ViVGhyZWFkUnVuKFtwcm90ZWN0ZWRU
aGlzLCB0aGlzLCBtb2RlXSB7CiAgICAgICAgIGlmIChtX21vZGVsKQogICAgICAgICAgICAgbV9t
b2RlbC0+ZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKG1vZGUpOwogICAgIH0pOwpAQCAtNDIwLDggKzQy
MCw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNldFVwRnVs
bHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgUmV0YWluUHRyPFVJVmlldz4gdmll
d1JlZiA9IHZpZXc7CiAgICAgbV92aWRlb0VsZW1lbnQgPSAmdmlkZW9FbGVtZW50OwogCi0gICAg
UmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0PiBzdHJvbmdUaGlzKHRo
aXMpOwotICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtzdHJv
bmdUaGlzLCB0aGlzLCB2aWV3UmVmLCBtb2RlXSB7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgIGRpc3BhdGNo
X2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2
aWV3UmVmLCBtb2RlXSB7CiAgICAgICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogCiAgICAgICAg
IG1faW50ZXJmYWNlID0gV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNyZWF0ZShX
ZWJQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKCkuZ2V0KCkpOwpAQCAtNDI5
LDggKzQyOSw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnNl
dFVwRnVsbHNjcmVlbihIVE1MVmlkZW9FbGVtZW50JiB2aWRlCiAgICAgICAgIG1faW50ZXJmYWNl
LT5zZXRXZWJWaWRlb0Z1bGxzY3JlZW5Nb2RlbCh0aGlzKTsKICAgICAgICAgbV92aWRlb0Z1bGxz
Y3JlZW5WaWV3ID0gYWRvcHROUyhbW2dldFVJVmlld0NsYXNzKCkgYWxsb2NdIGluaXRdKTsKICAg
ICAgICAgCi0gICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICAgICAgV2ViVGhyZWFkUnVuKFtzdHJvbmdUaGlzLCB0
aGlzLCB2aWV3UmVmLCBtb2RlXSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5D
b250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgV2ViVGhyZWFk
UnVuKFtwcm90ZWN0ZWRUaGlzLCB0aGlzLCB2aWV3UmVmLCBtb2RlXSB7CiAgICAgICAgICAgICBt
X21vZGVsID0gV2ViVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmNyZWF0ZShXZWJQ
bGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6Y3JlYXRlKCkuZ2V0KCkpOwogICAgICAg
ICAgICAgbV9tb2RlbC0+c2V0V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlKHRoaXMpOwogICAg
ICAgICAgICAgbV9tb2RlbC0+c2V0VmlkZW9FbGVtZW50KG1fdmlkZW9FbGVtZW50LmdldCgpKTsK
QEAgLTQ0MSw3ICs0NDEsNyBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250
ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZQogICAgICAgICAgICAg
RmxvYXRSZWN0IHZpZGVvTGF5ZXJGcmFtZSA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCksIHZpZGVv
RWxlbWVudENsaWVudFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIG1fbW9kZWwtPnNldFZpZGVv
TGF5ZXJGcmFtZSh2aWRlb0xheWVyRnJhbWUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBk
aXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhp
cywgdmlkZW9FbGVtZW50Q2xpZW50UmVjdCwgdmlld1JlZiwgbW9kZSwgYWxsb3dzUGljdHVyZUlu
UGljdHVyZV0geworICAgICAgICAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5f
cXVldWUoKSwgW3Byb3RlY3RlZFRoaXMsIHRoaXMsIHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZp
ZXdSZWYsIG1vZGUsIGFsbG93c1BpY3R1cmVJblBpY3R1cmVdIHsKICAgICAgICAgICAgICAgICBt
X2ludGVyZmFjZS0+c2V0dXBGdWxsc2NyZWVuKCptX3ZpZGVvRnVsbHNjcmVlblZpZXcuZ2V0KCks
IHZpZGVvRWxlbWVudENsaWVudFJlY3QsIHZpZXdSZWYuZ2V0KCksIG1vZGUsIGFsbG93c1BpY3R1
cmVJblBpY3R1cmUpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtNDUyLDggKzQ1
Miw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmV4aXRGdWxs
c2NyZWVuKCkKIHsKICAgICBBU1NFUlQoV2ViVGhyZWFkSXNDdXJyZW50KCkgfHwgaXNNYWluVGhy
ZWFkKCkpOwogICAgIEludFJlY3QgY2xpZW50UmVjdCA9IGVsZW1lbnRSZWN0SW5XaW5kb3cobV92
aWRlb0VsZW1lbnQuZ2V0KCkpOwotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9s
bGVyQ29udGV4dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRj
aF9nZXRfbWFpbl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpcywgY2xpZW50UmVjdF0geworICAg
IFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKKyAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBb
cHJvdGVjdGVkVGhpcywgdGhpcywgY2xpZW50UmVjdF0gewogICAgICAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKICAgICAgICAgbV9pbnRlcmZhY2UtPmV4aXRGdWxsc2NyZWVuKGNsaWVudFJlY3Qp
OwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGExNzRjMTViYmE1
NDFmZGJiMmZhY2E1YzVlNGVjMzg4MGZmYzg1M2IuLjI2NDczNmIyNjI4NDE2ZjIwZTQ3NTAzNGQx
NTRmMmMyYjMzZjk5YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9X
ZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQubW0KQEAgLTYwNyw4
ICs2MDcsOCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjphcHBsaWNh
dGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAgICAgLy8gSWYgd2UgYXJlIGJvdGggaW4gUGlQIGFuZCBp
biBGdWxsc2NyZWVuIChpLmUuLCB2aWEgYXV0by1QaVApLCBhbmQgd2UgZGlkIG5vdCBzdG9wIGZ1
bGxzY3JlZW4gdXBvbiByZXR1cm5pbmcsIGl0IG11c3QgYmUKICAgICAvLyBiZWNhdXNlIHRoZSBv
cmlnaW5hdGluZyB2aWV3IGlzIG5vdCB2aXNpYmxlLCBzbyBoaWRlIHRoZSBmdWxsc2NyZWVuIHdp
bmRvdy4KICAgICBpZiAoaXNNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVN0YW5kYXJkIHwgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5N
b2RlUGljdHVyZUluUGljdHVyZSkpIHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlzKHRoaXMpOwotICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltz
dHJvbmdUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKKyAgICAgICAgUmVmUHRyPFdlYlZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAg
ICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBs
ZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKICAg
ICAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKICAgICAgICAgICAgIFtbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKICAgICAgICAgfV07CkBAIC02
OTEsOCArNjkxLDggQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0
dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdAogCiAgICAgW0NBVHJhbnNhY3Rp
b24gY29tbWl0XTsKIAotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gc3Ryb25nVGhpcyh0aGlzKTsKLSAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbc3Ryb25nVGhpcywgdGhpc10geworICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcywgdGhpc10gewog
ICAgICAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIpCiAgICAgICAgICAgICBtX2Z1
bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkU2V0dXBGdWxsc2NyZWVuKCk7CiAgICAgfSk7CkBA
IC03MjgsNyArNzI4LDcgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
ZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwg
IldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFuZGFy
ZCglcCkiLCB0aGlzKTsKLSAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ+IHN0cm9uZ1RoaXModGhpcyk7CisgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgaWYgKFttX3BsYXllclZpZXdD
b250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZV0pIHsKICAgICAgICAgLy8gTk9URTog
VGhlIGZ1bGxzY3JlZW4gbW9kZSB3aWxsIGJlIHJlc3RvcmVkIGluIHByZXBhcmVGb3JQaWN0dXJl
SW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcigpLgpAQCAtNzM4LDcgKzczOCw3IEBA
IHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVudGVyRnVsbHNjcmVlblN0
YW5kYXJkKCkKICAgICB9CiAKICAgICBbbV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENv
bG9yOltnZXRVSUNvbG9yQ2xhc3MoKSBibGFja0NvbG9yXV07Ci0gICAgW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOlt0
aGlzLCBzdHJvbmdUaGlzXSAoQk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IqKSB7CisgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25I
YW5kbGVyOlt0aGlzLCBwcm90ZWN0ZWRUaGlzXSAoQk9PTCBzdWNjZWVkZWQsIE5TRXJyb3IqKSB7
CiAgICAgICAgIFVOVVNFRF9QQVJBTShzdWNjZWVkZWQpOwogICAgICAgICBMT0coRnVsbHNjcmVl
biwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW5TdGFu
ZGFyZCAtIGxhbWJkYSglcCkgLSBzdWNjZWVkZWQoJXMpIiwgdGhpcywgYm9vbFN0cmluZyhzdWNj
ZWVkZWQpKTsKICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc2V0U2hvd3NQbGF5YmFj
a0NvbnRyb2xzOllFU107CkBAIC03NzMsMTQgKzc3MywxNCBAQCB2b2lkIFdlYlZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUFWS2l0OjpleGl0RnVsbHNjcmVlbihjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBmaQogICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKICAgICAgICAgW21fcGxheWVy
Vmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOwogICAgIH0gZWxzZSBpZiAoaXNN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBp
Y3R1cmUgfCBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFy
ZCkpIHsKLSAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBz
dHJvbmdUaGlzKHRoaXMpOwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVs
bFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltzdHJvbmdUaGlzLCB0aGlzXSAo
Qk9PTCwgTlNFcnJvciopIHsKKyAgICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltwcm90
ZWN0ZWRUaGlzLCB0aGlzXSAoQk9PTCwgTlNFcnJvciopIHsKICAgICAgICAgICAgIFttX3dpbmRv
dyBzZXRIaWRkZW46Tk9dOwogICAgICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgc3Rv
cFBpY3R1cmVJblBpY3R1cmVdOwogICAgICAgICB9XTsKICAgICB9IGVsc2UgaWYgKGlzTW9kZShI
VE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCkpIHsKLSAg
ICAgICAgUmVmUHRyPFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBzdHJvbmdUaGlz
KHRoaXMpOwotICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFu
aW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbc3Ryb25nVGhpcywgdGhpc10gKEJPT0wsIE5T
RXJyb3IqKSB7CisgICAgICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIg
ZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRo
aXMsIHRoaXNdIChCT09MLCBOU0Vycm9yKikgewogICAgICAgICAgICAgbV9leGl0Q29tcGxldGVk
ID0gdHJ1ZTsKIAogICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOwpAQCAtOTA3LDgg
KzkwNyw4IEBAIHZvaWQgV2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0
UGljdHVyZUluUGljdHVyZSgpCiAKICAgICBpZiAobV9tb2RlICYgSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlU3RhbmRhcmQpIHsKICAgICAgICAgaWYgKCFbbV9wbGF5
ZXJWaWV3Q29udHJvbGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0Jh
Y2tncm91bmRdKSB7Ci0gICAgICAgICAgICBSZWZQdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ+IHN0cm9uZ1RoaXModGhpcyk7Ci0gICAgICAgICAgICBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpbc3Ry
b25nVGhpcywgdGhpc10gKEJPT0wsIE5TRXJyb3IqKSB7CisgICAgICAgICAgICBSZWZQdHI8V2Vi
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CisgICAg
ICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOllF
UyBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcywgdGhpc10gKEJPT0wsIE5TRXJyb3Iq
KSB7CiAgICAgICAgICAgICAgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOwogICAgICAgICAg
ICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKICAg
ICAgICAgICAgIH1dOwpAQCAtOTk2LDEwICs5OTYsMTAgQEAgdm9pZCBXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBs
ZXQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0cjxXZWJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdD4gc3Ryb25nVGhpcyh0aGlzKTsKKyAgICBSZWZQdHI8V2ViVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgUmV0YWlu
UHRyPGlkPiBzdHJvbmdDb21wbGV0aW9uSGFuZGxlciA9IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5k
bGVyIGNvcHldKTsKLSAgICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoW3N0cm9uZ1RoaXMs
IHN0cm9uZ0NvbXBsZXRpb25IYW5kbGVyXShib29sIHJlc3RvcmVkKSAgewotICAgICAgICBMT0co
RnVsbHNjcmVlbiwgIldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9y
UGljdHVyZUluUGljdHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFtYmRhKCVwKSAtIHJl
c3RvcmVkKCVzKSIsIHN0cm9uZ1RoaXMuZ2V0KCksIGJvb2xTdHJpbmcocmVzdG9yZWQpKTsKKyAg
ICBmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoW3Byb3RlY3RlZFRoaXMsIHN0cm9uZ0NvbXBs
ZXRpb25IYW5kbGVyXShib29sIHJlc3RvcmVkKSAgeworICAgICAgICBMT0coRnVsbHNjcmVlbiwg
IldlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlRm9yUGljdHVyZUluUGlj
dHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIgbGFtYmRhKCVwKSAtIHJlc3RvcmVkKCVzKSIs
IHByb3RlY3RlZFRoaXMuZ2V0KCksIGJvb2xTdHJpbmcocmVzdG9yZWQpKTsKICAgICAgICAgdm9p
ZCAoXmNvbXBsZXRpb25IYW5kbGVyKShCT09MIHJlc3RvcmVkKSA9IHN0cm9uZ0NvbXBsZXRpb25I
YW5kbGVyLmdldCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN0b3JlZCk7CiAgICAg
fSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1t
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQppbmRleCA1YmEyODIx
YjcwYjljMjUyNGM2MTYwYTI3OTVmNDk0M2NhNTRmM2IzLi4wZTc3ODdkMDIzNmYyNjA5Yzg1Mzk2
YWM0YjNkNjBiNzc4MmRhYjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2lkZ2V0TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRN
YWMubW0KQEAgLTE2MCw3ICsxNjAsNyBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNvbnN0
IEludFJlY3QmIHJlY3QpCiAKICAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0
LCBiZWNhdXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gb3V0ZXJWaWV3IGNhbiBpbnZva2UgYXJiaXRy
YXJ5CiAgICAgLy8gY29kZSBpbmNsdWRpbmcgcmVjYWxjIHN0eWxlL2xheW91dCwgd2hpY2ggY2Fu
IGRlcmVmIGl0LgotICAgIFJlZjxXaWRnZXQ+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXaWRn
ZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTlNSZWN0IGZyYW1lID0gcmVjdDsKICAg
ICBpZiAoIU5TRXF1YWxSZWN0cyhmcmFtZSwgb3V0ZXJWaWV3LmZyYW1lKSkgewpAQCAtMjA0LDcg
KzIwNCw3IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQmIHAsIGNvbnN0IElu
dFJlY3QmIHIpCiAKICAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0LCBiZWNh
dXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIHZpZXdzIGNhbiBpbnZva2UgYXJiaXRyYXJ5CiAg
ICAgLy8gY29kZSwgd2hpY2ggY2FuIGRlcmVmIGl0LgotICAgIFJlZjxXaWRnZXQ+IHByb3RlY3Qo
KnRoaXMpOworICAgIFJlZjxXaWRnZXQ+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgTlNH
cmFwaGljc0NvbnRleHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1cnJl
bnRDb250ZXh0XTsKICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gW1t2aWV3IHdpbmRvd10gZ3Jh
cGhpY3NDb250ZXh0XSB8fCAhW2N1cnJlbnRDb250ZXh0IGlzRHJhd2luZ1RvU2NyZWVuXSkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCmluZGV4IGNmYWUyMzM4NzA5YjczNDNlZDI5ODc5MzVjZGIyNmM0YWI2MmZkNzIu
LjUzZWIyNWEwNGQxMTRiYjBjYzU4ZGE3ZmViMTViYmExZjdjNzQ1OTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAK
QEAgLTE4NywxMSArMTg3LDExIEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpzdGFydCgpCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBo
YW5kbGUodGhpcyk7CisgICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhp
cyh0aGlzKTsKIAogICAgIC8vIEZpbmlzaCB0aGlzIGFzeW5jIGNhbGwgcXVpY2tseSBhbmQgcmV0
dXJuLgotICAgIGNhbGxPbk1haW5UaHJlYWQoW2hhbmRsZV0gewotICAgICAgICBoYW5kbGUtPmRv
U3RhcnQoKTsKKyAgICBjYWxsT25NYWluVGhyZWFkKFtwcm90ZWN0ZWRUaGlzXSB7CisgICAgICAg
IHByb3RlY3RlZFRoaXMtPmRvU3RhcnQoKTsKICAgICB9KTsKIH0KIApAQCAtMjI3LDcgKzIyNyw3
IEBAIHZvaWQgQmxvYlJlc291cmNlSGFuZGxlOjpkb1N0YXJ0KCkKICAgICBpZiAobV9hc3luYykK
ICAgICAgICAgZ2V0U2l6ZUZvck5leHQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgUmVmPEJsb2JS
ZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7IC8vIGdldFNpemVGb3JOZXh0IGNhbGxzIHRo
ZSBjbGllbnQKKyAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygq
dGhpcyk7IC8vIGdldFNpemVGb3JOZXh0IGNhbGxzIHRoZSBjbGllbnQKICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtX2Jsb2JEYXRhLT5pdGVtcygpLnNpemUoKSAmJiAhbV9hYm9ydGVk
ICYmICFtX2Vycm9yQ29kZTsgKytpKQogICAgICAgICAgICAgZ2V0U2l6ZUZvck5leHQoKTsKICAg
ICAgICAgbm90aWZ5UmVzcG9uc2UoKTsKQEAgLTI0NCw3ICsyNDQsNyBAQCB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6Z2V0U2l6ZUZvck5leHQoKQogCiAgICAgICAgIC8vIFN0YXJ0IHJlYWRpbmcg
aWYgaW4gYXN5bmNocm9ub3VzIG1vZGUuCiAgICAgICAgIGlmIChtX2FzeW5jKSB7Ci0gICAgICAg
ICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICAgICAgICAg
IFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgICAgICAg
ICAgbm90aWZ5UmVzcG9uc2UoKTsKICAgICAgICAgICAgIG1fYnVmZmVyLnJlc2l6ZShidWZmZXJT
aXplKTsKICAgICAgICAgICAgIHJlYWRBc3luYygpOwpAQCAtMzM2LDcgKzMzNiw3IEBAIGludCBC
bG9iUmVzb3VyY2VIYW5kbGU6OnJlYWRTeW5jKGNoYXIqIGJ1ZiwgaW50IGxlbmd0aCkKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCiAgICAgQVNTRVJUKCFtX2FzeW5jKTsKLSAgICBSZWY8
QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8QmxvYlJlc291cmNl
SGFuZGxlPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGludCBvZmZzZXQgPSAwOwogICAg
IGludCByZW1haW5pbmcgPSBsZW5ndGg7CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBCbG9iUmVz
b3VyY2VIYW5kbGU6OnJlYWREYXRhQXN5bmMoY29uc3QgQmxvYkRhdGFJdGVtJiBpdGVtKQogICAg
IEFTU0VSVChtX2FzeW5jKTsKICAgICBBU1NFUlQoaXRlbS5kYXRhKCkuZGF0YSgpKTsKIAotICAg
IFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCbG9iUmVz
b3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgbG9uZyBsb25nIGJ5dGVz
VG9SZWFkID0gaXRlbS5sZW5ndGgoKSAtIG1fY3VycmVudEl0ZW1SZWFkU2l6ZTsKICAgICBpZiAo
Ynl0ZXNUb1JlYWQgPiBtX3RvdGFsUmVtYWluaW5nU2l6ZSkKQEAgLTUxOSw3ICs1MTksNyBAQCB2
b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6ZGlkUmVhZChpbnQgYnl0ZXNSZWFkKQogdm9pZCBCbG9i
UmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1Jl
YWQpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwotICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogCiAgICAgbV90b3RhbFJlbWFpbmluZ1NpemUgLT0gYnl0ZXNSZWFkOwogCkBA
IC01NDksNyArNTQ5LDcgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5kbGU6OmNvbnN1bWVEYXRhKGNv
bnN0IGNoYXIqIGRhdGEsIGludCBieXRlc1JlYWQpCiB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6
ZmFpbGVkKGludCBlcnJvckNvZGUpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwotICAgIFJlZjxC
bG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxCbG9iUmVzb3VyY2VI
YW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCiAgICAgLy8gTm90aWZ5IHRoZSBjbGllbnQu
CiAgICAgbm90aWZ5RmFpbChlcnJvckNvZGUpOwpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgQmxv
YlJlc291cmNlSGFuZGxlOjpub3RpZnlSZXNwb25zZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmIChtX2Vycm9yQ29kZSkgewotICAgICAgICBSZWY8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90
ZWN0KCp0aGlzKTsKKyAgICAgICAgUmVmPEJsb2JSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhp
cygqdGhpcyk7CiAgICAgICAgIG5vdGlmeVJlc3BvbnNlT25FcnJvcigpOwogICAgICAgICBub3Rp
ZnlGaW5pc2goKTsKICAgICB9IGVsc2UKQEAgLTY2NSw5ICs2NjUsOSBAQCB2b2lkIEJsb2JSZXNv
dXJjZUhhbmRsZTo6bm90aWZ5RmluaXNoKCkKIAogICAgIC8vIFNjaGVkdWxlIHRvIG5vdGlmeSB0
aGUgY2xpZW50IGZyb20gYSBzdGFuZGFsb25lIGZ1bmN0aW9uIGJlY2F1c2UgdGhlIGNsaWVudCBt
aWdodCBkaXNwb3NlIHRoZSBoYW5kbGUgaW1tZWRpYXRlbHkgZnJvbSB0aGUgY2FsbGJhY2sgZnVu
Y3Rpb24KICAgICAvLyB3aGlsZSB3ZSBzdGlsbCBoYXZlIEJsb2JSZXNvdXJjZUhhbmRsZSBjYWxs
cyBpbiB0aGUgc3RhY2suCi0gICAgUmVmUHRyPEJsb2JSZXNvdXJjZUhhbmRsZT4gaGFuZGxlKHRo
aXMpOwotICAgIGNhbGxPbk1haW5UaHJlYWQoW2hhbmRsZV0gewotICAgICAgICBkb05vdGlmeUZp
bmlzaCgqaGFuZGxlKTsKKyAgICBSZWZQdHI8QmxvYlJlc291cmNlSGFuZGxlPiBwcm90ZWN0ZWRU
aGlzKHRoaXMpOworICAgIGNhbGxPbk1haW5UaHJlYWQoW3Byb3RlY3RlZFRoaXNdIHsKKyAgICAg
ICAgZG9Ob3RpZnlGaW5pc2goKnByb3RlY3RlZFRoaXMpOwogICAgIH0pOwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZO
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGTmV0LmNwcAppbmRleCBjOTVhNjU4MjNhYjk3MjY3OWMxNjliNmJkMGI4NzUxOGM2MTc4ZWQw
Li45MDZlNjY5MTA3YmNjYjhlYmQ4MjViMmI4YzljODAyNGRhNjlmMzM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKQEAgLTMxNCw3ICszMTQsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlOjp3aWxsU2Vu
ZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcwogICAg
ICAgICB9CiAgICAgfQogCi0gICAgUmVmPFJlc291cmNlSGFuZGxlPiBwcm90ZWN0KCp0aGlzKTsK
KyAgICBSZWY8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIGlmIChk
LT5tX3VzZXNBc3luY0NhbGxiYWNrcykKICAgICAgICAgY2xpZW50KCktPndpbGxTZW5kUmVxdWVz
dEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIGVsc2UgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRs
ZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZS5jcHAKaW5kZXggOTRkNWU5NTQ3MmNjNDc1ZjJlY2Q3
YjMzNzViMTFkMzdhN2U2NWUzNy4uZGFmOTNkYzg0OGJjMTU4ZDQ3ZTdlYTRhZTBlYmRjMjI3NWRm
YTI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWUuY3BwCkBAIC0xMDQsNyArMTA0
LDcgQEAgQ0ZVUkxSZXF1ZXN0UmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdh
dGVXaXRoT3BlcmF0aW9uUXVldWU6OndpbGxTZW4KIAogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sg
aW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdl
IHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRl
ciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlv
bmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25E
ZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxS
ZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBw
cm90ZWN0ZWRUaGlzKHRoaXMpOwogCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpKSB7CkBA
IC0xMzAsNyArMTMwLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVn
YXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRSZWNlaXZlUmVzcG9uc2UKIHsKICAgICAvLyBGSVhN
RTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlz
IHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRo
aXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3Ro
ZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZV
UkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsK
KyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVy
YXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNI
YW5kbGUoKSB8fCAhbV9oYW5kbGUtPmNsaWVudCgpKSB7CkBAIC0xNzAsNyArMTcwLDcgQEAgdm9p
ZCBSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
OjpkaWRSZWNlaXZlRGF0YShDRkQKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0
bHkgY29waWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQg
anVzdCBjYWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUs
IGFuZCB1c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0
dXJpbmcuCi0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVX
aXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VI
YW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKICAgICBDRlJldGFpbihkYXRhKTsKIAogICAgIGRpc3BhdGNoX2FzeW5jKGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57CkBAIC0xODgsNyArMTg4LDcgQEAgdm9pZCBSZXNv
dXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlOjpkaWRG
aW5pc2hMb2FkaW5nKCkKIHsKICAgICAvLyBGSVhNRTogVGhlIGJsb2NrIGltcGxpY2l0bHkgY29w
aWVzIHByb3RlY3RvciBvYmplY3QsIHdoaWNoIGlzIHdhc3RlZnVsLiBXZSBzaG91bGQganVzdCBj
YWxsIHJlZigpLAogICAgIC8vIGNhcHR1cmUgInRoaXMiIGJ5IHBvaW50ZXIgdmFsdWUsIGFuZCB1
c2UgYSBDKysgbGFtYmRhIHRvIHByZXZlbnQgb3RoZXIgdW5pbnRlbnRpb25hbCBjYXB0dXJpbmcu
Ci0gICAgUmVmUHRyPFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU+IHByb3RlY3Rvcih0aGlzKTsKKyAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdGVkVGhpcyh0
aGlzKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeewog
ICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxlKCkgfHwgIW1faGFuZGxlLT5jbGllbnQo
KSkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTIwMyw3ICsyMDMsNyBAQCB2b2lkIFJlc291cmNl
SGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZEZhaWwo
Q0ZFcnJvclJlZgogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMg
cHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwg
cmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBh
IEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRp
b25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJM
Q29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMp
OwogICAgIENGUmV0YWluKGVycm9yKTsKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRf
bWFpbl9xdWV1ZSgpLCBeewogICAgICAgICBpZiAocHJvdGVjdG9yLT5oYXNIYW5kbGUoKSAmJiBt
X2hhbmRsZS0+Y2xpZW50KCkpIHsKQEAgLTIyMCw3ICsyMjAsNyBAQCBDRkNhY2hlZFVSTFJlc3Bv
bnNlUmVmIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9u
UXVldWU6OgogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMgcHJv
dGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwgcmVm
KCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMr
KyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAgICBS
ZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25R
dWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29u
bmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwog
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAg
ICAgaWYgKCFwcm90ZWN0b3ItPmhhc0hhbmRsZSgpIHx8ICFtX2hhbmRsZS0+Y2xpZW50KCkpIHsK
QEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVs
ZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU6OmRpZFJlY2VpdmVDaGFsbGVuZwogewogICAgIC8vIEZJ
WE1FOiBUaGUgYmxvY2sgaW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2gg
aXMgd2FzdGVmdWwuIFdlIHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAi
dGhpcyIgYnkgcG9pbnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBv
dGhlciB1bmludGVudGlvbmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVD
RlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMp
OworICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9w
ZXJhdGlvblF1ZXVlPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENGUmV0YWluKGNoYWxsZW5n
ZSk7CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAg
ICAgICAgaWYgKHByb3RlY3Rvci0+aGFzSGFuZGxlKCkpIHsKQEAgLTI1Nyw3ICsyNTcsNyBAQCB2
b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVl
dWU6OmRpZFNlbmRCb2R5RGF0YShDRgogewogICAgIC8vIEZJWE1FOiBUaGUgYmxvY2sgaW1wbGlj
aXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwuIFdlIHNob3Vs
ZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9pbnRlciB2YWx1
ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVudGlvbmFsIGNh
cHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0
ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0cjxSZXNvdXJj
ZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0
ZWRUaGlzKHRoaXMpOwogICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVl
KCksIF57CiAgICAgICAgIGlmICghcHJvdGVjdG9yLT5oYXNIYW5kbGUoKSB8fCAhbV9oYW5kbGUt
PmNsaWVudCgpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjc4LDcgKzI3OCw3IEBAIEJvb2xl
YW4gUmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rpb25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1
ZTo6Y2FuUmVzcG9uZFRvUHJvCiB7CiAgICAgLy8gRklYTUU6IFRoZSBibG9jayBpbXBsaWNpdGx5
IGNvcGllcyBwcm90ZWN0b3Igb2JqZWN0LCB3aGljaCBpcyB3YXN0ZWZ1bC4gV2Ugc2hvdWxkIGp1
c3QgY2FsbCByZWYoKSwKICAgICAvLyBjYXB0dXJlICJ0aGlzIiBieSBwb2ludGVyIHZhbHVlLCBh
bmQgdXNlIGEgQysrIGxhbWJkYSB0byBwcmV2ZW50IG90aGVyIHVuaW50ZW50aW9uYWwgY2FwdHVy
aW5nLgotICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0
aE9wZXJhdGlvblF1ZXVlPiBwcm90ZWN0b3IodGhpcyk7CisgICAgUmVmUHRyPFJlc291cmNlSGFu
ZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3BlcmF0aW9uUXVldWU+IHByb3RlY3RlZFRo
aXModGhpcyk7CiAKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBeewogICAgICAgICBpZiAoIXByb3RlY3Rvci0+aGFzSGFuZGxlKCkpIHsKQEAgLTMwOCw3ICsz
MDgsNyBAQCB2b2lkIFJlc291cmNlSGFuZGxlQ0ZVUkxDb25uZWN0aW9uRGVsZWdhdGVXaXRoT3Bl
cmF0aW9uUXVldWU6OmRpZFJlY2VpdmVEYXRhQXJyYQogewogICAgIC8vIEZJWE1FOiBUaGUgYmxv
Y2sgaW1wbGljaXRseSBjb3BpZXMgcHJvdGVjdG9yIG9iamVjdCwgd2hpY2ggaXMgd2FzdGVmdWwu
IFdlIHNob3VsZCBqdXN0IGNhbGwgcmVmKCksCiAgICAgLy8gY2FwdHVyZSAidGhpcyIgYnkgcG9p
bnRlciB2YWx1ZSwgYW5kIHVzZSBhIEMrKyBsYW1iZGEgdG8gcHJldmVudCBvdGhlciB1bmludGVu
dGlvbmFsIGNhcHR1cmluZy4KLSAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGVDRlVSTENvbm5lY3Rp
b25EZWxlZ2F0ZVdpdGhPcGVyYXRpb25RdWV1ZT4gcHJvdGVjdG9yKHRoaXMpOworICAgIFJlZlB0
cjxSZXNvdXJjZUhhbmRsZUNGVVJMQ29ubmVjdGlvbkRlbGVnYXRlV2l0aE9wZXJhdGlvblF1ZXVl
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIENGUmV0YWluKGRhdGFBcnJheSk7CiAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKICAgICAgICAgaWYgKHBy
b3RlY3Rvci0+aGFzSGFuZGxlKCkgJiYgbV9oYW5kbGUtPmNsaWVudCgpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybERvd25sb2FkLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCmlu
ZGV4IGE0YWY2MWUwOTcwYTAzMmNkNTg2MDUyYzlmZDFiMzU1NTAyN2Q0MzMuLmM2Yzg3OTdiYmNh
MDJjOTU5YmQ1MzNlNjQ4ZWNlNGQ3MWY0YTQ3ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsRG93bmxvYWQuY3BwCkBAIC00MDMsOSArNDAz
LDkgQEAgdm9pZCBDdXJsRG93bmxvYWQ6OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBo
ZWFkZXIpCiAKICAgICAgICAgaWYgKGh0dHBDb2RlID49IDIwMCAmJiBodHRwQ29kZSA8IDMwMCkg
ewogICAgICAgICAgICAgVVJMQ2FwdHVyZSBjYXB0dXJlZFVybChnZXRDdXJsRWZmZWN0aXZlVVJM
KG1fY3VybEhhbmRsZSkpOwotICAgICAgICAgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVj
dGVkRG93bmxvYWQodGhpcyk7CisgICAgICAgICAgICBSZWZQdHI8Q3VybERvd25sb2FkPiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBj
YXB0dXJlZFVybCwgcHJvdGVjdGVkRG93bmxvYWRdIHsKKyAgICAgICAgICAgIGNhbGxPbk1haW5U
aHJlYWQoW3RoaXMsIGNhcHR1cmVkVXJsLCBwcm90ZWN0ZWRUaGlzXSB7CiAgICAgICAgICAgICAg
ICAgbV9yZXNwb25zZS5zZXRVUkwoY2FwdHVyZWRVcmwudXJsKCkpOwogICAgICAgICAgICAgICAg
IG1fcmVzcG9uc2Uuc2V0TWltZVR5cGUoZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShtX3Jl
c3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudFR5cGUpKSk7CiAg
ICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1lKGV4dHJhY3RDaGFy
c2V0RnJvbU1lZGlhVHlwZShtX3Jlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFt
ZTo6Q29udGVudFR5cGUpKSk7CkBAIC00MTYsOSArNDE2LDkgQEAgdm9pZCBDdXJsRG93bmxvYWQ6
OmRpZFJlY2VpdmVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCiAgICAgfSBlbHNlIHsKICAg
ICAgICAgU3RyaW5nQ2FwdHVyZSBjYXB0dXJlZEhlYWRlcihoZWFkZXIpOwogCi0gICAgICAgIFJl
ZlB0cjxDdXJsRG93bmxvYWQ+IHByb3RlY3RlZERvd25sb2FkKHRoaXMpOworICAgICAgICBSZWZQ
dHI8Q3VybERvd25sb2FkPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW3RoaXMsIGNhcHR1cmVkSGVhZGVyLCBwcm90ZWN0ZWREb3dubG9hZF0geworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBjYXB0dXJlZEhlYWRlciwgcHJvdGVjdGVkVGhp
c10gewogICAgICAgICAgICAgaW50IHNwbGl0UG9zID0gY2FwdHVyZWRIZWFkZXIuc3RyaW5nKCku
ZmluZCgiOiIpOwogICAgICAgICAgICAgaWYgKHNwbGl0UG9zICE9IC0xKQogICAgICAgICAgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0SFRUUEhlYWRlckZpZWxkKGNhcHR1cmVkSGVhZGVyLnN0cmluZygp
LmxlZnQoc3BsaXRQb3MpLCBjYXB0dXJlZEhlYWRlci5zdHJpbmcoKS5zdWJzdHJpbmcoc3BsaXRQ
b3MgKyAxKS5zdHJpcFdoaXRlU3BhY2UoKSk7CkBAIC00MzAsOSArNDMwLDkgQEAgdm9pZCBDdXJs
RG93bmxvYWQ6OmRpZFJlY2VpdmVEYXRhKHZvaWQqIGRhdGEsIGludCBzaXplKQogewogICAgIExv
Y2tIb2xkZXIgbG9ja2VyKG1fbXV0ZXgpOwogCi0gICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJv
dGVjdGVkRG93bmxvYWQodGhpcyk7CisgICAgUmVmUHRyPEN1cmxEb3dubG9hZD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKIAotICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHNpemUsIHByb3RlY3Rl
ZERvd25sb2FkXSB7CisgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgc2l6ZSwgcHJvdGVjdGVk
VGhpc10gewogICAgICAgICBkaWRSZWNlaXZlRGF0YU9mTGVuZ3RoKHNpemUpOwogICAgIH0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCmluZGV4IDhhMjY4ODhlN2IyM2RjNDI0Yjk4YjUxZTc4MjI3YjllYjJm
MDE3MjUuLmJlNDM2ZGFkNjFmNGQwMjUwMjRkNjdhZjQ2N2Y0MGRkYWJiNzhkYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFu
ZGxlTWFjLm1tCkBAIC00OTEsNyArNDkxLDcgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6d2lsbFNl
bmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXMKICAg
ICBpZiAoZC0+bV91c2VzQXN5bmNDYWxsYmFja3MpIHsKICAgICAgICAgY2xpZW50KCktPndpbGxT
ZW5kUmVxdWVzdEFzeW5jKHRoaXMsIHJlcXVlc3QsIHJlZGlyZWN0UmVzcG9uc2UpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdCgqdGhpcyk7CisgICAg
ICAgIFJlZjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAgICAgICAgIGNs
aWVudCgpLT53aWxsU2VuZFJlcXVlc3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSk7
CiAKICAgICAgICAgLy8gQ2xpZW50IGNhbGwgbWF5IG5vdCBwcmVzZXJ2ZSB0aGUgc2Vzc2lvbiwg
ZXNwZWNpYWxseSBpZiB0aGUgcmVxdWVzdCBpcyBzZW50IG92ZXIgSVBDLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVhbUhhbmRsZVNv
dXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1NvY2tldFN0cmVh
bUhhbmRsZVNvdXAuY3BwCmluZGV4IDljYzVkOGNlOTE4MjczYzBjMzY3NGE2OWNkZTQ4ZWVlMjlm
MDIyMzIuLjVmODNhZjRiYmZlZjkyOWUwZjJhZDU2NzM4ZjczNjdmN2Q1ZWJhMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9Tb2NrZXRTdHJlYW1IYW5k
bGVTb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvU29j
a2V0U3RyZWFtSGFuZGxlU291cC5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZTo6cmVhZEJ5dGVzKHNpZ25lZCBsb25nIGJ5dGVzUmVhZCwgR0Vycm9yKiBlcnJv
cikKICAgICB9CiAKICAgICAvLyBUaGUgY2xpZW50IGNhbiBjbG9zZSB0aGUgaGFuZGxlLCBwb3Rl
bnRpYWxseSByZW1vdmluZyB0aGUgbGFzdCByZWZlcmVuY2UuCi0gICAgUmVmUHRyPFNvY2tldFN0
cmVhbUhhbmRsZT4gcHJvdGVjdCh0aGlzKTsgCisgICAgUmVmUHRyPFNvY2tldFN0cmVhbUhhbmRs
ZT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsgCiAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVTb2NrZXRT
dHJlYW1EYXRhKHRoaXMsIG1fcmVhZEJ1ZmZlci5nZXQoKSwgYnl0ZXNSZWFkKTsKICAgICBpZiAo
bV9pbnB1dFN0cmVhbSkgLy8gVGhlIGNsaWVudCBtYXkgaGF2ZSBjbG9zZWQgdGhlIGNvbm5lY3Rp
b24uCiAgICAgICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMobV9pbnB1dFN0cmVhbS5nZXQo
KSwgbV9yZWFkQnVmZmVyLmdldCgpLCBSRUFEX0JVRkZFUl9TSVpFLCBHX1BSSU9SSVRZX0RFRkFV
TFQsIDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUG9wdXBNZW51
V2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCmlu
ZGV4IDBkZjhmNWMwZDNmYjBhMzI4ZmMyNGVmOWFhZDZlMjUzOTYxMGQxMGEuLmViOGZiM2FlZjc5
OTZhMjg2YTliMDY3M2MxYzNlMGQ5NmMyZGUxZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbi9Qb3B1cE1lbnVXaW4uY3BwCkBAIC0xNjcsNyArMTY3LDcgQEAgdm9pZCBQb3B1cE1l
bnVXaW46OnNob3coY29uc3QgSW50UmVjdCYgciwgRnJhbWVWaWV3KiB2aWV3LCBpbnQgaW5kZXgp
CiAgICAgbV9zaG93UG9wdXAgPSB0cnVlOwogCiAgICAgLy8gUHJvdGVjdCB0aGUgcG9wdXAgbWVu
dSBpbiBjYXNlIGl0cyBvd25lciBpcyBkZXN0cm95ZWQgd2hpbGUgd2UncmUgcnVubmluZyB0aGUg
bWVzc2FnZSBwdW1wLgotICAgIFJlZlB0cjxQb3B1cE1lbnU+IHByb3RlY3QodGhpcyk7CisgICAg
UmVmUHRyPFBvcHVwTWVudT4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAogICAgIDo6U2V0Q2FwdHVy
ZShob3N0V2luZG93KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3Jr
ZXJTY3JpcHRMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJTY3JpcHRM
b2FkZXIuY3BwCmluZGV4IGY3MzllMDIxODE4MTRlMDg5NzY0NzExODE0YmYxOGFiNWE0YTQ3ZjMu
Ljk1ZTA3Mzg0NTljMjlhMWEzZGYzYzIyMWU5ZDgzMTc1NDdmYmNkZGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyU2NyaXB0TG9hZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL1dvcmtlclNjcmlwdExvYWRlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAg
dm9pZCBXb3JrZXJTY3JpcHRMb2FkZXI6OmxvYWRBc3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBzY3JpcHRFeGVjdXQKICAgICBvcHRpb25zLmNvbnRlbnRTZWN1cml0eVBvbGlj
eUVuZm9yY2VtZW50ID0gY29udGVudFNlY3VyaXR5UG9saWN5RW5mb3JjZW1lbnQ7CiAKICAgICAv
LyBEdXJpbmcgY3JlYXRlLCBjYWxsYmFja3MgbWF5IGhhcHBlbiB3aGljaCByZW1vdmUgdGhlIGxh
c3QgcmVmZXJlbmNlIHRvIHRoaXMgb2JqZWN0LgotICAgIFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+
IHByb3RlY3QoKnRoaXMpOworICAgIFJlZjxXb3JrZXJTY3JpcHRMb2FkZXI+IHByb3RlY3RlZFRo
aXMoKnRoaXMpOwogICAgIG1fdGhyZWFkYWJsZUxvYWRlciA9IFRocmVhZGFibGVMb2FkZXI6OmNy
ZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0LCB0aGlzLCAqcmVxdWVzdCwgb3B0aW9ucyk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCmluZGV4IDZhYjMxNTk3YTU0NzRk
ZjE4ZWE5ZTg1ODI0YjVmZDA2YTZlZWNiNTkuLmMzZDQ1ODU0MzkyNzZjMWI2Mjg1NTExY2RkYzVm
M2NhZDU2M2FlMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtNzYx
LDcgKzc2MSw3IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZVJlcXVlc3QoRXhjZXB0aW9u
Q29kZSYgZWMpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjphYm9ydCgpCiB7CiAgICAgLy8gaW50ZXJu
YWxBYm9ydCgpIGNhbGxzIGRyb3BQcm90ZWN0aW9uKCksIHdoaWNoIG1heSByZWxlYXNlIHRoZSBs
YXN0IHJlZmVyZW5jZS4KLSAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3QoKnRoaXMpOwor
ICAgIFJlZjxYTUxIdHRwUmVxdWVzdD4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKICAgICBpZiAo
IWludGVybmFsQWJvcnQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTE5Miw3ICsxMTkyLDcgQEAg
dm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlzcGF0Y2hFcnJvckV2ZW50cyhjb25zdCBBdG9taWNTdHJp
bmcmIHR5cGUpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRSZWFjaFRpbWVvdXQoKQogewogICAg
IC8vIGludGVybmFsQWJvcnQoKSBjYWxscyBkcm9wUHJvdGVjdGlvbigpLCB3aGljaCBtYXkgcmVs
ZWFzZSB0aGUgbGFzdCByZWZlcmVuY2UuCi0gICAgUmVmPFhNTEh0dHBSZXF1ZXN0PiBwcm90ZWN0
KCp0aGlzKTsKKyAgICBSZWY8WE1MSHR0cFJlcXVlc3Q+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwog
ICAgIGlmICghaW50ZXJuYWxBYm9ydCgpKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggM2ZkN2RiYmVl
OTcxYWIyMTM3ZTQ5ZGNjMzdjMTdmOTA1ZDZkZjgxNC4uMDk2MWM0ZDhhNWYwOTA0YjdkNTQyZjJi
MjFmMGRmMmViOGQ0YWVkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9Y
TUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxE
b2N1bWVudFBhcnNlci5jcHAKQEAgLTI0Niw3ICsyNDYsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFy
c2VyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2UpCiAgICAg
QVNTRVJUKHNjcmlwdEVsZW1lbnQpOwogCiAgICAgLy8gSmF2YVNjcmlwdCBjYW4gZGV0YWNoIHRo
aXMgcGFyc2VyLCBtYWtlIHN1cmUgaXQncyBrZXB0IGFsaXZlIGV2ZW4gaWYgZGV0YWNoZWQuCi0g
ICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBwcm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8WE1MRG9j
dW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogICAgIAogICAgIGlmIChlcnJvck9j
Y3VycmVkKQogICAgICAgICBzY3JpcHRFbGVtZW50LT5kaXNwYXRjaEVycm9yRXZlbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9wYXJzZXIvWE1MRG9jdW1lbnRQYXJzZXJMaWJ4
bWwyLmNwcAppbmRleCA2ZWViMTFkNWU5ODI3NDYwNGZmOWYzZjBmY2ZlMGQ3NWE0NDRiZTkwLi43
YzdkOWExYTc1ZjBlMjVkNTg4YmJiMjI2MjQ1YThiOGUzYmZjZWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvcGFyc2VyL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUveG1sL3BhcnNlci9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCkBA
IC02ODAsNyArNjgwLDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZG9Xcml0ZShjb25zdCBT
dHJpbmcmIHBhcnNlU3RyaW5nKQogICAgIGlmIChwYXJzZVN0cmluZy5sZW5ndGgoKSkgewogICAg
ICAgICAvLyBKYXZhU2NyaXB0IG1heSBjYXVzZSB0aGUgcGFyc2VyIHRvIGRldGFjaCBkdXJpbmcg
eG1sUGFyc2VDaHVuawogICAgICAgICAvLyBrZWVwIHRoaXMgYWxpdmUgdW50aWwgdGhpcyBmdW5j
dGlvbiBpcyBkb25lLgotICAgICAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3QoKnRo
aXMpOworICAgICAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMoKnRoaXMp
OwogCiAgICAgICAgIFhNTERvY3VtZW50UGFyc2VyU2NvcGUgc2NvcGUoJmRvY3VtZW50KCktPmNh
Y2hlZFJlc291cmNlTG9hZGVyKCkpOwogCkBAIC04NzIsNyArODcyLDcgQEAgdm9pZCBYTUxEb2N1
bWVudFBhcnNlcjo6ZW5kRWxlbWVudE5zKCkKIAogICAgIC8vIEphdmFTY3JpcHQgY2FuIGRldGFj
aCB0aGUgcGFyc2VyLiAgTWFrZSBzdXJlIHRoaXMgaXMgbm90IHJlbGVhc2VkCiAgICAgLy8gYmVm
b3JlIHRoZSBlbmQgb2YgdGhpcyBtZXRob2QuCi0gICAgUmVmPFhNTERvY3VtZW50UGFyc2VyPiBw
cm90ZWN0KCp0aGlzKTsKKyAgICBSZWY8WE1MRG9jdW1lbnRQYXJzZXI+IHByb3RlY3RlZFRoaXMo
KnRoaXMpOwogCiAgICAgaWYgKCF1cGRhdGVMZWFmVGV4dE5vZGUoKSkKICAgICAgICAgcmV0dXJu
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>