<?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>154248</bug_id>
          
          <creation_ts>2016-02-15 11:00:01 -0800</creation_ts>
          <short_desc>Null-deref crash in DefaultAudioDestinationNode::suspend()</short_desc>
          <delta_ts>2016-02-15 14:39:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1164785</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-15 11:00:01 -0800</bug_when>
    <thetext>Null-deref crash in DefaultAudioDestinationNode::suspend()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164786</commentid>
    <comment_count>1</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-15 11:00:31 -0800</bug_when>
    <thetext>rdar://problem/21478816</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164787</commentid>
    <comment_count>2</comment_count>
      <attachid>271349</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-15 11:03:25 -0800</bug_when>
    <thetext>Created attachment 271349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164790</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-15 11:06:03 -0800</bug_when>
    <thetext>Attachment 271349 did not pass style-queue:


ERROR: Source/WebCore/Modules/webaudio/AudioContext.h:401:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
ERROR: Source/WebCore/Modules/webaudio/AudioContext.h:405:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Total errors found: 2 in 61 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>1164847</commentid>
    <comment_count>4</comment_count>
      <attachid>271349</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-15 13:16:13 -0800</bug_when>
    <thetext>Comment on attachment 271349
Patch

That&apos;s quite a patch for adding 3 null checks.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164877</commentid>
    <comment_count>5</comment_count>
      <attachid>271349</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-15 13:44:45 -0800</bug_when>
    <thetext>Comment on attachment 271349
Patch

*Please* split this nice change into two patches before committing, it makes it unnecessarily hard to see the real fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164904</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-15 14:35:35 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 271349 [details]
&gt; Patch
&gt; 
&gt; *Please* split this nice change into two patches before committing, it makes
&gt; it unnecessarily hard to see the real fix.

Sure thing. I&apos;ll commit in two steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164905</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-15 14:38:56 -0800</bug_when>
    <thetext>Committed r196602: &lt;http://trac.webkit.org/changeset/196602&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1164906</commentid>
    <comment_count>8</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-02-15 14:39:19 -0800</bug_when>
    <thetext>Committed r196603: &lt;http://trac.webkit.org/changeset/196603&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271349</attachid>
            <date>2016-02-15 11:03:25 -0800</date>
            <delta_ts>2016-02-15 13:44:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-154248-20160215110304.patch</filename>
            <type>text/plain</type>
            <size>108588</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDllNGM0NGI3MzE4OTQ4
MzY2ZTc5NTk4MjViNzZlYWNhNjU2MTQxZi4uNzExYjFlM2NjOGY3ODNjNzM5ODI4ZWE3ZWNiN2U5
YzcyYTlkYTMxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyNiBAQAorMjAxNi0wMi0xNSAgSmVy
IE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBOdWxsLWRlcmVmIGNyYXNo
IGluIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZCgpCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyNDgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOdWxsLWNoZWNrIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKSBiZWZvcmUgZGVyZWYuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlv
L0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWZh
dWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnN1c3BlbmQpOgorICAgICAgICAoV2ViQ29yZTo6RGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpjbG9zZSk6CisKKyAgICAgICAgRHJpdmUtYnkgZml4
OiBBdWRpb0NvbnRleHQgc2hvdWxkIGJlIGEgcmVmZXJlbmNlLCBub3QgYSBwb2ludGVyLgorCisg
ICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QW5hbHlzZXJOb2RlOjpBbmFseXNlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQW5hbHlzZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBbmFseXNlck5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9C
YXNpY0luc3BlY3Rvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGU6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGU6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5v
ZGU6OmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvQmFzaWNJbnNwZWN0b3JOb2RlOjp1cGRhdGVQdWxsU3RhdHVzKToKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlLmg6CisgICAgICAgICogTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OmNoZWNrTnVtYmVyT2ZDaGFu
bmVsc0ZvcklucHV0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9j
ZXNzb3JOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJj
ZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpBdWRpb0J1ZmZl
clNvdXJjZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpy
ZW5kZXJGcm9tQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9k
ZTo6c2V0QnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
c3RhcnRQbGF5aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZTo6
bG9vcGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0J1ZmZlclNvdXJjZU5vZGU6OnNldExv
b3BpbmcpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2Rl
Lmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVCdWZmZXJTb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYUVsZW1lbnRTb3VyY2UpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpbmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlU2NyaXB0UHJvY2Vzc29yKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQmlxdWFkRmlsdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBlcik6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0Nv
bnRleHQ6OmNyZWF0ZUNvbnZvbHZlcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6
OmNyZWF0ZUR5bmFtaWNzQ29tcHJlc3Nvcik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRl
eHQ6OmNyZWF0ZUFuYWx5c2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3Jl
YXRlR2Fpbik6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZURlbGF5KToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbFNwbGl0dGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvQ29udGV4dDo6Y3JlYXRlQ2hhbm5lbE1lcmdlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpBdWRpb0NvbnRleHQ6OmNyZWF0ZU9zY2lsbGF0b3IpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpv
cGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yIT0pOgorICAgICAgICAqIE1v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAg
KFdlYkNvcmU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9EZXN0aW5hdGlvbk5vZGU6OnVwZGF0ZUlzRWZmZWN0aXZlbHlQbGF5aW5nQXVkaW8p
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb05vZGU6OkF1ZGlvTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNv
bm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlOjpkaXNjb25uZWN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENvdW50TW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb05vZGU6OnNldENoYW5uZWxJbnRlcnByZXRhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb05vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Ob2RlOjpwcm9jZXNzSWZOZWNlc3NhcnkpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2Rl
OjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRp
b05vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6
cHVsbElucHV0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmRlcmVmKToKKyAgICAg
ICAgKFdlYkNvcmU6OkF1ZGlvTm9kZTo6ZmluaXNoRGVyZWYpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Ob2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGU6OmNvbnRl
eHQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlSW5wdXQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmNvbm5lY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6QXVkaW9Ob2RlSW5wdXQ6OmRpc2Nvbm5lY3QpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9O
b2RlSW5wdXQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmVu
YWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6dXBkYXRlSW50ZXJuYWxC
dXMpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlSW5wdXQ6OmJ1cyk6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb05vZGVJbnB1dDo6aW50ZXJuYWxTdW1taW5nQnVzKToKKyAgICAgICAgKFdl
YkNvcmU6OkF1ZGlvTm9kZUlucHV0OjpzdW1BbGxDb25uZWN0aW9ucyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb05vZGVJbnB1dDo6cHVsbCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb05vZGVPdXRwdXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0Ojpz
ZXROdW1iZXJPZkNoYW5uZWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6
dXBkYXRlTnVtYmVyT2ZDaGFubmVscyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRw
dXQ6OnByb3BhZ2F0ZUNoYW5uZWxDb3VudCk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVP
dXRwdXQ6OnB1bGwpOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjpidXMpOgor
ICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjpmYW5PdXRDb3VudCk6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OnBhcmFtRmFuT3V0Q291bnQpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjphZGRJbnB1dCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb05vZGVPdXRwdXQ6OnJlbW92ZUlucHV0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9k
ZU91dHB1dDo6ZGlzY29ubmVjdEFsbElucHV0cyk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05v
ZGVPdXRwdXQ6OmFkZFBhcmFtKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6
cmVtb3ZlUGFyYW0pOgorICAgICAgICAoV2ViQ29yZTo6QXVkaW9Ob2RlT3V0cHV0OjpkaXNjb25u
ZWN0QWxsUGFyYW1zKToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvTm9kZU91dHB1dDo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb05vZGVPdXRwdXQ6OmVuYWJsZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvTm9kZU91dHB1dDo6Y29udGV4dCk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1BhcmFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OnNtb290aCk6CisgICAgICAgIChXZWJDb3JlOjpB
dWRpb1BhcmFtOjpjYWxjdWxhdGVTYW1wbGVBY2N1cmF0ZVZhbHVlcyk6CisgICAgICAgIChXZWJD
b3JlOjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVGaW5hbFZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtOjpjYWxjdWxhdGVUaW1lbGluZVZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpBdWRpb1BhcmFtOjpjb25uZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW06OmRp
c2Nvbm5lY3QpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oOgorICAg
ICAgICAoV2ViQ29yZTo6QXVkaW9QYXJhbTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkF1
ZGlvUGFyYW06OkF1ZGlvUGFyYW0pOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Q
YXJhbVRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkF1ZGlvUGFyYW1UaW1lbGluZTo6
dmFsdWVGb3JDb250ZXh0VGltZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU2NoZWR1bGVk
U291cmNlTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1NjaGVkdWxlZFNvdXJjZU5v
ZGU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKToKKyAgICAgICAgKFdlYkNv
cmU6OkF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6c3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlOjpmaW5pc2gpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1N1bW1pbmdKdW5jdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBdWRpb1N1
bW1pbmdKdW5jdGlvbjo6QXVkaW9TdW1taW5nSnVuY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
QXVkaW9TdW1taW5nSnVuY3Rpb246On5BdWRpb1N1bW1pbmdKdW5jdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6Y2hhbmdlZE91dHB1dHMpOgorICAgICAgICAo
V2ViQ29yZTo6QXVkaW9TdW1taW5nSnVuY3Rpb246OnVwZGF0ZVJlbmRlcmluZ1N0YXRlKToKKyAg
ICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9uLmg6CisgICAgICAg
IChXZWJDb3JlOjpBdWRpb1N1bW1pbmdKdW5jdGlvbjo6Y29udGV4dCk6CisgICAgICAgICogTW9k
dWxlcy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
cXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2Vi
YXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oOgorICAgICAgICAoV2ViQ29yZTo6QmlxdWFkRmlsdGVy
Tm9kZTo6Y3JlYXRlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXF1YWRQcm9jZXNzb3I6OkJpcXVhZFByb2Nlc3Nv
cik6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaDoKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hh
bm5lbE1lcmdlck5vZGU6OkNoYW5uZWxNZXJnZXJOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkNo
YW5uZWxNZXJnZXJOb2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5oOgorICAgICAgICAqIE1vZHVs
ZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
aGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q2hhbm5lbFNw
bGl0dGVyTm9kZTo6Q2hhbm5lbFNwbGl0dGVyTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJh
dWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9D
b252b2x2ZXJOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnZvbHZlck5vZGU6OkNvbnZv
bHZlck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6Q29udm9sdmVyTm9kZTo6c2V0QnVmZmVyKToK
KyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNvbnZvbHZlck5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRp
by9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVm
YXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpyZXN1bWUpOgor
ICAgICAgICAoV2ViQ29yZTo6RGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpzdXNwZW5kKToK
KyAgICAgICAgKFdlYkNvcmU6OkRlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y2xvc2UpOgor
ICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmg6
CisgICAgICAgIChXZWJDb3JlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RGVsYXlOb2RlOjpEZWxheU5vZGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
RGVsYXlOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpEZWxheU5vZGU6OmNyZWF0ZSk6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IpOgorICAgICAgICAqIE1vZHVsZXMv
d2ViYXVkaW8vRGVsYXlQcm9jZXNzb3IuaDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL0R5
bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHluYW1pY3NDb21w
cmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29yTm9kZSk6CisgICAgICAgICogTW9kdWxlcy93
ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpEeW5h
bWljc0NvbXByZXNzb3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R2Fpbk5vZGU6OkdhaW5Ob2RlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkdhaW5Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dCk6
CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oOgorICAgICAgICAoV2ViQ29y
ZTo6R2Fpbk5vZGU6OmNyZWF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFFbGVtZW50
QXVkaW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUpOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpzZXRGb3JtYXQpOgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmg6CisgICAg
ICAgICogTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNy
ZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2Rl
OjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAgICAgKiBNb2R1
bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNl
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6c2V0
Rm9ybWF0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpPZmZs
aW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6T2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpub3RpZnlDb21wbGV0ZSk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuaDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKToKKyAgICAg
ICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok9zY2lsbGF0b3JOb2RlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6T3NjaWxsYXRv
ck5vZGU6Ok9zY2lsbGF0b3JOb2RlKToKKyAgICAgICAgKiBNb2R1bGVzL3dlYmF1ZGlvL09zY2ls
bGF0b3JOb2RlLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OlBhbm5lck5vZGUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFubmVyTm9kZTo6cHVsbElucHV0cyk6CisgICAgICAgIChXZWJDb3JlOjpQYW5uZXJO
b2RlOjpwcm9jZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6Omxpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCk6CisgICAgICAg
ICogTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpQYW5u
ZXJOb2RlOjpjcmVhdGUpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vz
c29yTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vz
c29yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRQcm9jZXNzb3JOb2RlOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFByb2Nlc3Nvck5vZGU6OmZpcmVQcm9jZXNz
RXZlbnQpOgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5o
OgorICAgICAgICAqIE1vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2F2ZVNoYXBlck5vZGU6OldhdmVTaGFwZXJOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OldhdmVTaGFwZXJOb2RlOjpzZXRPdmVyc2FtcGxlKToKKyAgICAgICAgKiBNb2R1bGVz
L3dlYmF1ZGlvL1dhdmVTaGFwZXJOb2RlLmg6CisgICAgICAgIChXZWJDb3JlOjpXYXZlU2hhcGVy
Tm9kZTo6Y3JlYXRlKToKKwogMjAxNi0wMi0xMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxl
LmNvbT4KIAogICAgICAgICBbTWFjXSBDT1JTLWNvbXBsaWFudCB2aWRlb3MgdGhyb3cgc2VjdXJp
dHkgZXJyb3JzIHdoZW4gcGFpbnRpbmcgdG8gQ2FudmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5jcHAKaW5kZXggYjU0ZDNhZTI4NDg0MDg0YTZj
MDZkZmQyNWYyYmEyMzk5Mzg1OGFkYi4uZmE3YzkyODE3ODE1NzE4YTJmYTg0YmU3YjkyOGNjN2Zl
MTcwM2YwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFs
eXNlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQW5hbHlz
ZXJOb2RlLmNwcApAQCAtMzQsNyArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUFu
YWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKK0FuYWx5c2VyTm9kZTo6QW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUsIDIpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVBbmFseXNlcik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BbmFseXNlck5vZGUuaAppbmRl
eCA2MzVlNjM5ZDIwMTRiNDU5NmQyYmIzMDdjMmJmOGFjZDMxMjgzNjFhLi42NTZlMDE2OTNhYzUy
OWFiNDQ0ZTE3YmRjM2FiZWFlODlmYTAxY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0FuYWx5c2VyTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQW5hbHlzZXJOb2RlLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBjbGFzcyBBbmFseXNlck5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8QW5hbHlzZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8QW5h
bHlzZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQW5hbHlzZXJOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAg
ICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAw
OyB9CiAKLSAgICBBbmFseXNlck5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7
CisgICAgQW5hbHlzZXJOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAg
ICAgUmVhbHRpbWVBbmFseXNlciBtX2FuYWx5c2VyOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
aW5kZXggNThmZDliMmFiOTNiODM5MWRlMDUzYjkxMGZmOTM3ODBmODJhYWJkZC4uMWIwODQ0ZmNm
YTA0OTYyNmMxZDNjM2Y2OWFjNjkwNzZmYjJlNzRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZS5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb0Jhc2ljSW5z
cGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpCitBdWRpb0Jh
c2ljSW5zcGVjdG9yTm9kZTo6QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291bnQpCiAg
ICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbmVlZEF1dG9tYXRp
Y1B1bGwoZmFsc2UpCiB7CkBAIC01NSw3ICs1NSw3IEBAIHZvaWQgQXVkaW9CYXNpY0luc3BlY3Rv
ck5vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlKiBkZXN0aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5k
CiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIEF1ZGlvQ29udGV4dDo6QXV0
b0xvY2tlciBsb2NrZXIoKmNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2Vy
IGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgQXVkaW9Ob2RlOjpjb25uZWN0KGRlc3RpbmF0aW9u
LCBvdXRwdXRJbmRleCwgaW5wdXRJbmRleCwgZWMpOwogICAgIHVwZGF0ZVB1bGxTdGF0dXMoKTsK
QEAgLTY1LDcgKzY1LDcgQEAgdm9pZCBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZTo6ZGlzY29ubmVj
dCh1bnNpZ25lZCBvdXRwdXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMKIHsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcigq
Y29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQo
KSk7CiAKICAgICBBdWRpb05vZGU6OmRpc2Nvbm5lY3Qob3V0cHV0SW5kZXgsIGVjKTsKICAgICB1
cGRhdGVQdWxsU3RhdHVzKCk7CkBAIC03Myw3ICs3Myw3IEBAIHZvaWQgQXVkaW9CYXNpY0luc3Bl
Y3Rvck5vZGU6OmRpc2Nvbm5lY3QodW5zaWduZWQgb3V0cHV0SW5kZXgsIEV4Y2VwdGlvbkNvZGUm
IGVjCiAKIHZvaWQgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OmNoZWNrTnVtYmVyT2ZDaGFubmVs
c0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KiBpbnB1dCkKIHsKLSAgICBBU1NFUlQoY29udGV4dCgp
LT5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAgQVNT
RVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgpLmlzR3JhcGhPd25lcigp
KTsKIAogICAgIEFTU0VSVChpbnB1dCA9PSB0aGlzLT5pbnB1dCgwKSk7CiAgICAgaWYgKGlucHV0
ICE9IHRoaXMtPmlucHV0KDApKQpAQCAtOTMsMTMgKzkzLDEzIEBAIHZvaWQgQXVkaW9CYXNpY0lu
c3BlY3Rvck5vZGU6OmNoZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0
KiBpbnB1CiAKIHZvaWQgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGU6OnVwZGF0ZVB1bGxTdGF0dXMo
KQogewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQo
Y29udGV4dCgpLmlzR3JhcGhPd25lcigpKTsKIAogICAgIGlmIChvdXRwdXQoMCktPmlzQ29ubmVj
dGVkKCkpIHsKICAgICAgICAgLy8gV2hlbiBhbiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZSBpcyBj
b25uZWN0ZWQgdG8gYSBkb3duc3RyZWFtIG5vZGUsIGl0IHdpbGwgZ2V0IHB1bGxlZCBieSB0aGUK
ICAgICAgICAgLy8gZG93bnN0cmVhbSBub2RlLCB0aHVzIHJlbW92ZSBpdCBmcm9tIHRoZSBjb250
ZXh0J3MgYXV0b21hdGljIHB1bGwgbGlzdC4KICAgICAgICAgaWYgKG1fbmVlZEF1dG9tYXRpY1B1
bGwpIHsKLSAgICAgICAgICAgIGNvbnRleHQoKS0+cmVtb3ZlQXV0b21hdGljUHVsbE5vZGUodGhp
cyk7CisgICAgICAgICAgICBjb250ZXh0KCkucmVtb3ZlQXV0b21hdGljUHVsbE5vZGUodGhpcyk7
CiAgICAgICAgICAgICBtX25lZWRBdXRvbWF0aWNQdWxsID0gZmFsc2U7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UgewpAQCAtMTA3LDExICsxMDcsMTEgQEAgdm9pZCBBdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZTo6dXBkYXRlUHVsbFN0YXR1cygpCiAgICAgICAgIGlmIChudW1iZXJPZklucHV0Q29ubmVj
dGlvbnMgJiYgIW1fbmVlZEF1dG9tYXRpY1B1bGwpIHsKICAgICAgICAgICAgIC8vIFdoZW4gYW4g
QXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgaXMgbm90IGNvbm5lY3RlZCB0byBhbnkgZG93bnN0cmVh
bSBub2RlIHdoaWxlIHN0aWxsIGNvbm5lY3RlZCBmcm9tCiAgICAgICAgICAgICAvLyB1cHN0cmVh
bSBub2RlKHMpLCBhZGQgaXQgdG8gdGhlIGNvbnRleHQncyBhdXRvbWF0aWMgcHVsbCBsaXN0Lgot
ICAgICAgICAgICAgY29udGV4dCgpLT5hZGRBdXRvbWF0aWNQdWxsTm9kZSh0aGlzKTsKKyAgICAg
ICAgICAgIGNvbnRleHQoKS5hZGRBdXRvbWF0aWNQdWxsTm9kZSh0aGlzKTsKICAgICAgICAgICAg
IG1fbmVlZEF1dG9tYXRpY1B1bGwgPSB0cnVlOwogICAgICAgICB9IGVsc2UgaWYgKCFudW1iZXJP
ZklucHV0Q29ubmVjdGlvbnMgJiYgbV9uZWVkQXV0b21hdGljUHVsbCkgewogICAgICAgICAgICAg
Ly8gVGhlIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlIGlzIGNvbm5lY3RlZCB0byBub3RoaW5nLCBy
ZW1vdmUgaXQgZnJvbSB0aGUgY29udGV4dCdzIGF1dG9tYXRpYyBwdWxsIGxpc3QuCi0gICAgICAg
ICAgICBjb250ZXh0KCktPnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKHRoaXMpOworICAgICAgICAg
ICAgY29udGV4dCgpLnJlbW92ZUF1dG9tYXRpY1B1bGxOb2RlKHRoaXMpOwogICAgICAgICAgICAg
bV9uZWVkQXV0b21hdGljUHVsbCA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9yTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljSW5zcGVjdG9y
Tm9kZS5oCmluZGV4IDJmNDI1OGVhMzc5OWJkZTcyMDU4Y2QxNTlkMDUxNDljZjAzMDI4MWIuLjgx
ZDVlOTc1NWQ4MDNiOWMyZDYzZjI4MjJkNTQ4OTIwYWY4MTg0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNJbnNwZWN0b3JOb2Rl
LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gQXVkaW9Db250ZXh0
IGJlZm9yZSB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0gc28gdGhhdCBpdCBjYW4gaW5z
cGVjdCB0aGUgYXVkaW8gc3RyZWFtLgogY2xhc3MgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShB
dWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBvdXRwdXRDaGFubmVsQ291
bnQpOworICAgIEF1ZGlvQmFzaWNJbnNwZWN0b3JOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG91dHB1dENoYW5uZWxDb3VudCk7CiAKICAgICAvLyBBdWRpb05v
ZGUKICAgICB2aXJ0dWFsIHZvaWQgcHVsbElucHV0cyhzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9CYXNpY1Byb2Nlc3Nvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKaW5kZXggYWZhNjdhOWFkMWVlOTA1ZjRiZWI4
ZTFiMWE4YzE5YWJjNTA1ZGZmMS4uNDI3OWEwOTE2ZTRmN2YzODU5NTUzMWRlMTEwYTUwYTA5NGY5
NDZlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZTo6QXVkaW9CYXNpY1Byb2Nl
c3Nvck5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQXVkaW9C
YXNpY1Byb2Nlc3Nvck5vZGU6OkF1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYg
Y29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1w
bGVSYXRlKQogewogICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+
KHRoaXMpKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEF1ZGlvQmFzaWNQcm9jZXNzb3JOb2Rl
OjpyZXNldCgpCiAvLyB1bmluaXRpYWxpemUgYW5kIHRoZW4gcmUtaW5pdGlhbGl6ZSB3aXRoIHRo
ZSBuZXcgY2hhbm5lbCBjb3VudC4KIHZvaWQgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGU6OmNoZWNr
TnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KiBpbnB1dCkKIHsKLSAgICBB
U1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgpLT5pc0dyYXBoT3du
ZXIoKSk7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgp
LmlzR3JhcGhPd25lcigpKTsKICAgICAKICAgICBBU1NFUlQoaW5wdXQgPT0gdGhpcy0+aW5wdXQo
MCkpOwogICAgIGlmIChpbnB1dCAhPSB0aGlzLT5pbnB1dCgwKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUuaApp
bmRleCBkODk0NmUxYzk1MmY4NmEyNmVkYWRmMmU2OTg0ZGQ3ZjgwMzUwNGRjLi5mYzI1YzAzMDcz
NmQ0NDhjNjFmNmFmOTUzNjdlZWY3M2RjNzQyNjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQmFzaWNQcm9jZXNzb3JOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZS5oCkBAIC00
MCw3ICs0MCw3IEBAIGNsYXNzIEF1ZGlvUHJvY2Vzc29yOwogLy8gQXVkaW9CYXNpY1Byb2Nlc3Nv
ck5vZGUgaXMgYW4gQXVkaW9Ob2RlIHdpdGggb25lIGlucHV0IGFuZCBvbmUgb3V0cHV0IHdoZXJl
IHRoZSBpbnB1dCBhbmQgb3V0cHV0IGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIGNoYW5uZWxzLgog
Y2xhc3MgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1Ymxp
YzoKLSAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1w
bGVSYXRlKTsKKyAgICBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQmLCBmbG9h
dCBzYW1wbGVSYXRlKTsKIAogICAgIC8vIEF1ZGlvTm9kZQogICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzKHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuY3BwCmlu
ZGV4IDc3YmViYjliMjMyZTRjN2E0ZGUzZTRlNzhhZTc0Y2VmYmM5NTJhMTguLmM4MTkyYzFlMWEz
MWNmNTEyMDY3ZDMyNzVjNGMyNjBlY2JhYjE3NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5jcHAKQEAgLTQ5
LDEyICs0OSwxMiBAQCBjb25zdCBkb3VibGUgRGVmYXVsdEdyYWluRHVyYXRpb24gPSAwLjAyMDsg
Ly8gMjBtcwogLy8gdG8gbWluaW1pemUgbGluZWFyIGludGVycG9sYXRpb24gYWxpYXNpbmcuCiBj
b25zdCBkb3VibGUgTWF4UmF0ZSA9IDEwMjQ7CiAKLVJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+
IEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxv
YXQgc2FtcGxlUmF0ZSkKK1JlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IEF1ZGlvQnVmZmVyU291
cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkK
IHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBBdWRpb0J1ZmZlclNvdXJjZU5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSkpOwogfQogCi1BdWRpb0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVy
U291cmNlTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRp
b0J1ZmZlclNvdXJjZU5vZGU6OkF1ZGlvQnVmZmVyU291cmNlTm9kZShBdWRpb0NvbnRleHQmIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUo
Y29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fYnVmZmVyKG51bGxwdHIpCiAgICAgLCBtX2lz
TG9vcGluZyhmYWxzZSkKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZTo6cmVuZGVyU2lsZW5jZUFuZEZpbmlzaElmTm90TG9vcGluZyhBdWRpb0J1cyosIHVuc2ln
bgogCiBib29sIEF1ZGlvQnVmZmVyU291cmNlTm9kZTo6cmVuZGVyRnJvbUJ1ZmZlcihBdWRpb0J1
cyogYnVzLCB1bnNpZ25lZCBkZXN0aW5hdGlvbkZyYW1lT2Zmc2V0LCBzaXplX3QgbnVtYmVyT2ZG
cmFtZXMpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKTsKKyAgICBB
U1NFUlQoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSk7CiAKICAgICAvLyBCYXNpYyBzYW5pdHkg
Y2hlY2tpbmcKICAgICBBU1NFUlQoYnVzKTsKQEAgLTQxMyw3ICs0MTMsNyBAQCBib29sIEF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6c2V0QnVmZmVyKEF1ZGlvQnVmZmVyKiBidWZmZXIpCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAKICAgICAvLyBUaGUgY29udGV4dCBtdXN0IGJlIGxv
Y2tlZCBzaW5jZSBjaGFuZ2luZyB0aGUgYnVmZmVyIGNhbiByZS1jb25maWd1cmUgdGhlIG51bWJl
ciBvZiBjaGFubmVscyB0aGF0IGFyZSBvdXRwdXQuCi0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGNvbnRleHRMb2NrZXIoKmNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9j
a2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgpKTsKICAgICAKICAgICAvLyBUaGlzIHN5bmNocm9u
aXplcyB3aXRoIHByb2Nlc3MoKS4KICAgICBzdGQ6OmxvY2tfZ3VhcmQ8TG9jaz4gbG9jayhtX3By
b2Nlc3NNdXRleCk7CkBAIC00NjksNyArNDY5LDcgQEAgdm9pZCBBdWRpb0J1ZmZlclNvdXJjZU5v
ZGU6OnN0YXJ0UGxheWluZyhCdWZmZXJQbGF5YmFja01vZGUgcGxheWJhY2tNb2RlLCBkb3VibGUK
IHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgY29udGV4dCgpLT5ub2RlV2ls
bEJlZ2luUGxheWJhY2soKTsKKyAgICBjb250ZXh0KCkubm9kZVdpbGxCZWdpblBsYXliYWNrKCk7
CiAKICAgICBpZiAobV9wbGF5YmFja1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKSB7CiAgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CkBAIC01NjEsOCArNTYxLDggQEAgZG91YmxlIEF1
ZGlvQnVmZmVyU291cmNlTm9kZTo6dG90YWxQaXRjaFJhdGUoKQogYm9vbCBBdWRpb0J1ZmZlclNv
dXJjZU5vZGU6Omxvb3BpbmcoKQogewogICAgIHN0YXRpYyBib29sIGZpcnN0VGltZSA9IHRydWU7
Ci0gICAgaWYgKGZpcnN0VGltZSAmJiBjb250ZXh0KCkgJiYgY29udGV4dCgpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAgY29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIEFTQ0lJTGl0ZXJhbCgiQXVkaW9CdWZmZXJTb3VyY2VOb2RlICdsb29waW5nJyBh
dHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4gIFVzZSAnbG9vcCcgaW5zdGVhZC4iKSk7CisgICAgaWYg
KGZpcnN0VGltZSAmJiBjb250ZXh0KCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAg
ICAgIGNvbnRleHQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIEFTQ0lJTGl0ZXJhbCgi
QXVkaW9CdWZmZXJTb3VyY2VOb2RlICdsb29waW5nJyBhdHRyaWJ1dGUgaXMgZGVwcmVjYXRlZC4g
IFVzZSAnbG9vcCcgaW5zdGVhZC4iKSk7CiAgICAgICAgIGZpcnN0VGltZSA9IGZhbHNlOwogICAg
IH0KIApAQCAtNTcyLDggKzU3Miw4IEBAIGJvb2wgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpsb29w
aW5nKCkKIHZvaWQgQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpzZXRMb29waW5nKGJvb2wgbG9vcGlu
ZykKIHsKICAgICBzdGF0aWMgYm9vbCBmaXJzdFRpbWUgPSB0cnVlOwotICAgIGlmIChmaXJzdFRp
bWUgJiYgY29udGV4dCgpICYmIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7
Ci0gICAgICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBBU0NJSUxp
dGVyYWwoIkF1ZGlvQnVmZmVyU291cmNlTm9kZSAnbG9vcGluZycgYXR0cmlidXRlIGlzIGRlcHJl
Y2F0ZWQuICBVc2UgJ2xvb3AnIGluc3RlYWQuIikpOworICAgIGlmIChmaXJzdFRpbWUgJiYgY29u
dGV4dCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICBjb250ZXh0KCkuc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpK
UywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBBU0NJSUxpdGVyYWwoIkF1ZGlvQnVmZmVyU291cmNl
Tm9kZSAnbG9vcGluZycgYXR0cmlidXRlIGlzIGRlcHJlY2F0ZWQuICBVc2UgJ2xvb3AnIGluc3Rl
YWQuIikpOwogICAgICAgICBmaXJzdFRpbWUgPSBmYWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQnVmZmVyU291cmNlTm9kZS5o
CmluZGV4IDJlYjg3NjlhMTM5MGNkMDdhZTZjNWZkNmM3NWU4MzMyYjVmM2NhYjkuLjRiMDI0MDI5
ODJmOWNkNTBmNWE4OTY4NGVmMWEyNzBkYWJjNGIzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9CdWZmZXJTb3VyY2VOb2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0J1ZmZlclNvdXJjZU5vZGUuaApAQCAtNDUs
NyArNDUsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAKIGNsYXNzIEF1ZGlvQnVmZmVyU291cmNl
Tm9kZSA6IHB1YmxpYyBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWY8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgfkF1
ZGlvQnVmZmVyU291cmNlTm9kZSgpOwogCkBAIC0xMDIsNyArMTAyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBmaW5pc2goKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBBdWRpb0J1
ZmZlclNvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAg
ICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9
CiAgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biAwOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4
dC5jcHAKaW5kZXggZDhhZTZlMmY2OWExNzU3MTIwNGE0MTJhYTkxNWZiMWFkZGIwNmMxNS4uNTQ2
YmZjZDM5ZWY4ODhmMDJkYTgzYWJjMWFjZmExNjhjMzBiZjQ4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcApAQCAtMTM2LDcgKzEzNiw3
IEBAIEF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3VtZW50JiBkb2N1bWVudCkKIHsKICAg
ICBjb25zdHJ1Y3RDb21tb24oKTsKIAotICAgIG1fZGVzdGluYXRpb25Ob2RlID0gRGVmYXVsdEF1
ZGlvRGVzdGluYXRpb25Ob2RlOjpjcmVhdGUodGhpcyk7CisgICAgbV9kZXN0aW5hdGlvbk5vZGUg
PSBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSgqdGhpcyk7CiAKICAgICAvLyBJ
bml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiBub2RlJ3MgbXV0ZWQgc3RhdGUgdG8gbWF0Y2ggdGhl
IHBhZ2UncyBjdXJyZW50IG11dGVkIHN0YXRlLgogICAgIHBhZ2VNdXRlZFN0YXRlRGlkQ2hhbmdl
KCk7CkBAIC0xNTQsNyArMTU0LDcgQEAgQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1l
bnQmIGRvY3VtZW50LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QKIAogICAgIC8v
IENyZWF0ZSBhIG5ldyBkZXN0aW5hdGlvbiBmb3Igb2ZmbGluZSByZW5kZXJpbmcuCiAgICAgbV9y
ZW5kZXJUYXJnZXQgPSBBdWRpb0J1ZmZlcjo6Y3JlYXRlKG51bWJlck9mQ2hhbm5lbHMsIG51bWJl
ck9mRnJhbWVzLCBzYW1wbGVSYXRlKTsKLSAgICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKHRoaXMsIG1fcmVuZGVyVGFyZ2V0LmdldCgpKTsK
KyAgICBtX2Rlc3RpbmF0aW9uTm9kZSA9IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3Jl
YXRlKCp0aGlzLCBtX3JlbmRlclRhcmdldC5nZXQoKSk7CiB9CiAKIHZvaWQgQXVkaW9Db250ZXh0
Ojpjb25zdHJ1Y3RDb21tb24oKQpAQCAtNDE4LDcgKzQxOCw3IEBAIFBhc3NSZWZQdHI8QXVkaW9C
dWZmZXJTb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJ1ZmZlclNvdXJjZSgpCiB7CiAg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIFJl
ZlB0cjxBdWRpb0J1ZmZlclNvdXJjZU5vZGU+IG5vZGUgPSBBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKKyAgICBSZWZQ
dHI8QXVkaW9CdWZmZXJTb3VyY2VOb2RlPiBub2RlID0gQXVkaW9CdWZmZXJTb3VyY2VOb2RlOjpj
cmVhdGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogCiAgICAgLy8g
QmVjYXVzZSB0aGlzIGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQg
a2VlcHMgYSByZWZlcmVuY2UgdW50aWwgaXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCiAgICAgLy8g
V2hlbiB0aGlzIGhhcHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2Fs
bHMgQXVkaW9Db250ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCkBAIC00NDUs
NyArNDQ1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IEF1ZGlv
Q29udGV4dDo6Y3JlYXRlTWVkaWFFbGVtZW50U291cmNlKEgKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgICAgICAKLSAgICBSZWZQdHI8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlPiBub2RlID0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUodGhpcywgbWVk
aWFFbGVtZW50KTsKKyAgICBSZWZQdHI8TWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBub2Rl
ID0gTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlOjpjcmVhdGUoKnRoaXMsIG1lZGlhRWxlbWVu
dCk7CiAKICAgICBtZWRpYUVsZW1lbnQtPnNldEF1ZGlvU291cmNlTm9kZShub2RlLmdldCgpKTsK
IApAQCAtNDk3LDcgKzQ5Nyw3IEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0
aW9uTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbURlc3RpCiB7CiAgICAgLy8g
RklYTUU6IEFkZCBzdXBwb3J0IGZvciBhbiBvcHRpb25hbCBhcmd1bWVudCB3aGljaCBzcGVjaWZp
ZXMgdGhlIG51bWJlciBvZiBjaGFubmVscy4KICAgICAvLyBGSVhNRTogVGhlIGRlZmF1bHQgc2hv
dWxkIHByb2JhYmx5IGJlIHN0ZXJlbyBpbnN0ZWFkIG9mIG1vbm8uCi0gICAgcmV0dXJuIE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZSh0aGlzLCAxKTsKKyAgICByZXR1cm4g
TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZTo6Y3JlYXRlKCp0aGlzLCAxKTsKIH0KIAog
I2VuZGlmCkBAIC01MTgsNyArNTE4LDcgQEAgUGFzc1JlZlB0cjxTY3JpcHRQcm9jZXNzb3JOb2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVNjcmlwdFByb2Nlc3NvcihzaXplX3QgYnVmZmUKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgUmVm
UHRyPFNjcmlwdFByb2Nlc3Nvck5vZGU+IG5vZGUgPSBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVh
dGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVt
YmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBSZWZQdHI8
U2NyaXB0UHJvY2Vzc29yTm9kZT4gbm9kZSA9IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZSgq
dGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgYnVmZmVyU2l6ZSwgbnVtYmVy
T2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKIAogICAgIGlmICghbm9k
ZS5nZXQoKSkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwpAQCAtNTMzLDQ5ICs1MzMs
NDkgQEAgUGFzc1JlZlB0cjxCaXF1YWRGaWx0ZXJOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZUJp
cXVhZEZpbHRlcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5p
dGlhbGl6ZSgpOwotICAgIHJldHVybiBCaXF1YWRGaWx0ZXJOb2RlOjpjcmVhdGUodGhpcywgbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAgcmV0dXJuIEJpcXVhZEZpbHRlck5v
ZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CiB9CiAK
IFBhc3NSZWZQdHI8V2F2ZVNoYXBlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlV2F2ZVNoYXBl
cigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgp
OwotICAgIHJldHVybiBXYXZlU2hhcGVyTm9kZTo6Y3JlYXRlKHRoaXMpOworICAgIHJldHVybiBX
YXZlU2hhcGVyTm9kZTo6Y3JlYXRlKCp0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxQYW5uZXJOb2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZVBhbm5lcigpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwotICAgIHJldHVybiBQYW5uZXJOb2RlOjpjcmVh
dGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAgcmV0dXJuIFBh
bm5lck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7
CiB9CiAKIFBhc3NSZWZQdHI8Q29udm9sdmVyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVDb252
b2x2ZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxp
emUoKTsKLSAgICByZXR1cm4gQ29udm9sdmVyTm9kZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRp
b25Ob2RlLT5zYW1wbGVSYXRlKCkpOworICAgIHJldHVybiBDb252b2x2ZXJOb2RlOjpjcmVhdGUo
KnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogfQogCiBQYXNzUmVmUHRy
PER5bmFtaWNzQ29tcHJlc3Nvck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlRHluYW1pY3NDb21w
cmVzc29yKCkKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFs
aXplKCk7Ci0gICAgcmV0dXJuIER5bmFtaWNzQ29tcHJlc3Nvck5vZGU6OmNyZWF0ZSh0aGlzLCBt
X2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKKyAgICByZXR1cm4gRHluYW1pY3NDb21w
cmVzc29yTm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgp
KTsKIH0KIAogUGFzc1JlZlB0cjxBbmFseXNlck5vZGU+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlQW5h
bHlzZXIoKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxp
emUoKTsKLSAgICByZXR1cm4gQW5hbHlzZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlv
bk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAgcmV0dXJuIEFuYWx5c2VyTm9kZTo6Y3JlYXRlKCp0
aGlzLCBtX2Rlc3RpbmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpKTsKIH0KIAogUGFzc1JlZlB0cjxH
YWluTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVHYWluKCkKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFsaXplKCk7Ci0gICAgcmV0dXJuIEdhaW5Ob2RlOjpj
cmVhdGUodGhpcywgbV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSk7CisgICAgcmV0dXJu
IEdhaW5Ob2RlOjpjcmVhdGUoKnRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkp
OwogfQogCiBQYXNzUmVmUHRyPERlbGF5Tm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShF
eGNlcHRpb25Db2RlJiBlYykKQEAgLTU4OCw3ICs1ODgsNyBAQCBQYXNzUmVmUHRyPERlbGF5Tm9k
ZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVEZWxheShkb3VibGUgbWF4RGVsYXlUaW1lLCBFeGNlcHRp
b25DbwogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgbGF6eUluaXRpYWxpemUo
KTsKLSAgICBSZWZQdHI8RGVsYXlOb2RlPiBub2RlID0gRGVsYXlOb2RlOjpjcmVhdGUodGhpcywg
bV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbWF4RGVsYXlUaW1lLCBlYyk7CisgICAg
UmVmUHRyPERlbGF5Tm9kZT4gbm9kZSA9IERlbGF5Tm9kZTo6Y3JlYXRlKCp0aGlzLCBtX2Rlc3Rp
bmF0aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBtYXhEZWxheVRpbWUsIGVjKTsKICAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBub2RlOwpAQCAtNjA1LDcgKzYw
NSw3IEBAIFBhc3NSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVh
dGVDaGFubmVsU3BsaXR0ZXIoc2l6ZV90IG51bWJlCiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5v
ZGU+IG5vZGUgPSBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUodGhpcywgbV9kZXN0aW5hdGlv
bk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBSZWZQdHI8Q2hhbm5l
bFNwbGl0dGVyTm9kZT4gbm9kZSA9IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZSgqdGhpcywg
bV9kZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZPdXRwdXRzKTsKIAogICAg
IGlmICghbm9kZS5nZXQoKSkgewogICAgICAgICBlYyA9IElOREVYX1NJWkVfRVJSOwpAQCAtNjI2
LDcgKzYyNiw3IEBAIFBhc3NSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IEF1ZGlvQ29udGV4dDo6
Y3JlYXRlQ2hhbm5lbE1lcmdlcihzaXplX3QgbnVtYmVyT2ZJCiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICBsYXp5SW5pdGlhbGl6ZSgpOwogCi0gICAgUmVmUHRyPENoYW5uZWxNZXJn
ZXJOb2RlPiBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSh0aGlzLCBtX2Rlc3RpbmF0
aW9uTm9kZS0+c2FtcGxlUmF0ZSgpLCBudW1iZXJPZklucHV0cyk7CisgICAgUmVmUHRyPENoYW5u
ZWxNZXJnZXJOb2RlPiBub2RlID0gQ2hhbm5lbE1lcmdlck5vZGU6OmNyZWF0ZSgqdGhpcywgbV9k
ZXN0aW5hdGlvbk5vZGUtPnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZJbnB1dHMpOwogCiAgICAgaWYg
KCFub2RlLmdldCgpKSB7CiAgICAgICAgIGVjID0gSU5ERVhfU0laRV9FUlI7CkBAIC02NDEsNyAr
NjQxLDcgQEAgUGFzc1JlZlB0cjxPc2NpbGxhdG9yTm9kZT4gQXVkaW9Db250ZXh0OjpjcmVhdGVP
c2NpbGxhdG9yKCkKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIGxhenlJbml0aWFs
aXplKCk7CiAKLSAgICBSZWZQdHI8T3NjaWxsYXRvck5vZGU+IG5vZGUgPSBPc2NpbGxhdG9yTm9k
ZTo6Y3JlYXRlKHRoaXMsIG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOworICAgIFJl
ZlB0cjxPc2NpbGxhdG9yTm9kZT4gbm9kZSA9IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoKnRoaXMs
IG1fZGVzdGluYXRpb25Ob2RlLT5zYW1wbGVSYXRlKCkpOwogCiAgICAgLy8gQmVjYXVzZSB0aGlz
IGlzIGFuIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZSwgdGhlIGNvbnRleHQga2VlcHMgYSByZWZl
cmVuY2UgdW50aWwgaXQgaGFzIGZpbmlzaGVkIHBsYXlpbmcuCiAgICAgLy8gV2hlbiB0aGlzIGhh
cHBlbnMsIEF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6ZmluaXNoKCkgY2FsbHMgQXVkaW9Db250
ZXh0Ojpub3RpZnlOb2RlRmluaXNoZWRQcm9jZXNzaW5nKCkuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAppbmRleCAxNTMxMTUxN2ZjMGJiOTlhYjgw
N2FmYjg3OGQ1OTg3MDJmMDA5YTE0Li5hYmEzNjE1NzM3YjMwNGI2MTM5ZDllYzBjMTU4ZDk3YTdi
NzNlZWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250
ZXh0LmgKQEAgLTM5OCw2ICszOTgsMTQgQEAgcHJpdmF0ZToKICAgICBTdGF0ZSBtX3N0YXRlIHsg
U3RhdGU6OlN1c3BlbmRlZCB9OwogfTsKIAoraW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBB
dWRpb0NvbnRleHQmIGxocywgY29uc3QgQXVkaW9Db250ZXh0JiByaHMpIHsKKyAgICByZXR1cm4g
JmxocyA9PSAmcmhzOworfQorCitpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEF1ZGlvQ29u
dGV4dCYgbGhzLCBjb25zdCBBdWRpb0NvbnRleHQmIHJocykgeworICAgIHJldHVybiAmbGhzICE9
ICZyaHM7Cit9CisKIH0gLy8gV2ViQ29yZQogCiAjZW5kaWYgLy8gQXVkaW9Db250ZXh0X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9EZXN0aW5hdGlv
bk5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0
aW9uTm9kZS5jcHAKaW5kZXggNzY0MWE3MjA4ZjEzNGRhZTRlOWI3NDMyZThiNWZmOTJjMTNkYTBh
MS4uZTgxNjMxOWE0NWE3YTA3NjQzYWQwMmY0MjU2NjE4MTMwMmE2ZTVjYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotQXVk
aW9EZXN0aW5hdGlvbk5vZGU6OkF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCogY29u
dGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1ZGlvRGVzdGluYXRpb25Ob2RlOjpBdWRpb0Rlc3Rp
bmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAg
OiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fY3VycmVudFNhbXBsZUZy
YW1lKDApCiAgICAgLCBtX2lzU2lsZW50KHRydWUpCkBAIC02MCwxNiArNjAsMTYgQEAgdm9pZCBB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6cmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0
aW9uQnVzLCBzaXplX3QgbnUKICAgICAvLyBUaGlzIHdpbGwgdGFrZSBjYXJlIG9mIGFsbCBBdWRp
b05vZGVzIGJlY2F1c2UgdGhleSBhbGwgcHJvY2VzcyB3aXRoaW4gdGhpcyBzY29wZS4KICAgICBE
ZW5vcm1hbERpc2FibGVyIGRlbm9ybWFsRGlzYWJsZXI7CiAgICAgCi0gICAgY29udGV4dCgpLT5z
ZXRBdWRpb1RocmVhZChjdXJyZW50VGhyZWFkKCkpOworICAgIGNvbnRleHQoKS5zZXRBdWRpb1Ro
cmVhZChjdXJyZW50VGhyZWFkKCkpOwogICAgIAotICAgIGlmICghY29udGV4dCgpLT5pc0luaXRp
YWxpemVkKCkpIHsKKyAgICBpZiAoIWNvbnRleHQoKS5pc0luaXRpYWxpemVkKCkpIHsKICAgICAg
ICAgZGVzdGluYXRpb25CdXMtPnplcm8oKTsKICAgICAgICAgc2V0SXNTaWxlbnQodHJ1ZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAvLyBMZXQgdGhlIGNvbnRleHQgdGFrZSBjYXJl
IG9mIGFueSBidXNpbmVzcyBhdCB0aGUgc3RhcnQgb2YgZWFjaCByZW5kZXIgcXVhbnR1bS4KLSAg
ICBjb250ZXh0KCktPmhhbmRsZVByZVJlbmRlclRhc2tzKCk7CisgICAgY29udGV4dCgpLmhhbmRs
ZVByZVJlbmRlclRhc2tzKCk7CiAKICAgICAvLyBUaGlzIHdpbGwgY2F1c2UgdGhlIG5vZGUocykg
Y29ubmVjdGVkIHRvIHVzIHRvIHByb2Nlc3MsIHdoaWNoIGluIHR1cm4gd2lsbCBwdWxsIG9uIHRo
ZWlyIGlucHV0KHMpLAogICAgIC8vIGFsbCB0aGUgd2F5IGJhY2t3YXJkcyB0aHJvdWdoIHRoZSBy
ZW5kZXJpbmcgZ3JhcGguCkBAIC04MywxMCArODMsMTAgQEAgdm9pZCBBdWRpb0Rlc3RpbmF0aW9u
Tm9kZTo6cmVuZGVyKEF1ZGlvQnVzKiwgQXVkaW9CdXMqIGRlc3RpbmF0aW9uQnVzLCBzaXplX3Qg
bnUKICAgICB9CiAKICAgICAvLyBQcm9jZXNzIG5vZGVzIHdoaWNoIG5lZWQgYSBsaXR0bGUgZXh0
cmEgaGVscCBiZWNhdXNlIHRoZXkgYXJlIG5vdCBjb25uZWN0ZWQgdG8gYW55dGhpbmcsIGJ1dCBz
dGlsbCBuZWVkIHRvIHByb2Nlc3MuCi0gICAgY29udGV4dCgpLT5wcm9jZXNzQXV0b21hdGljUHVs
bE5vZGVzKG51bWJlck9mRnJhbWVzKTsKKyAgICBjb250ZXh0KCkucHJvY2Vzc0F1dG9tYXRpY1B1
bGxOb2RlcyhudW1iZXJPZkZyYW1lcyk7CiAKICAgICAvLyBMZXQgdGhlIGNvbnRleHQgdGFrZSBj
YXJlIG9mIGFueSBidXNpbmVzcyBhdCB0aGUgZW5kIG9mIGVhY2ggcmVuZGVyIHF1YW50dW0uCi0g
ICAgY29udGV4dCgpLT5oYW5kbGVQb3N0UmVuZGVyVGFza3MoKTsKKyAgICBjb250ZXh0KCkuaGFu
ZGxlUG9zdFJlbmRlclRhc2tzKCk7CiAgICAgCiAgICAgLy8gQWR2YW5jZSBjdXJyZW50IHNhbXBs
ZS1mcmFtZS4KICAgICBtX2N1cnJlbnRTYW1wbGVGcmFtZSArPSBudW1iZXJPZkZyYW1lczsKQEAg
LTEyMCw4ICsxMjAsNyBAQCB2b2lkIEF1ZGlvRGVzdGluYXRpb25Ob2RlOjp1cGRhdGVJc0VmZmVj
dGl2ZWx5UGxheWluZ0F1ZGlvKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9pc0VmZmVjdGl2
ZWx5UGxheWluZ0F1ZGlvID0gaXNFZmZlY3RpdmVseVBsYXlpbmdBdWRpbzsKLSAgICBpZiAoY29u
dGV4dCgpKQotICAgICAgICBjb250ZXh0KCktPmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCk7Cisg
ICAgY29udGV4dCgpLmlzUGxheWluZ0F1ZGlvRGlkQ2hhbmdlKCk7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAppbmRleCA5OWFlOGRlNThkNzZiYjBhZjdhYmFmOWExMDg3
OTgxYjMxMmVmNDJiLi4yYzdiNDVhZmJlZGI4MWYyODZiZTBlYzE3YzgyYjMyMGJmM2JjYzU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvRGVzdGluYXRp
b25Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0Rlc3Rp
bmF0aW9uTm9kZS5oCkBAIC0zOCw3ICszOCw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKIAogY2xh
c3MgQXVkaW9EZXN0aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVkaW9J
T0NhbGxiYWNrIHsKIHB1YmxpYzoKLSAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRl
eHQqLCBmbG9hdCBzYW1wbGVSYXRlKTsKKyAgICBBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0Nv
bnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0dWFsIH5BdWRpb0Rlc3RpbmF0aW9u
Tm9kZSgpOwogICAgIAogICAgIC8vIEF1ZGlvTm9kZSAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGUuY3BwCmluZGV4IDAzODc5MDZmMmI4NjNhYzU4ZmE5MDBi
MWYyY2Y5NDdlYWQxYWVkZTguLmZiNWVlOWMwOGIwOTRlNTc0MjQ3MjVjYjNjNTMyNTI2NmZkZmJm
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5jcHAK
QEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1BdWRpb05vZGU6OkF1
ZGlvTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitBdWRpb05v
ZGU6OkF1ZGlvTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAg
ICAgOiBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX25vZGVUeXBlKE5vZGVUeXBlVW5r
bm93bikKICAgICAsIG1fY29udGV4dChjb250ZXh0KQpAQCAtMTI2LDcgKzEyNiw3IEBAIEF1ZGlv
Tm9kZU91dHB1dCogQXVkaW9Ob2RlOjpvdXRwdXQodW5zaWduZWQgaSkKIHZvaWQgQXVkaW9Ob2Rl
Ojpjb25uZWN0KEF1ZGlvTm9kZSogZGVzdGluYXRpb24sIHVuc2lnbmVkIG91dHB1dEluZGV4LCB1
bnNpZ25lZCBpbnB1dEluZGV4LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOyAKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKCpjb250
ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsK
IAogICAgIGlmICghZGVzdGluYXRpb24pIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAt
MTU0LDEzICsxNTQsMTMgQEAgdm9pZCBBdWRpb05vZGU6OmNvbm5lY3QoQXVkaW9Ob2RlKiBkZXN0
aW5hdGlvbiwgdW5zaWduZWQgb3V0cHV0SW5kZXgsIHVuc2lnbmVkIGkKICAgICBpbnB1dC0+Y29u
bmVjdChvdXRwdXQpOwogCiAgICAgLy8gTGV0IGNvbnRleHQga25vdyB0aGF0IGEgY29ubmVjdGlv
biBoYXMgYmVlbiBtYWRlLgotICAgIGNvbnRleHQoKS0+aW5jcmVtZW50Q29ubmVjdGlvbkNvdW50
KCk7CisgICAgY29udGV4dCgpLmluY3JlbWVudENvbm5lY3Rpb25Db3VudCgpOwogfQogCiB2b2lk
IEF1ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtKiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5k
ZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0g
ICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcigqY29udGV4dCgpKTsKKyAgICBBdWRp
b0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRleHQoKSk7CiAKICAgICBpZiAoIXBhcmFt
KSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIEF1
ZGlvTm9kZTo6Y29ubmVjdChBdWRpb1BhcmFtKiBwYXJhbSwgdW5zaWduZWQgb3V0cHV0SW5kZXgs
IEV4Y2VwdGlvbkNvZGUmCiB2b2lkIEF1ZGlvTm9kZTo6ZGlzY29ubmVjdCh1bnNpZ25lZCBvdXRw
dXRJbmRleCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKCpjb250ZXh0KCkpOworICAg
IEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29udGV4dCgpKTsKIAogICAgIC8vIFNh
bml0eSBjaGVjayBpbnB1dCBhbmQgb3V0cHV0IGluZGljZXMuCiAgICAgaWYgKG91dHB1dEluZGV4
ID49IG51bWJlck9mT3V0cHV0cygpKSB7CkBAIC0yMDQsNyArMjA0LDcgQEAgdW5zaWduZWQgbG9u
ZyBBdWRpb05vZGU6OmNoYW5uZWxDb3VudCgpCiB2b2lkIEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbENv
dW50KHVuc2lnbmVkIGxvbmcgY2hhbm5lbENvdW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBs
b2NrZXIoKmNvbnRleHQoKSk7CisgICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihj
b250ZXh0KCkpOwogCiAgICAgaWYgKGNoYW5uZWxDb3VudCA+IDAgJiYgY2hhbm5lbENvdW50IDw9
IEF1ZGlvQ29udGV4dDo6bWF4TnVtYmVyT2ZDaGFubmVscygpKSB7CiAgICAgICAgIGlmIChtX2No
YW5uZWxDb3VudCAhPSBjaGFubmVsQ291bnQpIHsKQEAgLTIzMyw3ICsyMzMsNyBAQCBTdHJpbmcg
QXVkaW9Ob2RlOjpjaGFubmVsQ291bnRNb2RlKCkKIHZvaWQgQXVkaW9Ob2RlOjpzZXRDaGFubmVs
Q291bnRNb2RlKGNvbnN0IFN0cmluZyYgbW9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9j
a2VyKCpjb250ZXh0KCkpOworICAgIEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBsb2NrZXIoY29u
dGV4dCgpKTsKIAogICAgIENoYW5uZWxDb3VudE1vZGUgb2xkTW9kZSA9IG1fY2hhbm5lbENvdW50
TW9kZTsKIApAQCAtMjY1LDcgKzI2NSw3IEBAIFN0cmluZyBBdWRpb05vZGU6OmNoYW5uZWxJbnRl
cnByZXRhdGlvbigpCiB2b2lkIEF1ZGlvTm9kZTo6c2V0Q2hhbm5lbEludGVycHJldGF0aW9uKGNv
bnN0IFN0cmluZyYgaW50ZXJwcmV0YXRpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgQXVkaW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tl
cigqY29udGV4dCgpKTsKKyAgICBBdWRpb0NvbnRleHQ6OkF1dG9Mb2NrZXIgbG9ja2VyKGNvbnRl
eHQoKSk7CiAKICAgICBpZiAoaW50ZXJwcmV0YXRpb24gPT0gInNwZWFrZXJzIikKICAgICAgICAg
bV9jaGFubmVsSW50ZXJwcmV0YXRpb24gPSBBdWRpb0J1czo6U3BlYWtlcnM7CkBAIC0yODgsMTIg
KzI4OCwxMiBAQCBFdmVudFRhcmdldEludGVyZmFjZSBBdWRpb05vZGU6OmV2ZW50VGFyZ2V0SW50
ZXJmYWNlKCkgY29uc3QKIAogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogQXVkaW9Ob2RlOjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxBdWRp
b05vZGUqPih0aGlzKS0+Y29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CisgICAg
cmV0dXJuIGNvbnN0X2Nhc3Q8QXVkaW9Ob2RlKj4odGhpcyktPmNvbnRleHQoKS5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7CiB9CiAKIHZvaWQgQXVkaW9Ob2RlOjpwcm9jZXNzSWZOZWNlc3Nhcnko
c2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBBU1NFUlQoY29udGV4dCgpLT5pc0F1ZGlv
VGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNBdWRpb1RocmVhZCgpKTsKIAogICAg
IGlmICghaXNJbml0aWFsaXplZCgpKQogICAgICAgICByZXR1cm47CkBAIC0zMDIsNyArMzAyLDcg
QEAgdm9pZCBBdWRpb05vZGU6OnByb2Nlc3NJZk5lY2Vzc2FyeShzaXplX3QgZnJhbWVzVG9Qcm9j
ZXNzKQogICAgIC8vIFRoaXMgaGFuZGxlcyB0aGUgImZhbm91dCIgcHJvYmxlbSB3aGVyZSBhbiBv
dXRwdXQgaXMgY29ubmVjdGVkIHRvIG11bHRpcGxlIGlucHV0cy4KICAgICAvLyBUaGUgZmlyc3Qg
dGltZSB3ZSdyZSBjYWxsZWQgZHVyaW5nIHRoaXMgdGltZSBzbGljZSB3ZSBwcm9jZXNzLCBidXQg
YWZ0ZXIgdGhhdCB3ZSBkb24ndCB3YW50IHRvIHJlLXByb2Nlc3MsCiAgICAgLy8gaW5zdGVhZCBv
dXIgb3V0cHV0KHMpIHdpbGwgYWxyZWFkeSBoYXZlIHRoZSByZXN1bHRzIGNhY2hlZCBpbiB0aGVp
ciBidXM7Ci0gICAgZG91YmxlIGN1cnJlbnRUaW1lID0gY29udGV4dCgpLT5jdXJyZW50VGltZSgp
OworICAgIGRvdWJsZSBjdXJyZW50VGltZSA9IGNvbnRleHQoKS5jdXJyZW50VGltZSgpOwogICAg
IGlmIChtX2xhc3RQcm9jZXNzaW5nVGltZSAhPSBjdXJyZW50VGltZSkgewogICAgICAgICBtX2xh
c3RQcm9jZXNzaW5nVGltZSA9IGN1cnJlbnRUaW1lOyAvLyBpbXBvcnRhbnQgdG8gZmlyc3QgdXBk
YXRlIHRoaXMgdGltZSBiZWNhdXNlIG9mIGZlZWRiYWNrIGxvb3BzIGluIHRoZSByZW5kZXJpbmcg
Z3JhcGgKIApAQCAtMzEwLDcgKzMxMCw3IEBAIHZvaWQgQXVkaW9Ob2RlOjpwcm9jZXNzSWZOZWNl
c3Nhcnkoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIAogICAgICAgICBib29sIHNpbGVudElucHV0
cyA9IGlucHV0c0FyZVNpbGVudCgpOwogICAgICAgICBpZiAoIXNpbGVudElucHV0cykKLSAgICAg
ICAgICAgIG1fbGFzdE5vblNpbGVudFRpbWUgPSAoY29udGV4dCgpLT5jdXJyZW50U2FtcGxlRnJh
bWUoKSArIGZyYW1lc1RvUHJvY2VzcykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG1fc2FtcGxlUmF0
ZSk7CisgICAgICAgICAgICBtX2xhc3ROb25TaWxlbnRUaW1lID0gKGNvbnRleHQoKS5jdXJyZW50
U2FtcGxlRnJhbWUoKSArIGZyYW1lc1RvUHJvY2VzcykgLyBzdGF0aWNfY2FzdDxkb3VibGU+KG1f
c2FtcGxlUmF0ZSk7CiAKICAgICAgICAgaWYgKHNpbGVudElucHV0cyAmJiBwcm9wYWdhdGVzU2ls
ZW5jZSgpKQogICAgICAgICAgICAgc2lsZW5jZU91dHB1dHMoKTsKQEAgLTMyMyw3ICszMjMsNyBA
QCB2b2lkIEF1ZGlvTm9kZTo6cHJvY2Vzc0lmTmVjZXNzYXJ5KHNpemVfdCBmcmFtZXNUb1Byb2Nl
c3MpCiAKIHZvaWQgQXVkaW9Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRp
b05vZGVJbnB1dCogaW5wdXQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVh
ZCgpICYmIGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCku
aXNBdWRpb1RocmVhZCgpICYmIGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBmb3Ig
KGF1dG8mIHNhdmVkSW5wdXQgOiBtX2lucHV0cykgewogICAgICAgICBpZiAoaW5wdXQgPT0gc2F2
ZWRJbnB1dC5nZXQoKSkgewpAQCAtMzM3LDEyICszMzcsMTIgQEAgdm9pZCBBdWRpb05vZGU6OmNo
ZWNrTnVtYmVyT2ZDaGFubmVsc0ZvcklucHV0KEF1ZGlvTm9kZUlucHV0KiBpbnB1dCkKIAogYm9v
bCBBdWRpb05vZGU6OnByb3BhZ2F0ZXNTaWxlbmNlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9s
YXN0Tm9uU2lsZW50VGltZSArIGxhdGVuY3lUaW1lKCkgKyB0YWlsVGltZSgpIDwgY29udGV4dCgp
LT5jdXJyZW50VGltZSgpOworICAgIHJldHVybiBtX2xhc3ROb25TaWxlbnRUaW1lICsgbGF0ZW5j
eVRpbWUoKSArIHRhaWxUaW1lKCkgPCBjb250ZXh0KCkuY3VycmVudFRpbWUoKTsKIH0KIAogdm9p
ZCBBdWRpb05vZGU6OnB1bGxJbnB1dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBB
U1NFUlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0KCku
aXNBdWRpb1RocmVhZCgpKTsKICAgICAKICAgICAvLyBQcm9jZXNzIGFsbCBvZiB0aGUgQXVkaW9O
b2RlcyBjb25uZWN0ZWQgdG8gb3VyIGlucHV0cy4KICAgICBmb3IgKGF1dG8mIGlucHV0IDogbV9p
bnB1dHMpCkBAIC0zNzQsNyArMzc0LDcgQEAgdm9pZCBBdWRpb05vZGU6OmVuYWJsZU91dHB1dHNJ
Zk5lY2Vzc2FyeSgpCiB7CiAgICAgaWYgKG1faXNEaXNhYmxlZCAmJiBtX2Nvbm5lY3Rpb25SZWZD
b3VudCA+IDApIHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICAgICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcigqY29udGV4dCgpKTsKKyAgICAgICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGxvY2tlcihjb250ZXh0KCkpOwogCiAgICAgICAgIG1faXNEaXNh
YmxlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKGF1dG8mIG91dHB1dCA6IG1fb3V0cHV0cykKQEAg
LTQzOSwxMSArNDM5LDExIEBAIHZvaWQgQXVkaW9Ob2RlOjpkZXJlZihSZWZUeXBlIHJlZlR5cGUp
CiAgICAgYm9vbCBoYXNMb2NrID0gZmFsc2U7CiAgICAgYm9vbCBtdXN0UmVsZWFzZUxvY2sgPSBm
YWxzZTsKICAgICAKLSAgICBpZiAoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpIHsKKyAgICBp
ZiAoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAgICAvLyBSZWFsLXRpbWUgYXVk
aW8gdGhyZWFkIG11c3Qgbm90IGNvbnRlbmQgbG9jayAodG8gYXZvaWQgZ2xpdGNoZXMpLgotICAg
ICAgICBoYXNMb2NrID0gY29udGV4dCgpLT50cnlMb2NrKG11c3RSZWxlYXNlTG9jayk7CisgICAg
ICAgIGhhc0xvY2sgPSBjb250ZXh0KCkudHJ5TG9jayhtdXN0UmVsZWFzZUxvY2spOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGNvbnRleHQoKS0+bG9jayhtdXN0UmVsZWFzZUxvY2spOworICAgICAg
ICBjb250ZXh0KCkubG9jayhtdXN0UmVsZWFzZUxvY2spOwogICAgICAgICBoYXNMb2NrID0gdHJ1
ZTsKICAgICB9CiAgICAgCkBAIC00NTIsMjQgKzQ1MiwyNCBAQCB2b2lkIEF1ZGlvTm9kZTo6ZGVy
ZWYoUmVmVHlwZSByZWZUeXBlKQogICAgICAgICBmaW5pc2hEZXJlZihyZWZUeXBlKTsKIAogICAg
ICAgICBpZiAobXVzdFJlbGVhc2VMb2NrKQotICAgICAgICAgICAgY29udGV4dCgpLT51bmxvY2so
KTsKKyAgICAgICAgICAgIGNvbnRleHQoKS51bmxvY2soKTsKICAgICB9IGVsc2UgewogICAgICAg
ICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBnZXQgdGhlIGxvY2ssIHNvIHB1dCB0aGlzIGluIGEgbGlz
dCB0byBmaW5pc2ggdXAgbGF0ZXIuCi0gICAgICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9U
aHJlYWQoKSk7CisgICAgICAgIEFTU0VSVChjb250ZXh0KCkuaXNBdWRpb1RocmVhZCgpKTsKICAg
ICAgICAgQVNTRVJUKHJlZlR5cGUgPT0gUmVmVHlwZUNvbm5lY3Rpb24pOwotICAgICAgICBjb250
ZXh0KCktPmFkZERlZmVycmVkRmluaXNoRGVyZWYodGhpcyk7CisgICAgICAgIGNvbnRleHQoKS5h
ZGREZWZlcnJlZEZpbmlzaERlcmVmKHRoaXMpOwogICAgIH0KIAogICAgIC8vIE9uY2UgQXVkaW9D
b250ZXh0Ojp1bmluaXRpYWxpemUoKSBpcyBjYWxsZWQgdGhlcmUncyBubyBtb3JlIGNoYW5jZXMg
Zm9yIGRlbGV0ZU1hcmtlZE5vZGVzKCkgdG8gZ2V0IGNhbGxlZCwgc28gd2UgY2FsbCBoZXJlLgog
ICAgIC8vIFdlIGNhbid0IGNhbGwgaW4gQXVkaW9Db250ZXh0Ojp+QXVkaW9Db250ZXh0KCkgc2lu
Y2UgaXQgd2lsbCBuZXZlciBiZSBjYWxsZWQgYXMgbG9uZyBhcyBhbnkgQXVkaW9Ob2RlIGlzIGFs
aXZlCiAgICAgLy8gYmVjYXVzZSBBdWRpb05vZGVzIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIGNv
bnRleHQuCi0gICAgaWYgKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZEZpbmlzaGVkKCkpCi0gICAg
ICAgIGNvbnRleHQoKS0+ZGVsZXRlTWFya2VkTm9kZXMoKTsKKyAgICBpZiAoY29udGV4dCgpLmlz
QXVkaW9UaHJlYWRGaW5pc2hlZCgpKQorICAgICAgICBjb250ZXh0KCkuZGVsZXRlTWFya2VkTm9k
ZXMoKTsKIH0KIAogdm9pZCBBdWRpb05vZGU6OmZpbmlzaERlcmVmKFJlZlR5cGUgcmVmVHlwZSkK
IHsKLSAgICBBU1NFUlQoY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGNv
bnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAgICAgCiAgICAgc3dpdGNoIChyZWZUeXBlKSB7CiAg
ICAgY2FzZSBSZWZUeXBlTm9ybWFsOgpAQCAtNDk2LDcgKzQ5Niw3IEBAIHZvaWQgQXVkaW9Ob2Rl
OjpmaW5pc2hEZXJlZihSZWZUeXBlIHJlZlR5cGUpCiAgICAgICAgICAgICAgICAgICAgIG91dHB1
dC0+ZGlzY29ubmVjdEFsbCgpOyAvLyBUaGlzIHdpbGwgZGVyZWYoKSBub2RlcyB3ZSdyZSBjb25u
ZWN0ZWQgdG8uCiAKICAgICAgICAgICAgICAgICAvLyBNYXJrIGZvciBkZWxldGlvbiBhdCBlbmQg
b2YgZWFjaCByZW5kZXIgcXVhbnR1bSBvciB3aGVuIGNvbnRleHQgc2h1dHMgZG93bi4KLSAgICAg
ICAgICAgICAgICBjb250ZXh0KCktPm1hcmtGb3JEZWxldGlvbih0aGlzKTsKKyAgICAgICAgICAg
ICAgICBjb250ZXh0KCkubWFya0ZvckRlbGV0aW9uKHRoaXMpOwogICAgICAgICAgICAgICAgIG1f
aXNNYXJrZWRGb3JEZWxldGlvbiA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxz
ZSBpZiAocmVmVHlwZSA9PSBSZWZUeXBlQ29ubmVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZS5oCmluZGV4IDE1MzYwNTZhMDVkNGJmYTFlMDM0MjhlYTdj
YzcwZjdmOWVlNjBjNDUuLjkzNWE4ZTUzOWRkNzAyNWE5OTIwYTE4YmNkYjUwNzkxNmQ1YTU2Yjgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGUuaApAQCAtNTMs
MTEgKzUzLDExIEBAIGNsYXNzIEF1ZGlvTm9kZSA6IHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhIHsKIHB1YmxpYzoKICAgICBlbnVtIHsgUHJvY2Vzc2luZ1NpemVJbkZyYW1lcyA9IDEy
OCB9OwogCi0gICAgQXVkaW9Ob2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOwor
ICAgIEF1ZGlvTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICB2aXJ0
dWFsIH5BdWRpb05vZGUoKTsKIAotICAgIEF1ZGlvQ29udGV4dCogY29udGV4dCgpIHsgcmV0dXJu
IG1fY29udGV4dC5nZXQoKTsgfQotICAgIGNvbnN0IEF1ZGlvQ29udGV4dCogY29udGV4dCgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIEF1ZGlvQ29udGV4dCYgY29udGV4
dCgpIHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQorICAgIGNvbnN0IEF1ZGlvQ29udGV4dCYg
Y29udGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGV4dC5nZXQoKTsgfQogCiAgICAgZW51bSBO
b2RlVHlwZSB7CiAgICAgICAgIE5vZGVUeXBlVW5rbm93biwKQEAgLTE5OCw3ICsxOTgsNyBAQCBw
cm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIHZvbGF0aWxlIGJvb2wgbV9pc0luaXRpYWxpemVkOwog
ICAgIE5vZGVUeXBlIG1fbm9kZVR5cGU7Ci0gICAgUmVmUHRyPEF1ZGlvQ29udGV4dD4gbV9jb250
ZXh0OworICAgIFJlZjxBdWRpb0NvbnRleHQ+IG1fY29udGV4dDsKICAgICBmbG9hdCBtX3NhbXBs
ZVJhdGU7CiAgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBdWRpb05vZGVJbnB1dD4+IG1faW5w
dXRzOwogICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9Ob2RlT3V0cHV0Pj4gbV9vdXRw
dXRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05v
ZGVJbnB1dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlu
cHV0LmNwcAppbmRleCBhNjA1ZTMzMmRhODZhOGQ0OWViOTFjYTYxZmEwMGZlZTBhOGJiYmQ1Li5j
Y2FhNTFkODIyZTBjODU1NjNlOWUyZmQ1ZGYxMzYwYjRlYWNmZjdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZUlucHV0LmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBBdWRpb05vZGVJbnB1dDo6QXVkaW9Ob2RlSW5wdXQoQXVkaW9Ob2RlKiBub2RlKQog
CiB2b2lkIEF1ZGlvTm9kZUlucHV0Ojpjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQog
ewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoY29u
dGV4dCgpLmlzR3JhcGhPd25lcigpKTsKICAgICAKICAgICBBU1NFUlQob3V0cHV0ICYmIG5vZGUo
KSk7CiAgICAgaWYgKCFvdXRwdXQgfHwgIW5vZGUoKSkKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBB
dWRpb05vZGVJbnB1dDo6Y29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKIAogdm9pZCBB
dWRpb05vZGVJbnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKIHsKLSAg
ICBBU1NFUlQoY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGNvbnRleHQo
KS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBBU1NFUlQob3V0cHV0ICYmIG5vZGUoKSk7CiAgICAg
aWYgKCFvdXRwdXQgfHwgIW5vZGUoKSkKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBBdWRpb05vZGVJ
bnB1dDo6ZGlzY29ubmVjdChBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKIAogdm9pZCBBdWRpb05v
ZGVJbnB1dDo6ZGlzYWJsZShBdWRpb05vZGVPdXRwdXQqIG91dHB1dCkKIHsKLSAgICBBU1NFUlQo
Y29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBo
T3duZXIoKSk7CiAKICAgICBBU1NFUlQob3V0cHV0ICYmIG5vZGUoKSk7CiAgICAgaWYgKCFvdXRw
dXQgfHwgIW5vZGUoKSkKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEF1ZGlvTm9kZUlucHV0Ojpk
aXNhYmxlKEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogCiB2b2lkIEF1ZGlvTm9kZUlucHV0Ojpl
bmFibGUoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+
aXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwog
CiAgICAgQVNTRVJUKG91dHB1dCAmJiBub2RlKCkpOwogICAgIGlmICghb3V0cHV0IHx8ICFub2Rl
KCkpCkBAIC0xMzIsNyArMTMyLDcgQEAgdm9pZCBBdWRpb05vZGVJbnB1dDo6ZGlkVXBkYXRlKCkK
IAogdm9pZCBBdWRpb05vZGVJbnB1dDo6dXBkYXRlSW50ZXJuYWxCdXMoKQogewotICAgIEFTU0VS
VChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSAmJiBjb250ZXh0KCktPmlzR3JhcGhPd25lcigp
KTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSAmJiBjb250ZXh0KCkuaXNH
cmFwaE93bmVyKCkpOwogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzID0gbnVt
YmVyT2ZDaGFubmVscygpOwogCkBAIC0xNjUsNyArMTY1LDcgQEAgdW5zaWduZWQgQXVkaW9Ob2Rl
SW5wdXQ6Om51bWJlck9mQ2hhbm5lbHMoKSBjb25zdAogCiBBdWRpb0J1cyogQXVkaW9Ob2RlSW5w
dXQ6OmJ1cygpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKTsKKyAg
ICBBU1NFUlQoY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSk7CiAKICAgICAvLyBIYW5kbGUgc2lu
Z2xlIGNvbm5lY3Rpb24gc3BlY2lhbGx5IHRvIGFsbG93IGZvciBpbi1wbGFjZSBwcm9jZXNzaW5n
LgogICAgIGlmIChudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgPT0gMSAmJiBub2RlKCkt
PmludGVybmFsQ2hhbm5lbENvdW50TW9kZSgpID09IEF1ZGlvTm9kZTo6TWF4KQpAQCAtMTc3LDE0
ICsxNzcsMTQgQEAgQXVkaW9CdXMqIEF1ZGlvTm9kZUlucHV0OjpidXMoKQogCiBBdWRpb0J1cyog
QXVkaW9Ob2RlSW5wdXQ6OmludGVybmFsU3VtbWluZ0J1cygpCiB7Ci0gICAgQVNTRVJUKGNvbnRl
eHQoKS0+aXNBdWRpb1RocmVhZCgpKTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzQXVkaW9UaHJl
YWQoKSk7CiAKICAgICByZXR1cm4gbV9pbnRlcm5hbFN1bW1pbmdCdXMuZ2V0KCk7CiB9CiAKIHZv
aWQgQXVkaW9Ob2RlSW5wdXQ6OnN1bUFsbENvbm5lY3Rpb25zKEF1ZGlvQnVzKiBzdW1taW5nQnVz
LCBzaXplX3QgZnJhbWVzVG9Qcm9jZXNzKQogewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVk
aW9UaHJlYWQoKSk7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpOwogCiAg
ICAgLy8gV2Ugc2hvdWxkbid0IGJlIGNhbGxpbmcgdGhpcyBtZXRob2QgaWYgdGhlcmUncyBvbmx5
IG9uZSBjb25uZWN0aW9uLCBzaW5jZSBpdCdzIGxlc3MgZWZmaWNpZW50LgogICAgIEFTU0VSVChu
dW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgPiAxIHx8IG5vZGUoKS0+aW50ZXJuYWxDaGFu
bmVsQ291bnRNb2RlKCkgIT0gQXVkaW9Ob2RlOjpNYXgpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIHZv
aWQgQXVkaW9Ob2RlSW5wdXQ6OnN1bUFsbENvbm5lY3Rpb25zKEF1ZGlvQnVzKiBzdW1taW5nQnVz
LCBzaXplX3QgZnJhbWVzVG9Qcm9jCiAKIEF1ZGlvQnVzKiBBdWRpb05vZGVJbnB1dDo6cHVsbChB
dWRpb0J1cyogaW5QbGFjZUJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBBU1NF
UlQoY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNB
dWRpb1RocmVhZCgpKTsKIAogICAgIC8vIEhhbmRsZSBzaW5nbGUgY29ubmVjdGlvbiBjYXNlLgog
ICAgIGlmIChudW1iZXJPZlJlbmRlcmluZ0Nvbm5lY3Rpb25zKCkgPT0gMSAmJiBub2RlKCktPmlu
dGVybmFsQ2hhbm5lbENvdW50TW9kZSgpID09IEF1ZGlvTm9kZTo6TWF4KSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvTm9kZU91dHB1dC5jcHAKaW5kZXgg
NDY4ZDhkNWYxNDA5NDEyYWExOGQzMjE5YTRjYzQzNWMxM2IxZGRhNi4uYjgxMGMyN2Y0NTE0ZTQx
NjczMDgwYTFjMDhhOGRlZTFlYTYzNzAwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmNwcApAQCAtNTMsMTYgKzUzLDE2IEBAIEF1
ZGlvTm9kZU91dHB1dDo6QXVkaW9Ob2RlT3V0cHV0KEF1ZGlvTm9kZSogbm9kZSwgdW5zaWduZWQg
bnVtYmVyT2ZDaGFubmVscykKIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjpzZXROdW1iZXJPZkNoYW5u
ZWxzKHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMpCiB7CiAgICAgQVNTRVJUKG51bWJlck9mQ2hh
bm5lbHMgPD0gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpOwotICAgIEFTU0VS
VChjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzR3Jh
cGhPd25lcigpKTsKIAogICAgIG1fZGVzaXJlZE51bWJlck9mQ2hhbm5lbHMgPSBudW1iZXJPZkNo
YW5uZWxzOwogCi0gICAgaWYgKGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpKSB7CisgICAgaWYg
KGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkpIHsKICAgICAgICAgLy8gSWYgd2UncmUgaW4gdGhl
IGF1ZGlvIHRocmVhZCB0aGVuIHdlIGNhbiB0YWtlIGNhcmUgb2YgaXQgcmlnaHQgYXdheSAod2Ug
c2hvdWxkIGJlIGF0IHRoZSB2ZXJ5IHN0YXJ0IG9yIGVuZCBvZiBhIHJlbmRlcmluZyBxdWFudHVt
KS4KICAgICAgICAgdXBkYXRlTnVtYmVyT2ZDaGFubmVscygpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIC8vIExldCB0aGUgY29udGV4dCB0YWtlIGNhcmUgb2YgaXQgaW4gdGhlIGF1ZGlvIHRocmVh
ZCBpbiB0aGUgcHJlIGFuZCBwb3N0IHJlbmRlciB0YXNrcy4KLSAgICAgICAgY29udGV4dCgpLT5t
YXJrQXVkaW9Ob2RlT3V0cHV0RGlydHkodGhpcyk7CisgICAgICAgIGNvbnRleHQoKS5tYXJrQXVk
aW9Ob2RlT3V0cHV0RGlydHkodGhpcyk7CiAgICAgfQogfQogCkBAIC04Myw3ICs4Myw3IEBAIHZv
aWQgQXVkaW9Ob2RlT3V0cHV0Ojp1cGRhdGVSZW5kZXJpbmdTdGF0ZSgpCiAKIHZvaWQgQXVkaW9O
b2RlT3V0cHV0Ojp1cGRhdGVOdW1iZXJPZkNoYW5uZWxzKCkKIHsKLSAgICBBU1NFUlQoY29udGV4
dCgpLT5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAg
QVNTRVJUKGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkgJiYgY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKIAogICAgIGlmIChtX251bWJlck9mQ2hhbm5lbHMgIT0gbV9kZXNpcmVkTnVtYmVyT2ZD
aGFubmVscykgewogICAgICAgICBtX251bWJlck9mQ2hhbm5lbHMgPSBtX2Rlc2lyZWROdW1iZXJP
ZkNoYW5uZWxzOwpAQCAtOTQsNyArOTQsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6dXBkYXRl
TnVtYmVyT2ZDaGFubmVscygpCiAKIHZvaWQgQXVkaW9Ob2RlT3V0cHV0Ojpwcm9wYWdhdGVDaGFu
bmVsQ291bnQoKQogewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzQXVkaW9UaHJlYWQoKSAmJiBj
b250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzQXVkaW9U
aHJlYWQoKSAmJiBjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIAogICAgIGlmIChpc0No
YW5uZWxDb3VudEtub3duKCkpIHsKICAgICAgICAgLy8gQW5ub3VuY2UgdG8gYW55IG5vZGVzIHdl
J3JlIGNvbm5lY3RlZCB0byB0aGF0IHdlIGNoYW5nZWQgb3VyIGNoYW5uZWwgY291bnQgZm9yIGl0
cyBpbnB1dC4KQEAgLTEwNyw3ICsxMDcsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cHJvcGFn
YXRlQ2hhbm5lbENvdW50KCkKIAogQXVkaW9CdXMqIEF1ZGlvTm9kZU91dHB1dDo6cHVsbChBdWRp
b0J1cyogaW5QbGFjZUJ1cywgc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKLSAgICBBU1NFUlQo
Y29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNBdWRp
b1RocmVhZCgpKTsKICAgICBBU1NFUlQobV9yZW5kZXJpbmdGYW5PdXRDb3VudCA+IDAgfHwgbV9y
ZW5kZXJpbmdQYXJhbUZhbk91dENvdW50ID4gMCk7CiAgICAgCiAgICAgLy8gQ2F1c2VzIG91ciBB
dWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBmb3IgdGhpcyByZW5kZXIg
cXVhbnR1bS4KQEAgLTEyNiwxOSArMTI2LDE5IEBAIEF1ZGlvQnVzKiBBdWRpb05vZGVPdXRwdXQ6
OnB1bGwoQXVkaW9CdXMqIGluUGxhY2VCdXMsIHNpemVfdCBmcmFtZXNUb1Byb2Nlc3MpCiAKIEF1
ZGlvQnVzKiBBdWRpb05vZGVPdXRwdXQ6OmJ1cygpIGNvbnN0CiB7Ci0gICAgQVNTRVJUKGNvbnN0
X2Nhc3Q8QXVkaW9Ob2RlT3V0cHV0Kj4odGhpcyktPmNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgp
KTsKKyAgICBBU1NFUlQoY29uc3RfY2FzdDxBdWRpb05vZGVPdXRwdXQqPih0aGlzKS0+Y29udGV4
dCgpLmlzQXVkaW9UaHJlYWQoKSk7CiAgICAgcmV0dXJuIG1faXNJblBsYWNlID8gbV9pblBsYWNl
QnVzLmdldCgpIDogbV9pbnRlcm5hbEJ1cy5nZXQoKTsKIH0KIAogdW5zaWduZWQgQXVkaW9Ob2Rl
T3V0cHV0OjpmYW5PdXRDb3VudCgpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93
bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIHJldHVy
biBtX2lucHV0cy5zaXplKCk7CiB9CiAKIHVuc2lnbmVkIEF1ZGlvTm9kZU91dHB1dDo6cGFyYW1G
YW5PdXRDb3VudCgpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOwor
ICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIHJldHVybiBtX3BhcmFt
cy5zaXplKCk7CiB9CiAKQEAgLTE1NCw3ICsxNTQsNyBAQCB1bnNpZ25lZCBBdWRpb05vZGVPdXRw
dXQ6OnJlbmRlcmluZ1BhcmFtRmFuT3V0Q291bnQoKSBjb25zdAogCiB2b2lkIEF1ZGlvTm9kZU91
dHB1dDo6YWRkSW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQogewotICAgIEFTU0VSVChjb250
ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKIAogICAgIEFTU0VSVChpbnB1dCk7CiAgICAgaWYgKCFpbnB1dCkKQEAgLTE2NSw3ICsx
NjUsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6YWRkSW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlu
cHV0KQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cmVtb3ZlSW5wdXQoQXVkaW9Ob2RlSW5wdXQq
IGlucHV0KQogewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBB
U1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25lcigpKTsKIAogICAgIEFTU0VSVChpbnB1dCk7CiAg
ICAgaWYgKCFpbnB1dCkKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6
cmVtb3ZlSW5wdXQoQXVkaW9Ob2RlSW5wdXQqIGlucHV0KQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1
dDo6ZGlzY29ubmVjdEFsbElucHV0cygpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFw
aE93bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogICAgIAog
ICAgIC8vIEF1ZGlvTm9kZUlucHV0OjpkaXNjb25uZWN0KCkgY2hhbmdlcyBtX2lucHV0cyBieSBj
YWxsaW5nIHJlbW92ZUlucHV0KCkuCiAgICAgd2hpbGUgKCFtX2lucHV0cy5pc0VtcHR5KCkpIHsK
QEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6ZGlzY29ubmVjdEFsbElu
cHV0cygpCiAKIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjphZGRQYXJhbShBdWRpb1BhcmFtKiBwYXJh
bSkKIHsKLSAgICBBU1NFUlQoY29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJU
KGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICBBU1NFUlQocGFyYW0pOwogICAgIGlm
ICghcGFyYW0pCkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBBdWRpb05vZGVPdXRwdXQ6OmFkZFBh
cmFtKEF1ZGlvUGFyYW0qIHBhcmFtKQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6cmVtb3ZlUGFy
YW0oQXVkaW9QYXJhbSogcGFyYW0pCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93
bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogCiAgICAgQVNT
RVJUKHBhcmFtKTsKICAgICBpZiAoIXBhcmFtKQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQgQXVk
aW9Ob2RlT3V0cHV0OjpyZW1vdmVQYXJhbShBdWRpb1BhcmFtKiBwYXJhbSkKIAogdm9pZCBBdWRp
b05vZGVPdXRwdXQ6OmRpc2Nvbm5lY3RBbGxQYXJhbXMoKQogewotICAgIEFTU0VSVChjb250ZXh0
KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25lcigp
KTsKIAogICAgIC8vIEF1ZGlvUGFyYW06OmRpc2Nvbm5lY3QoKSBjaGFuZ2VzIG1fcGFyYW1zIGJ5
IGNhbGxpbmcgcmVtb3ZlUGFyYW0oKS4KICAgICB3aGlsZSAoIW1fcGFyYW1zLmlzRW1wdHkoKSkg
ewpAQCAtMjI2LDcgKzIyNiw3IEBAIHZvaWQgQXVkaW9Ob2RlT3V0cHV0OjpkaXNjb25uZWN0QWxs
KCkKIAogdm9pZCBBdWRpb05vZGVPdXRwdXQ6OmRpc2FibGUoKQogewotICAgIEFTU0VSVChjb250
ZXh0KCktPmlzR3JhcGhPd25lcigpKTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25l
cigpKTsKIAogICAgIGlmIChtX2lzRW5hYmxlZCkgewogICAgICAgICBmb3IgKGF1dG8mIGlucHV0
IDogbV9pbnB1dHMpCkBAIC0yMzcsNyArMjM3LDcgQEAgdm9pZCBBdWRpb05vZGVPdXRwdXQ6OmRp
c2FibGUoKQogCiB2b2lkIEF1ZGlvTm9kZU91dHB1dDo6ZW5hYmxlKCkKIHsKLSAgICBBU1NFUlQo
Y29udGV4dCgpLT5pc0dyYXBoT3duZXIoKSk7CisgICAgQVNTRVJUKGNvbnRleHQoKS5pc0dyYXBo
T3duZXIoKSk7CiAKICAgICBpZiAoIW1faXNFbmFibGVkKSB7CiAgICAgICAgIGZvciAoYXV0byYg
aW5wdXQgOiBtX2lucHV0cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvTm9kZU91dHB1dC5oCmluZGV4IGVjZTMxZTRlZjg4OWI3NTQwNWM1MDY4MGZjMTQyMTQ2
ODY3ODQ1NmEuLjdmMjAzYjg0OTU0MDBjOGUyZDc1MTBkM2Y2YmRmMDM4NzY2ZTAyMTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Ob2RlT3V0cHV0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb05vZGVPdXRwdXQuaApA
QCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBDYW4gYmUgY2FsbGVkIGZyb20gYW55
IHRocmVhZC4KICAgICBBdWRpb05vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX25vZGU7IH0K
LSAgICBBdWRpb0NvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBtX25vZGUtPmNvbnRleHQoKTsg
fQorICAgIEF1ZGlvQ29udGV4dCYgY29udGV4dCgpIHsgcmV0dXJuIG1fbm9kZS0+Y29udGV4dCgp
OyB9CiAgICAgCiAgICAgLy8gQ2F1c2VzIG91ciBBdWRpb05vZGUgdG8gcHJvY2VzcyBpZiBpdCBo
YXNuJ3QgYWxyZWFkeSBmb3IgdGhpcyByZW5kZXIgcXVhbnR1bS4KICAgICAvLyBJdCByZXR1cm5z
IHRoZSBidXMgY29udGFpbmluZyB0aGUgcHJvY2Vzc2VkIGF1ZGlvIGZvciB0aGlzIG91dHB1dCwg
cmV0dXJuaW5nIGluUGxhY2VCdXMgaWYgaW4tcGxhY2UgcHJvY2Vzc2luZyB3YXMgcG9zc2libGUu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1BhcmFtLmNwcAppbmRl
eCBiNzNlOTE2YWY5MmQ5YjZkNmUyMDljN2ZiYmNkYWQxZTRkNjI0Y2IxLi4wZmYwZTIwNDM4MGU3
ZmRkYmMwMDgwYmM1NGNhYTg3YTk3M2UwOGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgY29uc3QgZG91Ymxl
IEF1ZGlvUGFyYW06OlNuYXBUaHJlc2hvbGQgPSAwLjAwMTsKIGZsb2F0IEF1ZGlvUGFyYW06OnZh
bHVlKCkKIHsKICAgICAvLyBVcGRhdGUgdmFsdWUgZm9yIHRpbWVsaW5lLgotICAgIGlmIChjb250
ZXh0KCkgJiYgY29udGV4dCgpLT5pc0F1ZGlvVGhyZWFkKCkpIHsKKyAgICBpZiAoY29udGV4dCgp
LmlzQXVkaW9UaHJlYWQoKSkgewogICAgICAgICBib29sIGhhc1ZhbHVlOwogICAgICAgICBmbG9h
dCB0aW1lbGluZVZhbHVlID0gbV90aW1lbGluZS52YWx1ZUZvckNvbnRleHRUaW1lKGNvbnRleHQo
KSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChtX3ZhbHVlKSwgaGFzVmFsdWUpOwogCkBAIC03Miw5
ICs3Miw4IEBAIGJvb2wgQXVkaW9QYXJhbTo6c21vb3RoKCkKICAgICAvLyBJZiB2YWx1ZXMgaGF2
ZSBiZWVuIGV4cGxpY2l0bHkgc2NoZWR1bGVkIG9uIHRoZSB0aW1lbGluZSwgdGhlbiB1c2UgdGhl
IGV4YWN0IHZhbHVlLgogICAgIC8vIFNtb290aGluZyBlZmZlY3RpdmVseSBpcyBwZXJmb3JtZWQg
YnkgdGhlIHRpbWVsaW5lLgogICAgIGJvb2wgdXNlVGltZWxpbmVWYWx1ZSA9IGZhbHNlOwotICAg
IGlmIChjb250ZXh0KCkpCi0gICAgICAgIG1fdmFsdWUgPSBtX3RpbWVsaW5lLnZhbHVlRm9yQ29u
dGV4dFRpbWUoY29udGV4dCgpLCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KG1fdmFsdWUpLCB1c2VU
aW1lbGluZVZhbHVlKTsKLSAgICAKKyAgICBtX3ZhbHVlID0gbV90aW1lbGluZS52YWx1ZUZvckNv
bnRleHRUaW1lKGNvbnRleHQoKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdChtX3ZhbHVlKSwgdXNl
VGltZWxpbmVWYWx1ZSk7CisKICAgICBpZiAobV9zbW9vdGhlZFZhbHVlID09IG1fdmFsdWUpIHsK
ICAgICAgICAgLy8gU21vb3RoZWQgdmFsdWUgaGFzIGFscmVhZHkgYXBwcm9hY2hlZCBhbmQgc25h
cHBlZCB0byB2YWx1ZS4KICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xMDMsNyArMTAyLDcgQEAg
ZmxvYXQgQXVkaW9QYXJhbTo6ZmluYWxWYWx1ZSgpCiAKIHZvaWQgQXVkaW9QYXJhbTo6Y2FsY3Vs
YXRlU2FtcGxlQWNjdXJhdGVWYWx1ZXMoZmxvYXQqIHZhbHVlcywgdW5zaWduZWQgbnVtYmVyT2ZW
YWx1ZXMpCiB7Ci0gICAgYm9vbCBpc1NhZmUgPSBjb250ZXh0KCkgJiYgY29udGV4dCgpLT5pc0F1
ZGlvVGhyZWFkKCkgJiYgdmFsdWVzICYmIG51bWJlck9mVmFsdWVzOworICAgIGJvb2wgaXNTYWZl
ID0gY29udGV4dCgpLmlzQXVkaW9UaHJlYWQoKSAmJiB2YWx1ZXMgJiYgbnVtYmVyT2ZWYWx1ZXM7
CiAgICAgQVNTRVJUKGlzU2FmZSk7CiAgICAgaWYgKCFpc1NhZmUpCiAgICAgICAgIHJldHVybjsK
QEAgLTExMyw3ICsxMTIsNyBAQCB2b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVNhbXBsZUFjY3Vy
YXRlVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJlck9mVgogCiB2b2lkIEF1ZGlv
UGFyYW06OmNhbGN1bGF0ZUZpbmFsVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVuc2lnbmVkIG51bWJl
ck9mVmFsdWVzLCBib29sIHNhbXBsZUFjY3VyYXRlKQogewotICAgIGJvb2wgaXNHb29kID0gY29u
dGV4dCgpICYmIGNvbnRleHQoKS0+aXNBdWRpb1RocmVhZCgpICYmIHZhbHVlcyAmJiBudW1iZXJP
ZlZhbHVlczsKKyAgICBib29sIGlzR29vZCA9IGNvbnRleHQoKS5pc0F1ZGlvVGhyZWFkKCkgJiYg
dmFsdWVzICYmIG51bWJlck9mVmFsdWVzOwogICAgIEFTU0VSVChpc0dvb2QpOwogICAgIGlmICgh
aXNHb29kKQogICAgICAgICByZXR1cm47CkBAIC0xNTQsOCArMTUzLDggQEAgdm9pZCBBdWRpb1Bh
cmFtOjpjYWxjdWxhdGVUaW1lbGluZVZhbHVlcyhmbG9hdCogdmFsdWVzLCB1bnNpZ25lZCBudW1i
ZXJPZlZhbHVlcykKIHsKICAgICAvLyBDYWxjdWxhdGUgdmFsdWVzIGZvciB0aGlzIHJlbmRlciBx
dWFudHVtLgogICAgIC8vIE5vcm1hbGx5IG51bWJlck9mVmFsdWVzIHdpbGwgZXF1YWwgQXVkaW9O
b2RlOjpQcm9jZXNzaW5nU2l6ZUluRnJhbWVzICh0aGUgcmVuZGVyIHF1YW50dW0gc2l6ZSkuCi0g
ICAgZG91YmxlIHNhbXBsZVJhdGUgPSBjb250ZXh0KCktPnNhbXBsZVJhdGUoKTsKLSAgICBkb3Vi
bGUgc3RhcnRUaW1lID0gY29udGV4dCgpLT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBzYW1w
bGVSYXRlID0gY29udGV4dCgpLnNhbXBsZVJhdGUoKTsKKyAgICBkb3VibGUgc3RhcnRUaW1lID0g
Y29udGV4dCgpLmN1cnJlbnRUaW1lKCk7CiAgICAgZG91YmxlIGVuZFRpbWUgPSBzdGFydFRpbWUg
KyBudW1iZXJPZlZhbHVlcyAvIHNhbXBsZVJhdGU7CiAKICAgICAvLyBOb3RlIHdlJ3JlIHJ1bm5p
bmcgY29udHJvbCByYXRlIGF0IHRoZSBzYW1wbGUtcmF0ZS4KQEAgLTE2NSw3ICsxNjQsNyBAQCB2
b2lkIEF1ZGlvUGFyYW06OmNhbGN1bGF0ZVRpbWVsaW5lVmFsdWVzKGZsb2F0KiB2YWx1ZXMsIHVu
c2lnbmVkIG51bWJlck9mVmFsdWVzKQogCiB2b2lkIEF1ZGlvUGFyYW06OmNvbm5lY3QoQXVkaW9O
b2RlT3V0cHV0KiBvdXRwdXQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNHcmFwaE93bmVy
KCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93bmVyKCkpOwogCiAgICAgQVNTRVJU
KG91dHB1dCk7CiAgICAgaWYgKCFvdXRwdXQpCkBAIC0xODAsNyArMTc5LDcgQEAgdm9pZCBBdWRp
b1BhcmFtOjpjb25uZWN0KEF1ZGlvTm9kZU91dHB1dCogb3V0cHV0KQogCiB2b2lkIEF1ZGlvUGFy
YW06OmRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0KiBvdXRwdXQpCiB7Ci0gICAgQVNTRVJUKGNv
bnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCkuaXNHcmFwaE93
bmVyKCkpOwogCiAgICAgQVNTRVJUKG91dHB1dCk7CiAgICAgaWYgKCFvdXRwdXQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvUGFyYW0uaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbS5oCmluZGV4IGQ0ZTQwNDdhZjU3
YmQyODE1NDBjOTZhNmNkNWRhMzFmNTM2OTU3MGUuLjI2OWJiZTE3ZTEzYjE5YzlmYjRiZTliNzJj
YmY1NjQyY2UzMTRiZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9QYXJhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9QYXJhbS5oCkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgZG91
YmxlIERlZmF1bHRTbW9vdGhpbmdDb25zdGFudDsKICAgICBzdGF0aWMgY29uc3QgZG91YmxlIFNu
YXBUaHJlc2hvbGQ7CiAKLSAgICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwg
ZG91YmxlIG1pblZhbHVlLCBkb3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKKyAg
ICBzdGF0aWMgUmVmPEF1ZGlvUGFyYW0+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGNv
bnN0IFN0cmluZyYgbmFtZSwgZG91YmxlIGRlZmF1bHRWYWx1ZSwgZG91YmxlIG1pblZhbHVlLCBk
b3VibGUgbWF4VmFsdWUsIHVuc2lnbmVkIHVuaXRzID0gMCkKICAgICB7CiAgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEF1ZGlvUGFyYW0oY29udGV4dCwgbmFtZSwgZGVmYXVsdFZhbHVlLCBt
aW5WYWx1ZSwgbWF4VmFsdWUsIHVuaXRzKSk7CiAgICAgfQpAQCAtMTAzLDcgKzEwMyw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3QoQXVkaW9Ob2RlT3V0cHV0Kik7CiAKIHByb3RlY3Rl
ZDoKLSAgICBBdWRpb1BhcmFtKEF1ZGlvQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBkb3VibGUgZGVmYXVsdFZhbHVlLCBkb3VibGUgbWluVmFsdWUsIGRvdWJsZSBtYXhWYWx1
ZSwgdW5zaWduZWQgdW5pdHMgPSAwKQorICAgIEF1ZGlvUGFyYW0oQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGRvdWJsZSBkZWZhdWx0VmFsdWUsIGRvdWJsZSBtaW5W
YWx1ZSwgZG91YmxlIG1heFZhbHVlLCB1bnNpZ25lZCB1bml0cyA9IDApCiAgICAgICAgIDogQXVk
aW9TdW1taW5nSnVuY3Rpb24oY29udGV4dCkKICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAg
ICAgLCBtX3ZhbHVlKGRlZmF1bHRWYWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmNwcAppbmRleCAzYmU4Nzg0Y2JjMmI0
MzA5ZjcyNDUzODM2YjVlM2E1N2JlMDMxZTMyLi5mZGMxZDNjN2MxYTBlYjMzMTVjODcyYjJkMGVk
Mjc1YWU4ZDI3ZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvUGFyYW1UaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb1BhcmFtVGltZWxpbmUuY3BwCkBAIC0xMTMsMTMgKzExMywxMSBAQCB2b2lkIEF1
ZGlvUGFyYW1UaW1lbGluZTo6Y2FuY2VsU2NoZWR1bGVkVmFsdWVzKGZsb2F0IHN0YXJ0VGltZSkK
ICAgICB9CiB9CiAKLWZsb2F0IEF1ZGlvUGFyYW1UaW1lbGluZTo6dmFsdWVGb3JDb250ZXh0VGlt
ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFs
dWUpCitmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wmIGhhc1ZhbHVlKQogewot
ICAgIEFTU0VSVChjb250ZXh0KTsKLQogICAgIHsKICAgICAgICAgc3RkOjp1bmlxdWVfbG9jazxM
b2NrPiBsb2NrKG1fZXZlbnRzTXV0ZXgsIHN0ZDo6dHJ5X3RvX2xvY2spOwotICAgICAgICBpZiAo
IWxvY2sub3duc19sb2NrKCkgfHwgIWNvbnRleHQgfHwgIW1fZXZlbnRzLnNpemUoKSB8fCBjb250
ZXh0LT5jdXJyZW50VGltZSgpIDwgbV9ldmVudHNbMF0udGltZSgpKSB7CisgICAgICAgIGlmICgh
bG9jay5vd25zX2xvY2soKSB8fCAhbV9ldmVudHMuc2l6ZSgpIHx8IGNvbnRleHQuY3VycmVudFRp
bWUoKSA8IG1fZXZlbnRzWzBdLnRpbWUoKSkgewogICAgICAgICAgICAgaGFzVmFsdWUgPSBmYWxz
ZTsKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0VmFsdWU7CiAgICAgICAgIH0KQEAgLTEyNyw4
ICsxMjUsOCBAQCBmbG9hdCBBdWRpb1BhcmFtVGltZWxpbmU6OnZhbHVlRm9yQ29udGV4dFRpbWUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBkZWZhdQogCiAgICAgLy8gQXNrIGZvciBqdXN0
IGEgc2luZ2xlIHZhbHVlLgogICAgIGZsb2F0IHZhbHVlOwotICAgIGRvdWJsZSBzYW1wbGVSYXRl
ID0gY29udGV4dC0+c2FtcGxlUmF0ZSgpOwotICAgIGRvdWJsZSBzdGFydFRpbWUgPSBjb250ZXh0
LT5jdXJyZW50VGltZSgpOworICAgIGRvdWJsZSBzYW1wbGVSYXRlID0gY29udGV4dC5zYW1wbGVS
YXRlKCk7CisgICAgZG91YmxlIHN0YXJ0VGltZSA9IGNvbnRleHQuY3VycmVudFRpbWUoKTsKICAg
ICBkb3VibGUgZW5kVGltZSA9IHN0YXJ0VGltZSArIDEuMSAvIHNhbXBsZVJhdGU7IC8vIHRpbWUg
anVzdCBiZXlvbmQgb25lIHNhbXBsZS1mcmFtZQogICAgIGRvdWJsZSBjb250cm9sUmF0ZSA9IHNh
bXBsZVJhdGUgLyBBdWRpb05vZGU6OlByb2Nlc3NpbmdTaXplSW5GcmFtZXM7IC8vIG9uZSBwYXJh
bWV0ZXIgY2hhbmdlIHBlciByZW5kZXIgcXVhbnR1bQogICAgIHZhbHVlID0gdmFsdWVzRm9yVGlt
ZVJhbmdlKHN0YXJ0VGltZSwgZW5kVGltZSwgZGVmYXVsdFZhbHVlLCAmdmFsdWUsIDEsIHNhbXBs
ZVJhdGUsIGNvbnRyb2xSYXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9QYXJhbVRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL0F1ZGlvUGFyYW1UaW1lbGluZS5oCmluZGV4IDE5MWJlZWQxYjdjYzhhMGNiM2MyNDYx
MmQ4ZTI2ZmEyZDI5YzNkODUuLjk3MDQzMGQ1ODMyMWM3ZDdiNDc4ZmNlYjUzYWFhYTViYWMxNmRk
YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9QYXJh
bVRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Bh
cmFtVGltZWxpbmUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAKICAgICAvLyBoYXNWYWx1
ZSBpcyBzZXQgdG8gdHJ1ZSBpZiBhIHZhbGlkIHRpbWVsaW5lIHZhbHVlIGlzIHJldHVybmVkLgog
ICAgIC8vIG90aGVyd2lzZSBkZWZhdWx0VmFsdWUgaXMgcmV0dXJuZWQuCi0gICAgZmxvYXQgdmFs
dWVGb3JDb250ZXh0VGltZShBdWRpb0NvbnRleHQqLCBmbG9hdCBkZWZhdWx0VmFsdWUsIGJvb2wm
IGhhc1ZhbHVlKTsKKyAgICBmbG9hdCB2YWx1ZUZvckNvbnRleHRUaW1lKEF1ZGlvQ29udGV4dCYs
IGZsb2F0IGRlZmF1bHRWYWx1ZSwgYm9vbCYgaGFzVmFsdWUpOwogCiAgICAgLy8gR2l2ZW4gdGhl
IHRpbWUgcmFuZ2UsIGNhbGN1bGF0ZXMgcGFyYW1ldGVyIHZhbHVlcyBpbnRvIHRoZSB2YWx1ZXMg
YnVmZmVyCiAgICAgLy8gYW5kIHJldHVybnMgdGhlIGxhc3QgcGFyYW1ldGVyIHZhbHVlIGNhbGN1
bGF0ZWQgZm9yICJ2YWx1ZXMiIG9yIHRoZSBkZWZhdWx0VmFsdWUgaWYgbm9uZSB3ZXJlIGNhbGN1
bGF0ZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlv
U2NoZWR1bGVkU291cmNlTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5jcHAKaW5kZXggYjk1NzVkMWY0NTdhMWFiNGE2NzA0
OGQ4MWJhOTBhNTlkNTMxOTE4YS4uMTBhZTE2NTExNjY5NmY0NGUxMzRkOThkY2JlODdhNDgzMjcz
NmVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1Nj
aGVkdWxlZFNvdXJjZU5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNvbnN0IGRvdWJsZSBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OlVu
a25vd25UaW1lID0gLTE7CiAKLUF1ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVs
ZWRTb3VyY2VOb2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKK0F1
ZGlvU2NoZWR1bGVkU291cmNlTm9kZTo6QXVkaW9TY2hlZHVsZWRTb3VyY2VOb2RlKEF1ZGlvQ29u
dGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0
LCBzYW1wbGVSYXRlKQogICAgICwgbV9wbGF5YmFja1N0YXRlKFVOU0NIRURVTEVEX1NUQVRFKQog
ICAgICwgbV9zdGFydFRpbWUoMCkKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxl
ZFNvdXJjZU5vZGU6OnVwZGF0ZVNjaGVkdWxpbmdJbmZvKHNpemVfdCBxdWFudHVtRnJhbWVTaXpl
LAogICAgIC8vIHF1YW50dW1FbmRGcmFtZSAgICAgICA6IEVuZCBmcmFtZSBvZiB0aGUgY3VycmVu
dCB0aW1lIHF1YW50dW0uCiAgICAgLy8gc3RhcnRGcmFtZSAgICAgICAgICAgIDogU3RhcnQgZnJh
bWUgZm9yIHRoaXMgc291cmNlLgogICAgIC8vIGVuZEZyYW1lICAgICAgICAgICAgICA6IEVuZCBm
cmFtZSBmb3IgdGhpcyBzb3VyY2UuCi0gICAgc2l6ZV90IHF1YW50dW1TdGFydEZyYW1lID0gY29u
dGV4dCgpLT5jdXJyZW50U2FtcGxlRnJhbWUoKTsKKyAgICBzaXplX3QgcXVhbnR1bVN0YXJ0RnJh
bWUgPSBjb250ZXh0KCkuY3VycmVudFNhbXBsZUZyYW1lKCk7CiAgICAgc2l6ZV90IHF1YW50dW1F
bmRGcmFtZSA9IHF1YW50dW1TdGFydEZyYW1lICsgcXVhbnR1bUZyYW1lU2l6ZTsKICAgICBzaXpl
X3Qgc3RhcnRGcmFtZSA9IEF1ZGlvVXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFtZShtX3N0YXJ0
VGltZSwgc2FtcGxlUmF0ZSk7CiAgICAgc2l6ZV90IGVuZEZyYW1lID0gbV9lbmRUaW1lID09IFVu
a25vd25UaW1lID8gMCA6IEF1ZGlvVXRpbGl0aWVzOjp0aW1lVG9TYW1wbGVGcmFtZShtX2VuZFRp
bWUsIHNhbXBsZVJhdGUpOwpAQCAtOTEsNyArOTEsNyBAQCB2b2lkIEF1ZGlvU2NoZWR1bGVkU291
cmNlTm9kZTo6dXBkYXRlU2NoZWR1bGluZ0luZm8oc2l6ZV90IHF1YW50dW1GcmFtZVNpemUsCiAg
ICAgaWYgKG1fcGxheWJhY2tTdGF0ZSA9PSBTQ0hFRFVMRURfU1RBVEUpIHsKICAgICAgICAgLy8g
SW5jcmVtZW50IHRoZSBhY3RpdmUgc291cmNlIGNvdW50IG9ubHkgaWYgd2UncmUgdHJhbnNpdGlv
bmluZyBmcm9tIFNDSEVEVUxFRF9TVEFURSB0byBQTEFZSU5HX1NUQVRFLgogICAgICAgICBtX3Bs
YXliYWNrU3RhdGUgPSBQTEFZSU5HX1NUQVRFOwotICAgICAgICBjb250ZXh0KCktPmluY3JlbWVu
dEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgICAgIGNvbnRleHQoKS5pbmNyZW1lbnRBY3RpdmVT
b3VyY2VDb3VudCgpOwogICAgIH0KIAogICAgIHF1YW50dW1GcmFtZU9mZnNldCA9IHN0YXJ0RnJh
bWUgPiBxdWFudHVtU3RhcnRGcmFtZSA/IHN0YXJ0RnJhbWUgLSBxdWFudHVtU3RhcnRGcmFtZSA6
IDA7CkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6OnN0
YXJ0KGRvdWJsZSB3aGVuLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwogCi0gICAgY29udGV4dCgpLT5ub2RlV2lsbEJlZ2luUGxheWJhY2soKTsKKyAg
ICBjb250ZXh0KCkubm9kZVdpbGxCZWdpblBsYXliYWNrKCk7CiAKICAgICBpZiAobV9wbGF5YmFj
a1N0YXRlICE9IFVOU0NIRURVTEVEX1NUQVRFKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFU
RV9FUlI7CkBAIC0xOTksOSArMTk5LDkgQEAgdm9pZCBBdWRpb1NjaGVkdWxlZFNvdXJjZU5vZGU6
OmZpbmlzaCgpCiB7CiAgICAgaWYgKG1fcGxheWJhY2tTdGF0ZSAhPSBGSU5JU0hFRF9TVEFURSkg
ewogICAgICAgICAvLyBMZXQgdGhlIGNvbnRleHQgZGVyZWZlcmVuY2UgdGhpcyBBdWRpb05vZGUu
Ci0gICAgICAgIGNvbnRleHQoKS0+bm90aWZ5Tm9kZUZpbmlzaGVkUHJvY2Vzc2luZyh0aGlzKTsK
KyAgICAgICAgY29udGV4dCgpLm5vdGlmeU5vZGVGaW5pc2hlZFByb2Nlc3NpbmcodGhpcyk7CiAg
ICAgICAgIG1fcGxheWJhY2tTdGF0ZSA9IEZJTklTSEVEX1NUQVRFOwotICAgICAgICBjb250ZXh0
KCktPmRlY3JlbWVudEFjdGl2ZVNvdXJjZUNvdW50KCk7CisgICAgICAgIGNvbnRleHQoKS5kZWNy
ZW1lbnRBY3RpdmVTb3VyY2VDb3VudCgpOwogICAgIH0KIAogICAgIGlmIChtX2hhc0VuZGVkTGlz
dGVuZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9TY2hlZHVsZWRTb3VyY2VOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0F1ZGlvU2NoZWR1bGVkU291cmNlTm9kZS5oCmluZGV4IDA5OTMwYTBjMTVkYzgzNGVlYTE1YWUw
ZTgzYTcwNzAxZTk2OGYwOTAuLjJmYzY3MzIyMDNmYTcwMjJjYmI3ZWY4ZTg3MGY5ODMyODEwYjU1
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TY2hl
ZHVsZWRTb3VyY2VOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9B
dWRpb1NjaGVkdWxlZFNvdXJjZU5vZGUuaApAQCAtNTUsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEZJTklTSEVEX1NUQVRFID0gMwogICAgIH07CiAgICAgCi0gICAgQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIEF1ZGlvU2No
ZWR1bGVkU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAg
IC8vIFNjaGVkdWxpbmcuCiAgICAgdm9pZCBzdGFydChFeGNlcHRpb25Db2RlJik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rp
b24uY3BwCmluZGV4IGMyMjhlZWM3MTgyOTk5ZjA4MWNmMGI1ZjM5YzQ0YWUxM2U0MmYyMGYuLmVl
NjAwYTYyOWExYjg2OWNkOWE1YjNkMzcyYWU0NzZhM2UxMjdmYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24uY3Bw
CkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXVkaW9TdW1taW5n
SnVuY3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCogY29udGV4dCkKK0F1
ZGlvU3VtbWluZ0p1bmN0aW9uOjpBdWRpb1N1bW1pbmdKdW5jdGlvbihBdWRpb0NvbnRleHQmIGNv
bnRleHQpCiAgICAgOiBtX2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcmVuZGVyaW5nU3RhdGVO
ZWVkVXBkYXRpbmcoZmFsc2UpCiB7CkBAIC00MiwyMiArNDIsMjIgQEAgQXVkaW9TdW1taW5nSnVu
Y3Rpb246OkF1ZGlvU3VtbWluZ0p1bmN0aW9uKEF1ZGlvQ29udGV4dCogY29udGV4dCkKIAogQXVk
aW9TdW1taW5nSnVuY3Rpb246On5BdWRpb1N1bW1pbmdKdW5jdGlvbigpCiB7Ci0gICAgaWYgKG1f
cmVuZGVyaW5nU3RhdGVOZWVkVXBkYXRpbmcgJiYgbV9jb250ZXh0LmdldCgpKQotICAgICAgICBt
X2NvbnRleHQtPnJlbW92ZU1hcmtlZFN1bW1pbmdKdW5jdGlvbih0aGlzKTsKKyAgICBpZiAobV9y
ZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZykKKyAgICAgICAgY29udGV4dCgpLnJlbW92ZU1hcmtl
ZFN1bW1pbmdKdW5jdGlvbih0aGlzKTsKIH0KIAogdm9pZCBBdWRpb1N1bW1pbmdKdW5jdGlvbjo6
Y2hhbmdlZE91dHB1dHMoKQogewotICAgIEFTU0VSVChjb250ZXh0KCktPmlzR3JhcGhPd25lcigp
KTsKKyAgICBBU1NFUlQoY29udGV4dCgpLmlzR3JhcGhPd25lcigpKTsKICAgICBpZiAoIW1fcmVu
ZGVyaW5nU3RhdGVOZWVkVXBkYXRpbmcgJiYgY2FuVXBkYXRlU3RhdGUoKSkgewotICAgICAgICBj
b250ZXh0KCktPm1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eSh0aGlzKTsKKyAgICAgICAgY29udGV4
dCgpLm1hcmtTdW1taW5nSnVuY3Rpb25EaXJ0eSh0aGlzKTsKICAgICAgICAgbV9yZW5kZXJpbmdT
dGF0ZU5lZWRVcGRhdGluZyA9IHRydWU7CiAgICAgfQogfQogCiB2b2lkIEF1ZGlvU3VtbWluZ0p1
bmN0aW9uOjp1cGRhdGVSZW5kZXJpbmdTdGF0ZSgpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+
aXNBdWRpb1RocmVhZCgpICYmIGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VS
VChjb250ZXh0KCkuaXNBdWRpb1RocmVhZCgpICYmIGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7
CiAKICAgICBpZiAobV9yZW5kZXJpbmdTdGF0ZU5lZWRVcGRhdGluZyAmJiBjYW5VcGRhdGVTdGF0
ZSgpKSB7CiAgICAgICAgIC8vIENvcHkgZnJvbSBtX291dHB1dHMgdG8gbV9yZW5kZXJpbmdPdXRw
dXRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1
bW1pbmdKdW5jdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb1N1
bW1pbmdKdW5jdGlvbi5oCmluZGV4IGIzYjRmMzVmZTgzODY5ZThkYTQ4ODgxZGUwOGJhNzllYzY0
ZGNkYTEuLjYzZWQyOTZkZmJmMTU4ZDk2YTUwNGZjMmUzOWM2MTQwNDU0OGIyYTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9TdW1taW5nSnVuY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvU3VtbWluZ0p1bmN0
aW9uLmgKQEAgLTM4LDExICszOCwxMSBAQCBjbGFzcyBBdWRpb05vZGVPdXRwdXQ7CiAKIGNsYXNz
IEF1ZGlvU3VtbWluZ0p1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBleHBsaWNpdCBBdWRpb1N1bW1p
bmdKdW5jdGlvbihBdWRpb0NvbnRleHQqKTsKKyAgICBleHBsaWNpdCBBdWRpb1N1bW1pbmdKdW5j
dGlvbihBdWRpb0NvbnRleHQmKTsKICAgICB2aXJ0dWFsIH5BdWRpb1N1bW1pbmdKdW5jdGlvbigp
OwogCiAgICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCi0gICAgQXVkaW9Db250
ZXh0KiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CisgICAgQXVkaW9Db250
ZXh0JiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LmdldCgpOyB9CiAKICAgICAvLyBUaGlz
IG11c3QgYmUgY2FsbGVkIHdoZW5ldmVyIHdlIG1vZGlmeSBtX291dHB1dHMuCiAgICAgdm9pZCBj
aGFuZ2VkT3V0cHV0cygpOwpAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIGRpZFVwZGF0ZSgpID0gMDsKIAogcHJvdGVjdGVkOgotICAgIFJlZlB0cjxBdWRpb0NvbnRl
eHQ+IG1fY29udGV4dDsKKyAgICBSZWY8QXVkaW9Db250ZXh0PiBtX2NvbnRleHQ7CiAKICAgICAv
LyBtX291dHB1dHMgY29udGFpbnMgdGhlIEF1ZGlvTm9kZU91dHB1dHMgcmVwcmVzZW50aW5nIGN1
cnJlbnQgY29ubmVjdGlvbnMgd2hpY2ggYXJlIG5vdCBkaXNhYmxlZC4KICAgICAvLyBUaGUgcmVu
ZGVyaW5nIGNvZGUgc2hvdWxkIG5ldmVyIHVzZSB0aGlzIGRpcmVjdGx5LCBidXQgaW5zdGVhZCB1
c2VzIG1fcmVuZGVyaW5nT3V0cHV0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0JpcXVhZEZpbHRlck5vZGUuY3BwCmluZGV4IGIwNWIxNDQ1YzM3OTk5NzFiYzcw
ZmQ3OTU3NTQ2ZTk3N2U4OWQ0NGQuLmNlMmVhYzMxY2MwYWRkYzJiZjk3MzFiM2JmOGJmYWEzNGFh
MjYwNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFk
RmlsdGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1
YWRGaWx0ZXJOb2RlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUJpcXVhZEZpbHRlck5vZGU6OkJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0KiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorQmlxdWFkRmlsdGVyTm9kZTo6QmlxdWFkRmlsdGVyTm9k
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgOiBBdWRpb0Jh
c2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIC8vIEluaXRpYWxs
eSBzZXR1cCBhcyBsb3dwYXNzIGZpbHRlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQmlxdWFkRmlsdGVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9CaXF1YWRGaWx0ZXJOb2RlLmgKaW5kZXggNGZmNDE0NzQ5MTI0NDkzYzNmNGU2
NjU4ZmM5ZDMwY2U1MjI1MTU4OS4uMmM1OWIwYmI0ZTBjZDA3MTg5YjcwM2U3ZWY3ZTg3ODRkNTRl
OWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRG
aWx0ZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRG
aWx0ZXJOb2RlLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICBBTExQQVNTID0g
NwogICAgIH07CiAKLSAgICBzdGF0aWMgUmVmPEJpcXVhZEZpbHRlck5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCisgICAgc3RhdGljIFJlZjxCaXF1
YWRGaWx0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVS
YXRlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQmlxdWFkRmlsdGVyTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpAQCAtNjcsNyArNjcsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdDMyQXJyYXkqIHBoYXNlUmVzcG9u
c2UpOwogCiBwcml2YXRlOgotICAgIEJpcXVhZEZpbHRlck5vZGUoQXVkaW9Db250ZXh0KiwgZmxv
YXQgc2FtcGxlUmF0ZSk7CisgICAgQmlxdWFkRmlsdGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9h
dCBzYW1wbGVSYXRlKTsKIAogICAgIEJpcXVhZFByb2Nlc3NvciogYmlxdWFkUHJvY2Vzc29yKCkg
eyByZXR1cm4gc3RhdGljX2Nhc3Q8QmlxdWFkUHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9j
ZXNzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9CaXF1YWRQcm9jZXNz
b3IuY3BwCmluZGV4IDljOThlM2RkNTEzZWQ0MGJjMjY1N2Q5NzY3ODc1MjU3MmRhMDU3ZTkuLmU5
ZGQ0NmFkNjc1ZTU4NWFkOTFiOTAyNjE2NTczMDZmZmE1MWRkYWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5jcHAKQEAgLTMyLDcg
KzMyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotQmlxdWFkUHJvY2Vzc29yOjpC
aXF1YWRQcm9jZXNzb3IoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBz
aXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRvSW5pdGlhbGl6ZSkKK0JpcXVhZFByb2Nl
c3Nvcjo6QmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMsIGJvb2wgYXV0b0luaXRpYWxpemUpCiAgICAg
OiBBdWRpb0RTUEtlcm5lbFByb2Nlc3NvcihzYW1wbGVSYXRlLCBudW1iZXJPZkNoYW5uZWxzKQog
ICAgICwgbV90eXBlKExvd1Bhc3MpCiAgICAgLCBtX3BhcmFtZXRlcjEoMCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0JpcXVhZFByb2Nlc3Nvci5oCmluZGV4IGRiNmRl
M2UxYTcwNTQxYzkzZjgzMTQ2YmI5Y2I5ZjA1N2E5MThmMmMuLjEyNTY3ZGQxMmM3MzhjZDEyNGNh
YmI4YTkwNzc5MDI3YjNmMGM2YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQmlxdWFkUHJvY2Vzc29yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJhdWRpby9CaXF1YWRQcm9jZXNzb3IuaApAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIEFsbHBhc3MgPSA3CiAgICAgfTsKIAotICAgIEJpcXVhZFByb2Nlc3NvcihBdWRpb0NvbnRl
eHQqLCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscywgYm9vbCBhdXRv
SW5pdGlhbGl6ZSk7CisgICAgQmlxdWFkUHJvY2Vzc29yKEF1ZGlvQ29udGV4dCYsIGZsb2F0IHNh
bXBsZVJhdGUsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBib29sIGF1dG9Jbml0aWFsaXplKTsK
IAogICAgIHZpcnR1YWwgfkJpcXVhZFByb2Nlc3NvcigpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAppbmRleCA1
MmQyM2IzMzM3MjFjMDNiZWIwNjRlYmFhMjIwOWQ0MjQxNjUxMWFmLi5iODNjNjY3NjkwOGVmMjYx
Y2Y4MDFjMWQ3NjBlNjA4OGM5MzZhM2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBj
b25zdCB1bnNpZ25lZCBEZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDE7CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPENoYW5uZWxNZXJnZXJOb2RlPiBDaGFubmVsTWVyZ2Vy
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5z
aWduZWQgbnVtYmVyT2ZJbnB1dHMpCitSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IENoYW5uZWxN
ZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRl
LCB1bnNpZ25lZCBudW1iZXJPZklucHV0cykKIHsKICAgICBpZiAoIW51bWJlck9mSW5wdXRzIHx8
IG51bWJlck9mSW5wdXRzID4gQXVkaW9Db250ZXh0OjptYXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDgsNyArNDgsNyBAQCBSZWZQdHI8Q2hhbm5lbE1l
cmdlck5vZGU+IENoYW5uZWxNZXJnZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdAogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENoYW5uZWxNZXJnZXJOb2RlKGNvbnRl
eHQsIHNhbXBsZVJhdGUsIG51bWJlck9mSW5wdXRzKSk7ICAgICAgCiB9CiAKLUNoYW5uZWxNZXJn
ZXJOb2RlOjpDaGFubmVsTWVyZ2VyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKQorQ2hhbm5lbE1lcmdlck5vZGU6OkNo
YW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwg
dW5zaWduZWQgbnVtYmVyT2ZJbnB1dHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSkKICAgICAsIG1fZGVzaXJlZE51bWJlck9mT3V0cHV0Q2hhbm5lbHMoRGVmYXVsdE51bWJl
ck9mT3V0cHV0Q2hhbm5lbHMpCiB7CkBAIC0xMDQsNyArMTA0LDcgQEAgdm9pZCBDaGFubmVsTWVy
Z2VyTm9kZTo6cmVzZXQoKQogLy8gbnVtYmVyIG9mIGNoYW5uZWxzIG9mIG91ciBvdXRwdXQuCiB2
b2lkIENoYW5uZWxNZXJnZXJOb2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1dChBdWRp
b05vZGVJbnB1dCogaW5wdXQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRpb1RocmVh
ZCgpICYmIGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChjb250ZXh0KCku
aXNBdWRpb1RocmVhZCgpICYmIGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAgICAvLyBD
b3VudCBob3cgbWFueSBjaGFubmVscyB3ZSBoYXZlIGFsbCB0b2dldGhlciBmcm9tIGFsbCBvZiB0
aGUgaW5wdXRzLgogICAgIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMgPSAwOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsTWVyZ2VyTm9kZS5o
CmluZGV4IGM1NWMyZWJkOGEzYTNkMzkyYzJkODYxYmFiODUyYzg2ODdjMDNhZDMuLjE5NmE5YTc0
ODY1ZDFhZmMxMTcyYTJmY2IxODczYzYwNWQxM2Y1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbE1lcmdlck5vZGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxNZXJnZXJOb2RlLmgKQEAgLTM4LDcgKzM4LDcg
QEAgY2xhc3MgQXVkaW9Db250ZXh0OwogICAgIAogY2xhc3MgQ2hhbm5lbE1lcmdlck5vZGUgOiBw
dWJsaWMgQXVkaW9Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxNZXJn
ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQg
bnVtYmVyT2ZJbnB1dHMpOworICAgIHN0YXRpYyBSZWZQdHI8Q2hhbm5lbE1lcmdlck5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklu
cHV0cyk7CiAKICAgICAvLyBBdWRpb05vZGUKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2VzcyhzaXpl
X3QgZnJhbWVzVG9Qcm9jZXNzKSBvdmVycmlkZTsKQEAgLTUzLDcgKzUzLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7
IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIDA7IH0KIAotICAgIENoYW5uZWxNZXJnZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNh
bXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mSW5wdXRzKTsKKyAgICBDaGFubmVsTWVyZ2VyTm9k
ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZklucHV0
cyk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmNwcAppbmRleCA3YmZl
NGQwZDU2ZDYyZDM4NjNmNWI2YTM5NGE5NDQ3NWM4MzhhZDAyLi43NGVmZjFkNzhmZDQ4YjQ0Njc1
MmRmY2U0YzQwOWJmNGIzMzJhNDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2ViYXVkaW8vQ2hhbm5lbFNwbGl0dGVyTm9kZS5jcHAKQEAgLTM0LDcgKzM0LDcgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIAotUmVmUHRyPENoYW5uZWxTcGxpdHRlck5vZGU+
IENoYW5uZWxTcGxpdHRlck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cykKK1JlZlB0cjxDaGFubmVsU3Bs
aXR0ZXJOb2RlPiBDaGFubmVsU3BsaXR0ZXJOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0JiBjb250
ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dHMpCiB7CiAgICAg
aWYgKCFudW1iZXJPZk91dHB1dHMgfHwgbnVtYmVyT2ZPdXRwdXRzID4gQXVkaW9Db250ZXh0Ojpt
YXhOdW1iZXJPZkNoYW5uZWxzKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNDIsNyAr
NDIsNyBAQCBSZWZQdHI8Q2hhbm5lbFNwbGl0dGVyTm9kZT4gQ2hhbm5lbFNwbGl0dGVyTm9kZTo6
Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENoYW5uZWxTcGxpdHRlck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSwgbnVtYmVyT2ZPdXRwdXRz
KSk7ICAgICAgCiB9CiAKLUNoYW5uZWxTcGxpdHRlck5vZGU6OkNoYW5uZWxTcGxpdHRlck5vZGUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJP
Zk91dHB1dHMpCitDaGFubmVsU3BsaXR0ZXJOb2RlOjpDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlv
Q29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWduZWQgbnVtYmVyT2ZPdXRw
dXRzKQogICAgIDogQXVkaW9Ob2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiB7CiAgICAgYWRkSW5w
dXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1dD4odGhpcykpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9DaGFubmVsU3BsaXR0ZXJOb2RlLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAppbmRl
eCBjM2M3MWRjM2Y3ZDQ3M2ZmNWMxZGVkNjQ2ZTQ4NjI1YTgwZmQ1MTM4Li44NTQ5ODNjODkyMmFj
ZTY2MTEwOTM0NjJiYjI0N2FiZjAyNWY4MDBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYmF1ZGlvL0NoYW5uZWxTcGxpdHRlck5vZGUuaApAQCAtMzQsNyArMzQsNyBA
QCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICAgCiBjbGFzcyBDaGFubmVsU3BsaXR0ZXJOb2RlIDog
cHVibGljIEF1ZGlvTm9kZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZlB0cjxDaGFubmVsU3Bs
aXR0ZXJOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSwgdW5zaWdu
ZWQgbnVtYmVyT2ZPdXRwdXRzKTsKKyAgICBzdGF0aWMgUmVmUHRyPENoYW5uZWxTcGxpdHRlck5v
ZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1i
ZXJPZk91dHB1dHMpOwogCiAgICAgLy8gQXVkaW9Ob2RlCiAgICAgdmlydHVhbCB2b2lkIHByb2Nl
c3Moc2l6ZV90IGZyYW1lc1RvUHJvY2Vzcykgb3ZlcnJpZGU7CkBAIC00NCw3ICs0NCw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiAwOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiAwOyB9CiAKLSAgICBDaGFubmVsU3BsaXR0ZXJOb2RlKEF1ZGlvQ29udGV4dCos
IGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0cyk7CisgICAgQ2hhbm5l
bFNwbGl0dGVyTm9kZShBdWRpb0NvbnRleHQmLCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBu
dW1iZXJPZk91dHB1dHMpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQ29udm9sdmVyTm9kZS5jcHAKaW5kZXggYmRk
ZGUyODUzZmJjMjM3MDhlMzIxZWVkZmFiOGNhMjIwOWNlNTkwYi4uNDZjNmI4ODNmOTBjMWQ1YmZk
M2JkODEzYjMwZWIyOGZlYjAxMjI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0NvbnZvbHZlck5vZGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIGNvbnN0IHNpemVf
dCBNYXhGRlRTaXplID0gMzI3Njg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ29udm9sdmVy
Tm9kZTo6Q29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJh
dGUpCitDb252b2x2ZXJOb2RlOjpDb252b2x2ZXJOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwg
ZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQog
ICAgICwgbV9ub3JtYWxpemUodHJ1ZSkKIHsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIENvbnZv
bHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVyLCBFeGNlcHRpb25Db2RlJiBl
YykKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGJ1ZmZlci0+
c2FtcGxlUmF0ZSgpICE9IGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgpKSB7CisgICAgaWYgKGJ1ZmZl
ci0+c2FtcGxlUmF0ZSgpICE9IGNvbnRleHQoKS5zYW1wbGVSYXRlKCkpIHsKICAgICAgICAgZWMg
PSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE0Niw3ICsx
NDYsNyBAQCB2b2lkIENvbnZvbHZlck5vZGU6OnNldEJ1ZmZlcihBdWRpb0J1ZmZlciogYnVmZmVy
LCBFeGNlcHRpb25Db2RlJiBlYykKICAgICBidWZmZXJCdXMtPnNldFNhbXBsZVJhdGUoYnVmZmVy
LT5zYW1wbGVSYXRlKCkpOwogCiAgICAgLy8gQ3JlYXRlIHRoZSByZXZlcmIgd2l0aCB0aGUgZ2l2
ZW4gaW1wdWxzZSByZXNwb25zZS4KLSAgICBib29sIHVzZUJhY2tncm91bmRUaHJlYWRzID0gIWNv
bnRleHQoKS0+aXNPZmZsaW5lQ29udGV4dCgpOworICAgIGJvb2wgdXNlQmFja2dyb3VuZFRocmVh
ZHMgPSAhY29udGV4dCgpLmlzT2ZmbGluZUNvbnRleHQoKTsKICAgICBhdXRvIHJldmVyYiA9IHN0
ZDo6bWFrZV91bmlxdWU8UmV2ZXJiPihidWZmZXJCdXMuZ2V0KCksIEF1ZGlvTm9kZTo6UHJvY2Vz
c2luZ1NpemVJbkZyYW1lcywgTWF4RkZUU2l6ZSwgMiwgdXNlQmFja2dyb3VuZFRocmVhZHMsIG1f
bm9ybWFsaXplKTsKIAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQ29udm9sdmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Db252b2x2ZXJOb2RlLmgKaW5kZXggNjU2NDRiNTBmYjIyNzZhMDUyN2E4ZWFjYTQwOGVkZGE0
Yzg1ZjBlOC4uMzQzODJlOTk1MjNlZTM2YzE1MzdlZTVkNzk2YzdlMjVlMDZmMWQ3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Db252b2x2ZXJOb2RlLmgKQEAgLTM3
LDcgKzM3LDcgQEAgY2xhc3MgUmV2ZXJiOwogICAgIAogY2xhc3MgQ29udm9sdmVyTm9kZSA6IHB1
YmxpYyBBdWRpb05vZGUgewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q29udm9sdmVyTm9kZT4g
Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKKyAgICBzdGF0
aWMgUmVmPENvbnZvbHZlck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0
IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDb252b2x2
ZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC01OCw3ICs1OCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE5vcm1hbGl6ZShib29sIG5vcm1hbGl6ZSkgeyBtX25vcm1hbGl6
ZSA9IG5vcm1hbGl6ZTsgfQogCiBwcml2YXRlOgotICAgIENvbnZvbHZlck5vZGUoQXVkaW9Db250
ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgQ29udm9sdmVyTm9kZShBdWRpb0NvbnRleHQm
LCBmbG9hdCBzYW1wbGVSYXRlKTsKIAogICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBkb3VibGUgbGF0ZW5jeVRpbWUoKSBjb25zdCBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVs
dEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmNwcAppbmRleCAwYmNjMmMwYTRhYzYwYzk0
MjQwMjI2N2RlNWU0YzQwZGNiZjg5ZDg5Li5iZWJmNDRkNjUwN2RjOWFmNDk4NWE0MzE4MGExOWVj
ZTNjZmQ4MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0Rl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCkBAIC0zOCw3ICszOCw3
IEBAIGNvbnN0IHVuc2lnbmVkIEVuYWJsZWRJbnB1dENoYW5uZWxzID0gMjsKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIAotRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlOjpEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0KQorRGVmYXVsdEF1ZGlvRGVz
dGluYXRpb25Ob2RlOjpEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0KQogICAgIDogQXVkaW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgQXVkaW9EZXN0aW5h
dGlvbjo6aGFyZHdhcmVTYW1wbGVSYXRlKCkpCiAgICAgLCBtX251bWJlck9mSW5wdXRDaGFubmVs
cygwKQogewpAQCAtMTExLDcgKzExMSw4IEBAIHZvaWQgRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25O
b2RlOjpyZXN1bWUoc3RkOjpmdW5jdGlvbjx2b2lkKCk+IGZ1bmN0aW9uKQogICAgIEFTU0VSVChp
c0luaXRpYWxpemVkKCkpOwogICAgIGlmIChpc0luaXRpYWxpemVkKCkpCiAgICAgICAgIG1fZGVz
dGluYXRpb24tPnN0YXJ0KCk7Ci0gICAgY29udGV4dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnBvc3RUYXNrKGZ1bmN0aW9uKTsKKyAgICBpZiAoYXV0byBzY3JpcHRFeGVjdXRpb25Db250
ZXh0ID0gY29udGV4dCgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkKKyAgICAgICAgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dC0+cG9zdFRhc2soZnVuY3Rpb24pOwogfQogCiB2b2lkIERlZmF1bHRB
dWRpb0Rlc3RpbmF0aW9uTm9kZTo6c3VzcGVuZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rp
b24pCkBAIC0xMTksMTQgKzEyMCwxNiBAQCB2b2lkIERlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZTo6c3VzcGVuZChzdGQ6OmZ1bmN0aW9uPHZvaWQoKT4gZnVuY3Rpb24pCiAgICAgQVNTRVJUKGlz
SW5pdGlhbGl6ZWQoKSk7CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAgbV9kZXN0
aW5hdGlvbi0+c3RvcCgpOwotICAgIGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5wb3N0VGFzayhmdW5jdGlvbik7CisgICAgaWYgKGF1dG8gc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCA9IGNvbnRleHQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpCisgICAgICAgIHNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQtPnBvc3RUYXNrKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBEZWZhdWx0QXVk
aW9EZXN0aW5hdGlvbk5vZGU6OmNsb3NlKHN0ZDo6ZnVuY3Rpb248dm9pZCgpPiBmdW5jdGlvbikK
IHsKICAgICBBU1NFUlQoaXNJbml0aWFsaXplZCgpKTsKICAgICB1bmluaXRpYWxpemUoKTsKLSAg
ICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+cG9zdFRhc2soZnVuY3Rpb24p
OworICAgIGlmIChhdXRvIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBjb250ZXh0KCkuc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpKQorICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5wb3N0
VGFzayhmdW5jdGlvbik7CiB9CiAKIHVuc2lnbmVkIGxvbmcgRGVmYXVsdEF1ZGlvRGVzdGluYXRp
b25Ob2RlOjptYXhDaGFubmVsQ291bnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVmYXVsdEF1ZGlvRGVzdGluYXRpb25Ob2RlLmgK
aW5kZXggMWU4NWNjODA5NmMyZGY0MzVhYzUwNWFjOTNkODBiMDA5NWE0NWEyMC4uODliZDc4ODcx
OWU0ZGY5NzI2ZTkxNTkxYWFiM2E5YmQwODJiOTMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9EZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIEF1ZGlvQ29udGV4dDsKICAgICAKIGNsYXNzIERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZSA6IHB1YmxpYyBBdWRpb0Rlc3RpbmF0aW9uTm9kZSB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNy
ZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQpCisgICAgc3RhdGljIFJlZjxEZWZhdWx0QXVkaW9E
ZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgewogICAg
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoY29u
dGV4dCkpOyAgICAgCiAgICAgfQpAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBib29sIGlzUGxheWluZygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IERl
ZmF1bHRBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqKTsKKyAgICBleHBsaWNpdCBE
ZWZhdWx0QXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0Jik7CiAgICAgdm9pZCBjcmVh
dGVEZXN0aW5hdGlvbigpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvRGVzdGluYXRpb24+
IG1fZGVzdGluYXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5
Tm9kZS5jcHAKaW5kZXggMGIwNDUyY2ViM2NjYWQxYzc1NzBlNDQ3ZmVjMTIxNjBiZTkxYzc2YS4u
YjVjNjkyM2UxZmVmNTdmYWEzZDM4ZGZjNmE1Njk0NWRjYTZhZDc4NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheU5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmNwcApAQCAtMzIsNyArMzIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGRvdWJsZSBtYXhpbXVtQWxsb3dlZERlbGF5VGlt
ZSA9IDE4MDsKIAotRGVsYXlOb2RlOjpEZWxheU5vZGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lLCBFeGNlcHRpb25Db2RlJiBlYykK
K0RlbGF5Tm9kZTo6RGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxl
UmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgOiBBdWRp
b0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKQogewogICAgIGlmIChtYXhE
ZWxheVRpbWUgPD0gMCB8fCBtYXhEZWxheVRpbWUgPj0gbWF4aW11bUFsbG93ZWREZWxheVRpbWUp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlOb2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5Tm9kZS5oCmluZGV4IDc2
ODYxYjU5ODMyZGY1NzdjOWU4ZWM5OGQzOTBlMmMxNDM4ZDM1OWMuLjMwZDQ3Y2JlN2VlYTZlOWRl
ZTA0N2RiOWM2ZDQxMTkxMTBmOWI0MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vRGVsYXlOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9EZWxheU5vZGUuaApAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBBdWRpb1BhcmFtOwogCiBj
bGFzcyBEZWxheU5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8RGVsYXlOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVsYXlUaW1lLCBFeGNlcHRpb25Db2RlJiBl
YykKKyAgICBzdGF0aWMgUmVmPERlbGF5Tm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSwgZG91YmxlIG1heERlbGF5VGltZSwgRXhjZXB0aW9uQ29kZSYg
ZWMpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxheU5vZGUoY29udGV4
dCwgc2FtcGxlUmF0ZSwgbWF4RGVsYXlUaW1lLCBlYykpOwogICAgIH0KQEAgLTQ0LDcgKzQ0LDcg
QEAgcHVibGljOgogICAgIEF1ZGlvUGFyYW0qIGRlbGF5VGltZSgpOwogCiBwcml2YXRlOgotICAg
IERlbGF5Tm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCBkb3VibGUgbWF4RGVs
YXlUaW1lLCBFeGNlcHRpb25Db2RlJik7CisgICAgRGVsYXlOb2RlKEF1ZGlvQ29udGV4dCYsIGZs
b2F0IHNhbXBsZVJhdGUsIGRvdWJsZSBtYXhEZWxheVRpbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAog
ICAgIERlbGF5UHJvY2Vzc29yKiBkZWxheVByb2Nlc3NvcigpIHsgcmV0dXJuIHN0YXRpY19jYXN0
PERlbGF5UHJvY2Vzc29yKj4ocHJvY2Vzc29yKCkpOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAppbmRleCBhNWNjNzc1NTky
ZTgyZThiMjZmZmM5YjkzNTU2YTM3YjU2ZWY4MmE0Li5hNzViYTZiN2M5MmU3NDQ0YzY1NjA4ZThh
ZTE4ZjlkNTAwMDI2YTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL0RlbGF5UHJvY2Vzc29yLmNwcApAQCAtMzIsNyArMzIsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLURlbGF5UHJvY2Vzc29yOjpEZWxheVByb2Nlc3NvcihBdWRpb0NvbnRleHQqIGNv
bnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJs
ZSBtYXhEZWxheVRpbWUpCitEZWxheVByb2Nlc3Nvcjo6RGVsYXlQcm9jZXNzb3IoQXVkaW9Db250
ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxz
LCBkb3VibGUgbWF4RGVsYXlUaW1lKQogICAgIDogQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3Ioc2Ft
cGxlUmF0ZSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fbWF4RGVsYXlUaW1lKG1heERlbGF5
VGltZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVs
YXlQcm9jZXNzb3IuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRGVsYXlQcm9j
ZXNzb3IuaAppbmRleCAwNDIzOTU4Njk5ZjI3M2I3YTI3ODU2ZjQwMjM1ODYyOTExNzRiNjJlLi42
MmE3NGM4MWJmOTE1NDdmNzk3ZDRhMDllMjc5MmNkZWJhOThkNzVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0RlbGF5UHJvY2Vzc29yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EZWxheVByb2Nlc3Nvci5oCkBAIC0zNiw3ICszNiw3
IEBAIGNsYXNzIEF1ZGlvRFNQS2VybmVsOwogICAgIAogY2xhc3MgRGVsYXlQcm9jZXNzb3IgOiBw
dWJsaWMgQXVkaW9EU1BLZXJuZWxQcm9jZXNzb3IgewogcHVibGljOgotICAgIERlbGF5UHJvY2Vz
c29yKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIGRvdWJsZSBtYXhEZWxheVRpbWUpOworICAgIERlbGF5UHJvY2Vzc29yKEF1ZGlvQ29u
dGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIGRvdWJs
ZSBtYXhEZWxheVRpbWUpOwogICAgIHZpcnR1YWwgfkRlbGF5UHJvY2Vzc29yKCk7CiAgICAgCiAg
ICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9EU1BLZXJuZWw+IGNyZWF0ZUtlcm5lbCgp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9E
eW5hbWljc0NvbXByZXNzb3JOb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vRHluYW1pY3NDb21wcmVzc29yTm9kZS5jcHAKaW5kZXggN2I4MDI0MmU0MjNkNWMxMjJkZDFh
MWVkMzA2OTkxYTU0Yjk5ODQxYy4uYTFhZTY2YTI4MWY1ODUxNmQzZWRjMTI5ODEyNTBjZDVjZmY2
NDM2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L0R5bmFtaWNzQ29tcHJlc3Nvck5vZGUuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBkZWZhdWx0TnVtYmVyT2ZPdXRwdXRDaGFubmVscyA9IDI7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRHluYW1pY3NDb21wcmVzc29yTm9kZTo6RHluYW1pY3NDb21wcmVzc29y
Tm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitEeW5hbWljc0Nv
bXByZXNzb3JOb2RlOjpEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4
dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBzYW1wbGVSYXRl
KQogewogICAgIGFkZElucHV0KHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9Ob2RlSW5wdXQ+KHRoaXMp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vRHluYW1pY3ND
b21wcmVzc29yTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWlj
c0NvbXByZXNzb3JOb2RlLmgKaW5kZXggMWIyZDNiOTg1MmQ3MDE1OTE2M2ZhNTllODJhZDU5M2I2
ZGNhMzNjZi4uODQzMDM5YjYyMjg1OGJjNjkyNmY2ZjgxMDMzYTMzNTM5YWE4Y2YzNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXByZXNzb3JO
b2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9EeW5hbWljc0NvbXBy
ZXNzb3JOb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgRHluYW1pY3NDb21wcmVzc29yOwog
CiBjbGFzcyBEeW5hbWljc0NvbXByZXNzb3JOb2RlIDogcHVibGljIEF1ZGlvTm9kZSB7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxEeW5hbWljc0NvbXByZXNzb3JOb2RlPiBjcmVhdGUoQXVkaW9D
b250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8RHluYW1p
Y3NDb21wcmVzc29yTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IER5bmFtaWNzQ29t
cHJlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkpOwogICAgIH0KQEAgLTYyLDcgKzYyLDcg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAg
ICBEeW5hbWljc0NvbXByZXNzb3JOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUp
OworICAgIER5bmFtaWNzQ29tcHJlc3Nvck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxl
UmF0ZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RHluYW1pY3NDb21wcmVzc29yPiBtX2R5bmFt
aWNzQ29tcHJlc3NvcjsKICAgICBSZWZQdHI8QXVkaW9QYXJhbT4gbV90aHJlc2hvbGQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fpbk5vZGUuY3BwCmluZGV4IGQzMjJjMTMz
YTdiY2NjNTlmMjY0ZTEzOGU1ZTQyZDAwZjMyODI2YjYuLmZiYTVlYzQ1OTIxYTZlZmQ3NzE5Njhm
MzRiZDdhMDA3ZmVlNzIzYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vR2Fpbk5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8v
R2Fpbk5vZGUuY3BwCkBAIC0zNCw3ICszNCw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
R2Fpbk5vZGU6OkdhaW5Ob2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0
ZSkKK0dhaW5Ob2RlOjpHYWluTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBs
ZVJhdGUpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fbGFz
dEdhaW4oMS4wKQogICAgICwgbV9zYW1wbGVBY2N1cmF0ZUdhaW5WYWx1ZXMoQXVkaW9Ob2RlOjpQ
cm9jZXNzaW5nU2l6ZUluRnJhbWVzKSAvLyBGSVhNRTogY2FuIHByb2JhYmx5IHNoYXJlIHRlbXAg
YnVmZmVyIGluIGNvbnRleHQKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBHYWluTm9kZTo6cmVzZXQo
KQogLy8gdW5pbml0aWFsaXplIGFuZCB0aGVuIHJlLWluaXRpYWxpemUgd2l0aCB0aGUgbmV3IGNo
YW5uZWwgY291bnQuCiB2b2lkIEdhaW5Ob2RlOjpjaGVja051bWJlck9mQ2hhbm5lbHNGb3JJbnB1
dChBdWRpb05vZGVJbnB1dCogaW5wdXQpCiB7Ci0gICAgQVNTRVJUKGNvbnRleHQoKS0+aXNBdWRp
b1RocmVhZCgpICYmIGNvbnRleHQoKS0+aXNHcmFwaE93bmVyKCkpOworICAgIEFTU0VSVChjb250
ZXh0KCkuaXNBdWRpb1RocmVhZCgpICYmIGNvbnRleHQoKS5pc0dyYXBoT3duZXIoKSk7CiAKICAg
ICBBU1NFUlQoaW5wdXQgJiYgaW5wdXQgPT0gdGhpcy0+aW5wdXQoMCkpOwogICAgIGlmIChpbnB1
dCAhPSB0aGlzLT5pbnB1dCgwKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vR2Fpbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vR2Fp
bk5vZGUuaAppbmRleCA2ZmM2ZmE1NTBhMDE3YWJmMzdmYTU0M2NjMmRlZTZjNGI5OGZlZjUyLi40
Y2U5NzhkZTRhMjlkYjNhYTYyMDc1ZGJhNzI2ZDI2ZTk4OGM3NzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0dhaW5Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9HYWluTm9kZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNsYXNzIEF1
ZGlvQ29udGV4dDsKIAogY2xhc3MgR2Fpbk5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlIHsKIHB1Ymxp
YzoKLSAgICBzdGF0aWMgUmVmPEdhaW5Ob2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlKQorICAgIHN0YXRpYyBSZWY8R2Fpbk5vZGU+IGNyZWF0ZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBHYWluTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiAgICAgfQpA
QCAtNTgsNyArNTgsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgZG91YmxlIHRhaWxUaW1lKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lU
aW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gMDsgfQogCi0gICAgR2Fpbk5vZGUoQXVkaW9D
b250ZXh0KiwgZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgR2Fpbk5vZGUoQXVkaW9Db250ZXh0Jiwg
ZmxvYXQgc2FtcGxlUmF0ZSk7CiAKICAgICBmbG9hdCBtX2xhc3RHYWluOyAvLyBmb3IgZGUtemlw
cGVyaW5nCiAgICAgUmVmUHRyPEF1ZGlvUGFyYW0+IG1fZ2FpbjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3Vy
Y2VOb2RlLmNwcAppbmRleCBiMGE4MDhkZDVmNzA2NTk1Nzg2OTcyMTI0ZGE2ZDRhYWQzMWMxOWM2
Li4wMTM5MWZkM2MzNmI4NzY0NjFhNWNlN2ZjNGY2YzNiZTFlMDJkMDk3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRB
dWRpb1NvdXJjZU5vZGUuY3BwCkBAIC00MCwxMyArNDAsMTMgQEAgY29uc3QgdW5zaWduZWQgbWF4
U2FtcGxlUmF0ZSA9IDE5MjAwMDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8TWVkaWFF
bGVtZW50QXVkaW9Tb3VyY2VOb2RlPiBNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU6OmNyZWF0
ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCkK
K1JlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IE1lZGlhRWxlbWVudEF1ZGlvU291cmNl
Tm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgSFRNTE1lZGlhRWxlbWVudCogbWVk
aWFFbGVtZW50KQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhRWxlbWVudEF1ZGlv
U291cmNlTm9kZShjb250ZXh0LCBtZWRpYUVsZW1lbnQpKTsKIH0KIAotTWVkaWFFbGVtZW50QXVk
aW9Tb3VyY2VOb2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0KiBj
b250ZXh0LCBIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCi0gICAgOiBBdWRpb05vZGUo
Y29udGV4dCwgY29udGV4dC0+c2FtcGxlUmF0ZSgpKQorTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VO
b2RlOjpNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoQXVkaW9Db250ZXh0JiBjb250ZXh0LCBI
VE1MTWVkaWFFbGVtZW50KiBtZWRpYUVsZW1lbnQpCisgICAgOiBBdWRpb05vZGUoY29udGV4dCwg
Y29udGV4dC5zYW1wbGVSYXRlKCkpCiAgICAgLCBtX21lZGlhRWxlbWVudChtZWRpYUVsZW1lbnQp
CiAgICAgLCBtX3NvdXJjZU51bWJlck9mQ2hhbm5lbHMoMCkKICAgICAsIG1fc291cmNlU2FtcGxl
UmF0ZSgwKQpAQCAtOTIsNyArOTIsNyBAQCB2b2lkIE1lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9k
ZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9hdCBzb3VyYwogCiAgICAg
ICAgIHsKICAgICAgICAgICAgIC8vIFRoZSBjb250ZXh0IG11c3QgYmUgbG9ja2VkIHdoZW4gY2hh
bmdpbmcgdGhlIG51bWJlciBvZiBvdXRwdXQgY2hhbm5lbHMuCi0gICAgICAgICAgICBBdWRpb0Nv
bnRleHQ6OkF1dG9Mb2NrZXIgY29udGV4dExvY2tlcigqY29udGV4dCgpKTsKKyAgICAgICAgICAg
IEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CiAKICAg
ICAgICAgICAgIC8vIERvIGFueSBuZWNlc3NzYXJ5IHJlLWNvbmZpZ3VyYXRpb24gdG8gdGhlIG91
dHB1dCdzIG51bWJlciBvZiBjaGFubmVscy4KICAgICAgICAgICAgIG91dHB1dCgwKS0+c2V0TnVt
YmVyT2ZDaGFubmVscyhudW1iZXJPZkNoYW5uZWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhRWxlbWVudEF1ZGlvU291cmNlTm9kZS5o
CmluZGV4IDUwYjE0Yjc0NzY5YWU1MDcxOTY4OWUwZGUyMGM3ZDNmYjU5MTU2ZTguLmUyMjFjY2Fh
NjEyMDk2YjNiYTYzNzc1YzY2NjY1ODkzMDRiMGQ0NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5v
ZGUuaApAQCAtNDEsNyArNDEsNyBAQCBjbGFzcyBBdWRpb0NvbnRleHQ7CiAgICAgCiBjbGFzcyBN
ZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUgOiBwdWJsaWMgQXVkaW9Ob2RlLCBwdWJsaWMgQXVk
aW9Tb3VyY2VQcm92aWRlckNsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxNZWRpYUVs
ZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQqLCBIVE1MTWVkaWFFbGVt
ZW50Kik7CisgICAgc3RhdGljIFJlZjxNZWRpYUVsZW1lbnRBdWRpb1NvdXJjZU5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFFbGVtZW50Kik7CiAKICAgICB2aXJ0dWFsIH5NZWRp
YUVsZW1lbnRBdWRpb1NvdXJjZU5vZGUoKTsKIApAQCAtNTgsNyArNTgsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1bmxvY2soKTsKIAogcHJpdmF0ZToKLSAgICBNZWRpYUVsZW1lbnRBdWRpb1NvdXJj
ZU5vZGUoQXVkaW9Db250ZXh0KiwgSFRNTE1lZGlhRWxlbWVudCopOworICAgIE1lZGlhRWxlbWVu
dEF1ZGlvU291cmNlTm9kZShBdWRpb0NvbnRleHQmLCBIVE1MTWVkaWFFbGVtZW50Kik7CiAKICAg
ICB2aXJ0dWFsIGRvdWJsZSB0YWlsVGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0K
ICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJu
IDA7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCmluZGV4IDA0YjhkYjEy
YThhM2YwODQ3ZGExMDk2NTJmYzcxZmI1OWQyMDNkNGEuLjdhZjNjMWNhNTk0ZDFiMTAwYTYxYzU0
OGY2YTI1ZDZjMzI0MDk3ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlLmNw
cApAQCAtMzcsMjIgKzM3LDIyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmPE1lZGlh
U3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQqIGNvbnRleHQsIHNpemVfdCBudW1iZXJPZkNoYW5uZWxz
KQorUmVmPE1lZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IE1lZGlhU3RyZWFtQXVkaW9E
ZXN0aW5hdGlvbk5vZGU6OmNyZWF0ZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIHNpemVfdCBudW1i
ZXJPZkNoYW5uZWxzKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE1lZGlhU3RyZWFtQXVk
aW9EZXN0aW5hdGlvbk5vZGUoY29udGV4dCwgbnVtYmVyT2ZDaGFubmVscykpOwogfQogCi1NZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25O
b2RlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgc2l6ZV90IG51bWJlck9mQ2hhbm5lbHMpCi0gICAg
OiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0LCBjb250ZXh0LT5zYW1wbGVSYXRlKCks
IG51bWJlck9mQ2hhbm5lbHMpCitNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpNZWRp
YVN0cmVhbUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgc2l6ZV90
IG51bWJlck9mQ2hhbm5lbHMpCisgICAgOiBBdWRpb0Jhc2ljSW5zcGVjdG9yTm9kZShjb250ZXh0
LCBjb250ZXh0LnNhbXBsZVJhdGUoKSwgbnVtYmVyT2ZDaGFubmVscykKICAgICAsIG1fbWl4QnVz
KEF1ZGlvQnVzOjpjcmVhdGUobnVtYmVyT2ZDaGFubmVscywgUHJvY2Vzc2luZ1NpemVJbkZyYW1l
cykpCiB7CiAgICAgc2V0Tm9kZVR5cGUoTm9kZVR5cGVNZWRpYVN0cmVhbUF1ZGlvRGVzdGluYXRp
b24pOwogCiAgICAgbV9zb3VyY2UgPSBNZWRpYVN0cmVhbUF1ZGlvU291cmNlOjpjcmVhdGUoKTsK
ICAgICBWZWN0b3I8UmVmUHRyPFJlYWx0aW1lTWVkaWFTb3VyY2U+PiBhdWRpb1NvdXJjZXMoMSwg
bV9zb3VyY2UpOwotICAgIG1fc3RyZWFtID0gTWVkaWFTdHJlYW06OmNyZWF0ZSgqY29udGV4dC0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShXVEZN
b3ZlKGF1ZGlvU291cmNlcyksIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+KCkp
KTsKKyAgICBtX3N0cmVhbSA9IE1lZGlhU3RyZWFtOjpjcmVhdGUoKmNvbnRleHQuc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCBNZWRpYVN0cmVhbVByaXZhdGU6OmNyZWF0ZShXVEZNb3ZlKGF1ZGlv
U291cmNlcyksIFZlY3RvcjxSZWZQdHI8UmVhbHRpbWVNZWRpYVNvdXJjZT4+KCkpKTsKIAotICAg
IG1fc291cmNlLT5zZXRBdWRpb0Zvcm1hdChudW1iZXJPZkNoYW5uZWxzLCBjb250ZXh0LT5zYW1w
bGVSYXRlKCkpOworICAgIG1fc291cmNlLT5zZXRBdWRpb0Zvcm1hdChudW1iZXJPZkNoYW5uZWxz
LCBjb250ZXh0LnNhbXBsZVJhdGUoKSk7CiAKICAgICBpbml0aWFsaXplKCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL01lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJl
YW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCmluZGV4IDJmNDkxNjFiNzE4NDQ4YzA2MWZlNWI5YTJl
ZTNlZjM5YTc1ZmRlOWYuLjBiYWRkYWExODZlNjMzYWU1ZjA4ZjE2ZTQ1ZTA2ZGRhYTI0MDBiMDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1B
dWRpb0Rlc3RpbmF0aW9uTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZS5oCkBAIC0zOSw3ICszOSw3IEBAIGNs
YXNzIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2U7CiAKIGNsYXNzIE1lZGlhU3RyZWFtQXVkaW9EZXN0
aW5hdGlvbk5vZGUgOiBwdWJsaWMgQXVkaW9CYXNpY0luc3BlY3Rvck5vZGUgewogcHVibGljOgot
ICAgIHN0YXRpYyBSZWY8TWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCosIHNpemVfdCBudW1iZXJPZkNoYW5uZWxzKTsKKyAgICBzdGF0aWMgUmVmPE1l
ZGlhU3RyZWFtQXVkaW9EZXN0aW5hdGlvbk5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQmLCBzaXpl
X3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbUF1ZGlvRGVz
dGluYXRpb25Ob2RlKCk7CiAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIFJlYWx0aW1l
TWVkaWFTb3VyY2UqIG1lZGlhU3RyZWFtU291cmNlKCk7CiAKIHByaXZhdGU6Ci0gICAgTWVkaWFT
dHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqLCBzaXplX3QgbnVtYmVyT2ZD
aGFubmVscyk7CisgICAgTWVkaWFTdHJlYW1BdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRl
eHQmLCBzaXplX3QgbnVtYmVyT2ZDaGFubmVscyk7CiAKICAgICB2aXJ0dWFsIGRvdWJsZSB0YWls
VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGRvdWJsZSBs
YXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIDA7IH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291
cmNlTm9kZS5jcHAKaW5kZXggYzVkYjcyZDQxNmNiMTE2ZmYzZGY3YmViY2ZmNDE4NzRiZTIzN2Q0
ZS4uZjY0MGE2ODI2Y2FjYjEzYjZjOGExYmFmODUzN2M5MDM3YjZmMmU1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9NZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPE1lZGlhU3RyZWFtQXVkaW9T
b3VyY2VOb2RlPiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4
dCYKIH0KIAogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZU5vZGU6Ok1lZGlhU3RyZWFtQXVkaW9Tb3Vy
Y2VOb2RlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgTWVkaWFTdHJlYW0mIG1lZGlhU3RyZWFtLCBN
ZWRpYVN0cmVhbVRyYWNrJiBhdWRpb1RyYWNrKQotICAgIDogQXVkaW9Ob2RlKCZjb250ZXh0LCBj
b250ZXh0LnNhbXBsZVJhdGUoKSkKKyAgICA6IEF1ZGlvTm9kZShjb250ZXh0LCBjb250ZXh0LnNh
bXBsZVJhdGUoKSkKICAgICAsIG1fbWVkaWFTdHJlYW0obWVkaWFTdHJlYW0pCiAgICAgLCBtX2F1
ZGlvVHJhY2soYXVkaW9UcmFjaykKIHsKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBNZWRpYVN0cmVh
bUF1ZGlvU291cmNlTm9kZTo6c2V0Rm9ybWF0KHNpemVfdCBudW1iZXJPZkNoYW5uZWxzLCBmbG9h
dCBzb3VyY2UKIAogICAgIHsKICAgICAgICAgLy8gVGhlIGNvbnRleHQgbXVzdCBiZSBsb2NrZWQg
d2hlbiBjaGFuZ2luZyB0aGUgbnVtYmVyIG9mIG91dHB1dCBjaGFubmVscy4KLSAgICAgICAgQXVk
aW9Db250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoKmNvbnRleHQoKSk7CisgICAgICAg
IEF1ZGlvQ29udGV4dDo6QXV0b0xvY2tlciBjb250ZXh0TG9ja2VyKGNvbnRleHQoKSk7CiAKICAg
ICAgICAgLy8gRG8gYW55IG5lY2Vzc3NhcnkgcmUtY29uZmlndXJhdGlvbiB0byB0aGUgb3V0cHV0
J3MgbnVtYmVyIG9mIGNoYW5uZWxzLgogICAgICAgICBvdXRwdXQoMCktPnNldE51bWJlck9mQ2hh
bm5lbHMobnVtYmVyT2ZDaGFubmVscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZS5jcHAKaW5k
ZXggOGY2NjdmZGEyNTExZmE2NTU1ODBiZWQ1ZjNmOGU3YWQ5NWQ5YTA1YS4uOGQ0YWU0ODJkNzVj
NDg4OWFkN2M2NzFlZWUyYzdkNTEwOTdkMmI1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2Rl
LmNwcApAQCAtMzgsNyArMzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjb25zdCBz
aXplX3QgcmVuZGVyUXVhbnR1bVNpemUgPSAxMjg7ICAgIAogCi1PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCitPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5v
ZGU6Ok9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZShBdWRpb0NvbnRleHQmIGNvbnRleHQsIEF1
ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpCiAgICAgOiBBdWRpb0Rlc3RpbmF0aW9uTm9kZShjb250
ZXh0LCByZW5kZXJUYXJnZXQtPnNhbXBsZVJhdGUoKSkKICAgICAsIG1fcmVuZGVyVGFyZ2V0KHJl
bmRlclRhcmdldCkKICAgICAsIG1fcmVuZGVyVGhyZWFkKDApCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om9mZmxpbmVSZW5kZXIoKQogICAgIGlm
ICghbV9yZW5kZXJCdXMuZ2V0KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgaXNBdWRp
b0NvbnRleHRJbml0aWFsaXplZCA9IGNvbnRleHQoKS0+aXNJbml0aWFsaXplZCgpOworICAgIGJv
b2wgaXNBdWRpb0NvbnRleHRJbml0aWFsaXplZCA9IGNvbnRleHQoKS5pc0luaXRpYWxpemVkKCk7
CiAgICAgQVNTRVJUKGlzQXVkaW9Db250ZXh0SW5pdGlhbGl6ZWQpOwogICAgIGlmICghaXNBdWRp
b0NvbnRleHRJbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDcgKzE0OCw3IEBA
IHZvaWQgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlOjpvZmZsaW5lUmVuZGVyKCkKIAogdm9p
ZCBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGU6Om5vdGlmeUNvbXBsZXRlKCkKIHsKLSAgICBj
b250ZXh0KCktPmZpcmVDb21wbGV0aW9uRXZlbnQoKTsKKyAgICBjb250ZXh0KCkuZmlyZUNvbXBs
ZXRpb25FdmVudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9EZXN0aW5h
dGlvbk5vZGUuaAppbmRleCAyMGNmNGZiYTVkZmNmMWVmYTNmNDAyMzJkNDI3Y2ZjM2JiNzk5NDAw
Li4yMWEyYzNmZjIxOGY2NTY4N2Y4ZTE0MGI4Y2I0NmFjMDgyNmQwMzI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9k
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvRGVz
dGluYXRpb25Ob2RlLmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgQXVkaW9Db250ZXh0OwogICAg
IAogY2xhc3MgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlIDogcHVibGljIEF1ZGlvRGVzdGlu
YXRpb25Ob2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0
aW9uTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRl
clRhcmdldCkKKyAgICBzdGF0aWMgUmVmPE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9uTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgQXVkaW9CdWZmZXIqIHJlbmRlclRhcmdldCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9mZmxpbmVBdWRpb0Rlc3RpbmF0aW9u
Tm9kZShjb250ZXh0LCByZW5kZXJUYXJnZXQpKTsgICAgIAogICAgIH0KQEAgLTU2LDcgKzU2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgZmxvYXQgc2FtcGxlUmF0ZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIG1fcmVuZGVyVGFyZ2V0LT5zYW1wbGVSYXRlKCk7IH0KIAogcHJpdmF0ZToKLSAg
ICBPZmZsaW5lQXVkaW9EZXN0aW5hdGlvbk5vZGUoQXVkaW9Db250ZXh0KiwgQXVkaW9CdWZmZXIq
IHJlbmRlclRhcmdldCk7CisgICAgT2ZmbGluZUF1ZGlvRGVzdGluYXRpb25Ob2RlKEF1ZGlvQ29u
dGV4dCYsIEF1ZGlvQnVmZmVyKiByZW5kZXJUYXJnZXQpOwogCiAgICAgLy8gVGhpcyBBdWRpb05v
ZGUgcmVuZGVycyBpbnRvIHRoaXMgQXVkaW9CdWZmZXIuCiAgICAgUmVmUHRyPEF1ZGlvQnVmZmVy
PiBtX3JlbmRlclRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vT3NjaWxsYXRvck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9Pc2NpbGxhdG9yTm9kZS5jcHAKaW5kZXggMzhlMzI5NTg4ZjFhZWYxMDAwZTRmZmY0YTFmN2U2
NTkzMjhhNDg1Mi4uMzIwNGUxMGU3MzllODc5ODhkMDc3YzcxZWEyN2FiZWRiYTJjNTEzOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5j
cHAKQEAgLTQ2LDEyICs0NiwxMiBAQCBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2RlOjpzX3Bl
cmlvZGljV2F2ZVNxdWFyZSA9IG51bGxwdHI7CiBQZXJpb2RpY1dhdmUqIE9zY2lsbGF0b3JOb2Rl
OjpzX3BlcmlvZGljV2F2ZVNhd3Rvb3RoID0gbnVsbHB0cjsKIFBlcmlvZGljV2F2ZSogT3NjaWxs
YXRvck5vZGU6OnNfcGVyaW9kaWNXYXZlVHJpYW5nbGUgPSBudWxscHRyOwogCi1SZWY8T3NjaWxs
YXRvck5vZGU+IE9zY2lsbGF0b3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0LCBm
bG9hdCBzYW1wbGVSYXRlKQorUmVmPE9zY2lsbGF0b3JOb2RlPiBPc2NpbGxhdG9yTm9kZTo6Y3Jl
YXRlKEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKIHsKICAgICByZXR1
cm4gYWRvcHRSZWYoKm5ldyBPc2NpbGxhdG9yTm9kZShjb250ZXh0LCBzYW1wbGVSYXRlKSk7CiB9
CiAKLU9zY2lsbGF0b3JOb2RlOjpPc2NpbGxhdG9yTm9kZShBdWRpb0NvbnRleHQqIGNvbnRleHQs
IGZsb2F0IHNhbXBsZVJhdGUpCitPc2NpbGxhdG9yTm9kZTo6T3NjaWxsYXRvck5vZGUoQXVkaW9D
b250ZXh0JiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlKQogICAgIDogQXVkaW9TY2hlZHVsZWRT
b3VyY2VOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpCiAgICAgLCBtX3R5cGUoU0lORSkKICAgICAs
IG1fZmlyc3RSZW5kZXIodHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vT3NjaWxsYXRvck5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT3NjaWxsYXRvck5vZGUuaAppbmRleCAzOTAyNzE2YTYxZmY2NmE2OTIwZmQyNGVmYmRhOWY1
OGY3ZjYzMDEyLi5lNGU3MzdmOWY2ZjE0MGUwMjQ1YTAwN2QwNGMyZjk5MjNlYjI5NTAwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09zY2lsbGF0b3JOb2RlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9Pc2NpbGxhdG9yTm9kZS5oCkBA
IC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgQ1VTVE9NID0gNAogICAgIH07CiAKLSAg
ICBzdGF0aWMgUmVmPE9zY2lsbGF0b3JOb2RlPiBjcmVhdGUoQXVkaW9Db250ZXh0KiwgZmxvYXQg
c2FtcGxlUmF0ZSk7CisgICAgc3RhdGljIFJlZjxPc2NpbGxhdG9yTm9kZT4gY3JlYXRlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCB+T3NjaWxsYXRvck5v
ZGUoKTsKICAgICAKQEAgLTcwLDcgKzcwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UGVyaW9k
aWNXYXZlKFBlcmlvZGljV2F2ZSopOwogCiBwcml2YXRlOgotICAgIE9zY2lsbGF0b3JOb2RlKEF1
ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUpOworICAgIE9zY2lsbGF0b3JOb2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUpOwogCiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRp
bWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCBkb3VibGUgbGF0
ZW5jeVRpbWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiAwOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bhbm5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmNwcAppbmRleCA2YmE1ZTFhMGI3NzZlMjk5
NThjNzU4MjU5MzI1MDg3ZjVhOGEzYTcxLi4zYTQ2YjJkYmViNGZmZmZiMjBlMTcwOGNlM2UxNDY2
MWUxMThlOWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1Bh
bm5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vUGFubmVy
Tm9kZS5jcHAKQEAgLTQ2LDE0ICs0NiwxNCBAQCBzdGF0aWMgdm9pZCBmaXhOQU5zKGRvdWJsZSAm
eCkKICAgICAgICAgeCA9IDAuMDsKIH0KIAotUGFubmVyTm9kZTo6UGFubmVyTm9kZShBdWRpb0Nv
bnRleHQqIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCitQYW5uZXJOb2RlOjpQYW5uZXJOb2Rl
KEF1ZGlvQ29udGV4dCYgY29udGV4dCwgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1ZGlvTm9k
ZShjb250ZXh0LCBzYW1wbGVSYXRlKQogICAgICwgbV9wYW5uaW5nTW9kZWwoUGFubmVyOjpQYW5u
aW5nTW9kZWxIUlRGKQogICAgICwgbV9sYXN0R2FpbigtMS4wKQogICAgICwgbV9jb25uZWN0aW9u
Q291bnQoMCkKIHsKICAgICAvLyBMb2FkIHRoZSBIUlRGIGRhdGFiYXNlIGFzeW5jaHJvbm91c2x5
IHNvIHdlIGRvbid0IGJsb2NrIHRoZSBKYXZhc2NyaXB0IHRocmVhZCB3aGlsZSBjcmVhdGluZyB0
aGUgSFJURiBkYXRhYmFzZS4KLSAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFz
ZUxvYWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC0+
c2FtcGxlUmF0ZSgpKTsKKyAgICBtX2hydGZEYXRhYmFzZUxvYWRlciA9IEhSVEZEYXRhYmFzZUxv
YWRlcjo6Y3JlYXRlQW5kTG9hZEFzeW5jaHJvbm91c2x5SWZOZWNlc3NhcnkoY29udGV4dC5zYW1w
bGVSYXRlKCkpOwogCiAgICAgYWRkSW5wdXQoc3RkOjptYWtlX3VuaXF1ZTxBdWRpb05vZGVJbnB1
dD4odGhpcykpOwogICAgIGFkZE91dHB1dChzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTm9kZU91dHB1
dD4odGhpcywgMikpOwpAQCAtODQsOCArODQsOCBAQCB2b2lkIFBhbm5lck5vZGU6OnB1bGxJbnB1
dHMoc2l6ZV90IGZyYW1lc1RvUHJvY2VzcykKIHsKICAgICAvLyBXZSBvdmVycmlkZSBwdWxsSW5w
dXRzKCksIHNvIHdlIGNhbiBkZXRlY3QgbmV3IEF1ZGlvU291cmNlTm9kZXMgd2hpY2ggaGF2ZSBj
b25uZWN0ZWQgdG8gdXMgd2hlbiBuZXcgY29ubmVjdGlvbnMgYXJlIG1hZGUuCiAgICAgLy8gVGhl
c2UgQXVkaW9Tb3VyY2VOb2RlcyBuZWVkIHRvIGJlIG1hZGUgYXdhcmUgb2Ygb3VyIGV4aXN0ZW5j
ZSBpbiBvcmRlciB0byBoYW5kbGUgZG9wcGxlciBzaGlmdCBwaXRjaCBjaGFuZ2VzLgotICAgIGlm
IChtX2Nvbm5lY3Rpb25Db3VudCAhPSBjb250ZXh0KCktPmNvbm5lY3Rpb25Db3VudCgpKSB7Ci0g
ICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4dCgpLT5jb25uZWN0aW9uQ291bnQoKTsK
KyAgICBpZiAobV9jb25uZWN0aW9uQ291bnQgIT0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3VudCgp
KSB7CisgICAgICAgIG1fY29ubmVjdGlvbkNvdW50ID0gY29udGV4dCgpLmNvbm5lY3Rpb25Db3Vu
dCgpOwogCiAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGdvIHRocm91Z2ggYWxsIG5vZGVzIGNvbm5l
Y3RlZCB0byB1cy4KICAgICAgICAgSGFzaFNldDxBdWRpb05vZGUqPiB2aXNpdGVkTm9kZXM7CkBA
IC0xMTIsNyArMTEyLDcgQEAgdm9pZCBQYW5uZXJOb2RlOjpwcm9jZXNzKHNpemVfdCBmcmFtZXNU
b1Byb2Nlc3MpCiAKICAgICAvLyBIUlRGRGF0YWJhc2Ugc2hvdWxkIGJlIGxvYWRlZCBiZWZvcmUg
cHJvY2VlZGluZyBmb3Igb2ZmbGluZSBhdWRpbyBjb250ZXh0IHdoZW4gcGFubmluZ01vZGVsKCkg
aXMgIkhSVEYiLgogICAgIGlmIChwYW5uaW5nTW9kZWwoKSA9PSAiSFJURiIgJiYgIW1faHJ0ZkRh
dGFiYXNlTG9hZGVyLT5pc0xvYWRlZCgpKSB7Ci0gICAgICAgIGlmIChjb250ZXh0KCktPmlzT2Zm
bGluZUNvbnRleHQoKSkKKyAgICAgICAgaWYgKGNvbnRleHQoKS5pc09mZmxpbmVDb250ZXh0KCkp
CiAgICAgICAgICAgICBtX2hydGZEYXRhYmFzZUxvYWRlci0+d2FpdEZvckxvYWRlclRocmVhZENv
bXBsZXRpb24oKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkZXN0aW5hdGlvbi0+emVy
bygpOwpAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgUGFubmVyTm9kZTo6dW5pbml0aWFsaXplKCkK
IAogQXVkaW9MaXN0ZW5lciogUGFubmVyTm9kZTo6bGlzdGVuZXIoKQogewotICAgIHJldHVybiBj
b250ZXh0KCktPmxpc3RlbmVyKCk7CisgICAgcmV0dXJuIGNvbnRleHQoKS5saXN0ZW5lcigpOwog
fQogCiBTdHJpbmcgUGFubmVyTm9kZTo6cGFubmluZ01vZGVsKCkgY29uc3QKQEAgLTIxOCw3ICsy
MTgsNyBAQCBib29sIFBhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbCh1bnNpZ25lZCBtb2RlbCkK
ICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTT1VOREZJRUxEOgogICAgICAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHNvdW5kIGZpZWxkIG1vZGVsLiBTZWUgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc3MzY3LgotICAgICAgICBjb250ZXh0KCktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3Nh
Z2VMZXZlbDo6V2FybmluZywgQVNDSUlMaXRlcmFsKCInc291bmRmaWVsZCcgcGFubmluZyBtb2Rl
bCBub3QgaW1wbGVtZW50ZWQuIikpOworICAgICAgICBjb250ZXh0KCkuc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxl
dmVsOjpXYXJuaW5nLCBBU0NJSUxpdGVyYWwoIidzb3VuZGZpZWxkJyBwYW5uaW5nIG1vZGVsIG5v
dCBpbXBsZW1lbnRlZC4iKSk7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg
IHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vUGFubmVyTm9kZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJO
b2RlLmgKaW5kZXggNTBlNGJiYTVlMjA5ZjY5ODEwMDk5YzdjMzUzYTg3ZDFjYzg1MzdlMy4uZGQ0
ZTkzMTU5YzE5NTEwYmE5Nzk1MzBjYTBlOGJkYzc1ZDJhZjVhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJhdWRpby9QYW5uZXJOb2RlLmgKQEAgLTY0LDcgKzY0LDcgQEAgcHVibGlj
OgogICAgICAgICBFWFBPTkVOVElBTF9ESVNUQU5DRSA9IDIsCiAgICAgfTsKIAotICAgIHN0YXRp
YyBSZWY8UGFubmVyTm9kZT4gY3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZmxvYXQgc2Ft
cGxlUmF0ZSkKKyAgICBzdGF0aWMgUmVmPFBhbm5lck5vZGU+IGNyZWF0ZShBdWRpb0NvbnRleHQm
IGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBQYW5uZXJOb2RlKGNvbnRleHQsIHNhbXBsZVJhdGUpKTsKICAgICB9CkBAIC0xMzMs
NyArMTMzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgZG91YmxlIGxhdGVuY3lUaW1lKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gbV9wYW5uZXIgPyBtX3Bhbm5lci0+bGF0ZW5jeVRpbWUoKSA6
IDA7IH0KIAogcHJpdmF0ZToKLSAgICBQYW5uZXJOb2RlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNh
bXBsZVJhdGUpOworICAgIFBhbm5lck5vZGUoQXVkaW9Db250ZXh0JiwgZmxvYXQgc2FtcGxlUmF0
ZSk7CiAKICAgICAvLyBSZXR1cm5zIHRoZSBjb21iaW5lZCBkaXN0YW5jZSBhbmQgY29uZSBnYWlu
IGF0dGVudWF0aW9uLgogICAgIGZsb2F0IGRpc3RhbmNlQ29uZUdhaW4oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nvck5vZGUuY3Bw
CmluZGV4IDU1YTI4MjE3NWFlYTgyYWMwMTJkNTYxOTZkZTk5N2FkNWM0MDEzMmIuLjY4NWM2NzMw
ODRjOGMxZjE4MzMwZmY5ZmYzNjc2NTMwOWNkMzkzZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vU2NyaXB0UHJvY2Vzc29yTm9kZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9TY3JpcHRQcm9jZXNzb3JOb2RlLmNwcApAQCAtNDAs
NyArNDAsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZlB0cjxTY3JpcHRQcm9jZXNz
b3JOb2RlPiBTY3JpcHRQcm9jZXNzb3JOb2RlOjpjcmVhdGUoQXVkaW9Db250ZXh0KiBjb250ZXh0
LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJ
bnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKQorUmVmUHRyPFNj
cmlwdFByb2Nlc3Nvck5vZGU+IFNjcmlwdFByb2Nlc3Nvck5vZGU6OmNyZWF0ZShBdWRpb0NvbnRl
eHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
CiB7CiAgICAgLy8gQ2hlY2sgZm9yIHZhbGlkIGJ1ZmZlciBzaXplLgogICAgIHN3aXRjaCAoYnVm
ZmVyU2l6ZSkgewpAQCAtNjgsNyArNjgsNyBAQCBSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4g
U2NyaXB0UHJvY2Vzc29yTm9kZTo6Y3JlYXRlKEF1ZGlvQ29udGV4dCogY29udGV4dCwgZgogICAg
IHJldHVybiBhZG9wdFJlZigqbmV3IFNjcmlwdFByb2Nlc3Nvck5vZGUoY29udGV4dCwgc2FtcGxl
UmF0ZSwgYnVmZmVyU2l6ZSwgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCBudW1iZXJPZk91dHB1dENo
YW5uZWxzKSk7CiB9CiAKLVNjcmlwdFByb2Nlc3Nvck5vZGU6OlNjcmlwdFByb2Nlc3Nvck5vZGUo
QXVkaW9Db250ZXh0KiBjb250ZXh0LCBmbG9hdCBzYW1wbGVSYXRlLCBzaXplX3QgYnVmZmVyU2l6
ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25lZCBudW1iZXJPZk91dHB1
dENoYW5uZWxzKQorU2NyaXB0UHJvY2Vzc29yTm9kZTo6U2NyaXB0UHJvY2Vzc29yTm9kZShBdWRp
b0NvbnRleHQmIGNvbnRleHQsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1
bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpCiAgICAgOiBBdWRpb05vZGUoY29udGV4dCwgc2FtcGxlUmF0ZSkKICAgICAsIG1fZG91
YmxlQnVmZmVySW5kZXgoMCkKICAgICAsIG1fZG91YmxlQnVmZmVySW5kZXhGb3JFdmVudCgwKQpA
QCAtMTA0LDcgKzEwNCw3IEBAIHZvaWQgU2NyaXB0UHJvY2Vzc29yTm9kZTo6aW5pdGlhbGl6ZSgp
CiAgICAgaWYgKGlzSW5pdGlhbGl6ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZmxvYXQg
c2FtcGxlUmF0ZSA9IGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgpOworICAgIGZsb2F0IHNhbXBsZVJh
dGUgPSBjb250ZXh0KCkuc2FtcGxlUmF0ZSgpOwogCiAgICAgLy8gQ3JlYXRlIGRvdWJsZSBidWZm
ZXJzIG9uIGJvdGggdGhlIGlucHV0IGFuZCBvdXRwdXQgc2lkZXMuCiAgICAgLy8gVGhlc2UgQXVk
aW9CdWZmZXJzIHdpbGwgYmUgZGlyZWN0bHkgYWNjZXNzZWQgaW4gdGhlIG1haW4gdGhyZWFkIGJ5
IEphdmFTY3JpcHQuCkBAIC0yMzksMTMgKzIzOSwxMyBAQCB2b2lkIFNjcmlwdFByb2Nlc3Nvck5v
ZGU6OmZpcmVQcm9jZXNzRXZlbnQoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBBdm9pZCBm
aXJpbmcgdGhlIGV2ZW50IGlmIHRoZSBkb2N1bWVudCBoYXMgYWxyZWFkeSBnb25lIGF3YXkuCi0g
ICAgaWYgKGNvbnRleHQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7CisgICAgaWYgKGNv
bnRleHQoKS5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKICAgICAgICAgLy8gTGV0IHRoZSBh
dWRpbyB0aHJlYWQga25vdyB3ZSd2ZSBnb3R0ZW4gdG8gdGhlIHBvaW50IHdoZXJlIGl0J3MgT0sg
Zm9yIGl0IHRvIG1ha2UgYW5vdGhlciByZXF1ZXN0LgogICAgICAgICBtX2lzUmVxdWVzdE91dHN0
YW5kaW5nID0gZmFsc2U7CiAKICAgICAgICAgLy8gQ2FsY3VsYXRlIHBsYXliYWNrVGltZSB3aXRo
IHRoZSBidWZmZXJzaXplIHdoaWNoIG5lZWRzIHRvIGJlIHByb2Nlc3NlZCBlYWNoIHRpbWUgd2hl
biBvbmF1ZGlvcHJvY2VzcyBpcyBjYWxsZWQuCiAgICAgICAgIC8vIFRoZSBvdXRwdXRCdWZmZXIg
YmVpbmcgcGFzc2VkIHRvIEpTIHdpbGwgYmUgcGxheWVkIGFmdGVyIGV4aGF1c3RpbmcgcHJldmlv
dXMgb3V0cHV0QnVmZmVyIGJ5IGRvdWJsZS1idWZmZXJpbmcuCi0gICAgICAgIGRvdWJsZSBwbGF5
YmFja1RpbWUgPSAoY29udGV4dCgpLT5jdXJyZW50U2FtcGxlRnJhbWUoKSArIG1fYnVmZmVyU2l6
ZSkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbnRleHQoKS0+c2FtcGxlUmF0ZSgpKTsKKyAgICAg
ICAgZG91YmxlIHBsYXliYWNrVGltZSA9IChjb250ZXh0KCkuY3VycmVudFNhbXBsZUZyYW1lKCkg
KyBtX2J1ZmZlclNpemUpIC8gc3RhdGljX2Nhc3Q8ZG91YmxlPihjb250ZXh0KCkuc2FtcGxlUmF0
ZSgpKTsKIAogICAgICAgICAvLyBDYWxsIHRoZSBKYXZhU2NyaXB0IGV2ZW50IGhhbmRsZXIgd2hp
Y2ggd2lsbCBkbyB0aGUgYXVkaW8gcHJvY2Vzc2luZy4KICAgICAgICAgZGlzcGF0Y2hFdmVudChB
dWRpb1Byb2Nlc3NpbmdFdmVudDo6Y3JlYXRlKGlucHV0QnVmZmVyLCBvdXRwdXRCdWZmZXIsIHBs
YXliYWNrVGltZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9TY3JpcHRQcm9jZXNzb3JOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlv
L1NjcmlwdFByb2Nlc3Nvck5vZGUuaAppbmRleCA0NDEyMDY5ZDZjNzkxMjZjN2E4NTVhNjkyM2Nj
OGNhMTkzNzNhNzA4Li43YmNjOWRiOTkyNDVhMzRlNGI5OWQ0NDFiYWYwM2Y0ZTZhYjlhNzA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nlc3Nv
ck5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL1NjcmlwdFByb2Nl
c3Nvck5vZGUuaApAQCAtNTMsNyArNTMsNyBAQCBwdWJsaWM6CiAgICAgLy8gVGhpcyB2YWx1ZSBj
b250cm9scyBob3cgZnJlcXVlbnRseSB0aGUgb25hdWRpb3Byb2Nlc3MgZXZlbnQgaGFuZGxlciBp
cyBjYWxsZWQgYW5kIGhvdyBtYW55IHNhbXBsZS1mcmFtZXMgbmVlZCB0byBiZSBwcm9jZXNzZWQg
ZWFjaCBjYWxsLgogICAgIC8vIExvd2VyIG51bWJlcnMgZm9yIGJ1ZmZlclNpemUgd2lsbCByZXN1
bHQgaW4gYSBsb3dlciAoYmV0dGVyKSBsYXRlbmN5LiBIaWdoZXIgbnVtYmVycyB3aWxsIGJlIG5l
Y2Vzc2FyeSB0byBhdm9pZCBhdWRpbyBicmVha3VwIGFuZCBnbGl0Y2hlcy4KICAgICAvLyBUaGUg
dmFsdWUgY2hvc2VuIG11c3QgY2FyZWZ1bGx5IGJhbGFuY2UgYmV0d2VlbiBsYXRlbmN5IGFuZCBh
dWRpbyBxdWFsaXR5LgotICAgIHN0YXRpYyBSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gY3Jl
YXRlKEF1ZGlvQ29udGV4dCosIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1
bnNpZ25lZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hh
bm5lbHMpOworICAgIHN0YXRpYyBSZWZQdHI8U2NyaXB0UHJvY2Vzc29yTm9kZT4gY3JlYXRlKEF1
ZGlvQ29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25l
ZCBudW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMp
OwogCiAgICAgdmlydHVhbCB+U2NyaXB0UHJvY2Vzc29yTm9kZSgpOwogCkBAIC02OSw3ICs2OSw3
IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBkb3VibGUgdGFpbFRpbWUoKSBjb25zdCBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIGRvdWJsZSBsYXRlbmN5VGltZSgpIGNvbnN0IG92ZXJyaWRlOwogCi0g
ICAgU2NyaXB0UHJvY2Vzc29yTm9kZShBdWRpb0NvbnRleHQqLCBmbG9hdCBzYW1wbGVSYXRlLCBz
aXplX3QgYnVmZmVyU2l6ZSwgdW5zaWduZWQgbnVtYmVyT2ZJbnB1dENoYW5uZWxzLCB1bnNpZ25l
ZCBudW1iZXJPZk91dHB1dENoYW5uZWxzKTsKKyAgICBTY3JpcHRQcm9jZXNzb3JOb2RlKEF1ZGlv
Q29udGV4dCYsIGZsb2F0IHNhbXBsZVJhdGUsIHNpemVfdCBidWZmZXJTaXplLCB1bnNpZ25lZCBu
dW1iZXJPZklucHV0Q2hhbm5lbHMsIHVuc2lnbmVkIG51bWJlck9mT3V0cHV0Q2hhbm5lbHMpOwog
CiAgICAgdm9pZCBmaXJlUHJvY2Vzc0V2ZW50KCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJhdWRpby9XYXZlU2hhcGVyTm9kZS5jcHAKaW5kZXggNjllYzI3YTJjOGU2Mzli
ZWM5NDNlYTNlZGFmMDA0ZjgyNjk1NjYwOC4uOTY1MjU0ZjAxODVkODRkOGJjZDljMTI0NTczNDcz
MDRjNmQ1NGRmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9X
YXZlU2hhcGVyTm9kZS5jcHAKQEAgLTMzLDEwICszMywxMCBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLVdhdmVTaGFwZXJOb2RlOjpXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQqIGNvbnRl
eHQpCi0gICAgOiBBdWRpb0Jhc2ljUHJvY2Vzc29yTm9kZShjb250ZXh0LCBjb250ZXh0LT5zYW1w
bGVSYXRlKCkpCitXYXZlU2hhcGVyTm9kZTo6V2F2ZVNoYXBlck5vZGUoQXVkaW9Db250ZXh0JiBj
b250ZXh0KQorICAgIDogQXVkaW9CYXNpY1Byb2Nlc3Nvck5vZGUoY29udGV4dCwgY29udGV4dC5z
YW1wbGVSYXRlKCkpCiB7Ci0gICAgbV9wcm9jZXNzb3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVT
aGFwZXJQcm9jZXNzb3I+KGNvbnRleHQtPnNhbXBsZVJhdGUoKSwgMSk7CisgICAgbV9wcm9jZXNz
b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPFdhdmVTaGFwZXJQcm9jZXNzb3I+KGNvbnRleHQuc2FtcGxl
UmF0ZSgpLCAxKTsKICAgICBzZXROb2RlVHlwZShOb2RlVHlwZVdhdmVTaGFwZXIpOwogCiAgICAg
aW5pdGlhbGl6ZSgpOwpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIFdhdmVTaGFwZXJOb2RlOjpzZXRP
dmVyc2FtcGxlKGNvbnN0IFN0cmluZyYgdHlwZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIAogICAgIC8vIFN5bmNocm9uaXplIHdpdGggYW55IGdyYXBo
IGNoYW5nZXMgb3IgY2hhbmdlcyB0byBjaGFubmVsIGNvbmZpZ3VyYXRpb24uCi0gICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoKmNvbnRleHQoKSk7CisgICAgQXVkaW9D
b250ZXh0OjpBdXRvTG9ja2VyIGNvbnRleHRMb2NrZXIoY29udGV4dCgpKTsKIAogICAgIGlmICh0
eXBlID09ICJub25lIikKICAgICAgICAgd2F2ZVNoYXBlclByb2Nlc3NvcigpLT5zZXRPdmVyc2Ft
cGxlKFdhdmVTaGFwZXJQcm9jZXNzb3I6Ok92ZXJTYW1wbGVOb25lKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vV2F2ZVNoYXBlck5vZGUuaAppbmRleCA4MjI3OTc1M2Rk
Zjc4ZjUyOWRhYmFmNTlkODliYTc3MTdlZTA4ZWM3Li5kMWY3OTY2ZTU0OTk3ZjkxNGJjMzVjOTI5
OWFlOWEzYTc0YzA2MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1
ZGlvL1dhdmVTaGFwZXJOb2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRp
by9XYXZlU2hhcGVyTm9kZS5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAKIGNsYXNzIFdhdmVTaGFwZXJOb2RlIDogcHVibGljIEF1ZGlvQmFzaWNQcm9jZXNzb3JO
b2RlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdhdmVTaGFwZXJOb2RlPiBjcmVhdGUoQXVk
aW9Db250ZXh0KiBjb250ZXh0KQorICAgIHN0YXRpYyBSZWY8V2F2ZVNoYXBlck5vZGU+IGNyZWF0
ZShBdWRpb0NvbnRleHQmIGNvbnRleHQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
Km5ldyBXYXZlU2hhcGVyTm9kZShjb250ZXh0KSk7CiAgICAgfQpAQCAtNDksNyArNDksNyBAQCBw
dWJsaWM6CiAgICAgZG91YmxlIGxhdGVuY3koKSBjb25zdCB7IHJldHVybiBsYXRlbmN5VGltZSgp
OyB9CiAKIHByaXZhdGU6ICAgIAotICAgIGV4cGxpY2l0IFdhdmVTaGFwZXJOb2RlKEF1ZGlvQ29u
dGV4dCopOyAgICAKKyAgICBleHBsaWNpdCBXYXZlU2hhcGVyTm9kZShBdWRpb0NvbnRleHQmKTsg
ICAgCiAKICAgICBXYXZlU2hhcGVyUHJvY2Vzc29yKiB3YXZlU2hhcGVyUHJvY2Vzc29yKCkgeyBy
ZXR1cm4gc3RhdGljX2Nhc3Q8V2F2ZVNoYXBlclByb2Nlc3Nvcio+KHByb2Nlc3NvcigpKTsgfQog
fTsK
</data>
<flag name="review"
          id="296170"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="296188"
          type_id="3"
          status="-"
          setter="mcatanzaro"
    />
          </attachment>
      

    </bug>

</bugzilla>