<?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>202487</bug_id>
          
          <creation_ts>2019-10-02 12:34:08 -0700</creation_ts>
          <short_desc>Web Inspector: remove `InspectorInstrumentationCookie`</short_desc>
          <delta_ts>2019-10-08 17:10:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=202713</see_also>
          <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="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mattbaker</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1576111</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-02 12:34:08 -0700</bug_when>
    <thetext>All it does is create a shallow-copy of the `InstrumentingAgents` (it copies a pointer to the `InstrumentingAgents` object, so any of the pointers to the `InspectorAgent` that are contained therein are shared between each instance) and save the tracking `InspectorTimelineAgent`&apos;s id (monotonically increasing integer).  All uses of `InspectorInstrumentationCookie` are local values, so there&apos;s no way that the `InspectorTimelineAgent` (or the id) could change in between an `InspectorInstrumentation::will*` and an `InspectorInstrumentation::did*`, as both the tracking state and id are controlled by the frontend and cannot &quot;interrupt&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576116</commentid>
    <comment_count>1</comment_count>
      <attachid>380048</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-02 12:46:53 -0700</bug_when>
    <thetext>Created attachment 380048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576244</commentid>
    <comment_count>2</comment_count>
      <attachid>380048</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2019-10-02 16:36:03 -0700</bug_when>
    <thetext>Comment on attachment 380048
Patch

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

r=me, nice refactor.

&gt; Source/WebCore/inspector/InspectorInstrumentation.cpp:401
&gt; +        return;

Breaking out this early return is nice. :)

&gt; Source/WebCore/inspector/InspectorInstrumentation.h:835
&gt; +

There is an empty line after FAST_RETURN_IF_NO_FRONTENDS here, and below (843), but not elsewhere. We should be consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576441</commentid>
    <comment_count>3</comment_count>
      <attachid>380122</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-03 09:23:27 -0700</bug_when>
    <thetext>Created attachment 380122
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576555</commentid>
    <comment_count>4</comment_count>
      <attachid>380122</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-03 12:38:59 -0700</bug_when>
    <thetext>Comment on attachment 380122
Patch

Clearing flags on attachment: 380122

Committed r250672: &lt;https://trac.webkit.org/changeset/250672&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576556</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-03 12:39:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576557</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-03 12:39:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/55957063&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577823</commentid>
    <comment_count>7</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2019-10-08 10:41:54 -0700</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/250672/webkit

broke inspector/timeline/timeline-recording.html

It is crashing on Mac debug and failing on Release.

I was able to reproduce the crashes by simply running the test on 250672 which crashes, and did not crash on 250668 which was the revision before it. cherry picked were in-between.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1578026</commentid>
    <comment_count>8</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-08 17:10:46 -0700</bug_when>
    <thetext>(In reply to Truitt Savell from comment #7)
&gt; It looks like the changes in https://trac.webkit.org/changeset/250672/webkit
&gt; 
&gt; broke inspector/timeline/timeline-recording.html
&gt; 
&gt; It is crashing on Mac debug and failing on Release.
&gt; 
&gt; I was able to reproduce the crashes by simply running the test on 250672 which crashes, and did not crash on 250668 which was the revision before it. cherry picked were in-between.
I&apos;m addressing this in &lt;https://webkit.org/b/202713&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380048</attachid>
            <date>2019-10-02 12:46:53 -0700</date>
            <delta_ts>2019-10-03 09:23:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202487-20191002154652.patch</filename>
            <type>text/plain</type>
            <size>81162</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlNjVkMGZiMzAxMDJlYWRiY2FlYjdmZTc2OTMzNjg5MTczNWU3MjAyLi5m
YWJlNTg0ZDNlOTAxYjhkZTU4MzcxYTIyNzdiMTk5ZmY5ZWJkYzdjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTE5IEBACisyMDE5LTEwLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgYEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZWAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjQ4NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFsbCBpdCBkb2VzIGlzIGNyZWF0ZSBhIHNoYWxsb3ctY29weSBvZiB0aGUgYEluc3RydW1l
bnRpbmdBZ2VudHNgIChpdCBjb3BpZXMgYSBwb2ludGVyIHRvCisgICAgICAgIHRoZSBgSW5zdHJ1
bWVudGluZ0FnZW50c2Agb2JqZWN0LCBzbyBhbnkgb2YgdGhlIHBvaW50ZXJzIHRvIHRoZSBgSW5z
cGVjdG9yQWdlbnRgIHRoYXQgYXJlCisgICAgICAgIGNvbnRhaW5lZCB0aGVyZWluIGFyZSBzaGFy
ZWQgYmV0d2VlbiBlYWNoIGluc3RhbmNlKSBhbmQgc2F2ZSB0aGUgdHJhY2tpbmcKKyAgICAgICAg
YEluc3BlY3RvclRpbWVsaW5lQWdlbnRgJ3MgaWQgKG1vbm90b25pY2FsbHkgaW5jcmVhc2luZyBp
bnRlZ2VyKS4KKworICAgICAgICBBbGwgdXNlcyBvZiBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llYCBhcmUgbG9jYWwgdmFsdWVzLCBzbyB0aGVyZSdzIG5vIHdheSB0aGF0IHRoZQorICAg
ICAgICBgSW5zcGVjdG9yVGltZWxpbmVBZ2VudGAgKG9yIHRoZSBpZCkgY291bGQgY2hhbmdlIGlu
IGJldHdlZW4gYW4KKyAgICAgICAgYEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbCpgIGFu
ZCBhbiBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWQqYCwgYXMgYm90aCB0aGUKKyAgICAg
ICAgdHJhY2tpbmcgc3RhdGUgYW5kIGlkIGFyZSBjb250cm9sbGVkIGJ5IHRoZSBmcm9udGVuZCBh
bmQgY2Fubm90ICJpbnRlcnJ1cHQiLgorCisgICAgICAgIFJlbW92aW5nIGBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWVgIF9jYW5fIGNhdXNlIGlzc3VlcyBpcyBpbiBzaXR1YXRpb25zIHdo
ZXJlIHRoZQorICAgICAgICBgU2NyaXB0RXhlY3V0aW9uQ29udGV4dGAgKG9yIGBQYWdlYCkgY2hh
bmdlcyBiZXR3ZWVuIHRoZSBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsKmAKKyAgICAg
ICAgYW5kIHRoZSBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWQqYCwgYnV0IHRoaXMgY2Fu
IGJlIGF2b2lkZWQgc28gbG9uZyBhcyBhIHBvaW50ZXIgdG8KKyAgICAgICAgdGhlICJjb250ZXh0
IiB1c2VkIGZvciBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsKmAgaXMgc2F2ZWQuCisK
KyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyB0ZXN0czogaW5zcGVjdG9yL3RpbWVsaW5lLyoK
KworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuaDog
UmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llLmNwcDogUmVtb3ZlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjppbnRlcm5hbFN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dDo6ZGlkRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWRQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjpjbGVhclJlY29yZFN0YWNrKTogRGVsZXRlZC4KKworICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ2FsbGJhY2tEYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5j
aHJvbm91c2x5KToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tRWxlbWVudEludGVyZmFjZTo6
dXBncmFkZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlOjppbnZva2VDYWxsYmFjayk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFcnJvckhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNFeGVjU3RhdGUuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3Ry
dW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25Db25zdHJ1Y3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5j
dGlvbkluQ29udGV4dCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZUluV29ybGQp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVNb2R1bGUpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cmVzb2x2ZVN0eWxlKToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RXZlbnRUYXJnZXQ6OmlubmVySW52b2tlRXZlbnRMaXN0ZW5lcnMpOgorICAgICAg
ICAqIGRvbS9NdXRhdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGF0aW9u
T2JzZXJ2ZXI6OmRlbGl2ZXIpOgorICAgICAgICAqIGRvbS9TY3JpcHRlZEFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVy
OjpzZXJ2aWNlUmVxdWVzdEFuaW1hdGlvbkZyYW1lQ2FsbGJhY2tzKToKKyAgICAgICAgKiBwYWdl
L0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAg
ICAgICogcGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpk
aXNwYXRjaEV2ZW50KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3TGF5b3V0Q29udGV4dDo6bGF5b3V0KToKKyAg
ICAgICAgKiBwYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkludGVyc2VjdGlvbk9ic2VydmVyOjpub3RpZnkpOgorICAgICAgICAqIHBhZ2UvUGVyZm9ybWFu
Y2VPYnNlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZU9ic2VydmVyOjpk
ZWxpdmVyKToKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxG
dW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENhbGxGdW5jdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxEaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3cpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50T25XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZh
bHVhdGVTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRFdmFsdWF0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxGaXJlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0ZVN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25G
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
cmVBbmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb25J
bXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERp
c3BhdGNoRXZlbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldp
bmRvd0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbExheW91dEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXRJbXBs
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2Fs
Y3VsYXRlU3R5bGVJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFt
ZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmV0cmlldmVUaW1lbGluZUFnZW50KTog
RGVsZXRlZC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxOS0xMC0wMiAgS2VpdGggUm9sbGluICA8a3Jv
bGxpbkBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjI1
MDU5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlcy50eHQKaW5kZXggZjk1ODZmYTA0OGNiN2VlZDI4NjU5YmEwNjBiOGRmOGEx
MGUyYmRkYS4uNjc0YTczNzZmMDdhNzAyMWE1Zjg2N2IyYzU3ZjVhMjdlZjE2MzAwMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKQEAgLTEzNDYsNyArMTM0Niw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKIGlu
c3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5jcHAKLWluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuY3Bw
CiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHVibGljLmNwcAogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbldlYktpdC5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JO
b2RlRmluZGVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDNmYmI1NWVlYzA5ZGM2NjI3ZDAyMTU3Mjg5OTljYjRlM2JiM2Rk
M2EuLjcxNDQzNTJhNjBmYTdmMjkwY2ZjODY0MTBkYTY3N2YzM2QwMDhkNGUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwNjUs
NyArMzA2NSw2IEBACiAJCUE1NzhGNDNDMURFMDE0MjMwMDNERkM2QSAvKiBKU1Byb21pc2VSZWpl
Y3Rpb25FdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTU3OEY0M0ExREUwMTNGQjAwM0RGQzZBIC8qIEpTUHJvbWlzZVJlamVjdGlvbkV2ZW50Lmgg
Ki87IH07CiAJCUE1NzhGNDNGMURFMEI2MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFj
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4
RjQzRTFERTBCNjJCMDAzREZDNkEgLyogUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZCMjg4
Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBTZXJ2
aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsKLQkJQTU4NDBFMUQxODdCNzRENTAwODQzQjEwIC8qIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4NDBFMUIxODdCNzRENTAwODQzQjEwIC8qIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1ODQwRTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3Rl
ZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAq
LzsgfTsKIAkJQTU4NEZFMjYxODYzN0RBQjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
U291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAq
LzsgfTsKIAkJQTU4NEZFMkMxODYzODcwRjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUy
QTE4NjM4NzBGMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKQEAgLTEx
NDUwLDggKzExNDQ5LDYgQEAKIAkJQTU3OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVk
UHJvbWlzZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVqZWN0
ZWRQcm9taXNlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTgxRUQx
MDFGQjI4OEM4MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlBNTgxRUQxMjFGQjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFn
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3Jr
ZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1ODQwRTFBMTg3Qjc0
RDUwMDg0M0IxMCAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTU4NDBFMUIxODdCNzRENTAw
ODQzQjEwIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdl
YkluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBNTg0MEUyMzE4N0I4QUMyMDA4NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE3MTE3LDggKzE3MTE0LDYgQEAKIAkJCQk3QTU0ODU3RTE0RTAyRDUxMDA2
QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9yeS5oICovLAogCQkJCTIwRDYyOTI0MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwICovLAogCQkJCTIwRDYyOTI1MTI1
MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCAqLywKLQkJCQlBNTg0
MEUxQTE4N0I3NEQ1MDA4NDNCMTAgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNw
cCAqLywKLQkJCQlBNTg0MEUxQjE4N0I3NEQ1MDA4NDNCMTAgLyogSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llLmggKi8sCiAJCQkJQTU4NjBFNkEyMzBERTJFMTAwNDYxQUFFIC8qIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvblB1YmxpYy5jcHAgKi8sCiAJCQkJQTU4NjBFNkIyMzBERTJFMTAw
NDYxQUFFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYy5oICovLAogCQkJCUE1ODYw
RTZDMjMwREUyRTIwMDQ2MUFBRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3Bw
ICovLApAQCAtMjk3OTUsNyArMjk3OTAsNiBAQAogCQkJCTdBNTQ4NTgwMTRFMDJENTEwMDZBRTA1
QSAvKiBJbnNwZWN0b3JIaXN0b3J5LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUI4MUNBRTFGQUE0
NDYyMDAzN0QxRTYgLyogSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBpbiBIZWFkZXJzICovLAog
CQkJCTIwRDYyOTI3MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCUE1ODQwRTFEMTg3Qjc0RDUwMDg0M0IxMCAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODYwRTZEMjMw
REUzMDMwMDQ2MUFBRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25QdWJsaWMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1ODYwRTZFMjMwREUzMEEwMDQ2MUFBRSAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25XZWJLaXQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1QjgxQ0FGMUZBQTQ0NjIwMDM3
RDFFNiAvKiBJbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggOGQxMWZlOWM4
YTNkMzk1YTZiZTQ1Mzk1NDA1OWZkY2QyYzg3OTU5Ni4uZmM1MjhiZDJmZWYwZWJlMjdhMjU3MGUy
NTNlZTIyMWJiODQzZTk2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDYWxsYmFja0RhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2Fs
bGJhY2tEYXRhLmNwcApAQCAtODMsMTIgKzgzLDEyIEBAIEpTVmFsdWUgSlNDYWxsYmFja0RhdGE6
Omludm9rZUNhbGxiYWNrKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
CiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCi0gICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEpTRXhlY1N0YXRlOjppbnN0cnVt
ZW50RnVuY3Rpb25DYWxsKGNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgSlNFeGVj
U3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRh
KTsKIAogICAgIHJldHVybmVkRXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICBKU1ZhbHVlIHJlc3Vs
dCA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZENhbGwoZXhlYywgSlNDOjpQcm9maWxpbmdSZWFzb246
Ok90aGVyLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJl
dHVybmVkRXhjZXB0aW9uKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2Fs
bEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4dCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDYWxsRnVuY3Rpb24oY29udGV4dCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJm
YWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVy
ZmFjZS5jcHAKaW5kZXggMDE4NGE3ZDRmMzk1Y2EwYzU0MGQ0OGQ0ZTZkYjUwMDVlYzBhMDI1ZS4u
OWQ1ZGEyYjY2NmVkYjBhMGIwNTg1NTUxOTk5NDE4ZGUzMzE0NzIyOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3Bw
CkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBzdGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEN1
c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5KERvY3VtZW50JiBkb2N1bWVudCwgVgogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgY29va2llID0gSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdCgmZG9j
dW1lbnQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOworICAgIEpTRXhlY1N0YXRlOjpp
bnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1Y3QoJmRvY3VtZW50LCBjb25zdHJ1Y3RUeXBlLCBjb25z
dHJ1Y3REYXRhKTsKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIEFTU0VSVCgh
YXJncy5oYXNPdmVyZmxvd2VkKCkpOwogICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IGNvbnN0cnVj
dCgmc3RhdGUsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdz
KTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUs
ICZkb2N1bWVudCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rp
b24oJmRvY3VtZW50KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsK
IAogICAgIEFTU0VSVCghbmV3RWxlbWVudC5pc0VtcHR5KCkpOwpAQCAtMTk5LDkgKzE5OSw5IEBA
IHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBBU1NFUlQoIWFy
Z3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdChjb250ZXh0
LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1
bWVudEZ1bmN0aW9uQ29uc3RydWN0KGNvbnRleHQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERh
dGEpOwogICAgIEpTVmFsdWUgcmV0dXJuZWRFbGVtZW50ID0gY29uc3RydWN0KHN0YXRlLCBtX2Nv
bnN0cnVjdG9yLmdldCgpLCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRl
eHQpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnRl
eHQpOwogCiAgICAgbV9jb25zdHJ1Y3Rpb25TdGFjay5yZW1vdmVMYXN0KCk7CiAKQEAgLTI0OCwx
MiArMjQ4LDEyIEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxsYmFj
ayhFbGVtZW50JiBlbGVtZW50LCBKU09iamVjdCogY2FsbGJhCiAgICAgYWRkQXJndW1lbnRzKHN0
YXRlLCBnbG9iYWxPYmplY3QsIGFyZ3MpOwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092
ZXJmbG93ZWQoKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2ll
ID0gSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUs
IGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250
ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+
IGV4Y2VwdGlvbjsKICAgICBKU0V4ZWNTdGF0ZTo6Y2FsbChzdGF0ZSwgY2FsbGJhY2ssIGNhbGxU
eXBlLCBjYWxsRGF0YSwganNFbGVtZW50LCBhcmdzLCBleGNlcHRpb24pOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKyAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb250ZXh0KTsKIAog
ICAgIGlmIChleGNlcHRpb24pCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0
aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5k
bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcApp
bmRleCA0MjkxOTg5Y2VhMTdiYzIzMDUxNmZiNGI4NWM3NzRmOGQxY2Q5ZmQ3Li4wMzI2NzM1ZGY1
OTkwNDEwYWQxYThjNTcwMDFjNTA0MjlkNzcwYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFcnJvckhhbmRsZXIuY3BwCkBAIC05OSwxMiArOTksMTIgQEAgdm9pZCBKU0Vy
cm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCwKICAgICAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
ICAgICBWTUVudHJ5U2NvcGUgZW50cnlTY29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5
U2NvcGUtPmdsb2JhbE9iamVjdCgpIDogZ2xvYmFsT2JqZWN0KTsKIAotICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNhbGwoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7
CisgICAgICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKCZzY3JpcHRFeGVj
dXRpb25Db250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEpOwogCiAgICAgICAgIE5ha2VkUHRyPEpT
Qzo6RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBK
U0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxsKGV4ZWMsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhl
ciwganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4
Y2VwdGlvbik7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVu
Y3Rpb24oY29va2llLCAmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5k
ZXggZjYyOTNiOGU0NDNkNjEwMjRhMTdkYTI2MmFkOGE2YmU5NjdlNmEwNy4uY2RhOTQ0ZjkyMWRl
YWEyYjhhNDI1ODdkZjI1MTMzZjIxMDk1YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCB2b2lkIEpT
RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0
RXhlY3V0aW9uQ29udGV4dAogCiAgICAgVk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHZtLmVu
dHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3BlLT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7
CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNFeGVjU3Rh
dGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxU
eXBlLCBjYWxsRGF0YSk7CisgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwo
JnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGhhbmRsZUV2ZW50RnVuY3Rpb24gPT0ganNGdW5jdGlvbiA/IHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVudC5jdXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsK
ICAgICBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4gZXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0
dmFsID0gSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNv
bjo6T3RoZXIsIGhhbmRsZUV2ZW50RnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1Zh
bHVlLCBhcmdzLCBleGNlcHRpb24pOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDYWxsRnVuY3Rpb24oY29va2llLCAmc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQpOwogCiAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZS5oCmluZGV4IDI3YzU3MjFl
MmQ4ZjAwOGEyY2I3MTlhYTM3ZmNhZDg2NDNhMzBiNjAuLjU4MTk3NDc5OGQwYTRhYWI3ZmU4MDJm
ZTAxZTI2NzIwOTUwNGIwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXhlY1N0YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3Rh
dGUuaApAQCAtMzcsNyArMzcsNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQ7CiAKIGNsYXNzIEpTRXhlY1N0YXRlIHsKQEAgLTExOSw4ICsxMTgsOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiByZXR1cm5WYWx1ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIGluc3RydW1lbnRGdW5jdGlvbkNhbGwoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIEpTQzo6Q2FsbFR5cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKLSAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGluc3RydW1lbnRGdW5jdGlvbkNv
bnN0cnVjdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgSlNDOjpDb25zdHJ1Y3RUeXBlLCBjb25z
dCBKU0M6OkNvbnN0cnVjdERhdGEmKTsKKyAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50RnVuY3Rp
b25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6
OkNhbGxEYXRhJik7CisgICAgc3RhdGljIHZvaWQgaW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBKU0M6OkNvbnN0cnVjdFR5cGUsIGNvbnN0IEpTQzo6
Q29uc3RydWN0RGF0YSYpOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEpTRXhlY1N0YXRlKEpT
Qzo6RXhlY1N0YXRlKiBleGVjKQpAQCAtMTUwLDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgICAg
IHRocmVhZEdsb2JhbERhdGEoKS5zZXRDdXJyZW50U3RhdGUoc3RhdGUpOwogICAgIH0KIAotICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFR5cGUsIFR5cGUganNUeXBlLCB0eXBlbmFtZSBEYXRhVHlwZT4g
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnN0cnVtZW50RnVuY3Rpb25J
bnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVHlwZSwgY29uc3QgRGF0YVR5cGUmKTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCBUeXBlIGpzVHlwZSwgdHlwZW5hbWUgRGF0YVR5
cGU+IHN0YXRpYyB2b2lkIGluc3RydW1lbnRGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBUeXBlLCBjb25zdCBEYXRhVHlwZSYpOwogCiAgICAgSlNDOjpFeGVjU3RhdGUq
IG1fcHJldmlvdXNTdGF0ZTsKICAgICBKU0M6OkpTTG9ja0hvbGRlciBtX2xvY2s7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRp
b24uaAppbmRleCAxZjk1MmQxYjMyMjkzYzE2MjViMTgyOWNjMjYxYzA3MThhYTQ0YzA4Li43Njc0
Nzc3NTc4MzVlYWVmODRlMGY4YmE5OTViZjE5OWIxZDFjNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgKQEAg
LTMzLDEwICszMywxMSBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUeXBlLCBUeXBlIGpzVHlwZSwgY2xhc3MgRGF0YVR5cGU+Ci1pbmxpbmUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5h
bChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBUeXBlIGNhbGxUeXBlLCBjb25zdCBE
YXRhVHlwZSYgY2FsbERhdGEpCitpbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1
bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSBjYWxs
VHlwZSwgY29uc3QgRGF0YVR5cGUmIGNhbGxEYXRhKQogewogICAgIGlmICghSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp0aW1lbGluZUFnZW50VHJhY2tpbmcoY29udGV4dCkpCi0gICAgICAgIHJl
dHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKKyAgICAgICAgcmV0dXJuOwor
CiAgICAgU3RyaW5nIHJlc291cmNlTmFtZTsKICAgICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAg
aW50IGNvbHVtbk51bWJlciA9IDE7CkBAIC00NiwxNyArNDcsMTcgQEAgaW5saW5lIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uSW50
ZXJuYWwoU2MKICAgICAgICAgY29sdW1uTnVtYmVyID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVj
dXRhYmxlLT5zdGFydENvbHVtbigpOwogICAgIH0gZWxzZQogICAgICAgICByZXNvdXJjZU5hbWUg
PSAidW5kZWZpbmVkIjsKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
Q2FsbEZ1bmN0aW9uKGNvbnRleHQsIHJlc291cmNlTmFtZSwgbGluZU51bWJlciwgY29sdW1uTnVt
YmVyKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oY29u
dGV4dCwgcmVzb3VyY2VOYW1lLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi1pbmxp
bmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50
RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q2FsbFR5
cGUgdHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgZGF0YSkKK2lubGluZSB2b2lkIEpTRXhlY1N0
YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIEpTQzo6Q2FsbFR5cGUgdHlwZSwgY29uc3QgSlNDOjpDYWxsRGF0YSYgZGF0YSkKIHsKLSAg
ICByZXR1cm4gaW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWw8SlNDOjpDYWxsVHlwZSwgSlNDOjpD
YWxsVHlwZTo6SlMsIEpTQzo6Q2FsbERhdGE+KGNvbnRleHQsIHR5cGUsIGRhdGEpOworICAgIGlu
c3RydW1lbnRGdW5jdGlvbkludGVybmFsPEpTQzo6Q2FsbFR5cGUsIEpTQzo6Q2FsbFR5cGU6OkpT
LCBKU0M6OkNhbGxEYXRhPihjb250ZXh0LCB0eXBlLCBkYXRhKTsKIH0KIAotaW5saW5lIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9u
Q29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q29uc3RydWN0
VHlwZSB0eXBlLCBjb25zdCBKU0M6OkNvbnN0cnVjdERhdGEmIGRhdGEpCitpbmxpbmUgdm9pZCBK
U0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEpTQzo6Q29uc3RydWN0VHlwZSB0eXBlLCBjb25zdCBKU0M6OkNvbnN0
cnVjdERhdGEmIGRhdGEpCiB7Ci0gICAgcmV0dXJuIGluc3RydW1lbnRGdW5jdGlvbkludGVybmFs
PEpTQzo6Q29uc3RydWN0VHlwZSwgSlNDOjpDb25zdHJ1Y3RUeXBlOjpKUywgSlNDOjpDb25zdHJ1
Y3REYXRhPihjb250ZXh0LCB0eXBlLCBkYXRhKTsKKyAgICBpbnN0cnVtZW50RnVuY3Rpb25JbnRl
cm5hbDxKU0M6OkNvbnN0cnVjdFR5cGUsIEpTQzo6Q29uc3RydWN0VHlwZTo6SlMsIEpTQzo6Q29u
c3RydWN0RGF0YT4oY29udGV4dCwgdHlwZSwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CmluZGV4IGNjOTk5ZGFlYjI3ZGYwNjI1NzhlMTgyOGE2MWY0MDA0MzllOGEyZWUuLmI2MzE1YTJh
ZjdkMWY5NTE4MzRiNzVmYzBlNmI5ODU0MGQ3N2UzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcApAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9p
ZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVu
dEZ1bmN0aW9uQ2FsbCgmY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNT
dGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRh
KTsKIAogICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgSlNFeGVj
U3RhdGU6OnByb2ZpbGVkQ2FsbChleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIG1f
ZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMs
IGV4Y2VwdGlvbik7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5j
dGlvbihjb29raWUsICZjb250ZXh0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZENhbGxGdW5jdGlvbigmY29udGV4dCk7CiAKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNDg3ODRlMDgwYjlmNGQ2NzM3Mjg3
YjYwOGJhOTFkYjk4ZDdkNDlkMi4uOWVkMTBlZTg3YTE4MjQzYzgxOWUwN2ZjNTZjYzUyOWE4ZDFm
NTJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKQEAgLTEyNywxMiArMTI3LDEyIEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZh
bHVhdGVJbldvcmxkKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAg
ICBSZWY8RnJhbWU+IHByb3RlY3RvcihtX2ZyYW1lKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFs
dWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCksIHNv
dXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFtZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGlu
ZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29sdW1uKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNl
cHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpT
RXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1YXRlKCZleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6
T3RoZXIsIGpzU291cmNlQ29kZSwgJnByb3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llLCBtX2Zy
YW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1f
ZnJhbWUpOwogCiAgICAgaWYgKGV2YWx1YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0
RXhjZXB0aW9uKCZleGVjLCBldmFsdWF0aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNj
cmlwdCgpLCBleGNlcHRpb25EZXRhaWxzKTsKQEAgLTIyMSwxMCArMjIxLDkgQEAgSlNDOjpKU1Zh
bHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJM
LCBKU01vZHVsZVJlY28KIAogICAgIFJlZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCi0g
ICAgYXV0byBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNj
cmlwdChtX2ZyYW1lLCBzb3VyY2VVUkwsIGpzU291cmNlQ29kZS5maXJzdExpbmUoKS5vbmVCYXNl
ZEludCgpLCBqc1NvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKS5vbmVCYXNlZEludCgpKTsKLQorICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNv
dXJjZVVSTCwganNTb3VyY2VDb2RlLmZpcnN0TGluZSgpLm9uZUJhc2VkSW50KCksIGpzU291cmNl
Q29kZS5zdGFydENvbHVtbigpLm9uZUJhc2VkSW50KCkpOwogICAgIGF1dG8gcmV0dXJuVmFsdWUg
PSBtb2R1bGVSZWNvcmQuZXZhbHVhdGUoJnN0YXRlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvb2tpZSwgbV9mcmFtZSk7CisgICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lKTsKIAogICAgIHJldHVy
biByZXR1cm5WYWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDgzOGQxMDk0NmYy
ZDk1ZmU1ZGM5NDdkZTU1OThjMWRjNTQ1YmUwMDMuLjAwNjEwZWM4YmQ2YmM3ZDg5Y2E4ODk2ZWVm
MjM2NGI5M2M1OTVkZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMTg5OCw3ICsxODk4
LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKFJlc29sdmVTdHlsZVR5cGUgdHlwZSkK
ICAgICAgICAgZnJhbWVWaWV3LndpbGxSZWNhbGNTdHlsZSgpOwogICAgIH0KIAotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKCp0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKCp0aGlzKTsKIAogICAgIGJvb2wgdXBkYXRlZENv
bXBvc2l0aW5nTGF5ZXJzID0gZmFsc2U7CiAgICAgewpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9p
ZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxlKFJlc29sdmVTdHlsZVR5cGUgdHlwZSkKICAgICAgICAg
aW1wbGljaXRDbG9zZSgpOwogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjYWxjdWxhdGVTdHlsZShjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkUmVjYWxjdWxhdGVTdHlsZSgqdGhpcyk7CiAKICAgICAvLyBTb21lIGFuaW1hdGVkIGlt
YWdlcyBtYXkgbm93IGJlIGluc2lkZSB0aGUgdmlld3BvcnQgZHVlIHRvIHN0eWxlIHJlY2FsYywK
ICAgICAvLyByZXN1bWUgdGhlbSBpZiBuZWNlc3NhcnkgaWYgdGhlcmUgaXMgbm8gbGF5b3V0IHBl
bmRpbmcuIE90aGVyd2lzZSwgd2UnbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9F
dmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4
IDllNDcxNDQwYzg3ZWJmYWZhMzgxMDU3ZGQ5OTNiZGEyZGZmOGRhMWEuLmZiMTdkM2NkNjc2ZThi
ZmU3OGJjMzUwMmU2YWQ3MTIzZTNjMzhjZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FdmVudFRhcmdldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cApAQCAtMjgyLDkgKzI4Miw4IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmlubmVySW52b2tlRXZlbnRM
aXN0ZW5lcnMoRXZlbnQmIGV2ZW50LCBFdmVudExpc3RlbmVyVmVjdG9yIGxpCiAKICAgICBhdXRv
JiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICBib29sIGNvbnRleHRJ
c0RvY3VtZW50ID0gaXM8RG9jdW1lbnQ+KGNvbnRleHQpOwotICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0Y2hFdmVudENvb2tpZTsKICAgICBpZiAoY29udGV4dElz
RG9jdW1lbnQpCi0gICAgICAgIHdpbGxEaXNwYXRjaEV2ZW50Q29va2llID0gSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4
dCksIGV2ZW50LCB0cnVlKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RGlzcGF0Y2hFdmVudChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIGV2ZW50LCB0cnVlKTsK
IAogICAgIGZvciAoYXV0byYgcmVnaXN0ZXJlZExpc3RlbmVyIDogbGlzdGVuZXJzKSB7CiAgICAg
ICAgIGlmIChVTkxJS0VMWShyZWdpc3RlcmVkTGlzdGVuZXItPndhc1JlbW92ZWQoKSkpCkBAIC0z
MjMsNyArMzIyLDcgQEAgdm9pZCBFdmVudFRhcmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVy
cyhFdmVudCYgZXZlbnQsIEV2ZW50TGlzdGVuZXJWZWN0b3IgbGkKICAgICB9CiAKICAgICBpZiAo
Y29udGV4dElzRG9jdW1lbnQpCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hFdmVudCh3aWxsRGlzcGF0Y2hFdmVudENvb2tpZSwgZXZlbnQuZGVmYXVsdFByZXZl
bnRlZCgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2
ZW50KGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KSwgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgp
KTsKIH0KIAogVmVjdG9yPEF0b21TdHJpbmc+IEV2ZW50VGFyZ2V0OjpldmVudFR5cGVzKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcAppbmRleCAxOTNmMjc4MDVhNWFlZDRi
NjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMzLi5jMGQ4MTY2ZmJjZDJjZDgwNjRlODFkMDViMWE1YTVh
OGJmODMwODMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0y
NTAsOSArMjUwLDkgQEAgdm9pZCBNdXRhdGlvbk9ic2VydmVyOjpkZWxpdmVyKCkKICAgICAgICAg
aWYgKCFjb250ZXh0KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxGaXJlT2JzZXJ2ZXJDYWxsYmFjaygqY29udGV4dCwgIk11dGF0aW9uT2JzZXJ2ZXIiX3MpOwor
ICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFj
aygqY29udGV4dCwgIk11dGF0aW9uT2JzZXJ2ZXIiX3MpOwogICAgICAgICBtX2NhbGxiYWNrLT5o
YW5kbGVFdmVudCgqdGhpcywgcmVjb3JkcywgKnRoaXMpOwotICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrKGNvb2tpZSk7CisgICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKmNvbnRleHQp
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5p
bWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRp
b25Db250cm9sbGVyLmNwcAppbmRleCBjN2Q2ZDNhZmViZTE1NDY4NGY4MWJmZmUwZmQwMmUyYzkw
ZThkOGQxLi4wMTRkNGNkOGFkYTM1ZjhjNWUzYmUxZTRjZGQ2NTEyMTMzNGFjZjBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApA
QCAtMjEyLDkgKzIxMiwxMCBAQCB2b2lkIFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2Vy
dmljZVJlcXVlc3RBbmltYXRpb25GcmFtZUNhbGxiYWNrcyhET01IaWdoUgogICAgICAgICBpZiAo
Y2FsbGJhY2stPm1fZmlyZWRPckNhbmNlbGxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBjYWxsYmFjay0+bV9maXJlZE9yQ2FuY2VsbGVkID0gdHJ1ZTsKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZShwcm90ZWN0ZWREb2N1bWVudCwgY2FsbGJhY2stPm1f
aWQpOworCisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRp
b25GcmFtZShwcm90ZWN0ZWREb2N1bWVudCwgY2FsbGJhY2stPm1faWQpOwogICAgICAgICBjYWxs
YmFjay0+aGFuZGxlRXZlbnQoaGlnaFJlc05vd01zKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0aW9uRnJhbWUoY29va2llKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0aW9uRnJhbWUocHJvdGVjdGVkRG9jdW1l
bnQpOwogICAgIH0KIAogICAgIC8vIFJlbW92ZSBhbnkgY2FsbGJhY2tzIHdlIGZpcmVkIGZyb20g
dGhlIGxpc3Qgb2YgcGVuZGluZyBjYWxsYmFja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDgzZTM0MmVhMzgw
Y2RjZDE0MmVmZTNlNWIyNmRiOWRlYzc1OWIwMzEuLmYwNTIxZmUxNGM3NTMzZGUxOTQwNWJlYzFi
N2NlNDY1Njc0NjFmNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0zODMsMzIgKzM4MywyNSBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaFBv
c3RNZXNzYWdlKHRpbWVyKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBp
bnQgc2NyaXB0TGluZSwgaW50IHNjcmlwdENvbHVtbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9u
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJp
bmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAw
OwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlm
IChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbENhbGxGdW5j
dGlvbihzY3JpcHROYW1lLCBzY3JpcHRMaW5lLCBzY3JpcHRDb2x1bW4sIGZyYW1lRm9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRp
bWVsaW5lQWdlbnQtPmlkKCk7Ci0gICAgfQotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbkltcGwoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1
bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCisg
ICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDYWxs
RnVuY3Rpb24oZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAot
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRXZlbnQmIGV2ZW50LCBib29sIGhhc0V2
ZW50TGlzdGVuZXJzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRj
aEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1
bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwgYm9vbCBoYXNFdmVudExpc3RlbmVy
cykKIHsKLSAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBoYXNFdmVudExp
c3RlbmVycykgewotICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVu
dCwgZG9jdW1lbnQuZnJhbWUoKSk7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5l
QWdlbnQtPmlkKCk7Ci0gICAgfQorICAgIGlmICghaGFzRXZlbnRMaXN0ZW5lcnMpCisgICAgICAg
IHJldHVybjsKIAotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5z
dHJ1bWVudGluZ0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKKyAgICBpZiAoYXV0byogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpCisgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBk
b2N1bWVudC5mcmFtZSgpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cywgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIp
CkBAIC00MjksMjcgKzQyMiwyNCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
SGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbgogICAgICAgICBk
b21EZWJ1Z2dlckFnZW50LT5kaWRIYW5kbGVFdmVudCgpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK3ZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCiB7Ci0g
ICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRp
bWVsaW5lQWdlbnQoY29va2llKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAg
IHRpbWVsaW5lQWdlbnQtPmRpZERpc3BhdGNoRXZlbnQoZGVmYXVsdFByZXZlbnRlZCk7CiB9CiAK
LUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93JiB3aW5kb3cpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQm
IGV2ZW50LCBET01XaW5kb3cmIHdpbmRvdykKIHsKLSAgICBpbnQgdGltZWxpbmVBZ2VudElkID0g
MDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICBpZiAodGlt
ZWxpbmVBZ2VudCAmJiB3aW5kb3cuaGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnQudHlwZSgpKSkgewot
ICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgd2luZG93LmZy
YW1lKCkpOwotICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwot
ICAgIH0KKyAgICBpZiAoIXdpbmRvdy5oYXNFdmVudExpc3RlbmVycyhldmVudC50eXBlKCkpKQor
ICAgICAgICByZXR1cm47CiAKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CisgICAgaWYgKGF1dG8q
IHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudCgpKQorICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChl
dmVudCwgd2luZG93LmZyYW1lKCkpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmIGNvb2tpZSwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQordm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgYm9vbCBkZWZhdWx0UHJldmVudGVkKQog
ewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmll
dmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAg
ICAgICB0aW1lbGluZUFnZW50LT5kaWREaXNwYXRjaEV2ZW50KGRlZmF1bHRQcmV2ZW50ZWQpOwog
fQogCkBAIC00NTksNDMgKzQ0OSwzMyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2hJbXBsKEluc3RydW1lbnRpbmdBZ2VudAogICAgICAg
ICBkb21BZ2VudC0+ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goZXZlbnQpOwogfQogCi1JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0
ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJh
bWUmIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5O
dW1iZXIpCiB7Ci0gICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGZyYW1lKTsKLSAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGlt
ZWxpbmVBZ2VudC0+aWQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBGcmFtZSYgZnJhbWUpCit2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsKLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGlt
ZWxpbmVBZ2VudChjb29raWUpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkRXZhbHVhdGVTY3JpcHQoZnJhbWUpOwogfQogCi1JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRp
bWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGlt
ZXJJZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQordm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCB0aW1lcklkLCBib29sIG9uZVNob3Qs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKICAg
ICAgICAgd2ViRGVidWdnZXJBZ2VudC0+d2lsbERpc3BhdGNoQXN5bmNDYWxsKEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5cGU6OkRPTVRpbWVyLCB0aW1lcklkKTsKLQotICAgIGlm
IChJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVu
dGluZ0FnZW50cy5pbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRv
bURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQoKSkKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbEZpcmVUaW1lcihvbmVTaG90
KTsKLQotICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAg
ICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1lcih0aW1lcklkLCBmcmFtZUZvclNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwotICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0
aW1lbGluZUFnZW50LT5pZCgpOwotICAgIH0KLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGNvb2tp
ZS5pbnN0cnVtZW50aW5nQWdlbnRzKCktPndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0
byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2Vu
dCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2FsbCgpOwot
ICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVU
aW1lbGluZUFnZW50KGNvb2tpZSkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAg
ICB0aW1lbGluZUFnZW50LT5kaWRGaXJlVGltZXIoKTsKIH0KIApAQCAtNTA1LDIyICs0ODUsMTcg
QEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3QKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkSW52
YWxpZGF0ZUxheW91dChmcmFtZSk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYgZnJhbWUpCiB7Ci0gICAgaW50IHRpbWVsaW5lQWdlbnRJ
ZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7Cisg
ICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5
b3V0KGZyYW1lKTsKLSAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQo
KTsKLSAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0
cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmIGNvb2tpZSwgUmVuZGVyT2JqZWN0JiByb290KQordm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cywgUmVuZGVyT2JqZWN0JiByb290KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkp
CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRM
YXlvdXQocm9vdCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBj
b29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBp
ZiAoYXV0byogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdl
bnQoKSkKICAgICAgICAgcGFnZUFnZW50LT5kaWRMYXlvdXQoKTsKIH0KIApAQCAtNTUxLDI2ICs1
MjYsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWcKICAgICAgICAgcGFnZUFnZW50LT5kaWRQ
YWludChyZW5kZXJlciwgcmVjdCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQp
Cit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1
bWVudCkKIHsKLSAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tp
bmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkp
CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKGRvY3VtZW50LmZy
YW1lKCkpOwotICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwot
ICAgIH0KICAgICBpZiAoSW5zcGVjdG9yTmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rvck5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3Jr
QWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0eWxlKCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUlt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBpZiAoIWNvb2tpZS5pc1Zh
bGlkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gKmNvb2tpZS5pbnN0cnVtZW50aW5nQWdlbnRzKCk7Ci0KLSAg
ICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGlt
ZWxpbmVBZ2VudChjb29raWUpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAg
dGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwogICAgIGlmIChJbnNwZWN0b3JO
ZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9y
TmV0d29ya0FnZW50KCkpCiAgICAgICAgIG5ldHdvcmtBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHls
ZSgpOwpAQCAtMTIwMSw0MyArMTE2NywzMyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmCiAgICAg
ICAgIHRpbWVsaW5lQWdlbnQtPmRpZENhbmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGRv
Y3VtZW50LmZyYW1lKCkpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1l
bnQmIGRvY3VtZW50KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5p
bWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIHBh
Z2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgp
KQogICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShjYWxs
YmFja0lkKTsKLQogICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMucGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVn
Z2VyQWdlbnQtPndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoKTsKLQotICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkg
eworICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFj
a2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bEZpcmVBbmltYXRpb25GcmFtZShjYWxsYmFja0lkLCBkb2N1bWVudC5mcmFtZSgpKTsKLSAgICAg
ICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKLSAgICB9Ci0gICAgcmV0
dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0
aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmlyZUFuaW1hdGlvbkZyYW1lSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUmIGNvb2tpZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0
aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7
Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0Fn
ZW50cygpLT53ZWJEZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2Vi
RGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKLSAgICBpZiAoSW5zcGVjdG9y
VGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29r
aWUpKQorICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50
cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5n
JiBjYWxsYmFja1R5cGUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIGNhbGxi
YWNrVHlwZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpbnQgdGlt
ZWxpbmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxp
bmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFn
ZW50KCkpIHsKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdl
bnQtPndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFjayhjYWxsYmFja1R5cGUsIGZyYW1lRm9yU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgmY29udGV4dCkpOwotICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0
aW1lbGluZUFnZW50LT5pZCgpOwotICAgIH0KLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFja0lt
cGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29v
a2llKSkKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
dHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrKCk7CiB9CiAKQEAgLTEyNjEsMTcgKzEyMTcsNiBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2Vu
dHMoSW5zdHJ1bWVudGluZ0FnZW50cwogICAgIH0KIH0KIAotSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCi17Ci0gICAgaWYgKCFjb29r
aWUuaXNWYWxpZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygp
LT50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2Vu
dCAmJiBjb29raWUuaGFzTWF0Y2hpbmdUaW1lbGluZUFnZW50SWQodGltZWxpbmVBZ2VudC0+aWQo
KSkpCi0gICAgICAgIHJldHVybiB0aW1lbGluZUFnZW50OwotICAgIHJldHVybiBudWxscHRyOwot
fQotCiBJbnN0cnVtZW50aW5nQWdlbnRzKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJlcihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAg
IHJldHVybiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUocmVuZGVyZXIuZnJhbWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmgKaW5kZXggNTUxZjkwZWMxMDAyZWE4NDM2ZTRjNjA4Y2U3M2ZhYmRhYTc2OTgxOS4uMmQ5NDE4
NTRlYmVhMmZiMDVlMmQ3MzRkNWM0ZTA5ZjYxOTRlYzczZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDIsNyArNDIs
NiBAQAogI2luY2x1ZGUgIkZvcm1EYXRhLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRl
ICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHVibGljLmgiCiAjaW5j
bHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVhLmgiCkBAIC0xNTcsMzIgKzE1Niwz
MiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoUG9zdE1lc3NhZ2UoRnJh
bWUmLCBUaW1lckJhc2UmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaFBvc3RNZXNzYWdl
KEZyYW1lJiwgVGltZXJCYXNlJik7CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxDYWxsRnVuY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4pOwot
ICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIHZvaWQg
d2lsbENhbGxGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBz
Y3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSwgaW50IHNjcmlwdENvbHVtbik7CisgICAgc3RhdGlj
IHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0
aWMgdm9pZCBkaWRBZGRFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBzdGF0aWMg
dm9pZCB3aWxsUmVtb3ZlRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgc3RhdGlj
IGJvb2wgaXNFdmVudExpc3RlbmVyRGlzYWJsZWQoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3Ry
aW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwotICAgIHN0YXRp
YyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnQoRG9jdW1l
bnQmLCBjb25zdCBFdmVudCYsIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMpOwotICAgIHN0YXRpYyB2
b2lkIGRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
JiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hF
dmVudChEb2N1bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycyk7Cisg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGJvb2wgZGVmYXVsdFBy
ZXZlbnRlZCk7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAg
c3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvdyhGcmFtZSosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Jik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7CisgICAgc3RhdGljIHZvaWQgd2lsbERp
c3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Jik7Cisg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgYm9vbCBkZWZh
dWx0UHJldmVudGVkKTsKICAgICBzdGF0aWMgdm9pZCBldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRj
aChjb25zdCBFdmVudCYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5l
TnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNj
cmlwdChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBGcmFtZSYpOwotICAg
IHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVUaW1lcihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCk7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkRmlyZVRpbWVyKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVNjcmlwdChGcmFtZSYsIGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgc3RhdGlj
IHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRmly
ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVMYXlvdXQoRnJhbWUmKTsKLSAgICBzdGF0
aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxMYXlvdXQoRnJhbWUmKTsKLSAg
ICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJiwgUmVuZGVyT2JqZWN0Jik7CisgICAgc3RhdGljIHZvaWQgd2lsbExheW91dChGcmFtZSYp
OworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChGcmFtZSYsIFJlbmRlck9iamVjdCYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZFNjcm9sbChQYWdlJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbENvbXBv
c2l0ZShGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENvbXBvc2l0ZShGcmFtZSYpOwogICAg
IHN0YXRpYyB2b2lkIHdpbGxQYWludChSZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRQYWludChSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVu
dCYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQgd2lsbFJlY2FsY3VsYXRl
U3R5bGUoRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKERv
Y3VtZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24o
RG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1l
JiwgU3RyaW5nJik7CiAgICAgc3RhdGljIHZvaWQgYXBwbHlFbXVsYXRlZE1lZGlhKEZyYW1lJiwg
U3RyaW5nJik7CkBAIC0yNTQsMTEgKzI1MywxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9p
ZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmLCBpbnQgY2FsbGJhY2tJZCk7CiAg
ICAgc3RhdGljIHZvaWQgZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmLCBpbnQgY2Fs
bGJhY2tJZCk7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxs
RmlyZUFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiwgaW50IGNhbGxiYWNrSWQpOwotICAgIHN0YXRp
YyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3Vt
ZW50JiwgaW50IGNhbGxiYWNrSWQpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25G
cmFtZShEb2N1bWVudCYpOwogCi0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNv
bnN0IFN0cmluZyYgY2FsbGJhY2tUeXBlKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlT2JzZXJ2
ZXJDYWxsYmFjayhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBz
dGF0aWMgdm9pZCB3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IFN0cmluZyYgY2FsbGJhY2tUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJl
T2JzZXJ2ZXJDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBzdGF0aWMg
dm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0YWJhc2UmKTsKIApAQCAtMzY3LDMyICszNjYsMzIgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hQb3N0TWVzc2FnZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFRpbWVyQmFzZSYpOwogICAgIHN0YXRpYyB2b2lkIGRp
ZERpc3BhdGNoUG9zdE1lc3NhZ2VJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBUaW1l
ckJhc2UmKTsKIAotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2ls
bENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4sIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsK
KyAgICBzdGF0aWMgdm9pZCB3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSwgaW50IHNjcmlwdENv
bHVtbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIHN0YXRpYyB2b2lkIGRpZENhbGxG
dW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRBZGRFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50
TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVFdmVu
dExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAg
IHN0YXRpYyBib29sIGlzRXZlbnRMaXN0ZW5lckRpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImLCBib29sIGNhcHR1cmUpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1
bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycyk7CisgICAgc3RhdGlj
IHZvaWQgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVu
dCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycyk7CiAgICAgc3RhdGljIHZv
aWQgd2lsbEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnQmLCBjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2
ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0
Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9vbCBk
ZWZhdWx0UHJldmVudGVkKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBFdmVudCYsIERPTVdpbmRvdyYpOwotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZl
bnRPbldpbmRvd0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9v
bCBkZWZhdWx0UHJldmVudGVkKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKKyAgICBzdGF0
aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRj
aEV2ZW50T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBib29sIGRlZmF1bHRQcmV2
ZW50ZWQpOwogICAgIHN0YXRpYyB2b2lkIGV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNoSW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQg
Y29sdW1uTnVtYmVyKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgRnJhbWUmKTsKLSAgICBzdGF0aWMg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxGaXJlVGltZXJJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRFeGVjdXRpb25D
b250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRXZhbHVhdGVT
Y3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIGNvbnN0IFN0cmluZyYgdXJs
LCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZGlk
RXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOworICAgIHN0
YXRpYyB2b2lkIHdpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGlt
ZXJJZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3RhdGlj
IHZvaWQgZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGlj
IHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1l
Jik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRM
YXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFJlbmRlck9i
amVjdCYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBGcmFtZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZExheW91dEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbEltcGwo
SW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxDb21wb3NpdGVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENvbXBv
c2l0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQYWlu
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyB2
b2lkIGRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0JiwgY29u
c3QgTGF5b3V0UmVjdCYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVu
dCYpOwotICAgIHN0YXRpYyB2b2lkIGRpZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZWNhbGN1
bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmLCBEb2N1bWVudCYpOwogICAgIHN0YXRpYyB2b2lkIGFwcGx5VXNlckFnZW50
T3ZlcnJpZGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBTdHJpbmcmKTsKICAgICBzdGF0aWMg
dm9pZCBhcHBseUVtdWxhdGVkTWVkaWFJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBTdHJpbmcm
KTsKQEAgLTQ0NSwxMSArNDQ0LDExIEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRS
ZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgY2FsbGJh
Y2tJZCwgRG9jdW1lbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFt
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYpOwot
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVBbmltYXRp
b25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBEb2N1bWVu
dCYpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7CisgICAgc3RhdGljIHZvaWQgd2lsbEZpcmVB
bmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBE
b2N1bWVudCYpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYpOwogCi0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSB3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBjb25zdCBTdHJpbmcmLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyYpOwogCiAgICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlSW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRGF0YWJhc2UmKTsKIApAQCAtNTA5LDggKzUwOCw2IEBA
IHByaXZhdGU6CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHNGb3JEb2N1bWVudChEb2N1bWVudCopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzRm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Jik7CiAgICAg
c3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJH
bG9iYWxTY29wZShXb3JrZXJHbG9iYWxTY29wZSopOwotCi0gICAgc3RhdGljIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQqIHJldHJpZXZlVGltZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUmKTsKIH07CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBl
cldvcmxkJiB3b3JsZCkKQEAgLTgxOCwzNCArODE1LDM0IEBAIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZShGcmFtZSYgZnJhbWUsIFRp
bWVyCiAgICAgICAgIGRpZERpc3BhdGNoUG9zdE1lc3NhZ2VJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCB0aW1lcik7CiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExp
bmUsIGludCBzY3JpcHRDb2x1bW4pCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250
ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gd2lsbENhbGxGdW5jdGlvbkltcGwoKmluc3Ry
dW1lbnRpbmdBZ2VudHMsIHNjcmlwdE5hbWUsIHNjcmlwdExpbmUsIHNjcmlwdENvbHVtbiwgY29u
dGV4dCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotfQot
Ci1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbENhbGxGdW5jdGlvbihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uKQog
ewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29r
aWUuaXNWYWxpZCgpKQotICAgICAgICBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvb2tpZSwgY29udGV4
dCk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgd2lsbENhbGxGdW5jdGlvbkltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIHNjcmlwdE5hbWUsIHNjcmlwdExpbmUsIHNjcmlwdENvbHVtbiwg
Y29udGV4dCk7CiB9CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IEV2ZW50JiBldmVudCwgYm9vbCBoYXNFdmVudExpc3RlbmVycykKLXsKLSAgICBG
QVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0g
aW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJu
IHdpbGxEaXNwYXRjaEV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIGV2
ZW50LCBoYXNFdmVudExpc3RlbmVycyk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZERpc3BhdGNoRXZlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBj
b29raWUsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYg
KGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZERpc3BhdGNoRXZlbnRJbXBsKGNvb2tpZSwg
ZGVmYXVsdFByZXZlbnRlZCk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkQ2FsbEZ1
bmN0aW9uSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY29udGV4dCk7Cit9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQm
IGRvY3VtZW50LCBjb25zdCBFdmVudCYgZXZlbnQsIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMpCit7
CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisKKyAgICBpZiAoYXV0
byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChk
b2N1bWVudCkpCisgICAgICAgIHdpbGxEaXNwYXRjaEV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZG9jdW1lbnQsIGV2ZW50LCBoYXNFdmVudExpc3RlbmVycyk7Cit9CisKK2lubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCYg
ZG9jdW1lbnQsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFModm9pZCgpKTsKKworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlk
RGlzcGF0Y2hFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRlZmF1bHRQcmV2ZW50ZWQp
OwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFdmVudCYgZXZlbnQsIGNvbnN0
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKQEAgLTg2MiwxOSArODU5LDE4IEBA
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnQoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29uCiAgICAgICAgIHJldHVybiBkaWRIYW5kbGVFdmVudElt
cGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93JiB3aW5k
b3cpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAg
IHJldHVybiB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50
cywgZXZlbnQsIHdpbmRvdyk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERp
c3BhdGNoRXZlbnRPbldpbmRvdyhjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
IGNvb2tpZSwgYm9vbCBkZWZhdWx0UHJldmVudGVkKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiBmcmFtZSwgY29u
c3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cmIHdpbmRvdykKIHsKICAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAgICBpZiAoY29va2llLmlzVmFsaWQoKSkKLSAgICAg
ICAgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChjb29raWUsIGRlZmF1bHRQcmV2ZW50ZWQp
OworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwo
Kmluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50LCB3aW5kb3cpOworfQorCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSog
ZnJhbWUsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGlu
c3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZERpc3BhdGNoRXZl
bnRPbldpbmRvd0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRlZmF1bHRQcmV2ZW50ZWQpOwog
fQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmV2ZW50RGlkUmVzZXRB
ZnRlckRpc3BhdGNoKGNvbnN0IEV2ZW50JiBldmVudCkKQEAgLTg4OSwzNCArODg1LDMyIEBAIGlu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZXZlbnREaWRSZXNldEFmdGVyRGlz
cGF0Y2goY29uc3QgRXZlbnQmIGV2CiAgICAgICAgIHJldHVybiBldmVudERpZFJlc2V0QWZ0ZXJE
aXNwYXRjaEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50KTsKIH0KIAotaW5saW5lIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxFdmFsdWF0ZVNjcmlwdChGcmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcikKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwotICAgIGlmIChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0Zv
ckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lLCB1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7
Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotfQotCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KGNvbnN0
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBGcmFtZSYgZnJhbWUpCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChG
cmFtZSYgZnJhbWUsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVt
bk51bWJlcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKLSAg
ICBpZiAoY29va2llLmlzVmFsaWQoKSkKLSAgICAgICAgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNv
b2tpZSwgZnJhbWUpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1
bWVudGluZ0FnZW50c0ZvckZyYW1lKGZyYW1lKSkKKyAgICAgICAgd2lsbEV2YWx1YXRlU2NyaXB0
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIHVybCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyKTsKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCkKLXsKLSAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwotICAg
IGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVu
dGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVybiB3aWxsRmlyZVRp
bWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgb25lU2hvdCwgY29udGV4dCk7
Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotfQotCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb25zdCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUmIGZyYW1lKQogewogICAg
IEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUuaXNW
YWxpZCgpKQotICAgICAgICBkaWRGaXJlVGltZXJJbXBsKGNvb2tpZSk7CisgICAgaWYgKGF1dG8q
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUp
KQorICAgICAgICBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZy
YW1lKTsKK30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmly
ZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGludCB0aW1lcklkLCBib29s
IG9uZVNob3QpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Cisg
ICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9y
Q29udGV4dChjb250ZXh0KSkKKyAgICAgICAgd2lsbEZpcmVUaW1lckltcGwoKmluc3RydW1lbnRp
bmdBZ2VudHMsIHRpbWVySWQsIG9uZVNob3QsIGNvbnRleHQpOworfQorCitpbmxpbmUgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50
c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAgICAgIGRpZEZpcmVUaW1lckltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEludmFsaWRhdGVMYXlvdXQoRnJhbWUmIGZyYW1lKQpAQCAtOTI2LDE5ICs5MjAsMTggQEAg
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0
KEZyYW1lJiBmcmFtZSkKICAgICAgICAgZGlkSW52YWxpZGF0ZUxheW91dEltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIGZyYW1lKTsKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUmIGZyYW1l
KQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICBy
ZXR1cm4gd2lsbExheW91dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGZyYW1lKTsKLSAgICBy
ZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGNvbnN0IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBSZW5kZXJPYmplY3QmIHJvb3QpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQoRnJhbWUmIGZyYW1lKQogewog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUu
aXNWYWxpZCgpKQotICAgICAgICBkaWRMYXlvdXRJbXBsKGNvb2tpZSwgcm9vdCk7CisgICAgaWYg
KGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUo
ZnJhbWUpKQorICAgICAgICB3aWxsTGF5b3V0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJh
bWUpOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91
dChGcmFtZSYgZnJhbWUsIFJlbmRlck9iamVjdCYgcm9vdCkKK3sKKyAgICBGQVNUX1JFVFVSTl9J
Rl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50
cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZExheW91
dEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJvb3QpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjcm9sbChQYWdlJiBwYWdlKQpAQCAtOTc1LDE5ICs5
NjgsMTggQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRQYWludChS
ZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXkKICAgICAgICAgZGlkUGFpbnRJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCByZW5kZXJlciwgcmVjdCk7CiB9CiAKLWlubGluZSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVj
YWxjdWxhdGVTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZf
Tk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKLSAgICBpZiAo
SW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdB
Z2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCi0gICAgICAgIHJldHVybiB3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50KTsKLSAgICByZXR1cm4g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZShjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewog
ICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUu
aXNWYWxpZCgpKQotICAgICAgICBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbChjb29raWUpOworICAg
IGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRv
Y3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgd2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKCppbnN0
cnVtZW50aW5nQWdlbnRzLCBkb2N1bWVudCk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCYgZG9jdW1lbnQpCit7
CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKGF1dG8q
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9j
dW1lbnQpKQorICAgICAgICBkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2No
ZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTU3OCwzNCAr
MTU3MCwzMiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbmNl
bEFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiBkb2N1bWVudAogICAgICAgICBkaWRDYW5jZWxBbmlt
YXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNrSWQsIGRvY3VtZW50
KTsKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmIGRvY3VtZW50
LCBpbnQgY2FsbGJhY2tJZCkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50
KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKCpp
bnN0cnVtZW50aW5nQWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVudCk7Ci0gICAgcmV0dXJuIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZShjb25zdCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVudCYgZG9jdW1lbnQsIGlu
dCBjYWxsYmFja0lkKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkp
OwotICAgIGlmIChjb29raWUuaXNWYWxpZCgpKQotICAgICAgICBkaWRGaXJlQW5pbWF0aW9uRnJh
bWVJbXBsKGNvb2tpZSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0
cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3aWxsRmlyZUFu
aW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tJZCwgZG9jdW1l
bnQpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY2FsbGJhY2tUeXBlKQotewotICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUo
KSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIHdp
bGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNr
VHlwZSwgY29udGV4dCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVP
YnNlcnZlckNhbGxiYWNrKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29v
a2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0
aW9uRnJhbWUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZS
T05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUuaXNWYWxpZCgpKQotICAgICAgICBkaWRG
aXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoY29va2llKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisg
ICAgICAgIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOwor
fQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlT2JzZXJ2
ZXJDYWxsYmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IGNhbGxiYWNrVHlwZSkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICB3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2tJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBjYWxsYmFja1R5cGUsIGNvbnRleHQpOworfQorCitp
bmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVPYnNlcnZlckNhbGxi
YWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlk
RmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKIH0KIAogaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpsYXllclRyZWVEaWRDaGFuZ2UoUGFn
ZSogcGFnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDI0MDM0MGQ0YWI4MDM5ZWVhNjdlZTkwYzJmNDc2OTM5YThlOTUwZTMuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSw2NyArMCwwIEBACi0vKgotKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSogbWV0Ogot
KgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAotKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotKiBpbiB0
aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
Ci0qIGRpc3RyaWJ1dGlvbi4KLSogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cwotKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotKgotKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0qICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLSogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0qIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmgiCi0KLSNpbmNs
dWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoKQotICAgIDogbV90aW1lbGluZUFnZW50SWQoMCkKLXsKLX0KLQotSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgYWdlbnRzLCBpbnQgdGltZWxpbmVBZ2VudElkKQotICAgIDogbV9pbnN0cnVt
ZW50aW5nQWdlbnRzKCZhZ2VudHMpCi0gICAgLCBtX3RpbWVsaW5lQWdlbnRJZCh0aW1lbGluZUFn
ZW50SWQpCi17Ci19Ci0KLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZTo6SW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYgb3RoZXIpCi0gICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMob3RoZXIubV9pbnN0cnVtZW50
aW5nQWdlbnRzKQotICAgICwgbV90aW1lbGluZUFnZW50SWQob3RoZXIubV90aW1lbGluZUFnZW50
SWQpCi17Ci19Ci0KLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llOjpvcGVyYXRvcj0oY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJiBvdGhlcikKLXsKLSAgICBpZiAodGhpcyAhPSAmb3RoZXIpIHsKLSAgICAgICAg
bV9pbnN0cnVtZW50aW5nQWdlbnRzID0gb3RoZXIubV9pbnN0cnVtZW50aW5nQWdlbnRzOwotICAg
ICAgICBtX3RpbWVsaW5lQWdlbnRJZCA9IG90aGVyLm1fdGltZWxpbmVBZ2VudElkOwotICAgIH0K
LQotICAgIHJldHVybiAqdGhpczsKLX0KLQotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
Ojp+SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkgPSBkZWZhdWx0OwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDkwNGNkOTRkYzdiNTA0MzA4ZDMwYjg0MTUyZGNjMDYzYTYyOTE4ZGUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5oCisrKyAvZGV2L251bGwKQEAg
LTEsNTYgKzAsMCBAQAotLyoKLSogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0qIG1ldDoK
LSoKLSogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0qIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotKiBkaXN0cmlidXRpb24uCi0qICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSoKLSogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0qIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0qIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0qIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotKi8KLQotI3ByYWdtYSBvbmNlCi0K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
SW5zdHJ1bWVudGluZ0FnZW50czsKLQotY2xhc3MgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIHsKLXB1YmxpYzoKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGlu
dCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGNvbnN0IEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYgb3BlcmF0b3I9KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOwotICAg
IH5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoKTsKLQotICAgIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9pbnN0cnVtZW50aW5nQWdlbnRzOyB9Ci0gICAgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cygpIGNvbnN0IHsgcmV0dXJuIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5nZXQoKTsgfQotICAgIGJvb2wgaGFzTWF0Y2hpbmdUaW1lbGluZUFnZW50
SWQoaW50IGlkKSBjb25zdCB7IHJldHVybiBtX3RpbWVsaW5lQWdlbnRJZCA9PSBpZDsgfQotCi1w
cml2YXRlOgotICAgIFJlZlB0cjxJbnN0cnVtZW50aW5nQWdlbnRzPiBtX2luc3RydW1lbnRpbmdB
Z2VudHM7Ci0gICAgaW50IG1fdGltZWxpbmVBZ2VudElkOwotfTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggNDM3ODMzNjU0YmViODhiYjliOGE0NmE5
OWNmYTg5YzVlMzg0YzY2Mi4uYjkyMTk0NDViODJlMzNlZTZkYmE4MmI0OGEwOGRjMjc1ZGJhOGY0
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBJbnNwZWN0
b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3AoKQogICAgICAgICBkaWRDb21wbGV0ZUN1cnJl
bnRSZWNvcmQobV9yZWNvcmRTdGFjay5sYXN0KCkudHlwZSk7CiAjZW5kaWYKIAotICAgIGNsZWFy
UmVjb3JkU3RhY2soKTsKKyAgICBtX3JlY29yZFN0YWNrLmNsZWFyKCk7CiAKICAgICBtX3RyYWNr
aW5nID0gZmFsc2U7CiAgICAgbV9zdGFydGVkQ29tcG9zaXRlID0gZmFsc2U7CkBAIC0zMzcsNiAr
MzM3LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojp3aWxsRGlzcGF0Y2hFdmVudChj
b25zdCBFdmVudCYgZXZlbnQsIEZyYW1lKiBmcmFtZSkKIAogdm9pZCBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50OjpkaWREaXNwYXRjaEV2ZW50KGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKIHsKKyAgICBp
ZiAobV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8m
IGVudHJ5ID0gbV9yZWNvcmRTdGFjay5sYXN0KCk7CiAgICAgQVNTRVJUKGVudHJ5LnR5cGUgPT0g
VGltZWxpbmVSZWNvcmRUeXBlOjpFdmVudERpc3BhdGNoKTsKICAgICBlbnRyeS5kYXRhLT5zZXRC
b29sZWFuKCJkZWZhdWx0UHJldmVudGVkIl9zLCBkZWZhdWx0UHJldmVudGVkKTsKQEAgLTQwNSw2
ICs0MDgsOSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OndpbGxQYWludChGcmFtZSYg
ZnJhbWUpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkUGFpbnQoUmVuZGVyT2Jq
ZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgY2xpcFJlY3QpCiB7CisgICAgaWYgKG1f
cmVjb3JkU3RhY2suaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisKICAgICBUaW1lbGluZVJl
Y29yZEVudHJ5JiBlbnRyeSA9IG1fcmVjb3JkU3RhY2subGFzdCgpOwogICAgIEFTU0VSVChlbnRy
eS50eXBlID09IFRpbWVsaW5lUmVjb3JkVHlwZTo6UGFpbnQpOwogICAgIEZsb2F0UXVhZCBxdWFk
OwpAQCAtNzk1LDEyICs4MDEsNiBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OnB1c2hD
dXJyZW50UmVjb3JkKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSwgVGltZQogICAgIHB1c2hD
dXJyZW50UmVjb3JkKGNyZWF0ZVJlY29yZEVudHJ5KFdURk1vdmUoZGF0YSksIHR5cGUsIGNhcHR1
cmVDYWxsU3RhY2ssIGZyYW1lKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6
Y2xlYXJSZWNvcmRTdGFjaygpCi17Ci0gICAgbV9yZWNvcmRTdGFjay5jbGVhcigpOwotICAgIG1f
aWQrKzsKLX0KLQogdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpsb2NhbFRvUGFnZVF1YWQo
Y29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCwgRmxv
YXRRdWFkKiBxdWFkKQogewogICAgIGNvbnN0IEZyYW1lVmlldyYgZnJhbWVWaWV3ID0gcmVuZGVy
ZXIudmlldygpLmZyYW1lVmlldygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBkMTFiOTBiMDJmY2Q5
N2MyNTM1MGQ2OTNkN2EyM2RjNTE3MzNkMDJkLi5iNDMzOWE1MTc5NzRkZTIyMmZmNDJjMDYyMTY4
OWYzNTVmMjk3Y2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMTQ4LDggKzE0OCw2IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHN0YXJ0RnJvbUNvbnNvbGUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBTdHJp
bmcmIHRpdGxlKTsKICAgICB2b2lkIHN0b3BGcm9tQ29uc29sZShKU0M6OkV4ZWNTdGF0ZSosIGNv
bnN0IFN0cmluZyYgdGl0bGUpOwogCi0gICAgaW50IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsg
fQotCiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnRQcm9ncmFtbWF0aWNDYXB0dXJlKCk7CiAgICAg
dm9pZCBzdG9wUHJvZ3JhbW1hdGljQ2FwdHVyZSgpOwpAQCAtMjAwLDcgKzE5OCw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBl
KTsKIAogICAgIHZvaWQgYWRkUmVjb3JkVG9UaW1lbGluZShSZWZQdHI8SlNPTjo6T2JqZWN0PiYm
LCBUaW1lbGluZVJlY29yZFR5cGUpOwotICAgIHZvaWQgY2xlYXJSZWNvcmRTdGFjaygpOwogCiAg
ICAgdm9pZCBsb2NhbFRvUGFnZVF1YWQoY29uc3QgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0
UmVjdCYsIEZsb2F0UXVhZCopOwogCkBAIC0yMTEsNyArMjA4LDYgQEAgcHJpdmF0ZToKICAgICBW
ZWN0b3I8VGltZWxpbmVSZWNvcmRFbnRyeT4gbV9yZWNvcmRTdGFjazsKICAgICBWZWN0b3I8VGlt
ZWxpbmVSZWNvcmRFbnRyeT4gbV9wZW5kaW5nQ29uc29sZVByb2ZpbGVSZWNvcmRzOwogCi0gICAg
aW50IG1faWQgeyAxIH07CiAgICAgaW50IG1fbWF4Q2FsbFN0YWNrRGVwdGggeyA1IH07CiAKICAg
ICBib29sIG1fdHJhY2tpbmcgeyBmYWxzZSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRl
eCBkZDFlOWRiYTE5OGE4ZDI0OTk4YzM4N2FjYTBkYjNjMjNlZjNhYWRlLi44ZTYyNzFjYTA2ZGIz
ZWRmMzhjZjJmMGIwN2RmZmU1NWQ5MmUxYTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVRpbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApA
QCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKICAgICAvLyBPbmx5IHRo
ZSBmaXJzdCBleGVjdXRpb24gb2YgYSBtdWx0aS1zaG90IHRpbWVyIHNob3VsZCBnZXQgYW4gYWZm
aXJtYXRpdmUgdXNlciBnZXN0dXJlIGluZGljYXRvci4KICAgICBtX3VzZXJHZXN0dXJlVG9rZW5U
b0ZvcndhcmQgPSBudWxscHRyOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcihjb250ZXh0
LCBtX3RpbWVvdXRJZCwgIXJlcGVhdEludGVydmFsKCkpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEZpcmVUaW1lcihjb250ZXh0LCBtX3RpbWVvdXRJZCwgIXJlcGVhdEludGVy
dmFsKCkpOwogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAg
ICAgaWYgKGlzQWN0aXZlKCkpIHsKQEAgLTMyNSw5ICszMjUsOSBAQCB2b2lkIERPTVRpbWVyOjpm
aXJlZCgpCiAKICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29va2llKTsKLSAgICAgICAg
dXBkYXRlVGhyb3R0bGluZ1N0YXRlSWZOZWNlc3NhcnkoZmlyZVN0YXRlKTsKKyAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29udGV4dCk7CiAKKyAgICAgICAg
dXBkYXRlVGhyb3R0bGluZ1N0YXRlSWZOZWNlc3NhcnkoZmlyZVN0YXRlKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMzQzLDcgKzM0Myw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkK
ICNlbmRpZgogICAgIG1fYWN0aW9uLT5leGVjdXRlKGNvbnRleHQpOwogCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29va2llKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0KTsKIAogICAgIC8vIENoZWNrIGlmIHdl
IHNob3VsZCB0aHJvdHRsZSBuZXN0ZWQgc2luZ2xlLXNob3QgdGltZXJzLgogICAgIGlmIChuZXN0
ZWRUaW1lcnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA2ZmVlYWM1ODllOTAw
NDk5OTA2ODU3MjE4ODJlMzFjYTE1ZjQ3MDQzLi5hYjk2ODU2MTMyNDdmMjkwYmY3ODgzZTVkNWZj
N2FmZmFkOGRhYWFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0yMTY4LDExICsy
MTY4LDE0IEBAIHZvaWQgRE9NV2luZG93OjpkaXNwYXRjaEV2ZW50KEV2ZW50JiBldmVudCwgRXZl
bnRUYXJnZXQqIHRhcmdldCkKICAgICBldmVudC5zZXRDdXJyZW50VGFyZ2V0KHRoaXMpOwogICAg
IGV2ZW50LnNldEV2ZW50UGhhc2UoRXZlbnQ6OkFUX1RBUkdFVCk7CiAgICAgZXZlbnQucmVzZXRC
ZWZvcmVEaXNwYXRjaCgpOwotICAgIGF1dG8gY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KGZyYW1lKCksIGV2ZW50LCAqdGhpcyk7CisK
KyAgICBhdXRvKiBwcm90ZWN0ZWRGcmFtZSA9IGZyYW1lKCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KHByb3RlY3RlZEZyYW1lLCBldmVu
dCwgKnRoaXMpOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXNlIEV2ZW50RGlzcGF0Y2hlciBl
dmVyeXdoZXJlLgogICAgIGZpcmVFdmVudExpc3RlbmVycyhldmVudCwgRXZlbnRJbnZva2VQaGFz
ZTo6Q2FwdHVyaW5nKTsKICAgICBmaXJlRXZlbnRMaXN0ZW5lcnMoZXZlbnQsIEV2ZW50SW52b2tl
UGhhc2U6OkJ1YmJsaW5nKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3Bh
dGNoRXZlbnRPbldpbmRvdyhjb29raWUsIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQoKSk7CisgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50T25XaW5kb3cocHJvdGVj
dGVkRnJhbWUsIGV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQoKSk7CisKICAgICBldmVudC5yZXNldEFm
dGVyRGlzcGF0Y2goKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZVZpZXdMYXlvdXRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3TGF5
b3V0Q29udGV4dC5jcHAKaW5kZXggNmFiNDBlYzkwOTc2ZjdmMDJjMDcxZTU2N2FkNDk1YzcwZTkw
MzcwMi4uYzliOTQyZWJmMDNhM2EyMzg0MjY5MzM1MmJkYjljYWY0ODIwMmYxMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwCkBAIC0xNTUsNyAr
MTU1LDcgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpsYXlvdXQoKQogICAgIFJlZjxG
cmFtZVZpZXc+IHByb3RlY3RWaWV3KHZpZXcoKSk7CiAgICAgTGF5b3V0U2NvcGUgbGF5b3V0U2Nv
cGUoKnRoaXMpOwogICAgIFRyYWNlU2NvcGUgdHJhY2luZ1Njb3BlKExheW91dFN0YXJ0LCBMYXlv
dXRFbmQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBpbnNwZWN0b3JMYXlv
dXRTY29wZShJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQodmlldygpLmZyYW1l
KCkpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxMYXlvdXQodmlldygpLmZy
YW1lKCkpOwogICAgIEFuaW1hdGlvblVwZGF0ZUJsb2NrIGFuaW1hdGlvblVwZGF0ZUJsb2NrKCZ2
aWV3KCkuZnJhbWUoKS5hbmltYXRpb24oKSk7CiAgICAgV2Vha1B0cjxSZW5kZXJFbGVtZW50PiBs
YXlvdXRSb290OwogICAgIApAQCAtMjMyLDcgKzIzMiw3IEBAIHZvaWQgRnJhbWVWaWV3TGF5b3V0
Q29udGV4dDo6bGF5b3V0KCkKICAgICAgICAgdmlldygpLmRpZExheW91dChsYXlvdXRSb290KTsK
ICAgICAgICAgcnVuT3JTY2hlZHVsZUFzeW5jaHJvbm91c1Rhc2tzKCk7CiAgICAgfQotICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KGluc3BlY3RvckxheW91dFNjb3BlLCAq
bGF5b3V0Um9vdCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQodmll
dygpLmZyYW1lKCksICpsYXlvdXRSb290KTsKICAgICBEZWJ1Z1BhZ2VPdmVybGF5czo6ZGlkTGF5
b3V0KHZpZXcoKS5mcmFtZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9JbnRlcnNlY3Rpb25PYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2Vj
dGlvbk9ic2VydmVyLmNwcAppbmRleCAyYjI3OTljODAwM2E3ZjFiOTYzYWFlZDZkZDk5OGMxY2Fj
OTU1NzU0Li5mOWZiMjg3ZTY3OWVkZDg0NmU3NWIzNzkxMmMxNWEzOGU0MTIzMzY4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcApAQCAtMjYyLDEyICsy
NjIsMTEgQEAgdm9pZCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6bm90aWZ5KCkKICAgICBpZiAoIWNv
bnRleHQpCiAgICAgICAgIHJldHVybjsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJD
YWxsYmFjaygqY29udGV4dCwgIkludGVyc2VjdGlvbk9ic2VydmVyIl9zKTsKLQogICAgIGF1dG8g
dGFrZW5SZWNvcmRzID0gdGFrZVJlY29yZHMoKTsKLSAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVu
dChXVEZNb3ZlKHRha2VuUmVjb3Jkcy5yZWNvcmRzKSwgKnRoaXMpOwogCi0gICAgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjayhjb29raWUpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrKCpjb250ZXh0
LCAiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiX3MpOworICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50
KFdURk1vdmUodGFrZW5SZWNvcmRzLnJlY29yZHMpLCAqdGhpcyk7CisgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjaygqY29udGV4dCk7CiB9CiAKIGJv
b2wgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI6Omhhc1BlbmRpbmdBY3Rpdml0eSgpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlT2JzZXJ2ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmNwcAppbmRleCBjOWUwMmMzMDBj
NjZjZTZmMzg0NzAyNjhiMjg1Y2I4MzNmZWUyODdjLi45MjQzNTA0MDJiYzI2MWJkMGFlOWU3NDZh
NzUwM2Y0MDRjYWY4MzdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNl
cnZlci5jcHAKQEAgLTEwOCw5ICsxMDgsOSBAQCB2b2lkIFBlcmZvcm1hbmNlT2JzZXJ2ZXI6OmRl
bGl2ZXIoKQogICAgIFZlY3RvcjxSZWZQdHI8UGVyZm9ybWFuY2VFbnRyeT4+IGVudHJpZXMgPSBX
VEZNb3ZlKG1fZW50cmllc1RvRGVsaXZlcik7CiAgICAgYXV0byBsaXN0ID0gUGVyZm9ybWFuY2VP
YnNlcnZlckVudHJ5TGlzdDo6Y3JlYXRlKFdURk1vdmUoZW50cmllcykpOwogCi0gICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrKCpjb250ZXh0LCAiUGVyZm9ybWFuY2VPYnNlcnZl
ciJfcyk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZU9ic2VydmVyQ2Fs
bGJhY2soKmNvbnRleHQsICJQZXJmb3JtYW5jZU9ic2VydmVyIl9zKTsKICAgICBtX2NhbGxiYWNr
LT5oYW5kbGVFdmVudChsaXN0LCAqdGhpcyk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjayhjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKmNvbnRleHQpOwogfQogCiBWZWN0b3I8
U3RyaW5nPiBQZXJmb3JtYW5jZU9ic2VydmVyOjpzdXBwb3J0ZWRFbnRyeVR5cGVzKCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>380122</attachid>
            <date>2019-10-03 09:23:27 -0700</date>
            <delta_ts>2019-10-03 12:38:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202487-20191003122325.patch</filename>
            <type>text/plain</type>
            <size>81191</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlODQ5YjRjODQ3ZDRlNjA5Zjc1MTc0YTY2NjJkMTg4ZGE3NmYyOWE4Li4z
ZDFjMTBjMDE0MDlmOTI3ZDhhZGM1NzE2MWE3OGNmNjEzYWUxZTg3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTE5IEBACisyMDE5LTEwLTAzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiByZW1vdmUgYEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZWAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMjQ4NworCisgICAgICAgIFJldmlld2VkIGJ5IE1hdHQgQmFrZXIuCisKKyAgICAgICAg
QWxsIGl0IGRvZXMgaXMgY3JlYXRlIGEgc2hhbGxvdy1jb3B5IG9mIHRoZSBgSW5zdHJ1bWVudGlu
Z0FnZW50c2AgKGl0IGNvcGllcyBhIHBvaW50ZXIgdG8KKyAgICAgICAgdGhlIGBJbnN0cnVtZW50
aW5nQWdlbnRzYCBvYmplY3QsIHNvIGFueSBvZiB0aGUgcG9pbnRlcnMgdG8gdGhlIGBJbnNwZWN0
b3JBZ2VudGAgdGhhdCBhcmUKKyAgICAgICAgY29udGFpbmVkIHRoZXJlaW4gYXJlIHNoYXJlZCBi
ZXR3ZWVuIGVhY2ggaW5zdGFuY2UpIGFuZCBzYXZlIHRoZSB0cmFja2luZworICAgICAgICBgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudGAncyBpZCAobW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIGludGVn
ZXIpLgorCisgICAgICAgIEFsbCB1c2VzIG9mIGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWVgIGFyZSBsb2NhbCB2YWx1ZXMsIHNvIHRoZXJlJ3Mgbm8gd2F5IHRoYXQgdGhlCisgICAgICAg
IGBJbnNwZWN0b3JUaW1lbGluZUFnZW50YCAob3IgdGhlIGlkKSBjb3VsZCBjaGFuZ2UgaW4gYmV0
d2VlbiBhbgorICAgICAgICBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsKmAgYW5kIGFu
IGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZCpgLCBhcyBib3RoIHRoZQorICAgICAgICB0
cmFja2luZyBzdGF0ZSBhbmQgaWQgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGZyb250ZW5kIGFuZCBj
YW5ub3QgImludGVycnVwdCIuCisKKyAgICAgICAgUmVtb3ZpbmcgYEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZWAgX2Nhbl8gY2F1c2UgaXNzdWVzIGlzIGluIHNpdHVhdGlvbnMgd2hlcmUg
dGhlCisgICAgICAgIGBTY3JpcHRFeGVjdXRpb25Db250ZXh0YCAob3IgYFBhZ2VgKSBjaGFuZ2Vz
IGJldHdlZW4gdGhlIGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGwqYAorICAgICAgICBh
bmQgdGhlIGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZCpgLCBidXQgdGhpcyBjYW4gYmUg
YXZvaWRlZCBzbyBsb25nIGFzIGEgcG9pbnRlciB0bworICAgICAgICB0aGUgImNvbnRleHQiIHVz
ZWQgZm9yIGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGwqYCBpcyBzYXZlZC4KKworICAg
ICAgICBDb3ZlcmVkIGJ5IGV4aXN0aW5nIHRlc3RzOiBpbnNwZWN0b3IvdGltZWxpbmUvKgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5oOiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUu
Y3BwOiBSZW1vdmVkLgorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGlu
ZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6Omlu
dGVybmFsU3RvcCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50Ojpk
aWREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmRpZFBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmNsZWFyUmVjb3JkU3RhY2spOiBEZWxldGVkLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9r
ZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZh
Y2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0Q3VzdG9tRWxlbWVudFN5bmNocm9u
b3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlOjp1cGdy
YWRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U6
Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0Vycm9ySGFuZGxlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V4ZWNTdGF0ZS5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXhlY1N0YXRlSW5zdHJ1bWVu
dGF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0
aW9uSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNhbGwpOgorICAgICAgICAoV2ViQ29yZTo6SlNFeGVjU3RhdGU6Omluc3RydW1lbnRG
dW5jdGlvbkNvbnN0cnVjdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9u
SW5Db250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlSW5Xb3JsZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZU1vZHVsZSk6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpyZXNv
bHZlU3R5bGUpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpFdmVudFRhcmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVycyk6CisgICAgICAgICog
ZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TXV0YXRpb25PYnNl
cnZlcjo6ZGVsaXZlcik6CisgICAgICAgICogZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXI6OnNl
cnZpY2VSZXF1ZXN0QW5pbWF0aW9uRnJhbWVDYWxsYmFja3MpOgorICAgICAgICAqIHBhZ2UvRE9N
VGltZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAg
KiBwYWdlL0RPTVdpbmRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmRpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIHBhZ2UvRnJhbWVWaWV3TGF5b3V0Q29udGV4dC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpsYXlvdXQpOgorICAgICAg
ICAqIHBhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50
ZXJzZWN0aW9uT2JzZXJ2ZXI6Om5vdGlmeSk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZU9i
c2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBlcmZvcm1hbmNlT2JzZXJ2ZXI6OmRlbGl2
ZXIpOgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0
aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2Fs
bEZ1bmN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbERpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0
ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEV2YWx1YXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEZpcmVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRMYXlvdXQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFJlY2FsY3VsYXRlU3R5bGUpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlvbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFu
aW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2spOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbkltcGwp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0
Y2hFdmVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaEV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93
SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxF
dmFsdWF0ZVNjcmlwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRFdmFsdWF0ZVNjcmlwdEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5b3V0SW1wbCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dEltcGwpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxh
dGVTdHlsZUltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRSZWNhbGN1bGF0ZVN0eWxlSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1w
bCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJl
T2JzZXJ2ZXJDYWxsYmFja0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQpOiBEZWxl
dGVkLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDE5LTEwLTAzICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRlc3RzIHVuZGVyIExh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlciBhcmUgZmxha3kKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXgg
Zjk1ODZmYTA0OGNiN2VlZDI4NjU5YmEwNjBiOGRmOGExMGUyYmRkYS4uNjc0YTczNzZmMDdhNzAy
MWE1Zjg2N2IyYzU3ZjVhMjdlZjE2MzAwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTEzNDYsNyArMTM0
Niw2IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAogaW5zcGVj
dG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5
LmNwcAogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKLWluc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uUHVibGljLmNwcAogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlv
bldlYktpdC5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JOb2RlRmluZGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDNmYmI1
NWVlYzA5ZGM2NjI3ZDAyMTU3Mjg5OTljYjRlM2JiM2RkM2EuLjcxNDQzNTJhNjBmYTdmMjkwY2Zj
ODY0MTBkYTY3N2YzM2QwMDhkNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMwNjUsNyArMzA2NSw2IEBACiAJCUE1NzhGNDND
MURFMDE0MjMwMDNERkM2QSAvKiBKU1Byb21pc2VSZWplY3Rpb25FdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3OEY0M0ExREUwMTNGQjAwM0RG
QzZBIC8qIEpTUHJvbWlzZVJlamVjdGlvbkV2ZW50LmggKi87IH07CiAJCUE1NzhGNDNGMURFMEI2
MzAwMDNERkM2QSAvKiBSZWplY3RlZFByb21pc2VUcmFja2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTc4RjQzRTFERTBCNjJCMDAzREZDNkEgLyog
UmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUE1ODFFRDEzMUZCMjg4Q0YwMENFRDRFQyAvKiBTZXJ2aWNlV29y
a2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1ODFFRDEwMUZCMjg4QzgwMENFRDRFQyAvKiBTZXJ2aWNlV29ya2VyQWdlbnQuaCAqLzsgfTsK
LQkJQTU4NDBFMUQxODdCNzRENTAwODQzQjEwIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU4
NDBFMUIxODdCNzRENTAwODQzQjEwIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1ODQw
RTI1MTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1ODQwRTIzMTg3QjhBQzIwMDg0
M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuaCAqLzsgfTsKIAkJQTU4NEZFMjYxODYzN0RB
QjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlU291cmNlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAg
LyogQ29tbWFuZExpbmVBUElNb2R1bGVTb3VyY2UuaCAqLzsgfTsKIAkJQTU4NEZFMkMxODYzODcw
RjAwODQzQjEwIC8qIENvbW1hbmRMaW5lQVBJTW9kdWxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTg0RkUyQTE4NjM4NzBGMDA4NDNCMTAgLyogQ29t
bWFuZExpbmVBUElNb2R1bGUuaCAqLzsgfTsKQEAgLTExNDUwLDggKzExNDQ5LDYgQEAKIAkJQTU3
OEY0M0UxREUwQjYyQjAwM0RGQzZBIC8qIFJlamVjdGVkUHJvbWlzZVRyYWNrZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVqZWN0ZWRQcm9taXNlVHJhY2tlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTgxRUQxMDFGQjI4OEM4MDBDRUQ0RUMgLyogU2Vy
dmljZVdvcmtlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZp
Y2VXb3JrZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTgxRUQxMjFG
QjI4OEM5MDBDRUQ0RUMgLyogU2VydmljZVdvcmtlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUE1ODQwRTFBMTg3Qjc0RDUwMDg0M0IxMCAvKiBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTU4NDBFMUIxODdCNzRENTAwODQzQjEwIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbkNvb2tpZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEwIC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJJbmplY3RlZFNjcmlwdEhv
c3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTg0MEUyMzE4N0I4QUMyMDA4
NDNCMTAgLyogV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYkluamVjdGVkU2NyaXB0SG9zdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNTg0RkUyNTE4NjM3REFCMDA4NDNCMTAgLyogQ29tbWFuZExpbmVBUElNb2R1bGVT
b3VyY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbWFuZExpbmVBUElN
b2R1bGVTb3VyY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MTE3LDggKzE3
MTE0LDYgQEAKIAkJCQk3QTU0ODU3RTE0RTAyRDUxMDA2QUUwNUEgLyogSW5zcGVjdG9ySGlzdG9y
eS5oICovLAogCQkJCTIwRDYyOTI0MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwICovLAogCQkJCTIwRDYyOTI1MTI1MzY5MEIwMDA4MTU0MyAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCAqLywKLQkJCQlBNTg0MEUxQTE4N0I3NEQ1MDA4NDNCMTAgLyog
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNwcCAqLywKLQkJCQlBNTg0MEUxQjE4N0I3
NEQ1MDA4NDNCMTAgLyogSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmggKi8sCiAJCQkJ
QTU4NjBFNkEyMzBERTJFMTAwNDYxQUFFIC8qIEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1Ymxp
Yy5jcHAgKi8sCiAJCQkJQTU4NjBFNkIyMzBERTJFMTAwNDYxQUFFIC8qIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvblB1YmxpYy5oICovLAogCQkJCUE1ODYwRTZDMjMwREUyRTIwMDQ2MUFBRSAvKiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuY3BwICovLApAQCAtMjk3OTUsNyArMjk3OTAs
NiBAQAogCQkJCTdBNTQ4NTgwMTRFMDJENTEwMDZBRTA1QSAvKiBJbnNwZWN0b3JIaXN0b3J5Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNUI4MUNBRTFGQUE0NDYyMDAzN0QxRTYgLyogSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTIwRDYyOTI3MTI1MzY5MEIwMDA4
MTU0MyAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCUE1
ODQwRTFEMTg3Qjc0RDUwMDg0M0IxMCAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODYwRTZEMjMwREUzMDMwMDQ2MUFBRSAvKiBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25QdWJsaWMuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1ODYwRTZFMjMw
REUzMEEwMDQ2MUFBRSAvKiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25XZWJLaXQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1QjgxQ0FGMUZBQTQ0NjIwMDM3RDFFNiAvKiBJbnNwZWN0b3JMYXllclRy
ZWVBZ2VudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggOGQxMWZlOWM4YTNkMzk1YTZiZTQ1Mzk1NDA1OWZkY2Qy
Yzg3OTU5Ni4uZmM1MjhiZDJmZWYwZWJlMjdhMjU3MGUyNTNlZTIyMWJiODQzZTk2OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcApAQCAtODMsMTIg
KzgzLDEyIEBAIEpTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0CiAgICAgaWYgKCFjb250ZXh0KQogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llIGNvb2tpZSA9IEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKGNvbnRleHQs
IGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlv
bkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKIAogICAgIHJldHVybmVkRXhjZXB0
aW9uID0gbnVsbHB0cjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IEpTRXhlY1N0YXRlOjpwcm9maWxl
ZENhbGwoZXhlYywgSlNDOjpQcm9maWxpbmdSZWFzb246Ok90aGVyLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MsIHJldHVybmVkRXhjZXB0aW9uKTsKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvb2tpZSwgY29udGV4
dCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29udGV4
dCk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tRWxlbWVudEludGVyZmFjZS5jcHAKaW5kZXggMDE4NGE3ZDRm
Mzk1Y2EwYzU0MGQ0OGQ0ZTZkYjUwMDVlYzBhMDI1ZS4uOWQ1ZGEyYjY2NmVkYjBhMGIwNTg1NTUx
OTk5NDE4ZGUzMzE0NzIyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21FbGVtZW50SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2UuY3BwCkBAIC0xMjQsMTEgKzEyNCwxMSBAQCBz
dGF0aWMgUmVmUHRyPEVsZW1lbnQ+IGNvbnN0cnVjdEN1c3RvbUVsZW1lbnRTeW5jaHJvbm91c2x5
KERvY3VtZW50JiBkb2N1bWVudCwgVgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNFeGVjU3RhdGU6
Omluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdCgmZG9jdW1lbnQsIGNvbnN0cnVjdFR5cGUsIGNv
bnN0cnVjdERhdGEpOworICAgIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25Db25zdHJ1
Y3QoJmRvY3VtZW50LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhKTsKICAgICBNYXJrZWRB
cmd1bWVudEJ1ZmZlciBhcmdzOwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwog
ICAgIEpTVmFsdWUgbmV3RWxlbWVudCA9IGNvbnN0cnVjdCgmc3RhdGUsIGNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsICZkb2N1bWVudCk7CisgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oJmRvY3VtZW50KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgIEFTU0VSVCghbmV3RWxlbWVu
dC5pc0VtcHR5KCkpOwpAQCAtMTk5LDkgKzE5OSw5IEBAIHZvaWQgSlNDdXN0b21FbGVtZW50SW50
ZXJmYWNlOjp1cGdyYWRlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogCiAgICAgTWFya2VkQXJn
dW1lbnRCdWZmZXIgYXJnczsKICAgICBBU1NFUlQoIWFyZ3MuaGFzT3ZlcmZsb3dlZCgpKTsKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNFeGVjU3RhdGU6Omlu
c3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdChjb250ZXh0LCBjb25zdHJ1Y3RUeXBlLCBjb25zdHJ1
Y3REYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KGNv
bnRleHQsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEpOwogICAgIEpTVmFsdWUgcmV0dXJu
ZWRFbGVtZW50ID0gY29uc3RydWN0KHN0YXRlLCBtX2NvbnN0cnVjdG9yLmdldCgpLCBjb25zdHJ1
Y3RUeXBlLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb29raWUsIGNvbnRleHQpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uKGNvbnRleHQpOwogCiAgICAgbV9jb25zdHJ1Y3Rp
b25TdGFjay5yZW1vdmVMYXN0KCk7CiAKQEAgLTI0OCwxMiArMjQ4LDEyIEBAIHZvaWQgSlNDdXN0
b21FbGVtZW50SW50ZXJmYWNlOjppbnZva2VDYWxsYmFjayhFbGVtZW50JiBlbGVtZW50LCBKU09i
amVjdCogY2FsbGJhCiAgICAgYWRkQXJndW1lbnRzKHN0YXRlLCBnbG9iYWxPYmplY3QsIGFyZ3Mp
OwogICAgIFJFTEVBU0VfQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSlNFeGVjU3RhdGU6Omluc3RydW1l
bnRGdW5jdGlvbkNhbGwoY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNT
dGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbChjb250ZXh0LCBjYWxsVHlwZSwgY2FsbERhdGEp
OwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV4Y2VwdGlvbjsKICAgICBKU0V4ZWNT
dGF0ZTo6Y2FsbChzdGF0ZSwgY2FsbGJhY2ssIGNhbGxUeXBlLCBjYWxsRGF0YSwganNFbGVtZW50
LCBhcmdzLCBleGNlcHRpb24pOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRD
YWxsRnVuY3Rpb24oY29va2llLCBjb250ZXh0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZENhbGxGdW5jdGlvbihjb250ZXh0KTsKIAogICAgIGlmIChleGNlcHRpb24pCiAgICAg
ICAgIHJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwgZXhjZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXJyb3JIYW5kbGVyLmNwcAppbmRleCA0MjkxOTg5Y2VhMTdiYzIzMDUx
NmZiNGI4NWM3NzRmOGQxY2Q5ZmQ3Li4wMzI2NzM1ZGY1OTkwNDEwYWQxYThjNTcwMDFjNTA0Mjlk
NzcwYTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Vycm9ySGFu
ZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFcnJvckhhbmRsZXIu
Y3BwCkBAIC05OSwxMiArOTksMTIgQEAgdm9pZCBKU0Vycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwKICAgICAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgICAgICBWTUVudHJ5U2NvcGUgZW50cnlT
Y29wZSh2bSwgdm0uZW50cnlTY29wZSA/IHZtLmVudHJ5U2NvcGUtPmdsb2JhbE9iamVjdCgpIDog
Z2xvYmFsT2JqZWN0KTsKIAotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUg
Y29va2llID0gSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoJnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgICAgIEpTRXhlY1N0YXRlOjpp
bnN0cnVtZW50RnVuY3Rpb25DYWxsKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBjYWxsVHlwZSwg
Y2FsbERhdGEpOwogCiAgICAgICAgIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiBleGNlcHRpb247
CiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0V4ZWNTdGF0ZTo6cHJvZmlsZWRDYWxs
KGV4ZWMsIEpTQzo6UHJvZmlsaW5nUmVhc29uOjpPdGhlciwganNGdW5jdGlvbiwgY2FsbFR5cGUs
IGNhbGxEYXRhLCBnbG9iYWxPYmplY3QsIGFyZ3MsIGV4Y2VwdGlvbik7CiAKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCAmc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2Fs
bEZ1bmN0aW9uKCZzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKIAogICAgICAgICBnbG9iYWxPYmpl
Y3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggZjYyOTNiOGU0NDNkNjEwMjRhMTdk
YTI2MmFkOGE2YmU5NjdlNmEwNy4uY2RhOTQ0ZjkyMWRlYWEyYjhhNDI1ODdkZjI1MTMzZjIxMDk1
YzEzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3Rl
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIu
Y3BwCkBAIC0xNjgsMTMgKzE2OCwxMyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogCiAgICAg
Vk1FbnRyeVNjb3BlIGVudHJ5U2NvcGUodm0sIHZtLmVudHJ5U2NvcGUgPyB2bS5lbnRyeVNjb3Bl
LT5nbG9iYWxPYmplY3QoKSA6IGdsb2JhbE9iamVjdCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgY29va2llID0gSlNFeGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNh
bGwoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQsIGNhbGxUeXBlLCBjYWxsRGF0YSk7CisgICAgSlNF
eGVjU3RhdGU6Omluc3RydW1lbnRGdW5jdGlvbkNhbGwoJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IGNhbGxUeXBlLCBjYWxsRGF0YSk7CiAKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGhhbmRsZUV2
ZW50RnVuY3Rpb24gPT0ganNGdW5jdGlvbiA/IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBldmVu
dC5jdXJyZW50VGFyZ2V0KCkpIDoganNGdW5jdGlvbjsKICAgICBOYWtlZFB0cjxKU0M6OkV4Y2Vw
dGlvbj4gZXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmV0dmFsID0gSlNFeGVjU3RhdGU6OnByb2Zp
bGVkQ2FsbChleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGhhbmRsZUV2ZW50RnVu
Y3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzLCBleGNlcHRpb24pOwog
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDYWxsRnVuY3Rpb24oY29va2llLCAm
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRDYWxsRnVuY3Rpb24oJnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogCiAgICAgZ2xvYmFsT2Jq
ZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V4ZWNTdGF0ZS5oCmluZGV4IDI3YzU3MjFlMmQ4ZjAwOGEyY2I3MTlhYTM3ZmNhZDg2
NDNhMzBiNjAuLjU4MTk3NDc5OGQwYTRhYWI3ZmU4MDJmZTAxZTI2NzIwOTUwNGIwYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXhlY1N0YXRlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFeGVjU3RhdGUuaApAQCAtMzcsNyArMzcsNiBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZTsKIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIEpTRXhlY1N0YXRl
IHsKQEAgLTExOSw4ICsxMTgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXR1cm5WYWx1
ZTsKICAgICB9CiAKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGlu
c3RydW1lbnRGdW5jdGlvbkNhbGwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEpTQzo6Q2FsbFR5
cGUsIGNvbnN0IEpTQzo6Q2FsbERhdGEmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uQ29va2llIGluc3RydW1lbnRGdW5jdGlvbkNvbnN0cnVjdChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgSlNDOjpDb25zdHJ1Y3RUeXBlLCBjb25zdCBKU0M6OkNvbnN0cnVjdERhdGEmKTsK
KyAgICBzdGF0aWMgdm9pZCBpbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqLCBKU0M6OkNhbGxUeXBlLCBjb25zdCBKU0M6OkNhbGxEYXRhJik7CisgICAgc3RhdGlj
IHZvaWQgaW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBKU0M6OkNvbnN0cnVjdFR5cGUsIGNvbnN0IEpTQzo6Q29uc3RydWN0RGF0YSYpOwogCiBwcml2
YXRlOgogICAgIGV4cGxpY2l0IEpTRXhlY1N0YXRlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQpAQCAt
MTUwLDcgKzE0OSw3IEBAIHByaXZhdGU6CiAgICAgICAgIHRocmVhZEdsb2JhbERhdGEoKS5zZXRD
dXJyZW50U3RhdGUoc3RhdGUpOwogICAgIH0KIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5cGUs
IFR5cGUganNUeXBlLCB0eXBlbmFtZSBEYXRhVHlwZT4gc3RhdGljIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbkNvb2tpZSBpbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgVHlwZSwgY29uc3QgRGF0YVR5cGUmKTsKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBU
eXBlLCBUeXBlIGpzVHlwZSwgdHlwZW5hbWUgRGF0YVR5cGU+IHN0YXRpYyB2b2lkIGluc3RydW1l
bnRGdW5jdGlvbkludGVybmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBUeXBlLCBjb25zdCBE
YXRhVHlwZSYpOwogCiAgICAgSlNDOjpFeGVjU3RhdGUqIG1fcHJldmlvdXNTdGF0ZTsKICAgICBK
U0M6OkpTTG9ja0hvbGRlciBtX2xvY2s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V4ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFeGVjU3RhdGVJbnN0cnVtZW50YXRpb24uaAppbmRleCAxZjk1MmQxYjMyMjkz
YzE2MjViMTgyOWNjMjYxYzA3MThhYTQ0YzA4Li43Njc0Nzc3NTc4MzVlYWVmODRlMGY4YmE5OTVi
ZjE5OWIxZDFjNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V4
ZWNTdGF0ZUluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXhlY1N0YXRlSW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMzLDEwICszMywxMSBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlLCBUeXBlIGpzVHlwZSwgY2xh
c3MgRGF0YVR5cGU+Ci1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEpTRXhl
Y1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBUeXBlIGNhbGxUeXBlLCBjb25zdCBEYXRhVHlwZSYgY2FsbERhdGEpCitpbmxp
bmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWwoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCwgVHlwZSBjYWxsVHlwZSwgY29uc3QgRGF0YVR5cGUmIGNh
bGxEYXRhKQogewogICAgIGlmICghSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp0aW1lbGluZUFn
ZW50VHJhY2tpbmcoY29udGV4dCkpCi0gICAgICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoKTsKKyAgICAgICAgcmV0dXJuOworCiAgICAgU3RyaW5nIHJlc291cmNlTmFt
ZTsKICAgICBpbnQgbGluZU51bWJlciA9IDE7CiAgICAgaW50IGNvbHVtbk51bWJlciA9IDE7CkBA
IC00NiwxNyArNDcsMTcgQEAgaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBK
U0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uSW50ZXJuYWwoU2MKICAgICAgICAgY29sdW1u
TnVtYmVyID0gY2FsbERhdGEuanMuZnVuY3Rpb25FeGVjdXRhYmxlLT5zdGFydENvbHVtbigpOwog
ICAgIH0gZWxzZQogICAgICAgICByZXNvdXJjZU5hbWUgPSAidW5kZWZpbmVkIjsKLSAgICByZXR1
cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uKGNvbnRleHQsIHJl
c291cmNlTmFtZSwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxDYWxsRnVuY3Rpb24oY29udGV4dCwgcmVzb3VyY2VOYW1lLCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25DYWxsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q2FsbFR5cGUgdHlwZSwgY29uc3QgSlNDOjpDYWxs
RGF0YSYgZGF0YSkKK2lubGluZSB2b2lkIEpTRXhlY1N0YXRlOjppbnN0cnVtZW50RnVuY3Rpb25D
YWxsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q2FsbFR5cGUgdHlwZSwg
Y29uc3QgSlNDOjpDYWxsRGF0YSYgZGF0YSkKIHsKLSAgICByZXR1cm4gaW5zdHJ1bWVudEZ1bmN0
aW9uSW50ZXJuYWw8SlNDOjpDYWxsVHlwZSwgSlNDOjpDYWxsVHlwZTo6SlMsIEpTQzo6Q2FsbERh
dGE+KGNvbnRleHQsIHR5cGUsIGRhdGEpOworICAgIGluc3RydW1lbnRGdW5jdGlvbkludGVybmFs
PEpTQzo6Q2FsbFR5cGUsIEpTQzo6Q2FsbFR5cGU6OkpTLCBKU0M6OkNhbGxEYXRhPihjb250ZXh0
LCB0eXBlLCBkYXRhKTsKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q29uc3RydWN0VHlwZSB0eXBlLCBjb25zdCBKU0M6OkNv
bnN0cnVjdERhdGEmIGRhdGEpCitpbmxpbmUgdm9pZCBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1
bmN0aW9uQ29uc3RydWN0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIEpTQzo6Q29u
c3RydWN0VHlwZSB0eXBlLCBjb25zdCBKU0M6OkNvbnN0cnVjdERhdGEmIGRhdGEpCiB7Ci0gICAg
cmV0dXJuIGluc3RydW1lbnRGdW5jdGlvbkludGVybmFsPEpTQzo6Q29uc3RydWN0VHlwZSwgSlND
OjpDb25zdHJ1Y3RUeXBlOjpKUywgSlNDOjpDb25zdHJ1Y3REYXRhPihjb250ZXh0LCB0eXBlLCBk
YXRhKTsKKyAgICBpbnN0cnVtZW50RnVuY3Rpb25JbnRlcm5hbDxKU0M6OkNvbnN0cnVjdFR5cGUs
IEpTQzo6Q29uc3RydWN0VHlwZTo6SlMsIEpTQzo6Q29uc3RydWN0RGF0YT4oY29udGV4dCwgdHlw
ZSwgZGF0YSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGNjOTk5ZGFlYjI3ZGYwNjI1
NzhlMTgyOGE2MWY0MDA0MzllOGEyZWUuLmI2MzE1YTJhZjdkMWY5NTE4MzRiNzVmYzBlNmI5ODU0
MGQ3N2UzYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxl
ZEFjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcApAQCAtMTEyLDEyICsxMTIsMTIgQEAgdm9pZCBTY2hlZHVsZWRBY3Rpb246OmV4ZWN1
dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9uQ2FsbCgmY29udGV4dCwg
Y2FsbFR5cGUsIGNhbGxEYXRhKTsKKyAgICBKU0V4ZWNTdGF0ZTo6aW5zdHJ1bWVudEZ1bmN0aW9u
Q2FsbCgmY29udGV4dCwgY2FsbFR5cGUsIGNhbGxEYXRhKTsKIAogICAgIE5ha2VkUHRyPEpTQzo6
RXhjZXB0aW9uPiBleGNlcHRpb247CiAgICAgSlNFeGVjU3RhdGU6OnByb2ZpbGVkQ2FsbChleGVj
LCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIG1fZnVuY3Rpb24uZ2V0KCksIGNhbGxUeXBl
LCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmd1bWVudHMsIGV4Y2VwdGlvbik7CiAKLSAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb29raWUsICZjb250ZXh0KTsK
KyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbigmY29udGV4dCk7
CiAKICAgICBpZiAoZXhjZXB0aW9uKQogICAgICAgICByZXBvcnRFeGNlcHRpb24oZXhlYywgZXhj
ZXB0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxl
ci5jcHAKaW5kZXggNDg3ODRlMDgwYjlmNGQ2NzM3Mjg3YjYwOGJhOTFkYjk4ZDdkNDlkMi4uOWVk
MTBlZTg3YTE4MjQzYzgxOWUwN2ZjNTZjYzUyOWE4ZDFmNTJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEyNywxMiArMTI3LDEy
IEBAIEpTVmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbldvcmxkKGNvbnN0IFNjcmlw
dFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsIERPCiAKICAgICBSZWY8RnJhbWU+IHByb3RlY3Rvciht
X2ZyYW1lKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29raWUgPSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3Vy
Y2VVUkwsIHNvdXJjZUNvZGUuc3RhcnRMaW5lKCksIHNvdXJjZUNvZGUuc3RhcnRDb2x1bW4oKSk7
CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHQobV9mcmFt
ZSwgc291cmNlVVJMLCBzb3VyY2VDb2RlLnN0YXJ0TGluZSgpLCBzb3VyY2VDb2RlLnN0YXJ0Q29s
dW1uKCkpOwogCiAgICAgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRp
b247CiAgICAgSlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTRXhlY1N0YXRlOjpwcm9maWxlZEV2YWx1
YXRlKCZleGVjLCBKU0M6OlByb2ZpbGluZ1JlYXNvbjo6T3RoZXIsIGpzU291cmNlQ29kZSwgJnBy
b3h5LCBldmFsdWF0aW9uRXhjZXB0aW9uKTsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29va2llLCBtX2ZyYW1lKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUpOwogCiAgICAgaWYgKGV2YWx1
YXRpb25FeGNlcHRpb24pIHsKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKCZleGVjLCBldmFsdWF0
aW9uRXhjZXB0aW9uLCBzb3VyY2VDb2RlLmNhY2hlZFNjcmlwdCgpLCBleGNlcHRpb25EZXRhaWxz
KTsKQEAgLTIyMSwxMCArMjIxLDkgQEAgSlNDOjpKU1ZhbHVlIFNjcmlwdENvbnRyb2xsZXI6OmV2
YWx1YXRlTW9kdWxlKGNvbnN0IFVSTCYgc291cmNlVVJMLCBKU01vZHVsZVJlY28KIAogICAgIFJl
ZjxGcmFtZT4gcHJvdGVjdG9yKG1fZnJhbWUpOwogCi0gICAgYXV0byBjb29raWUgPSBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdChtX2ZyYW1lLCBzb3VyY2VVUkws
IGpzU291cmNlQ29kZS5maXJzdExpbmUoKS5vbmVCYXNlZEludCgpLCBqc1NvdXJjZUNvZGUuc3Rh
cnRDb2x1bW4oKS5vbmVCYXNlZEludCgpKTsKLQorICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbEV2YWx1YXRlU2NyaXB0KG1fZnJhbWUsIHNvdXJjZVVSTCwganNTb3VyY2VDb2RlLmZp
cnN0TGluZSgpLm9uZUJhc2VkSW50KCksIGpzU291cmNlQ29kZS5zdGFydENvbHVtbigpLm9uZUJh
c2VkSW50KCkpOwogICAgIGF1dG8gcmV0dXJuVmFsdWUgPSBtb2R1bGVSZWNvcmQuZXZhbHVhdGUo
JnN0YXRlKTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEV2YWx1YXRlU2NyaXB0
KGNvb2tpZSwgbV9mcmFtZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFs
dWF0ZVNjcmlwdChtX2ZyYW1lKTsKIAogICAgIHJldHVybiByZXR1cm5WYWx1ZTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCmluZGV4IDgzOGQxMDk0NmYyZDk1ZmU1ZGM5NDdkZTU1OThjMWRjNTQ1
YmUwMDMuLjAwNjEwZWM4YmQ2YmM3ZDg5Y2E4ODk2ZWVmMjM2NGI5M2M1OTVkZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcApAQCAtMTg5OCw3ICsxODk4LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVz
b2x2ZVN0eWxlKFJlc29sdmVTdHlsZVR5cGUgdHlwZSkKICAgICAgICAgZnJhbWVWaWV3LndpbGxS
ZWNhbGNTdHlsZSgpOwogICAgIH0KIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSBjb29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxl
KCp0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0
eWxlKCp0aGlzKTsKIAogICAgIGJvb2wgdXBkYXRlZENvbXBvc2l0aW5nTGF5ZXJzID0gZmFsc2U7
CiAgICAgewpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgdm9pZCBEb2N1bWVudDo6cmVzb2x2ZVN0eWxl
KFJlc29sdmVTdHlsZVR5cGUgdHlwZSkKICAgICAgICAgaW1wbGljaXRDbG9zZSgpOwogICAgIH0K
IAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZShjb29r
aWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZSgq
dGhpcyk7CiAKICAgICAvLyBTb21lIGFuaW1hdGVkIGltYWdlcyBtYXkgbm93IGJlIGluc2lkZSB0
aGUgdmlld3BvcnQgZHVlIHRvIHN0eWxlIHJlY2FsYywKICAgICAvLyByZXN1bWUgdGhlbSBpZiBu
ZWNlc3NhcnkgaWYgdGhlcmUgaXMgbm8gbGF5b3V0IHBlbmRpbmcuIE90aGVyd2lzZSwgd2UnbGwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDllNDcxNDQwYzg3ZWJmYWZhMzgxMDU3
ZGQ5OTNiZGEyZGZmOGRhMWEuLmZiMTdkM2NkNjc2ZThiZmU3OGJjMzUwMmU2YWQ3MTIzZTNjMzhj
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMjgyLDkgKzI4Miw4IEBAIHZv
aWQgRXZlbnRUYXJnZXQ6OmlubmVySW52b2tlRXZlbnRMaXN0ZW5lcnMoRXZlbnQmIGV2ZW50LCBF
dmVudExpc3RlbmVyVmVjdG9yIGxpCiAKICAgICBhdXRvJiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBib29sIGNvbnRleHRJc0RvY3VtZW50ID0gaXM8RG9jdW1lbnQ+
KGNvbnRleHQpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRGlzcGF0
Y2hFdmVudENvb2tpZTsKICAgICBpZiAoY29udGV4dElzRG9jdW1lbnQpCi0gICAgICAgIHdpbGxE
aXNwYXRjaEV2ZW50Q29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0
Y2hFdmVudChkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCksIGV2ZW50LCB0cnVlKTsKKyAgICAg
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudChkb3duY2FzdDxE
b2N1bWVudD4oY29udGV4dCksIGV2ZW50LCB0cnVlKTsKIAogICAgIGZvciAoYXV0byYgcmVnaXN0
ZXJlZExpc3RlbmVyIDogbGlzdGVuZXJzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShyZWdpc3Rl
cmVkTGlzdGVuZXItPndhc1JlbW92ZWQoKSkpCkBAIC0zMjMsNyArMzIyLDcgQEAgdm9pZCBFdmVu
dFRhcmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVycyhFdmVudCYgZXZlbnQsIEV2ZW50TGlz
dGVuZXJWZWN0b3IgbGkKICAgICB9CiAKICAgICBpZiAoY29udGV4dElzRG9jdW1lbnQpCi0gICAg
ICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudCh3aWxsRGlzcGF0
Y2hFdmVudENvb2tpZSwgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgpKTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWREaXNwYXRjaEV2ZW50KGRvd25jYXN0PERvY3VtZW50Pihj
b250ZXh0KSwgZXZlbnQuZGVmYXVsdFByZXZlbnRlZCgpKTsKIH0KIAogVmVjdG9yPEF0b21TdHJp
bmc+IEV2ZW50VGFyZ2V0OjpldmVudFR5cGVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9NdXRhdGlvbk9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NdXRhdGlvbk9i
c2VydmVyLmNwcAppbmRleCAxOTNmMjc4MDVhNWFlZDRiNjA2ZTljZWVhM2E5YTM1ZDhiMWU5OTMz
Li5jMGQ4MTY2ZmJjZDJjZDgwNjRlODFkMDViMWE1YTVhOGJmODMwODMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vTXV0YXRpb25PYnNlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL011dGF0aW9uT2JzZXJ2ZXIuY3BwCkBAIC0yNTAsOSArMjUwLDkgQEAgdm9pZCBNdXRh
dGlvbk9ic2VydmVyOjpkZWxpdmVyKCkKICAgICAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBjb29r
aWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFjaygq
Y29udGV4dCwgIk11dGF0aW9uT2JzZXJ2ZXIiX3MpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFjaygqY29udGV4dCwgIk11dGF0aW9uT2Jz
ZXJ2ZXIiX3MpOwogICAgICAgICBtX2NhbGxiYWNrLT5oYW5kbGVFdmVudCgqdGhpcywgcmVjb3Jk
cywgKnRoaXMpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVPYnNl
cnZlckNhbGxiYWNrKGNvb2tpZSk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKmNvbnRleHQpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCBj
N2Q2ZDNhZmViZTE1NDY4NGY4MWJmZmUwZmQwMmUyYzkwZThkOGQxLi4wMTRkNGNkOGFkYTM1Zjhj
NWUzYmUxZTRjZGQ2NTEyMTMzNGFjZjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMjEyLDkgKzIxMiwxMCBAQCB2b2lk
IFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcjo6c2VydmljZVJlcXVlc3RBbmltYXRpb25GcmFt
ZUNhbGxiYWNrcyhET01IaWdoUgogICAgICAgICBpZiAoY2FsbGJhY2stPm1fZmlyZWRPckNhbmNl
bGxlZCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBjYWxsYmFjay0+bV9maXJlZE9y
Q2FuY2VsbGVkID0gdHJ1ZTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IGNvb2tpZSA9IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFt
ZShwcm90ZWN0ZWREb2N1bWVudCwgY2FsbGJhY2stPm1faWQpOworCisgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmltYXRpb25GcmFtZShwcm90ZWN0ZWREb2N1bWVu
dCwgY2FsbGJhY2stPm1faWQpOwogICAgICAgICBjYWxsYmFjay0+aGFuZGxlRXZlbnQoaGlnaFJl
c05vd01zKTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0
aW9uRnJhbWUoY29va2llKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRG
aXJlQW5pbWF0aW9uRnJhbWUocHJvdGVjdGVkRG9jdW1lbnQpOwogICAgIH0KIAogICAgIC8vIFJl
bW92ZSBhbnkgY2FsbGJhY2tzIHdlIGZpcmVkIGZyb20gdGhlIGxpc3Qgb2YgcGVuZGluZyBjYWxs
YmFja3MuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwCmluZGV4IDgzZTM0MmVhMzgwY2RjZDE0MmVmZTNlNWIyNmRiOWRlYzc1
OWIwMzEuLmYwNTIxZmUxNGM3NTMzZGUxOTQwNWJlYzFiN2NlNDY1Njc0NjFmNTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCkBAIC0zODMsMzIgKzM4MywyNSBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRGlzcGF0Y2hQb3N0TWVzc2FnZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaQogICAgICAg
ICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaFBvc3RNZXNzYWdlKHRpbWVyKTsKIH0KIAot
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0Fn
ZW50cywgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSwgaW50IHNjcmlw
dENvbHVtbiwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3ZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsQ2FsbEZ1bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3Jp
cHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQogewotICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAg
ICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbENhbGxGdW5jdGlvbihzY3JpcHROYW1lLCBzY3JpcHRM
aW5lLCBzY3JpcHRDb2x1bW4sIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0
KSk7Ci0gICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7Ci0gICAg
fQotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGlu
Z0FnZW50cywgdGltZWxpbmVBZ2VudElkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENhbGxGdW5jdGlvbkltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiBjb29raWUsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCit2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0aW9uSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
cmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRDYWxsRnVuY3Rpb24oZnJhbWVGb3JTY3JpcHRF
eGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAotSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgRXZlbnQmIGV2ZW50LCBib29sIGhhc0V2ZW50TGlzdGVuZXJzKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2
ZW50JiBldmVudCwgYm9vbCBoYXNFdmVudExpc3RlbmVycykKIHsKLSAgICBpbnQgdGltZWxpbmVB
Z2VudElkID0gMDsKLSAgICBJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0g
aW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKTsKLSAg
ICBpZiAodGltZWxpbmVBZ2VudCAmJiBoYXNFdmVudExpc3RlbmVycykgewotICAgICAgICB0aW1l
bGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgZG9jdW1lbnQuZnJhbWUoKSk7Ci0g
ICAgICAgIHRpbWVsaW5lQWdlbnRJZCA9IHRpbWVsaW5lQWdlbnQtPmlkKCk7Ci0gICAgfQorICAg
IGlmICghaGFzRXZlbnRMaXN0ZW5lcnMpCisgICAgICAgIHJldHVybjsKIAotICAgIHJldHVybiBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZWxp
bmVBZ2VudElkKTsKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCisgICAgICAgIHRpbWVsaW5l
QWdlbnQtPndpbGxEaXNwYXRjaEV2ZW50KGV2ZW50LCBkb2N1bWVudC5mcmFtZSgpKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnQmIGV2ZW50LCBjb25zdCBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCkBAIC00MjksMjcgKzQyMiwyNCBAQCB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnRJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbgogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRIYW5k
bGVFdmVudCgpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0
Y2hFdmVudEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUs
IGJvb2wgZGVmYXVsdFByZXZlbnRlZCkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWREaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdl
bnRzLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5l
QWdlbnQqIHRpbWVsaW5lQWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKKyAg
ICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJ
bnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZERpc3Bh
dGNoRXZlbnQoZGVmYXVsdFByZXZlbnRlZCk7CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5k
b3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2
ZW50JiBldmVudCwgRE9NV2luZG93JiB3aW5kb3cpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cmIHdpbmRv
dykKIHsKLSAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2VudCAmJiB3aW5kb3cuaGFz
RXZlbnRMaXN0ZW5lcnMoZXZlbnQudHlwZSgpKSkgewotICAgICAgICB0aW1lbGluZUFnZW50LT53
aWxsRGlzcGF0Y2hFdmVudChldmVudCwgd2luZG93LmZyYW1lKCkpOwotICAgICAgICB0aW1lbGlu
ZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwotICAgIH0KKyAgICBpZiAoIXdpbmRvdy5o
YXNFdmVudExpc3RlbmVycyhldmVudC50eXBlKCkpKQorICAgICAgICByZXR1cm47CiAKLSAgICBy
ZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRpbmdBZ2VudHMs
IHRpbWVsaW5lQWdlbnRJZCk7CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQorICAgICAgICB0
aW1lbGluZUFnZW50LT53aWxsRGlzcGF0Y2hFdmVudChldmVudCwgd2luZG93LmZyYW1lKCkpOwog
fQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2lu
ZG93SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgYm9v
bCBkZWZhdWx0UHJldmVudGVkKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERp
c3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cywgYm9vbCBkZWZhdWx0UHJldmVudGVkKQogewotICAgIGlmIChJbnNwZWN0b3JUaW1l
bGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkp
CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRE
aXNwYXRjaEV2ZW50KGRlZmF1bHRQcmV2ZW50ZWQpOwogfQogCkBAIC00NTksNDMgKzQ0OSwzMyBA
QCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0
Y2hJbXBsKEluc3RydW1lbnRpbmdBZ2VudAogICAgICAgICBkb21BZ2VudC0+ZXZlbnREaWRSZXNl
dEFmdGVyRGlzcGF0Y2goZXZlbnQpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSwgY29uc3Qg
U3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRnJhbWUmIGZyYW1lLCBjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpCiB7Ci0gICAgaW50IHRpbWVs
aW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpKSB7CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50
LT53aWxsRXZhbHVhdGVTY3JpcHQodXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGZyYW1l
KTsKLSAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKLSAgICB9
Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0cnVtZW50aW5n
QWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSYgY29va2llLCBGcmFtZSYgZnJhbWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMsIEZyYW1lJiBmcmFtZSkKIHsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQorICAg
IGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRXZhbHVh
dGVTY3JpcHQoZnJhbWUpOwogfQogCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLndlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+
d2lsbERpc3BhdGNoQXN5bmNDYWxsKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OkFzeW5jQ2FsbFR5
cGU6OkRPTVRpbWVyLCB0aW1lcklkKTsKLQotICAgIGlmIChJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50KiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50KCkpCisgICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgZG9tRGVi
dWdnZXJBZ2VudC0+d2lsbEZpcmVUaW1lcihvbmVTaG90KTsKLQotICAgIGludCB0aW1lbGluZUFn
ZW50SWQgPSAwOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkg
eworICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFj
a2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2ls
bEZpcmVUaW1lcih0aW1lcklkLCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4
dCkpOwotICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwotICAg
IH0KLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRp
bmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYgY29va2llKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1l
ckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKIHsKLSAgICBp
ZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGNvb2tpZS5pbnN0cnVtZW50aW5nQWdlbnRzKCkt
PndlYkRlYnVnZ2VyQWdlbnQoKSkKKyAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMud2ViRGVidWdnZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dl
ckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2FsbCgpOwotICAgIGlmIChJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KiB0aW1lbGluZUFnZW50ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCisg
ICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5n
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJl
VGltZXIoKTsKIH0KIApAQCAtNTA1LDIyICs0ODUsMTcgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3QKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkSW52YWxpZGF0ZUxheW91dChmcmFtZSk7CiB9
CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIEZyYW1lJiBmcmFtZSkKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsTGF5
b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBGcmFtZSYg
ZnJhbWUpCiB7Ci0gICAgaW50IHRpbWVsaW5lQWdlbnRJZCA9IDA7Ci0gICAgaWYgKEluc3BlY3Rv
clRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNr
aW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgpKSB7CisgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2VudCgp
KQogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsTGF5b3V0KGZyYW1lKTsKLSAgICAgICAgdGlt
ZWxpbmVBZ2VudElkID0gdGltZWxpbmVBZ2VudC0+aWQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGlu
ZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0
SW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSwgUmVuZGVy
T2JqZWN0JiByb290KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZExheW91dElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgUmVuZGVyT2JqZWN0
JiByb290KQogewotICAgIGlmIChJbnNwZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50
ID0gcmV0cmlldmVUaW1lbGluZUFnZW50KGNvb2tpZSkpCisgICAgaWYgKGF1dG8qIHRpbWVsaW5l
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRMYXlvdXQocm9vdCk7Ci0KLSAgICBpZiAo
SW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50
cygpLT5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKKyAgICBpZiAoYXV0byogcGFnZUFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5pbnNwZWN0b3JQYWdlQWdlbnQoKSkKICAgICAgICAgcGFnZUFnZW50
LT5kaWRMYXlvdXQoKTsKIH0KIApAQCAtNTUxLDI2ICs1MjYsMTcgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZFBhaW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWcKICAgICAgICAgcGFnZUFnZW50LT5kaWRQYWludChyZW5kZXJlciwgcmVjdCk7CiB9
CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBEb2N1bWVudCYgZG9jdW1lbnQpCit2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFJlY2FsY3VsYXRlU3R5bGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnRpbmdBZ2VudHMsIERvY3VtZW50JiBkb2N1bWVudCkKIHsKLSAgICBpbnQgdGltZWxp
bmVBZ2VudElkID0gMDsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50
KCkpIHsKKyAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMu
dHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PndpbGxSZWNhbGN1bGF0ZVN0eWxlKGRvY3VtZW50LmZyYW1lKCkpOwotICAgICAgICB0aW1lbGlu
ZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwotICAgIH0KICAgICBpZiAoSW5zcGVjdG9y
TmV0d29ya0FnZW50KiBuZXR3b3JrQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmluc3BlY3Rv
ck5ldHdvcmtBZ2VudCgpKQogICAgICAgICBuZXR3b3JrQWdlbnQtPndpbGxSZWNhbGN1bGF0ZVN0
eWxlKCk7Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZShpbnN0cnVt
ZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkUmVjYWxjdWxhdGVTdHlsZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGlu
Z0FnZW50cykKIHsKLSAgICBpZiAoIWNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybjsK
LSAgICAKLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzID0gKmNv
b2tpZS5pbnN0cnVtZW50aW5nQWdlbnRzKCk7Ci0KLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVB
Z2VudCogdGltZWxpbmVBZ2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQorICAg
IGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkUmVjYWxj
dWxhdGVTdHlsZSgpOwogICAgIGlmIChJbnNwZWN0b3JOZXR3b3JrQWdlbnQqIG5ldHdvcmtBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuaW5zcGVjdG9yTmV0d29ya0FnZW50KCkpCiAgICAgICAg
IG5ldHdvcmtBZ2VudC0+ZGlkUmVjYWxjdWxhdGVTdHlsZSgpOwpAQCAtMTIwMSw0MyArMTE2Nywz
MyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJh
bWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZENh
bmNlbEFuaW1hdGlvbkZyYW1lKGNhbGxiYWNrSWQsIGRvY3VtZW50LmZyYW1lKCkpOwogfQogCi1J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50
aW5nQWdlbnRzLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmIGRvY3VtZW50KQordm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCBjYWxsYmFja0lkLCBEb2N1bWVu
dCYgZG9jdW1lbnQpCiB7CiAgICAgaWYgKGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1
bWVudGluZ0FnZW50cy5wYWdlRGVidWdnZXJBZ2VudCgpKQogICAgICAgICBwYWdlRGVidWdnZXJB
Z2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShjYWxsYmFja0lkKTsKLQogICAgIGlmIChhdXRv
KiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMucGFnZURPTURlYnVn
Z2VyQWdlbnQoKSkKICAgICAgICAgcGFnZURPTURlYnVnZ2VyQWdlbnQtPndpbGxGaXJlQW5pbWF0
aW9uRnJhbWUoKTsKLQotICAgIGludCB0aW1lbGluZUFnZW50SWQgPSAwOwotICAgIGlmIChJbnNw
ZWN0b3JUaW1lbGluZUFnZW50KiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50
cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdlbnQoKSkgeworICAgIGlmIChhdXRvKiB0aW1lbGlu
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5lQWdl
bnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVBbmltYXRpb25GcmFtZShjYWxs
YmFja0lkLCBkb2N1bWVudC5mcmFtZSgpKTsKLSAgICAgICAgdGltZWxpbmVBZ2VudElkID0gdGlt
ZWxpbmVBZ2VudC0+aWQoKTsKLSAgICB9Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbkNvb2tpZShpbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lbGluZUFnZW50SWQpOwogfQogCi12
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChj
b25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIGNvb2tpZSkKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKGF1dG8qIHdlYkRlYnVn
Z2VyQWdlbnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT53ZWJEZWJ1Z2dlckFnZW50
KCkpCisgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRz
LndlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0
Y2hBc3luY0NhbGwoKTsKLSAgICBpZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVB
Z2VudCA9IHJldHJpZXZlVGltZWxpbmVBZ2VudChjb29raWUpKQorICAgIGlmIChhdXRvKiB0aW1l
bGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ0luc3BlY3RvclRpbWVsaW5l
QWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7
CiB9CiAKLUluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgU3RyaW5nJiBjYWxsYmFja1R5cGUsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBjb25zdCBTdHJpbmcmIGNhbGxiYWNrVHlwZSwgU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkKIHsKLSAgICBpbnQgdGltZWxpbmVBZ2VudElkID0gMDsKLSAgICBp
ZiAoSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdB
Z2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGluZUFnZW50KCkpIHsKKyAgICBpZiAoYXV0byog
dGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1l
bGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlT2JzZXJ2ZXJDYWxs
YmFjayhjYWxsYmFja1R5cGUsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dCgmY29udGV4
dCkpOwotICAgICAgICB0aW1lbGluZUFnZW50SWQgPSB0aW1lbGluZUFnZW50LT5pZCgpOwotICAg
IH0KLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKGluc3RydW1lbnRp
bmdBZ2VudHMsIHRpbWVsaW5lQWdlbnRJZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBjb29raWUpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1l
bnRpbmdBZ2VudHMpCiB7Ci0gICAgaWYgKEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5l
QWdlbnQgPSByZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29va2llKSkKKyAgICBpZiAoYXV0byogdGlt
ZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdJbnNwZWN0b3JUaW1lbGlu
ZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVPYnNlcnZlckNhbGxiYWNr
KCk7CiB9CiAKQEAgLTEyNjEsMTcgKzEyMTcsNiBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6dW5yZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cwog
ICAgIH0KIH0KIAotSW5zcGVjdG9yVGltZWxpbmVBZ2VudCogSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpyZXRyaWV2ZVRpbWVsaW5lQWdlbnQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llJiBjb29raWUpCi17Ci0gICAgaWYgKCFjb29raWUuaXNWYWxpZCgpKQotICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKLQotICAgIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHRpbWVsaW5lQWdl
bnQgPSBjb29raWUuaW5zdHJ1bWVudGluZ0FnZW50cygpLT50cmFja2luZ0luc3BlY3RvclRpbWVs
aW5lQWdlbnQoKTsKLSAgICBpZiAodGltZWxpbmVBZ2VudCAmJiBjb29raWUuaGFzTWF0Y2hpbmdU
aW1lbGluZUFnZW50SWQodGltZWxpbmVBZ2VudC0+aWQoKSkpCi0gICAgICAgIHJldHVybiB0aW1l
bGluZUFnZW50OwotICAgIHJldHVybiBudWxscHRyOwotfQotCiBJbnN0cnVtZW50aW5nQWdlbnRz
KiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHNGb3JSZW5kZXJl
cihSZW5kZXJPYmplY3QmIHJlbmRlcmVyKQogewogICAgIHJldHVybiBpbnN0cnVtZW50aW5nQWdl
bnRzRm9yRnJhbWUocmVuZGVyZXIuZnJhbWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNTUxZjkwZWMxMDAyZWE4
NDM2ZTRjNjA4Y2U3M2ZhYmRhYTc2OTgxOS4uZmQxZWJhZWQxNGFiMmJmMTBmMjdmYmY1NDQ2M2Nk
MDkzYzVhYzM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaApAQCAtNDIsNyArNDIsNiBAQAogI2luY2x1ZGUgIkZvcm1EYXRh
LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5j
bHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uUHVibGljLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlN0b3JhZ2VBcmVhLmgiCkBAIC0xNTcsMzIgKzE1NiwzMiBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IHZvaWQgd2lsbERpc3BhdGNoUG9zdE1lc3NhZ2UoRnJhbWUmLCBUaW1lckJhc2UmKTsKICAgICBz
dGF0aWMgdm9pZCBkaWREaXNwYXRjaFBvc3RNZXNzYWdlKEZyYW1lJiwgVGltZXJCYXNlJik7CiAK
LSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxDYWxsRnVuY3Rp
b24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50
IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4pOwotICAgIHN0YXRpYyB2b2lkIGRpZENhbGxG
dW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmLCBTY3JpcHRFeGVj
dXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIHZvaWQgd2lsbENhbGxGdW5jdGlvbihTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGlu
ZSwgaW50IHNjcmlwdENvbHVtbik7CisgICAgc3RhdGljIHZvaWQgZGlkQ2FsbEZ1bmN0aW9uKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRBZGRFdmVudExpc3Rl
bmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsUmVtb3ZlRXZlbnRMaXN0
ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0
ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgc3RhdGljIGJvb2wgaXNFdmVudExpc3RlbmVyRGlz
YWJsZWQoRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImLCBib29sIGNhcHR1cmUpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUgd2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmLCBjb25zdCBFdmVudCYsIGJvb2wg
aGFzRXZlbnRMaXN0ZW5lcnMpOwotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoY29u
c3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9vbCBkZWZhdWx0UHJldmVudGVk
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2
ZW50JiwgYm9vbCBoYXNFdmVudExpc3RlbmVycyk7CisgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0
Y2hFdmVudChEb2N1bWVudCYsIGJvb2wgZGVmYXVsdFByZXZlbnRlZCk7CiAgICAgc3RhdGljIHZv
aWQgd2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFdmVudCYsIGNvbnN0
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2
ZW50JiwgRE9NV2luZG93Jik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2lu
ZG93KGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIGJvb2wgZGVmYXVsdFBy
ZXZlbnRlZCk7CisgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFt
ZSosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Jik7CisgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0
Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKICAgICBzdGF0
aWMgdm9pZCBldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBFdmVudCYpOwotICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbEV2YWx1YXRlU2NyaXB0KEZy
YW1lJiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVy
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChjb25zdCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUmLCBGcmFtZSYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25Db29raWUgd2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50
IHRpbWVySWQsIGJvb2wgb25lU2hvdCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKGNv
bnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRpYyB2b2lkIHdp
bGxFdmFsdWF0ZVNjcmlwdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQo
RnJhbWUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRG
aXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZElu
dmFsaWRhdGVMYXlvdXQoRnJhbWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llIHdpbGxMYXlvdXQoRnJhbWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQo
Y29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgUmVuZGVyT2JqZWN0Jik7Cisg
ICAgc3RhdGljIHZvaWQgd2lsbExheW91dChGcmFtZSYpOworICAgIHN0YXRpYyB2b2lkIGRpZExh
eW91dChGcmFtZSYsIFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbChQ
YWdlJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbENvbXBvc2l0ZShGcmFtZSYpOwogICAgIHN0YXRp
YyB2b2lkIGRpZENvbXBvc2l0ZShGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQYWludChS
ZW5kZXJPYmplY3QmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRQYWludChSZW5kZXJPYmplY3QmLCBj
b25zdCBMYXlvdXRSZWN0Jik7Ci0gICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSB3aWxsUmVjYWxjdWxhdGVTdHlsZShEb2N1bWVudCYpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2FsY3VsYXRlU3R5bGUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7
CisgICAgc3RhdGljIHZvaWQgd2lsbFJlY2FsY3VsYXRlU3R5bGUoRG9jdW1lbnQmKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50Jik7CiAgICAgc3RhdGljIHZv
aWQgZGlkU2NoZWR1bGVTdHlsZVJlY2FsY3VsYXRpb24oRG9jdW1lbnQmKTsKICAgICBzdGF0aWMg
dm9pZCBhcHBseVVzZXJBZ2VudE92ZXJyaWRlKEZyYW1lJiwgU3RyaW5nJik7CiAgICAgc3RhdGlj
IHZvaWQgYXBwbHlFbXVsYXRlZE1lZGlhKEZyYW1lJiwgU3RyaW5nJik7CkBAIC0yNTQsMTEgKzI1
MywxMSBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJh
bWUoRG9jdW1lbnQmLCBpbnQgY2FsbGJhY2tJZCk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2FuY2Vs
QW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmLCBpbnQgY2FsbGJhY2tJZCk7Ci0gICAgc3RhdGljIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3Vt
ZW50JiwgaW50IGNhbGxiYWNrSWQpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25G
cmFtZShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMg
dm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKERvY3VtZW50JiwgaW50IGNhbGxiYWNrSWQpOwor
ICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVudCYpOwogCi0gICAg
c3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZU9ic2VydmVyQ2Fs
bGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgY2FsbGJhY2tUeXBl
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjayhjb25zdCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRmlyZU9ic2Vy
dmVyQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgY2FsbGJh
Y2tUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjayhTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik7CiAKICAgICBzdGF0aWMgdm9pZCBkaWRPcGVuRGF0YWJhc2UoRGF0
YWJhc2UmKTsKIApAQCAtMzY3LDMyICszNjYsMzIgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9p
ZCB3aWxsRGlzcGF0Y2hQb3N0TWVzc2FnZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0
IFRpbWVyQmFzZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoUG9zdE1lc3NhZ2VJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBUaW1lckJhc2UmKTsKIAotICAgIHN0YXRpYyBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGNvbnN0IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUs
IGludCBzY3JpcHRDb2x1bW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRDYWxsRnVuY3Rpb25JbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsQ2Fs
bEZ1bmN0aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRO
YW1lLCBpbnQgc2NyaXB0TGluZSwgaW50IHNjcmlwdENvbHVtbiwgU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCopOworICAgIHN0YXRpYyB2b2lkIGRpZENhbGxGdW5jdGlvbkltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKICAgICBzdGF0aWMgdm9pZCBkaWRB
ZGRFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBj
b25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUp
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxSZW1vdmVFdmVudExpc3RlbmVySW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHN0YXRpYyBib29sIGlzRXZlbnRMaXN0
ZW5lckRpc2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwot
ICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbERpc3BhdGNoRXZl
bnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9v
bCBoYXNFdmVudExpc3RlbmVycyk7CisgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYsIGNvbnN0IEV2ZW50JiwgYm9vbCBo
YXNFdmVudExpc3RlbmVycyk7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRsZUV2ZW50SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ciYpOwogICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKLSAgICBz
dGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdpbGxEaXNwYXRjaEV2ZW50T25X
aW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyYp
OwotICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoY29uc3QgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiwgYm9vbCBkZWZhdWx0UHJldmVudGVkKTsKKyAg
ICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
Ym9vbCBkZWZhdWx0UHJldmVudGVkKTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVu
dE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmLCBET01XaW5k
b3cmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBib29sIGRlZmF1bHRQcmV2ZW50ZWQpOwogICAgIHN0YXRpYyB2b2lk
IGV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNoSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgRXZlbnQmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIHdp
bGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJiwgY29uc3Qg
U3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKLSAgICBzdGF0
aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llJiwgRnJhbWUmKTsKLSAgICBzdGF0aWMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llIHdpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJ
ZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRmlyZVRpbWVySW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUm
KTsKKyAgICBzdGF0aWMgdm9pZCB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBGcmFtZSYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNv
bHVtbk51bWJlcik7CisgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxGaXJlVGltZXJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91
dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7Ci0gICAgc3RhdGljIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgRnJhbWUmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKGNvbnN0IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSYsIFJlbmRlck9iamVjdCYpOworICAgIHN0YXRpYyB2b2lk
IHdpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOworICAgIHN0YXRp
YyB2b2lkIGRpZExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCYp
OwogICAgIHN0YXRpYyB2b2lkIGRpZFNjcm9sbEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxDb21wb3NpdGVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBG
cmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENvbXBvc2l0ZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxQYWludEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIFJlbmRlck9iamVjdCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZFBhaW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0JiwgY29uc3QgTGF5b3V0UmVjdCYpOwotICAgIHN0
YXRpYyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgd2lsbFJlY2FsY3VsYXRlU3R5bGVJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZFJlY2FsY3VsYXRlU3R5bGVJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tp
ZSYpOworICAgIHN0YXRpYyB2b2lkIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRG9jdW1lbnQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRSZWNhbGN1bGF0ZVN0
eWxlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CiAgICAgc3RhdGljIHZvaWQgZGlkU2NoZWR1
bGVTdHlsZVJlY2FsY3VsYXRpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYp
OwogICAgIHN0YXRpYyB2b2lkIGFwcGx5VXNlckFnZW50T3ZlcnJpZGVJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmLCBTdHJpbmcmKTsKICAgICBzdGF0aWMgdm9pZCBhcHBseUVtdWxhdGVkTWVkaWFJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBTdHJpbmcmKTsKQEAgLTQ0NSwxMSArNDQ0LDExIEBA
IHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZXF1ZXN0QW5pbWF0aW9uRnJhbWVJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgY2FsbGJhY2tJZCwgRG9jdW1lbnQmKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRDYW5jZWxBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUgd2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYpOwotICAgIHN0YXRpYyB2b2lkIGRp
ZEZpcmVBbmltYXRpb25GcmFtZUltcGwoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJik7CisgICAgc3RhdGljIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGludCBjYWxsYmFja0lkLCBEb2N1bWVudCYpOworICAgIHN0YXRpYyB2
b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogCi0g
ICAgc3RhdGljIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSB3aWxsRmlyZU9ic2VydmVy
Q2FsbGJhY2tJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBTdHJpbmcmLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlyZU9ic2VydmVyQ2FsbGJh
Y2tJbXBsKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYpOworICAgIHN0YXRp
YyB2b2lkIHdpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IGNvbnN0IFN0cmluZyYsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogCiAg
ICAgc3RhdGljIHZvaWQgZGlkT3BlbkRhdGFiYXNlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
RGF0YWJhc2UmKTsKIApAQCAtNTA5LDggKzUwOCw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIElu
c3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChEb2N1bWVu
dCopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
Rm9yUmVuZGVyZXIoUmVuZGVyT2JqZWN0Jik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHNGb3JXb3JrZXJHbG9iYWxTY29wZShXb3JrZXJHbG9iYWxT
Y29wZSopOwotCi0gICAgc3RhdGljIEluc3BlY3RvclRpbWVsaW5lQWdlbnQqIHJldHJpZXZlVGlt
ZWxpbmVBZ2VudChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmKTsKIH07CiAK
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2xlYXJXaW5kb3dPYmpl
Y3RJbldvcmxkKEZyYW1lJiBmcmFtZSwgRE9NV3JhcHBlcldvcmxkJiB3b3JsZCkKQEAgLTgxOCwz
NCArODE1LDMyIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hQb3N0TWVzc2FnZShGcmFtZSYgZnJhbWUsIFRpbWVyCiAgICAgICAgIGRpZERpc3BhdGNo
UG9zdE1lc3NhZ2VJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lcik7CiB9CiAKLWlubGlu
ZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsQ2FsbEZ1bmN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0
IFN0cmluZyYgc2NyaXB0TmFtZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4pCi17
Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bkNvb2tpZSgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBy
ZXR1cm4gd2lsbENhbGxGdW5jdGlvbkltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHNjcmlwdE5h
bWUsIHNjcmlwdExpbmUsIHNjcmlwdENvbHVtbiwgY29udGV4dCk7Ci0gICAgcmV0dXJuIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotfQotCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZENhbGxGdW5jdGlvbihjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUmIGNvb2tpZSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK2lu
bGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbENhbGxGdW5jdGlvbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGlu
dCBzY3JpcHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05P
X0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUuaXNWYWxpZCgpKQotICAgICAgICBk
aWRDYWxsRnVuY3Rpb25JbXBsKGNvb2tpZSwgY29udGV4dCk7CisgICAgaWYgKGF1dG8qIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkK
KyAgICAgICAgd2lsbENhbGxGdW5jdGlvbkltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHNjcmlw
dE5hbWUsIHNjcmlwdExpbmUsIHNjcmlwdENvbHVtbiwgY29udGV4dCk7CiB9CiAKLWlubGluZSBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IEV2ZW50JiBldmVudCwg
Ym9vbCBoYXNFdmVudExpc3RlbmVycykKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwotICAgIGlmIChJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRv
Y3VtZW50KGRvY3VtZW50KSkKLSAgICAgICAgcmV0dXJuIHdpbGxEaXNwYXRjaEV2ZW50SW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgZG9jdW1lbnQsIGV2ZW50LCBoYXNFdmVudExpc3RlbmVycyk7
Ci0gICAgcmV0dXJuIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotfQotCi1pbmxp
bmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnQoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIGJvb2wgZGVmYXVsdFByZXZl
bnRlZCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FsbEZ1bmN0
aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiB7CiAgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAg
ICAgIGRpZERpc3BhdGNoRXZlbnRJbXBsKGNvb2tpZSwgZGVmYXVsdFByZXZlbnRlZCk7CisgICAg
aWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29u
dGV4dChjb250ZXh0KSkKKyAgICAgICAgZGlkQ2FsbEZ1bmN0aW9uSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgY29udGV4dCk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFdmVudCYg
ZXZlbnQsIGJvb2wgaGFzRXZlbnRMaXN0ZW5lcnMpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3aWxsRGlz
cGF0Y2hFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50LCBldmVudCwgaGFz
RXZlbnRMaXN0ZW5lcnMpOworfQorCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIGRlZmF1bHRQcmV2
ZW50ZWQpCit7CisgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAg
aWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9j
dW1lbnQoZG9jdW1lbnQpKQorICAgICAgICBkaWREaXNwYXRjaEV2ZW50SW1wbCgqaW5zdHJ1bWVu
dGluZ0FnZW50cywgZGVmYXVsdFByZXZlbnRlZCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxp
c3RlbmVyKQpAQCAtODYyLDE5ICs4NTcsMTggQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb24KICAg
ICAgICAgcmV0dXJuIGRpZEhhbmRsZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CiB9
CiAKLWlubGluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3Qg
RXZlbnQmIGV2ZW50LCBET01XaW5kb3cmIHdpbmRvdykKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9O
T19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCkpOwotICAgIGlmIChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckZyYW1lKGZyYW1lKSkKLSAgICAgICAgcmV0dXJuIHdpbGxEaXNwYXRjaEV2ZW50T25X
aW5kb3dJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBldmVudCwgd2luZG93KTsKLSAgICByZXR1
cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KGNvbnN0IElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2llLCBib29sIGRlZmF1bHRQcmV2ZW50
ZWQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2
ZW50T25XaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdpbmRvdyYg
d2luZG93KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAg
IGlmIChjb29raWUuaXNWYWxpZCgpKQotICAgICAgICBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJ
bXBsKGNvb2tpZSwgZGVmYXVsdFByZXZlbnRlZCk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQorICAgICAgICB3
aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXZlbnQs
IHdpbmRvdyk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiBmcmFtZSwgYm9vbCBkZWZhdWx0UHJldmVudGVk
KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChh
dXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZyYW1lKGZy
YW1lKSkKKyAgICAgICAgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgZGVmYXVsdFByZXZlbnRlZCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goY29uc3QgRXZlbnQmIGV2
ZW50KQpAQCAtODg5LDM0ICs4ODMsMzIgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBFdmVudCYgZXYKICAgICAg
ICAgcmV0dXJuIGV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNoSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZXZlbnQpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiBmcmFt
ZSwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQot
ewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUpKQotICAgICAgICByZXR1
cm4gd2lsbEV2YWx1YXRlU2NyaXB0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUsIHVy
bCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKTsKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRXZhbHVhdGVTY3JpcHQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29v
a2llJiBjb29raWUsIEZyYW1lJiBmcmFtZSkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChjb29raWUuaXNWYWxpZCgpKQotICAg
ICAgICBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoY29va2llLCBmcmFtZSk7CisgICAgaWYgKGF1dG8q
IGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRnJhbWUoZnJhbWUp
KQorICAgICAgICB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBm
cmFtZSwgdXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwogfQogCi1pbmxpbmUgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZp
cmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBpbnQgdGltZXJJZCwgYm9v
bCBvbmVTaG90KQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUoKSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGlu
c3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0
KSkKLSAgICAgICAgcmV0dXJuIHdpbGxGaXJlVGltZXJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRz
LCB0aW1lcklkLCBvbmVTaG90LCBjb250ZXh0KTsKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYg
Y29va2llKQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRFdmFsdWF0
ZVNjcmlwdChGcmFtZSYgZnJhbWUpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRT
KHZvaWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZEZpcmVUaW1l
ckltcGwoY29va2llKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIGRpZEV2YWx1YXRlU2NyaXB0
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOworfQorCitpbmxpbmUgdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCkKK3sKKyAgICBGQVNUX1JFVFVS
Tl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0Fn
ZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQorICAgICAgICB3
aWxsRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgb25lU2hvdCwg
Y29udGV4dCk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKKyAgICAg
ICAgZGlkRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CiB9CiAKIGlubGluZSB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYg
ZnJhbWUpCkBAIC05MjYsMTkgKzkxOCwxOCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlvdXQoRnJhbWUmIGZyYW1lKQogICAgICAgICBkaWRJ
bnZhbGlkYXRlTGF5b3V0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZnJhbWUpOwogfQogCi1p
bmxpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbExheW91dChGcmFtZSYgZnJhbWUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKLSAgICBpZiAoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JGcmFtZShmcmFtZSkpCi0gICAgICAgIHJldHVybiB3aWxsTGF5b3V0SW1wbCgqaW5zdHJ1
bWVudGluZ0FnZW50cywgZnJhbWUpOwotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b25Db29raWUoKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRMYXlvdXQoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUsIFJl
bmRlck9iamVjdCYgcm9vdCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbExheW91dChGcmFtZSYgZnJhbWUpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZExheW91
dEltcGwoY29va2llLCByb290KTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9
IGluc3RydW1lbnRpbmdBZ2VudHNGb3JGcmFtZShmcmFtZSkpCisgICAgICAgIHdpbGxMYXlvdXRJ
bXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBmcmFtZSk7Cit9CisKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkTGF5b3V0KEZyYW1lJiBmcmFtZSwgUmVuZGVyT2JqZWN0
JiByb290KQoreworICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAg
IGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckZy
YW1lKGZyYW1lKSkKKyAgICAgICAgZGlkTGF5b3V0SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywg
cm9vdCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2Ny
b2xsKFBhZ2UmIHBhZ2UpCkBAIC05NzUsMTkgKzk2NiwxOCBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZFBhaW50KFJlbmRlck9iamVjdCYgcmVuZGVyZXIsIGNvbnN0
IExheQogICAgICAgICBkaWRQYWludEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHJlbmRlcmVy
LCByZWN0KTsKIH0KIAotaW5saW5lIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxSZWNhbGN1bGF0ZVN0eWxlKERvY3VtZW50JiBkb2N1
bWVudCkKLXsKLSAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFMoSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llKCkpOwotICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkK
LSAgICAgICAgcmV0dXJuIHdpbGxSZWNhbGN1bGF0ZVN0eWxlSW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZG9jdW1lbnQpOwotICAgIHJldHVybiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUoKTsKLX0KLQotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNh
bGN1bGF0ZVN0eWxlKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2ll
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsUmVjYWxjdWxhdGVT
dHlsZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRF
TkRTKHZvaWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZFJlY2Fs
Y3VsYXRlU3R5bGVJbXBsKGNvb2tpZSk7CisgICAgaWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2Vu
dHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQorICAgICAgICB3
aWxsUmVjYWxjdWxhdGVTdHlsZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGRvY3VtZW50KTsK
K30KKworaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRSZWNhbGN1bGF0
ZVN0eWxlKERvY3VtZW50JiBkb2N1bWVudCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9O
VEVORFModm9pZCgpKTsKKyAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChkb2N1bWVudCkpCisgICAgICAgIGRpZFJlY2FsY3Vs
YXRlU3R5bGVJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKIH0KIAogaW5saW5lIHZvaWQgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVN0eWxlUmVjYWxjdWxhdGlvbihEb2N1
bWVudCYgZG9jdW1lbnQpCkBAIC0xNTc4LDM0ICsxNTY4LDMyIEBAIGlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ2FuY2VsQW5pbWF0aW9uRnJhbWUoRG9jdW1lbnQmIGRv
Y3VtZW50CiAgICAgICAgIGRpZENhbmNlbEFuaW1hdGlvbkZyYW1lSW1wbCgqaW5zdHJ1bWVudGlu
Z0FnZW50cywgY2FsbGJhY2tJZCwgZG9jdW1lbnQpOwogfQogCi1pbmxpbmUgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVBbmlt
YXRpb25GcmFtZShEb2N1bWVudCYgZG9jdW1lbnQsIGludCBjYWxsYmFja0lkKQotewotICAgIEZB
U1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyhJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUo
KSk7Ci0gICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBp
bnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZG9jdW1lbnQpKQotICAgICAgICByZXR1cm4g
d2lsbEZpcmVBbmltYXRpb25GcmFtZUltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNhbGxiYWNr
SWQsIGRvY3VtZW50KTsKLSAgICByZXR1cm4gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2ll
KCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFu
aW1hdGlvbkZyYW1lKGNvbnN0IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSYgY29va2ll
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZUFuaW1hdGlv
bkZyYW1lKERvY3VtZW50JiBkb2N1bWVudCwgaW50IGNhbGxiYWNrSWQpCiB7CiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGNvb2tpZS5pc1ZhbGlkKCkp
Ci0gICAgICAgIGRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoY29va2llKTsKKyAgICBpZiAoYXV0
byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JEb2N1bWVudChk
b2N1bWVudCkpCisgICAgICAgIHdpbGxGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKCppbnN0cnVtZW50
aW5nQWdlbnRzLCBjYWxsYmFja0lkLCBkb2N1bWVudCk7CiB9CiAKLWlubGluZSBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb25Db29raWUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZU9i
c2VydmVyQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3Ry
aW5nJiBjYWxsYmFja1R5cGUpCi17Ci0gICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpKTsKLSAgICBpZiAoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0
KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gd2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbCgq
aW5zdHJ1bWVudGluZ0FnZW50cywgY2FsbGJhY2tUeXBlLCBjb250ZXh0KTsKLSAgICByZXR1cm4g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llKCk7Ci19Ci0KLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soY29uc3QgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBjb29raWUpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZShEb2N1bWVudCYgZG9jdW1lbnQp
CiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGNv
b2tpZS5pc1ZhbGlkKCkpCi0gICAgICAgIGRpZEZpcmVPYnNlcnZlckNhbGxiYWNrSW1wbChjb29r
aWUpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0Fn
ZW50c0ZvckRvY3VtZW50KGRvY3VtZW50KSkKKyAgICAgICAgZGlkRmlyZUFuaW1hdGlvbkZyYW1l
SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgY2FsbGJhY2tUeXBlKQoreworICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOworICAgIGlmIChhdXRvKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCisgICAg
ICAgIHdpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGNh
bGxiYWNrVHlwZSwgY29udGV4dCk7Cit9CisKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKK3sKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKKyAg
ICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JD
b250ZXh0KGNvbnRleHQpKQorICAgICAgICBkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFja0ltcGwoKmlu
c3RydW1lbnRpbmdBZ2VudHMpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmxheWVyVHJlZURpZENoYW5nZShQYWdlKiBwYWdlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llLmNw
cApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjQwMzQwZDRhYjgwMzllZWE2N2VlOTBj
MmY0NzY5MzlhOGU5NTBlMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Q29va2llLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0qIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotKgotKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotKiBtZXQ6Ci0qCi0qICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQotKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCi0qIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSogZGlzdHJpYnV0aW9uLgotKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0qIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCi0qIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVu
IHBlcm1pc3Npb24uCi0qCi0qIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSogTElNSVRFRCBUTywg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
Ci0qIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCi0qIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAotKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb25Db29raWUuaCIKLQotI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU6
Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNvb2tpZSgpCi0gICAgOiBtX3RpbWVsaW5lQWdlbnRJ
ZCgwKQotewotfQotCi1JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU6Okluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbkNvb2tpZShJbnN0cnVtZW50aW5nQWdlbnRzJiBhZ2VudHMsIGludCB0aW1l
bGluZUFnZW50SWQpCi0gICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoJmFnZW50cykKLSAgICAs
IG1fdGltZWxpbmVBZ2VudElkKHRpbWVsaW5lQWdlbnRJZCkKLXsKLX0KLQotSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uQ29va2llOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUoY29uc3Qg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBvdGhlcikKLSAgICA6IG1faW5zdHJ1bWVu
dGluZ0FnZW50cyhvdGhlci5tX2luc3RydW1lbnRpbmdBZ2VudHMpCi0gICAgLCBtX3RpbWVsaW5l
QWdlbnRJZChvdGhlci5tX3RpbWVsaW5lQWdlbnRJZCkKLXsKLX0KLQotSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llJiBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU6Om9wZXJhdG9y
PShjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUmIG90aGVyKQotewotICAgIGlm
ICh0aGlzICE9ICZvdGhlcikgewotICAgICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMgPSBvdGhl
ci5tX2luc3RydW1lbnRpbmdBZ2VudHM7Ci0gICAgICAgIG1fdGltZWxpbmVBZ2VudElkID0gb3Ro
ZXIubV90aW1lbGluZUFnZW50SWQ7Ci0gICAgfQotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi1J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWU6On5JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25D
b29raWUoKSA9IGRlZmF1bHQ7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29r
aWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA0Y2Q5NGRjN2I1MDQzMDhkMzBi
ODQxNTJkY2MwNjNhNjI5MThkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uQ29va2llLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0vKgotKiBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoKLSogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0qIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSogbWV0OgotKgotKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0q
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0qIGRpc3RyaWJ1dGlvbi4KLSogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotKgotKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0qICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0qIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0qIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0qIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0qLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotCi1jbGFz
cyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgewotcHVibGljOgotICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbkNvb2tpZSgpOwotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZShJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50KTsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb25Db29raWUoY29uc3QgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llJiBvcGVyYXRvcj0oY29uc3QgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uQ29va2llJik7Ci0gICAgfkluc3BlY3Rvckluc3RydW1lbnRhdGlvbkNv
b2tpZSgpOwotCi0gICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gISFtX2luc3RydW1l
bnRpbmdBZ2VudHM7IH0KLSAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzKCkgY29uc3QgeyByZXR1cm4gbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpOyB9Ci0gICAg
Ym9vbCBoYXNNYXRjaGluZ1RpbWVsaW5lQWdlbnRJZChpbnQgaWQpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZWxpbmVBZ2VudElkID09IGlkOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEluc3RydW1l
bnRpbmdBZ2VudHM+IG1faW5zdHJ1bWVudGluZ0FnZW50czsKLSAgICBpbnQgbV90aW1lbGluZUFn
ZW50SWQ7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApp
bmRleCA0Mzc4MzM2NTRiZWI4OGJiOWI4YTQ2YTk5Y2ZhODljNWUzODRjNjYyLi5iOTIxOTQ0NWI4
MmUzM2VlNmRiYTgyYjQ4YTA4ZGMyNzVkYmE4ZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKQEAg
LTI1Miw3ICsyNTIsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3Rv
cCgpCiAgICAgICAgIGRpZENvbXBsZXRlQ3VycmVudFJlY29yZChtX3JlY29yZFN0YWNrLmxhc3Qo
KS50eXBlKTsKICNlbmRpZgogCi0gICAgY2xlYXJSZWNvcmRTdGFjaygpOworICAgIG1fcmVjb3Jk
U3RhY2suY2xlYXIoKTsKIAogICAgIG1fdHJhY2tpbmcgPSBmYWxzZTsKICAgICBtX3N0YXJ0ZWRD
b21wb3NpdGUgPSBmYWxzZTsKQEAgLTMzNyw2ICszMzcsOSBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OndpbGxEaXNwYXRjaEV2ZW50KGNvbnN0IEV2ZW50JiBldmVudCwgRnJhbWUqIGZy
YW1lKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZERpc3BhdGNoRXZlbnQoYm9v
bCBkZWZhdWx0UHJldmVudGVkKQogeworICAgIGlmIChtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkK
KyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byYgZW50cnkgPSBtX3JlY29yZFN0YWNrLmxhc3Qo
KTsKICAgICBBU1NFUlQoZW50cnkudHlwZSA9PSBUaW1lbGluZVJlY29yZFR5cGU6OkV2ZW50RGlz
cGF0Y2gpOwogICAgIGVudHJ5LmRhdGEtPnNldEJvb2xlYW4oImRlZmF1bHRQcmV2ZW50ZWQiX3Ms
IGRlZmF1bHRQcmV2ZW50ZWQpOwpAQCAtNDA1LDYgKzQwOCw5IEBAIHZvaWQgSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6d2lsbFBhaW50KEZyYW1lJiBmcmFtZSkKIAogdm9pZCBJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjpkaWRQYWludChSZW5kZXJPYmplY3QmIHJlbmRlcmVyLCBjb25zdCBMYXlvdXRS
ZWN0JiBjbGlwUmVjdCkKIHsKKyAgICBpZiAobV9yZWNvcmRTdGFjay5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKwogICAgIFRpbWVsaW5lUmVjb3JkRW50cnkmIGVudHJ5ID0gbV9yZWNvcmRT
dGFjay5sYXN0KCk7CiAgICAgQVNTRVJUKGVudHJ5LnR5cGUgPT0gVGltZWxpbmVSZWNvcmRUeXBl
OjpQYWludCk7CiAgICAgRmxvYXRRdWFkIHF1YWQ7CkBAIC03OTUsMTIgKzgwMSw2IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6cHVzaEN1cnJlbnRSZWNvcmQoUmVmUHRyPEpTT046Ok9i
amVjdD4mJiBkYXRhLCBUaW1lCiAgICAgcHVzaEN1cnJlbnRSZWNvcmQoY3JlYXRlUmVjb3JkRW50
cnkoV1RGTW92ZShkYXRhKSwgdHlwZSwgY2FwdHVyZUNhbGxTdGFjaywgZnJhbWUpKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpjbGVhclJlY29yZFN0YWNrKCkKLXsKLSAgICBt
X3JlY29yZFN0YWNrLmNsZWFyKCk7Ci0gICAgbV9pZCsrOwotfQotCiB2b2lkIEluc3BlY3RvclRp
bWVsaW5lQWdlbnQ6OmxvY2FsVG9QYWdlUXVhZChjb25zdCBSZW5kZXJPYmplY3QmIHJlbmRlcmVy
LCBjb25zdCBMYXlvdXRSZWN0JiByZWN0LCBGbG9hdFF1YWQqIHF1YWQpCiB7CiAgICAgY29uc3Qg
RnJhbWVWaWV3JiBmcmFtZVZpZXcgPSByZW5kZXJlci52aWV3KCkuZnJhbWVWaWV3KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCmluZGV4IGQxMWI5MGIwMmZjZDk3YzI1MzUwZDY5M2Q3YTIzZGM1MTczM2QwMmQu
LmI0MzM5YTUxNzk3NGRlMjIyZmY0MmMwNjIxNjg5ZjM1NWYyOTdjZTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2Vu
dC5oCkBAIC0xNDgsOCArMTQ4LDYgQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnRGcm9tQ29uc29s
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogICAgIHZvaWQgc3RvcEZy
b21Db25zb2xlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJiB0aXRsZSk7CiAKLSAgICBp
bnQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9Ci0KIHByaXZhdGU6CiAgICAgdm9pZCBzdGFy
dFByb2dyYW1tYXRpY0NhcHR1cmUoKTsKICAgICB2b2lkIHN0b3BQcm9ncmFtbWF0aWNDYXB0dXJl
KCk7CkBAIC0yMDAsNyArMTk4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZENvbXBsZXRlQ3Vy
cmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUpOwogCiAgICAgdm9pZCBhZGRSZWNvcmRUb1Rp
bWVsaW5lKFJlZlB0cjxKU09OOjpPYmplY3Q+JiYsIFRpbWVsaW5lUmVjb3JkVHlwZSk7Ci0gICAg
dm9pZCBjbGVhclJlY29yZFN0YWNrKCk7CiAKICAgICB2b2lkIGxvY2FsVG9QYWdlUXVhZChjb25z
dCBSZW5kZXJPYmplY3QmLCBjb25zdCBMYXlvdXRSZWN0JiwgRmxvYXRRdWFkKik7CiAKQEAgLTIx
MSw3ICsyMDgsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBt
X3JlY29yZFN0YWNrOwogICAgIFZlY3RvcjxUaW1lbGluZVJlY29yZEVudHJ5PiBtX3BlbmRpbmdD
b25zb2xlUHJvZmlsZVJlY29yZHM7CiAKLSAgICBpbnQgbV9pZCB7IDEgfTsKICAgICBpbnQgbV9t
YXhDYWxsU3RhY2tEZXB0aCB7IDUgfTsKIAogICAgIGJvb2wgbV90cmFja2luZyB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCmluZGV4IGRkMWU5ZGJhMTk4YThkMjQ5OThjMzg3YWNh
MGRiM2MyM2VmM2FhZGUuLjhlNjI3MWNhMDZkYjNlZGYzOGNmMmYwYjA3ZGZmZTU1ZDkyZTFhOWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0zMTQsNyArMzE0LDcgQEAgdm9pZCBET01U
aW1lcjo6ZmlyZWQoKQogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRp
LXNob3QgdGltZXIgc2hvdWxkIGdldCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNh
dG9yLgogICAgIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKLSAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29va2llID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCAhcmVwZWF0SW50ZXJ2
YWwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKGNvbnRl
eHQsIG1fdGltZW91dElkLCAhcmVwZWF0SW50ZXJ2YWwoKSk7CiAKICAgICAvLyBTaW1wbGUgY2Fz
ZSBmb3Igbm9uLW9uZS1zaG90IHRpbWVycy4KICAgICBpZiAoaXNBY3RpdmUoKSkgewpAQCAtMzI1
LDkgKzMyNSw5IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKIAogICAgICAgICBtX2FjdGlvbi0+
ZXhlY3V0ZShjb250ZXh0KTsKIAotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpcmVUaW1lcihjb29raWUpOwotICAgICAgICB1cGRhdGVUaHJvdHRsaW5nU3RhdGVJZk5lY2Vz
c2FyeShmaXJlU3RhdGUpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZp
cmVUaW1lcihjb250ZXh0KTsKIAorICAgICAgICB1cGRhdGVUaHJvdHRsaW5nU3RhdGVJZk5lY2Vz
c2FyeShmaXJlU3RhdGUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDMsNyArMzQz
LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogI2VuZGlmCiAgICAgbV9hY3Rpb24tPmV4ZWN1
dGUoY29udGV4dCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1l
cihjb29raWUpOworICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNv
bnRleHQpOwogCiAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIHRocm90dGxlIG5lc3RlZCBzaW5n
bGUtc2hvdCB0aW1lcnMuCiAgICAgaWYgKG5lc3RlZFRpbWVycykgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01X
aW5kb3cuY3BwCmluZGV4IDZmZWVhYzU4OWU5MDA0OTk5MDY4NTcyMTg4MmUzMWNhMTVmNDcwNDMu
LmFiOTY4NTYxMzI0N2YyOTBiZjc4ODNlNWQ1ZmM3YWZmYWQ4ZGFhYWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5jcHAKQEAgLTIxNjgsMTEgKzIxNjgsMTQgQEAgdm9pZCBET01XaW5kb3c6OmRp
c3BhdGNoRXZlbnQoRXZlbnQmIGV2ZW50LCBFdmVudFRhcmdldCogdGFyZ2V0KQogICAgIGV2ZW50
LnNldEN1cnJlbnRUYXJnZXQodGhpcyk7CiAgICAgZXZlbnQuc2V0RXZlbnRQaGFzZShFdmVudDo6
QVRfVEFSR0VUKTsKICAgICBldmVudC5yZXNldEJlZm9yZURpc3BhdGNoKCk7Ci0gICAgYXV0byBj
b29raWUgPSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5k
b3coZnJhbWUoKSwgZXZlbnQsICp0aGlzKTsKKworICAgIGF1dG8qIHByb3RlY3RlZEZyYW1lID0g
ZnJhbWUoKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50
T25XaW5kb3cocHJvdGVjdGVkRnJhbWUsIGV2ZW50LCAqdGhpcyk7CiAgICAgLy8gRklYTUU6IFdl
IHNob3VsZCB1c2UgRXZlbnREaXNwYXRjaGVyIGV2ZXJ5d2hlcmUuCiAgICAgZmlyZUV2ZW50TGlz
dGVuZXJzKGV2ZW50LCBFdmVudEludm9rZVBoYXNlOjpDYXB0dXJpbmcpOwogICAgIGZpcmVFdmVu
dExpc3RlbmVycyhldmVudCwgRXZlbnRJbnZva2VQaGFzZTo6QnViYmxpbmcpOwotICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KGNvb2tpZSwgZXZl
bnQuZGVmYXVsdFByZXZlbnRlZCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZERpc3BhdGNoRXZlbnRPbldpbmRvdyhwcm90ZWN0ZWRGcmFtZSwgZXZlbnQuZGVmYXVsdFByZXZl
bnRlZCgpKTsKKwogICAgIGV2ZW50LnJlc2V0QWZ0ZXJEaXNwYXRjaCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlld0xheW91dENvbnRleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXdMYXlvdXRDb250ZXh0LmNwcAppbmRleCA2YWI0MGVj
OTA5NzZmN2YwMmMwNzFlNTY3YWQ0OTVjNzBlOTAzNzAyLi5jOWI5NDJlYmYwM2EzYTIzODQyNjkz
MzUyYmRiOWNhZjQ4MjAyZjEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
Vmlld0xheW91dENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
TGF5b3V0Q29udGV4dC5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCB2b2lkIEZyYW1lVmlld0xheW91
dENvbnRleHQ6OmxheW91dCgpCiAgICAgUmVmPEZyYW1lVmlldz4gcHJvdGVjdFZpZXcodmlldygp
KTsKICAgICBMYXlvdXRTY29wZSBsYXlvdXRTY29wZSgqdGhpcyk7CiAgICAgVHJhY2VTY29wZSB0
cmFjaW5nU2NvcGUoTGF5b3V0U3RhcnQsIExheW91dEVuZCk7Ci0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQ29va2llIGluc3BlY3RvckxheW91dFNjb3BlKEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbExheW91dCh2aWV3KCkuZnJhbWUoKSkpOworICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbExheW91dCh2aWV3KCkuZnJhbWUoKSk7CiAgICAgQW5pbWF0aW9uVXBkYXRl
QmxvY2sgYW5pbWF0aW9uVXBkYXRlQmxvY2soJnZpZXcoKS5mcmFtZSgpLmFuaW1hdGlvbigpKTsK
ICAgICBXZWFrUHRyPFJlbmRlckVsZW1lbnQ+IGxheW91dFJvb3Q7CiAgICAgCkBAIC0yMzIsNyAr
MjMyLDcgQEAgdm9pZCBGcmFtZVZpZXdMYXlvdXRDb250ZXh0OjpsYXlvdXQoKQogICAgICAgICB2
aWV3KCkuZGlkTGF5b3V0KGxheW91dFJvb3QpOwogICAgICAgICBydW5PclNjaGVkdWxlQXN5bmNo
cm9ub3VzVGFza3MoKTsKICAgICB9Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRM
YXlvdXQoaW5zcGVjdG9yTGF5b3V0U2NvcGUsICpsYXlvdXRSb290KTsKKyAgICBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZExheW91dCh2aWV3KCkuZnJhbWUoKSwgKmxheW91dFJvb3QpOwog
ICAgIERlYnVnUGFnZU92ZXJsYXlzOjpkaWRMYXlvdXQodmlldygpLmZyYW1lKCkpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ludGVyc2VjdGlvbk9ic2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCmluZGV4IDJiMjc5
OWM4MDAzYTdmMWI5NjNhYWVkNmRkOTk4YzFjYWM5NTU3NTQuLmY5ZmIyODdlNjc5ZWRkODQ2ZTc1
YjM3OTEyYzE1YTM4ZTQxMjMzNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50
ZXJzZWN0aW9uT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIuY3BwCkBAIC0yNjIsMTIgKzI2MiwxMSBAQCB2b2lkIEludGVyc2VjdGlvbk9i
c2VydmVyOjpub3RpZnkoKQogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQ29va2llIGNvb2tpZSA9IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEZpcmVPYnNlcnZlckNhbGxiYWNrKCpjb250ZXh0LCAiSW50ZXJzZWN0
aW9uT2JzZXJ2ZXIiX3MpOwotCiAgICAgYXV0byB0YWtlblJlY29yZHMgPSB0YWtlUmVjb3Jkcygp
OwotICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KFdURk1vdmUodGFrZW5SZWNvcmRzLnJlY29y
ZHMpLCAqdGhpcyk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVPYnNl
cnZlckNhbGxiYWNrKGNvb2tpZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RmlyZU9ic2VydmVyQ2FsbGJhY2soKmNvbnRleHQsICJJbnRlcnNlY3Rpb25PYnNlcnZlciJfcyk7
CisgICAgbV9jYWxsYmFjay0+aGFuZGxlRXZlbnQoV1RGTW92ZSh0YWtlblJlY29yZHMucmVjb3Jk
cyksICp0aGlzKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVPYnNlcnZl
ckNhbGxiYWNrKCpjb250ZXh0KTsKIH0KIAogYm9vbCBJbnRlcnNlY3Rpb25PYnNlcnZlcjo6aGFz
UGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGVyZm9ybWFuY2VPYnNlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
T2JzZXJ2ZXIuY3BwCmluZGV4IGM5ZTAyYzMwMGM2NmNlNmYzODQ3MDI2OGIyODVjYjgzM2ZlZTI4
N2MuLjkyNDM1MDQwMmJjMjYxYmQwYWU5ZTc0NmE3NTAzZjQwNGNhZjgzN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VPYnNlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU9ic2VydmVyLmNwcApAQCAtMTA4LDkgKzEwOCw5IEBA
IHZvaWQgUGVyZm9ybWFuY2VPYnNlcnZlcjo6ZGVsaXZlcigpCiAgICAgVmVjdG9yPFJlZlB0cjxQ
ZXJmb3JtYW5jZUVudHJ5Pj4gZW50cmllcyA9IFdURk1vdmUobV9lbnRyaWVzVG9EZWxpdmVyKTsK
ICAgICBhdXRvIGxpc3QgPSBQZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0OjpjcmVhdGUoV1RG
TW92ZShlbnRyaWVzKSk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Db29raWUgY29v
a2llID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZU9ic2VydmVyQ2FsbGJhY2so
KmNvbnRleHQsICJQZXJmb3JtYW5jZU9ic2VydmVyIl9zKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxGaXJlT2JzZXJ2ZXJDYWxsYmFjaygqY29udGV4dCwgIlBlcmZvcm1hbmNl
T2JzZXJ2ZXIiX3MpOwogICAgIG1fY2FsbGJhY2stPmhhbmRsZUV2ZW50KGxpc3QsICp0aGlzKTsK
LSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrKGNv
b2tpZSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlT2JzZXJ2ZXJDYWxs
YmFjaygqY29udGV4dCk7CiB9CiAKIFZlY3RvcjxTdHJpbmc+IFBlcmZvcm1hbmNlT2JzZXJ2ZXI6
OnN1cHBvcnRlZEVudHJ5VHlwZXMoKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>